diff --git a/src/Project-Orion/CMakeLists.txt b/src/Project-Orion/CMakeLists.txt index 7dcb317..a210131 100644 --- a/src/Project-Orion/CMakeLists.txt +++ b/src/Project-Orion/CMakeLists.txt @@ -19,6 +19,8 @@ qt_add_qml_module(appProject-Orion Main.qml SOURCES user.h user.cpp SOURCES userlist.h userlist.cpp + SOURCES serialization.h + SOURCES serialization.cpp ) # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. diff --git a/src/Project-Orion/serialization.cpp b/src/Project-Orion/serialization.cpp new file mode 100644 index 0000000..2758fa7 --- /dev/null +++ b/src/Project-Orion/serialization.cpp @@ -0,0 +1,35 @@ +#include "serialization.h" +#include +#include +#include +#include +#include + +UserList&& loadUserList(const QString &file) +{ + QFile doc{std::filesystem::path{file.toStdString()}}; + QString fileContents = doc.readAll(); + QJsonDocument document = QJsonDocument::fromJson(fileContents.toUtf8()); + + QJsonArray array = document.array(); + QVector container; + + for (auto elem: array) + { + auto obj = elem.toObject(); + User newUser{obj["name"].toString(), QDate::fromString(obj["date_of_birth"].toString()), + QDate::fromString(obj["date_of_death"].toString()), obj["default"].toBool()}; + + container.append(newUser); + } + + UserList returnObj; + returnObj.setList(container); + + return std::move(returnObj); +} + +void saveUserList(const UserList &list) +{ + +} diff --git a/src/Project-Orion/serialization.h b/src/Project-Orion/serialization.h new file mode 100644 index 0000000..e8bba2c --- /dev/null +++ b/src/Project-Orion/serialization.h @@ -0,0 +1,9 @@ +#ifndef SERIALIZATION_H +#define SERIALIZATION_H + +#include "userlist.h" + +UserList &&loadUserList(const QString &file); +void saveUserList(const UserList &list); + +#endif // SERIALIZATION_H diff --git a/src/Project-Orion/user.cpp b/src/Project-Orion/user.cpp index ccd2995..bbd7b30 100644 --- a/src/Project-Orion/user.cpp +++ b/src/Project-Orion/user.cpp @@ -1,5 +1,5 @@ #include "user.h" User::User(QString name, QDate dateOfBirth, QDate dateOfDeath, bool isItDefault) - : name{name}, dateOfBirth{dateOfBirth}, dateOfDeath{dateOfDeath} + : name{name}, dateOfBirth{dateOfBirth}, dateOfDeath{dateOfDeath}, isItDefault{isItDefault} {} diff --git a/src/Project-Orion/userlist.h b/src/Project-Orion/userlist.h index 8af2816..18d3f43 100644 --- a/src/Project-Orion/userlist.h +++ b/src/Project-Orion/userlist.h @@ -1,11 +1,13 @@ #ifndef USERLIST_H #define USERLIST_H -#include #include "user.h" -class UserList +#include + +class UserList: public QObject { + Q_OBJECT public: UserList();