view include/core/config.h @ 337:a7d4e5107531

dep/animone: REFACTOR ALL THE THINGS 1: animone now has its own syntax divergent from anisthesia, making different platforms actually have their own sections 2: process names in animone are now called `comm' (this will probably break things). this is what its called in bsd/linux so I'm just going to use it everywhere 3: the X11 code now checks for the existence of a UTF-8 window title and passes it if available 4: ANYTHING THATS NOT LINUX IS 100% UNTESTED AND CAN AND WILL BREAK! I still actually need to test the bsd code. to be honest I'm probably going to move all of the bsds into separate files because they're all essentially different operating systems at this point
author Paper <paper@paper.us.eu.org>
date Wed, 19 Jun 2024 12:51:15 -0400
parents 3b355fa948c7
children
line wrap: on
line source

#ifndef MINORI_CORE_CONFIG_H_
#define MINORI_CORE_CONFIG_H_

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

#include "animone/player.h"

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

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

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

	Anime::Service service;
	Theme::ThemeManager 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;

	struct {
		struct {
			std::string auth_token;
			int user_id;
		} anilist;
		struct {
			std::string access_token;
			Time::Timestamp access_token_expiration; /* Unix time */
			std::string refresh_token;
			std::string user_id;
		} kitsu;
	} auth;

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

	struct {
		std::string feed_link;
	} torrents;

	struct {
		bool real_time_monitor;
		std::set<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.toml";

#endif // MINORI_CORE_CONFIG_H_