diff --git a/indra/newview/fsfloatercontacts.cpp b/indra/newview/fsfloatercontacts.cpp index c37889e900..a428e77ec7 100644 --- a/indra/newview/fsfloatercontacts.cpp +++ b/indra/newview/fsfloatercontacts.cpp @@ -698,6 +698,12 @@ void FSFloaterContacts::addFriend(const LLUUID& agent_id) edit_my_object_column["type"] = "checkbox"; edit_my_object_column["value"] = relationInfo->isRightGrantedTo(LLRelationship::GRANT_MODIFY_OBJECTS); + LLSD& online_their_column = element["columns"][LIST_ONLINE_THEIRS]; + online_their_column["column"] = "icon_visible_online_theirs"; + online_their_column["type"] = "checkbox"; + online_their_column["enabled"] = ""; + online_their_column["value"] = relationInfo->isRightGrantedFrom(LLRelationship::GRANT_ONLINE_STATUS); + LLSD& visible_their_map_column = element["columns"][LIST_VISIBLE_MAP_THEIRS]; visible_their_map_column["column"] = "icon_visible_map_theirs"; visible_their_map_column["type"] = "checkbox"; @@ -778,6 +784,7 @@ void FSFloaterContacts::updateFriendItem(const LLUUID& agent_id, const LLRelatio itemp->getColumn(LIST_VISIBLE_ONLINE)->setValue(info->isRightGrantedTo(LLRelationship::GRANT_ONLINE_STATUS)); itemp->getColumn(LIST_VISIBLE_MAP)->setValue(info->isRightGrantedTo(LLRelationship::GRANT_MAP_LOCATION)); itemp->getColumn(LIST_EDIT_MINE)->setValue(info->isRightGrantedTo(LLRelationship::GRANT_MODIFY_OBJECTS)); + itemp->getColumn(LIST_ONLINE_THEIRS)->setValue(info->isRightGrantedFrom(LLRelationship::GRANT_ONLINE_STATUS)); itemp->getColumn(LIST_VISIBLE_MAP_THEIRS)->setValue(info->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION)); itemp->getColumn(LIST_EDIT_THEIRS)->setValue(info->isRightGrantedFrom(LLRelationship::GRANT_MODIFY_OBJECTS)); S32 change_generation = info->getChangeSerialNum(); @@ -1201,6 +1208,7 @@ void FSFloaterContacts::onColumnDisplayModeChanged(const std::string& settings_n 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_online_theirs" || p.name.getValue() == "icon_visible_map_theirs" || p.name.getValue() == "icon_edit_theirs") { diff --git a/indra/newview/fsfloatercontacts.h b/indra/newview/fsfloatercontacts.h index 0f7eca3a22..35a24e16ef 100644 --- a/indra/newview/fsfloatercontacts.h +++ b/indra/newview/fsfloatercontacts.h @@ -92,6 +92,7 @@ private: LIST_VISIBLE_ONLINE, LIST_VISIBLE_MAP, LIST_EDIT_MINE, + LIST_ONLINE_THEIRS, LIST_VISIBLE_MAP_THEIRS, LIST_EDIT_THEIRS, LIST_FRIEND_UPDATE_GEN diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index fb8dd4b891..8b8972b5e5 100755 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -84,6 +84,10 @@ LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/) mBtnPermissionMap(NULL), mBtnPermissionEditMine(NULL), mIconPermissionEditTheirs(NULL), + // Extended Friend Permissions + mIconPermissionMapTheirs(NULL), + mIconPermissionOnlineTheirs(NULL), + // mSpeakingIndicator(NULL), mInfoBtn(NULL), mProfileBtn(NULL), @@ -165,6 +169,10 @@ BOOL LLAvatarListItem::postBuild() mBtnPermissionMap = getChild("permission_map_btn"); mBtnPermissionEditMine = getChild("permission_edit_mine_btn"); mIconPermissionEditTheirs = getChild("permission_edit_theirs_icon"); + // Extended Friend Permissions + mIconPermissionMapTheirs = getChild("permission_map_theirs_icon"); + mIconPermissionOnlineTheirs = getChild("permission_online_theirs_icon"); + // mBtnPermissionOnline->setClickedCallback(boost::bind(&LLAvatarListItem::onPermissionOnlineClick, this)); mBtnPermissionMap->setClickedCallback(boost::bind(&LLAvatarListItem::onPermissionMapClick, this)); @@ -177,6 +185,10 @@ BOOL LLAvatarListItem::postBuild() mBtnPermissionEditMine->setVisible(false); mBtnPermissionEditMine->setIsChrome(TRUE); mIconPermissionEditTheirs->setVisible(false); + // Extended Friend Permissions + mIconPermissionMapTheirs->setVisible(false); + mIconPermissionOnlineTheirs->setVisible(false); + // // radar @@ -946,6 +958,11 @@ void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item) //S32 permission_edit_theirs_width = avatar_item->mIconPermissionEditMine->getRect().mLeft - avatar_item->mIconPermissionEditTheirs->getRect().mLeft; S32 permission_edit_theirs_width = 18; + // Extended Friend Permissions + S32 permission_online_theirs_width = 18; + S32 permission_map_theirs_width = 18; + // + // last interaction time textbox width + padding //S32 last_interaction_time_width = avatar_item->mIconPermissionEditTheirs->getRect().mLeft - avatar_item->mLastInteractionTime->getRect().mLeft; S32 last_interaction_time_width = 37; @@ -961,6 +978,10 @@ void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item) sChildrenWidths[--index] = icon_width; sChildrenWidths[--index] = 0; // for avatar name we don't need its width, it will be calculated as "left available space" sChildrenWidths[--index] = last_interaction_time_width; + // Extended Friend Permissions + sChildrenWidths[--index] = permission_online_theirs_width; + sChildrenWidths[--index] = permission_map_theirs_width; + // sChildrenWidths[--index] = permission_edit_theirs_width; sChildrenWidths[--index] = permission_edit_mine_width; sChildrenWidths[--index] = permission_map_width; @@ -1094,11 +1115,25 @@ bool LLAvatarListItem::showPermissions(bool visible) mIconPermissionEditTheirs->setColor(LLUIColorTable::instance().getColor("White_10")); else mIconPermissionEditTheirs->setColor(LLUIColorTable::instance().getColor("White")); + // Extended Friend Permissions + if (!relation->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION)) + mIconPermissionMapTheirs->setColor(LLUIColorTable::instance().getColor("White_10")); + else + mIconPermissionMapTheirs->setColor(LLUIColorTable::instance().getColor("White")); + if (!relation->isRightGrantedFrom(LLRelationship::GRANT_ONLINE_STATUS)) + mIconPermissionOnlineTheirs->setColor(LLUIColorTable::instance().getColor("White_10")); + else + mIconPermissionOnlineTheirs->setColor(LLUIColorTable::instance().getColor("White")); + // mBtnPermissionOnline->setVisible(true); mBtnPermissionMap->setVisible(true); mBtnPermissionEditMine->setVisible(true); mIconPermissionEditTheirs->setVisible(true); + // Extended Friend Permissions + mIconPermissionMapTheirs->setVisible(true); + mIconPermissionOnlineTheirs->setVisible(true); + // } else @@ -1107,6 +1142,10 @@ bool LLAvatarListItem::showPermissions(bool visible) mBtnPermissionMap->setVisible(false); mBtnPermissionEditMine->setVisible(false); mIconPermissionEditTheirs->setVisible(false); + // Extended Friend Permissions + mIconPermissionMapTheirs->setVisible(false); + mIconPermissionOnlineTheirs->setVisible(false); + // } updateChildren(); @@ -1243,6 +1282,14 @@ LLView* LLAvatarListItem::getItemChildView(EAvatarListItemChildIndex child_view_ case ALIC_PERMISSION_EDIT_THEIRS: child_view = mIconPermissionEditTheirs; break; + // Extended Friend Permissions + case ALIC_PERMISSION_MAP_THEIRS: + child_view = mIconPermissionMapTheirs; + break; + case ALIC_PERMISSION_ONLINE_THEIRS: + child_view = mIconPermissionOnlineTheirs; + break; + // case ALIC_INFO_BUTTON: child_view = mInfoBtn; break; diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index 81cc14f360..a86c932c9f 100755 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h @@ -185,6 +185,12 @@ protected: LLButton* mBtnPermissionEditMine; /// Indicator for permission to edit their objects. LLIconCtrl* mIconPermissionEditTheirs; + // Extended Friend Permissions + /// Indicator for permission to show their position on the map. + LLIconCtrl* mIconPermissionMapTheirs; + /// Indicator for permission to see their online status. + LLIconCtrl* mIconPermissionOnlineTheirs; + // void confirmModifyRights(bool grant, S32 rights); void rightsConfirmationCallback(const LLSD& notification, const LLSD& response, S32 rights); @@ -231,6 +237,10 @@ private: ALIC_PERMISSION_MAP, ALIC_PERMISSION_EDIT_MINE, ALIC_PERMISSION_EDIT_THEIRS, + // Extended Friend Permissions + ALIC_PERMISSION_MAP_THEIRS, + ALIC_PERMISSION_ONLINE_THEIRS, + // ALIC_INTERACTION_TIME, ALIC_NAME, ALIC_ICON, diff --git a/indra/newview/skins/ansastorm/xui/en/panel_fs_contacts_friends.xml b/indra/newview/skins/ansastorm/xui/en/panel_fs_contacts_friends.xml index 03e67eda2f..243189f80e 100644 --- a/indra/newview/skins/ansastorm/xui/en/panel_fs_contacts_friends.xml +++ b/indra/newview/skins/ansastorm/xui/en/panel_fs_contacts_friends.xml @@ -74,6 +74,11 @@ name="icon_edit_mine" tool_tip="Friend can edit, delete or take objects" width="16" /> + + + diff --git a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml index e550484e39..6980566b8d 100755 --- a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml @@ -23,7 +23,9 @@ - + + + diff --git a/indra/newview/skins/default/xui/de/panel_fs_contacts_friends.xml b/indra/newview/skins/default/xui/de/panel_fs_contacts_friends.xml index 5950196d15..4e9ec614e3 100644 --- a/indra/newview/skins/default/xui/de/panel_fs_contacts_friends.xml +++ b/indra/newview/skins/default/xui/de/panel_fs_contacts_friends.xml @@ -8,8 +8,9 @@ - - + + +