From c25170a15618c36ebc985a5b6cb8a786e752e584 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Tue, 6 Oct 2015 15:33:57 +0200 Subject: [PATCH] Group title window: Sort "no group" at the top of the list --- indra/newview/fsfloatergrouptitles.cpp | 18 ++++++++++++------ indra/newview/fsfloatergrouptitles.h | 2 +- .../default/xui/en/floater_fs_group_titles.xml | 8 ++++++++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/indra/newview/fsfloatergrouptitles.cpp b/indra/newview/fsfloatergrouptitles.cpp index 738f6a7a80..d5a319d7e7 100644 --- a/indra/newview/fsfloatergrouptitles.cpp +++ b/indra/newview/fsfloatergrouptitles.cpp @@ -59,7 +59,7 @@ void FSGroupTitlesObserver::changed(LLGroupChange gc) ///////////////////////////////////////////////////// // FSGroupTitles class // -FSFloaterGroupTitles::FSFloaterGroupTitles(const LLSD& key) : +FSFloaterGroupTitles::FSFloaterGroupTitles(const LLSD& key) : LLFloater(key) { // Register observer and event listener @@ -134,7 +134,7 @@ void FSFloaterGroupTitles::clearObservers() } void FSFloaterGroupTitles::addListItem(const LLUUID& group_id, const LLUUID& role_id, const std::string& title, - const std::string& group_name, bool is_active, EAddPosition position) + const std::string& group_name, bool is_active, bool is_group) { std::string font_style = (is_active ? "BOLD" : "NORMAL"); @@ -154,8 +154,14 @@ void FSFloaterGroupTitles::addListItem(const LLUUID& group_id, const LLUUID& rol item["columns"][3]["column"] = "group_id"; item["columns"][3]["type"] = "text"; item["columns"][3]["value"] = group_id; + item["columns"][4]["column"] = "title_sort_column"; + item["columns"][4]["type"] = "text"; + item["columns"][4]["value"] = (is_group ? title : ""); + item["columns"][5]["column"] = "name_sort_column"; + item["columns"][5]["type"] = "text"; + item["columns"][5]["value"] = (is_group ? group_name : ""); - mTitleList->addElement(item, position); + mTitleList->addElement(item); // Need to do use the selectByValue method or there would be multiple // selections on login. @@ -220,11 +226,11 @@ void FSFloaterGroupTitles::refreshGroupTitles() mTitleList->clearRows(); // Add "no group" - addListItem(LLUUID::null, LLUUID::null, getString("NoGroupTitle"), LLTrans::getString("GroupsNone"), gAgent.getGroupID().isNull(), ADD_TOP); + addListItem(LLUUID::null, LLUUID::null, getString("NoGroupTitle"), LLTrans::getString("GroupsNone"), gAgent.getGroupID().isNull(), false); - for (S32 i = 0; i < gAgent.mGroups.size(); i++) + for (std::vector::iterator it = gAgent.mGroups.begin(); it != gAgent.mGroups.end(); ++it) { - LLGroupData group_data = gAgent.mGroups.at(i); + LLGroupData& group_data = *it; FSGroupTitlesObserver* roleObserver = new FSGroupTitlesObserver(group_data, this); mGroupTitleObserverMap[group_data.mID] = roleObserver; LLGroupMgr::getInstance()->sendGroupTitlesRequest(group_data.mID); diff --git a/indra/newview/fsfloatergrouptitles.h b/indra/newview/fsfloatergrouptitles.h index 5b1e643c01..24f7d89d10 100644 --- a/indra/newview/fsfloatergrouptitles.h +++ b/indra/newview/fsfloatergrouptitles.h @@ -69,7 +69,7 @@ private: void clearObservers(); void addListItem(const LLUUID& group_id, const LLUUID& role_id, const std::string& title, - const std::string& group_name, bool is_active, EAddPosition position = ADD_BOTTOM); + const std::string& group_name, bool is_active, bool is_no_group = true); void refreshGroupTitles(); void activateGroupTitle(); diff --git a/indra/newview/skins/default/xui/en/floater_fs_group_titles.xml b/indra/newview/skins/default/xui/en/floater_fs_group_titles.xml index c100d8dbf3..1dea8b0879 100644 --- a/indra/newview/skins/default/xui/en/floater_fs_group_titles.xml +++ b/indra/newview/skins/default/xui/en/floater_fs_group_titles.xml @@ -25,9 +25,11 @@ height="265"> + +