FIRE-14575: Add option to hide permission columns to contact list; exposed option (as well as all other options) in the context menu

Ansariel 2014-09-12 23:43:07 +02:00
parent 05416c58e7
commit 296eb54d07
10 changed files with 336 additions and 3 deletions

View File

@ -22688,6 +22688,17 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>1</integer>
</map>
<key>FSFriendListColumnShowPermissions</key>
<map>
<key>Comment</key>
<string>If enabled, show permission columns in the contacts list</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
</map>
</llsd>

View File

@ -36,6 +36,7 @@
#include "llslurl.h"
#include "lluictrlfactory.h"
#include "llurlaction.h"
#include "llviewercontrol.h"
FSContactsFriendsMenu gFSContactsFriendsMenu;
@ -60,9 +61,11 @@ LLContextMenu* FSContactsFriendsMenu::createMenu()
registrar.add("Contacts.Friends.TrackAvatar", boost::bind(&FSContactsFriendsMenu::onTrackAvatarMenuItemClick, this));
registrar.add("Contacts.Friends.CopyLabel", boost::bind(&FSContactsFriendsMenu::copyNameToClipboard, this, id));
registrar.add("Contacts.Friends.CopyUrl", boost::bind(&FSContactsFriendsMenu::copySLURLToClipboard, this, id));
registrar.add("Contacts.Friends.SelectOption", boost::bind(&FSContactsFriendsMenu::selectOption, this, _2));
enable_registrar.add("Contacts.Friends.EnableItem", boost::bind(&FSContactsFriendsMenu::enableContextMenuItem, this, _2));
enable_registrar.add("Contacts.Friends.EnableZoomIn", boost::bind(&LLAvatarActions::canZoomIn, id));
enable_registrar.add("Contacts.Friends.CheckOption", boost::bind(&FSContactsFriendsMenu::checkOption, this, _2));
return createFromFile("menu_fs_contacts_friends.xml");
}
@ -72,8 +75,10 @@ LLContextMenu* FSContactsFriendsMenu::createMenu()
registrar.add("Contacts.Friends.OfferTeleport", boost::bind(&FSContactsFriendsMenu::offerTeleport, this));
registrar.add("Contacts.Friends.RemoveFriend", boost::bind(&LLAvatarActions::removeFriendsDialog, mUUIDs));
registrar.add("Contacts.Friends.AddToContactSet", boost::bind(&FSContactsFriendsMenu::addToContactSet, this));
registrar.add("Contacts.Friends.SelectOption", boost::bind(&FSContactsFriendsMenu::selectOption, this, _2));
enable_registrar.add("Contacts.Friends.EnableItem", boost::bind(&FSContactsFriendsMenu::enableContextMenuItem, this, _2));
enable_registrar.add("Contacts.Friends.CheckOption", boost::bind(&FSContactsFriendsMenu::checkOption, this, _2));
return createFromFile("menu_fs_contacts_friends_multiselect.xml");
}
@ -126,7 +131,7 @@ bool FSContactsFriendsMenu::enableContextMenuItem(const LLSD& userdata)
}
return false;
}
else if (item == std::string("can_callog"))
else if (item == "can_callog")
{
if (mUUIDs.size() == 1)
{
@ -134,6 +139,25 @@ bool FSContactsFriendsMenu::enableContextMenuItem(const LLSD& userdata)
}
return false;
}
else if (item == "FSFriendListColumnShowUserName")
{
return (gSavedSettings.getBOOL("FSFriendListColumnShowDisplayName") ||
gSavedSettings.getBOOL("FSFriendListColumnShowFullName"));
}
else if (item == "FSFriendListColumnShowDisplayName")
{
return (gSavedSettings.getBOOL("FSFriendListColumnShowUserName") ||
gSavedSettings.getBOOL("FSFriendListColumnShowFullName"));
}
else if (item == "FSFriendListColumnShowFullName")
{
return (gSavedSettings.getBOOL("FSFriendListColumnShowUserName") ||
gSavedSettings.getBOOL("FSFriendListColumnShowDisplayName"));
}
else if (item == "FSFriendListFullNameFormat")
{
return gSavedSettings.getBOOL("FSFriendListColumnShowFullName");
}
return false;
}
@ -169,3 +193,48 @@ void FSContactsFriendsMenu::copySLURLToClipboard(const LLUUID& id)
LLUrlAction::copyURLToClipboard(LLSLURL("agent", id, "about").getSLURLString());
}
void FSContactsFriendsMenu::selectOption(const LLSD& userdata)
{
std::string option = userdata.asString();
if (option == "sort_by_username")
{
gSavedSettings.setS32("FSFriendListSortOrder", 0);
}
else if (option == "sort_by_displayname")
{
gSavedSettings.setS32("FSFriendListSortOrder", 1);
}
else if (option == "format_username_displayname")
{
gSavedSettings.setS32("FSFriendListFullNameFormat", 0);
}
else if (option == "format_displayname_username")
{
gSavedSettings.setS32("FSFriendListFullNameFormat", 1);
}
}
bool FSContactsFriendsMenu::checkOption(const LLSD& userdata)
{
std::string option = userdata.asString();
if (option == "sort_by_username")
{
return (gSavedSettings.getS32("FSFriendListSortOrder") == 0);
}
else if (option == "sort_by_displayname")
{
return (gSavedSettings.getS32("FSFriendListSortOrder") == 1);
}
else if (option == "format_username_displayname")
{
return (gSavedSettings.getS32("FSFriendListFullNameFormat") == 0);
}
else if (option == "format_displayname_username")
{
return (gSavedSettings.getS32("FSFriendListFullNameFormat") == 1);
}
return false;
}

