#pragma once #include #include "components/popover.hpp" #include "gtkmm/box.h" #include "gtkmm/label.h" #include "gtkmm/overlay.h" #include "gtkmm/picture.h" #include "gtkmm/scale.h" #include "gtkmm/scrolledwindow.h" #include "services/dbus/mpris.hpp" class ControlCenter : public Popover { public: ControlCenter(std::string icon, std::string name); private: std::shared_ptr mprisController = MprisController::getInstance(); Gtk::Box container; Gtk::Box spotifyContainer; // image as background, artist, title Gtk::Overlay topContainer; Gtk::Picture backgroundImage; Gtk::Box infoContainer; Gtk::Label artistLabel; Gtk::Label titleLabel; // Gtk::Box seekBarContainer; Gtk::Label currentTimeLabel; Gtk::Scale seekBar; Gtk::Label totalTimeLabel; // playback controls Gtk::Box bottomContainer; Gtk::Button previousButton; Gtk::Button playPauseButton; Gtk::Button nextButton; Gtk::ScrolledWindow imageWrapper; void onSpotifyMprisUpdated(const MprisPlayer2Message &message); };