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_;  };  }  | 
 Swift