1 #pragma once
2 
3 #include "lib/settings.hpp"
4 
5 #include "menu/mainmenu.hpp"
6 #include "spotify/spotify.hpp"
7 #include "util/icon.hpp"
8 #include "widget/volumebutton.hpp"
9 #include "widget/clickableslider.hpp"
10 #include "widget/dragarea.hpp"
11 
12 #include <QToolBar>
13 #include <QToolButton>
14 #include <QSizeGrip>
15 
16 class MainToolBar: public QToolBar
17 {
18 Q_OBJECT
19 
20 public:
21 	MainToolBar(lib::spt::api &spotify, lib::settings &settings,
22 		const lib::http_client &httpClient, lib::cache &cache, QWidget *parent);
23 
24 	void showTitleBarButtons(bool show);
25 	void setPlaying(bool playing);
26 	void setProgress(int current, int duration);
27 	void setProgress(const lib::spt::playback &playback);
28 	void setVolume(int volume);
29 	void setRepeat(lib::repeat_state state);
30 	void setShuffle(bool shuffle);
31 	void setPositionFont(const QFont &font);
32 	void setSearchChecked(bool checked);
33 
34 protected:
35 	void resizeEvent(QResizeEvent *event) override;
36 
37 private:
38 	void onPlayPause(bool checked);
39 	void onPrevious(bool checked);
40 	void onNext(bool checked);
41 	void onProgressReleased();
42 	void onShuffle(bool checked);
43 	void onRepeat(bool checked);
44 	void onMinimize(bool checked);
45 
46 	QAction *search = nullptr;
47 	QAction *playPause = nullptr;
48 	QWidget *parent = nullptr;
49 	QSlider *progress = nullptr;
50 	QLabel *position = nullptr;
51 	QAction *shuffle = nullptr;
52 	QAction *repeat = nullptr;
53 	VolumeButton *volumeButton = nullptr;
54 
55 	lib::spt::api &spotify;
56 	lib::settings &settings;
57 
58 	DragArea *leftSpacer = nullptr;
59 	DragArea *rightSpacer = nullptr;
60 
61 	QAction *titleBarSeparator = nullptr;
62 	QAction *minimize = nullptr;
63 	QAction *close = nullptr;
64 };
65