add ExpandAll to node explorer

This commit is contained in:
Le Tan 2021-03-18 20:26:26 +08:00
parent 9c9983411f
commit c442892b59
3 changed files with 54 additions and 2 deletions

View File

@ -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";

View File

@ -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));
}
}

View File

@ -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);