diff options
Diffstat (limited to 'qicclient')
| -rw-r--r-- | qicclient/catalog.hxx | 81 | 
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 |