2016-08-30 20:01:07 +02:00
|
|
|
#ifndef TRAY_MENU_H
|
|
|
|
#define TRAY_MENU_H
|
|
|
|
|
|
|
|
#include <QMenu>
|
|
|
|
|
|
|
|
namespace QtGui {
|
|
|
|
|
2016-09-24 16:19:23 +02:00
|
|
|
class TrayIcon;
|
2016-08-30 20:01:07 +02:00
|
|
|
class TrayWidget;
|
|
|
|
|
2017-05-01 03:34:43 +02:00
|
|
|
class TrayMenu : public QMenu {
|
2016-08-30 20:01:07 +02:00
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
2023-02-18 21:27:09 +01:00
|
|
|
enum class WindowType {
|
|
|
|
Popup,
|
|
|
|
NormalWindow,
|
|
|
|
CustomWindow,
|
|
|
|
};
|
|
|
|
|
2022-10-07 01:06:13 +02:00
|
|
|
explicit TrayMenu(TrayIcon *trayIcon = nullptr, QWidget *parent = nullptr);
|
2016-08-30 20:01:07 +02:00
|
|
|
|
2018-10-10 21:26:46 +02:00
|
|
|
QSize sizeHint() const override;
|
2018-04-02 20:26:00 +02:00
|
|
|
TrayWidget &widget();
|
2018-05-01 22:27:03 +02:00
|
|
|
const TrayWidget &widget() const;
|
2016-09-24 16:19:23 +02:00
|
|
|
TrayIcon *icon();
|
2023-02-18 21:27:09 +01:00
|
|
|
WindowType windowType() const;
|
|
|
|
void setWindowType(int windowType);
|
|
|
|
void setWindowType(WindowType windowType);
|
2016-08-30 20:01:07 +02:00
|
|
|
|
2020-03-08 13:50:32 +01:00
|
|
|
public Q_SLOTS:
|
2019-06-22 17:28:09 +02:00
|
|
|
void showUsingPositioningSettings();
|
2022-10-07 01:06:13 +02:00
|
|
|
|
|
|
|
protected:
|
|
|
|
void mouseReleaseEvent(QMouseEvent *) override;
|
|
|
|
void mousePressEvent(QMouseEvent *) override;
|
2022-12-10 12:07:06 +01:00
|
|
|
void paintEvent(QPaintEvent *) override;
|
2023-02-18 21:27:09 +01:00
|
|
|
void focusOutEvent(QFocusEvent *) override;
|
2016-12-26 19:50:10 +01:00
|
|
|
|
2016-08-30 20:01:07 +02:00
|
|
|
private:
|
|
|
|
TrayWidget *m_trayWidget;
|
2016-09-24 16:19:23 +02:00
|
|
|
TrayIcon *m_trayIcon;
|
2023-02-18 21:27:09 +01:00
|
|
|
WindowType m_windowType;
|
2016-08-30 20:01:07 +02:00
|
|
|
};
|
|
|
|
|
2018-04-02 20:26:00 +02:00
|
|
|
inline TrayWidget &TrayMenu::widget()
|
2016-08-30 20:01:07 +02:00
|
|
|
{
|
2018-04-02 20:26:00 +02:00
|
|
|
return *m_trayWidget;
|
2016-08-30 20:01:07 +02:00
|
|
|
}
|
|
|
|
|
2018-05-01 22:27:03 +02:00
|
|
|
inline const TrayWidget &TrayMenu::widget() const
|
|
|
|
{
|
|
|
|
return *m_trayWidget;
|
|
|
|
}
|
|
|
|
|
2016-09-24 16:19:23 +02:00
|
|
|
inline TrayIcon *TrayMenu::icon()
|
|
|
|
{
|
|
|
|
return m_trayIcon;
|
|
|
|
}
|
2022-10-07 01:06:13 +02:00
|
|
|
|
2023-02-18 21:27:09 +01:00
|
|
|
inline TrayMenu::WindowType TrayMenu::windowType() const
|
2022-10-07 01:06:13 +02:00
|
|
|
{
|
2023-02-18 21:27:09 +01:00
|
|
|
return m_windowType;
|
2022-10-07 01:06:13 +02:00
|
|
|
}
|
|
|
|
|
2017-09-17 21:48:15 +02:00
|
|
|
} // namespace QtGui
|
2016-08-30 20:01:07 +02:00
|
|
|
|
|
|
|
#endif // TRAY_MENU_H
|