You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.2 KiB
121 lines
3.2 KiB
//========= 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
|
|
|