-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtraycontroller.cpp
More file actions
76 lines (62 loc) · 2.05 KB
/
Copy pathtraycontroller.cpp
File metadata and controls
76 lines (62 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include "traycontroller.h"
#include "mainwindow.h"
#include <QAction>
#include <QCoreApplication>
#include <QIcon>
#include <QMenu>
#include <QSystemTrayIcon>
namespace {
QIcon trayIcon()
{
QIcon icon;
icon.addFile(QStringLiteral(":/resources/icons/sniptext-tray.png"));
icon.addFile(QStringLiteral(":/resources/icons/sniptext-tray@2x.png"));
#ifdef Q_OS_MACOS
// Treat the monochrome artwork as a template so macOS supplies the correct
// foreground color for light, dark, and highlighted menu-bar appearances.
icon.setIsMask(true);
#endif
return icon;
}
}
TrayController::TrayController(MainWindow *mainWindow, QObject *parent)
: QObject(parent)
, m_mainWindow(mainWindow)
, m_menu(new QMenu(mainWindow))
, m_trayIcon(new QSystemTrayIcon(this))
{
auto *captureAction = m_menu->addAction(tr("Capture Text"));
connect(captureAction, &QAction::triggered,
m_mainWindow, &MainWindow::startCapture,
Qt::QueuedConnection);
auto *settingsAction = m_menu->addAction(tr("Settings…"));
settingsAction->setMenuRole(QAction::NoRole);
connect(settingsAction, &QAction::triggered,
this, &TrayController::showMainWindow);
m_menu->addSeparator();
auto *quitAction = m_menu->addAction(tr("Quit"));
// Keep Quit in the tray menu instead of letting macOS move it into the
// application menu, which is not useful for a Dock-less menu-bar app.
quitAction->setMenuRole(QAction::NoRole);
connect(quitAction, &QAction::triggered,
QCoreApplication::instance(), &QCoreApplication::quit);
m_trayIcon->setIcon(trayIcon());
m_trayIcon->setToolTip(tr("SnipText"));
m_trayIcon->setContextMenu(m_menu);
}
bool TrayController::show()
{
if (!QSystemTrayIcon::isSystemTrayAvailable())
return false;
m_trayIcon->show();
return true;
}
void TrayController::showMainWindow()
{
if (m_mainWindow->isMinimized())
m_mainWindow->showNormal();
else
m_mainWindow->show();
m_mainWindow->raise();
m_mainWindow->activateWindow();
}