diff options
Diffstat (limited to 'src/mainwindow.cpp')
| -rw-r--r-- | src/mainwindow.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index ce432196..cd74165e 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -67,6 +67,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include "shared/appconfig.h" #include "spawn.h" #include "statusbar.h" +#include "systemtraymanager.h" #include <bsainvalidation.h> #include <dataarchives.h> #include <safewritefile.h> @@ -238,7 +239,8 @@ MainWindow::MainWindow(Settings& settings, OrganizerCore& organizerCore, m_PluginContainer(pluginContainer), m_ArchiveListWriter(std::bind(&MainWindow::saveArchiveList, this)), m_LinkToolbar(nullptr), m_LinkDesktop(nullptr), m_LinkStartMenu(nullptr), - m_NumberOfProblems(0), m_ProblemsCheckRequired(false) + m_SystemTrayManager(nullptr), m_NumberOfProblems(0), + m_ProblemsCheckRequired(false) { // disables incredibly slow menu fade in effect that looks and feels like crap. // this was only happening to users with the windows @@ -265,6 +267,8 @@ MainWindow::MainWindow(Settings& settings, OrganizerCore& organizerCore, languageChange(settings.interface().language()); ui->statusBar->setup(ui, settings); + m_SystemTrayManager = new SystemTrayManager(this, ui->logDock); + { auto& ni = NexusInterface::instance(); @@ -477,6 +481,12 @@ MainWindow::MainWindow(Settings& settings, OrganizerCore& organizerCore, m_Tutorial.expose("espList", m_OrganizerCore.pluginList()); m_OrganizerCore.setUserInterface(this); + m_OrganizerCore.onFinishedRun([=](const QString, unsigned int) { + if (isHidden()) { + m_SystemTrayManager->restoreFromSystemTray(); + } + }); + connect(m_OrganizerCore.modList(), &ModList::showMessage, [=](auto&& message) { showMessage(message); }); @@ -1697,6 +1707,10 @@ void MainWindow::startExeAction() action->setEnabled(true); }); + if (itor->minimizeToSystemTray()) { + m_SystemTrayManager->minimizeToSystemTray(); + } + m_OrganizerCore.processRunner() .setFromExecutable(*itor) .setWaitForCompletion(ProcessRunner::TriggerRefresh) @@ -2271,6 +2285,10 @@ void MainWindow::on_startButton_clicked() ui->startButton->setEnabled(true); }); + if (selectedExecutable->minimizeToSystemTray()) { + m_SystemTrayManager->minimizeToSystemTray(); + } + m_OrganizerCore.processRunner() .setFromExecutable(*selectedExecutable) .setWaitForCompletion(ProcessRunner::TriggerRefresh) |
