diff options
Diffstat (limited to 'indra')
| -rwxr-xr-x[-rw-r--r--] | indra/llcommon/llfoldertype.h | 4 | ||||
| -rwxr-xr-x[-rw-r--r--] | indra/llui/llfolderviewitem.cpp | 8 | ||||
| -rwxr-xr-x[-rw-r--r--] | indra/llui/llfolderviewitem.h | 2 | ||||
| -rwxr-xr-x[-rw-r--r--] | indra/newview/llconversationmodel.h | 8 | ||||
| -rwxr-xr-x[-rw-r--r--] | indra/newview/llconversationview.cpp | 58 | ||||
| -rwxr-xr-x[-rw-r--r--] | indra/newview/llconversationview.h | 51 | ||||
| -rwxr-xr-x[-rw-r--r--] | indra/newview/llimfloatercontainer.cpp | 0 | ||||
| -rwxr-xr-x[-rw-r--r--] | indra/newview/llviewerfoldertype.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml | 33 | 
9 files changed, 142 insertions, 24 deletions
| diff --git a/indra/llcommon/llfoldertype.h b/indra/llcommon/llfoldertype.h index a0c847914f..6b5ae572a9 100644..100755 --- a/indra/llcommon/llfoldertype.h +++ b/indra/llcommon/llfoldertype.h @@ -89,7 +89,9 @@ public:  		FT_COUNT, -		FT_NONE = -1 +		FT_NONE = -1, + +        FT_PROFILE = 58  	};  	static EType 				lookup(const std::string& type_name); diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index 52923389cd..c46af27a04 100644..100755 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -609,13 +609,14 @@ void LLFolderViewItem::draw()  	static LLUIColor sSearchStatusColor = LLUIColorTable::instance().getColor("InventorySearchStatusColor", DEFAULT_WHITE);  	static LLUIColor sMouseOverColor = LLUIColorTable::instance().getColor("InventoryMouseOverColor", DEFAULT_WHITE); + +    getViewModelItem()->update(); +  	const Params& default_params = LLUICtrlFactory::getDefaultParams<LLFolderViewItem>();  	const S32 TOP_PAD = default_params.item_top_pad;  	const S32 FOCUS_LEFT = 1;  	const LLFontGL* font = getLabelFontForStyle(mLabelStyle); -	getViewModelItem()->update(); -  	//--------------------------------------------------------------------------------//  	// Draw open folder arrow  	// @@ -793,6 +794,9 @@ void LLFolderViewItem::draw()  							  sFilterTextColor, LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,  							  filter_string_length, S32_MAX, &right_x, FALSE );  		} + +         +        LLView::draw();   	}  const LLFolderViewModelInterface* LLFolderViewItem::getFolderViewModel( void ) const diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h index 6eacbe8bd0..766d9b3fe3 100644..100755 --- a/indra/llui/llfolderviewitem.h +++ b/indra/llui/llfolderviewitem.h @@ -231,7 +231,7 @@ public:  	virtual void onMouseLeave(S32 x, S32 y, MASK mask); -	virtual LLView* findChildView(const std::string& name, BOOL recurse) const { return NULL; } +	//virtual LLView* findChildView(const std::string& name, BOOL recurse) const { return LLView::findChildView(name, recurse); }  	//	virtual void handleDropped();  	virtual void draw(); diff --git a/indra/newview/llconversationmodel.h b/indra/newview/llconversationmodel.h index 2775bf8186..4f13d3d3a1 100644..100755 --- a/indra/newview/llconversationmodel.h +++ b/indra/newview/llconversationmodel.h @@ -30,6 +30,7 @@  #include "llfolderviewitem.h"  #include "llfolderviewmodel.h"  #include "llavatarname.h" +#include "llviewerfoldertype.h"  // Implementation of conversations list @@ -56,7 +57,7 @@ public:  	virtual const std::string& getSearchableName() const { return mName; }  	virtual const LLUUID& getUUID() const { return mUUID; }  	virtual time_t getCreationDate() const { return 0; } -	virtual LLPointer<LLUIImage> getIcon() const { return NULL; } +	virtual LLPointer<LLUIImage> getIcon() const { return LLUI::getUIImage(LLViewerFolderType::lookupIconName(LLFolderType::FT_PROFILE, FALSE)); }  	virtual LLPointer<LLUIImage> getOpenIcon() const { return getIcon(); }  	virtual LLFontGL::StyleFlags getLabelStyle() const { return LLFontGL::NORMAL; }  	virtual std::string getLabelSuffix() const { return LLStringUtil::null; } @@ -103,7 +104,7 @@ public:  //	bool hasSameValues(std::string name, const LLUUID& uuid) { return ((name == mName) && (uuid == mUUID)); }  	bool hasSameValue(const LLUUID& uuid) { return (uuid == mUUID); } -	 +  	void resetRefresh() { mNeedsRefresh = false; }  	bool needsRefresh() { return mNeedsRefresh; } @@ -120,6 +121,7 @@ public:  	LLConversationItemSession(const LLUUID& uuid, LLFolderViewModelInterface& root_view_model);  	virtual ~LLConversationItemSession() {} +    LLPointer<LLUIImage> getIcon() const { return NULL; }  	void setSessionID(const LLUUID& session_id) { mUUID = session_id; mNeedsRefresh = true; }  	void addParticipant(LLConversationItemParticipant* participant);  	void removeParticipant(LLConversationItemParticipant* participant); @@ -151,7 +153,7 @@ public:  	void setIsModerator(bool is_moderator) { mIsModerator = is_moderator; mNeedsRefresh = true; }  	void onAvatarNameCache(const LLAvatarName& av_name); - +	  	void dumpDebugData();  private: diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index 9f3df93aba..9fb4b4f0dc 100644..100755 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -31,11 +31,17 @@  #include "llconversationmodel.h"  #include "llimconversation.h"  #include "llimfloatercontainer.h" +#include "llfloaterreg.h" + +#include "lluictrlfactory.h" +#include "llavatariconctrl.h"  //  // Implementation of conversations list session widgets  // + +  LLConversationViewSession::Params::Params() :	  	container()  {} @@ -113,14 +119,42 @@ void LLConversationViewSession::refresh()  // Implementation of conversations list participant (avatar) widgets  // +static LLDefaultChildRegistry::Register<LLConversationViewParticipant> r("conversation_view_participant"); +  LLConversationViewParticipant::Params::Params() :	 -	participant_id() +container(), +participant_id(), +info_button("info_button"), +output_monitor("output_monitor")  {}  LLConversationViewParticipant::LLConversationViewParticipant( const LLConversationViewParticipant::Params& p ):  	LLFolderViewItem(p), -	mUUID(p.participant_id) +    mUUID(p.participant_id) +{ + +} + +void LLConversationViewParticipant::initFromParams(const LLConversationViewParticipant::Params& params) +{	 +	LLButton::Params info_button_params(params.info_button()); +	LLButton * button = LLUICtrlFactory::create<LLButton>(info_button_params); +	addChild(button);	 + +    LLOutputMonitorCtrl::Params output_monitor_params(params.output_monitor()); +    LLOutputMonitorCtrl * outputMonitor = LLUICtrlFactory::create<LLOutputMonitorCtrl>(output_monitor_params); +    addChild(outputMonitor); +} + +BOOL LLConversationViewParticipant::postBuild()  { +	mInfoBtn = getChild<LLButton>("info_btn"); +	mInfoBtn->setClickedCallback(boost::bind(&LLConversationViewParticipant::onInfoBtnClick, this)); +	 +	mSpeakingIndicator = getChild<LLOutputMonitorCtrl>("speaking_indicator"); +	 +	LLFolderViewItem::postBuild(); +	return TRUE;  }  void LLConversationViewParticipant::refresh() @@ -135,4 +169,24 @@ void LLConversationViewParticipant::refresh()  	LLFolderViewItem::refresh();  } +void LLConversationViewParticipant::addToFolder(LLFolderViewFolder* folder) +{ +    //Add the item to the folder (conversation) +    LLFolderViewItem::addToFolder(folder); +	 +    //Now retrieve the folder (conversation) UUID, which is the speaker session +    LLConversationItem* vmi = this->getParentFolder() ? dynamic_cast<LLConversationItem*>(this->getParentFolder()->getViewModelItem()) : NULL; +    if(vmi) +    { +        mSpeakingIndicator->setSpeakerId(mUUID,  +            vmi->getUUID()); //set the session id +} +} + +void LLConversationViewParticipant::onInfoBtnClick() +{ +	LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mUUID)); +} +  // EOF + diff --git a/indra/newview/llconversationview.h b/indra/newview/llconversationview.h index a3755d9722..2ac6c999d6 100644..100755 --- a/indra/newview/llconversationview.h +++ b/indra/newview/llconversationview.h @@ -29,6 +29,15 @@  #include "llfolderviewitem.h" + + + +#include "llstyle.h" +#include "llcallbackmap.h" +#include "lltextbox.h" +#include "llbutton.h" +#include "lloutputmonitorctrl.h" +  class LLIMFloaterContainer;  class LLConversationViewSession;  class LLConversationViewParticipant; @@ -62,28 +71,40 @@ public:  // Implementation of conversations list participant (avatar) widgets +class LLAvatarIconCtrl; +  class LLConversationViewParticipant : public LLFolderViewItem  { +  public: -	struct Params : public LLInitParam::Block<Params, LLFolderViewItem::Params> -	{ -		Optional<LLUUID>	participant_id; -		 -		Params(); -	}; -	 + +    struct Params : public LLInitParam::Block<Params, LLFolderViewItem::Params> +    { +        Optional<LLIMFloaterContainer*>			container; +        Optional<LLUUID>	participant_id; +		Optional<LLButton::Params>				info_button; +        Optional<LLOutputMonitorCtrl::Params>   output_monitor; +         +        Params(); +    }; + +    virtual ~LLConversationViewParticipant( void ) { } +    bool hasSameValue(const LLUUID& uuid) { return (uuid == mUUID); } +    virtual void refresh(); +    void addToFolder(LLFolderViewFolder* folder); +      protected:  	friend class LLUICtrlFactory; -	LLConversationViewParticipant( const Params& p ); -	 -public: -	virtual ~LLConversationViewParticipant( void ) { } - -	bool hasSameValue(const LLUUID& uuid) { return (uuid == mUUID); } +    LLConversationViewParticipant( const Params& p ); +	void initFromParams(const Params& params); +	BOOL postBuild(); -	virtual void refresh(); +	void onInfoBtnClick(); +	  private: -	LLUUID mUUID;		// UUID of the participant +	LLButton * mInfoBtn; +    LLOutputMonitorCtrl* mSpeakingIndicator; +    LLUUID mUUID;		// UUID of the participant  };  #endif // LL_LLCONVERSATIONVIEW_H diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index faca92e662..faca92e662 100644..100755 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp index a179b61cff..d470abb8c5 100644..100755 --- a/indra/newview/llviewerfoldertype.cpp +++ b/indra/newview/llviewerfoldertype.cpp @@ -147,6 +147,8 @@ LLViewerFolderDictionary::LLViewerFolderDictionary()  		addEntry((LLFolderType::EType)type, 		new ViewerFolderEntry("New Folder",				"Inv_FolderOpen",		"Inv_FolderClosed",		FALSE,     false));  	}	  #endif + +    addEntry(LLFolderType::FT_PROFILE, 				new ViewerFolderEntry("Profile",				"Generic_Person",		"Generic_Person",		FALSE,     false, "default"));  }  bool LLViewerFolderDictionary::initEnsemblesFromFile() diff --git a/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml b/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml new file mode 100755 index 0000000000..0b5c1b9511 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<conversation_view_participant +  folder_arrow_image="ForSale_Badge" +  folder_indentation="8" +  item_height="20"  +  item_top_pad="4" +  selection_image="Rounded_Square" +  mouse_opaque="true" +  follows="left|top|right" +> +<info_button +     height="16" +     image_pressed="Info_Press" +     image_unselected="Info_Over" +     layout="topleft" +     left_pad="3" +     right="200" +     name="info_btn" +     tab_stop="false" +     top_delta="0" +     width="16" /> +<output_monitor +	auto_update="true" +	draw_border="false" +	height="16" +	layout="topleft" +	left_pad="5" +	right="225" +	mouse_opaque="true" +	name="speaking_indicator" +	visible="true" +	width="20" />	  +</conversation_view_participant> | 
