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;
#ifndef QT_NO_DEBUG
#define VX_DEBUG_WEB
// #define VX_DEBUG_WEB
#endif
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);
p_menu->addAction(act);
if (selectedSize == 1 && p_node->isContainer()) {
act = createAction(Action::ExpandAll, p_menu);
p_menu->addAction(act);
}
p_menu->addSeparator();
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);
p_menu->addAction(act);
if (selectedSize == 1 && p_node->isContainer()) {
act = createAction(Action::ExpandAll, p_menu);
p_menu->addAction(act);
}
p_menu->addSeparator();
act = createAction(Action::NewNote, p_menu);
@ -1139,6 +1149,12 @@ QAction *NotebookNodeExplorer::createAction(Action p_act, QObject *p_parent)
connect(act, &QAction::triggered,
this, &NotebookNodeExplorer::openSelectedNodes);
break;
case Action::ExpandAll:
act = new QAction(tr("&Expand All\t*"), p_parent);
connect(act, &QAction::triggered,
this, &NotebookNodeExplorer::expandCurrentNodeAll);
break;
}
return act;
@ -1831,3 +1847,34 @@ bool NotebookNodeExplorer::checkInvalidNode(const Node *p_node) const
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,
ReloadIndex,
ImportToConfig,
Open
Open,
ExpandAll
};
void setupUI();
@ -257,6 +258,10 @@ namespace vnotex
// Return true if it is invalid.
bool checkInvalidNode(const Node *p_node) const;
void expandCurrentNodeAll();
void expandItemRecursively(QTreeWidgetItem *p_item);
static NotebookNodeExplorer::NodeData getItemNodeData(const QTreeWidgetItem *p_item);
static void setItemNodeData(QTreeWidgetItem *p_item, const NodeData &p_data);