Mercurial > minori
comparison src/gui/window.cpp @ 64:fe719c109dbc
*: update
1. add media tracking ability, and it displays info on the `now playing` page
2. the `now playing` page now actually shows something
3. renamed every page class to be more accurate to what it is
4. ...
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Sun, 01 Oct 2023 23:15:43 -0400 |
parents | 3d2decf093bb |
children | 2417121d894e |
comparison
equal
deleted
inserted
replaced
63:3d2decf093bb | 64:fe719c109dbc |
---|---|
1 #include "gui/window.h" | 1 #include "gui/window.h" |
2 #include "core/anime_db.h" | |
2 #include "core/config.h" | 3 #include "core/config.h" |
3 #include "core/session.h" | 4 #include "core/session.h" |
5 #include "core/strings.h" | |
4 #include "gui/dark_theme.h" | 6 #include "gui/dark_theme.h" |
5 #include "gui/dialog/about.h" | 7 #include "gui/dialog/about.h" |
6 #include "gui/dialog/settings.h" | 8 #include "gui/dialog/settings.h" |
7 #include "gui/pages/anime_list.h" | 9 #include "gui/pages/anime_list.h" |
8 #include "gui/pages/history.h" | 10 #include "gui/pages/history.h" |
11 #include "gui/pages/seasons.h" | 13 #include "gui/pages/seasons.h" |
12 #include "gui/pages/statistics.h" | 14 #include "gui/pages/statistics.h" |
13 #include "gui/pages/torrents.h" | 15 #include "gui/pages/torrents.h" |
14 #include "gui/widgets/sidebar.h" | 16 #include "gui/widgets/sidebar.h" |
15 #include "services/services.h" | 17 #include "services/services.h" |
18 #include "track/media.h" | |
16 #include <QActionGroup> | 19 #include <QActionGroup> |
17 #include <QApplication> | 20 #include <QApplication> |
21 #include <QDebug> | |
18 #include <QFile> | 22 #include <QFile> |
19 #include <QMainWindow> | 23 #include <QMainWindow> |
20 #include <QMenuBar> | 24 #include <QMenuBar> |
21 #include <QMessageBox> | 25 #include <QMessageBox> |
22 #include <QPlainTextEdit> | 26 #include <QPlainTextEdit> |
56 sidebar->AddItem(tr("Torrents"), SideBar::CreateIcon(":/icons/16x16/feed.png")); | 60 sidebar->AddItem(tr("Torrents"), SideBar::CreateIcon(":/icons/16x16/feed.png")); |
57 sidebar->setFixedWidth(128); | 61 sidebar->setFixedWidth(128); |
58 sidebar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); | 62 sidebar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); |
59 | 63 |
60 QStackedWidget* stack = new QStackedWidget(main_widget); | 64 QStackedWidget* stack = new QStackedWidget(main_widget); |
61 stack->addWidget(new NowPlayingWidget(main_widget)); | 65 stack->addWidget(new NowPlayingPage(main_widget)); |
62 stack->addWidget(new AnimeListWidget(main_widget)); | 66 stack->addWidget(new AnimeListPage(main_widget)); |
63 stack->addWidget(new HistoryWidget(main_widget)); | 67 stack->addWidget(new HistoryPage(main_widget)); |
64 stack->addWidget(new StatisticsWidget(main_widget)); | 68 stack->addWidget(new StatisticsPage(main_widget)); |
65 stack->addWidget(new SearchWidget(main_widget)); | 69 stack->addWidget(new SearchPage(main_widget)); |
66 stack->addWidget(new SeasonsWidget(main_widget)); | 70 stack->addWidget(new SeasonsPage(main_widget)); |
67 stack->addWidget(new TorrentsWidget(main_widget)); | 71 stack->addWidget(new TorrentsPage(main_widget)); |
68 | 72 |
69 connect(sidebar, &SideBar::CurrentItemChanged, stack, &QStackedWidget::setCurrentIndex); | 73 connect(sidebar, &SideBar::CurrentItemChanged, stack, &QStackedWidget::setCurrentIndex); |
70 sidebar->SetCurrentItem((int)Pages::ANIME_LIST); | 74 sidebar->SetCurrentItem(static_cast<int>(Pages::ANIME_LIST)); |
71 | 75 |
72 /* Menu Bar */ | 76 /* Menu Bar */ |
73 QAction* action; | 77 QAction* action; |
74 QMenuBar* menubar = new QMenuBar(parent); | 78 QMenuBar* menubar = new QMenuBar(parent); |
75 QMenu* menu = menubar->addMenu(tr("&File")); | 79 QMenu* menu = menubar->addMenu(tr("&File")); |
91 action = menu->addAction(tr("E&xit"), qApp, &QApplication::quit); | 95 action = menu->addAction(tr("E&xit"), qApp, &QApplication::quit); |
92 | 96 |
93 menu = menubar->addMenu(tr("&Services")); | 97 menu = menubar->addMenu(tr("&Services")); |
94 action = menu->addAction(tr("Synchronize &list"), [stack] { | 98 action = menu->addAction(tr("Synchronize &list"), [stack] { |
95 Services::Synchronize(); | 99 Services::Synchronize(); |
96 ((AnimeListWidget*)stack->widget((int)Pages::ANIME_LIST))->Refresh(); | 100 reinterpret_cast<AnimeListPage*>(stack->widget(static_cast<int>(Pages::ANIME_LIST)))->Refresh(); |
97 }); | 101 }); |
98 action->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_S)); | 102 action->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_S)); |
99 | 103 |
100 menu->addSeparator(); | 104 menu->addSeparator(); |
101 | 105 |
179 | 183 |
180 menu->addSeparator(); | 184 menu->addSeparator(); |
181 menu->addAction(tr("Show sidebar")); | 185 menu->addAction(tr("Show sidebar")); |
182 | 186 |
183 menu = menubar->addMenu(tr("&Help")); | 187 menu = menubar->addMenu(tr("&Help")); |
184 action = menu->addAction(tr("About Minori"), this, [this] { | 188 action = menu->addAction(tr("&About Minori"), this, [this] { |
185 AboutWindow dialog(this); | 189 AboutWindow dialog(this); |
186 dialog.exec(); | 190 dialog.exec(); |
187 }); | 191 }); |
188 action = menu->addAction(tr("About &Qt"), qApp, &QApplication::aboutQt); | 192 action = menu->addAction(tr("About &Qt"), qApp, &QApplication::aboutQt); |
189 action->setMenuRole(QAction::AboutQtRole); | 193 action->setMenuRole(QAction::AboutQtRole); |
193 QHBoxLayout* layout = new QHBoxLayout(main_widget); | 197 QHBoxLayout* layout = new QHBoxLayout(main_widget); |
194 layout->addWidget(sidebar); | 198 layout->addWidget(sidebar); |
195 layout->addWidget(stack); | 199 layout->addWidget(stack); |
196 setCentralWidget(main_widget); | 200 setCentralWidget(main_widget); |
197 | 201 |
202 QTimer* timer = new QTimer(this); | |
203 connect(timer, &QTimer::timeout, this, [stack] { | |
204 NowPlayingPage* page = reinterpret_cast<NowPlayingPage*>(stack->widget(static_cast<int>(Pages::NOW_PLAYING))); | |
205 | |
206 Filesystem::Path p = Track::Media::GetCurrentPlaying(); | |
207 std::string title = Track::Media::GetFileTitle(p); | |
208 int id = Anime::db.GetAnimeFromTitle(title); | |
209 if (id == 0) { | |
210 page->SetDefault(); | |
211 return; | |
212 } | |
213 | |
214 page->SetPlaying(id); | |
215 }); | |
216 timer->start(5000); | |
217 | |
198 DarkTheme::SetTheme(session.config.theme); | 218 DarkTheme::SetTheme(session.config.theme); |
199 } | 219 } |
200 | 220 |
201 void MainWindow::SetActivePage(QWidget* page) { | 221 void MainWindow::SetActivePage(QWidget* page) { |
202 this->setCentralWidget(page); | 222 this->setCentralWidget(page); |