OpenMW
|
00001 #ifndef MGUI_Inventory_H 00002 #define MGUI_Inventory_H 00003 00004 #include "../mwrender/characterpreview.hpp" 00005 00006 #include "windowpinnablebase.hpp" 00007 #include "widgets.hpp" 00008 #include "mode.hpp" 00009 00010 namespace MWGui 00011 { 00012 class ItemView; 00013 class SortFilterItemModel; 00014 class TradeItemModel; 00015 class DragAndDrop; 00016 class ItemModel; 00017 00018 class InventoryWindow : public WindowPinnableBase 00019 { 00020 public: 00021 InventoryWindow(DragAndDrop* dragAndDrop); 00022 00023 virtual void open(); 00024 00025 void doRenderUpdate(); 00026 00028 void setTrading(bool trading); 00029 00030 void onFrame(); 00031 00032 void pickUpObject (MWWorld::Ptr object); 00033 00034 int getPlayerGold(); 00035 00036 MyGUI::IntCoord getAvatarScreenCoord(); 00037 00038 MWWorld::Ptr getAvatarSelectedItem(int x, int y); 00039 00040 void rebuildAvatar() { 00041 mPreview.rebuild(); 00042 } 00043 00044 TradeItemModel* getTradeModel(); 00045 ItemModel* getModel(); 00046 00047 void updateItemView(); 00048 00049 void updatePlayer(); 00050 00051 void setGuiMode(GuiMode mode); 00052 00053 private: 00054 DragAndDrop* mDragAndDrop; 00055 00056 bool mPreviewDirty; 00057 size_t mSelectedItem; 00058 00059 MWWorld::Ptr mPtr; 00060 00061 MWGui::ItemView* mItemView; 00062 SortFilterItemModel* mSortModel; 00063 TradeItemModel* mTradeModel; 00064 00065 MyGUI::Widget* mAvatar; 00066 MyGUI::ImageBox* mAvatarImage; 00067 MyGUI::TextBox* mArmorRating; 00068 Widgets::MWDynamicStat* mEncumbranceBar; 00069 00070 MyGUI::Widget* mLeftPane; 00071 MyGUI::Widget* mRightPane; 00072 00073 MyGUI::Button* mFilterAll; 00074 MyGUI::Button* mFilterWeapon; 00075 MyGUI::Button* mFilterApparel; 00076 MyGUI::Button* mFilterMagic; 00077 MyGUI::Button* mFilterMisc; 00078 00079 GuiMode mGuiMode; 00080 00081 int mLastXSize; 00082 int mLastYSize; 00083 00084 MWRender::InventoryPreview mPreview; 00085 00086 bool mTrading; 00087 00088 void onItemSelected(int index); 00089 void onItemSelectedFromSourceModel(int index); 00090 00091 void onBackgroundSelected(); 00092 00093 void sellItem(MyGUI::Widget* sender, int count); 00094 void dragItem(MyGUI::Widget* sender, int count); 00095 00096 void onWindowResize(MyGUI::Window* _sender); 00097 void onFilterChanged(MyGUI::Widget* _sender); 00098 void onAvatarClicked(MyGUI::Widget* _sender); 00099 void onPinToggled(); 00100 00101 void updateEncumbranceBar(); 00102 void notifyContentChanged(); 00103 00104 void adjustPanes(); 00105 }; 00106 } 00107 00108 #endif // Inventory_H