From a64c2afadf00e119bc5ab04918993d495c437ee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=20=EA=A6=AB=EA=A6=B6=20=EA=A6=8F=EA=A7=80?= =?UTF-8?q?=EA=A6=A6=EA=A6=BF=20=EA=A6=A7=20=EA=A6=AE=20=EA=A6=91=20?= =?UTF-8?q?=EA=A6=A9=20=EA=A6=AD=EA=A7=80?= Date: Mon, 4 Nov 2019 19:19:49 +0700 Subject: Reindent --- basket.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'basket.cxx') diff --git a/basket.cxx b/basket.cxx index c4905e0..9dadf55 100644 --- a/basket.cxx +++ b/basket.cxx @@ -5,7 +5,7 @@ namespace ICClient { int Basket::rowCount(QModelIndex const& parent) const { Q_UNUSED(parent) - return items.count(); + return items.count(); } QVariant Basket::data(QModelIndex const& index, int role) const -- cgit v1.2.3 From 24bf56bfc3517750d722cf71d201491ae86d9745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=20=EA=A6=AB=EA=A6=B6=20=EA=A6=8F=EA=A7=80?= =?UTF-8?q?=EA=A6=A6=EA=A6=BF=20=EA=A6=A7=20=EA=A6=AE=20=EA=A6=91=20?= =?UTF-8?q?=EA=A6=A9=20=EA=A6=AD=EA=A7=80?= Date: Mon, 11 Nov 2019 16:52:22 +0700 Subject: Freeing the libiclient order is not done for now --- basket.cxx | 1 - 1 file changed, 1 deletion(-) (limited to 'basket.cxx') diff --git a/basket.cxx b/basket.cxx index 9dadf55..a5f9b23 100644 --- a/basket.cxx +++ b/basket.cxx @@ -52,7 +52,6 @@ namespace ICClient { if (order) { for (size_t i = 0; i < order->nitems; i++) addItem(Item{order->items[i]}); - icclient_ord_free(order); emit updated(); } } -- cgit v1.2.3 From 992b2cc2fb3637a3df45b67ad282aab1d1905320 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=20=EA=A6=AB=EA=A6=B6=20=EA=A6=8F=EA=A7=80?= =?UTF-8?q?=EA=A6=A6=EA=A6=BF=20=EA=A6=A7=20=EA=A6=AE=20=EA=A6=91=20?= =?UTF-8?q?=EA=A6=A9=20=EA=A6=AD=EA=A7=80?= Date: Fri, 15 Nov 2019 17:10:32 +0700 Subject: Subtotal and total cost get updated along with update --- basket.cxx | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'basket.cxx') diff --git a/basket.cxx b/basket.cxx index a5f9b23..b1c89f8 100644 --- a/basket.cxx +++ b/basket.cxx @@ -52,7 +52,11 @@ namespace ICClient { if (order) { for (size_t i = 0; i < order->nitems; i++) addItem(Item{order->items[i]}); + m_subtotal = order->subtotal; + m_totalCost = order->total_cost; emit updated(); + emit subtotalChanged(); + emit totalCostChanged(); } } -- cgit v1.2.3 From 87bf926c60712be2d6076c96bc9da659023f37bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=20=EA=A6=AB=EA=A6=B6=20=EA=A6=8F=EA=A7=80?= =?UTF-8?q?=EA=A6=A6=EA=A6=BF=20=EA=A6=A7=20=EA=A6=AE=20=EA=A6=91=20?= =?UTF-8?q?=EA=A6=A9=20=EA=A6=AD=EA=A7=80?= Date: Sat, 16 Nov 2019 11:23:43 +0700 Subject: If item is already in basket, then add the quantity instead --- basket.cxx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'basket.cxx') diff --git a/basket.cxx b/basket.cxx index b1c89f8..60ea273 100644 --- a/basket.cxx +++ b/basket.cxx @@ -1,3 +1,4 @@ +#include #include "qicclient/basket.hxx" namespace ICClient { @@ -41,10 +42,18 @@ namespace ICClient { void Basket::addItem(Item const& item) { - beginInsertRows(QModelIndex(), rowCount(), rowCount()); - items << item; - endInsertRows(); - emit rowCountChanged(); + auto product = item.product; + auto iterator = std::find_if(items.begin(), items.end() + , [&product](Item const& item) { + return product.sku == item.product.sku; + }); + if (iterator == items.end()) { + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + items << item; + endInsertRows(); + emit rowCountChanged(); + } else + iterator->quantity++; } void Basket::update(icclient_ord_order* order) @@ -54,7 +63,6 @@ namespace ICClient { addItem(Item{order->items[i]}); m_subtotal = order->subtotal; m_totalCost = order->total_cost; - emit updated(); emit subtotalChanged(); emit totalCostChanged(); } -- cgit v1.2.3 From 501f86b2313538dec63834421806127383424771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=20=EA=A6=AB=EA=A6=B6=20=EA=A6=8F=EA=A7=80?= =?UTF-8?q?=EA=A6=A6=EA=A6=BF=20=EA=A6=A7=20=EA=A6=AE=20=EA=A6=91=20?= =?UTF-8?q?=EA=A6=A9=20=EA=A6=AD=EA=A7=80?= Date: Sat, 16 Nov 2019 18:15:10 +0700 Subject: Same item in basket, gets removed and then inserted with new quantity --- basket.cxx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'basket.cxx') diff --git a/basket.cxx b/basket.cxx index 60ea273..52dca83 100644 --- a/basket.cxx +++ b/basket.cxx @@ -47,13 +47,17 @@ namespace ICClient { , [&product](Item const& item) { return product.sku == item.product.sku; }); - if (iterator == items.end()) { - beginInsertRows(QModelIndex(), rowCount(), rowCount()); - items << item; - endInsertRows(); - emit rowCountChanged(); - } else - iterator->quantity++; + if (iterator != items.end()) { + auto index = items.indexOf(*iterator); + beginRemoveRows(QModelIndex(), index, index); + items.removeAt(index); + endRemoveRows(); + } + + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + items << item; + endInsertRows(); + emit rowCountChanged(); } void Basket::update(icclient_ord_order* order) -- cgit v1.2.3