/* 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(); // info record associated with this list item inline const core::Info *info() const { return listitem_info; } inline const core::Item *item() const { return listitem_item; } // sort key for this list item inline const std::string & sortkey() const { return listitem_sortkey; } // string value associated with this list item inline const std::string & value() const { return listitem_value; } 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); } inline void set_value(const std::string value) { listitem_value.assign(value); } void select(); protected: /** * @brief mouseover event handler * */ virtual void on_mouseover(const math::Vector2f &cursor); /** * @brief mouse button press event handler * */ virtual bool on_mousepress(const unsigned int button); /** * @brief draw the button border * */ virtual void draw_border(); virtual void draw(); private: const core::Info *listitem_info; const core::Item *listitem_item; std::string listitem_sortkey; std::string listitem_value; }; } // namespace ui #endif // __INCLUDED_UI_LISTITEM_H__