summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2021-06-14 17:41:23 +0800
committerꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2021-06-14 17:41:23 +0800
commit32573486befebc6a6030de295cf04b9df461a6b4 (patch)
treee7f0fb057484fb06354c36a9069f243bb147acf8
parentfdc2f14e4f120a5b638a5666606593be1006c009 (diff)
Provide a way to use libicclient default Strap handler
-rw-r--r--client.cxx21
-rw-r--r--qicclient.hxx13
2 files changed, 34 insertions, 0 deletions
diff --git a/client.cxx b/client.cxx
index ae6df8a..d4b2237 100644
--- a/client.cxx
+++ b/client.cxx
@@ -11,6 +11,12 @@ static void handleResults(icclient_fetch_t* fetch)
client->emitResults(fetch);
}
+static void callback(icclient_catalog* catalog)
+{
+ client->emitCatalog(catalog);
+ icclient_free_catalog(catalog);
+}
+
namespace QICClient {
Client::Client(char const* sampleURL, char const* image_Dir, char const* certificate)
@@ -31,6 +37,11 @@ namespace QICClient {
}, handleResults);
}
+ void Client::results(QString const& prodGroup, void (*handler)(icclient_fetch_t*))
+ {
+ icclient_results(prodGroup.toLatin1().constData(), callback, handler);
+ }
+
void Client::allProducts()
{
icclient_allproducts([](icclient_catalog* catalog) {
@@ -38,11 +49,21 @@ namespace QICClient {
}, handleResults);
}
+ void Client::allproducts(void (*handler)(icclient_fetch_t* fetch))
+ {
+ icclient_allproducts(callback, handler);
+ }
+
void Client::emitResults(icclient_fetch_t* fetch)
{
emit gotResults(fetch);
}
+ void Client::emitCatalog(icclient_catalog* catalog)
+ {
+ emit gotCatalog(new Catalog{catalog});
+ }
+
void Client::flyPage(QString const& sku,void (*handler)(icclient_fetch_t*))
{
icclient_product* product = nullptr;
diff --git a/qicclient.hxx b/qicclient.hxx
index 7f1ae92..dc68326 100644
--- a/qicclient.hxx
+++ b/qicclient.hxx
@@ -23,7 +23,19 @@ namespace QICClient {
*/
Client(char const* sampleURL, char const* image_Dir, char const* certificate = nullptr);
~Client();
+ /*!
+ * \brief For fetching products that belong a specific group.
+ * \param prodGroup The name of the product group.
+ * \param handler A C style pointer to function for custom handling.
+ */
+ void results(QString const& prodGroup, void (*handler)(icclient_fetch_t*));
+ /*!
+ * \brief For fetching data about all active products.
+ * \param handler A C style pointer to function for custom handling.
+ */
+ void allproducts(void (*handler)(icclient_fetch_t*) = nullptr);
void emitResults(icclient_fetch_t* fetch);
+ void emitCatalog(icclient_catalog* catalog);
/*!
* \brief For fetching data about a specific product.
* \param sku The SKU of the item to order.
@@ -51,6 +63,7 @@ namespace QICClient {
signals:
void gotResults(icclient_fetch_t* fetch);
+ void gotCatalog(Catalog* catalog);
void gotFlyPage(shared_ptr<Product> product);
};