summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@nokia.com>2010-12-20 09:15:49 +0100
committerKai Koehne <kai.koehne@nokia.com>2010-12-20 09:19:56 +0100
commit32f69b9b7790a71f182e4676337f98b0c1f181b0 (patch)
tree1f4d9ac4437bbfbf2b6cdadaea28a9be44bcf7b4
parentbefd304ca14385f459e746dc6cf8125884d358c1 (diff)
downloadqt-creator-32f69b9b7790a71f182e4676337f98b0c1f181b0.tar.gz
Outline: Add context menu for collapsing/expanding tree
Task-number: QTCREATORBUG-2976
-rw-r--r--src/plugins/cppeditor/cppoutline.cpp18
-rw-r--r--src/plugins/cppeditor/cppoutline.h2
-rw-r--r--src/plugins/qmljseditor/qmljsoutlinetreeview.cpp27
-rw-r--r--src/plugins/qmljseditor/qmljsoutlinetreeview.h5
4 files changed, 51 insertions, 1 deletions
diff --git a/src/plugins/cppeditor/cppoutline.cpp b/src/plugins/cppeditor/cppoutline.cpp
index 27b47f098b..e73f75f78d 100644
--- a/src/plugins/cppeditor/cppoutline.cpp
+++ b/src/plugins/cppeditor/cppoutline.cpp
@@ -8,8 +8,9 @@
#include <cplusplus/OverviewModel.h>
#include <QtCore/QDebug>
-#include <QtGui/QVBoxLayout>
#include <QtCore/QTimer>
+#include <QtGui/QVBoxLayout>
+#include <QtGui/QMenu>
using namespace CppEditor::Internal;
@@ -25,6 +26,21 @@ CppOutlineTreeView::CppOutlineTreeView(QWidget *parent) :
setExpandsOnDoubleClick(false);
}
+void CppOutlineTreeView::contextMenuEvent(QContextMenuEvent *event)
+{
+ if (!event)
+ return;
+
+ QMenu contextMenu;
+
+ contextMenu.addAction(tr("Expand All"), this, SLOT(expandAll()));
+ contextMenu.addAction(tr("Collapse All"), this, SLOT(collapseAll()));
+
+ contextMenu.exec(event->globalPos());
+
+ event->accept();
+}
+
CppOutlineFilterModel::CppOutlineFilterModel(CPlusPlus::OverviewModel *sourceModel, QObject *parent) :
QSortFilterProxyModel(parent),
m_sourceModel(sourceModel)
diff --git a/src/plugins/cppeditor/cppoutline.h b/src/plugins/cppeditor/cppoutline.h
index a9f2e65e0f..c7fe8680ca 100644
--- a/src/plugins/cppeditor/cppoutline.h
+++ b/src/plugins/cppeditor/cppoutline.h
@@ -17,6 +17,8 @@ class CppOutlineTreeView : public Utils::NavigationTreeView
Q_OBJECT
public:
CppOutlineTreeView(QWidget *parent);
+
+ void contextMenuEvent(QContextMenuEvent *event);
};
class CppOutlineFilterModel : public QSortFilterProxyModel
diff --git a/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp b/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp
index e0828ab840..b4da65cce6 100644
--- a/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp
+++ b/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp
@@ -2,6 +2,7 @@
#include "qmloutlinemodel.h"
#include <utils/annotateditemdelegate.h>
+#include <QtGui/QMenu>
namespace QmlJSEditor {
namespace Internal {
@@ -26,5 +27,31 @@ QmlJSOutlineTreeView::QmlJSOutlineTreeView(QWidget *parent) :
setItemDelegateForColumn(0, itemDelegate);
}
+void QmlJSOutlineTreeView::contextMenuEvent(QContextMenuEvent *event)
+{
+ if (!event)
+ return;
+
+ QMenu contextMenu;
+
+ contextMenu.addAction(tr("Expand All"), this, SLOT(expandAll()));
+ contextMenu.addAction(tr("Collapse All"), this, SLOT(collapseAllExceptRoot()));
+
+ contextMenu.exec(event->globalPos());
+
+ event->accept();
+}
+
+void QmlJSOutlineTreeView::collapseAllExceptRoot()
+{
+ if (!model())
+ return;
+ const QModelIndex rootElementIndex = model()->index(0, 0, rootIndex());
+ int rowCount = model()->rowCount(rootElementIndex);
+ for (int i = 0; i < rowCount; ++i) {
+ collapse(model()->index(i, 0, rootElementIndex));
+ }
+}
+
} // namespace Internal
} // namespace QmlJSEditor
diff --git a/src/plugins/qmljseditor/qmljsoutlinetreeview.h b/src/plugins/qmljseditor/qmljsoutlinetreeview.h
index a16afad081..8e337de321 100644
--- a/src/plugins/qmljseditor/qmljsoutlinetreeview.h
+++ b/src/plugins/qmljseditor/qmljsoutlinetreeview.h
@@ -11,6 +11,11 @@ class QmlJSOutlineTreeView : public Utils::NavigationTreeView
Q_OBJECT
public:
explicit QmlJSOutlineTreeView(QWidget *parent = 0);
+
+ void contextMenuEvent(QContextMenuEvent *event);
+
+private slots:
+ void collapseAllExceptRoot();
};
} // namespace Internal