summaryrefslogtreecommitdiff
path: root/src/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r--src/mainwindow.cpp20
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)