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.
Techwolf Lupindo 2013-10-27 17:13:55 -04:00
parent 9b22308059
commit 8470dd5ce7
3 changed files with 36 additions and 0 deletions

View File

@ -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.

View File

@ -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;

View File

@ -2703,6 +2703,17 @@ bool LLAppViewer::initConfiguration()
OSMessageBox(msg.str(),LLStringUtil::null,OSMB_OK);
return false;
}
//<FS:Techwolf Lupindo>
// 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;
}
//</FS:Techwolf Lupindo>
initStrings(); // setup paths for LLTrans based on settings files only
// - set procedural settings