1
1
#include " MainWindow.h"
2
2
#include " widgets/InputWidget.h"
3
3
#include < QScrollArea>
4
+ #include < QCloseEvent>
4
5
5
6
MainWindow::MainWindow (QWidget *parent)
6
7
: QMainWindow(parent)
@@ -22,6 +23,28 @@ MainWindow::MainWindow(QWidget *parent)
22
23
area->horizontalScrollBar ()->setVisible (false );
23
24
area->setWidget (centralWidget);
24
25
26
+ setWindowIcon (QIcon (" :/images/timer.png" ));
27
+
28
+ QAction* showHideAction =
29
+ new QAction (" &Show/Hide Application Window" , this );
30
+
31
+ connect (showHideAction, &QAction::triggered,
32
+ this , &MainWindow::showHideWindow);
33
+
34
+ QAction* quitAction = new QAction (" &Quit" , this );
35
+ connect (quitAction, &QAction::triggered,
36
+ qApp, &QApplication::quit);
37
+
38
+ trayIconMenu = new QMenu (this );
39
+ trayIconMenu->addAction (showHideAction);
40
+ trayIconMenu->addAction (quitAction);
41
+
42
+ trayIcon = new QSystemTrayIcon (this );
43
+ trayIcon->setContextMenu (trayIconMenu);
44
+ trayIcon->setToolTip (" Timer app" );
45
+ trayIcon->setIcon (QIcon (" :/images/timer.png" ));
46
+ trayIcon->show ();
47
+
25
48
setCentralWidget (area);
26
49
}
27
50
@@ -35,6 +58,11 @@ void MainWindow::addButtonClicked()
35
58
void MainWindow::replaceWidget (QWidget* oldWidget,
36
59
QWidget* newWidget)
37
60
{
61
+ if (!this ->isVisible ())
62
+ {
63
+ show ();
64
+ }
65
+
38
66
auto old = layout->replaceWidget (oldWidget, newWidget, Qt::FindDirectChildrenOnly)->widget ();
39
67
40
68
if (old == nullptr )
@@ -63,6 +91,38 @@ void MainWindow::showMessageBox(QString message)
63
91
msg.exec ();
64
92
}
65
93
94
+ void MainWindow::showHideWindow ()
95
+ {
96
+ setVisible (!isVisible ());
97
+ }
98
+ void MainWindow::showEvent (QShowEvent* event)
99
+ {
100
+ QMainWindow::showEvent (event);
101
+
102
+ QSettings settings (" MyCompany" , " MyApp" );
103
+ this ->restoreGeometry (settings.value (" geometry" ).toByteArray ());
104
+ this ->restoreState (settings.value (" windowState" ).toByteArray ());
105
+ }
106
+
107
+ void MainWindow::hideEvent (QHideEvent* event)
108
+ {
109
+ QMainWindow::hideEvent (event);
110
+
111
+ QSettings settings (" MyCompany" , " MyApp" );
112
+ settings.setValue (" geometry" , saveGeometry ());
113
+ settings.setValue (" windowState" , saveState ());
114
+ }
115
+
116
+ void MainWindow::closeEvent (QCloseEvent* event)
117
+ {
118
+ QMainWindow::closeEvent (event);
119
+
120
+ if (this ->isVisible ()) {
121
+ hide ();
122
+ }
123
+ event->ignore ();
124
+ }
125
+
66
126
MainWindow::~MainWindow ()
67
127
{
68
128
}
0 commit comments