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);