[Linux] Simplify code, implement tray manager

Implement tray manager

Bug fixes

Bug fixes
This commit is contained in:
Tim Gromeyer
2025-03-10 10:48:25 +01:00
committed by Tim Gromeyer
parent e72b4a116e
commit 1946857ca5
7 changed files with 289 additions and 239 deletions

40
linux/trayiconmanager.h Normal file
View File

@@ -0,0 +1,40 @@
#include <QObject>
#include <QSystemTrayIcon>
#include "enums.h"
class QMenu;
class QAction;
class QActionGroup;
class TrayIconManager : public QObject
{
Q_OBJECT
public:
explicit TrayIconManager(QObject *parent = nullptr);
void updateBatteryStatus(const QString &status);
void updateNoiseControlState(AirpodsTrayApp::Enums::NoiseControlMode);
void updateConversationalAwareness(bool enabled);
private slots:
void onTrayIconActivated(QSystemTrayIcon::ActivationReason reason);
private:
QSystemTrayIcon *trayIcon;
QMenu *trayMenu;
QAction *caToggleAction;
QActionGroup *noiseControlGroup;
void setupMenuActions();
void updateIconFromBattery(const QString &status);
signals:
void trayClicked();
void noiseControlChanged(AirpodsTrayApp::Enums::NoiseControlMode);
void conversationalAwarenessToggled(bool enabled);
};