Woopsi 1.3
Nintendo DS Gui Framework
libwoopsi/include/listbox.h
00001 #ifndef _LISTBOX_H_
00002 #define _LISTBOX_H_
00003 
00004 #include "scrollingpanel.h"
00005 #include "listdataeventhandler.h"
00006 #include "listdata.h"
00007 #include "listboxdataitem.h"
00008 #include "gadgetstyle.h"
00009 #include "listboxbase.h"
00010 
00011 namespace WoopsiUI {
00012 
00021     class ListBox : public ListBoxBase, public ScrollingPanel, public ListDataEventHandler {
00022     public:
00023         
00035         ListBox(s16 x, s16 y, u16 width, u16 height, GadgetStyle* style = NULL);
00036 
00042         virtual void addOption(const WoopsiString& text, const u32 value);
00043 
00048         virtual void addOption(ListBoxDataItem* option);
00049 
00054         virtual void removeOption(const s32 index);
00055 
00059         virtual void removeAllOptions();
00060 
00073         virtual void addOption(const WoopsiString& text, const u32 value, const u16 normalTextColour, const u16 normalBackColour, const u16 selectedTextColour, const u16 selectedBackColour);
00074 
00080         virtual void selectOption(const s32 index);
00081 
00087         virtual void deselectOption(const s32 index);
00088 
00094         virtual void selectAllOptions();
00095 
00100         virtual void deselectAllOptions();
00101 
00108         virtual const s32 getSelectedIndex() const;
00109 
00116         virtual void setSelectedIndex(const s32 index);
00117 
00122         virtual const ListBoxDataItem* getSelectedOption() const;
00123         
00128         virtual inline void setAllowMultipleSelections(const bool allowMultipleSelections) { _options.setAllowMultipleSelections(allowMultipleSelections); };
00129 
00134         virtual inline const bool allowsMultipleSelections() const { return _options.allowsMultipleSelections(); };
00135 
00139         virtual void resizeCanvas();
00140 
00145         virtual inline const ListBoxDataItem* getOption(const s32 index) {
00146             return (const ListBoxDataItem*)_options.getItem(index);
00147         };
00148 
00152         virtual void sort();
00153 
00158         virtual inline const s32 getOptionCount() const {
00159             return _options.getItemCount();
00160         };
00161 
00166         virtual const u16 getOptionHeight() const;
00167 
00173         virtual inline void setSortInsertedItems(const bool sortInsertedItems) {
00174             _options.setSortInsertedItems(sortInsertedItems);
00175         };
00176 
00181         virtual void handleListDataChangedEvent(const ListDataEventArgs& e);
00182 
00187         virtual void handleListDataSelectionChangedEvent(const ListDataEventArgs& e);
00188 
00196         virtual void getPreferredDimensions(Rect& rect) const;
00197 
00204         virtual bool isDoubleClick(s16 x, s16 y);
00205 
00206     protected:
00207         ListData _options;                          
00208         u8 _optionPadding;                          
00209         s32 _lastSelectedIndex;                     
00217         virtual void drawContents(GraphicsPort* port);
00218 
00225         virtual void drawBorder(GraphicsPort* port);
00226 
00233         virtual void onClick(s16 x, s16 y);
00234         
00240         virtual void onDoubleClick(s16 x, s16 y);
00241 
00245         virtual ~ListBox();
00246 
00254         virtual void setOptionSelected(const s32 index, const bool selected);
00255 
00259         inline ListBox(const ListBox& listBox) : ScrollingPanel(listBox) { };
00260     };
00261 }
00262 
00263 #endif
 All Classes Functions Variables Enumerations Enumerator