Woopsi 1.3
Nintendo DS Gui Framework
libwoopsi/include/cyclebutton.h
00001 #ifndef _CYCLE_BUTTON_H_
00002 #define _CYCLE_BUTTON_H_
00003 
00004 #include <nds.h>
00005 #include "button.h"
00006 #include "listdataeventhandler.h"
00007 #include "listdata.h"
00008 #include "listdataitem.h"
00009 #include "gadgetstyle.h"
00010 #include "woopsistring.h"
00011 
00012 namespace WoopsiUI {
00013 
00018     class CycleButton : public Button, public ListDataEventHandler  {
00019     public:
00020 
00032         CycleButton(s16 x, s16 y, u16 width, u16 height, GadgetStyle* style = NULL);
00033 
00039         void addOption(const WoopsiString& text, const u32 value);
00040 
00045         virtual void removeOption(const s32 index);
00046 
00050         virtual void removeAllOptions();
00051 
00057         virtual void selectOption(const s32 index);
00058 
00065         virtual const s32 getSelectedIndex() const;
00066 
00073         virtual void setSelectedIndex(const s32 index);
00074 
00079         virtual const ListDataItem* getSelectedOption() const;
00080 
00085         inline const u32 getValue() const { return getSelectedOption()->getValue(); };
00086 
00091         virtual inline const ListDataItem* getOption(const s32 index) {
00092             return _options.getItem(index);
00093         };
00094 
00098         virtual void sort();
00099 
00104         virtual inline const s32 getOptionCount() const {
00105             return _options.getItemCount();
00106         };
00107 
00113         virtual inline void setSortInsertedItems(const bool sortInsertedItems) {
00114             _options.setSortInsertedItems(sortInsertedItems);
00115         };
00116 
00121         virtual void handleListDataChangedEvent(const ListDataEventArgs& e);
00122 
00127         virtual void handleListDataSelectionChangedEvent(const ListDataEventArgs& e);
00128 
00136         virtual void getPreferredDimensions(Rect& rect) const;
00137 
00138     protected:
00139         ListData _options;                          
00147         virtual void drawContents(GraphicsPort* port);
00148 
00155         virtual void drawBorder(GraphicsPort* port);
00156 
00161         virtual void drawOutline(GraphicsPort* port);
00162 
00168         virtual void onRelease(s16 x, s16 y);
00169         
00175         virtual void onReleaseOutside(s16 x, s16 y);
00176 
00183         virtual inline void onResize(u16 width, u16 height) { };
00184 
00189         virtual inline void calculateTextPosition() { };
00190 
00194         virtual ~CycleButton() { };
00195 
00199         inline CycleButton(const CycleButton& cycleButton) : Button(cycleButton) { };
00200     };
00201 }
00202 
00203 #endif
 All Classes Functions Variables Enumerations Enumerator