starting cloud save

This commit is contained in:
Aurélie Delhaie
2022-01-09 21:21:18 +01:00
parent c49966b47c
commit ffebb3c7d7
26 changed files with 983 additions and 213 deletions

View File

@@ -0,0 +1,56 @@
#include "breakpoint.h"
BreakPoint::BreakPoint()
{
}
BreakPoint::BreakPoint(QTime start, QTime end)
{
this->start = start;
this->end = end;
}
QTime BreakPoint::getStart()
{
return start;
}
QTime BreakPoint::getEnd()
{
return end;
}
float BreakPoint::getDuration()
{
return start.secsTo(end) / 60;
}
void BreakPoint::setStart(QTime start)
{
this->start = start;
}
void BreakPoint::setEnd(QTime end)
{
this->end = end;
}
QJsonObject BreakPoint::to_json()
{
QJsonObject obj{
{"start", start.toString(Qt::DateFormat::ISODate)},
{"end", end.toString(Qt::DateFormat::ISODate)}
};
return obj;
}
BreakPoint BreakPoint::from_json(QJsonObject obj)
{
BreakPoint result;
result.start = QTime::fromString(obj["start"].toString(), Qt::DateFormat::ISODate);
result.end = QTime::fromString(obj["end"].toString(), Qt::DateFormat::ISODate);
return result;
}

View File

@@ -0,0 +1,29 @@
#ifndef BREAKPOINT_H
#define BREAKPOINT_H
#include <QTime>
#include <QJsonObject>
#include <cmath>
class BreakPoint
{
private:
QTime start;
QTime end;
public:
BreakPoint();
BreakPoint(QTime, QTime);
QTime getStart();
QTime getEnd();
float getDuration();
void setStart(QTime);
void setEnd(QTime);
QJsonObject to_json();
static BreakPoint from_json(QJsonObject);
};
#endif // BREAKPOINT_H

97
sources/models/day.cpp Normal file
View File

@@ -0,0 +1,97 @@
#include "day.h"
Day::Day()
{
start = QTime(9, 0, 0, 0);
end = QTime(17, 15, 0, 0);
BreakPoint lunch(QTime(12, 0, 0, 0), QTime(12, 45, 0, 0));
breaks.append(lunch);
validate = false;
}
float Day::get_total() {
int sec = start.secsTo(end);
int minutes = sec / 60;
float breakTime = get_time_break();
return (minutes - breakTime) / 60;
}
void Day::set_start(QTime value)
{
start = value;
}
void Day::set_end(QTime value)
{
end = value;
}
void Day::set_validate(bool value) {
validate = value;
}
void Day::setBreaks(QVector<BreakPoint> breaks)
{
this->breaks = breaks;
}
QTime Day::get_start()
{
return start;
}
QTime Day::get_end()
{
return end;
}
QVector<BreakPoint> Day::getBreaks()
{
return breaks;
}
QJsonObject Day::to_json()
{
QJsonArray arr;
foreach (BreakPoint bp, breaks) {
arr.append(bp.to_json());
}
QJsonObject obj{
{KEY_START, start.toString(Qt::DateFormat::ISODate)},
{KEY_END, end.toString(Qt::DateFormat::ISODate)},
{KEY_BREAKS, arr},
{KEY_VALIDATE, validate}
};
return obj;
}
Day Day::from_json(QJsonObject obj)
{
Day result;
result.start = QTime::fromString(obj[KEY_START].toString(), Qt::DateFormat::ISODate);
result.end = QTime::fromString(obj[KEY_END].toString(), Qt::DateFormat::ISODate);
result.validate = obj[KEY_VALIDATE].toBool();
result.breaks.clear();
QJsonArray arr = obj[KEY_BREAKS].toArray();
foreach (QJsonValue val, arr) {
result.breaks.append(BreakPoint::from_json(val.toObject()));
}
return result;
}
bool Day::get_validate() {
return validate;
}
float Day::get_time_break()
{
float result = 0;
foreach (BreakPoint bp, breaks) {
result += bp.getDuration();
}
return result;
}

45
sources/models/day.h Normal file
View File

