summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-02 15:22:11 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-06-02 15:22:11 -0400
commit41ef9813dd7b3b7587afe8dfe3a16f2711200edb (patch)
tree5e7bad8eb03f0561fee7886b69a97fd58f954a1e /src
parent746e9c08e68ed7e44e6ef4e29b250c73b9c21440 (diff)
moved links to a new dedicated toolbar
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cpp56
-rw-r--r--src/mainwindow.h4
-rw-r--r--src/mainwindow.ui43
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">