comparison src/gui/window.cpp @ 10:4b198a111713

Update things actually compile now btw qttest wants to fuck over the model but that might be my fault so /shrug
author Paper <mrpapersonic@gmail.com>
date Sat, 16 Sep 2023 02:06:01 -0400
parents 5c0397762b53
children cde8f67a7c7d
comparison
equal deleted inserted replaced
9:5c0397762b53 10:4b198a111713
1 #include "gui/window.h" 1 #include "gui/window.h"
2 #include "core/config.h" 2 #include "core/config.h"
3 #include "core/session.h" 3 #include "core/session.h"
4 #include "services/services.h"
4 #include "gui/dialog/settings.h" 5 #include "gui/dialog/settings.h"
5 #include "gui/pages/anime_list.h" 6 #include "gui/pages/anime_list.h"
6 #include "gui/pages/now_playing.h" 7 #include "gui/pages/now_playing.h"
7 #include "gui/pages/statistics.h" 8 #include "gui/pages/statistics.h"
8 #include "gui/sidebar.h" 9 #include "gui/sidebar.h"
22 23
23 /* note that this code was originally created for use in 24 /* note that this code was originally created for use in
24 wxWidgets, but I thought the API was a little meh, so 25 wxWidgets, but I thought the API was a little meh, so
25 I switched to Qt. */ 26 I switched to Qt. */
26 27
28 enum class Pages {
29 NOW_PLAYING,
30
31 ANIME_LIST,
32 HISTORY,
33 STATISTICS,
34
35 SEARCH,
36 SEASONS,
37 TORRENTS
38 };
39
27 MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) { 40 MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) {
28 main_widget = new QWidget(parent); 41 main_widget = new QWidget(parent);
29 /* Menu Bar */
30 QAction* action;
31 QMenuBar* menubar = new QMenuBar(parent);
32 QMenu* menu = menubar->addMenu("&File");
33 QMenu* submenu = menu->addMenu("&Library folders");
34 action = new QAction("&Add new folder...");
35 submenu->addAction(action);
36 action = new QAction("&Scan available episodes");
37 menu->addAction(action);
38
39 menu->addSeparator();
40
41 action = menu->addAction("Play &next episode");
42 action = menu->addAction("Play &random episode");
43 menu->addSeparator();
44 action = menu->addAction("E&xit", qApp, &QApplication::quit);
45
46 menu = menubar->addMenu("&Services");
47 action = new QAction("Synchronize &list");
48
49 menu->addSeparator();
50
51 submenu = menu->addMenu("&AniList");
52 action = submenu->addAction("Go to my &profile");
53 action = submenu->addAction("Go to my &stats");
54
55 submenu = menu->addMenu("&Kitsu");
56 action = submenu->addAction("Go to my &feed");
57 action = submenu->addAction("Go to my &library");
58 action = submenu->addAction("Go to my &profile");
59
60 submenu = menu->addMenu("&MyAnimeList");
61 action = submenu->addAction("Go to my p&anel");
62 action = submenu->addAction("Go to my &profile");
63 action = submenu->addAction("Go to my &history");
64
65 menu = menubar->addMenu("&Tools");
66 submenu = menu->addMenu("&Export anime list");
67 action = submenu->addAction("Export as &Markdown...");
68 action = submenu->addAction("Export as MyAnimeList &XML...");
69
70 menu->addSeparator();
71
72 action = menu->addAction("Enable anime &recognition");
73 action->setCheckable(true);
74 action = menu->addAction("Enable auto &sharing");
75 action->setCheckable(true);
76 action = menu->addAction("Enable &auto synchronization");
77 action->setCheckable(true);
78
79 menu->addSeparator();
80
81 action = menu->addAction("&Settings", [this] {
82 SettingsDialog dialog(this);
83 dialog.exec();
84 });
85
86 setMenuBar(menubar);
87 42
88 SideBar* sidebar = new SideBar(main_widget); 43 SideBar* sidebar = new SideBar(main_widget);
89 sidebar->AddItem("Now Playing", SideBar::CreateIcon(":/icons/16x16/film.png")); 44 sidebar->AddItem("Now Playing", SideBar::CreateIcon(":/icons/16x16/film.png"));
90 sidebar->AddSeparator(); 45 sidebar->AddSeparator();
91 sidebar->AddItem("Anime List", SideBar::CreateIcon(":/icons/16x16/document-list.png")); 46 sidebar->AddItem("Anime List", SideBar::CreateIcon(":/icons/16x16/document-list.png"));
97 sidebar->AddItem("Torrents", SideBar::CreateIcon(":/icons/16x16/feed.png")); 52 sidebar->AddItem("Torrents", SideBar::CreateIcon(":/icons/16x16/feed.png"));
98 sidebar->setFixedWidth(128); 53 sidebar->setFixedWidth(128);
99 sidebar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); 54 sidebar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
100 55
101 QStackedWidget* stack = new QStackedWidget(main_widget); 56 QStackedWidget* stack = new QStackedWidget(main_widget);
102 stack->addWidget(new NowPlayingWidget(parent)); 57 stack->addWidget(new NowPlayingWidget(main_widget));
103 stack->addWidget(new AnimeListWidget(parent)); 58 stack->addWidget(new AnimeListWidget(main_widget));
104 stack->addWidget(new StatisticsWidget(parent)); 59 stack->addWidget(new StatisticsWidget(main_widget));
105 60
106 connect(sidebar, &SideBar::CurrentItemChanged, stack, [stack](int index) { 61 connect(sidebar, &SideBar::CurrentItemChanged, stack, [stack](int index) {
107 switch (index) { 62 switch (index) {
108 case 0: 63 case 0:
109 case 1: stack->setCurrentIndex(index); break; 64 case 1: stack->setCurrentIndex(index); break;
110 case 3: stack->setCurrentIndex(2); break; 65 case 3: stack->setCurrentIndex(2); break;
111 default: break; 66 default: break;
112 } 67 }
113 }); 68 });
114 sidebar->setCurrentRow(2); 69 sidebar->setCurrentRow(2);
70
71 /* Menu Bar */
72 QAction* action;
73 QMenuBar* menubar = new QMenuBar(parent);
74 QMenu* menu = menubar->addMenu("&File");
75 QMenu* submenu = menu->addMenu("&Library folders");
76 action = submenu->addAction("&Add new folder...");
77 action = menu->addAction("&Scan available episodes");
78
79 menu->addSeparator();
80
81 action = menu->addAction("Play &next episode");
82 action = menu->addAction("Play &random episode");
83 menu->addSeparator();
84 action = menu->addAction("E&xit", qApp, &QApplication::quit);
85
86 menu = menubar->addMenu("&Services");
87 action = menu->addAction("Synchronize &list", [this, stack] {
88 Services::Synchronize();
89 ((AnimeListWidget*)stack->widget((int)Pages::ANIME_LIST))->RefreshList();
90 });
91
92 menu->addSeparator();
93
94 submenu = menu->addMenu("&AniList");
95 action = submenu->addAction("Go to my &profile");
96 action = submenu->addAction("Go to my &stats");
97
98 submenu = menu->addMenu("&Kitsu");
99 action = submenu->addAction("Go to my &feed");
100 action = submenu->addAction("Go to my &library");
101 action = submenu->addAction("Go to my &profile");
102
103 submenu = menu->addMenu("&MyAnimeList");
104 action = submenu->addAction("Go to my p&anel");
105 action = submenu->addAction("Go to my &profile");
106 action = submenu->addAction("Go to my &history");
107
108 menu = menubar->addMenu("&Tools");
109 submenu = menu->addMenu("&Export anime list");
110 action = submenu->addAction("Export as &Markdown...");
111 action = submenu->addAction("Export as MyAnimeList &XML...");
112
113 menu->addSeparator();
114
115 action = menu->addAction("Enable anime &recognition");
116 action->setCheckable(true);
117 action = menu->addAction("Enable auto &sharing");
118 action->setCheckable(true);
119 action = menu->addAction("Enable &auto synchronization");
120 action->setCheckable(true);
121
122 menu->addSeparator();
123
124 action = menu->addAction("&Settings", [this] {
125 SettingsDialog dialog(this);
126 dialog.exec();
127 });
128
129 setMenuBar(menubar);
115 130
116 QHBoxLayout* layout = new QHBoxLayout(main_widget); 131 QHBoxLayout* layout = new QHBoxLayout(main_widget);
117 layout->addWidget(sidebar, 0, Qt::AlignLeft | Qt::AlignTop); 132 layout->addWidget(sidebar, 0, Qt::AlignLeft | Qt::AlignTop);
118 layout->addWidget(stack); 133 layout->addWidget(stack);
119 setCentralWidget(main_widget); 134 setCentralWidget(main_widget);