summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id>2020-07-19 09:24:10 +0800
committerꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id>2020-07-19 09:24:10 +0800
commit8f1ef80a59642e8051f588e2dde41176a8495cb3 (patch)
tree1449fcf82051a6adf82f4b07fd02a59617468b91
parenta385d4f20c81b190ac2556c9d57eaccd79f98cd5 (diff)
Admin class
-rw-r--r--CMakeLists.txt9
-rw-r--r--admin.cxx90
m---------libicclient0
-rw-r--r--qicclient/admin.hxx68
4 files changed, 164 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2e4741a..123a895 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,13 +7,15 @@ set(CMAKE_AUTOMOC ON)
find_package(Qt5Core)
add_library(${PROJECT_NAME} SHARED
- ${PROJECT_NAME}/member.hxx
${PROJECT_NAME}/catalog.hxx
${PROJECT_NAME}/ord.hxx
+ ${PROJECT_NAME}/member.hxx
+ ${PROJECT_NAME}/admin.hxx
${PROJECT_NAME}/client.hxx
- member.cxx
catalog.cxx
ord.cxx
+ member.cxx
+ admin.cxx
client.cxx
)
@@ -26,10 +28,11 @@ target_compile_definitions(${PROJECT_NAME} PRIVATE QICCLIENT)
install(TARGETS ${PROJECT_NAME} DESTINATION lib)
install(FILES
- ${PROJECT_NAME}/member.hxx
${PROJECT_NAME}/product.hxx
${PROJECT_NAME}/catalog.hxx
${PROJECT_NAME}/ord.hxx
+ ${PROJECT_NAME}/member.hxx
+ ${PROJECT_NAME}/admin.hxx
${PROJECT_NAME}/client.hxx
DESTINATION include/${PROJECT_NAME}
)
diff --git a/admin.cxx b/admin.cxx
new file mode 100644
index 0000000..b01fc2e
--- /dev/null
+++ b/admin.cxx
@@ -0,0 +1,90 @@
+#include <cstddef>
+#include <icclient/admin.h>
+#include "qicclient/admin.hxx"
+
+namespace QICClient {
+
+ void Admin::setUserName(QString const& userName)
+ {
+ if (m_userName != userName) {
+ m_userName = userName;
+ emit userNameChanged();
+ }
+ }
+
+ void Admin::setPassword(QString const& password)
+ {
+ if (m_password != password) {
+ m_password = password;
+ emit passwordChanged();
+ }
+ }
+
+ void Admin::setName(QString const& name)
+ {
+ if (m_name != name) {
+ m_name = name;
+ emit nameChanged();
+ }
+ }
+
+ void Admin::setSuper(bool super)
+ {
+ if (m_super != super) {
+ m_super = super;
+ emit superChanged();
+ }
+ }
+
+ void Admin::setData(icclient_admin* data)
+ {
+ if (data && data->username && m_userName != data->username) {
+ m_userName = QString{data->username};
+ emit userNameChanged();
+ } else setUserName("");
+
+ if (data && data->password && m_password != data->password) {
+ m_password = QString{data->password};
+ emit passwordChanged();
+ } else setPassword("");
+
+ if (data && data->name && m_name != data->name) {
+ m_name = QString{data->name};
+ emit nameChanged();
+ } else setName("");
+
+ if (data) setSuper(data->super);
+ else setSuper("");
+
+ if (m_data != data) m_data = data;
+ }
+
+ void Admin::logIn(QString const& username, QString const& password,
+ QString const& successPage, QString const& nextPage,
+ QString const& failPage,
+ size_t (*handler)(void*, size_t, size_t, void*))
+ {
+ setData(icclient_admin_login(username.toLatin1().constData(),
+ password.toLatin1().constData(),
+ successPage.toLatin1().constData(),
+ nextPage.toLatin1().constData(),
+ failPage.toLatin1().constData(),
+ handler));
+ }
+
+ void Admin::newItem(QString const& description, QString const& comment,
+ QString const& price, QString const& imagePath)
+ {
+ icclient_admin_newitem(description.toLatin1().constData(),
+ comment.toLatin1().constData(),
+ price.toLatin1().constData(),
+ imagePath.toLatin1().constData());
+ }
+
+ void Admin::logOut()
+ {
+ icclient_admin_logout(m_data);
+ setData(nullptr);
+ }
+
+}
diff --git a/libicclient b/libicclient
-Subproject 345d1a62fcf5ac82189196c74b3d5e40c6d08df
+Subproject 12950ef44456807150eaf669e32446b011b754f
diff --git a/qicclient/admin.hxx b/qicclient/admin.hxx
new file mode 100644
index 0000000..1e728cb
--- /dev/null
+++ b/qicclient/admin.hxx
@@ -0,0 +1,68 @@
+#ifndef QICCLIENT_ADMIN_HXX
+#define QICCLIENT_ADMIN_HXX
+
+#include <QObject>
+#include <icclient/admin.h>
+
+struct icclient_admin;
+
+namespace QICClient {
+
+ class Admin : public QObject
+ {
+ Q_OBJECT
+ Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged)
+ Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged)
+ Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
+ Q_PROPERTY(bool super READ super WRITE setSuper NOTIFY superChanged)
+
+ public:
+ explicit Admin(QObject* parent = nullptr) :
+ QObject{parent},
+ m_userName{""},
+ m_password{""},
+ m_name{""},
+ m_super{false}
+ {}
+ ~Admin() {}
+
+ QString const& userName() const { return m_userName; }
+ QString const& password() const { return m_password; }
+ QString const& name() const { return m_name; }
+ bool super() { return m_super; }
+
+ void setUserName(QString const& userName);
+ void setPassword(QString const& password);
+ void setName(QString const& name);
+ void setSuper(bool super);
+
+ void logIn(QString const& username, QString const& password,
+ QString const& successPage = nullptr,
+ QString const& nextPage = nullptr,
+ QString const& failPage = nullptr,
+ size_t (*handler)(void*, size_t, size_t,
+ void*) = nullptr);
+
+ public slots:
+ void newItem(QString const& description, QString const& comment,
+ QString const& price, QString const& imagePath);
+ void logOut();
+
+ signals:
+ void userNameChanged();
+ void passwordChanged();
+ void nameChanged();
+ void superChanged();
+
+ private:
+ QString m_userName;
+ QString m_password;
+ QString m_name;
+ bool m_super;
+ icclient_admin* m_data;
+ void setData(icclient_admin* data);
+ };
+
+}
+
+#endif // QICCLIENT_ADMIN_HXX