summaryrefslogtreecommitdiff
path: root/src
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
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')
-rw-r--r--src/mainwindow.cpp82
-rw-r--r--src/mainwindow.h10
-rw-r--r--src/mainwindow.ui93
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>&amp;Main</string>
+ </property>
+ </action>
+ <action name="actionToolBarLinksToggle">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>&amp;Links</string>
+ </property>
+ </action>
+ <action name="actionToolBarSmallIcons">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>&amp;Small Icons</string>
+ </property>
+ </action>
+ <action name="actionToolBarLargeIcons">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>Lar&amp;ge Icons</string>
+ </property>
+ </action>
+ <action name="actionToolBarIconsOnly">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>&amp;Icons Only</string>
+ </property>
+ </action>
+ <action name="actionToolBarTextOnly">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>&amp;Text Only</string>
+ </property>
+ </action>
+ <action name="actionToolBarIconsAndText">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>I&amp;cons and Text</string>
+ </property>
+ </action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>