Fall back to default theme when the configured theme doesn't exist

This commit is contained in:
JosJuice 2016-06-30 10:58:50 +02:00
parent 10682dbf58
commit ed42467e87
3 changed files with 12 additions and 5 deletions

View File

@ -78,6 +78,9 @@
// This one is only used to remove it if it was present
#define SHADERCACHE_LEGACY_DIR "ShaderCache"
// The theme directory used by default
#define DEFAULT_THEME_DIR "Clean"
// Filenames
// Files in the directory returned by GetUserPath(D_CONFIG_IDX)
#define DOLPHIN_CONFIG "Dolphin.ini"

View File

@ -866,12 +866,16 @@ void SetUserPath(unsigned int dir_index, const std::string& path)
std::string GetThemeDir(const std::string& theme_name)
{
std::string dir = File::GetUserPath(D_THEMES_IDX) + theme_name + "/";
if (File::Exists(dir))
return dir;
// If theme does not exist in user's dir load from shared directory
if (!File::Exists(dir))
dir = GetSysDirectory() + THEMES_DIR "/" + theme_name + "/";
// If the theme doesn't exist in the user dir, load from shared directory
dir = GetSysDirectory() + THEMES_DIR "/" + theme_name + "/";
if (File::Exists(dir))
return dir;
return dir;
// If the theme doesn't exist at all, load the default theme
return GetSysDirectory() + THEMES_DIR "/" DEFAULT_THEME_DIR "/";
}
bool WriteStringToFile(const std::string& str, const std::string& filename)

View File

@ -403,7 +403,7 @@ void SConfig::LoadInterfaceSettings(IniFile& ini)
interface->Get("ShowLogWindow", &m_InterfaceLogWindow, false);
interface->Get("ShowLogConfigWindow", &m_InterfaceLogConfigWindow, false);
interface->Get("ExtendedFPSInfo", &m_InterfaceExtendedFPSInfo, false);
interface->Get("ThemeName40", &theme_name, "Clean");
interface->Get("ThemeName40", &theme_name, DEFAULT_THEME_DIR);
interface->Get("PauseOnFocusLost", &m_PauseOnFocusLost, false);
}