diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-06-02 15:22:11 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-06-02 15:22:11 -0400 |
| commit | 41ef9813dd7b3b7587afe8dfe3a16f2711200edb (patch) | |
| tree | 5e7bad8eb03f0561fee7886b69a97fd58f954a1e /src | |
| parent | 746e9c08e68ed7e44e6ef4e29b250c73b9c21440 (diff) | |
moved links to a new dedicated toolbar
Diffstat (limited to 'src')
| -rw-r--r-- | src/mainwindow.cpp | 56 | ||||
| -rw-r--r-- | src/mainwindow.h | 4 | ||||
| -rw-r--r-- | src/mainwindow.ui | 43 |
3 files changed, 57 insertions, 46 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 8e0d2624..09ecc3f9 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -247,8 +247,6 @@ MainWindow::MainWindow(QSettings &initSettings updateProblemsButton(); // Setup toolbar - QWidget *spacer = new QWidget(ui->toolBar); - spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); setupActionMenu(ui->actionTool); setupActionMenu(ui->actionHelp); @@ -259,16 +257,6 @@ MainWindow::MainWindow(QSettings &initSettings toggleMO2EndorseState(); - for (QAction *action : ui->toolBar->actions()) { - if (action->isSeparator()) { - // insert spacers - ui->toolBar->insertWidget(action, spacer); - m_Sep = action; - // m_Sep would only use the last separator anyway, and we only have the one anyway? - break; - } - } - TaskProgressManager::instance().tryCreateTaskbar(); // set up mod list @@ -407,7 +395,7 @@ MainWindow::MainWindow(QSettings &initSettings connect(&TutorialManager::instance(), SIGNAL(windowTutorialFinished(QString)), this, SLOT(windowTutorialFinished(QString))); 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->toolBar, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(toolBar_customContextMenuRequested(QPoint))); + connect(ui->linksToolBar, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(linksToolBar_customContextMenuRequested(QPoint))); connect(&m_OrganizerCore, &OrganizerCore::modInstalled, this, &MainWindow::modInstalled); connect(&m_OrganizerCore, &OrganizerCore::close, this, &QMainWindow::close); @@ -618,29 +606,36 @@ void MainWindow::setupActionMenu(QAction* a) void MainWindow::updateToolBar() { - for (QAction *action : ui->toolBar->actions()) { - if (action->objectName().startsWith("custom__")) { - ui->toolBar->removeAction(action); - action->deleteLater(); - } + for (auto* a : ui->linksToolBar->actions()) { + ui->linksToolBar->removeAction(a); + a->deleteLater(); } + bool hasLinks = false; + std::vector<Executable>::iterator begin, end; m_OrganizerCore.executablesList()->getExecutables(begin, end); + for (auto iter = begin; iter != end; ++iter) { if (iter->isShownOnToolbar()) { + hasLinks = true; + QAction *exeAction = new QAction(iconForExecutable(iter->m_BinaryInfo.filePath()), iter->m_Title, ui->toolBar); + exeAction->setObjectName(QString("custom__") + iter->m_Title); if (!connect(exeAction, SIGNAL(triggered()), this, SLOT(startExeAction()))) { qDebug("failed to connect trigger?"); } - ui->toolBar->insertAction(m_Sep, exeAction); + + ui->linksToolBar->addAction(exeAction); } } -} + // don't show the toolbar if there are no links + ui->linksToolBar->setVisible(hasLinks); +} void MainWindow::scheduleUpdateButton() { @@ -649,7 +644,6 @@ void MainWindow::scheduleUpdateButton() } } - void MainWindow::updateProblemsButton() { size_t numProblems = checkForProblems(); @@ -1834,6 +1828,10 @@ void MainWindow::readSettings() restoreGeometry(settings.value("window_geometry").toByteArray()); } + if (settings.contains("window_state")) { + restoreState(settings.value("window_state").toByteArray()); + } + if (settings.contains("window_split")) { ui->splitter->restoreState(settings.value("window_split").toByteArray()); } @@ -1910,6 +1908,7 @@ void MainWindow::storeSettings(QSettings &settings) { if (settings.value("reset_geometry", false).toBool()) { settings.remove("window_geometry"); + settings.remove("window_state"); settings.remove("window_split"); settings.remove("log_split"); settings.remove("filters_visible"); @@ -1918,6 +1917,7 @@ void MainWindow::storeSettings(QSettings &settings) { settings.remove("reset_geometry"); } else { settings.setValue("window_geometry", saveGeometry()); + settings.setValue("window_state", saveState()); settings.setValue("window_split", ui->splitter->saveState()); settings.setValue("log_split", ui->topLevelSplitter->saveState()); settings.setValue("browser_geometry", m_IntegratedBrowser.saveGeometry()); @@ -6062,17 +6062,23 @@ void MainWindow::removeFromToolbar() } -void MainWindow::toolBar_customContextMenuRequested(const QPoint &point) +void MainWindow::linksToolBar_customContextMenuRequested(const QPoint &point) { - QAction *action = ui->toolBar->actionAt(point); + QAction *action = ui->linksToolBar->actionAt(point); + if (action != nullptr) { if (action->objectName().startsWith("custom_")) { m_ContextAction = action; QMenu menu; - menu.addAction(tr("Remove"), this, SLOT(removeFromToolbar())); - menu.exec(ui->toolBar->mapToGlobal(point)); + menu.addAction(tr("Remove '%1' from the toolbar").arg(action->text()), this, SLOT(removeFromToolbar())); + menu.exec(ui->linksToolBar->mapToGlobal(point)); + return; } } + + // did not click a link button, show the default context menu + auto* m = createPopupMenu(); + m->exec(ui->linksToolBar->mapToGlobal(point)); } void MainWindow::on_espList_customContextMenuRequested(const QPoint &pos) diff --git a/src/mainwindow.h b/src/mainwindow.h index 96660aeb..8e50fa2e 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -316,8 +316,6 @@ private: Ui::MainWindow *ui; - QAction *m_Sep; // Executable Shortcuts are added after this. Non owning. - bool m_WasVisible; MOBase::TutorialControl m_Tutorial; @@ -594,7 +592,7 @@ private slots: */ void allowListResize(); - void toolBar_customContextMenuRequested(const QPoint &point); + void linksToolBar_customContextMenuRequested(const QPoint &point); void removeFromToolbar(); void overwriteClosed(int); diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 03cb9ab7..59d30a09 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -1349,17 +1349,8 @@ p, li { white-space: pre-wrap; } </layout> </widget> <widget class="QToolBar" name="toolBar"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="contextMenuPolicy"> - <enum>Qt::CustomContextMenu</enum> - </property> <property name="windowTitle"> - <string>Tool Bar</string> - </property> - <property name="movable"> - <bool>false</bool> + <string>Main ToolBar</string> </property> <property name="iconSize"> <size> @@ -1367,12 +1358,6 @@ p, li { white-space: pre-wrap; } <height>36</height> </size> </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonIconOnly</enum> - </property> - <property name="floatable"> - <bool>false</bool> - </property> <attribute name="toolBarArea"> <enum>TopToolBarArea</enum> </attribute> @@ -1380,9 +1365,11 @@ p, li { white-space: pre-wrap; } <bool>false</bool> </attribute> <addaction name="actionChange_Game"/> - <addaction name="actionInstallMod"/> - <addaction name="actionNexus"/> <addaction name="actionAdd_Profile"/> + <addaction name="separator"/> + <addaction name="actionNexus"/> + <addaction name="actionInstallMod"/> + <addaction name="separator"/> <addaction name="actionModify_Executables"/> <addaction name="actionTool"/> <addaction name="actionSettings"/> @@ -1443,6 +1430,26 @@ p, li { white-space: pre-wrap; } <addaction name="menu_Tools"/> <addaction name="menu_Help"/> </widget> + <widget class="QToolBar" name="linksToolBar"> + <property name="contextMenuPolicy"> + <enum>Qt::CustomContextMenu</enum> + </property> + <property name="windowTitle"> + <string>Links ToolBar</string> + </property> + <property name="iconSize"> + <size> + <width>42</width> + <height>36</height> + </size> + </property> + <attribute name="toolBarArea"> + <enum>TopToolBarArea</enum> + </attribute> + <attribute name="toolBarBreak"> + <bool>false</bool> + </attribute> + </widget> <action name="actionInstallMod"> <property name="icon"> <iconset resource="resources.qrc"> |
