summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rwxr-xr-x[-rw-r--r--]indra/llcommon/llfoldertype.h4
-rwxr-xr-x[-rw-r--r--]indra/llui/llfolderviewitem.cpp8
-rwxr-xr-x[-rw-r--r--]indra/llui/llfolderviewitem.h2
-rwxr-xr-x[-rw-r--r--]indra/newview/llconversationmodel.h8
-rwxr-xr-x[-rw-r--r--]indra/newview/llconversationview.cpp58
-rwxr-xr-x[-rw-r--r--]indra/newview/llconversationview.h51
-rwxr-xr-x[-rw-r--r--]indra/newview/llimfloatercontainer.cpp0
-rwxr-xr-x[-rw-r--r--]indra/newview/llviewerfoldertype.cpp2
-rwxr-xr-xindra/newview/skins/default/xui/en/widgets/conversation_view_participant.xml33
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>