diff options
author | ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id> | 2021-06-14 17:41:23 +0800 |
---|---|---|
committer | ꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id> | 2021-06-14 17:41:23 +0800 |
commit | 32573486befebc6a6030de295cf04b9df461a6b4 (patch) | |
tree | e7f0fb057484fb06354c36a9069f243bb147acf8 | |
parent | fdc2f14e4f120a5b638a5666606593be1006c009 (diff) |
Provide a way to use libicclient default Strap handler
-rw-r--r-- | client.cxx | 21 | ||||
-rw-r--r-- | qicclient.hxx | 13 |
2 files changed, 34 insertions, 0 deletions
@@ -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); }; |