aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xbmc/settings/AdvancedSettings.cpp39
-rw-r--r--xbmc/settings/AdvancedSettings.h4
-rw-r--r--xbmc/settings/AppParamParser.cpp2
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)