View File

@ -42,6 +42,8 @@ private:
void addToContactSet();
void copyNameToClipboard(const LLUUID& id);
void copySLURLToClipboard(const LLUUID& id);
void selectOption(const LLSD& userdata);
bool checkOption(const LLSD& userdata);
};
extern FSContactsFriendsMenu gFSContactsFriendsMenu;

View File

@ -167,6 +167,7 @@ BOOL FSFloaterContacts::postBuild()
gSavedSettings.getControl("FSFriendListColumnShowUserName")->getSignal()->connect(boost::bind(&FSFloaterContacts::onColumnDisplayModeChanged, this, "FSFriendListColumnShowUserName"));
gSavedSettings.getControl("FSFriendListColumnShowDisplayName")->getSignal()->connect(boost::bind(&FSFloaterContacts::onColumnDisplayModeChanged, this, "FSFriendListColumnShowDisplayName"));
gSavedSettings.getControl("FSFriendListColumnShowFullName")->getSignal()->connect(boost::bind(&FSFloaterContacts::onColumnDisplayModeChanged, this, "FSFriendListColumnShowFullName"));
gSavedSettings.getControl("FSFriendListColumnShowPermissions")->getSignal()->connect(boost::bind(&FSFloaterContacts::onColumnDisplayModeChanged, this, std::string()));
onColumnDisplayModeChanged();
LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&FSFloaterContacts::onDisplayNameChanged, this));
@ -1091,6 +1092,8 @@ void FSFloaterContacts::onColumnDisplayModeChanged(const std::string& settings_n
std::vector<LLScrollListColumn::Params> column_params = mFriendsList->getColumnInitParams();
mFriendsList->clearColumns();
mFriendsList->updateLayout();
for (std::vector<LLScrollListColumn::Params>::iterator it = column_params.begin(); it != column_params.end(); ++it)
{
LLScrollListColumn::Params p = *it;
@ -1155,6 +1158,30 @@ void FSFloaterContacts::onColumnDisplayModeChanged(const std::string& settings_n
}
mFriendsList->addColumn(params);
}
else if (p.name.getValue() == "icon_visible_online" ||
p.name.getValue() == "icon_visible_map" ||
p.name.getValue() == "icon_edit_mine" ||
p.name.getValue() == "icon_visible_map_theirs" ||
p.name.getValue() == "icon_edit_theirs")
{
LLScrollListColumn::Params params;
params.header = p.header;
params.name = p.name;
params.halign = p.halign;
params.sort_direction = p.sort_direction;
params.sort_column = p.sort_column;
params.tool_tip = p.tool_tip;
if (gSavedSettings.getBOOL("FSFriendListColumnShowPermissions"))
{
params.width = p.width;
}
else
{
params.width.pixel_width.set(-1, true);
}
mFriendsList->addColumn(params);
}
else
{
mFriendsList->addColumn(p);
@ -1163,6 +1190,7 @@ void FSFloaterContacts::onColumnDisplayModeChanged(const std::string& settings_n
}
mFriendsList->dirtyColumns();
mFriendsList->updateColumns(true); // Force update or icons don't properly hide if permission columns are hidden
// primary sort = online status, secondary sort = name
if (gSavedSettings.getS32("FSFriendListSortOrder"))

View File

@ -13,4 +13,14 @@
<menu_item_call label="Freund entfernen..." name="remove_friend"/>
<menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/>
<menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
<menu name="options" label="Optionen...">
<menu_item_check label="Benutzername anzeigen" name="show_username"/>
<menu_item_check label="Anzeigename anzeigen" name="show_displayname"/>
<menu_item_check label="Vollständiger Name anzeigen" name="show_fullname"/>
<menu_item_check label="Berechtigungen anzeigen" name="show_permissions"/>
<menu_item_check label="Sortieren nach Benutzername" name="sort_by_username"/>
<menu_item_check label="Sortieren nach Anzeigename" name="sort_by_displayname"/>
<menu_item_check label="Format vollstänger Name: Benutzername (Anzeigename)" name="format_username_displayname"/>
<menu_item_check label="Format vollstänger Name: Anzeigename (Benutzername)" name="format_displayname_username"/>
</menu>
</context_menu>

View File

@ -4,4 +4,14 @@
<menu_item_call label="Zu Kontakt-Set hinzufügen..." name="Add to Set"/>
<menu_item_call label="Teleport anbieten" name="offer_teleport"/>
<menu_item_call label="Freunde entfernen..." name="remove_friend"/>
<menu name="options" label="Optionen...">
<menu_item_check label="Benutzername anzeigen" name="show_username"/>
<menu_item_check label="Anzeigename anzeigen" name="show_displayname"/>
<menu_item_check label="Vollständiger Name anzeigen" name="show_fullname"/>
<menu_item_check label="Berechtigungen anzeigen" name="show_permissions"/>
<menu_item_check label="Sortieren nach Benutzername" name="sort_by_username"/>
<menu_item_check label="Sortieren nach Anzeigename" name="sort_by_displayname"/>
<menu_item_check label="Format vollstänger Name: Benutzername (Anzeigename)" name="format_username_displayname"/>
<menu_item_check label="Format vollstänger Name: Anzeigename (Benutzername)" name="format_displayname_username"/>
</menu>
</context_menu>

View File

@ -52,7 +52,7 @@
<radio_item label="Benutzern. (Anzeigen.)" name="username_displayname" width="140"/>
<radio_item label="Anzeigen. (Benutzern.)" name="displayname_username" width="140"/>
</radio_group>
<check_box label="Kontaktliste immer nach Benutzername sortieren" name="sortcontactsbyun" tool_tip="Sortiert Kontaktlisten immer anhand des Benutzernamens, auch wenn Anzeigenamen aktiviert sind."/>
<check_box label="Berechtigungsspalte anzeigen" name="FSFriendListColumnShowPermissions" tool_tip="Die Kontaktliste zeigt eine Spalte mit Berechtigungen an, die diesem Avatar gegeben wurden - und umgekehrt."/>
<check_box label="Blockierte Avatare als Partikelwolke darstellen" name="ShowMutedAvatarsAsCloud" tool_tip="Blockierte Avatare werden als Partikelwolke in einer speziellen Farbe dargestellt."/>
<check_box label="Leere Systemordner im Inventar verstecken" name="DebugHideEmptySystemFolders" tool_tip="Versteckt leere Systemordner wie z.B. Favoriten oder Landmarken usw. in den Inventarfenstern."/>
<check_box label="Ordner &quot;Erhaltene Artikel&quot; im Inventar anzeigen" name="FSShowInboxFolder" tool_tip="Falls aktiviert, wird der Ordner &quot;Erhaltene Artikel&quot; als normaler Ordner im Inventar angezeigt."/>

View File

@ -115,4 +115,100 @@
<menu_item_call.on_click
function="Contacts.Friends.CopyUrl"/>
</menu_item_call>
<menu_item_separator/>
<menu name="options" label="Options...">
<menu_item_check
label="Show username column"
name="show_username">
<menu_item_check.on_click
function="ToggleControl"
parameter="FSFriendListColumnShowUserName"/>
<menu_item_check.on_check
control="FSFriendListColumnShowUserName"/>
<menu_item_check.on_enable
function="Contacts.Friends.EnableItem"
parameter="FSFriendListColumnShowUserName"/>
</menu_item_check>
<menu_item_check
label="Show display name column"
name="show_displayname">
<menu_item_check.on_click
function="ToggleControl"
parameter="FSFriendListColumnShowDisplayName"/>
<menu_item_check.on_check
control="FSFriendListColumnShowDisplayName"/>
<menu_item_check.on_enable
function="Contacts.Friends.EnableItem"
parameter="FSFriendListColumnShowDisplayName"/>
</menu_item_check>
<menu_item_check
label="Show full name column"
name="show_fullname">
<menu_item_check.on_click
function="ToggleControl"
parameter="FSFriendListColumnShowFullName"/>
<menu_item_check.on_check
control="FSFriendListColumnShowFullName"/>
<menu_item_check.on_enable
function="Contacts.Friends.EnableItem"
parameter="FSFriendListColumnShowFullName"/>
</menu_item_check>
<menu_item_check
label="Show permission columns"
name="show_permissions">
<menu_item_check.on_click
function="ToggleControl"
parameter="FSFriendListColumnShowPermissions"/>
<menu_item_check.on_check
control="FSFriendListColumnShowPermissions"/>
</menu_item_check>
<menu_item_separator/>
<menu_item_check
label="Sort by username"
name="sort_by_username">
<menu_item_check.on_click
function="Contacts.Friends.SelectOption"
parameter="sort_by_username"/>
<menu_item_check.on_check
function="Contacts.Friends.CheckOption"
parameter="sort_by_username"/>
</menu_item_check>
<menu_item_check
label="Sort by display name"
name="sort_by_displayname">
<menu_item_check.on_click
function="Contacts.Friends.SelectOption"
parameter="sort_by_displayname"/>
<menu_item_check.on_check
function="Contacts.Friends.CheckOption"
parameter="sort_by_displayname"/>
</menu_item_check>
<menu_item_separator/>
<menu_item_check
label="Full name format Username (Display name)"
name="format_username_displayname">
<menu_item_check.on_click
function="Contacts.Friends.SelectOption"
parameter="format_username_displayname"/>
<menu_item_check.on_check
function="Contacts.Friends.CheckOption"
parameter="format_username_displayname"/>
<menu_item_check.on_enable
function="Contacts.Friends.EnableItem"
parameter="FSFriendListFullNameFormat"/>
</menu_item_check>
<menu_item_check
label="Full name format Display name (Username)"
name="format_displayname_username">
<menu_item_check.on_click
function="Contacts.Friends.SelectOption"
parameter="format_displayname_username"/>
<menu_item_check.on_check
function="Contacts.Friends.CheckOption"
parameter="format_displayname_username"/>
<menu_item_check.on_enable
function="Contacts.Friends.EnableItem"
parameter="FSFriendListFullNameFormat"/>
</menu_item_check>
</menu>
</context_menu>

View File

@ -36,4 +36,100 @@
function="Contacts.Friends.EnableItem"
parameter="remove_friend"/>
</menu_item_call>
<menu_item_separator/>
<menu name="options" label="Options...">
<menu_item_check
label="Show username column"
name="show_username">
<menu_item_check.on_click
function="ToggleControl"
parameter="FSFriendListColumnShowUserName"/>
<menu_item_check.on_check
control="FSFriendListColumnShowUserName"/>
<menu_item_check.on_enable
function="Contacts.Friends.EnableItem"
parameter="FSFriendListColumnShowUserName"/>
</menu_item_check>
<menu_item_check
label="Show display name column"
name="show_displayname">
<menu_item_check.on_click
function="ToggleControl"
parameter="FSFriendListColumnShowDisplayName"/>
<menu_item_check.on_check
control="FSFriendListColumnShowDisplayName"/>
<menu_item_check.on_enable
function="Contacts.Friends.EnableItem"
parameter="FSFriendListColumnShowDisplayName"/>
</menu_item_check>
<menu_item_check
label="Show full name column"
name="show_fullname">
<menu_item_check.on_click
function="ToggleControl"
parameter="FSFriendListColumnShowFullName"/>
<menu_item_check.on_check
control="FSFriendListColumnShowFullName"/>
<menu_item_check.on_enable
function="Contacts.Friends.EnableItem"
parameter="FSFriendListColumnShowFullName"/>
</menu_item_check>
<menu_item_check
label="Show permission columns"
name="show_permissions">
<menu_item_check.on_click
function="ToggleControl"
parameter="FSFriendListColumnShowPermissions"/>
<menu_item_check.on_check
control="FSFriendListColumnShowPermissions"/>
</menu_item_check>
<menu_item_separator/>
<menu_item_check
label="Sort by username"
name="sort_by_username">
<menu_item_check.on_click
function="Contacts.Friends.SelectOption"
parameter="sort_by_username"/>
<menu_item_check.on_check
function="Contacts.Friends.CheckOption"
parameter="sort_by_username"/>
</menu_item_check>
<menu_item_check
label="Sort by display name"
name="sort_by_displayname">
<menu_item_check.on_click
function="Contacts.Friends.SelectOption"
parameter="sort_by_displayname"/>
<menu_item_check.on_check
function="Contacts.Friends.CheckOption"
parameter="sort_by_displayname"/>
</menu_item_check>
<menu_item_separator/>
<menu_item_check
label="Full name format Username (Display name)"
name="format_username_displayname">
<menu_item_check.on_click
function="Contacts.Friends.SelectOption"
parameter="format_username_displayname"/>
<menu_item_check.on_check
function="Contacts.Friends.CheckOption"
parameter="format_username_displayname"/>
<menu_item_check.on_enable
function="Contacts.Friends.EnableItem"
parameter="FSFriendListFullNameFormat"/>
</menu_item_check>
<menu_item_check
label="Full name format Display name (Username)"
name="format_displayname_username">
<menu_item_check.on_click
function="Contacts.Friends.SelectOption"
parameter="format_displayname_username"/>
<menu_item_check.on_check
function="Contacts.Friends.CheckOption"
parameter="format_displayname_username"/>
<menu_item_check.on_enable
function="Contacts.Friends.EnableItem"
parameter="FSFriendListFullNameFormat"/>
</menu_item_check>
</menu>
</context_menu>

View File

@ -48,7 +48,7 @@
control_name="RestrainedLove"
layout="topleft"
follows="left|top"
top_pad="10"
top_pad="3"
left="15"
width="270"
height="20"
@ -260,6 +260,17 @@
</radio_group>
<check_box
top_pad="2"
left="27"
follows="left|top"
height="16"
label="Show permissions column"
name="FSFriendListColumnShowPermissions"
width="270"
control_name="FSFriendListColumnShowPermissions"
tool_tip="The contact list will show the columns with the permissions you granted this avatar and vice versa.">
</check_box>
<check_box
top_pad="4"
left="18"
follows="left|top"
height="16"