summaryrefslogtreecommitdiff
path: root/src/mainwindow.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-02 16:28:09 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-06-02 16:28:09 -0400
commite6706c7a5b82e68443de6ca262c77e1543986b1e (patch)
tree794183a2da8be6ff758a2f1d380ca17c84da77a1 /src/mainwindow.cpp
parentfab357ef4d1b65e2737fa2db93a42ede38653a59 (diff)
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
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r--src/mainwindow.cpp82
1 files changed, 52 insertions, 30 deletions
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)