summaryrefslogtreecommitdiff
path: root/qicclient
diff options
context:
space:
mode:
Diffstat (limited to 'qicclient')
-rw-r--r--qicclient/basket.hxx20
-rw-r--r--qicclient/client.hxx15
2 files changed, 23 insertions, 12 deletions
diff --git a/qicclient/basket.hxx b/qicclient/basket.hxx
index b3b5e11..ecd7a67 100644
--- a/qicclient/basket.hxx
+++ b/qicclient/basket.hxx
@@ -22,15 +22,20 @@ namespace ICClient {
Product product;
unsigned int quantity;
+
+ bool operator==(Item const& item)
+ {
+ return product.sku == item.product.sku;
+ }
};
class Basket : public QAbstractListModel
{
Q_OBJECT
+ Q_PROPERTY(int rowCount READ rowCount NOTIFY rowCountChanged)
Q_PROPERTY(double subtotal READ subtotal NOTIFY subtotalChanged)
Q_PROPERTY(double shipping READ shipping NOTIFY shippingChanged)
Q_PROPERTY(double totalCost READ totalCost NOTIFY totalCostChanged)
- Q_PROPERTY(int rowCount READ rowCount NOTIFY rowCountChanged)
public:
explicit Basket(QObject* parent = nullptr)
@@ -40,11 +45,11 @@ namespace ICClient {
, 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;
+ int rowCount(QModelIndex const& parent
+ = QModelIndex()) const Q_DECL_OVERRIDE;
double subtotal() const { return m_subtotal; }
double shipping() const { return m_shipping; }
@@ -53,15 +58,14 @@ namespace ICClient {
public slots:
void update(icclient_ord_order* order);
- protected:
- QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
-
signals:
- void updated();
+ void rowCountChanged();
void subtotalChanged();
void shippingChanged();
void totalCostChanged();
- void rowCountChanged();
+
+ protected:
+ QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
private:
void addItem(Item const& item);
diff --git a/qicclient/client.hxx b/qicclient/client.hxx
index 6121c5e..ef8a5bf 100644
--- a/qicclient/client.hxx
+++ b/qicclient/client.hxx
@@ -5,6 +5,7 @@
struct icclient_catalog;
struct icclient_ord_order;
+struct icclient_user;
namespace ICClient {
@@ -19,15 +20,21 @@ namespace ICClient {
void allProducts(size_t (*handler)(void* contents
, size_t size, size_t nmemb
, void* userdata));
+ void order(icclient_ord_order** orderPtr, QString const& sku
+ , icclient_catalog* catalog);
+ void logIn(size_t (*handler)(void*, size_t, size_t, void*)
+ , icclient_user* user
+ , QString const& username
+ , QString const& password
+ , QString const& successPage = nullptr
+ , QString const& nextPage = nullptr
+ , QString const& failPage = nullptr);
public slots:
/*
- void order(QString const& sku);
void remove(unsigned int const& indices);
void checkout();
*/
- void logIn(QString const& username
- , QString const& password);
/*
void account(QString const& firstName
, QString const& lastName
@@ -53,7 +60,7 @@ namespace ICClient {
signals:
void gotAllProducts(icclient_catalog* catalog);
void ordered(icclient_ord_order* order);
- void loggedIn(QString const& userName);
+ void loggedIn(icclient_user* user);
void loggedOut();
};