summaryrefslogtreecommitdiff
path: root/src/gui/models
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-05-03 20:09:53 +0300
committerAndrei Karas <akaras@inbox.ru>2015-05-03 20:09:53 +0300
commit602fd127d09c995bc5470218c862b2cebfc558d5 (patch)
tree6937760eb81a234c2aaf9c7494f6bce02176a2f5 /src/gui/models
parentfef6ebca9c454f99d44e950c4628270b124c445f (diff)
downloadmanaplus-602fd127d09c995bc5470218c862b2cebfc558d5.tar.gz
manaplus-602fd127d09c995bc5470218c862b2cebfc558d5.tar.bz2
manaplus-602fd127d09c995bc5470218c862b2cebfc558d5.tar.xz
manaplus-602fd127d09c995bc5470218c862b2cebfc558d5.zip
Add filter into buy dialogs.
Diffstat (limited to 'src/gui/models')
-rw-r--r--src/gui/models/shopitems.cpp18
-rw-r--r--src/gui/models/shopitems.h7
2 files changed, 24 insertions, 1 deletions
diff --git a/src/gui/models/shopitems.cpp b/src/gui/models/shopitems.cpp
index 1a9b89994..2fd399cb0 100644
--- a/src/gui/models/shopitems.cpp
+++ b/src/gui/models/shopitems.cpp
@@ -29,6 +29,7 @@
#include "debug.h"
ShopItems::ShopItems(const bool mergeDuplicates) :
+ mAllShopItems(),
mShopItems(),
mMergeDuplicates(mergeDuplicates)
{
@@ -58,6 +59,7 @@ ShopItem *ShopItems::addItem(const int id,
{
ShopItem *const item = new ShopItem(-1, id, type, color, amount, price);
mShopItems.push_back(item);
+ mAllShopItems.push_back(item);
return item;
}
@@ -72,6 +74,7 @@ ShopItem *ShopItems::addItemNoDup(const int id,
{
item = new ShopItem(-1, id, type, color, amount, price);
mShopItems.push_back(item);
+ mAllShopItems.push_back(item);
}
return item;
}
@@ -95,6 +98,7 @@ ShopItem *ShopItems::addItem2(const int inventoryIndex,
{
item = new ShopItem(inventoryIndex, id, type, color, quantity, price);
mShopItems.push_back(item);
+ mAllShopItems.push_back(item);
}
return item;
}
@@ -127,7 +131,8 @@ void ShopItems::del(const unsigned int i)
void ShopItems::clear()
{
- delete_all(mShopItems);
+ delete_all(mAllShopItems);
+ mAllShopItems.clear();
mShopItems.clear();
}
@@ -146,3 +151,14 @@ ShopItem *ShopItems::findItem(const int id, const unsigned char color) const
return nullptr;
}
+
+void ShopItems::updateList()
+{
+ mShopItems.clear();
+ FOR_EACH (std::vector<ShopItem*>::iterator, it, mAllShopItems)
+ {
+ ShopItem *const item = *it;
+ if (item && item->isVisible())
+ mShopItems.push_back(item);
+ }
+}
diff --git a/src/gui/models/shopitems.h b/src/gui/models/shopitems.h
index 880bc4f71..50269cff1 100644
--- a/src/gui/models/shopitems.h
+++ b/src/gui/models/shopitems.h
@@ -129,9 +129,14 @@ class ShopItems final : public ListModel
std::vector<ShopItem*> &items() A_WARN_UNUSED
{ return mShopItems; }
+ std::vector<ShopItem*> &allItems() A_WARN_UNUSED
+ { return mAllShopItems; }
+
void setMergeDuplicates(const bool b)
{ mMergeDuplicates = b; }
+ void updateList();
+
private:
/**
* Searches the current items in the shop for the specified
@@ -143,6 +148,8 @@ class ShopItems final : public ListModel
const unsigned char color) const A_WARN_UNUSED;
/** The list of items in the shop. */
+ std::vector<ShopItem*> mAllShopItems;
+
std::vector<ShopItem*> mShopItems;
/** Look for duplicate entries on addition. */