diff --git a/src/core/coreconfig.cpp b/src/core/coreconfig.cpp index 37d24802..cadaa8dd 100644 --- a/src/core/coreconfig.cpp +++ b/src/core/coreconfig.cpp @@ -66,7 +66,7 @@ void CoreConfig::init(const QJsonObject &p_app, m_docksTabBarIconSize = READINT(QStringLiteral("docks_tabbar_icon_size")); if (m_docksTabBarIconSize <= 0) { - m_docksTabBarIconSize = 20; + m_docksTabBarIconSize = 18; } loadNoteManagement(appObj, userObj); diff --git a/src/core/mainconfig.cpp b/src/core/mainconfig.cpp index a9e7254c..4b494961 100644 --- a/src/core/mainconfig.cpp +++ b/src/core/mainconfig.cpp @@ -119,4 +119,5 @@ QString MainConfig::getVersion(const QJsonObject &p_jobj) void MainConfig::doVersionSpecificOverride() { // In a new version, we may want to change one value by force. + m_coreConfig->m_docksTabBarIconSize = 18; } diff --git a/src/core/theme.cpp b/src/core/theme.cpp index e610de3d..9c4609c6 100644 --- a/src/core/theme.cpp +++ b/src/core/theme.cpp @@ -332,7 +332,7 @@ QString Theme::paletteColor(const QString &p_name) const return val; } qWarning() << "undefined or invalid palette color" << p_name; - return QString("#ff0000"); + return QString(); } QJsonObject Theme::readJsonFile(const QString &p_filePath) diff --git a/src/data/core/core.qrc b/src/data/core/core.qrc index 704babe5..c64e410f 100644 --- a/src/data/core/core.qrc +++ b/src/data/core/core.qrc @@ -28,7 +28,6 @@ icons/view.svg icons/inplace_preview_editor.svg icons/image_host_editor.svg - icons/settings_menu.svg icons/help_menu.svg icons/import_menu.svg icons/export_menu.svg diff --git a/src/data/core/icons/settings_menu.svg b/src/data/core/icons/settings_menu.svg deleted file mode 100644 index 64aeeb44..00000000 --- a/src/data/core/icons/settings_menu.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/data/core/vnotex.json b/src/data/core/vnotex.json index b8ba726c..1f11b014 100644 --- a/src/data/core/vnotex.json +++ b/src/data/core/vnotex.json @@ -91,7 +91,7 @@ ], "shortcut_leader_key" : "Ctrl+G", "toolbar_icon_size" : 18, - "docks_tabbar_icon_size" : 24, + "docks_tabbar_icon_size" : 18, "note_management" : { "external_node" : { "//comment" : "Wildcard patterns of files and folders to exclude as external files", @@ -494,7 +494,7 @@ "//comment" : "Docks to ignore when expanding content area of main window", "main_window_keep_docks_expanding_content_area": ["OutlineDock.vnotex"], "snippet_panel_builtin_snippets_visible" : true, - "tag_explorer_two_columns_enabled" : true, + "tag_explorer_two_columns_enabled" : false, "new_note_default_file_type" : 0, "united_entry_expand_all" : false } diff --git a/src/data/extra/themes/moonlight/interface.qss b/src/data/extra/themes/moonlight/interface.qss index 0b0c466d..432299a1 100644 --- a/src/data/extra/themes/moonlight/interface.qss +++ b/src/data/extra/themes/moonlight/interface.qss @@ -541,7 +541,7 @@ QMainWindow > QTabBar::tab:right { border-right: 3px solid transparent; border-bottom: none; margin: 0px; - padding: 6px 2px -10px 2px; + padding: 8px 8px -8px 8px; } /* Tabified QDockWidget */ @@ -549,7 +549,7 @@ QMainWindow > QTabBar::tab:left { border-left: 3px solid transparent; border-bottom: none; margin: 0px; - padding: -10px 2px 6px 2px; + padding: -8px 8px 8px 8px; } QTabBar::tab:hover { diff --git a/src/data/extra/themes/moonlight/palette.json b/src/data/extra/themes/moonlight/palette.json index 8e371d2e..c9433aae 100644 --- a/src/data/extra/themes/moonlight/palette.json +++ b/src/data/extra/themes/moonlight/palette.json @@ -1,6 +1,6 @@ { "metadata" : { - "revision" : 0, + "revision" : 1, "//comment" : "If there is a file named 'editor-highlight.theme' under theme folder, this value will be ignored.", "//comment" : "Otherwise, this value specify the theme name to use for syntax highlighting.", "editor-highlight-theme" : "Breeze Dark", diff --git a/src/data/extra/themes/pure/interface.qss b/src/data/extra/themes/pure/interface.qss index 0b0c466d..2eac64ea 100644 --- a/src/data/extra/themes/pure/interface.qss +++ b/src/data/extra/themes/pure/interface.qss @@ -77,6 +77,25 @@ vnotex--TitleBar QLabel[TitleBarTitle="true"] { } /* QDockWidget */ +QDockWidget[MainWindowSideBar="true"] QWidget { + background-color: @widgets#mainwindow#side_bar#widget#bg; +} + +QDockWidget[MainWindowSideBar="true"] QToolButton:checked { + color: @widgets#qtoolbutton#checked#fg; + background-color: @widgets#qtoolbutton#checked#bg; +} + +QDockWidget[MainWindowSideBar="true"] QToolButton:hover { + color: @widgets#qtoolbutton#hover#fg; + background-color: @widgets#qtoolbutton#hover#bg; +} + +QDockWidget[MainWindowSideBar="true"] QToolButton:pressed { + color: @widgets#qtoolbutton#pressed#fg; + background-color: @widgets#qtoolbutton#pressed#bg; +} + QDockWidget { color: @widgets#qdockwidget#fg; background-color: @widgets#qdockwidget#bg; @@ -504,6 +523,41 @@ QTabWidget::tab-bar { } /* QTabBar */ +QTabBar[MainWindowSideBar="true"] { + background-color: @widgets#mainwindow#side_bar#bg; +} + +QTabBar[MainWindowSideBar="true"]::tab { + color: @widgets#mainwindow#side_bar#fg; + background-color: @widgets#mainwindow#side_bar#bg; + border: none; +} + +QMainWindow > QTabBar::tab:right { + border-right: 3px solid transparent; + border-bottom: none; + margin: 0px; + padding: 8px 8px -8px 8px; +} + +QMainWindow > QTabBar::tab:left { + border-left: 3px solid transparent; + border-bottom: none; + margin: 0px; + padding: -8px 8px 8px 8px; +} + +/* Only the left one is the mainwindow side bar */ +QMainWindow > QTabBar::tab:left:hover { + color: @widgets#mainwindow#side_bar#hover#fg; + background-color: @widgets#mainwindow#side_bar#hover#bg; +} + +QMainWindow > QTabBar::tab:left:selected { + color: @widgets#mainwindow#side_bar#selected#fg; + background-color: @widgets#mainwindow#side_bar#selected#bg; +} + QTabBar { border: none; } @@ -536,22 +590,6 @@ QTabBar::tab:left { min-width: 20px; } -/* Tabified QDockWidget */ -QMainWindow > QTabBar::tab:right { - border-right: 3px solid transparent; - border-bottom: none; - margin: 0px; - padding: 6px 2px -10px 2px; -} - -/* Tabified QDockWidget */ -QMainWindow > QTabBar::tab:left { - border-left: 3px solid transparent; - border-bottom: none; - margin: 0px; - padding: -10px 2px 6px 2px; -} - QTabBar::tab:hover { color: @widgets#qtabbar#tab#hover#fg; background-color: @widgets#qtabbar#tab#hover#bg; diff --git a/src/data/extra/themes/pure/palette.json b/src/data/extra/themes/pure/palette.json index 17aebb83..7c01f35b 100644 --- a/src/data/extra/themes/pure/palette.json +++ b/src/data/extra/themes/pure/palette.json @@ -1,6 +1,6 @@ { "metadata" : { - "revision" : 0, + "revision" : 1, "//comment" : "If there is a file named 'editor-highlight.theme' under theme folder, this value will be ignored.", "//comment" : "Otherwise, this value specify the theme name to use for syntax highlighting.", "editor-highlight-theme" : "Default", @@ -38,7 +38,11 @@ "fg15_3" : "#b0b0b0", "fg15_4" : "#7a7a7a", "fg15_5" : "#222222", - "bg11" : "#1976d2" + "bg11" : "#1976d2", + "layer1" : "#354259", + "layer2" : "#1b2430", + "layer3" : "#6b778d", + "layer4" : "#eeeeee" }, "base" : { "normal" : { @@ -260,7 +264,7 @@ "fg" : "@base#normal#fg", "bg" : "@base#normal#bg", "separator" : { - "bg" : "@widgets#separator#bg" + "bg" : "transparent" } }, "dragdropareaindicator" : { @@ -490,7 +494,7 @@ "bg" : "@base#footer#bg" }, "qscrollbar" : { - "bg" : "@base#normal#bg", + "bg" : "transparent", "addpage" : { "bg" : "transparent" }, @@ -631,6 +635,26 @@ } }, "mainwindow" : { + "side_bar" : { + "fg" : "@palette#bg3_5", + "bg" : "@palette#layer1", + "selected" : { + "fg" : "@palette#bg2_7", + "bg" : "@palette#layer2" + }, + "icon" : { + "fg" : "@widgets#mainwindow#side_bar#fg", + "selected" : { + "fg" : "@widgets#mainwindow#side_bar#selected#fg" + } + }, + "hover" : { + "bg" : "@palette#layer3" + }, + "widget" : { + "bg" : "@palette#layer4" + } + }, "dockwidget_tabbar" : { "icon" : { "fg" : "@base#icon#fg", diff --git a/src/data/extra/themes/solarized-dark/interface.qss b/src/data/extra/themes/solarized-dark/interface.qss index 4e2250e9..e4f97238 100644 --- a/src/data/extra/themes/solarized-dark/interface.qss +++ b/src/data/extra/themes/solarized-dark/interface.qss @@ -537,7 +537,7 @@ QMainWindow > QTabBar::tab:right { border-right: 3px solid transparent; border-bottom: none; margin: 0px; - padding: 6px 2px -10px 2px; + padding: 8px 8px -8px 8px; } /* Tabified QDockWidget */ @@ -545,7 +545,7 @@ QMainWindow > QTabBar::tab:left { border-left: 3px solid transparent; border-bottom: none; margin: 0px; - padding: -10px 2px 6px 2px; + padding: -8px 8px 8px 8px; } QTabBar::tab:hover { diff --git a/src/data/extra/themes/solarized-light/interface.qss b/src/data/extra/themes/solarized-light/interface.qss index 4e2250e9..e4f97238 100644 --- a/src/data/extra/themes/solarized-light/interface.qss +++ b/src/data/extra/themes/solarized-light/interface.qss @@ -537,7 +537,7 @@ QMainWindow > QTabBar::tab:right { border-right: 3px solid transparent; border-bottom: none; margin: 0px; - padding: 6px 2px -10px 2px; + padding: 8px 8px -8px 8px; } /* Tabified QDockWidget */ @@ -545,7 +545,7 @@ QMainWindow > QTabBar::tab:left { border-left: 3px solid transparent; border-bottom: none; margin: 0px; - padding: -10px 2px 6px 2px; + padding: -8px 8px 8px 8px; } QTabBar::tab:hover { diff --git a/src/data/extra/themes/vscode-dark/interface.qss b/src/data/extra/themes/vscode-dark/interface.qss index 4e2250e9..e4f97238 100644 --- a/src/data/extra/themes/vscode-dark/interface.qss +++ b/src/data/extra/themes/vscode-dark/interface.qss @@ -537,7 +537,7 @@ QMainWindow > QTabBar::tab:right { border-right: 3px solid transparent; border-bottom: none; margin: 0px; - padding: 6px 2px -10px 2px; + padding: 8px 8px -8px 8px; } /* Tabified QDockWidget */ @@ -545,7 +545,7 @@ QMainWindow > QTabBar::tab:left { border-left: 3px solid transparent; border-bottom: none; margin: 0px; - padding: -10px 2px 6px 2px; + padding: -8px 8px 8px 8px; } QTabBar::tab:hover { diff --git a/src/widgets/dockwidgethelper.cpp b/src/widgets/dockwidgethelper.cpp index 714939ad..451be3b6 100644 --- a/src/widgets/dockwidgethelper.cpp +++ b/src/widgets/dockwidgethelper.cpp @@ -127,6 +127,12 @@ void DockWidgetHelper::setupDocks() } } +static void addWidgetToDock(QDockWidget *p_dock, QWidget *p_widget) +{ + p_dock->setWidget(p_widget); + p_dock->setFocusProxy(p_widget); +} + void DockWidgetHelper::setupNavigationDock() { auto dock = createDockWidget(DockIndex::NavigationDock, tr("Navigation"), m_mainWindow); @@ -134,8 +140,7 @@ void DockWidgetHelper::setupNavigationDock() dock->setObjectName(QStringLiteral("NavigationDock.vnotex")); dock->setAllowedAreas(Qt::AllDockWidgetAreas); - dock->setWidget(m_mainWindow->m_notebookExplorer); - dock->setFocusProxy(m_mainWindow->m_notebookExplorer); + addWidgetToDock(dock, m_mainWindow->m_notebookExplorer); m_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock); } @@ -146,8 +151,7 @@ void DockWidgetHelper::setupOutlineDock() dock->setObjectName(QStringLiteral("OutlineDock.vnotex")); dock->setAllowedAreas(Qt::AllDockWidgetAreas); - dock->setWidget(m_mainWindow->m_outlineViewer); - dock->setFocusProxy(m_mainWindow->m_outlineViewer); + addWidgetToDock(dock, m_mainWindow->m_outlineViewer); m_mainWindow->addDockWidget(Qt::RightDockWidgetArea, dock); } @@ -158,8 +162,7 @@ void DockWidgetHelper::setupConsoleDock() dock->setObjectName(QStringLiteral("ConsoleDock.vnotex")); dock->setAllowedAreas(Qt::AllDockWidgetAreas); - dock->setWidget(m_mainWindow->m_consoleViewer); - dock->setFocusProxy(m_mainWindow->m_consoleViewer); + addWidgetToDock(dock, m_mainWindow->m_consoleViewer); m_mainWindow->addDockWidget(Qt::BottomDockWidgetArea, dock); dock->hide(); } @@ -171,8 +174,7 @@ void DockWidgetHelper::setupSearchDock() dock->setObjectName(QStringLiteral("SearchDock.vnotex")); dock->setAllowedAreas(Qt::AllDockWidgetAreas); - dock->setWidget(m_mainWindow->m_searchPanel); - dock->setFocusProxy(m_mainWindow->m_searchPanel); + addWidgetToDock(dock, m_mainWindow->m_searchPanel); m_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock); } @@ -183,8 +185,7 @@ void DockWidgetHelper::setupSnippetDock() dock->setObjectName(QStringLiteral("SnippetDock.vnotex")); dock->setAllowedAreas(Qt::AllDockWidgetAreas); - dock->setWidget(m_mainWindow->m_snippetPanel); - dock->setFocusProxy(m_mainWindow->m_snippetPanel); + addWidgetToDock(dock, m_mainWindow->m_snippetPanel); m_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock); } @@ -195,8 +196,7 @@ void DockWidgetHelper::setupHistoryDock() dock->setObjectName(QStringLiteral("HistoryDock.vnotex")); dock->setAllowedAreas(Qt::AllDockWidgetAreas); - dock->setWidget(m_mainWindow->m_historyPanel); - dock->setFocusProxy(m_mainWindow->m_historyPanel); + addWidgetToDock(dock, m_mainWindow->m_historyPanel); m_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock); } @@ -207,8 +207,7 @@ void DockWidgetHelper::setupTagDock() dock->setObjectName(QStringLiteral("TagDock.vnotex")); dock->setAllowedAreas(Qt::AllDockWidgetAreas); - dock->setWidget(m_mainWindow->m_tagExplorer); - dock->setFocusProxy(m_mainWindow->m_tagExplorer); + addWidgetToDock(dock, m_mainWindow->m_tagExplorer); m_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dock); } @@ -219,8 +218,7 @@ void DockWidgetHelper::setupLocationListDock() dock->setObjectName(QStringLiteral("LocationListDock.vnotex")); dock->setAllowedAreas(Qt::AllDockWidgetAreas); - dock->setWidget(m_mainWindow->m_locationList); - dock->setFocusProxy(m_mainWindow->m_locationList); + addWidgetToDock(dock, m_mainWindow->m_locationList); m_mainWindow->addDockWidget(Qt::BottomDockWidgetArea, dock); dock->hide(); } @@ -354,6 +352,12 @@ void DockWidgetHelper::updateDockWidgetTabBar() if (cnt == 1) { iconOnly = false; } + + bool isSideBar = iconOnly && (tabShape == QTabBar::RoundedWest || tabShape == QTabBar::TriangularWest); + if (tabBar->property(PropertyDefs::c_mainWindowSideBar).toBool() != isSideBar) { + WidgetUtils::setPropertyDynamically(tabBar, PropertyDefs::c_mainWindowSideBar, isSideBar); + } + for (int i = 0; i < cnt; ++i) { auto dock = reinterpret_cast(tabBar->tabData(i).toULongLong()); if (!dock) { @@ -366,7 +370,11 @@ void DockWidgetHelper::updateDockWidgetTabBar() } else if (dock->windowTitle().isEmpty()) { dock->setWindowTitle(dock->property(PropertyDefs::c_dockWidgetTitle).toString()); } - tabBar->setTabIcon(i, getDockIcon(static_cast(dockIdx))); + tabBar->setTabIcon(i, getDockIcon(static_cast(dockIdx), isSideBar)); + + if (dock->property(PropertyDefs::c_mainWindowSideBar).toBool() != isSideBar) { + WidgetUtils::setPropertyDynamically(dock, PropertyDefs::c_mainWindowSideBar, isSideBar); + } } } @@ -510,21 +518,35 @@ QVector DockWidgetHelper::getVisibleNavigationItems() return items; } -const QIcon &DockWidgetHelper::getDockIcon(DockIndex p_dockIndex) +const QIcon &DockWidgetHelper::getDockIcon(DockIndex p_dockIndex, bool p_isSideBar) { static const auto fg = VNoteX::getInst().getThemeMgr().paletteColor("widgets#mainwindow#dockwidget_tabbar#icon#fg"); static const auto selectedFg = VNoteX::getInst().getThemeMgr().paletteColor("widgets#mainwindow#dockwidget_tabbar#icon#selected#fg"); + static auto sideBarFg = VNoteX::getInst().getThemeMgr().paletteColor("widgets#mainwindow#side_bar#icon#fg"); + static auto sideBarSelectedFg = VNoteX::getInst().getThemeMgr().paletteColor("widgets#mainwindow#side_bar#icon#selected#fg"); + + if (sideBarFg.isEmpty()) { + sideBarFg = fg; + } + if (sideBarSelectedFg.isEmpty()) { + sideBarSelectedFg = selectedFg; + } + const auto area = m_mainWindow->dockWidgetArea(m_docks[p_dockIndex]); const int newAngle = rotationAngle(area); - if (m_dockIcons[p_dockIndex].m_rotationAngle != newAngle && area != Qt::NoDockWidgetArea) { + if ((m_dockIcons[p_dockIndex].m_rotationAngle != newAngle + || m_dockIcons[p_dockIndex].m_isSideBar != p_isSideBar) + && area != Qt::NoDockWidgetArea) { QVector colors; - colors.push_back(IconUtils::OverriddenColor(fg, QIcon::Normal)); + colors.push_back(IconUtils::OverriddenColor(p_isSideBar ? sideBarFg : fg, QIcon::Normal)); // FIXME: the Selected Mode is not used by the selected tab of a QTabBar. - colors.push_back(IconUtils::OverriddenColor(selectedFg, QIcon::Selected)); + colors.push_back(IconUtils::OverriddenColor(p_isSideBar ? sideBarSelectedFg : selectedFg, + QIcon::Selected)); auto iconFile = VNoteX::getInst().getThemeMgr().getIconFile(iconFileName(p_dockIndex)); m_dockIcons[p_dockIndex].m_icon = IconUtils::fetchIcon(iconFile, colors, newAngle); m_dockIcons[p_dockIndex].m_rotationAngle = newAngle; + m_dockIcons[p_dockIndex].m_isSideBar = p_isSideBar; } return m_dockIcons[p_dockIndex].m_icon; diff --git a/src/widgets/dockwidgethelper.h b/src/widgets/dockwidgethelper.h index 02ddb6e9..7920fb92 100644 --- a/src/widgets/dockwidgethelper.h +++ b/src/widgets/dockwidgethelper.h @@ -92,6 +92,8 @@ namespace vnotex QIcon m_icon; int m_rotationAngle = INT_MIN; + + bool m_isSideBar = false; }; void setupNavigationDock(); @@ -118,7 +120,7 @@ namespace vnotex void setupDockActivateShortcut(QDockWidget *p_dock, const QString &p_keys); - const QIcon &getDockIcon(DockIndex p_dockIndex); + const QIcon &getDockIcon(DockIndex p_dockIndex, bool p_isSideBar); static QString iconFileName(DockIndex p_dockIndex); diff --git a/src/widgets/propertydefs.cpp b/src/widgets/propertydefs.cpp index a76ad19c..81318aeb 100644 --- a/src/widgets/propertydefs.cpp +++ b/src/widgets/propertydefs.cpp @@ -27,3 +27,5 @@ const char *PropertyDefs::c_dockWidgetIndex = "DockIndex"; const char *PropertyDefs::c_dockWidgetTitle = "DockTitle"; const char *PropertyDefs::c_hitSettingWidget = "HitSettingWidget"; + +const char *PropertyDefs::c_mainWindowSideBar = "MainWindowSideBar"; diff --git a/src/widgets/propertydefs.h b/src/widgets/propertydefs.h index b276e4fb..43fa034f 100644 --- a/src/widgets/propertydefs.h +++ b/src/widgets/propertydefs.h @@ -35,6 +35,8 @@ namespace vnotex static const char *c_dockWidgetTitle; static const char *c_hitSettingWidget; + + static const char *c_mainWindowSideBar; }; } diff --git a/src/widgets/titlebar.cpp b/src/widgets/titlebar.cpp index 50adeaa1..5077624e 100644 --- a/src/widgets/titlebar.cpp +++ b/src/widgets/titlebar.cpp @@ -26,7 +26,7 @@ TitleBar::TitleBar(const QString &p_title, bool p_hasInfoLabel, TitleBar::Actions p_actionFlags, QWidget *p_parent) - : QWidget(p_parent) + : QFrame(p_parent) { setupUI(p_title, p_hasInfoLabel, p_actionFlags); } diff --git a/src/widgets/titlebar.h b/src/widgets/titlebar.h index 563be58e..6dc71fb6 100644 --- a/src/widgets/titlebar.h +++ b/src/widgets/titlebar.h @@ -1,7 +1,7 @@ #ifndef TITLEBAR_H #define TITLEBAR_H -#include +#include #include #include @@ -11,7 +11,7 @@ class QLabel; namespace vnotex { - class TitleBar : public QWidget + class TitleBar : public QFrame { Q_OBJECT public: diff --git a/src/widgets/toolbarhelper.cpp b/src/widgets/toolbarhelper.cpp index 730527bb..532d9046 100644 --- a/src/widgets/toolbarhelper.cpp +++ b/src/widgets/toolbarhelper.cpp @@ -405,8 +405,6 @@ QToolBar *ToolBarHelper::setupSettingsToolBar(MainWindow *p_win, QToolBar *p_too setupExpandButton(p_win, tb); - setupSettingsButton(p_win, tb); - setupMenuButton(p_win, tb); return tb; @@ -586,81 +584,6 @@ void ToolBarHelper::setupExpandButton(MainWindow *p_win, QToolBar *p_toolBar) p_toolBar->addWidget(btn); } -void ToolBarHelper::setupSettingsButton(MainWindow *p_win, QToolBar *p_toolBar) -{ - const auto &coreConfig = ConfigMgr::getInst().getCoreConfig(); - - auto act = p_toolBar->addAction(generateIcon("settings_menu.svg"), MainWindow::tr("Settings")); - auto btn = dynamic_cast(p_toolBar->widgetForAction(act)); - Q_ASSERT(btn); - btn->setPopupMode(QToolButton::InstantPopup); - btn->setProperty(PropertyDefs::c_toolButtonWithoutMenuIndicator, true); - - auto menu = WidgetsFactory::createMenu(p_toolBar); - btn->setMenu(menu); - - auto settingsAct = menu->addAction(MainWindow::tr("Settings"), - menu, - [p_win]() { - SettingsDialog dialog(p_win); - dialog.exec(); - }); - WidgetUtils::addActionShortcut(settingsAct, - coreConfig.getShortcut(CoreConfig::Shortcut::Settings)); - - menu->addSeparator(); - - menu->addAction(MainWindow::tr("Edit User Configuration File"), - menu, - []() { - auto file = ConfigMgr::getInst().getConfigFilePath(ConfigMgr::Source::User); - auto paras = QSharedPointer::create(); - paras->m_sessionEnabled = false; - emit VNoteX::getInst().openFileRequested(file, paras); - }); - - menu->addAction(MainWindow::tr("Open User Configuration Folder"), - menu, - []() { - auto folderPath = ConfigMgr::getInst().getUserFolder(); - WidgetUtils::openUrlByDesktop(QUrl::fromLocalFile(folderPath)); - }); - - menu->addAction(MainWindow::tr("Open Default Configuration Folder"), - menu, - []() { - auto folderPath = ConfigMgr::getInst().getAppFolder(); - WidgetUtils::openUrlByDesktop(QUrl::fromLocalFile(folderPath)); - }); - - menu->addSeparator(); - - { - auto act = menu->addAction(MainWindow::tr("Edit Markdown User Styles"), - menu, - []() { - const auto file = ConfigMgr::getInst().getUserMarkdownUserStyleFile(); - auto paras = QSharedPointer::create(); - paras->m_sessionEnabled = false; - paras->m_hooks[FileOpenParameters::PostSave] = []() { - qDebug() << "post save"; - const auto &markdownConfig = ConfigMgr::getInst().getEditorConfig().getMarkdownEditorConfig(); - HtmlTemplateHelper::updateMarkdownViewerTemplate(markdownConfig, true); - }; - emit VNoteX::getInst().openFileRequested(file, paras); - }); - act->setStatusTip(MainWindow::tr("Edit the user styles of Markdown editor read mode")); - } - - menu->addSeparator(); - - menu->addAction(MainWindow::tr("Reset Main Window Layout"), - menu, - [p_win]() { - p_win->resetStateAndGeometry(); - }); -} - void ToolBarHelper::setupMenuButton(MainWindow *p_win, QToolBar *p_toolBar) { const auto &coreConfig = ConfigMgr::getInst().getCoreConfig(); @@ -674,6 +597,71 @@ void ToolBarHelper::setupMenuButton(MainWindow *p_win, QToolBar *p_toolBar) auto menu = WidgetsFactory::createMenu(p_toolBar); btn->setMenu(menu); + { + auto settingsAct = menu->addAction(MainWindow::tr("Settings"), + menu, + [p_win]() { + SettingsDialog dialog(p_win); + dialog.exec(); + }); + WidgetUtils::addActionShortcut(settingsAct, + coreConfig.getShortcut(CoreConfig::Shortcut::Settings)); + + menu->addSeparator(); + + menu->addAction(MainWindow::tr("Edit User Configuration File"), + menu, + []() { + auto file = ConfigMgr::getInst().getConfigFilePath(ConfigMgr::Source::User); + auto paras = QSharedPointer::create(); + paras->m_sessionEnabled = false; + emit VNoteX::getInst().openFileRequested(file, paras); + }); + + menu->addAction(MainWindow::tr("Open User Configuration Folder"), + menu, + []() { + auto folderPath = ConfigMgr::getInst().getUserFolder(); + WidgetUtils::openUrlByDesktop(QUrl::fromLocalFile(folderPath)); + }); + + menu->addAction(MainWindow::tr("Open Default Configuration Folder"), + menu, + []() { + auto folderPath = ConfigMgr::getInst().getAppFolder(); + WidgetUtils::openUrlByDesktop(QUrl::fromLocalFile(folderPath)); + }); + + menu->addSeparator(); + + { + auto act = menu->addAction(MainWindow::tr("Edit Markdown User Styles"), + menu, + []() { + const auto file = ConfigMgr::getInst().getUserMarkdownUserStyleFile(); + auto paras = QSharedPointer::create(); + paras->m_sessionEnabled = false; + paras->m_hooks[FileOpenParameters::PostSave] = []() { + qDebug() << "post save"; + const auto &markdownConfig = ConfigMgr::getInst().getEditorConfig().getMarkdownEditorConfig(); + HtmlTemplateHelper::updateMarkdownViewerTemplate(markdownConfig, true); + }; + emit VNoteX::getInst().openFileRequested(file, paras); + }); + act->setStatusTip(MainWindow::tr("Edit the user styles of Markdown editor read mode")); + } + + menu->addSeparator(); + + menu->addAction(MainWindow::tr("Reset Main Window Layout"), + menu, + [p_win]() { + p_win->resetStateAndGeometry(); + }); + } + + menu->addSeparator(); + menu->addAction(MainWindow::tr("View Logs"), menu, []() { diff --git a/src/widgets/toolbarhelper.h b/src/widgets/toolbarhelper.h index 147b9f07..492223d0 100644 --- a/src/widgets/toolbarhelper.h +++ b/src/widgets/toolbarhelper.h @@ -46,8 +46,6 @@ namespace vnotex static void setupExpandButton(MainWindow *p_win, QToolBar *p_toolBar); - static void setupSettingsButton(MainWindow *p_win, QToolBar *p_toolBar); - static void setupMenuButton(MainWindow *p_win, QToolBar *p_toolBar); static void activateQuickAccess(const QString &p_file);