diff --git a/src/core/coreconfig.h b/src/core/coreconfig.h index 83b4ad87..2b4e9088 100644 --- a/src/core/coreconfig.h +++ b/src/core/coreconfig.h @@ -71,6 +71,7 @@ namespace vnotex UnitedEntry, Copy, Paste, + Properties, MaxShortcut }; Q_ENUM(Shortcut) diff --git a/src/data/core/vnotex.json b/src/data/core/vnotex.json index 703a3174..6c6d7619 100644 --- a/src/data/core/vnotex.json +++ b/src/data/core/vnotex.json @@ -62,7 +62,8 @@ "OpenLastClosedFile" : "Ctrl+Shift+T", "UnitedEntry" : "Ctrl+G, G", "Copy" : "Ctrl+C", - "Paste" : "Ctrl+V" + "Paste" : "Ctrl+V", + "Properties" : "F2" }, "file_type_suffixes" : [ { diff --git a/src/widgets/notebooknodeexplorer.cpp b/src/widgets/notebooknodeexplorer.cpp index 3683e27b..f7ddb4f6 100644 --- a/src/widgets/notebooknodeexplorer.cpp +++ b/src/widgets/notebooknodeexplorer.cpp @@ -1088,23 +1088,7 @@ QAction *NotebookNodeExplorer::createAction(Action p_act, QObject *p_parent, boo p_parent); connect(act, &QAction::triggered, this, [this, p_master]() { - auto node = p_master ? getCurrentMasterNode() : getCurrentSlaveNode(); - if (checkInvalidNode(node)) { - return; - } - - int ret = QDialog::Rejected; - if (node->hasContent()) { - NotePropertiesDialog dialog(node, VNoteX::getInst().getMainWindow()); - ret = dialog.exec(); - } else { - FolderPropertiesDialog dialog(node, VNoteX::getInst().getMainWindow()); - ret = dialog.exec(); - } - - if (ret == QDialog::Accepted) { - setCurrentNode(node); - } + openCurrentNodeProperties(p_master); }); break; @@ -2207,6 +2191,17 @@ void NotebookNodeExplorer::setupShortcuts() } } + // Properties + { + auto shortcut = WidgetUtils::createShortcut(coreConfig.getShortcut(CoreConfig::Properties), this); + if (shortcut) { + connect(shortcut, &QShortcut::activated, + this, [this]() { + openCurrentNodeProperties(isActionFromMaster()); + }); + } + } + const auto &sessionConfig = ConfigMgr::getInst().getSessionConfig(); for (const auto &pro : sessionConfig.getExternalPrograms()) { auto shortcut = WidgetUtils::createShortcut(pro.m_shortcut, this); @@ -2251,6 +2246,29 @@ void NotebookNodeExplorer::openSelectedNodesWithProgram(const QString &p_name, b } } +void NotebookNodeExplorer::openCurrentNodeProperties(bool p_master) +{ + const int selectedSize = p_master ? m_masterExplorer->selectedItems().size() : m_slaveExplorer->selectedItems().size(); + if (selectedSize != 1) { + return; + } + auto node = p_master ? getCurrentMasterNode() : getCurrentSlaveNode(); + if (checkInvalidNode(node)) { + return; + } + int ret = QDialog::Rejected; + if (node->hasContent()) { + NotePropertiesDialog dialog(node, VNoteX::getInst().getMainWindow()); + ret = dialog.exec(); + } else { + FolderPropertiesDialog dialog(node, VNoteX::getInst().getMainWindow()); + ret = dialog.exec(); + } + if (ret == QDialog::Accepted) { + setCurrentNode(node); + } +} + void NotebookNodeExplorer::loadMasterItemChildren(QTreeWidgetItem *p_item) const { auto cnt = p_item->childCount(); diff --git a/src/widgets/notebooknodeexplorer.h b/src/widgets/notebooknodeexplorer.h index eda0a5d8..1e6a211d 100644 --- a/src/widgets/notebooknodeexplorer.h +++ b/src/widgets/notebooknodeexplorer.h @@ -301,6 +301,8 @@ namespace vnotex void openSelectedNodesWithProgram(const QString &p_name, bool p_master); + void openCurrentNodeProperties(bool p_master); + bool belongsToMasterExplorer(const Node *p_node) const; bool belongsToMasterExplorer(const ExternalNode *p_node) const;