#pragma once #include "../backend/qobuzbackend.hpp" #include "../widget/volumebutton.hpp" #include "../widget/clickableslider.hpp" #include "../util/icon.hpp" #include #include #include #include #include /// Main playback toolbar — mirrors MainToolBar from spotify-qt. class MainToolBar : public QToolBar { Q_OBJECT public: explicit MainToolBar(QobuzBackend *backend, QWidget *parent = nullptr); void setPlaying(bool playing); void setCurrentTrack(const QJsonObject &track); void updateProgress(quint64 position, quint64 duration); void setVolume(int volume); signals: void searchToggled(bool visible); private slots: void onPlayPause(bool checked); void onPrevious(); void onNext(); void onProgressReleased(); void onVolumeChanged(int volume); void onBackendStateChanged(const QString &state); void onTrackChanged(const QJsonObject &track); void onPositionChanged(quint64 position, quint64 duration); void onTrackFinished(); private: QobuzBackend *m_backend = nullptr; QAction *m_previous = nullptr; QAction *m_playPause = nullptr; QAction *m_next = nullptr; QAction *m_search = nullptr; ClickableSlider *m_progress = nullptr; QLabel *m_timeLabel = nullptr; QLabel *m_trackLabel = nullptr; VolumeButton *m_volume = nullptr; bool m_playing = false; bool m_seeking = false; // Playback queue (track IDs) for next/prev QVector m_queue; int m_queueIdx = -1; void addSpacerWidget(); };