From 6894d4c0bc868cb0a76cbf67bbef954e20594405 Mon Sep 17 00:00:00 2001 From: Shyotl Date: Tue, 15 Jan 2013 23:14:58 -0600 Subject: [PATCH] Changed how the 'client' column in avatar radar is handled. Initially was not designed nor tested to be toggleable on user-demand (was one shot deal depending on detected grid). --- indra/newview/app_settings/settings.xml | 11 +++++ indra/newview/llfloateravatarlist.cpp | 61 +++++++++++++++---------- 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2850f52ee..77614e76a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -6461,6 +6461,17 @@ This should be as low as possible, but too low may break functionality Value 52 + RadarColumnNameWidth + + Comment + Width for radar's name column + Persist + 1 + Type + S32 + Value + 80 + RadarColumnMarkHidden Comment diff --git a/indra/newview/llfloateravatarlist.cpp b/indra/newview/llfloateravatarlist.cpp index e12b95156..4acf325d1 100644 --- a/indra/newview/llfloateravatarlist.cpp +++ b/indra/newview/llfloateravatarlist.cpp @@ -427,7 +427,7 @@ BOOL LLFloaterAvatarList::postBuild() return TRUE; } -void col_helper(const bool hide, const std::string width_ctrl_name, LLScrollListColumn* col) +void col_helper(const bool hide, LLCachedControl &setting, LLScrollListColumn* col) { // Brief Explanation: // Check if we want the column hidden, and if it's still showing. If so, hide it, but save its width. @@ -437,44 +437,55 @@ void col_helper(const bool hide, const std::string width_ctrl_name, LLScrollList if (hide && width) { - gSavedSettings.setS32(width_ctrl_name, width); + setting = width; col->setWidth(0); } else if(!hide && !width) { - llinfos << "We got into the setter!!" << llendl; - col->setWidth(gSavedSettings.getS32(width_ctrl_name)); + col->setWidth(setting); } } +//Macro to reduce redundant lines. Preprocessor concatenation and stringizing avoids bloat that +//wrapping in a class would create. +#define BIND_COLUMN_TO_SETTINGS(col, name)\ + static const LLCachedControl hide_##name(gSavedSettings, "RadarColumn"#name"Hidden");\ + static LLCachedControl width_##name(gSavedSettings, "RadarColumn"#name"Width");\ + col_helper(hide_##name, width_##name, mAvatarList->getColumn(col)); + void LLFloaterAvatarList::assessColumns() { - static LLCachedControl hide_mark(gSavedSettings, "RadarColumnMarkHidden"); - col_helper(hide_mark, "RadarColumnMarkWidth", mAvatarList->getColumn(LIST_MARK)); + BIND_COLUMN_TO_SETTINGS(LIST_MARK,Mark); + BIND_COLUMN_TO_SETTINGS(LIST_POSITION,Position); + BIND_COLUMN_TO_SETTINGS(LIST_ALTITUDE,Altitude); + BIND_COLUMN_TO_SETTINGS(LIST_ACTIVITY,Activity); + BIND_COLUMN_TO_SETTINGS(LIST_AGE,Age); + BIND_COLUMN_TO_SETTINGS(LIST_TIME,Time); - static LLCachedControl hide_pos(gSavedSettings, "RadarColumnPositionHidden"); - col_helper(hide_pos, "RadarColumnPositionWidth", mAvatarList->getColumn(LIST_POSITION)); + static const LLCachedControl hide_client(gSavedSettings, "RadarColumnClientHidden"); + static LLCachedControl width_name(gSavedSettings, "RadarColumnNameWidth"); + bool client_hidden = hide_client || gHippoGridManager->getConnectedGrid()->isSecondLife(); + LLScrollListColumn* name_col = mAvatarList->getColumn(LIST_AVATAR_NAME); + LLScrollListColumn* client_col = mAvatarList->getColumn(LIST_CLIENT); - static LLCachedControl hide_alt(gSavedSettings, "RadarColumnAltitudeHidden"); - col_helper(hide_alt, "RadarColumnAltitudeWidth", mAvatarList->getColumn(LIST_ALTITUDE)); + if (client_hidden != !!name_col->mDynamicWidth) + { + //Don't save if its being hidden because of detected grid. Not that it really matters, as this setting(along with the other RadarColumn*Width settings) + //isn't handled in a way that allows it to carry across sessions, but I assume that may want to be fixed in the future.. + if(client_hidden && !gHippoGridManager->getConnectedGrid()->isSecondLife() && name_col->getWidth() > 0) + width_name = name_col->getWidth(); - static LLCachedControl hide_act(gSavedSettings, "RadarColumnActivityHidden"); - col_helper(hide_act, "RadarColumnActivityWidth", mAvatarList->getColumn(LIST_ACTIVITY)); + //MUST call setWidth(0) first to clear out mTotalStaticColumnWidth accumulation in parent before changing the mDynamicWidth value + client_col->setWidth(0); + name_col->setWidth(0); - static LLCachedControl hide_age(gSavedSettings, "RadarColumnAgeHidden"); - col_helper(hide_age, "RadarColumnAgeWidth", mAvatarList->getColumn(LIST_AGE)); + client_col->mDynamicWidth = !client_hidden; + name_col->mDynamicWidth = client_hidden; - static LLCachedControl hide_time(gSavedSettings, "RadarColumnTimeHidden"); - col_helper(hide_time, "RadarColumnTimeWidth", mAvatarList->getColumn(LIST_TIME)); - - static LLCachedControl hide_client(gSavedSettings, "RadarColumnClientHidden"); - if (gHippoGridManager->getConnectedGrid()->isSecondLife() || hide_client){ - mAvatarList->getColumn(LIST_AVATAR_NAME)->setWidth(0); - mAvatarList->getColumn(LIST_CLIENT)->setWidth(0); - mAvatarList->getColumn(LIST_CLIENT)->mDynamicWidth = FALSE; - mAvatarList->getColumn(LIST_CLIENT)->mRelWidth = 0; - mAvatarList->getColumn(LIST_AVATAR_NAME)->mDynamicWidth = TRUE; - mAvatarList->getColumn(LIST_AVATAR_NAME)->mRelWidth = -1; + if(!client_hidden) + { + name_col->setWidth(width_name); + } } mAvatarList->updateLayout();