summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ord.cxx34
-rw-r--r--qicclient/ord.hxx29
2 files changed, 22 insertions, 41 deletions
diff --git a/ord.cxx b/ord.cxx
index 0d13af0..4a729df 100644
--- a/ord.cxx
+++ b/ord.cxx
@@ -13,9 +13,7 @@ namespace QICClient {
QVariant Ord::data(QModelIndex const& index, int role) const
{
auto row = index.row();
-
if (row < 0 || row >= items.count()) return QVariant();
-
auto item = items[row];
switch (role) {
case Product::SkuRole:
@@ -34,27 +32,25 @@ namespace QICClient {
QHash<int, QByteArray> Ord::roleNames() const
{
return QHash<int, QByteArray>{
- {Product::SkuRole, "sku"}
- , {Product::DescriptionRole, "description"}
- , {Product::PriceRole, "price"}
- , {Item::QuantityRole, "quantity"}
+ { Product::SkuRole, "sku" },
+ { Product::DescriptionRole, "description" },
+ { Product::PriceRole, "price" },
+ { Item::QuantityRole, "quantity" }
};
}
void Ord::addItem(Item const& item)
{
auto product = item.product;
- auto iterator = std::find_if(items.begin(), items.end()
- , [&product](Item const& item) {
- return product.sku == item.product.sku;
- });
+ auto iterator = std::find_if(items.begin(), items.end(), [&product](Item const& item) {
+ return product.sku == item.product.sku;
+ });
if (iterator != items.end()) {
auto index = items.indexOf(*iterator);
beginRemoveRows(QModelIndex(), index, index);
items.removeAt(index);
endRemoveRows();
}
-
beginInsertRows(QModelIndex(), rowCount(), rowCount());
items << item;
endInsertRows();
@@ -63,15 +59,13 @@ namespace QICClient {
void Ord::setData(struct icclient_ord_order* order)
{
- if (order) {
- this->m_data = order;
- for (size_t i = 0; i < order->nitems; i++)
- addItem(Item{order->items[i]});
- m_subtotal = order->subtotal;
- emit subtotalChanged();
- m_totalCost = order->total_cost;
- emit totalCostChanged();
- }
+ if (!order) return;
+ this->m_data = order;
+ for (size_t i = 0; i < order->nitems; i++) addItem(Item{order->items[i]});
+ m_subtotal = order->subtotal;
+ emit subtotalChanged();
+ m_totalCost = order->total_cost;
+ emit totalCostChanged();
}
void Ord::checkout(Member& member)
diff --git a/qicclient/ord.hxx b/qicclient/ord.hxx
index 697daa7..5ece6de 100644
--- a/qicclient/ord.hxx
+++ b/qicclient/ord.hxx
@@ -13,15 +13,11 @@ namespace QICClient {
enum ItemRoles {
QuantityRole = Product::PriceRole + 1
};
-
- Item(icclient_ord_item* item)
- : product{item->product}
- , quantity{item->quantity}
- {}
-
+ Item(icclient_ord_item* item) :
+ product{item->product},
+ quantity{item->quantity} {}
Product product;
unsigned int quantity;
-
bool operator==(Item const& item)
{
return product.sku == item.product.sku;
@@ -42,34 +38,25 @@ namespace QICClient {
m_data{nullptr},
m_subtotal{.0},
m_shipping{.0},
- m_totalCost{.0}
- {}
-
- int rowCount(QModelIndex const& parent
- = QModelIndex()) const Q_DECL_OVERRIDE;
- QVariant data(const QModelIndex& index,
- int role = Qt::DisplayRole
- ) const Q_DECL_OVERRIDE;
-
+ m_totalCost{.0} {}
+ int rowCount(QModelIndex const& parent = QModelIndex()) const Q_DECL_OVERRIDE;
+ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const
+ Q_DECL_OVERRIDE;
struct icclient_ord_order* data() { return m_data; }
void setData(struct icclient_ord_order* order);
double subtotal() const { return m_subtotal; }
double shipping() const { return m_shipping; }
double totalCost() const { return m_totalCost; }
-
public slots:
// void remove(unsigned int const& indices);
void checkout(Member& member);
-
signals:
void rowCountChanged();
void subtotalChanged();
void shippingChanged();
void totalCostChanged();
-
protected:
QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
-
private:
void addItem(Item const& item);
QList<Item> items;
@@ -81,4 +68,4 @@ namespace QICClient {
}
-#endif // QICCLIENT_ORD_HXX
+#endif