From 023436c959abec8bd515366ceeeb36799e91731d Mon Sep 17 00:00:00 2001 From: chme Date: Sun, 23 Aug 2020 18:50:41 +0200 Subject: [PATCH] [settings] Add support for (optional) default values and remove default value functions for artwork --- src/settings.c | 86 ++++++++++++-------------------------------------- src/settings.h | 10 ++++-- 2 files changed, 27 insertions(+), 69 deletions(-) diff --git a/src/settings.c b/src/settings.c index 246b39ea..3b667e7e 100644 --- a/src/settings.c +++ b/src/settings.c @@ -24,30 +24,29 @@ #include "db.h" #include "conffile.h" -// Forward - setting initializers -static bool artwork_spotify_default_getbool(struct settings_option *option); -static bool artwork_discogs_default_getbool(struct settings_option *option); -static bool artwork_coverartarchive_default_getbool(struct settings_option *option); static struct settings_option webinterface_options[] = { { "show_composer_now_playing", SETTINGS_TYPE_BOOL }, { "show_composer_for_genre", SETTINGS_TYPE_STR }, - { "show_cover_artwork_in_album_lists", SETTINGS_TYPE_BOOL }, - { "show_menu_item_playlists", SETTINGS_TYPE_BOOL }, - { "show_menu_item_music", SETTINGS_TYPE_BOOL }, - { "show_menu_item_podcasts", SETTINGS_TYPE_BOOL }, - { "show_menu_item_audiobooks", SETTINGS_TYPE_BOOL }, - { "show_menu_item_radio", SETTINGS_TYPE_BOOL }, - { "show_menu_item_files", SETTINGS_TYPE_BOOL }, - { "show_menu_item_search", SETTINGS_TYPE_BOOL }, + { "show_cover_artwork_in_album_lists", SETTINGS_TYPE_BOOL, { true } }, + { "show_menu_item_playlists", SETTINGS_TYPE_BOOL, { true } }, + { "show_menu_item_music", SETTINGS_TYPE_BOOL, { true } }, + { "show_menu_item_podcasts", SETTINGS_TYPE_BOOL, { true } }, + { "show_menu_item_audiobooks", SETTINGS_TYPE_BOOL, { true } }, + { "show_menu_item_radio", SETTINGS_TYPE_BOOL, { false } }, + { "show_menu_item_files", SETTINGS_TYPE_BOOL, { true } }, + { "show_menu_item_search", SETTINGS_TYPE_BOOL, { true } }, }; static struct settings_option artwork_options[] = { - { "use_artwork_source_spotify", SETTINGS_TYPE_BOOL, NULL, artwork_spotify_default_getbool, NULL }, - { "use_artwork_source_discogs", SETTINGS_TYPE_BOOL, NULL, artwork_discogs_default_getbool, NULL }, - { "use_artwork_source_coverartarchive", SETTINGS_TYPE_BOOL, NULL, artwork_coverartarchive_default_getbool, NULL }, + // Spotify source enabled by default, it will only work for premium users anyway. + // So Spotify probably won't mind, and the user probably also won't mind that we + // share data with Spotify, since he is already doing it. + { "use_artwork_source_spotify", SETTINGS_TYPE_BOOL, { true } }, + { "use_artwork_source_discogs", SETTINGS_TYPE_BOOL, { false } }, + { "use_artwork_source_coverartarchive", SETTINGS_TYPE_BOOL, { false } }, }; static struct settings_option misc_options[] = @@ -72,51 +71,6 @@ static struct settings_category categories[] = }; -/* ---------------------------- DEFAULT SETTERS ------------------------------*/ - -static bool -artwork_default_getbool(bool no_cfg_default, const char *cfg_name) -{ - cfg_t *lib = cfg_getsec(cfg, "library"); - const char *name; - int n_cfg; - int i; - - n_cfg = cfg_size(lib, "artwork_online_sources"); - if (n_cfg == 0) - return no_cfg_default; - - for (i = 0; i < n_cfg; i++) - { - name = cfg_getnstr(lib, "artwork_online_sources", i); - if (strcasecmp(name, cfg_name) == 0) - return true; - } - - return false; -} - -static bool -artwork_spotify_default_getbool(struct settings_option *option) -{ - // Enabled by default, it will only work for premium users anyway. So Spotify - // probably won't mind, and the user probably also won't mind that we share - // data with Spotify, since he is already doing it. - return artwork_default_getbool(true, "spotify"); -} - -static bool -artwork_discogs_default_getbool(struct settings_option *option) -{ - return artwork_default_getbool(false, "discogs"); -} - -static bool -artwork_coverartarchive_default_getbool(struct settings_option *option) -{ - return artwork_default_getbool(false, "coverartarchive"); -} - /* ------------------------------ IMPLEMENTATION -----------------------------*/ int @@ -193,8 +147,8 @@ settings_option_getint(struct settings_option *option) if (ret == 0) return intval; - if (option->default_getint) - return option->default_getint(option); + if (option->default_value.intval) + return option->default_value.intval; return 0; } @@ -212,8 +166,8 @@ settings_option_getbool(struct settings_option *option) if (ret == 0) return (intval != 0); - if (option->default_getbool) - return option->default_getbool(option); + if (option->default_value.boolval) + return option->default_value.boolval; return false; } @@ -231,8 +185,8 @@ settings_option_getstr(struct settings_option *option) if (ret == 0) return s; - if (option->default_getstr) - return option->default_getstr(option); + if (option->default_value.strval) + return option->default_value.strval; return NULL; } diff --git a/src/settings.h b/src/settings.h index c614021f..852fa658 100644 --- a/src/settings.h +++ b/src/settings.h @@ -12,12 +12,16 @@ enum settings_type { SETTINGS_TYPE_CATEGORY, }; +union settings_default_value { + int intval; + bool boolval; + char *strval; +}; + struct settings_option { const char *name; enum settings_type type; - int (*default_getint)(struct settings_option *option); - bool (*default_getbool)(struct settings_option *option); - char *(*default_getstr)(struct settings_option *option); + union settings_default_value default_value; }; struct settings_category {