view include/gui/dialog/settings.h @ 114:ab191e28e69d

*: add initial torrent stuff WOAH! these checkboxes are a pain in my fucking ass
author Paper <mrpapersonic@gmail.com>
date Tue, 07 Nov 2023 08:03:42 -0500
parents 2004b41d4a59
children 254b1d2b7096
line wrap: on
line source

#ifndef __gui__dialog__settings_h
#define __gui__dialog__settings_h

#include "core/anime.h"
#include "core/config.h"
#include <QDialog>
#include <QWidget>
#include <QLocale>

class QLabel;
class QTabWidget;
class QStackedWidget;
class SideBar;

class SettingsPage : public QWidget {
		Q_OBJECT

	public:
		SettingsPage(QWidget* parent = nullptr, QString title = "");
		void SetTitle(QString title);
		virtual void SaveInfo() = 0;
		void AddTab(QWidget* tab, QString title = "");

	private:
		QLabel* page_title;
		QTabWidget* tab_widget;
};

class SettingsPageServices final : public SettingsPage {
		Q_OBJECT

	public:
		SettingsPageServices(QWidget* parent = nullptr);
		void SaveInfo() override;

	private:
		QWidget* CreateMainPage();
		QWidget* CreateAniListPage();
		QString username;
		Anime::Services service;
};

class SettingsPageApplication final : public SettingsPage {
		Q_OBJECT

	public:
		SettingsPageApplication(QWidget* parent = nullptr);
		void SaveInfo() override;

	private:
		QWidget* CreateAnimeListWidget();
		Themes theme;
		QLocale locale;
		Anime::TitleLanguage language;
		bool display_aired_episodes;
		bool display_available_episodes;
		bool highlight_anime_if_available;
		bool highlighted_anime_above_others;
};

class SettingsDialog final : public QDialog {
		Q_OBJECT

	public:
		SettingsDialog(QWidget* parent = nullptr);
		QWidget* CreateServicesMainPage(QWidget* parent);
		void OnOK();

	protected:
		void showEvent(QShowEvent* event) override;

	private:
		SideBar* sidebar;
		QStackedWidget* stacked;
};

#endif // __gui__dialog__settings_h