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

/* Одно уведомление о сообщениях: не берёт фокус, ждёт активности и скрывается через 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;
};