FIRE-5283: Add option to sort friendlist in people panel by username
parent
edc2a47b01
commit
12db7a9739
|
|
@ -224,6 +224,8 @@ static bool findInsensitive(std::string haystack, const std::string& needle_uppe
|
|||
//comparators
|
||||
static const LLAvatarItemNameComparator NAME_COMPARATOR;
|
||||
static const LLFlatListView::ItemReverseComparator REVERSE_NAME_COMPARATOR(NAME_COMPARATOR);
|
||||
// <FS:Ansariel> FIRE-5283: Sort by username
|
||||
static const LLAvatarItemUserNameComparator USERNAME_COMPARATOR;
|
||||
|
||||
LLAvatarList::Params::Params()
|
||||
: ignore_online_status("ignore_online_status", false)
|
||||
|
|
@ -431,6 +433,14 @@ void LLAvatarList::sortByName()
|
|||
sort();
|
||||
}
|
||||
|
||||
// <FS:Ansariel> FIRE-5283: Sort by username
|
||||
void LLAvatarList::sortByUserName()
|
||||
{
|
||||
setComparator(&USERNAME_COMPARATOR);
|
||||
sort();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
void LLAvatarList::setDirty(bool val /*= true*/, bool force_refresh /*= false*/)
|
||||
{
|
||||
mDirty = val;
|
||||
|
|
@ -909,6 +919,19 @@ bool LLAvatarItemAgentOnTopComparator::doCompare(const LLAvatarListItem* avatar_
|
|||
return LLAvatarItemNameComparator::doCompare(avatar_item1,avatar_item2);
|
||||
}
|
||||
|
||||
// <FS:Ansariel> FIRE-5283: Sort by username
|
||||
bool LLAvatarItemUserNameComparator::doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const
|
||||
{
|
||||
std::string name1 = avatar_item1->getUserName();
|
||||
std::string name2 = avatar_item2->getUserName();
|
||||
|
||||
LLStringUtil::toUpper(name1);
|
||||
LLStringUtil::toUpper(name2);
|
||||
|
||||
return name1 < name2;
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
/************************************************************************/
|
||||
/* class LLAvalineListItem */
|
||||
/************************************************************************/
|
||||
|
|
|
|||
|
|
@ -93,6 +93,8 @@ public:
|
|||
void showUsername(bool visible);
|
||||
void showVoiceVolume(bool visible);
|
||||
void sortByName();
|
||||
// <FS:Ansariel> FIRE-5283: Sort by username
|
||||
void sortByUserName();
|
||||
void setShowIcons(std::string param_name);
|
||||
bool getIconsVisible() const { return mShowIcons; }
|
||||
const std::string getIconParamName() const{return mIconParamName;}
|
||||
|
|
@ -233,6 +235,20 @@ protected:
|
|||
virtual bool doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const;
|
||||
};
|
||||
|
||||
// <FS:Ansariel> FIRE-5283: Sort by username
|
||||
class LLAvatarItemUserNameComparator : public LLAvatarItemComparator
|
||||
{
|
||||
LOG_CLASS(LLAvatarItemUserNameComparator);
|
||||
|
||||
public:
|
||||
LLAvatarItemUserNameComparator() {};
|
||||
virtual ~LLAvatarItemUserNameComparator() {};
|
||||
|
||||
protected:
|
||||
virtual bool doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const;
|
||||
};
|
||||
// </FS:Ansariel>
|
||||
|
||||
/**
|
||||
* Represents Avaline caller in Avatar list in Voice Control Panel and group chats.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1148,6 +1148,11 @@ void LLPanelPeople::setSortOrder(LLAvatarList* list, ESortOrder order, bool save
|
|||
list->setComparator(&DISTANCE_COMPARATOR);
|
||||
list->sort();
|
||||
break;
|
||||
// <FS:Ansariel> FIRE-5283: Sort by username
|
||||
case E_SORT_BY_USERNAME:
|
||||
list->sortByUserName();
|
||||
break;
|
||||
// </FS:Ansariel>
|
||||
default:
|
||||
llwarns << "Unrecognized people sort order for " << list->getName() << llendl;
|
||||
return;
|
||||
|
|
@ -1435,6 +1440,12 @@ void LLPanelPeople::onFriendsViewSortMenuItemClicked(const LLSD& userdata)
|
|||
{
|
||||
setSortOrder(mAllFriendList, E_SORT_BY_NAME);
|
||||
}
|
||||
// <FS:Ansariel> FIRE-5283: Sort by username
|
||||
if (chosen_item == "sort_username")
|
||||
{
|
||||
setSortOrder(mAllFriendList, E_SORT_BY_USERNAME);
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
else if (chosen_item == "sort_status")
|
||||
{
|
||||
setSortOrder(mAllFriendList, E_SORT_BY_STATUS);
|
||||
|
|
@ -1528,6 +1539,10 @@ bool LLPanelPeople::onFriendsViewSortMenuItemCheck(const LLSD& userdata)
|
|||
return sort_order == E_SORT_BY_NAME;
|
||||
if (item == "sort_status")
|
||||
return sort_order == E_SORT_BY_STATUS;
|
||||
// <FS:Ansariel> FIRE-5283: Sort by username
|
||||
if (item == "sort_username")
|
||||
return sort_order == E_SORT_BY_USERNAME;
|
||||
// </FS:Ansariel>
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,6 +79,8 @@ private:
|
|||
E_SORT_BY_MOST_RECENT = 2,
|
||||
E_SORT_BY_DISTANCE = 3,
|
||||
E_SORT_BY_RECENT_SPEAKERS = 4,
|
||||
// <FS:Ansariel> FIRE-5283: Sort by username
|
||||
E_SORT_BY_USERNAME = 5,
|
||||
} ESortOrder;
|
||||
|
||||
void removePicker();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<toggleable_menu name="menu_group_plus">
|
||||
<menu_item_check label="Nach Namen sortieren" name="sort_name"/>
|
||||
<menu_item_check label="Nach Benutzernamen sortieren" name="sort_username"/>
|
||||
<menu_item_check label="Nach Status sortieren" name="sort_status"/>
|
||||
<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
|
||||
<menu_item_check label="Erteilte Genehmigungen anzeigen" name="view_permissions"/>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,16 @@
|
|||
function="People.Friends.ViewSort.CheckItem"
|
||||
parameter="sort_name" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Sort by Username"
|
||||
name="sort_username">
|
||||
<menu_item_check.on_click
|
||||
function="People.Friends.ViewSort.Action"
|
||||
parameter="sort_username" />
|
||||
<menu_item_check.on_check
|
||||
function="People.Friends.ViewSort.CheckItem"
|
||||
parameter="sort_username" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Sort by Status"
|
||||
name="sort_status">
|
||||
|
|
|
|||
Loading…
Reference in New Issue