-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmainwindow.cpp
69 lines (64 loc) · 2.05 KB
/
mainwindow.cpp
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
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include "windowops.h"
#include <QDir>
#include <QMenu>
MainWindow::MainWindow(QWidget *parent):
MainWindowWithSettings(parent),
ui(new Ui::MainWindow),
trayIcon(new QSystemTrayIcon(QIcon(":/mainicon.png"), this))
{
ui->setupUi(this);
loadSettings();
trayIcon->setToolTip("Click to arrange windows");
trayIcon->show();
connect(trayIcon, &QSystemTrayIcon::activated, this, &MainWindow::iconActivated);
auto trayIconMenu = new QMenu(this);
connect(ui->actionQuit_and_unregister, &QAction::triggered, this, &MainWindow::quitAndUnregister);
connect(ui->actionQuit, &QAction::triggered, []{ QCoreApplication::instance()->quit(); });
trayIconMenu->addAction(ui->actionAuto_arrange_windows);
trayIconMenu->addAction(ui->actionQuit);
trayIconMenu->addAction(ui->actionQuit_and_unregister);
trayIcon->setContextMenu(trayIconMenu);
registerForStartup();
timer.setInterval(1000);
connect(&timer, &QTimer::timeout, []{processAllWindows();});
}
MainWindow::~MainWindow()
{
saveSettings();
delete ui;
}
void MainWindow::on_actionAuto_arrange_windows_toggled(bool value)
{
if(value) timer.start();
else timer.stop();
}
void MainWindow::on_maxIncrease_valueChanged(int v)
{
windowops_maxIncrease = v;
}
void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason)
{
switch(reason)
{
case QSystemTrayIcon::ActivationReason::Trigger:
processAllWindows();
break;
case QSystemTrayIcon::ActivationReason::DoubleClick:
{
auto iconGeometry = trayIcon->geometry();
auto w = geometry().width();
auto h = geometry().height();
auto x = iconGeometry.x() + iconGeometry.width() / 2 - w / 2;
auto y = iconGeometry.y() - h;
setGeometry(x, y, w, h);
if(isHidden()) show(); else hide();
break;
}
case QSystemTrayIcon::ActivationReason::Context:
break;
default:
break;
}
}