00001 #ifndef _FILE_LISTBOX_H_ 00002 #define _FILE_LISTBOX_H_ 00003 00004 #include "scrollinglistbox.h" 00005 #include "filelistboxdataitem.h" 00006 #include "gadget.h" 00007 #include "gadgeteventhandler.h" 00008 #include "gadgetstyle.h" 00009 #include "woopsistring.h" 00010 00011 #ifdef ARM9 00012 #include <fat.h> 00013 #endif 00014 00015 namespace WoopsiUI { 00016 00017 class FilePath; 00018 00031 class FileListBox : public Gadget, public GadgetEventHandler { 00032 public: 00033 00043 FileListBox(s16 x, s16 y, u16 width, u16 height, u32 flags, GadgetStyle* style = NULL); 00044 00049 virtual void handleDoubleClickEvent(const GadgetEventArgs& e); 00050 00056 virtual inline void addOption(const char* text, const u32 value) { 00057 _listbox->addOption(text, value); 00058 }; 00059 00072 virtual inline void addOption(const char* text, const u32 value, const u16 normalTextColour, const u16 normalBackColour, const u16 selectedTextColour, const u16 selectedBackColour) { 00073 _listbox->addOption(text, value, normalTextColour, normalBackColour, selectedTextColour, selectedBackColour); 00074 }; 00075 00080 virtual inline void removeOption(const s32 index) { 00081 _listbox->removeOption(index); 00082 }; 00083 00087 virtual inline void removeAllOptions() { 00088 _listbox->removeAllOptions(); 00089 }; 00090 00096 virtual inline const s32 getSelectedIndex() const { 00097 return _listbox->getSelectedIndex(); 00098 }; 00099 00104 virtual inline const FileListBoxDataItem* getSelectedOption() const { 00105 return (const FileListBoxDataItem*)_listbox->getSelectedOption(); 00106 }; 00107 00112 virtual inline void setAllowMultipleSelections(const bool allowMultipleSelections) { 00113 _listbox->setAllowMultipleSelections(allowMultipleSelections); 00114 }; 00115 00120 virtual inline const FileListBoxDataItem* getOption(const s32 index) const { 00121 return (const FileListBoxDataItem*)_listbox->getOption(index); 00122 }; 00123 00127 virtual inline void sort() { 00128 _listbox->sort(); 00129 }; 00130 00135 virtual inline const s32 getOptionCount() const { 00136 return _listbox->getOptionCount(); 00137 }; 00138 00143 virtual void setPath(const WoopsiString& path); 00144 00149 virtual void appendPath(const WoopsiString& path); 00150 00151 protected: 00152 ScrollingListBox* _listbox; 00153 FilePath* _path; 00161 virtual void drawContents(GraphicsPort* port); 00162 00168 virtual void onResize(u16 width, u16 height); 00169 00173 virtual ~FileListBox(); 00174 00178 virtual void readDirectory(); 00179 00183 inline FileListBox(const FileListBox& fileListBox) : Gadget(fileListBox) { }; 00184 }; 00185 } 00186 00187 #endif