From 38ff7ade7775094acffa3ad626cbe3572015b07f Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Wed, 3 Jun 2026 17:36:17 +0200 Subject: [PATCH] FIRE-36707 Configurable color for offline contacts in contact sets lists Signed-off-by: PanteraPolnocy --- indra/newview/app_settings/settings.xml | 27 +++++++++++++++++++ .../fsfloatercontactsetconfiguration.cpp | 9 +++++++ .../fsfloatercontactsetconfiguration.h | 2 ++ indra/newview/llavatarlist.cpp | 5 ++++ indra/newview/llavatarlistitem.cpp | 10 ++++++- .../floater_fs_contact_set_configuration.xml | 21 ++++++++++++++- .../floater_fs_contact_set_configuration.xml | 2 ++ 7 files changed, 74 insertions(+), 2 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index adb70296e1..c60865c65e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -487,6 +487,33 @@ Value 0 + FSContactSetsListColorizeOffline + + Comment + Whether to use a custom color for offline contacts in Contact Sets lists. A custom contact set color takes precedence when set. + Persist + 1 + Type + Boolean + Value + 0 + + FSContactSetsListOfflineColor + + Comment + Custom color for offline contacts in Contact Sets lists when FSContactSetsListColorizeOffline is enabled. + Persist + 1 + Type + Color4 + Value + + 0.5 + 0.5 + 0.5 + 1.0 + + FSMuteAllGroups Comment diff --git a/indra/newview/fsfloatercontactsetconfiguration.cpp b/indra/newview/fsfloatercontactsetconfiguration.cpp index 3e1415af11..b3fef9cf57 100644 --- a/indra/newview/fsfloatercontactsetconfiguration.cpp +++ b/indra/newview/fsfloatercontactsetconfiguration.cpp @@ -66,6 +66,9 @@ bool FSFloaterContactSetConfiguration::postBuild() mGlobalSwatch = getChild("global_swatch"); mGlobalSwatch->setCommitCallback(boost::bind(&FSFloaterContactSetConfiguration::onCommitDefaultColor, this)); + mOfflineSwatch = getChild("offline_swatch"); + mOfflineSwatch->setCommitCallback(boost::bind(&FSFloaterContactSetConfiguration::onCommitOfflineColor, this)); + mNotificationCheckBox = getChild("show_set_notifications"); mNotificationCheckBox->setCommitCallback(boost::bind(&FSFloaterContactSetConfiguration::onCommitSetNotifications, this)); @@ -103,6 +106,7 @@ void FSFloaterContactSetConfiguration::onOpen(const LLSD& target_set) mSetSwatch->set(LGGContactSets::getInstance()->getSetColor(mContactSet), true); mGlobalSwatch->set(LGGContactSets::getInstance()->getDefaultColor(), true); + mOfflineSwatch->set(gSavedSettings.getColor4("FSContactSetsListOfflineColor"), true); mNotificationCheckBox->set(LGGContactSets::getInstance()->getNotifyForSet(mContactSet)); mSortByOnlineStatusCheckBox->set(LGGContactSets::getInstance()->getSortByOnlineStatusForSet(mContactSet)); @@ -140,6 +144,11 @@ void FSFloaterContactSetConfiguration::onCommitDefaultColor() LGGContactSets::getInstance()->setDefaultColor(mGlobalSwatch->get()); } +void FSFloaterContactSetConfiguration::onCommitOfflineColor() +{ + gSavedSettings.setColor4("FSContactSetsListOfflineColor", mOfflineSwatch->get()); +} + void FSFloaterContactSetConfiguration::onCommitSetAutoresponseBusy() { LGGContactSets::getInstance()->setAutoresponseForSet(mContactSet, ContactSetAutoresponseMode::BUSY, mAutoresponseBusyEnabledCheckBox->getValue().asBoolean(), mAutoresponseBusyEditor->getText()); diff --git a/indra/newview/fsfloatercontactsetconfiguration.h b/indra/newview/fsfloatercontactsetconfiguration.h index 9403138c7f..ad6caf775b 100644 --- a/indra/newview/fsfloatercontactsetconfiguration.h +++ b/indra/newview/fsfloatercontactsetconfiguration.h @@ -53,6 +53,7 @@ private: void onCommitSetNotifications(); void onCommitSetSortByOnlineStatus(); void onCommitDefaultColor(); + void onCommitOfflineColor(); void onCommitSetAutoresponseBusy(); void onCommitSetAutoresponseMode(); void onCommitSetAutoresponseNonFriends(); @@ -74,6 +75,7 @@ private: LLTextEditor* mAutoresponseNonFriendsEditor; LLColorSwatchCtrl* mSetSwatch; LLColorSwatchCtrl* mGlobalSwatch; + LLColorSwatchCtrl* mOfflineSwatch; LLLineEditor* mSetName; LLButton* mRenameButton; diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 8f787ba036..c00b396978 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -218,6 +218,11 @@ LLAvatarList::LLAvatarList(const Params& p) // FIRE-32748 Colorize Friends List with Contact Sets gSavedSettings.getControl("FSContactSetsColorizeFriends")->getSignal()->connect(boost::bind(&LLAvatarList::refreshNames, this)); + // FIRE-36707 Configurable color for offline contacts in contact sets lists + gSavedSettings.getControl("FSContactSetsListColorizeOffline")->getSignal()->connect(boost::bind(&LLAvatarList::refreshNames, this)); + gSavedSettings.getControl("FSContactSetsListOfflineColor")->getSignal()->connect(boost::bind(&LLAvatarList::refreshNames, this)); + // + // Update voice volume slider on RLVa shownames restriction update mRlvBehaviorCallbackConnection = gRlvHandler.setBehaviourCallback(boost::bind(&LLAvatarList::updateRlvRestrictions, this, _1, _2)); } diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index cd79b8f4e8..70cb104435 100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -53,6 +53,7 @@ #include "lfsimfeaturehandler.h" // Opensim #include "llavatarlist.h" #include "lggcontactsets.h" // FIRE-32748 Colorize Friends List with Contact Sets +#include "llviewercontrol.h" // FIRE-36707 Configurable color for offline contacts in contact sets lists bool LLAvatarListItem::sStaticInitialized = false; S32 LLAvatarListItem::sLeftPadding = 0; @@ -609,7 +610,14 @@ void LLAvatarListItem::setNameInternal(const std::string& name, const std::strin { avatar_name_style.font = params.group_moderator_style().font(); } - if (params.online_style.isProvided() && params.online_style().color.isProvided()) + + static LLCachedControl fsContactSetsListColorizeOffline(gSavedSettings, "FSContactSetsListColorizeOffline", false); + if (fsContactSetsListColorizeOffline && mOnlineStatus != E_ONLINE) + { + static LLCachedControl fsContactSetsListOfflineColor(gSavedSettings, "FSContactSetsListOfflineColor"); + avatar_name_style.color = fsContactSetsListOfflineColor(); + } + else if (params.online_style.isProvided() && params.online_style().color.isProvided()) { avatar_name_style.color = params.online_style().color(); } diff --git a/indra/newview/skins/default/xui/en/floater_fs_contact_set_configuration.xml b/indra/newview/skins/default/xui/en/floater_fs_contact_set_configuration.xml index 544bee9a4e..5b08b5b29b 100644 --- a/indra/newview/skins/default/xui/en/floater_fs_contact_set_configuration.xml +++ b/indra/newview/skins/default/xui/en/floater_fs_contact_set_configuration.xml @@ -101,8 +101,27 @@ Global Settings: name="global_swatch" tool_tip="Click to open Color Picker" width="100" /> + + + + Powiadomienia online: