/* client/inventorywindow.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_INVENTORYWINDOW_H__ #define __INCLUDED_CLIENT_INVENTORYWINDOW_H__ #include "core/info.h" #include "core/inventory.h" #include "ui/button.h" #include "ui/iconbutton.h" #include "ui/listview.h" #include "ui/modelview.h" #include "ui/scrollpane.h" #include "ui/slider.h" #include "ui/plaintext.h" #include "ui/window.h" namespace client { /** * @brief an inventory window widget */ class InventoryWindow : public ui::Window { public: InventoryWindow(ui::Widget *parent = 0); ~InventoryWindow(); 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); void show_eject_dialog(const core::Info *info, const int amount); void show_eject_amount(const int amount); void act_eject(); void act_mount(); void show_item_info(const ui::ListItem *listitem); bool verify() const; unsigned long inventorywindow_inventorytimestamp; unsigned long inventorywindow_infotimestamp; int inventorywindow_amount; ui::Text inventorywindow_infotext; const core::Info *inventorywindow_inforecord; ui::ModelView *inventorywindow_modelview; ui::Label *inventorywindow_titlelabel; ui::IconButton *inventorywindow_closebutton; ui::Label *inventorywindow_modeltitlelabel; ui::Label *inventorywindow_modelnamelabel; ui::ListView *inventorywindow_listview; ui::PlainText *inventorywindow_inventorytext; ui::ScrollPane *inventorywindow_scrollpane; ui::IconButton *inventorywindow_shipbutton; ui::IconButton *inventorywindow_mountbutton; ui::IconButton *inventorywindow_ejectbutton; ui::Button *inventorywindow_ejectconfirmbutton; ui::Button *inventorywindow_ejectcancelbutton; ui::Slider *inventorywindow_ejectslider; }; // class InventoryWindow } #endif // __INCLUDED_CLIENT_INVENTORYWINDOW_H__