summaryrefslogtreecommitdiff
path: root/qicclient
diff options
context:
space:
mode:
Diffstat (limited to 'qicclient')
-rw-r--r--qicclient/catalog.hxx81
1 files changed, 81 insertions, 0 deletions
diff --git a/qicclient/catalog.hxx b/qicclient/catalog.hxx
new file mode 100644
index 0000000..07b4c81
--- /dev/null
+++ b/qicclient/catalog.hxx
@@ -0,0 +1,81 @@
+#ifndef QICCLIENT_CATALOG_HXX
+#define QICCLIENT_CATALOG_HXX
+
+#include <QAbstractListModel>
+#include <QLocale>
+#include <icclient/product.h>
+
+struct icclient_catalog;
+
+namespace ICClient {
+
+ class Product
+ {
+ public:
+ Product(icclient_product* product) : m_sku{product->sku}
+ {
+ if (product->description)
+ m_description
+ = QString{product->description};
+ if (product->comment)
+ m_comment = QString{product->comment};
+ if (product->image)
+ m_image = QString{product->image};
+ QLocale locale;
+ if (product->price)
+ m_price = locale.toCurrencyString
+ (product->price, "Rp");
+ }
+ QString const& sku() const { return m_sku; }
+ QString const& description() const { return m_description; }
+ QString const& comment() const { return m_comment; }
+ QString const& image() const { return m_image; }
+ QString const& price() const { return m_price; }
+
+ private:
+ QString m_sku;
+ QString m_description;
+ QString m_comment;
+ QString m_image;
+ QString m_price;
+ };
+
+ class Catalog : public QAbstractListModel
+ {
+ Q_OBJECT
+
+ public:
+ enum ProductRoles {
+ SkuRole = Qt::UserRole + 1,
+ DescriptionRole,
+ CommentRole,
+ ImageRole,
+ PriceRole
+ };
+
+ explicit Catalog(QObject* parent = nullptr)
+ : QAbstractListModel{parent} {}
+
+ int rowCount(QModelIndex const& parent
+ = QModelIndex()) const Q_DECL_OVERRIDE;
+ QVariant data(const QModelIndex& index
+ , int role = Qt::DisplayRole
+ ) const Q_DECL_OVERRIDE;
+
+ signals:
+ void updated();
+
+ protected:
+ QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
+
+ private slots:
+ void update(icclient_catalog* catalog);
+
+ private:
+ QList<Product> products;
+ void addProduct(Product const& product);
+ };
+
+}
+
+#endif // QICCLIENT_CATALOG_HXX