Files
librepods/linux/trayiconmanager.h
2025-04-22 15:11:30 +02:00

57 lines
1.5 KiB
C++

#include <QObject>
#include <QSystemTrayIcon>
#include "enums.h"
class QMenu;
class QAction;
class QActionGroup;
class TrayIconManager : public QObject
{
Q_OBJECT
Q_PROPERTY(bool notificationsEnabled READ notificationsEnabled WRITE setNotificationsEnabled NOTIFY notificationsEnabledChanged)
public:
explicit TrayIconManager(QObject *parent = nullptr);
void updateBatteryStatus(const QString &status);
void updateNoiseControlState(AirpodsTrayApp::Enums::NoiseControlMode);
void updateConversationalAwareness(bool enabled);
void showNotification(const QString &title, const QString &message);
bool notificationsEnabled() const { return m_notificationsEnabled; }
void setNotificationsEnabled(bool enabled)
{
if (m_notificationsEnabled != enabled)
{
m_notificationsEnabled = enabled;
emit notificationsEnabledChanged(enabled);
}
}
signals:
void notificationsEnabledChanged(bool enabled);
private slots:
void onTrayIconActivated(QSystemTrayIcon::ActivationReason reason);
private:
QSystemTrayIcon *trayIcon;
QMenu *trayMenu;
QAction *caToggleAction;
QActionGroup *noiseControlGroup;
bool m_notificationsEnabled = true;
void setupMenuActions();
void updateIconFromBattery(const QString &status);
signals:
void trayClicked();
void noiseControlChanged(AirpodsTrayApp::Enums::NoiseControlMode);
void conversationalAwarenessToggled(bool enabled);
};