[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

kdenonbeta/kdedebian/kapture/libkapture



CVS commit by mornfall: 

Make it possible to (un)install packages using a context menu in
ListTreeWidget. TODO: Generalize, make the menu customizable (by client
code). This may or may not be enough for what clee wants. At least very
first version.


  M +29 -0     listtreewidget.cpp   1.28
  M +5 -0      listtreewidget.h   1.18


--- kdenonbeta/kdedebian/kapture/libkapture/listtreewidget.cpp  #1.27:1.28
@@ -1,4 +1,6 @@
 // -*- Mode: C++; c-basic-offset: 4; -*-
 // includes {{{
+#include <qpopupmenu.h>
+
 #include <libcapture/treefactory.h>
 #include <libcapture/pkgcache.h>
@@ -154,4 +156,7 @@ ListTreeWidget::ListTreeWidget (QWidget 
     connect (this, SIGNAL (collapsed (QListViewItem *)),
             SLOT (nodeClosed (QListViewItem *)));
+    connect (this, SIGNAL (contextMenuRequested (QListViewItem *, const QPoint
+                    &, int)), this, SLOT (contextMenu (QListViewItem *, const
+                        QPoint &, int)));
     m_tip = new ListTreeWidgetTooltip (viewport (), this);
 }
@@ -260,4 +265,28 @@ void ListTreeWidget::forwardSelectionCha
 }
                                                                     /* }}} */
+void ListTreeWidget::contextMenu (QListViewItem *it, const QPoint &p, int c)
+{
+    std::cerr << "ListTreeWidget::contextMenu (p);" <<  std::endl;
+    m_itemWithMenu = dynamic_cast <KListViewItemCustom *> (it) -> m_treeNode;
+    QPopupMenu *m = new QPopupMenu (this);
+    m -> insertItem ("Install", this, SLOT (contextInstall ()));
+    m -> insertItem ("Uninstall", this, SLOT (contextUninstall ()));
+    m -> exec (p);
+    delete m;
+}
+
+void ListTreeWidget::contextInstall (void)
+{
+    PkgCElemPtr p = pkgCElem (**m_itemWithMenu);
+    if (p)
+        PkgManager::install (*p);
+}
+
+void ListTreeWidget::contextUninstall (void)
+{
+    PkgCElemPtr p = pkgCElem (**m_itemWithMenu);
+    if (p)
+        PkgManager::uninstall (*p);
+}
 
 void ListTreeWidgetTooltip::maybeTip (const QPoint &p)

--- kdenonbeta/kdedebian/kapture/libkapture/listtreewidget.h  #1.17:1.18
@@ -29,4 +29,5 @@ namespace kapture {
     class KListViewItemCustom;
     class ListTreeWidgetTooltip;
+    class ListTreeWidgetItem;
 
     // class ListTreeWidget                                            {{{
@@ -48,7 +49,11 @@ namespace kapture {
             void nodeOpened (QListViewItem *);
             void nodeClosed (QListViewItem *);
+            void contextMenu (QListViewItem *, const QPoint &, int);
+            void contextInstall ();
+            void contextUninstall ();
         protected:
             std::set <std::string> m_open;
             ListTreeWidgetTooltip *m_tip;
+            ListTreeWidgetItem *m_itemWithMenu;
     };
                                                                     /* }}} */




Reply to: