OpenMW
|
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