QtPass 1.5.1
Multi-platform GUI for pass, the standard unix password manager.
Loading...
Searching...
No Matches
trayicon.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2016 Anne Jan Brouwer
2// SPDX-License-Identifier: GPL-3.0-or-later
3#include "trayicon.h"
4#include <QAction>
5#include <QApplication>
6#include <QMainWindow>
7#include <QMenu>
8
9#ifdef QT_DEBUG
10#include "debughelper.h"
11#endif
12
18TrayIcon::TrayIcon(QMainWindow *parent)
19 : showAction(nullptr), hideAction(nullptr), minimizeAction(nullptr),
20 maximizeAction(nullptr), restoreAction(nullptr), quitAction(nullptr),
21 sysTrayIcon(nullptr), trayIconMenu(nullptr), isAllocated(false) {
22 parentwin = parent;
23
24 if (QSystemTrayIcon::isSystemTrayAvailable()) {
25 createActions();
26 createTrayIcon();
27
28 sysTrayIcon->setIcon(
29 QIcon::fromTheme("qtpass-tray", QIcon(":/artwork/icon.png")));
30
31 sysTrayIcon->show();
32
33 QObject::connect(sysTrayIcon, &QSystemTrayIcon::activated, this,
35
36 isAllocated = true;
37 }
38#ifdef QT_DEBUG
39 // NOLINTNEXTLINE(readability/braces)
40 else {
41 dbg() << "No tray icon for this OS possibly also not show options?";
42 }
43#endif
44}
45
50void TrayIcon::setVisible(bool visible) {
51 if (visible) {
52 parentwin->show();
53 } else {
54 parentwin->hide();
55 }
56}
57
61auto TrayIcon::getIsAllocated() -> bool { return isAllocated; }
62
66void TrayIcon::createActions() {
67 showAction = new QAction(tr("&Show"), this);
68 connect(showAction, &QAction::triggered, parentwin, &QWidget::show);
69 hideAction = new QAction(tr("&Hide"), this);
70 connect(hideAction, &QAction::triggered, parentwin, &QWidget::hide);
71
72 minimizeAction = new QAction(tr("Mi&nimize"), this);
73 connect(minimizeAction, &QAction::triggered, parentwin,
74 &QWidget::showMinimized);
75 maximizeAction = new QAction(tr("Ma&ximize"), this);
76 connect(maximizeAction, &QAction::triggered, parentwin,
77 &QWidget::showMaximized);
78 restoreAction = new QAction(tr("&Restore"), this);
79 connect(restoreAction, &QAction::triggered, parentwin, &QWidget::showNormal);
80
81 quitAction = new QAction(tr("&Quit"), this);
82#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
83#pragma GCC diagnostic push
84#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
85#endif
86 connect(quitAction, &QAction::triggered, qApp, &QApplication::quit);
87#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
88#pragma GCC diagnostic pop
89#endif
90}
91
95void TrayIcon::createTrayIcon() {
96 trayIconMenu = new QMenu(this);
97 trayIconMenu->addAction(showAction);
98 trayIconMenu->addAction(hideAction);
99 trayIconMenu->addAction(minimizeAction);
100 trayIconMenu->addAction(maximizeAction);
101 trayIconMenu->addAction(restoreAction);
102 trayIconMenu->addSeparator();
103 trayIconMenu->addAction(quitAction);
104
105 sysTrayIcon = new QSystemTrayIcon(this);
106 sysTrayIcon->setContextMenu(trayIconMenu);
107}
108
113 if (parentwin->isVisible()) {
114 parentwin->hide();
115 } else {
116 parentwin->show();
117 }
118}
119
124void TrayIcon::iconActivated(QSystemTrayIcon::ActivationReason reason) {
125 switch (reason) {
126 case QSystemTrayIcon::Trigger:
127 case QSystemTrayIcon::DoubleClick:
129 break;
130 case QSystemTrayIcon::MiddleClick:
131 showMessage("test", "test msg", 1000);
132 break;
133 default: {
134 }
135 }
136}
137
144void TrayIcon::showMessage(const QString &title, const QString &msg, int time) {
145 sysTrayIcon->showMessage(title, msg, QSystemTrayIcon::Information, time);
146}
void showHideParent()
TrayIcon::showHideParent toggle app visibility.
Definition trayicon.cpp:112
void iconActivated(QSystemTrayIcon::ActivationReason reason)
TrayIcon::iconActivated you clicked on the trayicon.
Definition trayicon.cpp:124
void showMessage(const QString &title, const QString &msg, int time)
TrayIcon::showMessage show a systray message for notification.
Definition trayicon.cpp:144
TrayIcon(QMainWindow *parent)
TrayIcon::TrayIcon use a (system) tray icon with a nice QtPass logo on it (currently) only Quits.
Definition trayicon.cpp:18
void setVisible(bool visible)
TrayIcon::setVisible show or hide the icon.
Definition trayicon.cpp:50
auto getIsAllocated() -> bool
TrayIcon::getIsAllocated return if TrayIcon is allocated.
Definition trayicon.cpp:61
#define dbg()
Definition debughelper.h:9