starting cloud save
This commit is contained in:
56
sources/models/breakpoint.cpp
Normal file
56
sources/models/breakpoint.cpp
Normal 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;
|
||||
}
|
||||
29
sources/models/breakpoint.h
Normal file
29
sources/models/breakpoint.h
Normal 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
97
sources/models/day.cpp
Normal 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
45
sources/models/day.h
Normal 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
|
||||
96
sources/models/settings.cpp
Normal file
96
sources/models/settings.cpp
Normal 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
43
sources/models/settings.h
Normal 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
86
sources/models/week.cpp
Normal 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
46
sources/models/week.h
Normal 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
55
sources/models/year.cpp
Normal 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
32
sources/models/year.h
Normal 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
|
||||
Reference in New Issue
Block a user