/* Одно уведомление о сообщениях: не берёт фокус, ждёт активности и скрывается через 10 секунд. * Новое сообщение заменяет содержимое и отменяет прежний отсчёт. activated передаёт ключ канала/DM владельцу. */ #pragma once #include #include 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; };