diff options
Diffstat (limited to 'indra/newview/llavatarlistitem.cpp')
-rw-r--r-- | indra/newview/llavatarlistitem.cpp | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp new file mode 100644 index 0000000000..feae8202bc --- /dev/null +++ b/indra/newview/llavatarlistitem.cpp @@ -0,0 +1,165 @@ +/** + * @file llavatarlistitem.cpp + * @avatar list item source file + * + * $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 "llavatarlistitem.h" + +#include "llfloaterreg.h" +#include "llagent.h" +#include "lloutputmonitorctrl.h" +#include "llavatariconctrl.h" +#include "llbutton.h" + + +LLAvatarListItem::LLAvatarListItem() +: LLPanel(), + mAvatarIcon(NULL), + mAvatarName(NULL), + mStatus(NULL), + mSpeakingIndicator(NULL), + mInfoBtn(NULL) +{ + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_list_item.xml"); +} + +BOOL LLAvatarListItem::postBuild() +{ + mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon"); + mAvatarName = getChild<LLTextBox>("avatar_name"); + mStatus = getChild<LLTextBox>("avatar_status"); + + mSpeakingIndicator = getChild<LLOutputMonitorCtrl>("speaking_indicator"); + mInfoBtn = getChild<LLButton>("info_btn"); + + mInfoBtn->setVisible(false); + mInfoBtn->setClickedCallback(boost::bind(&LLAvatarListItem::onInfoBtnClick, this)); + +/* + if(!p.buttons.profile) + { + delete mProfile; + mProfile = NULL; + + LLRect rect; + + rect.setLeftTopAndSize(mName->getRect().mLeft, mName->getRect().mTop, mName->getRect().getWidth() + 30, mName->getRect().getHeight()); + mName->setRect(rect); + + if(mStatus) + { + rect.setLeftTopAndSize(mStatus->getRect().mLeft + 30, mStatus->getRect().mTop, mStatus->getRect().getWidth(), mStatus->getRect().getHeight()); + mStatus->setRect(rect); + } + + if(mLocator) + { + rect.setLeftTopAndSize(mLocator->getRect().mLeft + 30, mLocator->getRect().mTop, mLocator->getRect().getWidth(), mLocator->getRect().getHeight()); + mLocator->setRect(rect); + } + + if(mInfo) + { + rect.setLeftTopAndSize(mInfo->getRect().mLeft + 30, mInfo->getRect().mTop, mInfo->getRect().getWidth(), mInfo->getRect().getHeight()); + mInfo->setRect(rect); + } + } +*/ + return TRUE; +} + +void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask) +{ + childSetVisible("hovered_icon", true); + mInfoBtn->setVisible(true); + + LLPanel::onMouseEnter(x, y, mask); +} + +void LLAvatarListItem::onMouseLeave(S32 x, S32 y, MASK mask) +{ + childSetVisible("hovered_icon", false); + mInfoBtn->setVisible(false); + + LLPanel::onMouseLeave(x, y, mask); +} + +void LLAvatarListItem::setStatus(const std::string& status) +{ + mStatus->setValue(status); +} + +void LLAvatarListItem::setName(const std::string& name) +{ + mAvatarName->setValue(name); + mAvatarName->setToolTip(name); +} + +void LLAvatarListItem::setAvatarId(const LLUUID& id) +{ + mAvatarIcon->setValue(id); + mSpeakingIndicator->setSpeakerId(id); +} + +void LLAvatarListItem::onInfoBtnClick() +{ + LLFloaterReg::showInstance("inspect_avatar", mAvatarIcon->getValue()); + + /* TODO fix positioning of inspector + localPointToScreen(mXPos, mYPos, &mXPos, &mYPos); + + + LLRect rect; + + // *TODO Vadim: rewrite this. "+= -" looks weird. + S32 delta = mYPos - inspector->getRect().getHeight(); + if(delta < 0) + { + mYPos += -delta; + } + + rect.setLeftTopAndSize(mXPos, mYPos, + inspector->getRect().getWidth(), inspector->getRect().getHeight()); + inspector->setRect(rect); + inspector->setFrontmost(true); + inspector->setVisible(true); + */ +} + +void LLAvatarListItem::setValue( const LLSD& value ) +{ + if (!value.isMap()) return;; + if (!value.has("selected")) return; + childSetVisible("selected_icon", value["selected"]); +} + |