diff --git a/indra/newview/fsdata.cpp b/indra/newview/fsdata.cpp index 8986da0c93..5c5a588055 100644 --- a/indra/newview/fsdata.cpp +++ b/indra/newview/fsdata.cpp @@ -53,6 +53,7 @@ #include "llviewernetwork.h" #include "llxorcipher.h" +const std::string BASE_URL = "http://phoenixviewer.com/app/fsdatatest"; const std::string FSDATA_URL = "http://phoenixviewer.com/app/fsdatatest/data.xml"; const std::string AGENTS_URL = "http://phoenixviewer.com/app/fsdatatest/agents.xml"; const std::string LEGACY_CLIENT_LIST_URL = "http://phoenixviewer.com/app/client_tags/client_list_v2.xml"; @@ -191,6 +192,17 @@ void FSData::processResponder(const LLSD& content, const std::string& url, bool saveLLSD(content , mClientTagsFilename, last_modified); } } + else if (url == mFSdataDefaultsUrl) + { + if (!save_to_file) + { + // do nothing as this file is loaded during app startup. + } + else + { + saveLLSD(content , mFSdataDefaultsFilename, last_modified); + } + } } bool FSData::loadFromFile(LLSD& data, std::string filename) @@ -221,6 +233,7 @@ bool FSData::loadFromFile(LLSD& data, std::string filename) void FSData::startDownload() { mFSdataFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "fsdata.xml"); + mFSdataDefaultsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "fsdata_defaults.xml"); mClientTagsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "client_list_v2.xml"); // Stat the file to see if it exists and when it was last modified. @@ -232,6 +245,16 @@ void FSData::startDownload() } LL_INFOS("fsdata") << "Downloading data.xml from " << FSDATA_URL << " with last modifed of " << last_modified << LL_ENDL; LLHTTPClient::getIfModified(FSDATA_URL, new FSDownloader(FSDATA_URL), last_modified, mHeaders, HTTP_TIMEOUT); + + last_modified = 0; + if(!LLFile::stat(mFSdataDefaultsFilename, &stat_data)) + { + last_modified = stat_data.st_mtime; + } + const std::string filename = llformat("defaults.%s.xml", LLVersionInfo::getShortVersion().c_str()); + mFSdataDefaultsUrl = BASE_URL + "/" + filename; + LL_INFOS("fsdata") << "Downloading defaults.xml from " << mFSdataDefaultsUrl << " with last modifed of " << last_modified << LL_ENDL; + LLHTTPClient::getIfModified(mFSdataDefaultsUrl, new FSDownloader(mFSdataDefaultsUrl), last_modified, mHeaders, HTTP_TIMEOUT); } // call this _after_ the login screen to pick up grid data. diff --git a/indra/newview/fsdata.h b/indra/newview/fsdata.h index a392396864..07bb26fdce 100644 --- a/indra/newview/fsdata.h +++ b/indra/newview/fsdata.h @@ -100,6 +100,8 @@ private: LLSD mLegacyClientList; std::string mFSdataFilename; + std::string mFSdataDefaultsFilename; + std::string mFSdataDefaultsUrl; std::string mAgentsFilename; std::string mAssestsFilename; std::string mClientTagsFilename; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 24ed53af85..1ac127ddcf 100755 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2703,6 +2703,17 @@ bool LLAppViewer::initConfiguration() OSMessageBox(msg.str(),LLStringUtil::null,OSMB_OK); return false; } + + // + // load defaults overide here. Can not use settings_files.xml as path is different then above loading of defaults. + std::string fsdata_defaults = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "fsdata_defaults.xml"); + std::string fsdata_global = "Global"; + LLControlGroup* settings_group = LLControlGroup::getInstance(fsdata_global); + if(settings_group && settings_group->loadFromFile(fsdata_defaults, set_defaults)) + { + llinfos << "Loaded settings file " << fsdata_defaults << llendl; + } + // initStrings(); // setup paths for LLTrans based on settings files only // - set procedural settings