/* ui/listview.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_UI_LISTVIEW_H__ #define __INCLUDED_UI_LISTVIEW_H__ #include #include "ui/widget.h" namespace ui { class ListView; } #include "ui/listitem.h" namespace ui { /** * @brief a list of selectable items **/ class ListView : public Widget { public: ListView(Widget *parent=0); ~ListView(); /// current scroll position inline float scroll() const { return listview_scroll; } /// return last selected listitem inline ListItem *selected() const { return listview_selecteditem; } /* -- mutators --------------------------------------------- */ /// set scroll void set_scroll(float scroll); /// scroll down void inc_scroll(float scroll); /// scroll up void dec_scroll(float scroll); /// clear all listitems void clear(); /// set selection to specified ListItem void select(ListItem *item); /// set selection to nothing void deselect(); /** * @brief sort child ListItems according to their sortkey * Sort will fail with an assert error if the ListView * contains any non-ListItem child widgets */ void sort(); protected: virtual void resize(); /// emit event handler virtual bool on_emit(Widget *sender, const Event event, void *data); private: float listview_scroll; ListItem *listview_selecteditem; }; } // namespacd ui #endif // __INCLUDED_UI_LISTVIEW_H__