Mercurial > minori
diff src/main.cpp @ 2:23d0d9319a00
Update
Also converted everything to LF from CRLF
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Sat, 12 Aug 2023 03:16:26 -0400 |
parents | 1ae666fdf9e2 |
children | 51ae25154b70 |
line wrap: on
line diff
--- a/src/main.cpp Tue Aug 08 19:49:15 2023 -0400 +++ b/src/main.cpp Sat Aug 12 03:16:26 2023 -0400 @@ -1,205 +1,205 @@ -#include "window.h" -#include "config.h" -#include "anime.h" -#if APPLE -#include "sys/osx/dark_theme.h" -#elif WIN32 -#include "sys/win32/dark_theme.h" -#endif - -Session session = { - .config = Config() -}; - -/* note that this code was originally created for use in - wxWidgets, but I thought the API was a little meh, so - I switched to Qt. */ - -MainWindow::MainWindow(QWidget* parent) : - QMainWindow(parent) { - /* Menu Bar */ - QAction* action; - QMenuBar* menubar = new QMenuBar(parent); - QMenu* menu = menubar->addMenu("&File"); - QMenu* submenu = menu->addMenu("&Library folders"); - action = new QAction("&Add new folder..."); - submenu->addAction(action); - action = new QAction("&Scan available episodes"); - menu->addAction(action); - - menu->addSeparator(); - - action = menu->addAction("Play &next episode"); - action = menu->addAction("Play &random episode"); - menu->addSeparator(); - action = menu->addAction("E&xit", qApp, &QApplication::quit); - - menu = menubar->addMenu("&Services"); - action = new QAction("Synchronize &list"); - - menu->addSeparator(); - - submenu = menu->addMenu("&AniList"); - action = menu->addAction("Go to my &profile"); - action = menu->addAction("Go to my &stats"); - - submenu = menu->addMenu("&Kitsu"); - action = submenu->addAction("Go to my &feed"); - action = submenu->addAction("Go to my &library"); - action = submenu->addAction("Go to my &profile"); - - submenu = menu->addMenu("&MyAnimeList"); - action = submenu->addAction("Go to my p&anel"); - action = submenu->addAction("Go to my &profile"); - action = submenu->addAction("Go to my &history"); - - menu = menubar->addMenu("&Tools"); - submenu = menu->addMenu("&Export anime list"); - action = submenu->addAction("Export as &Markdown..."); - action = submenu->addAction("Export as MyAnimeList &XML..."); - - menu->addSeparator(); - - action = menu->addAction("Enable anime &recognition"); - action->setCheckable(true); - action = menu->addAction("Enable auto &sharing"); - action->setCheckable(true); - action = menu->addAction("Enable &auto synchronization"); - action->setCheckable(true); - - menu->addSeparator(); - - action = menu->addAction("&Settings"); - - setMenuBar(menubar); - - /* Side toolbar */ - QToolBar* toolbar = new QToolBar(parent); - QActionGroup* tb_action_group = new QActionGroup(toolbar); - - action = toolbar->addAction("Now Playing"); - action->setActionGroup(tb_action_group); - action->setCheckable(true); - - toolbar->addSeparator(); - - action = toolbar->addAction("Anime List", [this]() { - setCentralWidget(anime_list_page); - }); - action->setActionGroup(tb_action_group); - action->setCheckable(true); - action->setChecked(true); - anime_list_page = new AnimeListPage(parent); - SetActivePage(anime_list_page); - action = toolbar->addAction("History"); - action->setActionGroup(tb_action_group); - action->setCheckable(true); - action = toolbar->addAction("Statistics"); - action->setActionGroup(tb_action_group); - action->setCheckable(true); - - toolbar->addSeparator(); - - action = toolbar->addAction("Search"); - action->setActionGroup(tb_action_group); - action->setCheckable(true); - action = toolbar->addAction("Seasons"); - action->setActionGroup(tb_action_group); - action->setCheckable(true); - action = toolbar->addAction("Torrents"); - action->setActionGroup(tb_action_group); - action->setCheckable(true); - - toolbar->setMovable(false); - toolbar->setFloatable(false); - - addToolBar(Qt::LeftToolBarArea, toolbar); - - ThemeChanged(); -} - -void MainWindow::SetStyleSheet(enum Themes theme) { - switch (theme) { - case DARK: { - QFile f(":qdarkstyle/dark/darkstyle.qss"); - if (!f.exists()) - return; // fail - f.open(QFile::ReadOnly | QFile::Text); - QTextStream ts(&f); - setStyleSheet(ts.readAll()); - break; - } - default: - setStyleSheet(""); - break; - } -} - -void MainWindow::ThemeChanged() { - switch (session.config.theme) { - case LIGHT: { -#if APPLE - if (osx::DarkThemeAvailable()) - osx::SetToLightTheme(); - else - SetStyleSheet(LIGHT); -#else - SetStyleSheet(LIGHT); -#endif - break; - } - case DARK: { -#if APPLE - if (osx::DarkThemeAvailable()) - osx::SetToDarkTheme(); - else - SetStyleSheet(DARK); -#else - SetStyleSheet(DARK); -#endif - break; - } - case OS: { -#if APPLE - if (osx::DarkThemeAvailable()) - osx::SetToAutoTheme(); - else - SetStyleSheet(LIGHT); -#elif defined(WIN32) - if (win32::DarkThemeAvailable()) { - if (win32::IsInDarkTheme()) { - SetStyleSheet(DARK); - } else { - SetStyleSheet(LIGHT); - } - } -#else - SetStyleSheet(LIGHT); -#endif - break; - } - } -} - -void MainWindow::SetActivePage(QWidget* page) { - this->setCentralWidget(page); -} - -void MainWindow::closeEvent(QCloseEvent* event) { - session.config.Save(); - event->accept(); -} - -int main(int argc, char** argv) { - QApplication app(argc, argv); - - session.config.Load(); - - MainWindow window; - - window.resize(941, 750); - window.setWindowTitle("Weeaboo"); - window.show(); - - return app.exec(); -} +#include "window.h" +#include "config.h" +#include "anime.h" +#if APPLE +#include "sys/osx/dark_theme.h" +#elif WIN32 +#include "sys/win32/dark_theme.h" +#endif + +Session session = { + .config = Config() +}; + +/* note that this code was originally created for use in + wxWidgets, but I thought the API was a little meh, so + I switched to Qt. */ + +MainWindow::MainWindow(QWidget* parent) : + QMainWindow(parent) { + /* Menu Bar */ + QAction* action; + QMenuBar* menubar = new QMenuBar(parent); + QMenu* menu = menubar->addMenu("&File"); + QMenu* submenu = menu->addMenu("&Library folders"); + action = new QAction("&Add new folder..."); + submenu->addAction(action); + action = new QAction("&Scan available episodes"); + menu->addAction(action); + + menu->addSeparator(); + + action = menu->addAction("Play &next episode"); + action = menu->addAction("Play &random episode"); + menu->addSeparator(); + action = menu->addAction("E&xit", qApp, &QApplication::quit); + + menu = menubar->addMenu("&Services"); + action = new QAction("Synchronize &list"); + + menu->addSeparator(); + + submenu = menu->addMenu("&AniList"); + action = menu->addAction("Go to my &profile"); + action = menu->addAction("Go to my &stats"); + + submenu = menu->addMenu("&Kitsu"); + action = submenu->addAction("Go to my &feed"); + action = submenu->addAction("Go to my &library"); + action = submenu->addAction("Go to my &profile"); + + submenu = menu->addMenu("&MyAnimeList"); + action = submenu->addAction("Go to my p&anel"); + action = submenu->addAction("Go to my &profile"); + action = submenu->addAction("Go to my &history"); + + menu = menubar->addMenu("&Tools"); + submenu = menu->addMenu("&Export anime list"); + action = submenu->addAction("Export as &Markdown..."); + action = submenu->addAction("Export as MyAnimeList &XML..."); + + menu->addSeparator(); + + action = menu->addAction("Enable anime &recognition"); + action->setCheckable(true); + action = menu->addAction("Enable auto &sharing"); + action->setCheckable(true); + action = menu->addAction("Enable &auto synchronization"); + action->setCheckable(true); + + menu->addSeparator(); + + action = menu->addAction("&Settings"); + + setMenuBar(menubar); + + /* Side toolbar */ + QToolBar* toolbar = new QToolBar(parent); + QActionGroup* tb_action_group = new QActionGroup(toolbar); + + action = toolbar->addAction("Now Playing"); + action->setActionGroup(tb_action_group); + action->setCheckable(true); + + toolbar->addSeparator(); + + action = toolbar->addAction("Anime List", [this]() { + setCentralWidget(anime_list_page); + }); + action->setActionGroup(tb_action_group); + action->setCheckable(true); + action->setChecked(true); + anime_list_page = new AnimeListPage(parent); + SetActivePage(anime_list_page); + action = toolbar->addAction("History"); + action->setActionGroup(tb_action_group); + action->setCheckable(true); + action = toolbar->addAction("Statistics"); + action->setActionGroup(tb_action_group); + action->setCheckable(true); + + toolbar->addSeparator(); + + action = toolbar->addAction("Search"); + action->setActionGroup(tb_action_group); + action->setCheckable(true); + action = toolbar->addAction("Seasons"); + action->setActionGroup(tb_action_group); + action->setCheckable(true); + action = toolbar->addAction("Torrents"); + action->setActionGroup(tb_action_group); + action->setCheckable(true); + + toolbar->setMovable(false); + toolbar->setFloatable(false); + + addToolBar(Qt::LeftToolBarArea, toolbar); + + ThemeChanged(); +} + +void MainWindow::SetStyleSheet(enum Themes theme) { + switch (theme) { + case DARK: { + QFile f(":qdarkstyle/dark/darkstyle.qss"); + if (!f.exists()) + return; // fail + f.open(QFile::ReadOnly | QFile::Text); + QTextStream ts(&f); + setStyleSheet(ts.readAll()); + break; + } + default: + setStyleSheet(""); + break; + } +} + +void MainWindow::ThemeChanged() { + switch (session.config.theme) { + case LIGHT: { +#if APPLE + if (osx::DarkThemeAvailable()) + osx::SetToLightTheme(); + else + SetStyleSheet(LIGHT); +#else + SetStyleSheet(LIGHT); +#endif + break; + } + case DARK: { +#if APPLE + if (osx::DarkThemeAvailable()) + osx::SetToDarkTheme(); + else + SetStyleSheet(DARK); +#else + SetStyleSheet(DARK); +#endif + break; + } + case OS: { +#if APPLE + if (osx::DarkThemeAvailable()) + osx::SetToAutoTheme(); + else + SetStyleSheet(LIGHT); +#elif defined(WIN32) + if (win32::DarkThemeAvailable()) { + if (win32::IsInDarkTheme()) { + SetStyleSheet(DARK); + } else { + SetStyleSheet(LIGHT); + } + } +#else + SetStyleSheet(LIGHT); +#endif + break; + } + } +} + +void MainWindow::SetActivePage(QWidget* page) { + this->setCentralWidget(page); +} + +void MainWindow::closeEvent(QCloseEvent* event) { + session.config.Save(); + event->accept(); +} + +int main(int argc, char** argv) { + QApplication app(argc, argv); + + session.config.Load(); + + MainWindow window; + + window.resize(941, 750); + window.setWindowTitle("Weeaboo"); + window.show(); + + return app.exec(); +}