Work on normal task EXT-2640 (Create a tabbed IM multifloater)

- initial commit: added xml file and base implementation of the tabbed IM multifloater

--HG--
branch : product-engine
meow-7.2.2
Mike Antipov 2009-11-20 17:14:50 +02:00
parent 0876df6eef
commit 3c4a98ff3c
5 changed files with 200 additions and 0 deletions

View File

@ -239,6 +239,7 @@ set(viewer_SOURCE_FILES
llhudtext.cpp
llhudview.cpp
llimfloater.cpp
llimfloatercontainer.cpp
llimhandler.cpp
llimpanel.cpp
llimview.cpp
@ -737,6 +738,7 @@ set(viewer_HEADER_FILES
llhudtext.h
llhudview.h
llimfloater.h
llimfloatercontainer.h
llimpanel.h
llimview.h
llinspect.h

View File

@ -0,0 +1,97 @@
/**
* @file llimfloatercontainer.cpp
* @brief Multifloater containing active IM sessions in separate tab container tabs
*
* $LicenseInfo:firstyear=2009&license=viewergpl$
*
* Copyright (c) 2009, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
#include "llimfloatercontainer.h"
// TODO: mantipov: replace with floater_im_session
#include "llimpanel.h"
//
// LLIMFloaterContainer
//
LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed)
: LLMultiFloater(seed),
mActiveVoiceFloater(NULL)
{
mAutoResize = FALSE;
}
LLIMFloaterContainer::~LLIMFloaterContainer()
{
}
BOOL LLIMFloaterContainer::postBuild()
{
// TODO: mantipov: verify if it is needed
mTabContainer->lockTabs();
return TRUE;
}
void LLIMFloaterContainer::onOpen(const LLSD& key)
{
// TODO: mantipov: verify if it is needed
if (key.isDefined())
{
LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID());
if (impanel)
{
impanel->openFloater();
}
}
}
void LLIMFloaterContainer::addFloater(LLFloater* floaterp,
BOOL select_added_floater,
LLTabContainer::eInsertionPoint insertion_point)
{
if(!floaterp) return;
// already here
if (floaterp->getHost() == this)
{
openFloater(floaterp->getKey());
return;
}
LLMultiFloater::addFloater(floaterp, select_added_floater, insertion_point);
// make sure active voice icon shows up for new tab
if (floaterp == mActiveVoiceFloater)
{
mTabContainer->setTabImage(floaterp, "active_voice_tab.tga");
}
}
// EOF

View File

@ -0,0 +1,61 @@
/**
* @file llimfloatercontainer.h
* @brief Multifloater containing active IM sessions in separate tab container tabs
*
* $LicenseInfo:firstyear=2009&license=viewergpl$
*
* Copyright (c) 2009, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
#ifndef LL_LLIMFLOATERCONTAINER_H
#define LL_LLIMFLOATERCONTAINER_H
#include "llfloater.h"
#include "llmultifloater.h"
class LLTabContainer;
class LLIMFloaterContainer : public LLMultiFloater
{
public:
LLIMFloaterContainer(const LLSD& seed);
virtual ~LLIMFloaterContainer();
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
/*virtual*/ void addFloater(LLFloater* floaterp,
BOOL select_added_floater,
LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END);
static LLFloater* getCurrentVoiceFloater();
protected:
LLFloater* mActiveVoiceFloater;
};
#endif // LL_LLIMFLOATERCONTAINER_H

View File

@ -109,6 +109,7 @@
#include "llfloaterwhitelistentry.h"
#include "llfloaterwindlight.h"
#include "llfloaterworldmap.h"
#include "llimfloatercontainer.h"
#include "llinspectavatar.h"
#include "llinspectgroup.h"
#include "llinspectobject.h"
@ -171,6 +172,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("hud", "floater_hud.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHUD>);
LLFloaterReg::add("impanel", "floater_im_session.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloater>);
LLFloaterReg::add("im_container", "floater_im_container.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloaterContainer>);
LLFloaterReg::add("incoming_call", "floater_incoming_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIncomingCallDialog>);
LLFloaterReg::add("inventory", "floater_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInventory>);
LLFloaterReg::add("inspect", "floater_inspect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInspect>);

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<multi_floater
background_visible="true"
bg_color="yellow"
can_resize="true"
height="390"
layout="topleft"
name="floater_im_box"
help_topic="floater_im_box"
save_rect="true"
save_visibility="true"
single_instance="true"
title="Instant Messages"
width="392">
<tab_container
background_visible="true"
bg_alpha_color="green"
follows="left|right|top|bottom"
height="390"
layout="topleft"
left="1"
name="im_box_tab_container"
tab_position="bottom"
tab_width="80"
top="0"
width="390" />
<icon
color="red"
enabled="false"
follows="left|right|bottom"
height="17"
image_name="tabarea.tga"
layout="bottomleft"
left="1"
name="im_box_tab_container_icon"
bottom="0"
width="390" />
</multi_floater>