OpenMW
apps/openmw/mwgui/container.hpp
Go to the documentation of this file.
00001 #ifndef MGUI_CONTAINER_H
00002 #define MGUI_CONTAINER_H
00003 
00004 #include "windowbase.hpp"
00005 #include "referenceinterface.hpp"
00006 
00007 #include "itemmodel.hpp"
00008 
00009 namespace MWWorld
00010 {
00011     class Environment;
00012 }
00013 
00014 namespace MyGUI
00015 {
00016     class Gui;
00017     class Widget;
00018 }
00019 
00020 namespace MWGui
00021 {
00022     class WindowManager;
00023     class ContainerWindow;
00024     class ItemView;
00025     class SortFilterItemModel;
00026 }
00027 
00028 
00029 namespace MWGui
00030 {
00031     class DragAndDrop
00032     {
00033     public:
00034         bool mIsOnDragAndDrop;
00035         MyGUI::Widget* mDraggedWidget;
00036         MyGUI::Widget* mDragAndDropWidget;
00037         ItemModel* mSourceModel;
00038         ItemView* mSourceView;
00039         SortFilterItemModel* mSourceSortModel;
00040         ItemStack mItem;
00041         int mDraggedCount;
00042 
00043         void startDrag (int index, SortFilterItemModel* sortModel, ItemModel* sourceModel, ItemView* sourceView, int count);
00044         void drop (ItemModel* targetModel, ItemView* targetView);
00045 
00046         void finish();
00047     };
00048 
00049     class ContainerWindow : public WindowBase, public ReferenceInterface
00050     {
00051     public:
00052         ContainerWindow(DragAndDrop* dragAndDrop);
00053 
00054         void open(const MWWorld::Ptr& container, bool loot=false);
00055 
00056     private:
00057         DragAndDrop* mDragAndDrop;
00058 
00059         MWGui::ItemView* mItemView;
00060         SortFilterItemModel* mSortModel;
00061         ItemModel* mModel;
00062         size_t mSelectedItem;
00063 
00064         MyGUI::Button* mDisposeCorpseButton;
00065         MyGUI::Button* mTakeButton;
00066         MyGUI::Button* mCloseButton;
00067 
00068         void onItemSelected(int index);
00069         void onBackgroundSelected();
00070         void dragItem(MyGUI::Widget* sender, int count);
00071         void dropItem();
00072         void onCloseButtonClicked(MyGUI::Widget* _sender);
00073         void onTakeAllButtonClicked(MyGUI::Widget* _sender);
00074         void onDisposeCorpseButtonClicked(MyGUI::Widget* sender);
00075 
00076         virtual void onReferenceUnavailable();
00077     };
00078 }
00079 #endif // CONTAINER_H