diff options
-rw-r--r-- | interchange/ord.hxx | 14 | ||||
-rw-r--r-- | ord.cxx | 24 |
2 files changed, 13 insertions, 25 deletions
diff --git a/interchange/ord.hxx b/interchange/ord.hxx index 56bb7d3..4ec06b4 100644 --- a/interchange/ord.hxx +++ b/interchange/ord.hxx @@ -13,9 +13,9 @@ namespace QInterchange { enum ItemRoles { QuantityRole = Product::PriceRole + 1 }; - Item(interchange_ord_item* item) : - product{item->product}, - quantity{item->quantity} {} + Item(interchange_ord_item item) : + product{item.product}, + quantity{item.quantity} {} Product product; unsigned int quantity; bool operator==(Item const& item) @@ -33,13 +33,12 @@ namespace QInterchange { Q_PROPERTY(double totalCost READ totalCost NOTIFY totalCostChanged) public: - explicit Ord(struct interchange_ord_order* order - = nullptr, QObject* parent = nullptr); - ~Ord(); + explicit Ord(struct interchange_ord_order order, + QObject* parent = nullptr); + ~Ord() {} int rowCount(QModelIndex const& parent = QModelIndex()) const Q_DECL_OVERRIDE; QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; - struct interchange_ord_order* data() { return m_data; } double subtotal() const { return m_subtotal; } double shipping() const { return m_shipping; } double totalCost() const { return m_totalCost; } @@ -61,7 +60,6 @@ namespace QInterchange { private: void addItem(Item const& item); QList<Item> items; - struct interchange_ord_order* m_data; QString profile; double m_subtotal; double m_shipping; @@ -8,25 +8,15 @@ namespace QInterchange { static Ord* ord; static char* order_profile; - Ord::Ord(struct interchange_ord_order *order, QObject* parent) : - QAbstractListModel{parent}, - m_data{nullptr}, - m_subtotal{.0}, - m_shipping{.0}, - m_totalCost{.0} + Ord::Ord(struct interchange_ord_order order, QObject* parent) : + QAbstractListModel{parent} { ord = this; - if (!order) return; - for (size_t i = 0; i < order->nitems; i++) - addItem(Item{order->items[i]}); - m_subtotal = order->subtotal; - m_totalCost = order->total_cost; - m_data = order; - } - - Ord::~Ord() - { - if (m_data) interchange_ord_free_order(m_data); + for (size_t i = 0; i < order.nitems; i++) + addItem(Item{order.items[i]}); + m_subtotal = order.subtotal; + m_shipping = order.shipping; + m_totalCost = order.total_cost; } int Ord::rowCount(QModelIndex const& parent) const |