diff --git a/src/utils/vutils.cpp b/src/utils/vutils.cpp index 10f806c6..6f64f336 100644 --- a/src/utils/vutils.cpp +++ b/src/utils/vutils.cpp @@ -1154,3 +1154,16 @@ QString VUtils::getDocFile(const QString &p_name) QDir dir(VNote::c_docFileFolder); return dir.filePath(getFileNameWithLocale(p_name)); } + +QString VUtils::getCaptainShortcutSequenceText(const QString &p_operation) +{ + QString capKey = g_config->getShortcutKeySequence("CaptainMode"); + QString sec = g_config->getCaptainShortcutKeySequence(p_operation); + + QKeySequence seq(capKey + "," + sec); + if (!seq.isEmpty()) { + return seq.toString(QKeySequence::NativeText); + } + + return QString(); +} diff --git a/src/utils/vutils.h b/src/utils/vutils.h index d1aa65c4..3832c747 100644 --- a/src/utils/vutils.h +++ b/src/utils/vutils.h @@ -283,6 +283,8 @@ public: // Return a doc file path. static QString getDocFile(const QString &p_name); + static QString getCaptainShortcutSequenceText(const QString &p_operation); + // Regular expression for image link. // ![image title]( http://github.com/tamlok/vnote.jpg "alt \" text" ) // Captured texts (need to be trimmed): diff --git a/src/vdirectorytree.cpp b/src/vdirectorytree.cpp index 1f75323c..aeb0777b 100644 --- a/src/vdirectorytree.cpp +++ b/src/vdirectorytree.cpp @@ -12,6 +12,7 @@ #include "dialog/vsortdialog.h" #include "utils/vimnavigationforwidget.h" #include "utils/viconutils.h" +#include "vfilelist.h" extern VMainWindow *g_mainWin; @@ -88,6 +89,19 @@ void VDirectoryTree::initShortcuts() void VDirectoryTree::initActions() { + m_newNoteAct = new QAction(VIconUtils::menuIcon(":/resources/icons/create_note_tb.svg"), + tr("New &Note"), this); + QString shortcutStr = VUtils::getShortcutText(g_config->getShortcutKeySequence("NewNote")); + if (!shortcutStr.isEmpty()) { + m_newNoteAct->setText(tr("New &Note\t%1").arg(shortcutStr)); + } + + m_newNoteAct->setToolTip(tr("Create a note in selected folder")); + connect(m_newNoteAct, &QAction::triggered, + this, [this]() { + g_mainWin->getFileList()->newFile(); + }); + newRootDirAct = new QAction(VIconUtils::menuIcon(":/resources/icons/create_rootdir.svg"), tr("New &Root Folder"), this); newRootDirAct->setToolTip(tr("Create a root folder in current notebook")); @@ -95,9 +109,9 @@ void VDirectoryTree::initActions() this, &VDirectoryTree::newRootDirectory); newSubDirAct = new QAction(VIconUtils::menuIcon(":/resources/icons/create_subdir.svg"), - tr("&New Subfolder"), this); + tr("New &Subfolder"), this); newSubDirAct->setToolTip(tr("Create a subfolder")); - QString shortcutStr = VUtils::getShortcutText(g_config->getShortcutKeySequence("NewSubfolder")); + shortcutStr = VUtils::getShortcutText(g_config->getShortcutKeySequence("NewSubfolder")); if (!shortcutStr.isEmpty()) { newSubDirAct->setText(tr("&New Subfolder\t%1").arg(shortcutStr)); } @@ -389,6 +403,8 @@ void VDirectoryTree::contextMenuRequested(QPoint pos) } } else { // Context menu on a QTreeWidgetItem + menu.addAction(m_newNoteAct); + if (item->parent()) { // Low-level item menu.addAction(newSubDirAct); diff --git a/src/vdirectorytree.h b/src/vdirectorytree.h index 399c8eba..c8c95e6c 100644 --- a/src/vdirectorytree.h +++ b/src/vdirectorytree.h @@ -161,9 +161,12 @@ private: int m_magicForClipboard; // Actions + QAction *m_newNoteAct; + QAction *newRootDirAct; - QAction *newSiblingDirAct; + QAction *newSubDirAct; + QAction *deleteDirAct; QAction *dirInfoAct; QAction *copyAct; diff --git a/src/vmainwindow.cpp b/src/vmainwindow.cpp index 158af2b3..53c2ac64 100644 --- a/src/vmainwindow.cpp +++ b/src/vmainwindow.cpp @@ -341,23 +341,31 @@ void VMainWindow::initViewToolBar(QSize p_iconSize) m_viewActGroup = new QActionGroup(this); QAction *onePanelViewAct = new QAction(VIconUtils::menuIcon(":/resources/icons/one_panel.svg"), - tr("&Single Panel"), + tr("Single Panel"), m_viewActGroup); + QString keyText = VUtils::getCaptainShortcutSequenceText("OnePanelView"); + if (!keyText.isEmpty()) { + onePanelViewAct->setText(tr("Single Panel\t%1").arg(keyText)); + } + onePanelViewAct->setStatusTip(tr("Display only the notes list panel")); - onePanelViewAct->setToolTip(tr("Single Panel")); onePanelViewAct->setCheckable(true); onePanelViewAct->setData((int)PanelViewState::SinglePanel); QAction *twoPanelViewAct = new QAction(VIconUtils::menuIcon(":/resources/icons/two_panels.svg"), - tr("&Two Panels"), + tr("Two Panels"), m_viewActGroup); + keyText = VUtils::getCaptainShortcutSequenceText("OnePanelView"); + if (!keyText.isEmpty()) { + twoPanelViewAct->setText(tr("Two Panels\t%1").arg(keyText)); + } + twoPanelViewAct->setStatusTip(tr("Display both the folders and notes list panel")); - twoPanelViewAct->setToolTip(tr("Two Panels")); twoPanelViewAct->setCheckable(true); twoPanelViewAct->setData((int)PanelViewState::TwoPanels); QAction *compactViewAct = new QAction(VIconUtils::menuIcon(":/resources/icons/compact_mode.svg"), - tr("&Compact Mode"), + tr("Compact Mode"), m_viewActGroup); compactViewAct->setStatusTip(tr("Integrate the folders and notes list panel in one column")); compactViewAct->setCheckable(true); @@ -396,6 +404,11 @@ void VMainWindow::initViewToolBar(QSize p_iconSize) expandViewAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/expand.svg"), tr("Expand"), this); + keyText = VUtils::getCaptainShortcutSequenceText("ExpandMode"); + if (!keyText.isEmpty()) { + expandViewAct->setText(tr("Expand\t%1").arg(keyText)); + } + expandViewAct->setStatusTip(tr("Expand the edit area")); expandViewAct->setCheckable(true); expandViewAct->setMenu(panelMenu); @@ -577,8 +590,12 @@ void VMainWindow::initNoteToolBar(QSize p_iconSize) this); flashPageAct->setStatusTip(tr("Open the Flash Page to edit")); QString keySeq = g_config->getShortcutKeySequence("FlashPage"); - qDebug() << "set FlashPage shortcut to" << keySeq; - flashPageAct->setShortcut(QKeySequence(keySeq)); + QKeySequence seq(keySeq); + if (!seq.isEmpty()) { + flashPageAct->setText(tr("Flash Page\t%1").arg(VUtils::getShortcutText(keySeq))); + flashPageAct->setShortcut(seq); + } + connect(flashPageAct, &QAction::triggered, this, &VMainWindow::openFlashPage); @@ -598,48 +615,61 @@ void VMainWindow::initFileToolBar(QSize p_iconSize) m_avatarBtn = new QPushButton("VNote", this); m_avatarBtn->setProperty("AvatarBtn", true); m_avatarBtn->setFocusPolicy(Qt::NoFocus); + m_avatarBtn->setToolTip(tr("Log In (Not Implemented Yet)")); newRootDirAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/create_rootdir_tb.svg"), - tr("New &Root Folder"), + tr("New Root Folder"), this); newRootDirAct->setStatusTip(tr("Create a root folder in current notebook")); connect(newRootDirAct, &QAction::triggered, directoryTree, &VDirectoryTree::newRootDirectory); newNoteAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/create_note_tb.svg"), - tr("New &Note"), this); + tr("New Note"), this); newNoteAct->setStatusTip(tr("Create a note in current folder")); QString keySeq = g_config->getShortcutKeySequence("NewNote"); - qDebug() << "set NewNote shortcut to" << keySeq; - newNoteAct->setShortcut(QKeySequence(keySeq)); + QKeySequence seq(keySeq); + if (!seq.isEmpty()) { + newNoteAct->setText(tr("New Note\t%1").arg(VUtils::getShortcutText(keySeq))); + newNoteAct->setShortcut(seq); + } + connect(newNoteAct, &QAction::triggered, m_fileList, &VFileList::newFile); noteInfoAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/note_info_tb.svg"), - tr("Note &Info"), this); + tr("Note Info"), this); noteInfoAct->setStatusTip(tr("View and edit current note's information")); connect(noteInfoAct, &QAction::triggered, this, &VMainWindow::curEditFileInfo); deleteNoteAct = new QAction(VIconUtils::toolButtonDangerIcon(":/resources/icons/delete_note_tb.svg"), - tr("&Delete Note"), this); + tr("Delete Note"), this); deleteNoteAct->setStatusTip(tr("Delete current note")); connect(deleteNoteAct, &QAction::triggered, this, &VMainWindow::deleteCurNote); editNoteAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/edit_note.svg"), - tr("&Edit"), this); + tr("Edit"), this); editNoteAct->setStatusTip(tr("Edit current note")); keySeq = g_config->getShortcutKeySequence("EditNote"); - qDebug() << "set EditNote shortcut to" << keySeq; - editNoteAct->setShortcut(QKeySequence(keySeq)); + seq = QKeySequence(keySeq); + if (!seq.isEmpty()) { + editNoteAct->setText(tr("Edit\t%1").arg(VUtils::getShortcutText(keySeq))); + editNoteAct->setShortcut(seq); + } + connect(editNoteAct, &QAction::triggered, editArea, &VEditArea::editFile); discardExitAct = new QAction(VIconUtils::menuIcon(":/resources/icons/discard_exit.svg"), tr("Discard Changes And Read"), this); + QString keyText = VUtils::getCaptainShortcutSequenceText("DiscardAndRead"); + if (!keyText.isEmpty()) { + discardExitAct->setText(tr("Discard Changes And Read\t%1").arg(keyText)); + } + discardExitAct->setStatusTip(tr("Discard changes and exit edit mode")); - discardExitAct->setToolTip(tr("Discard Changes And Read")); connect(discardExitAct, &QAction::triggered, editArea, &VEditArea::readFile); @@ -652,8 +682,12 @@ void VMainWindow::initFileToolBar(QSize p_iconSize) saveExitAct->setStatusTip(tr("Save changes and exit edit mode")); saveExitAct->setMenu(exitEditMenu); keySeq = g_config->getShortcutKeySequence("SaveAndRead"); - qDebug() << "set SaveAndRead shortcut to" << keySeq; - saveExitAct->setShortcut(QKeySequence(keySeq)); + seq = QKeySequence(keySeq); + if (!seq.isEmpty()) { + saveExitAct->setText(tr("Save Changes And Read\t%1").arg(VUtils::getShortcutText(keySeq))); + saveExitAct->setShortcut(seq); + } + connect(saveExitAct, &QAction::triggered, editArea, &VEditArea::saveAndReadFile); @@ -661,8 +695,12 @@ void VMainWindow::initFileToolBar(QSize p_iconSize) tr("Save"), this); saveNoteAct->setStatusTip(tr("Save changes to current note")); keySeq = g_config->getShortcutKeySequence("SaveNote"); - qDebug() << "set SaveNote shortcut to" << keySeq; - saveNoteAct->setShortcut(QKeySequence(keySeq)); + seq = QKeySequence(keySeq); + if (!seq.isEmpty()) { + saveNoteAct->setText(tr("Save\t%1").arg(VUtils::getShortcutText(keySeq))); + saveNoteAct->setShortcut(seq); + } + connect(saveNoteAct, &QAction::triggered, editArea, &VEditArea::saveFile); @@ -678,8 +716,8 @@ void VMainWindow::initFileToolBar(QSize p_iconSize) fileToolBar->addWidget(m_avatarBtn); fileToolBar->addAction(newRootDirAct); fileToolBar->addAction(newNoteAct); - fileToolBar->addAction(noteInfoAct); fileToolBar->addAction(deleteNoteAct); + fileToolBar->addAction(noteInfoAct); fileToolBar->addAction(editNoteAct); fileToolBar->addAction(saveExitAct); fileToolBar->addAction(saveNoteAct);