summaryrefslogtreecommitdiff
path: root/indra/newview/llpresetsmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpresetsmanager.cpp')
-rw-r--r--indra/newview/llpresetsmanager.cpp61
1 files changed, 40 insertions, 21 deletions
diff --git a/indra/newview/llpresetsmanager.cpp b/indra/newview/llpresetsmanager.cpp
index 05a135b19c..205c5e6dfb 100644
--- a/indra/newview/llpresetsmanager.cpp
+++ b/indra/newview/llpresetsmanager.cpp
@@ -47,21 +47,25 @@ LLPresetsManager::~LLPresetsManager()
{
}
+void LLPresetsManager::triggerChangeSignal()
+{
+ mPresetListChangeSignal();
+}
+
void LLPresetsManager::createMissingDefault()
{
std::string default_file = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, PRESETS_DIR, PRESETS_GRAPHIC, "default.xml");
if (!gDirUtilp->fileExists(default_file))
{
LL_WARNS() << "No " << default_file << " found -- creating one" << LL_ENDL;
+
// Write current graphic settings to default.xml
- // If this name is to be localized additional code will be needed to delete the old default
- // when changing languages.
savePreset(PRESETS_GRAPHIC, PRESETS_DEFAULT);
- }
- if (gSavedSettings.getString("PresetGraphicActive").empty())
- {
- gSavedSettings.setString("PresetGraphicActive", PRESETS_DEFAULT);
+ if (gSavedSettings.getString("PresetGraphicActive").empty())
+ {
+ gSavedSettings.setString("PresetGraphicActive", PRESETS_DEFAULT);
+ }
}
}
@@ -86,7 +90,7 @@ std::string LLPresetsManager::getPresetsDir(const std::string& subdirectory)
void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir, preset_name_list_t& presets, EDefaultOptions default_option)
{
- LL_INFOS("AppInit") << "Loading presets from " << dir << LL_ENDL;
+ LL_INFOS("AppInit") << "Loading list of preset names from " << dir << LL_ENDL;
mPresetNames.clear();
@@ -101,19 +105,10 @@ void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir, preset_nam
{
std::string path = gDirUtilp->add(dir, file);
std::string name = gDirUtilp->getBaseFileName(LLURI::unescape(path), /*strip_exten = */ true);
- // Two things are happening here:
- // 1 - Always put the active preset at the top of the list
- // 2 - Possibly hide the default preset
+
if (PRESETS_DEFAULT != name)
{
- if (name != gSavedSettings.getString("PresetGraphicActive"))
- {
- mPresetNames.push_back(name);
- }
- else
- {
- mPresetNames.insert(mPresetNames.begin(), name);
- }
+ mPresetNames.push_back(name);
}
else
{
@@ -123,6 +118,10 @@ void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir, preset_nam
mPresetNames.push_back(LLTrans::getString(PRESETS_DEFAULT));
break;
+ case DEFAULT_TOP:
+ mPresetNames.push_front(LLTrans::getString(PRESETS_DEFAULT));
+ break;
+
case DEFAULT_HIDE:
default:
break;
@@ -189,8 +188,10 @@ bool LLPresetsManager::savePreset(const std::string& subdirectory, const std::st
formatter->format(paramsData, presetsXML, LLSDFormatter::OPTIONS_PRETTY);
presetsXML.close();
+ gSavedSettings.setString("PresetGraphicActive", name);
+
// signal interested parties
- mPresetListChangeSignal();
+ triggerChangeSignal();
return true;
}
@@ -206,6 +207,8 @@ void LLPresetsManager::setPresetNamesInComboBox(const std::string& subdirectory,
std::list<std::string> preset_names;
loadPresetNamesFromDir(presets_dir, preset_names, default_option);
+ std::string preset_graphic_active = gSavedSettings.getString("PresetGraphicActive");
+
if (preset_names.begin() != preset_names.end())
{
for (std::list<std::string>::const_iterator it = preset_names.begin(); it != preset_names.end(); ++it)
@@ -227,7 +230,17 @@ void LLPresetsManager::loadPreset(const std::string& subdirectory, const std::st
if(gSavedSettings.loadFromFile(full_path, false, true) > 0)
{
- mPresetListChangeSignal();
+ if(PRESETS_GRAPHIC == subdirectory)
+ {
+ gSavedSettings.setString("PresetGraphicActive", name);
+ }
+
+ LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
+ if (instance)
+ {
+ instance->refreshEnabledGraphics();
+ }
+ triggerChangeSignal();
}
}
@@ -245,8 +258,14 @@ bool LLPresetsManager::deletePreset(const std::string& subdirectory, const std::
return false;
}
+ // If you delete the preset that is currently marked as loaded then also indicate that no preset is loaded.
+ if (gSavedSettings.getString("PresetGraphicActive") == name)
+ {
+ gSavedSettings.setString("PresetGraphicActive", "");
+ }
+
// signal interested parties
- mPresetListChangeSignal();
+ triggerChangeSignal();
return true;
}