Skip to content
Snippets Groups Projects
Commit ac503776 authored by Andreas Traczyk's avatar Andreas Traczyk
Browse files

mainview: implement systray icon and runguard

- adds a systray icon with and exit option when the app starts
- removes the systray icon when the app exits
- restores the app when a second instance is run

Change-Id: I81e4552bdf0ce76a520cbae90e519efff0b13495
parent 325c46d2
No related branches found
No related tags found
No related merge requests found
......@@ -123,4 +123,14 @@ ApplicationWindow {
duration: 500
}
}
Connections {
target: ClientWrapper.lrcInstance
onRestoreAppRequested: {
if (mainViewLoader.item)
mainViewLoader.item.show()
else
wizardView.show()
}
}
}
......@@ -444,6 +444,7 @@ public:
signals:
void accountListChanged();
void currentAccountChanged();
void restoreAppRequested();
private:
LRCInstance(migrateCallback willMigrateCb = {}, migrateCallback didMigrateCb = {})
......
......@@ -58,7 +58,9 @@
#include "videoformatresolutionmodel.h"
#include "videoinputdevicemodel.h"
#include <QAction>
#include <QFontDatabase>
#include <QMenu>
#include <QQmlContext>
#include <QtWebEngine>
......@@ -455,5 +457,28 @@ MainApplication::applicationSetup()
*/
qmlInitialization();
/*
* Systray menu.
*/
GlobalSystemTray& sysIcon = GlobalSystemTray::instance();
sysIcon.setIcon(QIcon(":images/jami.png"));
QMenu* systrayMenu = new QMenu();
QAction* exitAction = new QAction(tr("Exit"), this);
connect(exitAction, &QAction::triggered,
[this] {
QCoreApplication::exit();
});
connect(&sysIcon, &QSystemTrayIcon::activated,
[this](QSystemTrayIcon::ActivationReason reason) {
emit LRCInstance::instance().restoreAppRequested();
});
systrayMenu->addAction(exitAction);
sysIcon.setContextMenu(systrayMenu);
sysIcon.show();
return true;
}
......@@ -18,6 +18,9 @@
// Based on: https://stackoverflow.com/a/28172162
#include "runguard.h"
#include "lrcinstance.h"
#include <QCryptographicHash>
namespace {
......@@ -52,9 +55,7 @@ RunGuard::~RunGuard()
void
RunGuard::tryRestorePrimaryInstance()
{
/*
* TODO: relaunch application
*/
emit LRCInstance::instance().restoreAppRequested();
}
bool
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment