Disable environment settings in QP comboboxes that exist solely for displaying purposes and not for selection by the user

meow-7.2.2
Ansariel 2022-07-24 18:02:19 +02:00
parent 5be4dd156c
commit 11e35693c5
4 changed files with 47 additions and 6 deletions

View File

@ -326,6 +326,18 @@ LLScrollListItem* LLComboBox::addSeparator(EAddPosition pos)
return mList->addSeparator(pos);
}
// <FS:Ansariel> Get items by value
LLScrollListItem* LLComboBox::getItemByValue(const LLSD& value)
{
if (mList)
{
return mList->getItem(value);
}
return nullptr;
}
// </FS:Ansariel>
void LLComboBox::sortByName(BOOL ascending)
{
mList->sortOnce(0, ascending);

View File

@ -144,6 +144,7 @@ public:
BOOL remove( S32 index ); // remove item by index, return TRUE if found and removed
void removeall() { clearRows(); }
bool itemExists(const std::string& name);
LLScrollListItem* getItemByValue(const LLSD& value); // <FS:Ansariel> Get items by value
void sortByName(BOOL ascending = TRUE); // Sort the entries in the combobox by name

View File

@ -278,8 +278,8 @@ void FloaterQuickPrefs::initCallbacks()
void FloaterQuickPrefs::loadDayCyclePresets(const std::multimap<std::string, LLUUID>& daycycle_map)
{
mDayCyclePresetsCombo->operateOnAll(LLComboBox::OP_DELETE);
mDayCyclePresetsCombo->add(LLTrans::getString("QP_WL_Region_Default"), LLSD(PRESET_NAME_REGION_DEFAULT));
mDayCyclePresetsCombo->add(LLTrans::getString("QP_WL_None"), LLSD(PRESET_NAME_NONE));
mDayCyclePresetsCombo->add(LLTrans::getString("QP_WL_Region_Default"), LLSD(PRESET_NAME_REGION_DEFAULT), EAddPosition::ADD_BOTTOM, FALSE);
mDayCyclePresetsCombo->add(LLTrans::getString("QP_WL_None"), LLSD(PRESET_NAME_NONE), EAddPosition::ADD_BOTTOM, FALSE);
mDayCyclePresetsCombo->addSeparator();
// Add setting presets.
@ -319,8 +319,8 @@ void FloaterQuickPrefs::loadDayCyclePresets(const std::multimap<std::string, LLU
void FloaterQuickPrefs::loadSkyPresets(const std::multimap<std::string, LLUUID>& sky_map)
{
mWLPresetsCombo->operateOnAll(LLComboBox::OP_DELETE);
mWLPresetsCombo->add(LLTrans::getString("QP_WL_Region_Default"), LLSD(PRESET_NAME_REGION_DEFAULT));
mWLPresetsCombo->add(LLTrans::getString("QP_WL_Day_Cycle_Based"), LLSD(PRESET_NAME_DAY_CYCLE));
mWLPresetsCombo->add(LLTrans::getString("QP_WL_Region_Default"), LLSD(PRESET_NAME_REGION_DEFAULT), EAddPosition::ADD_BOTTOM, FALSE);
mWLPresetsCombo->add(LLTrans::getString("QP_WL_Day_Cycle_Based"), LLSD(PRESET_NAME_DAY_CYCLE), EAddPosition::ADD_BOTTOM, FALSE);
mWLPresetsCombo->addSeparator();
// Add setting presets.
@ -361,8 +361,8 @@ void FloaterQuickPrefs::loadSkyPresets(const std::multimap<std::string, LLUUID>&
void FloaterQuickPrefs::loadWaterPresets(const std::multimap<std::string, LLUUID>& water_map)
{
mWaterPresetsCombo->operateOnAll(LLComboBox::OP_DELETE);
mWaterPresetsCombo->add(LLTrans::getString("QP_WL_Region_Default"), LLSD(PRESET_NAME_REGION_DEFAULT));
mWaterPresetsCombo->add(LLTrans::getString("QP_WL_Day_Cycle_Based"), LLSD(PRESET_NAME_DAY_CYCLE));
mWaterPresetsCombo->add(LLTrans::getString("QP_WL_Region_Default"), LLSD(PRESET_NAME_REGION_DEFAULT), EAddPosition::ADD_BOTTOM, FALSE);
mWaterPresetsCombo->add(LLTrans::getString("QP_WL_Day_Cycle_Based"), LLSD(PRESET_NAME_DAY_CYCLE), EAddPosition::ADD_BOTTOM, FALSE);
mWaterPresetsCombo->addSeparator();
// Add setting presets.
@ -441,10 +441,34 @@ void FloaterQuickPrefs::loadPresets()
loadDayCyclePresets(daycycle_map);
}
void FloaterQuickPrefs::setDefaultPresetsEnabled(BOOL enabled)
{
LLScrollListItem* item{ nullptr };
item = mWLPresetsCombo->getItemByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
if (item) item->setEnabled(enabled);
item = mWLPresetsCombo->getItemByValue(LLSD(PRESET_NAME_DAY_CYCLE));
if (item) item->setEnabled(enabled);
item = mWaterPresetsCombo->getItemByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
if (item) item->setEnabled(enabled);
item = mWaterPresetsCombo->getItemByValue(LLSD(PRESET_NAME_DAY_CYCLE));
if (item) item->setEnabled(enabled);
item = mDayCyclePresetsCombo->getItemByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
if (item) item->setEnabled(enabled);
item = mDayCyclePresetsCombo->getItemByValue(LLSD(PRESET_NAME_NONE));
if (item) item->setEnabled(enabled);
}
void FloaterQuickPrefs::setSelectedEnvironment()
{
//LL_INFOS() << "EEP: getSelectedEnvironment: " << LLEnvironment::instance().getSelectedEnvironment() << LL_ENDL;
setDefaultPresetsEnabled(TRUE);
mWLPresetsCombo->selectByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
mWaterPresetsCombo->selectByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
mDayCyclePresetsCombo->selectByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
@ -560,6 +584,8 @@ void FloaterQuickPrefs::setSelectedEnvironment()
mWaterPresetsCombo->selectByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
mDayCyclePresetsCombo->selectByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
}
setDefaultPresetsEnabled(FALSE);
}
BOOL FloaterQuickPrefs::postBuild()

View File

@ -94,6 +94,8 @@ private:
void updateRlvRestrictions(ERlvBehaviour behavior, ERlvParamType type);
void enableWindlightButtons(bool enable);
void setDefaultPresetsEnabled(BOOL enabled);
public:
/*virtual*/ BOOL postBuild();
virtual void onOpen(const LLSD& key);