mirror of
https://github.com/owntone/owntone-server.git
synced 2025-02-13 06:38:10 -05:00
[settings] Add support for (optional) default values and remove default
value functions for artwork
This commit is contained in:
parent
e86aa95d89
commit
023436c959
@ -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;
|
||||
}
|
||||
|
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user