nice control center

This commit is contained in:
2026-02-03 23:03:20 +01:00
parent cddcc96aa9
commit 0463c37543
7 changed files with 235 additions and 32 deletions

View File

@@ -3,6 +3,7 @@
#include <cstdint>
#include <giomm.h>
#include <sigc++/sigc++.h>
#include <set>
#include <vector>
#include "services/dbus/messages.hpp"
@@ -21,6 +22,9 @@ class MprisController {
};
static std::shared_ptr<MprisController> getInstance();
static std::shared_ptr<MprisController> createForPlayer(const std::string &bus_name);
std::vector<std::string> get_registered_players() const;
void toggle_play();
void pause();
@@ -32,11 +36,13 @@ class MprisController {
sigc::signal<void(const MprisPlayer2Message &)> &signal_mpris_updated();
sigc::signal<void(PlaybackStatus)> &signal_playback_status_changed();
sigc::signal<void(int64_t)> &signal_playback_position_changed();
sigc::signal<void(bool)> &signal_can_seek_changed();
sigc::signal<void(const std::string &)> &signal_player_registered();
sigc::signal<void(const std::string &)> &signal_player_deregistered();
private:
MprisController();
explicit MprisController(const std::string &bus_name);
std::map<std::string, PlaybackStatus> playbackStatusMap = {
{"Playing", PlaybackStatus::Playing},
{"Paused", PlaybackStatus::Paused},
@@ -49,10 +55,12 @@ class MprisController {
Glib::RefPtr<Gio::DBus::Proxy> m_proxy;
Glib::RefPtr<Gio::DBus::Proxy> m_dbus_proxy;
std::string m_player_bus_name = "org.mpris.MediaPlayer2.spotify";
std::set<std::string> registeredPlayers;
sigc::signal<void(const MprisPlayer2Message &)> mprisUpdatedSignal;
sigc::signal<void(PlaybackStatus)> playbackStatusChangedSignal;
sigc::signal<void(int64_t)> playbackPositionChangedSignal;
sigc::signal<void(bool)> canSeekChangedSignal;
sigc::signal<void(const std::string &)> playerRegisteredSignal;
sigc::signal<void(const std::string &)> playerDeregisteredSignal;
@@ -60,6 +68,7 @@ class MprisController {
void signalNotification();
void emit_cached_playback_status();
void emit_cached_position();
void emit_cached_can_seek();
void on_dbus_signal(const Glib::ustring &sender_name,
const Glib::ustring &signal_name,
const Glib::VariantContainerBase &parameters);