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.h89
1 files changed, 39 insertions, 50 deletions
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 639ed83ada..8d79e073d2 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -33,88 +33,77 @@
#ifndef LL_LLAVATARLIST_H
#define LL_LLAVATARLIST_H
-#include <llscrolllistctrl.h>
+#include "llflatlistview.h"
+
+#include "llavatarlistitem.h"
-// *TODO: derive from ListView when it's ready.
-class LLAvatarList : public LLScrollListCtrl
+class LLAvatarList : public LLFlatListView
{
LOG_CLASS(LLAvatarList);
public:
- struct Params : public LLInitParam::Block<Params, LLScrollListCtrl::Params>
+ struct Params : public LLInitParam::Block<Params, LLFlatListView::Params>
{
Optional<S32> volume_column_width;
Optional<bool> online_go_first;
Params();
};
- enum EColumnOrder
- {
- COL_VOLUME,
- COL_NAME,
- COL_ONLINE,
- COL_ID,
- };
-
LLAvatarList(const Params&);
virtual ~LLAvatarList() {}
- /*virtual*/ void draw();
-
BOOL update(const std::vector<LLUUID>& all_buddies,
const std::string& name_filter = LLStringUtil::null);
+ void setContextMenu(LLAvatarListItem::ContextMenu* menu) { mContextMenu = menu; }
+
+ void sortByName();
+
protected:
- std::vector<LLUUID> getSelectedIDs();
- void addItem(const LLUUID& id, const std::string& name, BOOL is_bold, EAddPosition pos = ADD_BOTTOM);
+ void addNewItem(const LLUUID& id, const std::string& name, BOOL is_bold, EAddPosition pos = ADD_BOTTOM);
+ void computeDifference(
+ const std::vector<LLUUID>& vnew,
+ std::vector<LLUUID>& vadded,
+ std::vector<LLUUID>& vremoved);
private:
- static std::string getVolumeIcon(const LLUUID& id); /// determine volume icon from current avatar volume
- void updateVolume(); // update volume for all avatars
- bool mHaveVolumeColumn;
bool mOnlineGoFirst;
-};
-
-#include "llflatlistview.h"
+ LLAvatarListItem::ContextMenu* mContextMenu;
+};
-class LLAvatarListTmp : public LLFlatListView
+/** Abstract comparator for avatar items */
+class LLAvatarItemComparator : public LLFlatListView::ItemComparator
{
- LOG_CLASS(LLAvatarListTmp);
-public:
- struct Params : public LLInitParam::Block<Params, LLFlatListView::Params>
- {
- Optional<S32> volume_column_width;
- Optional<bool> online_go_first;
- Params();
- };
-
- LLAvatarListTmp(const Params&);
- virtual ~LLAvatarListTmp() {}
-
- /*virtual*/ void draw();
+ LOG_CLASS(LLAvatarItemComparator);
- BOOL update(const std::vector<LLUUID>& all_buddies,
- const std::string& name_filter = LLStringUtil::null);
+public:
+ LLAvatarItemComparator() {};
+ virtual ~LLAvatarItemComparator() {};
- const LLUUID getCurrentID() const;
- void setCommentText( const std::string& comment_text);
+ virtual bool compare(const LLPanel* item1, const LLPanel* item2) const;
protected:
- std::vector<LLUUID> getSelectedIDs();
- void addNewItem(const LLUUID& id, const std::string& name, BOOL is_bold, EAddPosition pos = ADD_BOTTOM);
- /*virtual*/ bool removeItemPair(item_pair_t* item_pair);
-private:
- static std::string getVolumeIcon(const LLUUID& id); /// determine volume icon from current avatar volume
- void updateVolume(); // update volume for all avatars
- void setCommentVisible(bool visible) const;
+ /**
+ * Returns true if avatar_item1 < avatar_item2, false otherwise
+ * Implement this method in your particular comparator.
+ * In Linux a compiler failed to build it using the name "compare", so it was renamed to doCompare
+ */
+ virtual bool doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const = 0;
+};
- bool mHaveVolumeColumn;
- bool mOnlineGoFirst;
-};
+class LLAvatarItemNameComparator : public LLAvatarItemComparator
+{
+ LOG_CLASS(LLAvatarItemNameComparator);
+public:
+ LLAvatarItemNameComparator() {};
+ virtual ~LLAvatarItemNameComparator() {};
+protected:
+ virtual bool doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const;
+};
#endif // LL_LLAVATARLIST_H