EXP-824 Adding volume slider and block btn in basic mode IM panel
parent
ae6ceb6193
commit
bff172b374
|
|
@ -99,7 +99,8 @@ void LLPanelChatControlPanel::updateCallButton()
|
|||
void LLPanelChatControlPanel::updateButtons(bool is_call_started)
|
||||
{
|
||||
getChildView("end_call_btn_panel")->setVisible( is_call_started);
|
||||
getChildView("voice_ctrls_btn_panel")->setVisible( is_call_started);
|
||||
getChildView("volume_ctrl_panel")->setVisible( is_call_started);
|
||||
getChildView("voice_ctrls_btn_panel")->setVisible( is_call_started && findChild<LLView>("voice_ctrls_btn_panel"));
|
||||
getChildView("call_btn_panel")->setVisible( ! is_call_started);
|
||||
updateCallButton();
|
||||
|
||||
|
|
@ -119,9 +120,9 @@ BOOL LLPanelChatControlPanel::postBuild()
|
|||
childSetAction("call_btn", boost::bind(&LLPanelChatControlPanel::onCallButtonClicked, this));
|
||||
childSetAction("end_call_btn", boost::bind(&LLPanelChatControlPanel::onEndCallButtonClicked, this));
|
||||
childSetAction("voice_ctrls_btn", boost::bind(&LLPanelChatControlPanel::onOpenVoiceControlsClicked, this));
|
||||
|
||||
|
||||
LLVoiceClient::getInstance()->addObserver(this);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -156,13 +157,93 @@ BOOL LLPanelIMControlPanel::postBuild()
|
|||
childSetAction("share_btn", boost::bind(&LLPanelIMControlPanel::onShareButtonClicked, this));
|
||||
childSetAction("teleport_btn", boost::bind(&LLPanelIMControlPanel::onTeleportButtonClicked, this));
|
||||
childSetAction("pay_btn", boost::bind(&LLPanelIMControlPanel::onPayButtonClicked, this));
|
||||
|
||||
childSetAction("mute_btn", boost::bind(&LLPanelIMControlPanel::onClickMuteVolume, this));
|
||||
childSetAction("block_btn", boost::bind(&LLPanelIMControlPanel::onClickBlock, this));
|
||||
childSetAction("unblock_btn", boost::bind(&LLPanelIMControlPanel::onClickUnblock, this));
|
||||
|
||||
getChild<LLUICtrl>("volume_slider")->setCommitCallback(boost::bind(&LLPanelIMControlPanel::onVolumeChange, this, _2));
|
||||
|
||||
getChildView("add_friend_btn")->setEnabled(!LLAvatarActions::isFriend(getChild<LLAvatarIconCtrl>("avatar_icon")->getAvatarId()));
|
||||
|
||||
setFocusReceivedCallback(boost::bind(&LLPanelIMControlPanel::onFocusReceived, this));
|
||||
|
||||
|
||||
return LLPanelChatControlPanel::postBuild();
|
||||
}
|
||||
|
||||
void LLPanelIMControlPanel::draw()
|
||||
{
|
||||
bool is_muted = LLMuteList::getInstance()->isMuted(mAvatarID);
|
||||
|
||||
getChild<LLUICtrl>("block_btn_panel")->setVisible(!is_muted);
|
||||
getChild<LLUICtrl>("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<LLUICtrl>("mute_btn");
|
||||
mute_btn->setValue( is_muted_voice );
|
||||
|
||||
LLUICtrl* volume_slider = getChild<LLUICtrl>("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 );
|
||||
}
|
||||
|
||||
LLPanelChatControlPanel::draw();
|
||||
}
|
||||
|
||||
void LLPanelIMControlPanel::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<LLTextBox>("avatar_name")->getText(), LLMute::AGENT);
|
||||
if (!is_muted)
|
||||
{
|
||||
mute_list->add(mute, LLMute::flagVoiceChat);
|
||||
}
|
||||
else
|
||||
{
|
||||
mute_list->remove(mute, LLMute::flagVoiceChat);
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelIMControlPanel::onClickBlock()
|
||||
{
|
||||
LLMute mute(mAvatarID, getChild<LLTextBox>("avatar_name")->getText(), LLMute::AGENT);
|
||||
|
||||
LLMuteList::getInstance()->add(mute);
|
||||
}
|
||||
|
||||
void LLPanelIMControlPanel::onClickUnblock()
|
||||
{
|
||||
LLMute mute(mAvatarID, getChild<LLTextBox>("avatar_name")->getText(), LLMute::AGENT);
|
||||
|
||||
LLMuteList::getInstance()->remove(mute);
|
||||
}
|
||||
|
||||
void LLPanelIMControlPanel::onVolumeChange(const LLSD& data)
|
||||
{
|
||||
F32 volume = (F32)data.asReal();
|
||||
LLVoiceClient::getInstance()->setUserVolume(mAvatarID, volume);
|
||||
}
|
||||
|
||||
void LLPanelIMControlPanel::onTeleportButtonClicked()
|
||||
{
|
||||
LLAvatarActions::offerTeleport(mAvatarID);
|
||||
|
|
@ -262,6 +343,9 @@ void LLPanelIMControlPanel::onNameCache(const LLUUID& id, const std::string& ful
|
|||
std::string avatar_name = full_name;
|
||||
getChild<LLTextBox>("avatar_name")->setValue(avatar_name);
|
||||
getChild<LLTextBox>("avatar_name")->setToolTip(avatar_name);
|
||||
|
||||
bool is_linden = LLStringUtil::endsWith(full_name, " Linden");
|
||||
getChild<LLUICtrl>("mute_btn")->setEnabled( !is_linden);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -94,6 +94,12 @@ private:
|
|||
void onPayButtonClicked();
|
||||
void onFocusReceived();
|
||||
|
||||
void onClickMuteVolume();
|
||||
void onClickBlock();
|
||||
void onClickUnblock();
|
||||
/*virtual*/ void draw();
|
||||
void onVolumeChange(const LLSD& data);
|
||||
|
||||
LLUUID mAvatarID;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -23,102 +23,179 @@
|
|||
orientation="vertical"
|
||||
top_pad="5"
|
||||
width="145">
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="2"
|
||||
min_height="20"
|
||||
width="140"
|
||||
name="view_profile_btn_panel"
|
||||
top="0"
|
||||
user_resize="false">
|
||||
<button
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Profile"
|
||||
name="view_profile_btn"
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="2"
|
||||
min_height="20"
|
||||
width="140"
|
||||
name="view_profile_btn_panel"
|
||||
top="0"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="25"
|
||||
layout="topleft"
|
||||
min_height="25"
|
||||
width="140"
|
||||
name="add_friend_btn_panel"
|
||||
user_resize="false">
|
||||
<button
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Add Friend"
|
||||
name="add_friend_btn"
|
||||
top="5"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="25"
|
||||
layout="topleft"
|
||||
min_height="25"
|
||||
width="140"
|
||||
name="teleport_btn_panel"
|
||||
user_resize="false">
|
||||
<button
|
||||
auto_resize="false"
|
||||
user_resize="false">
|
||||
<button
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Teleport"
|
||||
name="teleport_btn"
|
||||
tool_tip = "Offer to teleport this person"
|
||||
label="Profile"
|
||||
name="view_profile_btn"
|
||||
top="0"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="25"
|
||||
layout="topleft"
|
||||
min_height="25"
|
||||
width="140"
|
||||
name="call_btn_panel"
|
||||
name="add_friend_btn_panel"
|
||||
user_resize="false">
|
||||
<button
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Call"
|
||||
name="call_btn"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="25"
|
||||
layout="topleft"
|
||||
min_height="25"
|
||||
width="140"
|
||||
name="end_call_btn_panel"
|
||||
user_resize="false"
|
||||
visible="false">
|
||||
<button
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="End Call"
|
||||
name="end_call_btn"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
auto_resize="true"
|
||||
follows="top|left"
|
||||
height="0"
|
||||
layout="topleft"
|
||||
min_height="0"
|
||||
width="140"
|
||||
name="spacer"
|
||||
user_resize="false" />
|
||||
<button
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Add Friend"
|
||||
name="add_friend_btn"
|
||||
top="5"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="25"
|
||||
layout="topleft"
|
||||
min_height="25"
|
||||
width="140"
|
||||
name="teleport_btn_panel"
|
||||
user_resize="false">
|
||||
<button
|
||||
auto_resize="false"
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Teleport"
|
||||
name="teleport_btn"
|
||||
tool_tip = "Offer to teleport this person"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="25"
|
||||
layout="topleft"
|
||||
min_height="25"
|
||||
width="140"
|
||||
name="call_btn_panel"
|
||||
user_resize="false">
|
||||
<button
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Call"
|
||||
name="call_btn"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="25"
|
||||
layout="topleft"
|
||||
min_height="25"
|
||||
width="140"
|
||||
name="end_call_btn_panel"
|
||||
user_resize="false"
|
||||
visible="false">
|
||||
<button
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="End Call"
|
||||
name="end_call_btn"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="25"
|
||||
layout="topleft"
|
||||
min_height="25"
|
||||
width="140"
|
||||
name="block_btn_panel"
|
||||
user_resize="false">
|
||||
<button
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Block"
|
||||
name="block_btn"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="25"
|
||||
layout="topleft"
|
||||
min_height="25"
|
||||
width="140"
|
||||
name="unblock_btn_panel"
|
||||
user_resize="false"
|
||||
visible="false">
|
||||
<button
|
||||
follows="left|top|right"
|
||||
height="23"
|
||||
label="Unblock"
|
||||
name="unblock_btn"
|
||||
width="140" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
follows="top|left|right"
|
||||
height="25"
|
||||
layout="topleft"
|
||||
min_height="54"
|
||||
width="140"
|
||||
name="volume_ctrl_panel"
|
||||
visible="false"
|
||||
user_resize="false">
|
||||
<text
|
||||
follows="left|top|right"
|
||||
left="5"
|
||||
top="14"
|
||||
height="23"
|
||||
name="volume_ctrl_text"
|
||||
width="140">Volume Control:</text>
|
||||
<slider
|
||||
follows="top|left"
|
||||
height="23"
|
||||
increment="0.01"
|
||||
left="0"
|
||||
max_val="0.95"
|
||||
min_val="0.05"
|
||||
name="volume_slider"
|
||||
show_text="false"
|
||||
tool_tip="Voice volume"
|
||||
top_pad="-5"
|
||||
value="0.5"
|
||||
width="125" />
|
||||
<button
|
||||
follows="top|left"
|
||||
height="16"
|
||||
image_disabled="Audio_Off"
|
||||
image_disabled_selected="AudioMute_Off"
|
||||
image_hover_selected="AudioMute_Over"
|
||||
image_selected="AudioMute_Off"
|
||||
image_unselected="Audio_Off"
|
||||
is_toggle="true"
|
||||
left_pad="0"
|
||||
top_delta="4"
|
||||
name="mute_btn"
|
||||
width="16" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
mouse_opaque="false"
|
||||
auto_resize="true"
|
||||
follows="top|left"
|
||||
height="0"
|
||||
layout="topleft"
|
||||
min_height="0"
|
||||
width="140"
|
||||
name="spacer"
|
||||
user_resize="false" />
|
||||
</layout_stack>
|
||||
</panel>
|
||||
|
|
|
|||
Loading…
Reference in New Issue