From e6706c7a5b82e68443de6ca262c77e1543986b1e Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sun, 2 Jun 2019 16:28:09 -0400
Subject: the toolbar menu is now in the ui file instead of being created by
hand it's also shared between the main menu and the context menu
---
src/mainwindow.cpp | 82 +++++++++++++++++++++++++++++------------------
src/mainwindow.h | 10 ++++++
src/mainwindow.ui | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
3 files changed, 153 insertions(+), 32 deletions(-)
(limited to 'src')
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 642b0c99..3da571f9 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -399,6 +399,7 @@ MainWindow::MainWindow(QSettings &initSettings
connect(ui->tabWidget, SIGNAL(currentChanged(int)), &TutorialManager::instance(), SIGNAL(tabChanged(int)));
connect(ui->modList->header(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), this, SLOT(modListSortIndicatorChanged(int,Qt::SortOrder)));
connect(ui->linksToolBar, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(linksToolBar_customContextMenuRequested(QPoint)));
+ connect(ui->menuToolbars, &QMenu::aboutToShow, [&]{ toolbarMenu_aboutToShow(); });
connect(&m_OrganizerCore, &OrganizerCore::modInstalled, this, &MainWindow::modInstalled);
connect(&m_OrganizerCore, &OrganizerCore::close, this, &QMainWindow::close);
@@ -640,45 +641,66 @@ void MainWindow::updateToolBar()
ui->linksToolBar->setVisible(hasLinks);
}
-QMenu* MainWindow::createPopupMenu()
+void MainWindow::toolbarMenu_aboutToShow()
{
- auto* m = QMainWindow::createPopupMenu();
+ // well, this is a bit of a hack to allow the same toolbar menu to be shown
+ // in both the main menu and the context menu
+ //
+ // the toolbar menu is returned by createPopupMenu(), but Qt takes ownership
+ // of it and deletes it by setting the WA_DeleteOnClose attribute on it
+ //
+ // to avoid deleting the menu, the attribute is removed here
+ ui->menuToolbars->setAttribute(Qt::WA_DeleteOnClose, false);
- m->addSeparator();
+ ui->actionToolBarMainToggle->setChecked(ui->toolBar->isVisible());
+ ui->actionToolBarLinksToggle->setChecked(ui->linksToolBar->isVisible());
- 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);
+ ui->actionToolBarLargeIcons->setChecked(ui->toolBar->iconSize() == LargeToolbarSize);
+ ui->actionToolBarSmallIcons->setChecked(ui->toolBar->iconSize() == SmallToolbarSize);
- 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);
+ ui->actionToolBarIconsOnly->setChecked(ui->toolBar->toolButtonStyle() == Qt::ToolButtonIconOnly);
+ ui->actionToolBarTextOnly->setChecked(ui->toolBar->toolButtonStyle() == Qt::ToolButtonTextOnly);
+ ui->actionToolBarIconsAndText->setChecked(ui->toolBar->toolButtonStyle() == Qt::ToolButtonTextUnderIcon);
+}
- m->addSeparator();
+QMenu* MainWindow::createPopupMenu()
+{
+ return ui->menuToolbars;
+}
- 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);
+void MainWindow::on_actionToolBarMainToggle_triggered()
+{
+ ui->toolBar->setVisible(!ui->toolBar->isVisible());
+}
- 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);
+void MainWindow::on_actionToolBarLinksToggle_triggered()
+{
+ ui->linksToolBar->setVisible(!ui->linksToolBar->isVisible());
+}
- 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);
+void MainWindow::on_actionToolBarLargeIcons_triggered()
+{
+ setToolbarSize(LargeToolbarSize);
+}
+
+void MainWindow::on_actionToolBarSmallIcons_triggered()
+{
+ setToolbarSize(SmallToolbarSize);
+}
- return m;
+void MainWindow::on_actionToolBarIconsOnly_triggered()
+{
+ setToolbarButtonStyle(Qt::ToolButtonIconOnly);
+}
+
+void MainWindow::on_actionToolBarTextOnly_triggered()
+{
+ setToolbarButtonStyle(Qt::ToolButtonTextOnly);
+}
+
+void MainWindow::on_actionToolBarIconsAndText_triggered()
+{
+ setToolbarButtonStyle(Qt::ToolButtonTextUnderIcon);
}
void MainWindow::setToolbarSize(const QSize& s)
diff --git a/src/mainwindow.h b/src/mainwindow.h
index fa5912b8..18aa525e 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -213,6 +213,8 @@ private:
void updateToolBar();
void setToolbarSize(const QSize& s);
void setToolbarButtonStyle(Qt::ToolButtonStyle s);
+ void toolbarMenu_aboutToShow();
+
QMenu* createPopupMenu() override;
void activateSelectedProfile();
@@ -631,6 +633,14 @@ private slots: // ui slots
void on_actionSettings_triggered();
void on_actionUpdate_triggered();
void on_actionExit_triggered();
+ void on_actionToolBarMainToggle_triggered();
+ void on_actionToolBarLinksToggle_triggered();
+ void on_actionToolBarLargeIcons_triggered();
+ void on_actionToolBarSmallIcons_triggered();
+ void on_actionToolBarIconsOnly_triggered();
+ void on_actionToolBarTextOnly_triggered();
+ void on_actionToolBarIconsAndText_triggered();
+
void on_bsaList_customContextMenuRequested(const QPoint &pos);
void on_clearFiltersButton_clicked();
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index 59d30a09..a4bd2888 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -1358,6 +1358,9 @@ p, li { white-space: pre-wrap; }
36
+
+ Qt::ToolButtonTextUnderIcon
+
TopToolBarArea
@@ -1405,10 +1408,8 @@ p, li { white-space: pre-wrap; }
-
-
+
+
@@ -1697,6 +1720,72 @@ p, li { white-space: pre-wrap; }
Exits Mod Organizer
+
+
+ Toolbar Size
+
+
+
+
+ Toolbar Buttons
+
+
+
+
+ true
+
+
+ &Main
+
+
+
+
+ true
+
+
+ &Links
+
+
+
+
+ true
+
+
+ &Small Icons
+
+
+
+
+ true
+
+
+ Lar&ge Icons
+
+
+
+
+ true
+
+
+ &Icons Only
+
+
+
+
+ true
+
+
+ &Text Only
+
+
+
+
+ true
+
+
+ I&cons and Text
+
+
--
cgit v1.3.1