diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/newview/llimfloatercontainer.cpp | 97 | ||||
| -rw-r--r-- | indra/newview/llimfloatercontainer.h | 61 | ||||
| -rw-r--r-- | indra/newview/llviewerfloaterreg.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_im_container.xml | 38 | 
5 files changed, 200 insertions, 0 deletions
| diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index e7458529be..e7ce6a8fbd 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -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 diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp new file mode 100644 index 0000000000..94017526c8 --- /dev/null +++ b/indra/newview/llimfloatercontainer.cpp @@ -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
 diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h new file mode 100644 index 0000000000..10cde56c6e --- /dev/null +++ b/indra/newview/llimfloatercontainer.h @@ -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
 diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 7772f613f0..f84e3c9939 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -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>); diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml new file mode 100644 index 0000000000..a1a0aee97b --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_im_container.xml @@ -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>
 | 
