Woopsi 1.0
GUI Framework for Nintendo DS Homebrew

scrollinglistbox.h

00001 #ifndef _SCROLLING_LISTBOX_H_
00002 #define _SCROLLING_LISTBOX_H_
00003 
00004 #include "gadget.h"
00005 #include "listbox.h"
00006 #include "gadgeteventhandler.h"
00007 #include "listdata.h"
00008 #include "listboxdataitem.h"
00009 #include "gadgetstyle.h"
00010 #include "listboxbase.h"
00011 
00012 namespace WoopsiUI {
00013 
00014         class ScrollbarVertical;
00015 
00021         class ScrollingListBox : public ListBoxBase, public Gadget, public GadgetEventHandler {
00022         public:
00023 
00035                 ScrollingListBox(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 
00062                 virtual void addOption(const WoopsiString& text, const u32 value, const u16 normalTextColour, const u16 normalBackColour, const u16 selectedTextColour, const u16 selectedBackColour);
00063 
00068                 virtual void removeOption(const s32 index);
00069 
00073                 virtual void removeAllOptions();
00074 
00081                 virtual inline void selectOption(const s32 index) {
00082                         _listbox->selectOption(index);
00083                 };
00084 
00091                 virtual inline void deselectOption(const s32 index) {
00092                         _listbox->deselectOption(index);
00093                 };
00094 
00100                 virtual inline void selectAllOptions() {
00101                         _listbox->selectAllOptions();
00102                 };
00103 
00108                 virtual inline void deselectAllOptions() {
00109                         _listbox->deselectAllOptions();
00110                 };
00111 
00118                 virtual inline const s32 getSelectedIndex() const {
00119                         return _listbox->getSelectedIndex();
00120                 };
00121 
00128                 virtual inline void setSelectedIndex(const s32 index) {
00129                         _listbox->setSelectedIndex(index);
00130                 };
00131 
00136                 virtual inline const ListBoxDataItem* getSelectedOption() const {
00137                         return _listbox->getSelectedOption();
00138                 };
00139                 
00144                 virtual inline void setAllowMultipleSelections(const bool allowMultipleSelections) {
00145                         _listbox->setAllowMultipleSelections(allowMultipleSelections);
00146                 };
00147 
00152                 virtual inline const bool allowsMultipleSelections() const {
00153                         return _listbox->allowsMultipleSelections();
00154                 };
00155 
00159                 virtual inline void resizeCanvas() {
00160                         _listbox->resizeCanvas();
00161                 };
00162 
00167                 virtual inline const ListBoxDataItem* getOption(const s32 index) {
00168                         return _listbox->getOption(index);
00169                 };
00170 
00175                 virtual inline const ListBoxDataItem* getOption(const s32 index) const {
00176                         return _listbox->getOption(index);
00177                 };
00178 
00182                 virtual inline void sort() {
00183                         _listbox->sort();
00184                 };
00185 
00190                 virtual inline const s32 getOptionCount() const {
00191                         return _listbox->getOptionCount();
00192                 };
00193 
00198                 virtual inline const u16 getOptionHeight() const {
00199                         return _listbox->getOptionHeight();
00200                 };
00201 
00206                 virtual void handleValueChangeEvent(const GadgetEventArgs& e);
00207 
00212                 virtual void handleActionEvent(const GadgetEventArgs& e);
00213 
00218                 virtual void handleScrollEvent(const GadgetEventArgs& e);
00219 
00224                 virtual void handleClickEvent(const GadgetEventArgs& e);
00225 
00230                 virtual void handleDoubleClickEvent(const GadgetEventArgs& e);
00231 
00237                 virtual void handleReleaseEvent(const GadgetEventArgs& e);
00238 
00244                 virtual void handleReleaseOutsideEvent(const GadgetEventArgs& e);
00245 
00250                 virtual void setFont(FontBase* font);
00251 
00257                 virtual inline void setSortInsertedItems(const bool sortInsertedItems) { _listbox->setSortInsertedItems(sortInsertedItems); };
00258 
00266                 virtual void getPreferredDimensions(Rect& rect) const;
00267 
00268         protected:
00269                 ListBox* _listbox;                                                                      
00270                 ScrollbarVertical* _scrollbar;                                          
00271                 u8 _scrollbarWidth;                                                                     
00276                 void updateScrollbar();
00277 
00284                 virtual void drawContents(GraphicsPort* port);
00285 
00291                 virtual void onResize(u16 width, u16 height);
00292                 
00296                 virtual inline ~ScrollingListBox() { };
00297 
00301                 inline ScrollingListBox(const ScrollingListBox& scrollingListBox) : Gadget(scrollingListBox) { };
00302         };
00303 }
00304 
00305 #endif