From 3e81c9bcc9f364dfa1dfcfd0d52139fd9c7f12c0 Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine Date: Fri, 10 Jun 2011 18:42:16 +0300 Subject: STORM-1254 WIP Refresh the presets list in the Delete Preset floater when user preference change. This is needed to disable removal of the [new] current preset. --- indra/newview/llfloaterdeleteenvpreset.cpp | 43 +++++++++++++++++++----------- indra/newview/llfloaterdeleteenvpreset.h | 1 + 2 files changed, 28 insertions(+), 16 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterdeleteenvpreset.cpp b/indra/newview/llfloaterdeleteenvpreset.cpp index ef50ace357..c72a044e79 100644 --- a/indra/newview/llfloaterdeleteenvpreset.cpp +++ b/indra/newview/llfloaterdeleteenvpreset.cpp @@ -63,6 +63,10 @@ BOOL LLFloaterDeleteEnvPreset::postBuild() getChild("delete")->setCommitCallback(boost::bind(&LLFloaterDeleteEnvPreset::onBtnDelete, this)); getChild("cancel")->setCommitCallback(boost::bind(&LLFloaterDeleteEnvPreset::onBtnCancel, this)); + // Listen to user preferences change, in which case we need to rebuild the presets list + // to disable the [new] current preset. + LLEnvManagerNew::instance().setPreferencesChangeCallback(boost::bind(&LLFloaterDeleteEnvPreset::populatePresetsList, this)); + // Listen to presets addition/removal. LLDayCycleManager::instance().setModifyCallback(boost::bind(&LLFloaterDeleteEnvPreset::populateDayCyclesList, this)); LLWLParamManager::instance().setPresetListChangeCallback(boost::bind(&LLFloaterDeleteEnvPreset::populateSkyPresetsList, this)); @@ -85,22 +89,7 @@ void LLFloaterDeleteEnvPreset::onOpen(const LLSD& key) getChild("label")->setValue(combo_label); // Populate the combobox. - if (param == "water") - { - populateWaterPresetsList(); - } - else if (param == "sky") - { - populateSkyPresetsList(); - } - else if (param == "day_cycle") - { - populateDayCyclesList(); - } - else - { - llwarns << "Unrecognized key" << llendl; - } + populatePresetsList(); } void LLFloaterDeleteEnvPreset::onBtnDelete() @@ -169,6 +158,28 @@ void LLFloaterDeleteEnvPreset::onBtnCancel() closeFloater(); } +void LLFloaterDeleteEnvPreset::populatePresetsList() +{ + std::string param = mKey.asString(); + + if (param == "water") + { + populateWaterPresetsList(); + } + else if (param == "sky") + { + populateSkyPresetsList(); + } + else if (param == "day_cycle") + { + populateDayCyclesList(); + } + else + { + llwarns << "Unrecognized key" << llendl; + } +} + void LLFloaterDeleteEnvPreset::populateWaterPresetsList() { if (mKey.asString() != "water") return; diff --git a/indra/newview/llfloaterdeleteenvpreset.h b/indra/newview/llfloaterdeleteenvpreset.h index 567962dc84..1211505273 100644 --- a/indra/newview/llfloaterdeleteenvpreset.h +++ b/indra/newview/llfloaterdeleteenvpreset.h @@ -45,6 +45,7 @@ public: void onBtnCancel(); private: + void populatePresetsList(); void populateWaterPresetsList(); void populateSkyPresetsList(); void populateDayCyclesList(); -- cgit v1.2.3