Commit da571cf1 authored by Ronan Abhamon's avatar Ronan Abhamon

fix(app): many fixes

parent 07465fac
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#include <QMenu> #include <QMenu>
#include <QQmlApplicationEngine> #include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QQuickView> #include <QQuickView>
#include <QSystemTrayIcon> #include <QSystemTrayIcon>
#include <QtDebug> #include <QtDebug>
...@@ -11,26 +12,30 @@ ...@@ -11,26 +12,30 @@
// =================================================================== // ===================================================================
int exec (App &app, QQmlApplicationEngine &engine) { int exec (App &app, QQmlApplicationEngine &engine) {
if (!QSystemTrayIcon::isSystemTrayAvailable()) if (QSystemTrayIcon::isSystemTrayAvailable())
qWarning() << "System tray not found on this system."; qWarning() << "System tray not found on this system.";
else {
QQuickWindow *root = qobject_cast<QQuickWindow *>(engine.rootObjects().at(0)); QQuickWindow *root = qobject_cast<QQuickWindow *>(engine.rootObjects().at(0));
QMenu *menu = new QMenu(); QMenu *menu = new QMenu();
QSystemTrayIcon *tray_icon = new QSystemTrayIcon(root); QSystemTrayIcon *tray_icon = new QSystemTrayIcon(root);
// Right click actions. // Warning: Add global context trayIcon for all views!
engine.rootContext()->setContextProperty("trayIcon", tray_icon);
// trayIcon: Right click actions.
QAction *quitAction = new QAction(QObject::tr("Quit"), root); QAction *quitAction = new QAction(QObject::tr("Quit"), root);
root->connect(quitAction, &QAction::triggered, qApp, &QCoreApplication::quit); root->connect(quitAction, &QAction::triggered, qApp, &QCoreApplication::quit);
QAction *restoreAction = new QAction(QObject::tr("Restore"), root); QAction *restoreAction = new QAction(QObject::tr("Restore"), root);
root->connect(restoreAction, &QAction::triggered, root, &QQuickWindow::showNormal); root->connect(restoreAction, &QAction::triggered, root, &QQuickWindow::showNormal);
// Left click action. // trayIcon: Left click action.
root->connect(tray_icon, &QSystemTrayIcon::activated, [&root](QSystemTrayIcon::ActivationReason reason) { root->connect(tray_icon, &QSystemTrayIcon::activated, [&root](QSystemTrayIcon::ActivationReason reason) {
if (reason == QSystemTrayIcon::DoubleClick) if (reason == QSystemTrayIcon::DoubleClick)
root->showNormal(); root->showNormal();
}); });
// Build trayIcon menu.
menu->addAction(restoreAction); menu->addAction(restoreAction);
menu->addSeparator(); menu->addSeparator();
menu->addAction(quitAction); menu->addAction(quitAction);
...@@ -38,8 +43,8 @@ int exec (App &app, QQmlApplicationEngine &engine) { ...@@ -38,8 +43,8 @@ int exec (App &app, QQmlApplicationEngine &engine) {
tray_icon->setContextMenu(menu); tray_icon->setContextMenu(menu);
tray_icon->setIcon(QIcon(":/imgs/linphone.png")); tray_icon->setIcon(QIcon(":/imgs/linphone.png"));
tray_icon->show(); tray_icon->show();
}
// RUN.
return app.exec(); return app.exec();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment