diff --git a/iFacility/iFacility.pro b/iFacility/iFacility.pro index aeac385..d294eb0 100644 --- a/iFacility/iFacility.pro +++ b/iFacility/iFacility.pro @@ -10,10 +10,14 @@ CONFIG += c++11 SOURCES += \ main.cpp \ - loginwindow.cpp + loginwindow.cpp \ + objects/profession.cpp \ + objects/user.cpp HEADERS += \ - loginwindow.h + loginwindow.h \ + objects/profession.h \ + objects/user.h FORMS += \ loginwindow.ui diff --git a/iFacility/main.cpp b/iFacility/main.cpp index 7812a44..9c05408 100644 --- a/iFacility/main.cpp +++ b/iFacility/main.cpp @@ -2,10 +2,11 @@ #include -int main(int argc, char *argv[]) -{ +int main(int argc, char *argv[]) { QApplication a(argc, argv); + LoginWindow w; w.show(); + return a.exec(); } diff --git a/iFacility/objects/profession.cpp b/iFacility/objects/profession.cpp new file mode 100644 index 0000000..d0eeec9 --- /dev/null +++ b/iFacility/objects/profession.cpp @@ -0,0 +1,32 @@ +#include "profession.h" + +QString Profession::title() const { + return mTitle; +} + +PID Profession::pID() const { + return mPID; +} + +Profession Profession::createProfession(const QString &title) { + Profession p; + + p.mPID = QUuid::createUuid(); + p.mTitle = title; + + return p; +} + +bool operator==(const Profession &l, const Profession &r) { + return l.mPID == r.mPID; +} + +QDataStream& operator<<(QDataStream &stream, const Profession &prof) { + stream << prof.mPID << prof.mTitle; + return stream; +} + +QDataStream& operator>>(QDataStream &stream, Profession &prof) { + stream >> prof.mPID >> prof.mTitle; + return stream; +} diff --git a/iFacility/objects/profession.h b/iFacility/objects/profession.h new file mode 100644 index 0000000..05ff91a --- /dev/null +++ b/iFacility/objects/profession.h @@ -0,0 +1,28 @@ +#ifndef PROFESSION_H +#define PROFESSION_H + +#include +#include +#include + +typedef QUuid PID; + +class Profession { +private: + PID mPID; + QString mTitle; + + Profession() = default; + +public: + QString title() const; + PID pID() const; + + static Profession createProfession(const QString &title); + + friend bool operator==(const Profession &l, const Profession &r); + friend QDataStream& operator<<(QDataStream &stream, const Profession &prof); + friend QDataStream& operator>>(QDataStream &stream, Profession &prof); +}; + +#endif // PROFESSION_H diff --git a/iFacility/objects/user.cpp b/iFacility/objects/user.cpp new file mode 100644 index 0000000..1752f1a --- /dev/null +++ b/iFacility/objects/user.cpp @@ -0,0 +1,78 @@ +#include "user.h" + +UID User::uID() const { + return mUID; +} + +QString User::getLogin() const { + return mLogin; +} + +bool User::checkPassword(const QString &password) { + return mPassword == password; +} + +QString User::firstName() const { + return mFirstName; +} + +QString User::secondName() const { + return mSecondName; +} + +QString User::patronymic() const { + return mPatronymic; +} + +ProfessionsList User::getProfessions() const { + return mProfessions; +} + +PID User::getCurrentProfession() const { + return mCurrentProfession; +} + +User User::createUser(QString login, QString password, + QString firstName, QString secondName, QString patronymic) { + User u; + + u.mUID = QUuid::createUuid(); + u.mLogin = login; + u.mPassword = password; + u.mFirstName = firstName; + u.mSecondName = secondName; + u.mPatronymic = patronymic; + + return u; +} + +bool User::addProfession(const Profession &p) { + if (p.pID() == mCurrentProfession) { + return false; + } + + if (!mProfessions.contains(p)) { + if (mProfessions.size() >= 4) { + mProfessions.remove(0); + } + mProfessions.push_back(p); + } + + return true; +} + +bool User::setCurrentProfession(const Profession &p) { + if (!mProfessions.contains(p)) { + return false; + } + + if (p.pID() != mCurrentProfession) { + mCurrentProfession = p.pID(); + } + + return true; +} + +void User::removeProfession(const Profession &p) { + mProfessions.removeAll(p); +} diff --git a/iFacility/objects/user.h b/iFacility/objects/user.h new file mode 100644 index 0000000..136b6b9 --- /dev/null +++ b/iFacility/objects/user.h @@ -0,0 +1,44 @@ +#ifndef USER_H +#define USER_H + +#include +#include +#include + +#include "profession.h" + +typedef QUuid UID; +typedef QVector ProfessionsList; + +class User { +private: + UID mUID; + QString mLogin; + QString mPassword; + QString mFirstName; + QString mSecondName; + QString mPatronymic; + ProfessionsList mProfessions; + PID mCurrentProfession = 0; + + User() = default; + +public: + UID uID() const; + QString getLogin() const; + bool checkPassword(const QString &password); + QString firstName() const; + QString secondName() const; + QString patronymic() const; + ProfessionsList getProfessions() const; + PID getCurrentProfession() const; + + static User createUser(QString login, QString password, + QString firstName, QString secondName, QString patronymic); + + bool addProfession(const Profession &p); + bool setCurrentProfession(const Profession &p); + void removeProfession(const Profession &p); +}; + +#endif // USER_H diff --git a/iFacilityProject.pro.user b/iFacilityProject.pro.user index 38dd6eb..a204477 100644 --- a/iFacilityProject.pro.user +++ b/iFacilityProject.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -56,7 +56,32 @@ ProjectExplorer.Project.PluginSettings - + + + true + true + true + true + true + + + 0 + true + + -fno-delayed-template-parsing + + true + Builtin.Questionable + + true + Builtin.DefaultTidyAndClazy + 4 + + + + true + + ProjectExplorer.Project.Target.0 @@ -300,19 +325,19 @@ 2 - - ProjectExplorer.CustomExecutableRunConfiguration - + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/Admin/Documents/repos/iFacilityProject/iFacility/iFacility.pro + C:/Users/Admin/Documents/repos/iFacilityProject/iFacility/iFacility.pro false false true + true false false true - + C:/Users/Admin/Documents/repos/build-iFacilityProject-Desktop_Qt_5_15_0_MinGW_64_bit-Debug/iFacility 1