@@ -0,0 +1,45 @@
#ifndef DAY_H
#define DAY_H
#define KEY_START "start"
#define KEY_END "end"
#define KEY_BREAKS "breaks"
#define KEY_VALIDATE "validate"
#include <QTime>
#include <QJsonObject>
#include <QJsonArray>
#include <math.h>
#include "breakpoint.h"
class Day
{
private:
QTime start;
QTime end;
QVector<BreakPoint> breaks;
bool validate;
public:
Day();
void set_start(QTime value);
void set_end(QTime value);
void set_validate(bool);
void setBreaks(QVector<BreakPoint>);
QTime get_start();
QTime get_end();
QVector<BreakPoint> getBreaks();
bool get_validate();
float get_time_break();
QJsonObject to_json();
float get_total();
static Day from_json(QJsonObject);
};
#endif // DAY_H

View File

@@ -0,0 +1,96 @@
#include "settings.h"
Settings::Settings()
{
this->cloudEnabled = false;
this->cloudEmail = "";
this->cloudPassword = "";
this->cloudUrl = "";
this->cloudAgent = DEFAULT_AGENT_KEY;
}
Settings* Settings::FromJSON(QJsonObject obj)
{
Settings *s = new Settings();
if (obj["cloud"].isObject())
{
QJsonObject cloud = obj["cloud"].toObject();
s->cloudEnabled = cloud["enabled"].toBool(false);
s->cloudUrl = cloud["url"].toString("");
s->cloudEmail = cloud["email"].toString("");
s->cloudPassword = cloud["password"].toString("");
s->cloudAgent = cloud["agent"].toString(DEFAULT_AGENT_KEY);
}
return s;
}
QJsonObject Settings::ToJSON()
{
QJsonObject s;
QJsonObject cloud;
cloud["enabled"] = this->cloudEnabled;
cloud["url"] = this->cloudUrl;
cloud["email"] = this->cloudEmail;
cloud["password"] = this->cloudPassword;
cloud["agent"] = this->cloudAgent;
s["cloud"] = cloud;
return s;
}
bool Settings::GetCloudEnabled()
{
return this->cloudEnabled;
}
QString Settings::GetCloudUrl()
{
return this->cloudUrl;
}
QString Settings::GetCloudEmail()
{
return this->cloudEmail;
}
QString Settings::GetCloudPassword()
{
return this->cloudPassword;
}
QString Settings::GetCloudAgent()
{
return this->cloudAgent;
}
QString Settings::GetCloudAgentDefault()
{
return DEFAULT_AGENT;
}
void Settings::SetCloudEnabled(bool enabled)
{
this->cloudEnabled = enabled;
}
void Settings::SetCloudUrl(QString url)
{
this->cloudUrl = url;
}
void Settings::SetCloudEmail(QString email)
{
this->cloudEmail = email;
}
void Settings::SetCloudPassword(QString password)
{
this->cloudPassword = password;
}
void Settings::SetCloudAgent(QString agent)
{
this->cloudAgent = agent;
}

43
sources/models/settings.h Normal file
View File

@@ -0,0 +1,43 @@
#ifndef SETTINGS_H
#define SETTINGS_H
#ifdef _WIN32
#define DEFAULT_AGENT "cagent.exe"
#else
#define DEFAULT_AGENT "cagent"
#endif
#define DEFAULT_AGENT_KEY "<default>"
#include <QString>
#include <QJsonObject>
class Settings
{
private:
bool cloudEnabled;
QString cloudUrl;
QString cloudEmail;
QString cloudPassword;
QString cloudAgent;
public:
Settings();
static Settings* FromJSON(QJsonObject obj);
QJsonObject ToJSON();
bool GetCloudEnabled();
QString GetCloudUrl();
QString GetCloudEmail();
QString GetCloudPassword();
QString GetCloudAgent();
QString GetCloudAgentDefault();
void SetCloudEnabled(bool enabled);
void SetCloudUrl(QString url);
void SetCloudEmail(QString email);
void SetCloudPassword(QString password);
void SetCloudAgent(QString agent);
};
#endif // SETTINGS_H

86
sources/models/week.cpp Normal file
View File

@@ -0,0 +1,86 @@
#include "week.h"
Week::Week()
{
mon = Day();
tue = Day();
wed = Day();
thu = Day();
fri = Day();
week_number = 0;
}
Week Week::from_json(QJsonObject obj) {
Week w;
w.mon = Day::from_json(obj[MONDAY].toObject());
w.tue = Day::from_json(obj[TUESDAY].toObject());
w.wed = Day::from_json(obj[WEDNESDAY].toObject());
w.thu = Day::from_json(obj[THURDAY].toObject());
w.fri = Day::from_json(obj[FRIDAY].toObject());
w.week_number = obj[WEEK_NUMBER].toInt();
return w;
}
QJsonObject Week::to_json() {
QJsonObject obj {
{MONDAY, mon.to_json()},
{TUESDAY, tue.to_json()},
{WEDNESDAY, wed.to_json()},
{THURDAY, thu.to_json()},
{FRIDAY, fri.to_json()},
{WEEK_NUMBER, week_number}
};
return obj;
}
double Week::total() {
return mon.get_total() + tue.get_total() + wed.get_total() + thu.get_total() + fri.get_total();
}
Day Week::getMon() {
return mon;
}
Day Week::getTue() {
return tue;
}
Day Week::getWed() {
return wed;
}
Day Week::getThu() {
return thu;
}
Day Week::getFri() {
return fri;
}
int Week::getWeekNumber() {
return week_number;
}
void Week::setMon(Day value) {
mon = value;
}
void Week::setTue(Day value) {
tue = value;
}
void Week::setWed(Day value) {
wed = value;
}
void Week::setThu(Day value) {
thu = value;
}
void Week::setFri(Day value) {
fri = value;
}
void Week::setWeekNumber(int value) {
week_number = value;
}

46
sources/models/week.h Normal file
View File

@@ -0,0 +1,46 @@
#ifndef WEEK_H
#define WEEK_H
#define MONDAY "monday"
#define TUESDAY "tuesday"
#define WEDNESDAY "wednesday"
#define THURDAY "thurday"
#define FRIDAY "friday"
#define WEEK_NUMBER "weekNumber"
#include <QJsonObject>
#include "day.h"
class Week
{
public:
Week();
double total();
void setMon(Day);
void setTue(Day);
void setWed(Day);
void setThu(Day);
void setFri(Day);
void setWeekNumber(int);
Day getMon();
Day getTue();
Day getWed();
Day getThu();
Day getFri();
int getWeekNumber();
static Week from_json(QJsonObject);
QJsonObject to_json();
private:
Day mon;
Day tue;
Day wed;
Day thu;
Day fri;
int week_number;
};
#endif // WEEK_H

55
sources/models/year.cpp Normal file
View File

@@ -0,0 +1,55 @@
#include "year.h"
Year::Year()
{
}
Year::Year(int number)
{
this->number = number;
}
Year Year::from_json(QJsonObject obj)
{
Year result;
result.number = obj[KEY_NUMBER].toInt();
QJsonArray arr = obj[KEY_WEEKS].toArray();
foreach (QJsonValue val, arr) {
Week w = Week::from_json(val.toObject());
result.weeks[w.getWeekNumber()] = w;
}
return result;
}
QJsonObject Year::to_json()
{
QJsonObject obj;
QJsonArray arr;
foreach (Week w, weeks) {
arr.append(w.to_json());
}
obj[KEY_NUMBER] = number;
obj[KEY_WEEKS] = arr;
return obj;
}
QMap<int, Week> Year::getWeeks()
{
return weeks;
}
int Year::getNumber()
{
return number;
}
void Year::addWeek(Week w)
{
weeks[w.getWeekNumber()] = w;
}
void Year::setWeeks(QMap<int, Week> weeks)
{
this->weeks = weeks;
}

32
sources/models/year.h Normal file
View File

@@ -0,0 +1,32 @@
#ifndef YEAR_H
#define YEAR_H
#define KEY_NUMBER "number"
#define KEY_WEEKS "weeks"
#include <QJsonObject>
#include <QJsonArray>
#include "week.h"
class Year
{
private:
int number;
QMap<int, Week> weeks;
public:
Year();
Year(int number);
static Year from_json(QJsonObject);
QJsonObject to_json();
QMap<int, Week> getWeeks();
int getNumber();
void addWeek(Week w);
void setWeeks(QMap<int, Week> weeks);
};
#endif // YEAR_H