Woopsi 1.0
GUI Framework for Nintendo DS Homebrew

listdata.h

00001 #ifndef _LIST_BASE_H_
00002 #define _LIST_BASE_H_
00003 
00004 #include "woopsiarray.h"
00005 #include "listdataeventhandler.h"
00006 #include "listdataitem.h"
00007 #include "woopsistring.h"
00008 
00009 namespace WoopsiUI {
00010 
00016         class ListData {
00017         public:
00018 
00022                 ListData();
00023 
00027                 virtual ~ListData();
00028 
00034                 virtual void addItem(const WoopsiString& text, const u32 value);
00035 
00041                 virtual void addItem(ListDataItem* item);
00042 
00043 
00048                 virtual void removeItem(const s32 index);
00049 
00054                 virtual void selectItem(const s32 index);
00055 
00060                 virtual void deselectItem(const s32 index);
00061 
00065                 virtual void removeAllItems();
00066 
00073                 virtual const s32 getSelectedIndex() const;
00074 
00080                 virtual void setSelectedIndex(const s32 index);
00081 
00086                 virtual const ListDataItem* getSelectedItem() const;
00087 
00092                 virtual inline void setAllowMultipleSelections(const bool allowMultipleSelections) { _allowMultipleSelections = allowMultipleSelections; };
00093 
00098                 virtual inline const ListDataItem* getItem(const s32 index) const { return _items[index]; };
00099 
00103                 virtual void sort();
00104 
00109                 virtual inline const s32 getItemCount() const { return _items.size(); };
00110 
00115                 virtual void selectAllItems();
00116 
00120                 virtual void deselectAllItems();
00121 
00128                 virtual void setItemSelected(const s32 index, const bool selected);
00129 
00134                 virtual inline const bool allowsMultipleSelections() const { return _allowMultipleSelections; };
00135 
00141                 virtual inline void setSortInsertedItems(const bool sortInsertedItems) { _sortInsertedItems = sortInsertedItems; };
00142 
00147                 inline void addListDataEventHandler(ListDataEventHandler* eventHandler) {
00148                         _listDataEventhandlers.push_back(eventHandler);
00149                 }
00150 
00155                 void removeListDataEventHandler(ListDataEventHandler* eventHandler);
00156 
00157         protected:
00158                 WoopsiArray<ListDataItem*> _items;                                                      
00159                 WoopsiArray<ListDataEventHandler*> _listDataEventhandlers;      
00160                 bool _allowMultipleSelections;                                                          
00161                 bool _sortInsertedItems;                                                                        
00168                 virtual void quickSort(const s32 start, const s32 end);
00169 
00175                 virtual void swapItems(const s32 index1, const s32 index2);
00176 
00183                 const s32 getSortedInsertionIndex(const ListDataItem* item) const;
00184 
00188                 void raiseDataChangedEvent();
00189 
00193                 void raiseSelectionChangedEvent();
00194         };
00195 }
00196 
00197 #endif