From 8470dd5ce7814ee19945b6895d22ba68bc9beec2 Mon Sep 17 00:00:00 2001 From: Techwolf Lupindo Date: Sun, 27 Oct 2013 17:13:55 -0400 Subject: [PATCH] FAData: New feature, downloadable defaults. Downloadable defaults that can overide the defaults shipped with the viewer. Note that this can not overide user settings. This is so we don't have to block another viewer with improper defautls. --- indra/newview/fsdata.cpp | 23 +++++++++++++++++++++++ indra/newview/fsdata.h | 2 ++ indra/newview/llappviewer.cpp | 11 +++++++++++ 3 files changed, 36 insertions(+) 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