Add serialization and comparison to User class
This commit is contained in:
parent
02869cdf6e
commit
de2f8e01b2
2 changed files with 30 additions and 6 deletions
|
|
@ -51,18 +51,18 @@ bool User::addProfession(const Profession &p) {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!mProfessions.contains(p)) {
|
||||
if (!mProfessions.contains(p.pID())) {
|
||||
if (mProfessions.size() >= 4) {
|
||||
mProfessions.remove(0);
|
||||
}
|
||||
mProfessions.push_back(p);
|
||||
mProfessions.push_back(p.pID());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool User::setCurrentProfession(const Profession &p) {
|
||||
if (!mProfessions.contains(p)) {
|
||||
if (!mProfessions.contains(p.pID())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -74,5 +74,25 @@ bool User::setCurrentProfession(const Profession &p) {
|
|||
}
|
||||
|
||||
void User::removeProfession(const Profession &p) {
|
||||
mProfessions.removeAll(p);
|
||||
mProfessions.removeAll(p.pID());
|
||||
}
|
||||
|
||||
bool operator==(const User &l, const User &r) {
|
||||
return l.mUID == r.mUID && l.mLogin == r.mLogin;
|
||||
}
|
||||
|
||||
QDataStream& operator<<(QDataStream &stream, const User &usr) {
|
||||
stream << usr.mUID
|
||||
<< usr.mLogin << usr.mPassword
|
||||
<< usr.mFirstName << usr.mSecondName << usr.mPatronymic
|
||||
<< usr.mProfessions << usr.mCurrentProfession;
|
||||
return stream;
|
||||
}
|
||||
|
||||
QDataStream& operator>>(QDataStream &stream, User &usr) {
|
||||
stream >> usr.mUID
|
||||
>> usr.mLogin >> usr.mPassword
|
||||
>> usr.mFirstName >> usr.mSecondName >> usr.mPatronymic
|
||||
>> usr.mProfessions >> usr.mCurrentProfession;
|
||||
return stream;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
#include "profession.h"
|
||||
|
||||
typedef QUuid UID;
|
||||
typedef QVector<Profession> ProfessionsList;
|
||||
typedef QVector<PID> ProfessionsList;
|
||||
|
||||
class User {
|
||||
private:
|
||||
|
|
@ -21,9 +21,9 @@ private:
|
|||
ProfessionsList mProfessions;
|
||||
PID mCurrentProfession = 0;
|
||||
|
||||
public:
|
||||
User() = default;
|
||||
|
||||
public:
|
||||
UID uID() const;
|
||||
QString getLogin() const;
|
||||
bool checkPassword(const QString &password);
|
||||
|
|
@ -39,6 +39,10 @@ public:
|
|||
bool addProfession(const Profession &p);
|
||||
bool setCurrentProfession(const Profession &p);
|
||||
void removeProfession(const Profession &p);
|
||||
|
||||
friend bool operator==(const User &l, const User &r);
|
||||
friend QDataStream& operator<<(QDataStream &stream, const User &usr);
|
||||
friend QDataStream& operator>>(QDataStream &stream, User &usr);
|
||||
};
|
||||
|
||||
#endif // USER_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue