/* ui/listitem.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_LISTITEM_H__ #define __INCLUDED_UI_LISTITEM_H__ #include #include "core/info.h" #include "core/item.h" #include "ui/label.h" namespace ui { class ListItem; } #include "ui/listview.h" namespace ui { class ListItem : public Label { public: ListItem(ListView *parent, const char * text); ~ListItem(); inline const core::Info *info() const { return listitem_info; } inline const core::Item *item() const { return listitem_item; } inline const std::string & sortkey() const { return listitem_sortkey; } inline void set_info(const core::Info *info) { listitem_info = info; } inline void set_item(const core::Item *item) { listitem_item = item; } inline void set_sortkey(const std::string sortkey) { listitem_sortkey.assign(sortkey); } void select(); protected: /// keypress event handler virtual bool on_keypress(const int key, const unsigned int modifier); /// draw the button border virtual void draw_border(); virtual void on_mouseover(const math::Vector2f &cursor); virtual void draw(); private: const core::Info *listitem_info; const core::Item *listitem_item; std::string listitem_sortkey; }; } // namespace ui #endif // __INCLUDED_UI_LISTITEM_H__