From fab357ef4d1b65e2737fa2db93a42ede38653a59 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sun, 2 Jun 2019 15:57:52 -0400
Subject: toolbar size and button style are now configurable and remembered
---
src/mainwindow.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
(limited to 'src/mainwindow.cpp')
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 09ecc3f9..642b0c99 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -189,6 +189,9 @@ along with Mod Organizer. If not, see .
using namespace MOBase;
using namespace MOShared;
+const QSize SmallToolbarSize(24, 24);
+const QSize LargeToolbarSize(42, 36);
+
MainWindow::MainWindow(QSettings &initSettings
, OrganizerCore &organizerCore
@@ -637,6 +640,61 @@ void MainWindow::updateToolBar()
ui->linksToolBar->setVisible(hasLinks);
}
+QMenu* MainWindow::createPopupMenu()
+{
+ auto* m = QMainWindow::createPopupMenu();
+
+ m->addSeparator();
+
+ auto* a = new QAction(tr("Small Icons"), m);
+ connect(a, &QAction::triggered, [&]{ setToolbarSize(SmallToolbarSize); });
+ a->setCheckable(true);
+ a->setChecked(ui->toolBar->iconSize() == SmallToolbarSize);
+ m->addAction(a);
+
+ a = new QAction(tr("Large Icons"), m);
+ connect(a, &QAction::triggered, [&]{ setToolbarSize(LargeToolbarSize); });
+ a->setCheckable(true);
+ a->setChecked(ui->toolBar->iconSize() == LargeToolbarSize);
+ m->addAction(a);
+
+ m->addSeparator();
+
+ a = new QAction(tr("Icons only"), m);
+ connect(a, &QAction::triggered, [&]{ setToolbarButtonStyle(Qt::ToolButtonIconOnly); });
+ a->setCheckable(true);
+ a->setChecked(ui->toolBar->toolButtonStyle() == Qt::ToolButtonIconOnly);
+ m->addAction(a);
+
+ a = new QAction(tr("Text only"), m);
+ connect(a, &QAction::triggered, [&]{ setToolbarButtonStyle(Qt::ToolButtonTextOnly); });
+ a->setCheckable(true);
+ a->setChecked(ui->toolBar->toolButtonStyle() == Qt::ToolButtonTextOnly);
+ m->addAction(a);
+
+ a = new QAction(tr("Text and Icons"), m);
+ connect(a, &QAction::triggered, [&]{ setToolbarButtonStyle(Qt::ToolButtonTextUnderIcon); });
+ a->setCheckable(true);
+ a->setChecked(ui->toolBar->toolButtonStyle() == Qt::ToolButtonTextUnderIcon);
+ m->addAction(a);
+
+ return m;
+}
+
+void MainWindow::setToolbarSize(const QSize& s)
+{
+ for (auto* tb : findChildren()) {
+ tb->setIconSize(s);
+ }
+}
+
+void MainWindow::setToolbarButtonStyle(Qt::ToolButtonStyle s)
+{
+ for (auto* tb : findChildren()) {
+ tb->setToolButtonStyle(s);
+ }
+}
+
void MainWindow::scheduleUpdateButton()
{
if (!m_UpdateProblemsTimer.isActive()) {
@@ -1832,6 +1890,15 @@ void MainWindow::readSettings()
restoreState(settings.value("window_state").toByteArray());
}
+ if (settings.contains("toolbar_size")) {
+ setToolbarSize(settings.value("toolbar_size").toSize());
+ }
+
+ if (settings.contains("toolbar_button_style")) {
+ setToolbarButtonStyle(static_cast(
+ settings.value("toolbar_button_style").toInt()));
+ }
+
if (settings.contains("window_split")) {
ui->splitter->restoreState(settings.value("window_split").toByteArray());
}
@@ -1909,6 +1976,8 @@ void MainWindow::storeSettings(QSettings &settings) {
if (settings.value("reset_geometry", false).toBool()) {
settings.remove("window_geometry");
settings.remove("window_state");
+ settings.remove("toolbar_size");
+ settings.remove("toolbar_button_style");
settings.remove("window_split");
settings.remove("log_split");
settings.remove("filters_visible");
@@ -1918,6 +1987,8 @@ void MainWindow::storeSettings(QSettings &settings) {
} else {
settings.setValue("window_geometry", saveGeometry());
settings.setValue("window_state", saveState());
+ settings.setValue("toolbar_size", ui->toolBar->iconSize());
+ settings.setValue("toolbar_button_style", static_cast(ui->toolBar->toolButtonStyle()));
settings.setValue("window_split", ui->splitter->saveState());
settings.setValue("log_split", ui->topLevelSplitter->saveState());
settings.setValue("browser_geometry", m_IntegratedBrowser.saveGeometry());
--
cgit v1.3.1