Просмотр исходного кода

add ExpandAll to node explorer

Le Tan 4 лет назад
Родитель
Сommit
c442892b59
3 измененных файлов с 54 добавлено и 2 удалено
  1. 1 1
      src/core/configmgr.cpp
  2. 47 0
      src/widgets/notebooknodeexplorer.cpp
  3. 6 1
      src/widgets/notebooknodeexplorer.h

+ 1 - 1
src/core/configmgr.cpp

@@ -24,7 +24,7 @@
 using namespace vnotex;
 using namespace vnotex;
 
 
 #ifndef QT_NO_DEBUG
 #ifndef QT_NO_DEBUG
-#define VX_DEBUG_WEB
+// #define VX_DEBUG_WEB
 #endif
 #endif
 
 
 const QString ConfigMgr::c_orgName = "VNote";
 const QString ConfigMgr::c_orgName = "VNote";

+ 47 - 0
src/widgets/notebooknodeexplorer.cpp

@@ -793,6 +793,11 @@ void NotebookNodeExplorer::createContextMenuOnNode(QMenu *p_menu, const Node *p_
         act = createAction(Action::Open, p_menu);
         act = createAction(Action::Open, p_menu);
         p_menu->addAction(act);
         p_menu->addAction(act);
 
 
+        if (selectedSize == 1 && p_node->isContainer()) {
+            act = createAction(Action::ExpandAll, p_menu);
+            p_menu->addAction(act);
+        }
+
         p_menu->addSeparator();
         p_menu->addSeparator();
 
 
         act = createAction(Action::Cut, p_menu);
         act = createAction(Action::Cut, p_menu);
@@ -822,6 +827,11 @@ void NotebookNodeExplorer::createContextMenuOnNode(QMenu *p_menu, const Node *p_
         act = createAction(Action::Open, p_menu);
         act = createAction(Action::Open, p_menu);
         p_menu->addAction(act);
         p_menu->addAction(act);
 
 
+        if (selectedSize == 1 && p_node->isContainer()) {
+            act = createAction(Action::ExpandAll, p_menu);
+            p_menu->addAction(act);
+        }
+
         p_menu->addSeparator();
         p_menu->addSeparator();
 
 
         act = createAction(Action::NewNote, p_menu);
         act = createAction(Action::NewNote, p_menu);
@@ -1139,6 +1149,12 @@ QAction *NotebookNodeExplorer::createAction(Action p_act, QObject *p_parent)
         connect(act, &QAction::triggered,
         connect(act, &QAction::triggered,
                 this, &NotebookNodeExplorer::openSelectedNodes);
                 this, &NotebookNodeExplorer::openSelectedNodes);
         break;
         break;
+
+    case Action::ExpandAll:
+        act = new QAction(tr("&Expand All\t*"), p_parent);
+        connect(act, &QAction::triggered,
+                this, &NotebookNodeExplorer::expandCurrentNodeAll);
+        break;
     }
     }
 
 
     return act;
     return act;
@@ -1831,3 +1847,34 @@ bool NotebookNodeExplorer::checkInvalidNode(const Node *p_node) const
 
 
     return false;
     return false;
 }
 }
+
+void NotebookNodeExplorer::expandCurrentNodeAll()
+{
+    auto item = m_masterExplorer->currentItem();
+    if (!item || item->childCount() == 0) {
+        return;
+    }
+    auto data = getItemNodeData(item);
+    if (!data.isNode()) {
+        return;
+    }
+
+    expandItemRecursively(item);
+}
+
+void NotebookNodeExplorer::expandItemRecursively(QTreeWidgetItem *p_item)
+{
+    if (!p_item) {
+        return;
+    }
+
+    p_item->setExpanded(true);
+    const int cnt = p_item->childCount();
+    if (cnt == 0) {
+        return;
+    }
+
+    for (int i = 0; i < cnt; ++i) {
+        expandItemRecursively(p_item->child(i));
+    }
+}

+ 6 - 1
src/widgets/notebooknodeexplorer.h

@@ -148,7 +148,8 @@ namespace vnotex
             Reload,
             Reload,
             ReloadIndex,
             ReloadIndex,
             ImportToConfig,
             ImportToConfig,
-            Open
+            Open,
+            ExpandAll
         };
         };
 
 
         void setupUI();
         void setupUI();
@@ -257,6 +258,10 @@ namespace vnotex
         // Return true if it is invalid.
         // Return true if it is invalid.
         bool checkInvalidNode(const Node *p_node) const;
         bool checkInvalidNode(const Node *p_node) const;
 
 
+        void expandCurrentNodeAll();
+
+        void expandItemRecursively(QTreeWidgetItem *p_item);
+
         static NotebookNodeExplorer::NodeData getItemNodeData(const QTreeWidgetItem *p_item);
         static NotebookNodeExplorer::NodeData getItemNodeData(const QTreeWidgetItem *p_item);
 
 
         static void setItemNodeData(QTreeWidgetItem *p_item, const NodeData &p_data);
         static void setItemNodeData(QTreeWidgetItem *p_item, const NodeData &p_data);