OpenMW
apps/openmw/mwgui/tradeitemmodel.hpp
Go to the documentation of this file.
00001 #ifndef MWGUI_TRADE_ITEM_MODEL_H
00002 #define MWGUI_TRADE_ITEM_MODEL_H
00003 
00004 #include "itemmodel.hpp"
00005 
00006 namespace MWGui
00007 {
00008 
00009     class ItemModel;
00010 
00013     class TradeItemModel : public ProxyItemModel
00014     {
00015     public:
00016         TradeItemModel (ItemModel* sourceModel, const MWWorld::Ptr& merchant);
00017 
00018         virtual ItemStack getItem (ModelIndex index);
00019         virtual size_t getItemCount();
00020 
00021         virtual void update();
00022 
00023         void borrowItemFromUs (ModelIndex itemIndex, size_t count);
00024 
00025         void borrowItemToUs (ModelIndex itemIndex, ItemModel* source, size_t count);
00027 
00028         void returnItemBorrowedToUs (ModelIndex itemIndex, size_t count);
00029 
00030         void returnItemBorrowedFromUs (ModelIndex itemIndex, ItemModel* source, size_t count);
00031 
00033         void transferItems ();
00035         void abort();
00036 
00037         std::vector<ItemStack> getItemsBorrowedToUs();
00038 
00039     private:
00040         void borrowImpl(const ItemStack& item, std::vector<ItemStack>& out);
00041         void unborrowImpl(const ItemStack& item, size_t count, std::vector<ItemStack>& out);
00042 
00043         std::vector<ItemStack> mItems;
00044 
00045         std::vector<ItemStack> mBorrowedToUs;
00046         std::vector<ItemStack> mBorrowedFromUs;
00047 
00048         MWWorld::Ptr mMerchant;
00049     };
00050 
00051 }
00052 
00053 #endif