diff options
-rw-r--r-- | xbmc/settings/AdvancedSettings.cpp | 39 | ||||
-rw-r--r-- | xbmc/settings/AdvancedSettings.h | 4 | ||||
-rw-r--r-- | xbmc/settings/AppParamParser.cpp | 2 |
3 files changed, 29 insertions, 16 deletions
diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp index 8d3acbaecb..335840a139 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp @@ -286,37 +286,44 @@ bool CAdvancedSettings::Load() // it should instead use the versions of GetString/Integer/Float that // don't take defaults in. Defaults are set in the constructor above Initialize(); // In case of profile switch. - CStdString advancedSettingsXML; - advancedSettingsXML = g_settings.GetUserDataItem("advancedsettings.xml"); + ParseSettingsFile("special://xbmc/system/advancedsettings.xml"); + for (unsigned int i = 0; i < m_settingsFiles.size(); i++) + ParseSettingsFile(m_settingsFiles[i]); + ParseSettingsFile(g_settings.GetUserDataItem("advancedsettings.xml")); + return true; +} + +void CAdvancedSettings::ParseSettingsFile(const CStdString &file) +{ TiXmlDocument advancedXML; - if (!CFile::Exists(advancedSettingsXML)) - { // tell the user it doesn't exist - CLog::Log(LOGNOTICE, "No advancedsettings.xml to load (%s)", advancedSettingsXML.c_str()); - return false; + if (!CFile::Exists(file)) + { + CLog::Log(LOGNOTICE, "No settings file to load to load (%s)", file.c_str()); + return; } - if (!advancedXML.LoadFile(advancedSettingsXML)) + if (!advancedXML.LoadFile(file)) { - CLog::Log(LOGERROR, "Error loading %s, Line %d\n%s", advancedSettingsXML.c_str(), advancedXML.ErrorRow(), advancedXML.ErrorDesc()); - return false; + CLog::Log(LOGERROR, "Error loading %s, Line %d\n%s", file.c_str(), advancedXML.ErrorRow(), advancedXML.ErrorDesc()); + return; } TiXmlElement *pRootElement = advancedXML.RootElement(); if (!pRootElement || strcmpi(pRootElement->Value(),"advancedsettings") != 0) { - CLog::Log(LOGERROR, "Error loading %s, no <advancedsettings> node", advancedSettingsXML.c_str()); - return false; + CLog::Log(LOGERROR, "Error loading %s, no <advancedsettings> node", file.c_str()); + return; } // succeeded - tell the user it worked - CLog::Log(LOGNOTICE, "Loaded advancedsettings.xml from %s", advancedSettingsXML.c_str()); + CLog::Log(LOGNOTICE, "Loaded settings file from %s", file.c_str()); // Dump contents of AS.xml to debug log TiXmlPrinter printer; printer.SetLineBreak("\n"); printer.SetIndent(" "); advancedXML.Accept(&printer); - CLog::Log(LOGNOTICE, "Contents of %s are...\n%s", advancedSettingsXML.c_str(), printer.CStr()); + CLog::Log(LOGNOTICE, "Contents of %s are...\n%s", file.c_str(), printer.CStr()); TiXmlElement *pElement = pRootElement->FirstChildElement("audio"); if (pElement) @@ -884,8 +891,6 @@ bool CAdvancedSettings::Load() // load in the GUISettings overrides: g_guiSettings.LoadXML(pRootElement, true); // true to hide the settings we read in - - return true; } void CAdvancedSettings::Clear() @@ -1007,3 +1012,7 @@ void CAdvancedSettings::GetCustomExtensions(TiXmlElement *pRootElement, CStdStri } } +void CAdvancedSettings::AddSettingsFile(const CStdString &filename) +{ + m_settingsFiles.push_back(filename); +} diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h index fcfbba36e8..7a8b7cc442 100644 --- a/xbmc/settings/AdvancedSettings.h +++ b/xbmc/settings/AdvancedSettings.h @@ -68,7 +68,7 @@ class CAdvancedSettings static CAdvancedSettings* getInstance(); void Initialize(); - + void AddSettingsFile(const CStdString &filename); bool Load(); void Clear(); @@ -290,6 +290,8 @@ class CAdvancedSettings unsigned int m_jsonTcpPort; bool m_enableMultimediaKeys; + std::vector<CStdString> m_settingsFiles; + void ParseSettingsFile(const CStdString &file); }; XBMC_GLOBAL(CAdvancedSettings,g_advancedSettings); diff --git a/xbmc/settings/AppParamParser.cpp b/xbmc/settings/AppParamParser.cpp index b3b253ead6..286405c209 100644 --- a/xbmc/settings/AppParamParser.cpp +++ b/xbmc/settings/AppParamParser.cpp @@ -110,6 +110,8 @@ void CAppParamParser::ParseArg(const CStdString &arg) g_application.SetEnableLegacyRes(true); else if (arg == "--test") m_testmode = true; + else if (arg.substr(0, 11) == "--settings=") + g_advancedSettings.AddSettingsFile(arg.substr(11)); else if (arg.length() != 0 && arg[0] != '-') { if (m_testmode) |