CThemes: add default theme from config and migrate theme settings if needed

This commit is contained in:
2018-04-11 16:12:03 +02:00
parent d32b7420bc
commit 23e684258f
4 changed files with 16 additions and 6 deletions

View File

@@ -38,6 +38,13 @@ AC_ARG_ENABLE(reschange,
AC_DEFINE(ENABLE_CHANGE_OSD_RESOLUTION, 1, [enable change the osd resolution]))
AM_CONDITIONAL(ENABLE_RESCHANGE, test "$enable_reschange" = "yes")
# default theme
AC_ARG_WITH(default-theme,
AS_HELP_STRING([--with-default-theme=THEMENAME], [Default theme for gui. Default it is empty for internal fallback to default colors.]),
[default_theme="$withval"],
[default_theme=""])
AC_DEFINE_UNQUOTED([DEFAULT_THEME], ["$default_theme"], [Default theme for gui.])
AC_MSG_CHECKING(target)
if test "$TARGET" = "native"; then

View File

@@ -53,6 +53,7 @@
#define USERDIR "/var" THEMESDIR
#define FILE_SUFFIX ".theme"
static SNeutrinoTheme &t = g_settings.theme;
CThemes::CThemes()
: themefile('\t')
@@ -252,13 +253,13 @@ void CThemes::saveFile(const char *themename)
bool CThemes::applyDefaultTheme()
{
g_settings.theme_name = "Neutrino-3.0";
g_settings.theme_name = DEFAULT_THEME;
std::string default_theme = THEMESDIR "/" + g_settings.theme_name + ".theme";
if(themefile.loadConfig(default_theme)){
getTheme(themefile);
return true;
}
dprintf(DEBUG_NORMAL, "[CThemes]\t[%s - %d], default neutrino theme [ %s ] not found\n", __func__, __LINE__, default_theme.c_str());
dprintf(DEBUG_NORMAL, "[CThemes]\t[%s - %d], No default theme found, creating migrated theme from current theme settings\n", __func__, __LINE__);
return false;
}
@@ -378,9 +379,6 @@ void CThemes::setTheme(CConfigFile &configfile)
void CThemes::getTheme(CConfigFile &configfile)
{
if (g_settings.theme_name.empty())
applyDefaultTheme();
t.menu_Head_alpha = configfile.getInt32( "menu_Head_alpha", 0x00 );
t.menu_Head_red = configfile.getInt32( "menu_Head_red", 0x00 );
t.menu_Head_green = configfile.getInt32( "menu_Head_green", 0x0A );
@@ -489,6 +487,9 @@ void CThemes::getTheme(CConfigFile &configfile)
t.progressbar_passive_red = configfile.getInt32( "progressbar_passive_red", 60 );
t.progressbar_passive_green = configfile.getInt32( "progressbar_passive_green", 60 );
t.progressbar_passive_blue = configfile.getInt32( "progressbar_passive_blue", 60 );
if (g_settings.theme_name.empty())
applyDefaultTheme();
}
void CThemes::move_userDir()

View File

@@ -30,6 +30,8 @@
#include <sigc++/signal.h>
#include <sigc++/bind.h>
#define MIGRATE_THEME_NAME "Unknown-Migrated-Theme"
class CThemes : public CMenuTarget, CColorSetupNotifier, public sigc::trackable
{
private:

View File

@@ -349,7 +349,7 @@ int CNeutrinoApp::loadSetup(const char * fname)
parentallocked = !access(NEUTRINO_PARENTALLOCKED_FILE, R_OK);
//theme/color options
g_settings.theme_name = configfile.getString("theme_name","");
g_settings.theme_name = configfile.getString("theme_name", !access(NEUTRINO_SETTINGS_FILE, F_OK) ? MIGRATE_THEME_NAME : "");
CThemes::getInstance()->getTheme(configfile);
g_settings.softupdate_autocheck = configfile.getBool("softupdate_autocheck" , false);