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 { ...@@ -123,4 +123,14 @@ ApplicationWindow {
duration: 500 duration: 500
} }
} }
Connections {
target: ClientWrapper.lrcInstance
onRestoreAppRequested: {
if (mainViewLoader.item)
mainViewLoader.item.show()
else
wizardView.show()
}
}
} }
...@@ -444,6 +444,7 @@ public: ...@@ -444,6 +444,7 @@ public:
signals: signals:
void accountListChanged(); void accountListChanged();
void currentAccountChanged(); void currentAccountChanged();
void restoreAppRequested();
private: private:
LRCInstance(migrateCallback willMigrateCb = {}, migrateCallback didMigrateCb = {}) LRCInstance(migrateCallback willMigrateCb = {}, migrateCallback didMigrateCb = {})
......
...@@ -58,7 +58,9 @@ ...@@ -58,7 +58,9 @@
#include "videoformatresolutionmodel.h" #include "videoformatresolutionmodel.h"
#include "videoinputdevicemodel.h" #include "videoinputdevicemodel.h"
#include <QAction>
#include <QFontDatabase> #include <QFontDatabase>
#include <QMenu>
#include <QQmlContext> #include <QQmlContext>
#include <QtWebEngine> #include <QtWebEngine>
...@@ -455,5 +457,28 @@ MainApplication::applicationSetup() ...@@ -455,5 +457,28 @@ MainApplication::applicationSetup()
*/ */
qmlInitialization(); 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; return true;
} }
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
// Based on: https://stackoverflow.com/a/28172162 // Based on: https://stackoverflow.com/a/28172162
#include "runguard.h" #include "runguard.h"
#include "lrcinstance.h"
#include <QCryptographicHash> #include <QCryptographicHash>
namespace { namespace {
...@@ -52,9 +55,7 @@ RunGuard::~RunGuard() ...@@ -52,9 +55,7 @@ RunGuard::~RunGuard()
void void
RunGuard::tryRestorePrimaryInstance() RunGuard::tryRestorePrimaryInstance()
{ {
/* emit LRCInstance::instance().restoreAppRequested();
* TODO: relaunch application
*/
} }
bool bool
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment