summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2023-02-07 15:32:40 +0800
committerꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2023-02-07 15:32:40 +0800
commit2fbcfe27235a0852dce3d0ace748c639495d6092 (patch)
treeb375181c5ada3888c7701ea3f0d8b94c2801f7db
parent5049587a34347abc57aba06c2a2641931eb173e3 (diff)
Send signal carrying possible transaction info
-rw-r--r--interchange/ord.hxx11
-rw-r--r--ord.cxx24
2 files changed, 28 insertions, 7 deletions
diff --git a/interchange/ord.hxx b/interchange/ord.hxx
index 39f3282..f424d4d 100644
--- a/interchange/ord.hxx
+++ b/interchange/ord.hxx
@@ -33,12 +33,7 @@ namespace QInterchange {
Q_PROPERTY(double totalCost READ totalCost NOTIFY totalCostChanged)
public:
- explicit Ord(QObject* parent = nullptr) :
- QAbstractListModel{parent},
- m_data{nullptr},
- m_subtotal{.0},
- m_shipping{.0},
- m_totalCost{.0} {}
+ explicit Ord(QObject* parent = nullptr);
~Ord()
{
if (m_data) interchange_ord_free(m_data);
@@ -60,8 +55,12 @@ namespace QInterchange {
void subtotalChanged();
void shippingChanged();
void totalCostChanged();
+ void gotTransaction(QString const& response);
+
protected:
QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
+ void emitTransaction(QString const& response);
+
private:
void addItem(Item const& item);
QList<Item> items;
diff --git a/ord.cxx b/ord.cxx
index 35b496c..4b3577b 100644
--- a/ord.cxx
+++ b/ord.cxx
@@ -1,9 +1,22 @@
#include <algorithm>
#include <memory>
+#include "interchange.hxx"
#include "interchange/ord.hxx"
namespace QInterchange {
+ static Ord* ord;
+
+ Ord::Ord(QObject* parent) :
+ QAbstractListModel{parent},
+ m_data{nullptr},
+ m_subtotal{.0},
+ m_shipping{.0},
+ m_totalCost{.0}
+ {
+ ord = this;
+ }
+
int Ord::rowCount(QModelIndex const& parent) const
{
Q_UNUSED(parent)
@@ -81,6 +94,15 @@ namespace QInterchange {
void Ord::checkout(Member& member)
{
- interchange_ord_checkout(m_data, member.data());
+ interchange_ord_checkout(m_data, member.data(),
+ [](interchange_response* response) {
+ ord->emitTransaction(QString{response->data});
+ interchange_free_response(response);
+ });
+ }
+
+ void Ord::emitTransaction(QString const& response)
+ {
+ emit gotTransaction(response);
}
}