From 93c4aeea5f26d174c545ea578c60dd0de0ae2bcd Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Mon, 19 Sep 2016 10:21:17 +0200 Subject: [PATCH] feat(app): close main window reduce app in notifications area --- tests/linphone.pro | 1 + tests/src/main.cpp | 49 ++++++++++++++++++++++++++-------------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/tests/linphone.pro b/tests/linphone.pro index 59f427563..3a5a33afc 100644 --- a/tests/linphone.pro +++ b/tests/linphone.pro @@ -2,6 +2,7 @@ QT = core gui quick widgets quickcontrols2 TARGET = linphone TEMPLATE = app +CONFIG += c++11 SOURCES = \ src/app.cpp \ diff --git a/tests/src/main.cpp b/tests/src/main.cpp index 4b967b1c3..4bc4275fc 100644 --- a/tests/src/main.cpp +++ b/tests/src/main.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -9,26 +10,37 @@ // =================================================================== -void createSystemTrayIcon (QQmlApplicationEngine &engine) { - QObject *root = engine.rootObjects().at(0); - QMenu *menu = new QMenu(); - QSystemTrayIcon *tray_icon = new QSystemTrayIcon(root); +int exec (App &app, QQmlApplicationEngine &engine) { + if (!QSystemTrayIcon::isSystemTrayAvailable()) + qWarning() << "System tray not found on this system."; + else { + QQuickWindow *root = qobject_cast(engine.rootObjects().at(0)); + QMenu *menu = new QMenu(); + QSystemTrayIcon *tray_icon = new QSystemTrayIcon(root); - QAction *quitAction = new QAction(QObject::tr("Quit"), root); - root->connect(quitAction, &QAction::triggered, qApp, &QCoreApplication::quit); + // Right click actions. + QAction *quitAction = new QAction(QObject::tr("Quit"), root); + root->connect(quitAction, &QAction::triggered, qApp, &QCoreApplication::quit); - QAction *restoreAction = new QAction(QObject::tr("Restore"), root); - root->connect(restoreAction, SIGNAL(triggered()), root, SLOT(showNormal())); + QAction *restoreAction = new QAction(QObject::tr("Restore"), root); + root->connect(restoreAction, &QAction::triggered, root, &QQuickWindow::showNormal); - menu->addAction(restoreAction); - menu->addSeparator(); - menu->addAction(quitAction); + // Left click action. + root->connect(tray_icon, &QSystemTrayIcon::activated, [&root](QSystemTrayIcon::ActivationReason reason) { + if (reason == QSystemTrayIcon::DoubleClick) + root->showNormal(); + }); - tray_icon->setContextMenu(menu); - tray_icon->setIcon(QIcon(":/imgs/linphone.png")); - tray_icon->show(); + menu->addAction(restoreAction); + menu->addSeparator(); + menu->addAction(quitAction); - return; + tray_icon->setContextMenu(menu); + tray_icon->setIcon(QIcon(":/imgs/linphone.png")); + tray_icon->show(); + } + + return app.exec(); } int main (int argc, char *argv[]) { @@ -38,10 +50,5 @@ int main (int argc, char *argv[]) { if (engine.rootObjects().isEmpty()) return EXIT_FAILURE; - if (!QSystemTrayIcon::isSystemTrayAvailable()) - qWarning() << "System tray not found on this system."; - else - createSystemTrayIcon(engine); - - return app.exec(); + return exec(app, engine); }