swift
systemtraywindow.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2014 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_GUI_ENABLEFORSYSTEMTRAY_H
7 #define SWIFT_GUI_ENABLEFORSYSTEMTRAY_H
8 
9 #include <QFlag>
10 #include <QIcon>
11 #include <QMainWindow>
12 #include <QObject>
13 #include <QString>
14 #include <QSystemTrayIcon>
15 
16 #include "gui/swiftguiexport.h"
17 
18 class QAction;
19 class QCloseEvent;
20 class QEvent;
21 class QMenu;
22 class QWidget;
23 
24 namespace swift::gui
25 {
26 
28  class SWIFT_GUI_EXPORT CSystemTrayWindow : public QMainWindow
29  {
30  Q_OBJECT
31 
32  public:
35  {
36  MinimizeToTray = 0x0,
37  QuitOnClose = 0x1,
38  AskOnClose = 0x2
39  };
40  Q_DECLARE_FLAGS(SystemTrayMode, SystemTrayFlag)
41 
42 
43  CSystemTrayWindow(const QIcon &icon, QWidget *parent = nullptr);
44 
46  void setSystemTrayMode(SystemTrayMode mode);
47 
49  void setSystemTrayIcon(const QIcon &icon);
50 
52  void setSystemTrayToolTip(const QString &tooltip);
53 
54  protected slots:
55 
57  void ps_activateWindow(QSystemTrayIcon::ActivationReason reason);
58 
60  void ps_showMessage(const QString &title, const QString &message,
61  QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information,
62  int millisecondsTimeoutHint = 10000);
63 
64  protected:
66  virtual void changeEvent(QEvent *event) override;
67 
69  virtual void closeEvent(QCloseEvent *event) override;
70 
71  private:
72  void createActions();
73  void createTrayIcon(const QIcon &icon);
74 
75  SystemTrayMode m_systemTrayMode =
76  SystemTrayMode { MinimizeToTray | QuitOnClose };
77 
78  // System Tray actions
79  QAction *m_actionRestore = nullptr;
80  QAction *m_actionQuit = nullptr;
81  QSystemTrayIcon *m_systemTrayIcon = nullptr;
82  QMenu *m_trayIconMenu = nullptr;
83  };
84 
85 } // namespace swift::gui
86 
87 Q_DECLARE_OPERATORS_FOR_FLAGS(swift::gui::CSystemTrayWindow::SystemTrayMode)
88 
89 #endif // SWIFT_GUI_ENABLEFORSYSTEMTRAY_H
QDialog which can minimize to system tray.
GUI related classes.
#define SWIFT_GUI_EXPORT
Export a class or function from the library.