aboutsummaryrefslogtreecommitdiff
path: root/sp/src/public/vgui_controls/ListViewPanel.h
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /sp/src/public/vgui_controls/ListViewPanel.h
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'sp/src/public/vgui_controls/ListViewPanel.h')
-rw-r--r--sp/src/public/vgui_controls/ListViewPanel.h121
1 files changed, 121 insertions, 0 deletions
diff --git a/sp/src/public/vgui_controls/ListViewPanel.h b/sp/src/public/vgui_controls/ListViewPanel.h
new file mode 100644
index 00000000..e0fe4f41
--- /dev/null
+++ b/sp/src/public/vgui_controls/ListViewPanel.h
@@ -0,0 +1,121 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef LISTVIEWPANEL_H
+#define LISTVIEWPANEL_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <utllinkedlist.h>
+#include <utlvector.h>
+
+namespace vgui
+{
+
+class ListViewPanel;
+typedef bool (*ListViewSortFunc_t)(KeyValues *kv1, KeyValues *kv2);
+
+class ListViewItem;
+
+//-----------------------------------------------------------------------------
+// Purpose: List Ctrl Panel with each item having an icon and text after it
+//-----------------------------------------------------------------------------
+class ListViewPanel : public Panel
+{
+ DECLARE_CLASS_SIMPLE( ListViewPanel, Panel );
+
+public:
+ ListViewPanel(Panel *parent, const char *panelName);
+ ~ListViewPanel();
+
+ virtual int AddItem(const KeyValues *data, bool bScrollToItem, bool bSortOnAdd);
+ virtual int GetItemCount();
+ virtual KeyValues *GetItem(int itemID);
+ virtual void ApplyItemChanges(int itemID);
+ virtual void RemoveItem(int itemID);
+ virtual void DeleteAllItems();
+ virtual int GetItemIDFromPos(int iPos); // valid from [0, GetItemCount)
+
+ virtual int InvalidItemID();
+ virtual bool IsValidItemID(int itemID);
+
+ virtual void ScrollToItem(int itemID);
+
+ virtual void SetSortFunc(ListViewSortFunc_t func);
+ virtual void SortList();
+
+ // image handling
+ virtual void SetImageList(ImageList *imageList, bool deleteImageListWhenDone);
+
+ virtual void SetFont(HFont font);
+
+ // returns the count of selected items
+ virtual int GetSelectedItemsCount();
+
+ // returns the selected item by selection index, valid in range [0, GetNumSelectedRows)
+ virtual int GetSelectedItem(int selectionIndex);
+
+ // sets no item as selected
+ virtual void ClearSelectedItems();
+
+ // adds a item to the select list
+ virtual void AddSelectedItem(int itemID);
+
+ // sets this single item as the only selected item
+ virtual void SetSingleSelectedItem(int itemID);
+
+protected:
+ // overrides
+ virtual void OnMouseWheeled(int delta);
+ virtual void OnSizeChanged(int wide, int tall);
+ virtual void PerformLayout();
+ virtual void Paint();
+ virtual void ApplySchemeSettings(IScheme *pScheme);
+ virtual void OnMousePressed( MouseCode code);
+ virtual void OnMouseDoublePressed( MouseCode code);
+ virtual void OnKeyCodeTyped( KeyCode code);
+ virtual void OnKeyTyped(wchar_t unichar);
+ MESSAGE_FUNC( OnSliderMoved, "ScrollBarSliderMoved" );
+ virtual int GetItemsPerColumn();
+
+private:
+ ScrollBar *m_hbar;
+
+ friend class ListViewItem;
+ void OnItemMousePressed(ListViewItem* pItem, MouseCode code);
+ void OnItemMouseDoublePressed(ListViewItem* pItem, MouseCode code);
+ int GetItemsMaxWidth();
+ int GetItemIndex(int itemID);
+ void OnShiftSelect(int itemID);
+ void FinishKeyPress(int itemID);
+
+ CUtlLinkedList<ListViewItem*, int> m_DataItems;
+ CUtlVector<int> m_SortedItems;
+ ListViewSortFunc_t m_pSortFunc;
+
+ int m_iRowHeight;
+ HFont m_hFont;
+
+ Color m_LabelFgColor;
+ Color m_SelectionFgColor;
+
+ // selection data
+ CUtlVector<int> m_SelectedItems;
+ int m_LastSelectedItemID;
+ int m_ShiftStartItemID;
+
+ bool m_bNeedsSort;
+ bool m_bDeleteImageListWhenDone;
+ ImageList *m_pImageList;
+};
+
+
+}
+
+#endif // LISTVIEWPANEL_H