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> |