summaryrefslogtreecommitdiff
path: root/indra/newview/llavatarlist.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llavatarlist.h')
-rw-r--r--indra/newview/llavatarlist.h64
1 files changed, 57 insertions, 7 deletions
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index a83a72b26c..5a55975413 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -37,6 +37,8 @@
#include "llavatarlistitem.h"
+class LLTimer;
+
/**
* Generic list of avatars.
*
@@ -51,46 +53,82 @@ class LLAvatarList : public LLFlatListView
{
LOG_CLASS(LLAvatarList);
public:
- typedef std::vector<LLUUID> uuid_vector_t;
+ typedef uuid_vec_t uuid_vector_t;
struct Params : public LLInitParam::Block<Params, LLFlatListView::Params>
{
- Optional<bool> ignore_online_status; // show all items as online
+ Optional<bool> ignore_online_status, // show all items as online
+ show_last_interaction_time, // show most recent interaction time. *HACK: move this to a derived class
+ show_info_btn,
+ show_profile_btn,
+ show_speaking_indicator;
Params();
};
LLAvatarList(const Params&);
- virtual ~LLAvatarList() {}
+ virtual ~LLAvatarList();
virtual void draw(); // from LLView
+ virtual void clear();
+
void setNameFilter(const std::string& filter);
- void setDirty(bool val = true) { mDirty = val; }
+ void setDirty(bool val = true, bool force_refresh = false);
uuid_vector_t& getIDs() { return mIDs; }
+ bool contains(const LLUUID& id);
void setContextMenu(LLAvatarListItem::ContextMenu* menu) { mContextMenu = menu; }
+ void setSessionID(const LLUUID& session_id) { mSessionID = session_id; }
+ const LLUUID& getSessionID() { return mSessionID; }
+ void toggleIcons();
+ void setSpeakingIndicatorsVisible(bool visible);
void sortByName();
+ void setShowIcons(std::string param_name);
+ bool getIconsVisible() const { return mShowIcons; }
+ const std::string getIconParamName() const{return mIconParamName;}
virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
+ // Return true if filter has at least one match.
+ bool filterHasMatches();
+
+ boost::signals2::connection setRefreshCompleteCallback(const commit_signal_t::slot_type& cb);
+
+ boost::signals2::connection setItemDoubleClickCallback(const mouse_signal_t::slot_type& cb);
+
+ virtual S32 notifyParent(const LLSD& info);
+
protected:
void refresh();
void addNewItem(const LLUUID& id, const std::string& name, BOOL is_online, EAddPosition pos = ADD_BOTTOM);
void computeDifference(
- const std::vector<LLUUID>& vnew,
- std::vector<LLUUID>& vadded,
- std::vector<LLUUID>& vremoved);
+ const uuid_vec_t& vnew,
+ uuid_vec_t& vadded,
+ uuid_vec_t& vremoved);
+ void updateLastInteractionTimes();
+ void onItemDoucleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask);
private:
bool mIgnoreOnlineStatus;
+ bool mShowLastInteractionTime;
bool mDirty;
+ bool mShowIcons;
+ bool mShowInfoBtn;
+ bool mShowProfileBtn;
+ bool mShowSpeakingIndicator;
+ LLTimer* mLITUpdateTimer; // last interaction time update timer
+ std::string mIconParamName;
std::string mNameFilter;
uuid_vector_t mIDs;
+ LLUUID mSessionID;
LLAvatarListItem::ContextMenu* mContextMenu;
+
+ commit_signal_t mRefreshCompleteSignal;
+ mouse_signal_t mItemDoubleClickSignal;
};
/** Abstract comparator for avatar items */
@@ -127,4 +165,16 @@ protected:
virtual bool doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const;
};
+class LLAvatarItemAgentOnTopComparator : public LLAvatarItemNameComparator
+{
+ LOG_CLASS(LLAvatarItemAgentOnTopComparator);
+
+public:
+ LLAvatarItemAgentOnTopComparator() {};
+ virtual ~LLAvatarItemAgentOnTopComparator() {};
+
+protected:
+ virtual bool doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const;
+};
+
#endif // LL_LLAVATARLIST_H