view include/core/config.h @ 229:adc20fa321c1

theme: force Fusion style on platforms other than Win32 or OS X I was reluctant to do this, but most of the other styles just look like pure shite regardless of whether I force a stylesheet on them or not. KDE's style is actually hilariously bad paired with my stylesheet, so I've decided to also make the stylesheet Windows-specific as well, because that's really the only platform where it makes sense in the first place.
author Paper <paper@paper.us.eu.org>
date Wed, 10 Jan 2024 21:23:57 -0500
parents 53211cb1e7f5
children f784b5b1914c
line wrap: on
line source

#ifndef __core__config_h
#define __core__config_h

#include "core/anime.h"
#include "gui/theme.h"
#include "gui/locale.h"

#include "animia/player.h"

#include <string>
#include <vector>
#include <utility>

struct MediaPlayer {
	bool enabled = true;
	animia::Player player;
};

class Config {
	public:
		int Load();
		int Save() const;

		Anime::Services service;
		Theme::Theme theme;
		Locale::Locale locale;

		struct {
			Anime::TitleLanguage language;
			Anime::ScoreFormat score_format;
			bool display_aired_episodes;
			bool display_available_episodes;
			bool highlight_anime_if_available;
			bool highlighted_anime_above_others;
		} anime_list;

		/* these should preferably be in an
		   "auth" struct... */
		struct {
			struct {
				std::string auth_token;
				std::string username;
				int user_id;
			} anilist;
		} auth;

		struct {
			bool detect_media_players;
			std::vector<MediaPlayer> players;
		} recognition;

		struct {
			std::string feed_link;
		} torrents;

		struct {
			std::vector<std::string> paths;
		} library;
};

#if (defined(WIN32) || defined(MACOSX))
constexpr std::string_view CONFIG_DIR = "Minori";
#else
constexpr std::string_view CONFIG_DIR = "minori";
#endif

constexpr std::string_view CONFIG_NAME = "config.ini";

#endif // __core__config_h