From ab0c9c6754836cb26a520d0a9b2d7bbdd13a5f32 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Fri, 22 Jan 2010 22:16:57 +0200 Subject: Fixed normal bugs EXT-4450 ([BSI] call buttons enabled when voice is disabled) and EXT-4313 (Should not be able to start a call when voice is disabled). Call buttons state now reacts on voice changes in time. - Added voiceWorking() method to LLVoiceClient to determine real availability of voice, because voiceEnabled() doesn't take into account possible errors. Perhaps there is no need in two methods- some investigation will be made and depending on its results they may become one non-static method. voiceWorking() uses state of voice client(mState) to determine voice availability. Also some states which are not currently counted by voiceWorking() as valid may be added if testing reveals problems. - To enable/disable call buttons in time, LLVoiceClientStatusObserver is used. Its trigger uses states from its enum only to skip updating button in some states(to avoid button blinking), but to determine button state LLVoiceClient's voiceWorking() is used. --HG-- branch : product-engine --- indra/newview/llavataractions.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 40c9bb6afa..bb14c41cec 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -263,18 +263,9 @@ bool LLAvatarActions::isCalling(const LLUUID &id) } //static -bool LLAvatarActions::canCall(const LLUUID &id) +bool LLAvatarActions::canCall() { - // For now we do not need to check whether passed UUID is ID of agent's friend. - // Use common check of Voice Client state. - { - // don't need to check online/offline status because "usual resident" (resident that is not a friend) - // can be only ONLINE. There is no way to see "usual resident" in OFFLINE status. If we see "usual - // resident" it automatically means that the resident is ONLINE. So to make a call to the "usual resident" - // we need to check only that "our" voice is enabled. - return LLVoiceClient::voiceEnabled(); - } - + return LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking(); } // static -- cgit v1.3 From a908a528fea9e51ca8c8d9e6cc7a7401991f160a Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Mon, 25 Jan 2010 22:19:03 +0200 Subject: No ticket. Fixed a bit(added check for canCall()) isCalling() method from LLAvataActions, but it appears that it is not used anywhere. So i commented it out. Maybe it should be removed? --HG-- branch : product-engine --- indra/newview/llavataractions.cpp | 7 +++++-- indra/newview/llavataractions.h | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index bb14c41cec..7eed2e7b9a 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -250,17 +250,20 @@ void LLAvatarActions::startAdhocCall(const std::vector& ids) make_ui_sound("UISndStartIM"); } +/* AD *TODO: Is this function needed any more? + I fixed it a bit(added check for canCall), but it appears that it is not used + anywhere. Maybe it should be removed? // static bool LLAvatarActions::isCalling(const LLUUID &id) { - if (id.isNull()) + if (id.isNull() || !canCall()) { return false; } LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL, id); return (LLIMModel::getInstance()->findIMSession(session_id) != NULL); -} +}*/ //static bool LLAvatarActions::canCall() diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index ebfd40b796..c751661acf 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -126,7 +126,10 @@ public: /** * Return true if the avatar is in a P2P voice call with a given user */ - static bool isCalling(const LLUUID &id); + /* AD *TODO: Is this function needed any more? + I fixed it a bit(added check for canCall), but it appears that it is not used + anywhere. Maybe it should be removed? + static bool isCalling(const LLUUID &id);*/ /** * @return true if call to the resident can be made -- cgit v1.3 From e5bd3b8a4846ee21cfaf726cfbf3e943b277e7c1 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk Date: Wed, 3 Feb 2010 22:42:10 +0200 Subject: Fixed bug EXT-2915 ([BSI] Pay Button is hard to find on small resolutions). Added a "Block/Unblock" item to the profile view panel overflow menu to make the menu more visible. --HG-- branch : product-engine --- indra/newview/llavataractions.cpp | 10 ++++++++ indra/newview/llavataractions.h | 5 ++++ indra/newview/llpanelavatar.cpp | 28 ++++++++++++++++++++++ indra/newview/llpanelavatar.h | 8 ++++++- indra/newview/llpanelpeoplemenus.cpp | 6 +---- .../skins/default/xui/en/menu_profile_overflow.xml | 13 ++++++++++ 6 files changed, 64 insertions(+), 6 deletions(-) (limited to 'indra/newview/llavataractions.cpp') diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 7eed2e7b9a..bd987eac77 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -612,3 +612,13 @@ bool LLAvatarActions::isBlocked(const LLUUID& id) gCacheName->getFullName(id, name); return LLMuteList::getInstance()->isMuted(id, name); } + +// static +bool LLAvatarActions::canBlock(const LLUUID& id) +{ + std::string firstname, lastname; + gCacheName->getName(id, firstname, lastname); + bool is_linden = !LLStringUtil::compareStrings(lastname, "Linden"); + bool is_self = id == gAgentID; + return !is_self && !is_linden; +} diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index c751661acf..16a58718a2 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -123,6 +123,11 @@ public: */ static bool isBlocked(const LLUUID& id); + /** + * @return true if you can block the avatar + */ + static bool canBlock(const LLUUID& id); + /** * Return true if the avatar is in a P2P voice call with a given user */ diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 48dd5513bd..4a7cdfc856 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -483,6 +483,7 @@ BOOL LLPanelAvatarProfile::postBuild() LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; registrar.add("Profile.Pay", boost::bind(&LLPanelAvatarProfile::pay, this)); registrar.add("Profile.Share", boost::bind(&LLPanelAvatarProfile::share, this)); + registrar.add("Profile.BlockUnblock", boost::bind(&LLPanelAvatarProfile::toggleBlock, this)); registrar.add("Profile.Kick", boost::bind(&LLPanelAvatarProfile::kick, this)); registrar.add("Profile.Freeze", boost::bind(&LLPanelAvatarProfile::freeze, this)); registrar.add("Profile.Unfreeze", boost::bind(&LLPanelAvatarProfile::unfreeze, this)); @@ -490,6 +491,8 @@ BOOL LLPanelAvatarProfile::postBuild() LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable; enable.add("Profile.EnableGod", boost::bind(&enable_god)); + enable.add("Profile.CheckItem", boost::bind(&LLPanelAvatarProfile::checkOverflowMenuItem, this, _2)); + enable.add("Profile.EnableItem", boost::bind(&LLPanelAvatarProfile::enableOverflowMenuItem, this, _2)); mProfileMenu = LLUICtrlFactory::getInstance()->createFromFile("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); @@ -666,6 +669,26 @@ void LLPanelAvatarProfile::fillAccountStatus(const LLAvatarData* avatar_data) childSetValue("acc_status_text", caption_text); } +bool LLPanelAvatarProfile::checkOverflowMenuItem(const LLSD& param) +{ + std::string item = param.asString(); + + if (item == "is_blocked") + return LLAvatarActions::isBlocked(getAvatarId()); + + return false; +} + +bool LLPanelAvatarProfile::enableOverflowMenuItem(const LLSD& param) +{ + std::string item = param.asString(); + + if (item == "can_block") + return LLAvatarActions::canBlock(getAvatarId()); + + return false; +} + void LLPanelAvatarProfile::pay() { LLAvatarActions::pay(getAvatarId()); @@ -676,6 +699,11 @@ void LLPanelAvatarProfile::share() LLAvatarActions::share(getAvatarId()); } +void LLPanelAvatarProfile::toggleBlock() +{ + LLAvatarActions::toggleBlock(getAvatarId()); +} + void LLPanelAvatarProfile::kick() { LLAvatarActions::kick(getAvatarId()); diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index ce59f1e93d..632590aa27 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -192,12 +192,18 @@ protected: */ void share(); + /** + * Add/remove resident to/from your block list. + */ + void toggleBlock(); + void kick(); void freeze(); void unfreeze(); void csr(); - + bool checkOverflowMenuItem(const LLSD& param); + bool enableOverflowMenuItem(const LLSD& param); bool enableGod(); diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index 470cfca8fe..7e184c78a8 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -164,11 +164,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata) if (item == std::string("can_block")) { const LLUUID& id = mUUIDs.front(); - std::string firstname, lastname; - gCacheName->getName(id, firstname, lastname); - bool is_linden = !LLStringUtil::compareStrings(lastname, "Linden"); - bool is_self = id == gAgentID; - return !is_self && !is_linden; + return LLAvatarActions::canBlock(id); } else if (item == std::string("can_add")) { diff --git a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml index 1dc1c610cf..407ce14e81 100644 --- a/indra/newview/skins/default/xui/en/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/en/menu_profile_overflow.xml @@ -19,6 +19,19 @@ + + + + +