You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.1 KiB
34 lines
1.1 KiB
/* Одно уведомление о сообщениях: не берёт фокус, ждёт активности и скрывается через 10 секунд. |
|
* Новое сообщение заменяет содержимое и отменяет прежний отсчёт. activated передаёт ключ канала/DM владельцу. */ |
|
#pragma once |
|
|
|
#include <QWidget> |
|
#include <QTimer> |
|
|
|
class QLabel; |
|
class QScreen; |
|
class UserActivityMonitor; |
|
|
|
class MessageNotification : public QWidget { |
|
Q_OBJECT |
|
public: |
|
MessageNotification(); |
|
~MessageNotification() override; |
|
void showMessage(const QString& target, const QString& sender, const QString& channel, |
|
const QRect& trayGeometry, QScreen* preferredScreen = nullptr); |
|
void dismiss(const char* reason); |
|
|
|
signals: |
|
void activated(const QString& target); |
|
|
|
protected: |
|
void mouseReleaseEvent(QMouseEvent* event) override; |
|
void hideEvent(QHideEvent* event) override; |
|
void closeEvent(QCloseEvent* event) override; |
|
|
|
private: |
|
QString m_target; |
|
QLabel* m_body = nullptr; |
|
UserActivityMonitor* m_activity = nullptr; |
|
QTimer m_hideTimer; |
|
};
|
|
|