ScreenTranslator/src/trayicon.h

60 lines
1.5 KiB
C
Raw Normal View History

2020-02-21 00:45:53 +07:00
#pragma once
#include "stfwd.h"
#include <QSystemTrayIcon>
class QAction;
class TrayIcon : public QObject
{
Q_OBJECT
public:
2020-03-21 17:03:58 +07:00
TrayIcon(Manager &manager, const Settings &settings);
2020-02-21 00:45:53 +07:00
~TrayIcon();
2020-03-21 17:03:58 +07:00
void updateSettings();
2020-02-21 00:45:53 +07:00
void blockActions(bool block);
void setTaskActionsEnabled(bool isEnabled);
void setCaptureLockedEnabled(bool isEnabled);
2020-02-21 00:45:53 +07:00
void setRepeatCaptureEnabled(bool isEnabled);
void setActiveTaskCount(int count);
void resetFatalError();
void showInformation(const QString &text);
void showError(const QString &text);
void showFatalError(const QString &text);
void showSuccess();
private:
enum class Icon { Idle, Success, Busy, Error };
enum Duration { Permanent, Temporal };
void setIcon(TrayIcon::Icon icon, Duration duration);
void handleIconClick(QSystemTrayIcon::ActivationReason reason);
QMenu *contextMenu();
void updateIcon();
void updateActions();
Manager &manager_;
2020-03-21 17:03:58 +07:00
const Settings &settings_;
2020-02-21 00:45:53 +07:00
std::unique_ptr<QSystemTrayIcon> tray_;
QAction *captureAction_{nullptr};
QAction *captureLockedAction_{nullptr};
2020-02-21 00:45:53 +07:00
QAction *repeatCaptureAction_{nullptr};
QAction *showLastAction_{nullptr};
QAction *clipboardAction_{nullptr};
QAction *settingsAction_{nullptr};
std::unique_ptr<QTimer> iconUpdateTimer_;
int activeTaskCount_{0};
bool isFatalError_{false};
Icon permanentIcon_{Icon::Idle};
bool gotTask_{false};
bool canRepeatCapture_{false};
bool isActionsBlocked_{false};
bool canCaptureLocked_{false};
2020-02-21 00:45:53 +07:00
};