Fixed normal bug EXT-1857-'Group Info' btn is unnecessary in Friends Conference floater

--HG--
branch : product-engine
master
Eugene Kondrashev 2009-10-28 20:59:33 +02:00
parent e9c83f2343
commit 79738b2a65
5 changed files with 72 additions and 8 deletions

View File

@ -78,12 +78,15 @@ LLIMFloater::LLIMFloater(const LLUUID& session_id)
mSessionInitialized = im_session->mSessionInitialized;
mDialog = im_session->mType;
if (IM_NOTHING_SPECIAL == mDialog || IM_SESSION_P2P_INVITE == mDialog)
{
switch(mDialog){
case IM_NOTHING_SPECIAL:
case IM_SESSION_P2P_INVITE:
mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelIMControl, this);
}
else
{
break;
case IM_SESSION_CONFERENCE_START:
mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelAdHocControl, this);
break;
default:
mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelGroupControl, this);
}
}
@ -290,6 +293,15 @@ void* LLIMFloater::createPanelGroupControl(void* userdata)
return self->mControlPanel;
}
// static
void* LLIMFloater::createPanelAdHocControl(void* userdata)
{
LLIMFloater *self = (LLIMFloater*)userdata;
self->mControlPanel = new LLPanelAdHocControlPanel(self->mSessionID);
self->mControlPanel->setXMLFilename("panel_adhoc_control_panel.xml");
return self->mControlPanel;
}
void LLIMFloater::onSlide()
{
LLPanel* im_control_panel = getChild<LLPanel>("panel_im_control_panel");

View File

@ -102,6 +102,7 @@ private:
void onSlide();
static void* createPanelIMControl(void* userdata);
static void* createPanelGroupControl(void* userdata);
static void* createPanelAdHocControl(void* userdata);
// gets a rect that bounds possible positions for the LLIMFloater on a screen (EXT-1111)
void getAllowedRect(LLRect& rect);

View File

@ -187,3 +187,17 @@ void LLPanelGroupControlPanel::setSessionId(const LLUUID& session_id)
mGroupID = LLIMModel::getInstance()->getOtherParticipantID(session_id);
}
LLPanelAdHocControlPanel::LLPanelAdHocControlPanel(const LLUUID& session_id):LLPanelGroupControlPanel(session_id)
{
}
BOOL LLPanelAdHocControlPanel::postBuild()
{
mAvatarList = getChild<LLAvatarList>("speakers_list");
mParticipantList = new LLParticipantList(mSpeakerManager, mAvatarList);
return LLPanelChatControlPanel::postBuild();
}

View File

@ -88,15 +88,23 @@ public:
void setSessionId(const LLUUID& session_id);
/*virtual*/ void draw();
private:
void onGroupInfoButtonClicked();
protected:
LLUUID mGroupID;
LLSpeakerMgr* mSpeakerManager;
LLAvatarList* mAvatarList;
LLParticipantList* mParticipantList;
private:
void onGroupInfoButtonClicked();
};
class LLPanelAdHocControlPanel : public LLPanelGroupControlPanel
{
public:
LLPanelAdHocControlPanel(const LLUUID& session_id);
BOOL postBuild();
};
#endif // LL_LLPANELIMCONTROLPANEL_H

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
name="panel_im_control_panel"
width="146"
height="215"
border="false">
<avatar_list
color="DkGray2"
follows="left|top|right|bottom"
height="130"
ignore_online_status="true"
layout="topleft"
left="3"
name="speakers_list"
opaque="false"
top="10"
width="140" />
<button
name="call_btn"
label="Call"
width="90"
height="20" />
<button
name="end_call_btn"
label="End Call"
width="90"
height="20"
visible="false"/>
</panel>