/* client/inventory.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_CLIENT_INVENTORY_H__ #define __INCLUDED_CLIENT_INVENTORY_H__ #include "core/info.h" #include "core/inventory.h" #include "ui/iconbutton.h" #include "ui/listview.h" #include "ui/modelview.h" #include "ui/scrollpane.h" #include "ui/plaintext.h" #include "ui/window.h" namespace client { /** * @brief an inventory window widget */ class Inventory : public ui::Window { public: Inventory(ui::Widget *parent = 0); ~Inventory(); void toggle(); virtual void show(); protected: /// resize event handler virtual void resize(); /// draw event handler virtual void draw(); /// emit event handler virtual bool on_emit(Widget *sender, const Event event, void *data); /// keypress event handler virtual bool on_keypress(const int key, const unsigned int modifier); private: void update_inventory(); void set_info(const core::Info *info, const int amount); bool verify() const; unsigned long menu_inventorytimestamp; unsigned long menu_infotimestamp; int menu_amount; ui::Text menu_infotext; const core::Info *menu_inforecord; ui::ModelView *menu_modelview; ui::Label *menu_namelabel; ui::ListView *menu_listview; ui::PlainText *menu_inventorytext; ui::ScrollPane *menu_scrollpane; ui::IconButton *menu_shipbutton; }; // class Inventory } #endif // __INCLUDED_CLIENT_INVENTORY_H__