diff options
-rw-r--r-- | CMakeLists.txt | 9 | ||||
-rw-r--r-- | admin.cxx | 90 | ||||
m--------- | libicclient | 0 | ||||
-rw-r--r-- | qicclient/admin.hxx | 68 |
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 |