OpenMW
apps/openmw/mwgui/inventorywindow.hpp
Go to the documentation of this file.
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