diff options
-rw-r--r-- | ord.cxx | 34 | ||||
-rw-r--r-- | qicclient/ord.hxx | 29 |
2 files changed, 22 insertions, 41 deletions
@@ -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 |