diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-06-02 16:28:09 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-06-02 16:28:09 -0400 |
| commit | e6706c7a5b82e68443de6ca262c77e1543986b1e (patch) | |
| tree | 794183a2da8be6ff758a2f1d380ca17c84da77a1 /src | |
| parent | fab357ef4d1b65e2737fa2db93a42ede38653a59 (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')
| -rw-r--r-- | src/mainwindow.cpp | 82 | ||||
| -rw-r--r-- | src/mainwindow.h | 10 | ||||
| -rw-r--r-- | src/mainwindow.ui | 93 |
3 files changed, 153 insertions, 32 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) 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; } <height>36</height> </size> </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextUnderIcon</enum> + </property> <attribute name="toolBarArea"> <enum>TopToolBarArea</enum> </attribute> @@ -1405,10 +1408,8 @@ p, li { white-space: pre-wrap; } </property> <addaction name="actionNexus"/> <addaction name="separator"/> - <addaction name="actionNotifications"/> <addaction name="actionModify_Executables"/> <addaction name="actionTool"/> - <addaction name="separator"/> <addaction name="actionSettings"/> </widget> <widget class="QMenu" name="menu_Help"> @@ -1425,8 +1426,30 @@ p, li { white-space: pre-wrap; } </property> <addaction name="actionCopy_Log_to_Clipboard"/> </widget> + <widget class="QMenu" name="menuView"> + <property name="title"> + <string>View</string> + </property> + <widget class="QMenu" name="menuToolbars"> + <property name="title"> + <string>Toolbars</string> + </property> + <addaction name="actionToolBarMainToggle"/> + <addaction name="actionToolBarLinksToggle"/> + <addaction name="separator"/> + <addaction name="actionToolBarSmallIcons"/> + <addaction name="actionToolBarLargeIcons"/> + <addaction name="separator"/> + <addaction name="actionToolBarIconsOnly"/> + <addaction name="actionToolBarTextOnly"/> + <addaction name="actionToolBarIconsAndText"/> + </widget> + <addaction name="menuToolbars"/> + <addaction name="actionNotifications"/> + </widget> <addaction name="menu_File"/> <addaction name="menu_Edit"/> + <addaction name="menuView"/> <addaction name="menu_Tools"/> <addaction name="menu_Help"/> </widget> @@ -1697,6 +1720,72 @@ p, li { white-space: pre-wrap; } <string>Exits Mod Organizer</string> </property> </action> + <action name="actionToolbar_Size"> + <property name="text"> + <string>Toolbar Size</string> + </property> + </action> + <action name="actionToolbar_style"> + <property name="text"> + <string>Toolbar Buttons</string> + </property> + </action> + <action name="actionToolBarMainToggle"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>&Main</string> + </property> + </action> + <action name="actionToolBarLinksToggle"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>&Links</string> + </property> + </action> + <action name="actionToolBarSmallIcons"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>&Small Icons</string> + </property> + </action> + <action name="actionToolBarLargeIcons"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>Lar&ge Icons</string> + </property> + </action> + <action name="actionToolBarIconsOnly"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>&Icons Only</string> + </property> + </action> + <action name="actionToolBarTextOnly"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>&Text Only</string> + </property> + </action> + <action name="actionToolBarIconsAndText"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>I&cons and Text</string> + </property> + </action> </widget> <layoutdefault spacing="6" margin="11"/> <customwidgets> |
