Add reset view action to flame graph
authorMilian Wolff <milian.wolff@kdab.com>
Thu, 29 Jun 2017 11:35:26 +0000 (13:35 +0200)
committerMilian Wolff <milian.wolff@kdab.com>
Thu, 29 Jun 2017 11:35:26 +0000 (13:35 +0200)
src/analyze/gui/flamegraph.cpp
src/analyze/gui/flamegraph.h

index aee21aa..40519c6 100644 (file)
@@ -536,6 +536,12 @@ FlameGraph::FlameGraph(QWidget* parent, Qt::WindowFlags flags)
     addAction(m_backAction);
     m_forwardAction = KStandardAction::forward(this, SLOT(navigateForward()), this);
     addAction(m_forwardAction);
+    m_resetAction = new QAction(QIcon::fromTheme(QStringLiteral("go-first")), tr("Reset View"), this);
+    m_resetAction->setShortcut(Qt::Key_Escape);
+    connect(m_resetAction, &QAction::triggered, this, [this]() {
+        selectItem(0);
+    });
+    addAction(m_resetAction);
     updateNavigationActions();
     setContextMenuPolicy(Qt::ActionsContextMenu);
 }
@@ -679,6 +685,13 @@ void FlameGraph::setData(FrameGraphicsItem* rootItem)
     }
 }
 
+void FlameGraph::selectItem(int item)
+{
+    m_selectedItem = item;
+    updateNavigationActions();
+    selectItem(m_selectionHistory.at(m_selectedItem));
+}
+
 void FlameGraph::selectItem(FrameGraphicsItem* item)
 {
     if (!item) {
@@ -747,23 +760,20 @@ void FlameGraph::setSearchValue(const QString& value)
 void FlameGraph::navigateBack()
 {
     if (m_selectedItem > 0) {
-        --m_selectedItem;
+        selectItem(m_selectedItem - 1);
     }
-    updateNavigationActions();
-    selectItem(m_selectionHistory.at(m_selectedItem));
 }
 
 void FlameGraph::navigateForward()
 {
     if ((m_selectedItem + 1) < m_selectionHistory.size()) {
-        ++m_selectedItem;
+        selectItem(m_selectedItem + 1);
     }
-    updateNavigationActions();
-    selectItem(m_selectionHistory.at(m_selectedItem));
 }
 
 void FlameGraph::updateNavigationActions()
 {
     m_backAction->setEnabled(m_selectedItem > 0);
     m_forwardAction->setEnabled(m_selectedItem + 1 < m_selectionHistory.size());
+    m_resetAction->setEnabled(m_selectedItem > 0);
 }
index 45920f6..973f32f 100644 (file)
@@ -57,6 +57,7 @@ private:
     void setTooltipItem(const FrameGraphicsItem* item);
     void updateTooltip();
     void showData();
+    void selectItem(int item);
     void selectItem(FrameGraphicsItem* item);
     void updateNavigationActions();
 
@@ -71,6 +72,7 @@ private:
     QLineEdit* m_searchInput = nullptr;
     QAction* m_forwardAction = nullptr;
     QAction* m_backAction = nullptr;
+    QAction* m_resetAction = nullptr;
     const FrameGraphicsItem* m_tooltipItem = nullptr;
     FrameGraphicsItem* m_rootItem = nullptr;
     QVector<FrameGraphicsItem*> m_selectionHistory;