From 621117bbc6fdc62db7cf44c6924afd31f51f3bc6 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 7 Aug 2013 17:29:51 +0200 Subject: [PATCH] Complete cleanup of fspanelimcontrolpanel.cpp/h --- indra/newview/fsfloaterim.cpp | 2 +- indra/newview/fspanelimcontrolpanel.cpp | 263 +----------------------- indra/newview/fspanelimcontrolpanel.h | 62 +----- 3 files changed, 9 insertions(+), 318 deletions(-) diff --git a/indra/newview/fsfloaterim.cpp b/indra/newview/fsfloaterim.cpp index 23c7b3d326..61709fd9f4 100644 --- a/indra/newview/fsfloaterim.cpp +++ b/indra/newview/fsfloaterim.cpp @@ -1218,7 +1218,7 @@ void FSFloaterIM::sessionInitReplyReceived(const LLUUID& im_session_id) // updating "Call" button from group control panel here to enable it without placing into draw() (EXT-4796) if(gAgent.isInGroup(im_session_id)) { - mControlPanel->updateCallButton(); + updateCallButton(); } //*TODO here we should remove "starting session..." warning message if we added it in postBuild() (IB) diff --git a/indra/newview/fspanelimcontrolpanel.cpp b/indra/newview/fspanelimcontrolpanel.cpp index 9b864a6b34..50cb7e2f63 100644 --- a/indra/newview/fspanelimcontrolpanel.cpp +++ b/indra/newview/fspanelimcontrolpanel.cpp @@ -28,248 +28,23 @@ #include "llviewerprecompiledheaders.h" -#include "llfloaterreg.h" - #include "fspanelimcontrolpanel.h" -#include "llagent.h" -#include "llappviewer.h" // for gDisconnected -#include "llavataractions.h" -#include "llavatariconctrl.h" -#include "llbutton.h" -#include "llgroupactions.h" -#include "llavatarlist.h" #include "fsparticipantlist.h" #include "llimview.h" -#include "llvoicechannel.h" #include "llspeakers.h" -void FSPanelChatControlPanel::onCallButtonClicked() -{ - gIMMgr->startCall(mSessionId); -} - -void FSPanelChatControlPanel::onEndCallButtonClicked() -{ - gIMMgr->endCall(mSessionId); -} - -void FSPanelChatControlPanel::onOpenVoiceControlsClicked() -{ - LLFloaterReg::showInstance("fs_voice_controls"); -} - -void FSPanelChatControlPanel::onChange(EStatusType status, const std::string &channelURI, bool proximal) -{ - if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL) - { - return; - } - - updateCallButton(); -} - -void FSPanelChatControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state) -{ - updateButtons(new_state); -} - -void FSPanelChatControlPanel::updateCallButton() -{ - // hide/show call button - bool voice_enabled = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking(); - - LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId); - - if (!session) - { - getChildView("call_btn")->setEnabled(false); - return; - } - - bool session_initialized = session->mSessionInitialized; - bool callback_enabled = session->mCallBackEnabled; - - BOOL enable_connect = session_initialized - && voice_enabled - && callback_enabled; - getChildView("call_btn")->setEnabled(enable_connect); -} - -void FSPanelChatControlPanel::updateButtons(LLVoiceChannel::EState state) -{ - bool is_call_started = state >= LLVoiceChannel::STATE_CALL_STARTED; - getChildView("end_call_btn_panel")->setVisible( is_call_started); - getChildView("voice_ctrls_btn_panel")->setVisible( is_call_started && findChild("voice_ctrls_btn_panel")); - getChildView("call_btn_panel")->setVisible( ! is_call_started); - - getChildView("volume_ctrl_panel")->setVisible(state == LLVoiceChannel::STATE_CONNECTED); - - updateCallButton(); -} - -FSPanelChatControlPanel::~FSPanelChatControlPanel() -{ -} - -BOOL FSPanelChatControlPanel::postBuild() -{ - return TRUE; -} - void FSPanelChatControlPanel::setSessionId(const LLUUID& session_id) { //Method is called twice for AdHoc and Group chat. Second time when server init reply received mSessionId = session_id; } -FSPanelIMControlPanel::FSPanelIMControlPanel() -{ -} - -FSPanelIMControlPanel::~FSPanelIMControlPanel() -{ -} - -BOOL FSPanelIMControlPanel::postBuild() -{ - childSetAction("mute_btn", boost::bind(&FSPanelIMControlPanel::onClickMuteVolume, this)); - childSetAction("block_btn", boost::bind(&FSPanelIMControlPanel::onClickBlock, this)); - childSetAction("unblock_btn", boost::bind(&FSPanelIMControlPanel::onClickUnblock, this)); - - getChild("volume_slider")->setCommitCallback(boost::bind(&FSPanelIMControlPanel::onVolumeChange, this, _2)); - - setFocusReceivedCallback(boost::bind(&FSPanelIMControlPanel::onFocusReceived, this)); - - return FSPanelChatControlPanel::postBuild(); -} - -void FSPanelIMControlPanel::draw() -{ - bool is_muted = LLMuteList::getInstance()->isMuted(mAvatarID); - - getChild("block_btn_panel")->setVisible(!is_muted); - getChild("unblock_btn_panel")->setVisible(is_muted); - - if (getChildView("volume_ctrl_panel")->getVisible()) - { - - bool is_muted_voice = LLMuteList::getInstance()->isMuted(mAvatarID, LLMute::flagVoiceChat); - - LLUICtrl* mute_btn = getChild("mute_btn"); - mute_btn->setValue( is_muted_voice ); - - LLUICtrl* volume_slider = getChild("volume_slider"); - volume_slider->setEnabled( !is_muted_voice ); - - F32 volume; - - if (is_muted_voice) - { - // it's clearer to display their volume as zero - volume = 0.f; - } - else - { - // actual volume - volume = LLVoiceClient::getInstance()->getUserVolume(mAvatarID); - } - volume_slider->setValue( (F64)volume ); - } - - FSPanelChatControlPanel::draw(); -} - -void FSPanelIMControlPanel::onClickMuteVolume() -{ - // By convention, we only display and toggle voice mutes, not all mutes - LLMuteList* mute_list = LLMuteList::getInstance(); - bool is_muted = mute_list->isMuted(mAvatarID, LLMute::flagVoiceChat); - - LLMute mute(mAvatarID, getChild("avatar_name")->getText(), LLMute::AGENT); - if (!is_muted) - { - mute_list->add(mute, LLMute::flagVoiceChat); - } - else - { - mute_list->remove(mute, LLMute::flagVoiceChat); - } -} - -void FSPanelIMControlPanel::onClickBlock() -{ - LLMute mute(mAvatarID, getChild("avatar_name")->getText(), LLMute::AGENT); - - LLMuteList::getInstance()->add(mute); -} - -void FSPanelIMControlPanel::onClickUnblock() -{ - LLMute mute(mAvatarID, getChild("avatar_name")->getText(), LLMute::AGENT); - - LLMuteList::getInstance()->remove(mute); -} - -void FSPanelIMControlPanel::onVolumeChange(const LLSD& data) -{ - F32 volume = (F32)data.asReal(); - LLVoiceClient::getInstance()->setUserVolume(mAvatarID, volume); -} - -void FSPanelIMControlPanel::onFocusReceived() -{ - // Disable all the buttons (Call, Teleport, etc) if disconnected. - if (gDisconnected) - { - setAllChildrenEnabled(FALSE); - } -} - -void FSPanelIMControlPanel::setSessionId(const LLUUID& session_id) -{ - FSPanelChatControlPanel::setSessionId(session_id); - - LLIMModel& im_model = LLIMModel::instance(); - - mAvatarID = im_model.getOtherParticipantID(session_id); -} - -//virtual -void FSPanelIMControlPanel::changed(U32 mask) -{ - getChildView("add_friend_btn")->setEnabled(!LLAvatarActions::isFriend(mAvatarID)); - - // Disable "Teleport" button if friend is offline - if(LLAvatarActions::isFriend(mAvatarID)) - { - getChildView("teleport_btn")->setEnabled(LLAvatarTracker::instance().isBuddyOnline(mAvatarID)); - } -} - -void FSPanelIMControlPanel::onNameCache(const LLUUID& id, const std::string& full_name, bool is_group) -{ - if ( id == mAvatarID ) - { - std::string avatar_name = full_name; - getChild("avatar_name")->setValue(avatar_name); - getChild("avatar_name")->setToolTip(avatar_name); - - bool is_linden = LLStringUtil::endsWith(full_name, " Linden"); - getChild("mute_btn")->setEnabled( !is_linden); - } -} - FSPanelGroupControlPanel::FSPanelGroupControlPanel(const LLUUID& session_id): mParticipantList(NULL) { } -BOOL FSPanelGroupControlPanel::postBuild() -{ - return FSPanelChatControlPanel::postBuild(); -} - FSPanelGroupControlPanel::~FSPanelGroupControlPanel() { delete mParticipantList; @@ -281,34 +56,10 @@ void FSPanelGroupControlPanel::draw() { // Need to resort the participant list if it's in sort by recent speaker order. if (mParticipantList) - mParticipantList->update(); - FSPanelChatControlPanel::draw(); -} - -void FSPanelGroupControlPanel::onGroupInfoButtonClicked() -{ - LLGroupActions::show(mGroupID); -} - -void FSPanelGroupControlPanel::onSortMenuItemClicked(const LLSD& userdata) -{ - // TODO: Check this code when when sort order menu will be added. (EM) - if (false && !mParticipantList) - return; - - std::string chosen_item = userdata.asString(); - - if (chosen_item == "sort_name") { - mParticipantList->setSortOrder(LLParticipantList::E_SORT_BY_NAME); + mParticipantList->update(); } - -} - -void FSPanelGroupControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state) -{ - FSPanelChatControlPanel::onVoiceChannelStateChanged(old_state, new_state); - mParticipantList->setSpeakingIndicatorsVisible(new_state >= LLVoiceChannel::STATE_CALL_STARTED); + FSPanelChatControlPanel::draw(); } void FSPanelGroupControlPanel::setSessionId(const LLUUID& session_id) @@ -325,13 +76,7 @@ void FSPanelGroupControlPanel::setSessionId(const LLUUID& session_id) } } - -FSPanelAdHocControlPanel::FSPanelAdHocControlPanel(const LLUUID& session_id):FSPanelGroupControlPanel(session_id) +FSPanelAdHocControlPanel::FSPanelAdHocControlPanel(const LLUUID& session_id) + : FSPanelGroupControlPanel(session_id) { } - -BOOL FSPanelAdHocControlPanel::postBuild() -{ - //We don't need LLPanelGroupControlPanel::postBuild() to be executed as there is no group_info_btn at AdHoc chat - return FSPanelChatControlPanel::postBuild(); -} diff --git a/indra/newview/fspanelimcontrolpanel.h b/indra/newview/fspanelimcontrolpanel.h index 237f25486d..d04a842ab3 100644 --- a/indra/newview/fspanelimcontrolpanel.h +++ b/indra/newview/fspanelimcontrolpanel.h @@ -30,74 +30,30 @@ #define FS_PANELIMCONTROLPANEL_H #include "llpanel.h" -#include "llvoicechannel.h" -#include "llcallingcard.h" class LLParticipantList; class FSPanelChatControlPanel : public LLPanel - , public LLVoiceClientStatusObserver { public: FSPanelChatControlPanel() : mSessionId(LLUUID()) {}; - ~FSPanelChatControlPanel(); - - virtual BOOL postBuild(); - - void onCallButtonClicked(); - void onEndCallButtonClicked(); - void onOpenVoiceControlsClicked(); - - // Implements LLVoiceClientStatusObserver::onChange() to enable the call - // button when voice is available - /*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); - - virtual void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state); - - void updateButtons(LLVoiceChannel::EState state); - - // Enables/disables call button depending on voice availability - void updateCallButton(); + ~FSPanelChatControlPanel() { } virtual void setSessionId(const LLUUID& session_id); const LLUUID& getSessionId() { return mSessionId; } private: LLUUID mSessionId; - - // connection to voice channel state change signal - boost::signals2::connection mVoiceChannelStateChangeConnection; }; -class FSPanelIMControlPanel : public FSPanelChatControlPanel, LLFriendObserver +class FSPanelIMControlPanel : public FSPanelChatControlPanel { public: - FSPanelIMControlPanel(); - ~FSPanelIMControlPanel(); - - BOOL postBuild(); - - void setSessionId(const LLUUID& session_id); - - // LLFriendObserver trigger - virtual void changed(U32 mask); - -protected: - void onNameCache(const LLUUID& id, const std::string& full_name, bool is_group); - -private: - void onFocusReceived(); - - void onClickMuteVolume(); - void onClickBlock(); - void onClickUnblock(); - /*virtual*/ void draw(); - void onVolumeChange(const LLSD& data); - - LLUUID mAvatarID; + FSPanelIMControlPanel() { } + ~FSPanelIMControlPanel() { } }; @@ -107,8 +63,6 @@ public: FSPanelGroupControlPanel(const LLUUID& session_id); ~FSPanelGroupControlPanel(); - BOOL postBuild(); - void setSessionId(const LLUUID& session_id); /*virtual*/ void draw(); @@ -116,20 +70,12 @@ protected: LLUUID mGroupID; LLParticipantList* mParticipantList; - -private: - void onGroupInfoButtonClicked(); - void onSortMenuItemClicked(const LLSD& userdata); - /*virtual*/ void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state); }; class FSPanelAdHocControlPanel : public FSPanelGroupControlPanel { public: FSPanelAdHocControlPanel(const LLUUID& session_id); - - BOOL postBuild(); - }; #endif // FS_PANELIMCONTROLPANEL_H