[Linux] Organize code, implement media controller

This commit is contained in:
Tim Gromeyer
2025-03-08 21:22:53 +01:00
parent adfa11c660
commit 7522292c8b
6 changed files with 264 additions and 163 deletions

39
linux/mediacontroller.h Normal file
View File

@@ -0,0 +1,39 @@
#ifndef MEDIACONTROLLER_H
#define MEDIACONTROLLER_H
#include <QDBusInterface>
#include <QObject>
class QProcess;
class MediaController : public QObject {
Q_OBJECT
public:
enum MediaState { Playing, Paused, Stopped };
explicit MediaController(QObject *parent = nullptr);
~MediaController();
void initializeMprisInterface();
void handleEarDetection(const QString &status);
void followMediaChanges();
bool isActiveOutputDeviceAirPods();
void handleConversationalAwareness(const QByteArray &data);
void activateA2dpProfile();
void removeAudioOutputDevice();
void setConnectedDeviceMacAddress(const QString &macAddress);
Q_SIGNALS:
void mediaStateChanged(MediaState state);
private:
MediaState mediaStateFromPlayerctlOutput(const QString &output);
QDBusInterface *mprisInterface = nullptr;
QProcess *playerctlProcess = nullptr;
bool wasPausedByApp = false;
int initialVolume = -1;
QString connectedDeviceMacAddress;
};
#endif // MEDIACONTROLLER_H