diff options
Diffstat (limited to 'indra/newview/llpresetsmanager.cpp')
-rw-r--r-- | indra/newview/llpresetsmanager.cpp | 61 |
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; } |