diff options
Diffstat (limited to 'Swift/QtUI/Roster')
-rw-r--r-- | Swift/QtUI/Roster/QtTreeWidget.cpp | 16 | ||||
-rw-r--r-- | Swift/QtUI/Roster/QtTreeWidget.h | 7 |
2 files changed, 22 insertions, 1 deletions
diff --git a/Swift/QtUI/Roster/QtTreeWidget.cpp b/Swift/QtUI/Roster/QtTreeWidget.cpp index 7caa150..be11a3e 100644 --- a/Swift/QtUI/Roster/QtTreeWidget.cpp +++ b/Swift/QtUI/Roster/QtTreeWidget.cpp @@ -4,6 +4,7 @@ #include "Swiften/Roster/OpenChatRosterAction.h" #include <qdebug.h> +#include <QMenu> namespace Swift { @@ -15,6 +16,7 @@ QtTreeWidget::QtTreeWidget(QWidget* parent) : QTreeView(parent) { delegate_ = new RosterDelegate(); setItemDelegate(delegate_); setHeaderHidden(true); + contextMenu_ = NULL; #ifdef SWIFT_PLATFORM_MACOSX setAlternatingRowColors(true); #endif @@ -33,6 +35,10 @@ QtTreeWidget::~QtTreeWidget() { delete delegate_; } +void QtTreeWidget::setContextMenu(QtContextMenu* contextMenu) { + contextMenu_ = contextMenu; +} + QtTreeWidgetItem* QtTreeWidget::getRoot() { return treeRoot_; } @@ -44,6 +50,16 @@ void QtTreeWidget::handleItemActivated(const QModelIndex& index) { } } +void QtTreeWidget::contextMenuEvent(QContextMenuEvent* event) { + if (!contextMenu_) { + return; + } + QtTreeWidgetItem* qtItem = static_cast<QtTreeWidgetItem*>(selectedIndexes()[0].internalPointer()); + if (qtItem) { + contextMenu_->show(qtItem); + } +} + void QtTreeWidget::handleExpanded(const QModelIndex& index) { QtTreeWidgetItem* qtItem = static_cast<QtTreeWidgetItem*>(index.internalPointer()); if (qtItem) { diff --git a/Swift/QtUI/Roster/QtTreeWidget.h b/Swift/QtUI/Roster/QtTreeWidget.h index 13b6d8e..15eb22f 100644 --- a/Swift/QtUI/Roster/QtTreeWidget.h +++ b/Swift/QtUI/Roster/QtTreeWidget.h @@ -10,6 +10,7 @@ #include "Swift/QtUI/Roster/QtTreeWidget.h" #include "Swift/QtUI/Roster/RosterModel.h" #include "Swift/QtUI/Roster/RosterDelegate.h" +#include "Swift/QtUI/ContextMenus/QtContextMenu.h" namespace Swift { @@ -20,18 +21,22 @@ class QtTreeWidget : public QTreeView, public TreeWidget { ~QtTreeWidget(); void show(); QtTreeWidgetItem* getRoot(); + void setContextMenu(QtContextMenu* contextMenu); private slots: void handleItemActivated(const QModelIndex&); void handleModelItemExpanded(const QModelIndex&, bool expanded); void handleExpanded(const QModelIndex&); void handleCollapsed(const QModelIndex&); void handleDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight); + protected: + void contextMenuEvent(QContextMenuEvent* event); + private: void drawBranches(QPainter*, const QRect&, const QModelIndex&) const; RosterModel* model_; RosterDelegate* delegate_; QtTreeWidgetItem* treeRoot_; - + QtContextMenu* contextMenu_; }; } |