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