bool CAddon::LoadSettings(bool bForce /* = false*/) { if (m_settingsLoaded && !bForce) return true; if (!m_hasSettings) return false; std::string addonFileName = URIUtils::AddFileToFolder(m_props.path, "resources/settings.xml"); if (!m_addonXmlDoc.LoadFile(addonFileName)) { if (CFile::Exists(addonFileName)) CLog::Log(LOGERROR, "Unable to load: %s, Line %d\n%s", addonFileName.c_str(), m_addonXmlDoc.ErrorRow(), m_addonXmlDoc.ErrorDesc()); m_hasSettings = false; return false; } // Make sure that the addon XML has the settings element TiXmlElement *setting = m_addonXmlDoc.RootElement(); if (!setting || strcmpi(setting->Value(), "settings") != 0) { CLog::Log(LOGERROR, "Error loading Settings %s: cannot find root element 'settings'", addonFileName.c_str()); return false; } SettingsFromXML(m_addonXmlDoc, true); LoadUserSettings(); m_settingsLoaded = true; return true; }
void LynxUserInterfaceModel::OnInitDialog() { // The term "OnInitDialog" is borrowed from Windows - a second stage initialisation after construction. // The constructor is called BEFORE the window is created with the window manager (thus no window handle). // The OnInitDialog is called for extra initialisation as soon as the window is created with the window manager. try { LoadUserSettings(); } catch( std::ifstream::failure & ) { // TODO: check for file not found, and ignore this. Anything else is reportable. } UpdateUserInterfaceElementsOnView(); }
bool CAddon::LoadSettings(bool bForce, bool loadUserSettings /* = true */) { if (SettingsInitialized() && !bForce) return true; if (m_loadSettingsFailed) return false; // assume loading settings fails m_loadSettingsFailed = true; // reset the settings if we are forced to if (SettingsInitialized() && bForce) GetSettings()->Uninitialize(); // load the settings definition XML file auto addonSettingsDefinitionFile = URIUtils::AddFileToFolder(m_addonInfo.Path(), "resources", "settings.xml"); CXBMCTinyXML addonSettingsDefinitionDoc; if (!addonSettingsDefinitionDoc.LoadFile(addonSettingsDefinitionFile)) { if (CFile::Exists(addonSettingsDefinitionFile)) { CLog::Log(LOGERROR, "CAddon[%s]: unable to load: %s, Line %d\n%s", ID().c_str(), addonSettingsDefinitionFile.c_str(), addonSettingsDefinitionDoc.ErrorRow(), addonSettingsDefinitionDoc.ErrorDesc()); } return false; } // initialize the settings definition if (!GetSettings()->Initialize(addonSettingsDefinitionDoc)) { CLog::Log(LOGERROR, "CAddon[%s]: failed to initialize addon settings", ID().c_str()); return false; } // loading settings didn't fail m_loadSettingsFailed = false; // load user settings / values if (loadUserSettings) LoadUserSettings(); return true; }