浏览代码

add notebooknodeexplorer shortcut properties (#2094)

* impl properties

* repeat logic merge to function

* code format

* properties only 1 node

* change function name
chendapao 3 年之前
父节点
当前提交
09789590a2
共有 4 个文件被更改,包括 40 次插入18 次删除
  1. 1 0
      src/core/coreconfig.h
  2. 2 1
      src/data/core/vnotex.json
  3. 35 17
      src/widgets/notebooknodeexplorer.cpp
  4. 2 0
      src/widgets/notebooknodeexplorer.h

+ 1 - 0
src/core/coreconfig.h

@@ -71,6 +71,7 @@ namespace vnotex
             UnitedEntry,
             Copy,
             Paste,
+            Properties,
             MaxShortcut
         };
         Q_ENUM(Shortcut)

+ 2 - 1
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" : [
             {

+ 35 - 17
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();

+ 2 - 0
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;