summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2023-03-12 18:57:01 +0800
committerꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2023-03-12 18:57:01 +0800
commitc8ed6cbb4a3a9051fcc2536fd6e751da7a3264cf (patch)
treea5beba996759bf4cced505efd0333fa52456f407
parentf70a1a57d83e4f50a7221d13b173a156ef0eb6cf (diff)
Item & Ord are with constructed with copies, not pointers
-rw-r--r--interchange/ord.hxx14
-rw-r--r--ord.cxx24
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;
diff --git a/ord.cxx b/ord.cxx
index f7e2161..7cf1e52 100644
--- a/ord.cxx
+++ b/ord.cxx
@@ -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