summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--catalog.cxx4
-rw-r--r--client.cxx9
m---------libicclient10
-rw-r--r--qicclient/catalog.hxx6
-rw-r--r--qicclient/client.hxx43
-rw-r--r--qicclient/user.hxx147
-rw-r--r--user.cxx235
8 files changed, 433 insertions, 23 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6172f3f..7d4c66b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,8 @@ set(CMAKE_AUTOMOC ON)
find_package(Qt5Core)
add_library(${PROJECT_NAME} STATIC
+ user.cxx
+ catalog.cxx
client.cxx)
target_link_libraries(${PROJECT_NAME} Qt5::Core)
diff --git a/catalog.cxx b/catalog.cxx
index 17702bc..8664cdc 100644
--- a/catalog.cxx
+++ b/catalog.cxx
@@ -51,11 +51,9 @@ namespace ICClient {
void Catalog::update(icclient_catalog* catalog)
{
- if (catalog) {
+ if (catalog)
for (size_t i = 0; i < catalog->length; i++)
addProduct(Product{catalog->products[i]});
- icclient_product_freecatalog(catalog);
- }
emit updated();
}
diff --git a/client.cxx b/client.cxx
index 0443ce3..7ffe780 100644
--- a/client.cxx
+++ b/client.cxx
@@ -1,3 +1,4 @@
+#include <cstddef>
#include <icclient/client.h>
#include "qicclient/client.hxx"
@@ -13,11 +14,11 @@ namespace ICClient {
icclient_cleanup();
}
- void Client::productAll(icclient_catalog** catalogptr
- , size_t (*callback)(void*, size_t, size_t, void*))
+ void Client::allProducts(size_t (*handler)(void*, size_t, size_t, void*))
{
- icclient_product_all(catalogptr, callback);
- emit gotProductAll(*catalogptr);
+ icclient_catalog* catalog = nullptr;
+ icclient_allproducts(handler, &catalog);
+ emit gotAllProducts(catalog);
}
void Client::logIn(QString const& username, QString const& password)
diff --git a/libicclient b/libicclient
-Subproject de7fefc270ef3fd8552773e8e6424ad5885b306
+Subproject 685d975434d9311e5afebe9f933509f8bb2ad61
diff --git a/qicclient/catalog.hxx b/qicclient/catalog.hxx
index 27b4c8e..782c864 100644
--- a/qicclient/catalog.hxx
+++ b/qicclient/catalog.hxx
@@ -61,15 +61,15 @@ namespace ICClient {
, int role = Qt::DisplayRole
) const Q_DECL_OVERRIDE;
+ public slots:
+ void update(icclient_catalog* catalog);
+
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);
diff --git a/qicclient/client.hxx b/qicclient/client.hxx
index 27ba2af..bccd665 100644
--- a/qicclient/client.hxx
+++ b/qicclient/client.hxx
@@ -1,10 +1,11 @@
-#ifndef QRTCLIENT_CLIENT_HXX
-#define QRTCLIENT_CLIENT_HXX
+#ifndef QICCLIENT_CLIENT_HXX
+#define QICCLIENT_CLIENT_HXX
#include <QObject>
#include <icclient/product.h>
struct icclient_catalog;
+struct icclient_order;
namespace ICClient {
@@ -16,21 +17,47 @@ namespace ICClient {
Client(char const* url, char const* certificate = nullptr);
~Client();
- void productAll(icclient_catalog** catalogptr
- , size_t (*callback)(void* contents
+ void allProducts(size_t (*handler)(void* contents
, size_t size, size_t nmemb
, void* userdata));
public slots:
- void logIn(QString const& username, QString const& password);
+ /*
+ 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
+ , QString const& address1
+ , QString const& address2
+ , QString const& city
+ , QString const& state
+ , QString const& zip
+ , QString const& email
+ , QString const& phoneDay);
+ void changePassword(QString const& passwordOld
+ , QString const& password
+ , QString const& verify);
+ */
void logOut();
+ /*
+ void newItem(QString const& description
+ , QString const& comment,
+ QString const& price
+ , QString const& imagePath);
+ */
signals:
- void gotProductAll(icclient_catalog* catalog);
- void loggedIn(QString const& username);
+ void gotAllProducts(icclient_catalog* catalog);
+ void ordered(icclient_order* order);
+ void loggedIn(QString const& userName);
void loggedOut();
};
}
-#endif // QRTCLIENT_CLIENT_HXX
+#endif // QICCLIENT_CLIENT_HXX
diff --git a/qicclient/user.hxx b/qicclient/user.hxx
new file mode 100644
index 0000000..b554cba
--- /dev/null
+++ b/qicclient/user.hxx
@@ -0,0 +1,147 @@
+#ifndef QICCLIENT_USER_HXX
+#define QICCLIENT_USER_HXX
+
+#include <QObject>
+#include <icclient/member.h>
+
+struct icclient_user;
+
+namespace ICClient {
+
+ class User : public QObject
+ {
+ Q_OBJECT
+ Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged)
+ Q_PROPERTY(QString userNick READ userNick WRITE setUserNick NOTIFY userNickChanged)
+ Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged)
+ Q_PROPERTY(QString expiration READ expiration WRITE setExpiration NOTIFY expirationChanged)
+ Q_PROPERTY(QString acl READ acl WRITE setAcl NOTIFY aclChanged)
+ Q_PROPERTY(QString modTime READ modTime WRITE setModTime NOTIFY modTimeChanged)
+ Q_PROPERTY(QString sNickName READ sNickName WRITE setSNickName NOTIFY sNickNameChanged)
+ Q_PROPERTY(QString company READ company WRITE setCompany NOTIFY companyChanged)
+ Q_PROPERTY(QString fName READ fName WRITE setFName NOTIFY fNameChanged)
+ Q_PROPERTY(QString lName READ lName WRITE setLName NOTIFY lNameChanged)
+ Q_PROPERTY(QString address1 READ address1 WRITE setAddress1 NOTIFY address1Changed)
+ Q_PROPERTY(QString address2 READ address2 WRITE setAddress2 NOTIFY address2Changed)
+ Q_PROPERTY(QString address3 READ address3 WRITE setAddress3 NOTIFY address3Changed)
+ Q_PROPERTY(QString city READ city WRITE setCity NOTIFY cityChanged)
+ Q_PROPERTY(QString state READ state WRITE setState NOTIFY stateChanged)
+ Q_PROPERTY(QString zip READ zip WRITE setZip NOTIFY zipChanged)
+ Q_PROPERTY(QString country READ country WRITE setCountry NOTIFY countryChanged)
+ Q_PROPERTY(QString phoneDay READ phoneDay WRITE setPhoneDay NOTIFY phoneDayChanged)
+ Q_PROPERTY(QString email READ email WRITE setEmail NOTIFY emailChanged)
+
+ public:
+ explicit User(QObject* parent = nullptr)
+ : QObject{parent}
+ , m_userName{""}
+ , m_userNick{""}
+ , m_password{""}
+ , m_expiration{""}
+ , m_acl{""}
+ , m_modTime{""}
+ , m_sNickName{""}
+ , m_company{""}
+ , m_fName{""}
+ , m_lName{""}
+ , m_address1{""}
+ , m_address2{""}
+ , m_address3{""}
+ , m_city{""}
+ , m_state{""}
+ , m_zip{""}
+ , m_country{""}
+ , m_phoneDay{""}
+ , m_email{""}
+ {}
+ ~User() {}
+
+ QString const& userName() const { return m_userName; }
+ QString const& userNick() const { return m_userNick; }
+ QString const& password() const { return m_password; }
+ QString const& expiration() const { return m_expiration; }
+ QString const& acl() const { return m_acl; }
+ QString const& modTime() const { return m_modTime; }
+ QString const& sNickName() const { return m_sNickName; }
+ QString const& company() const { return m_company; }
+ QString const& fName() const { return m_fName; }
+ QString const& lName() const { return m_lName; }
+ QString const& address1() const { return m_address1; }
+ QString const& address2() const { return m_address2; }
+ QString const& address3() const { return m_address3; }
+ QString const& city() const { return m_city; }
+ QString const& state() const { return m_state; }
+ QString const& zip() const { return m_zip; }
+ QString const& country() const { return m_country; }
+ QString const& phoneDay() const { return m_phoneDay; }
+ QString const& email() const { return m_email; }
+
+ void setUserName(QString const& userName);
+ void setUserNick(QString const& userNick);
+ void setPassword(QString const& password);
+ void setExpiration(QString const& expiration);
+ void setAcl(QString const& acl);
+ void setModTime(QString const& modTime);
+ void setSNickName(QString const& sNickName);
+ void setCompany(QString const& company);
+ void setFName(QString const& fName);
+ void setLName(QString const& lName);
+ void setAddress1(QString const& address1);
+ void setAddress2(QString const& address2);
+ void setAddress3(QString const& address3);
+ void setCity(QString const& city);
+ void setState(QString const& state);
+ void setZip(QString const& zip);
+ void setCountry(QString const& country);
+ void setPhoneDay(QString const& phoneDay);
+ void setEmail(QString const& email);
+
+ public slots:
+ void update(icclient_user* user);
+
+ signals:
+ void userNameChanged();
+ void userNickChanged();
+ void passwordChanged();
+ void expirationChanged();
+ void aclChanged();
+ void modTimeChanged();
+ void sNickNameChanged();
+ void companyChanged();
+ void fNameChanged();
+ void lNameChanged();
+ void address1Changed();
+ void address2Changed();
+ void address3Changed();
+ void cityChanged();
+ void stateChanged();
+ void zipChanged();
+ void countryChanged();
+ void phoneDayChanged();
+ void emailChanged();
+
+ private:
+ QString m_userName;
+ QString m_userNick;
+ QString m_password;
+ QString m_expiration;
+ QString m_acl;
+ QString m_modTime;
+ QString m_sNickName;
+ QString m_company;
+ QString m_fName;
+ QString m_lName;
+ QString m_address1;
+ QString m_address2;
+ QString m_address3;
+ QString m_city;
+ QString m_state;
+ QString m_zip;
+ QString m_country;
+ QString m_phoneDay;
+ QString m_email;
+ };
+
+}
+
+#endif // QICCLIENT_USER_HXX
diff --git a/user.cxx b/user.cxx
new file mode 100644
index 0000000..2834744
--- /dev/null
+++ b/user.cxx
@@ -0,0 +1,235 @@
+#include <cstddef>
+#include <icclient/client.h>
+#include "qicclient/user.hxx"
+
+namespace ICClient {
+
+ void User::setUserName(QString const& UserName)
+ {
+ if (m_userName != UserName) {
+ m_userName = UserName;
+ emit userNameChanged();
+ }
+ }
+
+ void User::setUserNick(QString const& UserNick)
+ {
+ if (m_userNick != UserNick) {
+ m_userNick = UserNick;
+ emit userNickChanged();
+ }
+ }
+
+ void User::setPassword(QString const& password)
+ {
+ if (m_password != password) {
+ m_password = password;
+ emit passwordChanged();
+ }
+ }
+
+ void User::setExpiration(QString const& expiration)
+ {
+ if (m_expiration != expiration) {
+ m_expiration = expiration;
+ emit expirationChanged();
+ }
+ }
+
+ void User::setAcl(QString const& acl)
+ {
+ if (m_acl != acl) {
+ m_acl = acl;
+ emit aclChanged();
+ }
+ }
+
+ void User::setModTime(QString const& modTime)
+ {
+ if (m_modTime != modTime) {
+ m_modTime = modTime;
+ emit modTimeChanged();
+ }
+ }
+
+ void User::setSNickName(QString const& sNickName)
+ {
+ if (m_sNickName != sNickName) {
+ m_sNickName = sNickName;
+ emit sNickNameChanged();
+ }
+ }
+
+ void User::setCompany(QString const& company)
+ {
+ if (m_company != company) {
+ m_company = company;
+ emit companyChanged();
+ }
+ }
+
+ void User::setFName(QString const& fName)
+ {
+ if (m_fName != fName) {
+ m_fName = fName;
+ emit fNameChanged();
+ }
+ }
+
+ void User::setLName(QString const& lName)
+ {
+ if (m_lName != lName) {
+ m_lName = lName;
+ emit lNameChanged();
+ }
+ }
+
+ void User::setAddress1(QString const& address1)
+ {
+ if (m_address1 != address1) {
+ m_address1 = address1;
+ emit address1Changed();
+ }
+ }
+
+ void User::setAddress2(QString const& address2)
+ {
+ if (m_address2 != address2) {
+ m_address2 = address2;
+ emit address2Changed();
+ }
+ }
+
+ void User::setAddress3(QString const& address3)
+ {
+ if (m_address3 != address3) {
+ m_address3 = address3;
+ emit address3Changed();
+ }
+ }
+
+ void User::setCity(QString const& city)
+ {
+ if (m_city != city) {
+ m_city = city;
+ emit cityChanged();
+ }
+ }
+
+ void User::setState(QString const& state)
+ {
+ if (m_state != state) {
+ m_state = state;
+ emit stateChanged();
+ }
+ }
+
+ void User::setZip(QString const& zip)
+ {
+ if (m_zip != zip) {
+ m_zip = zip;
+ emit zipChanged();
+ }
+ }
+
+ void User::setCountry(QString const& country)
+ {
+ if (m_country != country) {
+ m_country = country;
+ emit countryChanged();
+ }
+ }
+
+ void User::setPhoneDay(QString const& phoneDay)
+ {
+ if (m_phoneDay != phoneDay) {
+ m_phoneDay = phoneDay;
+ emit phoneDayChanged();
+ }
+ }
+
+ void User::setEmail(QString const& email)
+ {
+ if (m_email != email) {
+ m_email = email;
+ emit emailChanged();
+ }
+ }
+
+ void User::update(icclient_user* user)
+ {
+ if (user->username)
+ m_userName = user->username;
+ else
+ m_userName = "";
+ if (user->usernick)
+ m_userNick = user->usernick;
+ else
+ m_userNick = "";
+ if (user->fname)
+ m_fName = user->fname;
+ else
+ m_fName = "";
+ if (user->lname)
+ m_lName = user->lname;
+ else
+ m_lName = "";
+ if (user->address1)
+ m_address1 = user->address1;
+ else
+ m_address1 = "";
+ if (user->address2)
+ m_address2 = user->address2;
+ else
+ m_address2 = "";
+ if (user->address3)
+ m_address3 = user->address3;
+ else
+ m_address3 = "";
+ if (user->city)
+ m_city = user->city;
+ else
+ m_city = "";
+ if (user->state)
+ m_state = user->state;
+ else
+ m_state = "";
+ if (user->zip)
+ m_zip = user->zip;
+ else
+ m_zip = "";
+ if (user->country)
+ m_country = user->country;
+ else
+ m_country = "";
+ if (user->phone_day)
+ m_phoneDay = user->phone_day;
+ else
+ m_phoneDay = "";
+ if (user->email)
+ m_email = user->email;
+ else
+ m_email = "";
+
+ emit userNameChanged();
+ emit userNickChanged();
+ emit passwordChanged();
+ emit expirationChanged();
+ emit aclChanged();
+ emit modTimeChanged();
+ emit sNickNameChanged();
+ emit companyChanged();
+ emit fNameChanged();
+ emit lNameChanged();
+ emit address1Changed();
+ emit address2Changed();
+ emit address3Changed();
+ emit cityChanged();
+ emit stateChanged();
+ emit zipChanged();
+ emit countryChanged();
+ emit phoneDayChanged();
+ emit emailChanged();
+ }
+
+}