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: