Mercurial > minori
annotate include/gui/pages/now_playing.h @ 383:27c462bc7815
make the "Now Playing" page actually work
| author | Paper <paper@tflc.us> |
|---|---|
| date | Thu, 06 Nov 2025 07:10:58 -0500 |
| parents | abd956418fe9 |
| children | e89901683d72 |
| rev | line source |
|---|---|
|
261
3ec7804abf17
include: make header guards more sane
Paper <paper@paper.us.eu.org>
parents:
258
diff
changeset
|
1 #ifndef MINORI_GUI_PAGES_NOW_PLAYING_H_ |
|
3ec7804abf17
include: make header guards more sane
Paper <paper@paper.us.eu.org>
parents:
258
diff
changeset
|
2 #define MINORI_GUI_PAGES_NOW_PLAYING_H_ |
| 85 | 3 |
|
236
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
4 #include "gui/widgets/anime_info.h" |
|
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
5 #include "gui/widgets/poster.h" |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
6 #include "gui/widgets/sidebar.h" |
|
236
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
7 #include "gui/widgets/text.h" |
|
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
8 |
| 64 | 9 #include <QFrame> |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
10 #include <QStackedWidget> |
|
375
abd956418fe9
gui/pages/now_playing: automatically update progress when the episode is "finished"
Paper <paper@tflc.us>
parents:
348
diff
changeset
|
11 #include <QTimer> |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
12 |
| 258 | 13 #include <memory> |
| 80 | 14 #include <unordered_map> |
|
383
27c462bc7815
make the "Now Playing" page actually work
Paper <paper@tflc.us>
parents:
375
diff
changeset
|
15 #include <cstdint> |
| 2 | 16 |
| 85 | 17 |
| 83 | 18 namespace Anime { |
| 19 class Anime; | |
| 20 } | |
| 64 | 21 |
| 154 | 22 namespace anitomy { |
| 23 class Elements; | |
| 24 } | |
| 25 | |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
26 /* -------------------------------------------------------------- */ |
|
375
abd956418fe9
gui/pages/now_playing: automatically update progress when the episode is "finished"
Paper <paper@tflc.us>
parents:
348
diff
changeset
|
27 /* this is kinda ugly. */ |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
28 |
|
236
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
29 namespace NowPlayingPages { |
|
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
30 |
|
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
31 class Default : public QWidget { |
| 258 | 32 Q_OBJECT |
|
236
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
33 |
| 258 | 34 public: |
| 35 Default(QWidget* parent = nullptr); | |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
36 |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
37 private: |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
38 TextWidgets::Title title_; |
|
236
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
39 }; |
|
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
40 |
|
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
41 class Playing : public QWidget { |
| 258 | 42 Q_OBJECT |
|
236
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
43 |
| 258 | 44 public: |
| 45 Playing(QWidget* parent = nullptr); | |
| 46 void SetPlayingAnime(const Anime::Anime& anime, const anitomy::Elements& info); | |
| 47 int GetPlayingAnime(); | |
|
375
abd956418fe9
gui/pages/now_playing: automatically update progress when the episode is "finished"
Paper <paper@tflc.us>
parents:
348
diff
changeset
|
48 int GetPlayingEpisode(); |
|
236
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
49 |
| 258 | 50 private: |
| 51 int _id = 0; | |
| 52 int _episode = 0; | |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
53 |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
54 QWidget _main; |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
55 TextWidgets::Title _title; |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
56 AnimeInfoWidget _info; |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
57 |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
58 QWidget _sidebar; |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
59 Poster _poster; |
|
236
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
60 }; |
|
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
61 |
| 258 | 62 } // namespace NowPlayingPages |
|
236
4d461ef7d424
HUGE UPDATE: convert build system to autotools
Paper <mrpapersonic@gmail.com>
parents:
154
diff
changeset
|
63 |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
64 /* -------------------------------------------------------------- */ |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
65 /* the full page */ |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
66 |
|
95
8043152ef9d4
include: set classes as final where appropriate
Paper <mrpapersonic@gmail.com>
parents:
85
diff
changeset
|
67 class NowPlayingPage final : public QFrame { |
| 258 | 68 Q_OBJECT |
| 7 | 69 |
| 258 | 70 public: |
| 71 NowPlayingPage(QWidget* parent = nullptr); | |
| 72 void SetDefault(); | |
| 73 void SetPlaying(const Anime::Anime& anime, const anitomy::Elements& episodes); | |
| 74 int GetPlayingId(); | |
| 64 | 75 |
|
375
abd956418fe9
gui/pages/now_playing: automatically update progress when the episode is "finished"
Paper <paper@tflc.us>
parents:
348
diff
changeset
|
76 private slots: |
|
abd956418fe9
gui/pages/now_playing: automatically update progress when the episode is "finished"
Paper <paper@tflc.us>
parents:
348
diff
changeset
|
77 void TimerDone(); |
|
abd956418fe9
gui/pages/now_playing: automatically update progress when the episode is "finished"
Paper <paper@tflc.us>
parents:
348
diff
changeset
|
78 |
| 258 | 79 private: |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
80 enum class Subpages { |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
81 Default = 0, |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
82 Playing = 1, |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
83 }; |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
84 |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
85 QStackedWidget stack_; |
|
383
27c462bc7815
make the "Now Playing" page actually work
Paper <paper@tflc.us>
parents:
375
diff
changeset
|
86 /* Time the episode started playing (roughly) |
|
27c462bc7815
make the "Now Playing" page actually work
Paper <paper@tflc.us>
parents:
375
diff
changeset
|
87 * This is -1 if there is no episode playing */ |
|
27c462bc7815
make the "Now Playing" page actually work
Paper <paper@tflc.us>
parents:
375
diff
changeset
|
88 std::int64_t timer_ = -1; |
|
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
89 |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
90 NowPlayingPages::Default default_; |
|
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
261
diff
changeset
|
91 NowPlayingPages::Playing playing_; |
| 2 | 92 }; |
| 93 | |
|
261
3ec7804abf17
include: make header guards more sane
Paper <paper@paper.us.eu.org>
parents:
258
diff
changeset
|
94 #endif // MINORI_GUI_PAGES_NOW_PLAYING_H_ |
