Pointer + time delta

This commit is contained in:
Aurélie Delhaie
2022-03-01 21:08:34 +01:00
parent ffebb3c7d7
commit 9bb56fe174
24 changed files with 652 additions and 282 deletions

View File

@@ -5,6 +5,12 @@ BreakPoint::BreakPoint()
}
BreakPoint::BreakPoint(BreakPoint *old)
{
this->start = old->start;
this->end = old->end;
}
BreakPoint::BreakPoint(QTime start, QTime end)
{
this->start = start;
@@ -45,12 +51,12 @@ QJsonObject BreakPoint::to_json()
return obj;
}
BreakPoint BreakPoint::from_json(QJsonObject obj)
BreakPoint* BreakPoint::from_json(QJsonObject obj)
{
BreakPoint result;
BreakPoint *result = new BreakPoint();
result.start = QTime::fromString(obj["start"].toString(), Qt::DateFormat::ISODate);
result.end = QTime::fromString(obj["end"].toString(), Qt::DateFormat::ISODate);
result->start = QTime::fromString(obj["start"].toString(), Qt::DateFormat::ISODate);
result->end = QTime::fromString(obj["end"].toString(), Qt::DateFormat::ISODate);
return result;
}

View File

@@ -13,6 +13,7 @@ private:
public:
BreakPoint();
BreakPoint(BreakPoint*);
BreakPoint(QTime, QTime);
QTime getStart();
@@ -23,7 +24,7 @@ public:
void setEnd(QTime);
QJsonObject to_json();
static BreakPoint from_json(QJsonObject);
static BreakPoint* from_json(QJsonObject);
};
#endif // BREAKPOINT_H

View File

@@ -4,11 +4,29 @@ 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));
BreakPoint *lunch = new BreakPoint(QTime(12, 0, 0, 0), QTime(12, 45, 0, 0));
breaks.append(lunch);
validate = false;
}
Day::Day(Day *old)
{
start = QTime(9, 0, 0, 0);
end = QTime(17, 15, 0, 0);
BreakPoint *lunch = new BreakPoint(QTime(12, 0, 0, 0), QTime(12, 45, 0, 0));
breaks.append(lunch);
validate = false;
update(old);
}
Day::~Day()
{
foreach (BreakPoint *bp, breaks) {
delete bp;
}
breaks.clear();
}
float Day::get_total() {
int sec = start.secsTo(end);
int minutes = sec / 60;
@@ -30,7 +48,7 @@ void Day::set_validate(bool value) {
validate = value;
}
void Day::setBreaks(QVector<BreakPoint> breaks)
void Day::setBreaks(QVector<BreakPoint*> breaks)
{
this->breaks = breaks;
}
@@ -45,7 +63,7 @@ QTime Day::get_end()
return end;
}
QVector<BreakPoint> Day::getBreaks()
QVector<BreakPoint*> Day::getBreaks()
{
return breaks;
}
@@ -53,8 +71,8 @@ QVector<BreakPoint> Day::getBreaks()
QJsonObject Day::to_json()
{
QJsonArray arr;
foreach (BreakPoint bp, breaks) {
arr.append(bp.to_json());
foreach (BreakPoint *bp, breaks) {
arr.append(bp->to_json());
}
QJsonObject obj{
{KEY_START, start.toString(Qt::DateFormat::ISODate)},
@@ -66,18 +84,18 @@ QJsonObject Day::to_json()
return obj;
}
Day Day::from_json(QJsonObject obj)
Day* Day::from_json(QJsonObject obj)
{
Day result;
Day *result = new Day();
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->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();
result->breaks.clear();
QJsonArray arr = obj[KEY_BREAKS].toArray();
foreach (QJsonValue val, arr) {
result.breaks.append(BreakPoint::from_json(val.toObject()));
result->breaks.append(BreakPoint::from_json(val.toObject()));
}
return result;
@@ -90,8 +108,24 @@ bool Day::get_validate() {
float Day::get_time_break()
{
float result = 0;
foreach (BreakPoint bp, breaks) {
result += bp.getDuration();
foreach (BreakPoint* bp, breaks) {
result += bp->getDuration();
}
return result;
}
void Day::update(Day *old)
{
this->start = old->start;
this->end = old->end;
this->validate = old->validate;
foreach (BreakPoint *bp, breaks) {
delete bp;
}
breaks.clear();
foreach (BreakPoint *bp, old->breaks) {
this->breaks.append(new BreakPoint(bp));
}
}

View File

@@ -19,27 +19,30 @@ class Day
private:
QTime start;
QTime end;
QVector<BreakPoint> breaks;
QVector<BreakPoint*> breaks;
bool validate;
public:
Day();
Day(Day*);
~Day();
void set_start(QTime value);
void set_end(QTime value);
void set_validate(bool);
void setBreaks(QVector<BreakPoint>);
void setBreaks(QVector<BreakPoint*>);
QTime get_start();
QTime get_end();
QVector<BreakPoint> getBreaks();
QVector<BreakPoint*> getBreaks();
bool get_validate();
float get_time_break();
void update(Day *);
QJsonObject to_json();
float get_total();
static Day from_json(QJsonObject);
static Day* from_json(QJsonObject);
};
#endif // DAY_H

View File

@@ -2,85 +2,135 @@
Week::Week()
{
mon = Day();
tue = Day();
wed = Day();
thu = Day();
fri = Day();
mon = new Day();
tue = new Day();
wed = new Day();
thu = new Day();
fri = new Day();
time_delta = 0;
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();
Week::Week(Week *old)
{
mon = new Day();
tue = new Day();
wed = new Day();
thu = new Day();
fri = new Day();
time_delta = 0;
week_number = 0;
update(old);
}
Week::~Week()
{
delete mon;
delete tue;
delete wed;
delete thu;
delete fri;
}
Week* Week::from_json(QJsonObject obj) {
Week *w = new Week();
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->time_delta = obj[TIME_DELTA].toInt(0);
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()},
{MONDAY, mon->to_json()},
{TUESDAY, tue->to_json()},
{WEDNESDAY, wed->to_json()},
{THURDAY, thu->to_json()},
{FRIDAY, fri->to_json()},
{TIME_DELTA, time_delta},
{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();
return mon->get_total() + tue->get_total() + wed->get_total() + thu->get_total() + fri->get_total();
}
Day Week::getMon() {
Day* Week::getMon() {
return mon;
}
Day Week::getTue() {
Day* Week::getTue() {
return tue;
}
Day Week::getWed() {
Day* Week::getWed() {
return wed;
}
Day Week::getThu() {
Day* Week::getThu() {
return thu;
}
Day Week::getFri() {
Day* Week::getFri() {
return fri;
}
void Week::update(Week *old)
{
mon = new Day(old->mon);
tue = new Day(old->tue);
wed = new Day(old->wed);
thu = new Day(old->thu);
fri = new Day(old->fri);
time_delta = old->time_delta;
week_number = old->week_number;
}
int Week::getWeekNumber() {
return week_number;
}
void Week::setMon(Day value) {
int Week::getTimeDelta()
{
return time_delta;
}
float Week::getTimeDeltaInHours()
{
return time_delta/60.0;
}
void Week::setMon(Day* value) {
mon = value;
}
void Week::setTue(Day value) {
void Week::setTue(Day* value) {
tue = value;
}
void Week::setWed(Day value) {
void Week::setWed(Day* value) {
wed = value;
}
void Week::setThu(Day value) {
void Week::setThu(Day* value) {
thu = value;
}
void Week::setFri(Day value) {
void Week::setFri(Day* value) {
fri = value;
}
void Week::setWeekNumber(int value) {
week_number = value;
}
void Week::setTimeDelta(int value)
{
time_delta = value;
}

View File

@@ -6,6 +6,7 @@
#define WEDNESDAY "wednesday"
#define THURDAY "thurday"
#define FRIDAY "friday"
#define TIME_DELTA "timeDelta"
#define WEEK_NUMBER "weekNumber"
#include <QJsonObject>
@@ -15,31 +16,38 @@ class Week
{
public:
Week();
Week(Week*);
~Week();
double total();
void setMon(Day);
void setTue(Day);
void setWed(Day);
void setThu(Day);
void setFri(Day);
void setMon(Day*);
void setTue(Day*);
void setWed(Day*);
void setThu(Day*);
void setFri(Day*);
void setWeekNumber(int);
void setTimeDelta(int);
Day getMon();
Day getTue();
Day getWed();
Day getThu();
Day getFri();
Day* getMon();
Day* getTue();
Day* getWed();
Day* getThu();
Day* getFri();
void update(Week *);
int getWeekNumber();
int getTimeDelta();
float getTimeDeltaInHours();
static Week from_json(QJsonObject);
static Week* from_json(QJsonObject);
QJsonObject to_json();
private:
Day mon;
Day tue;
Day wed;
Day thu;
Day fri;
Day* mon;
Day* tue;
Day* wed;
Day* thu;
Day* fri;
int time_delta;
int week_number;
};

View File

@@ -5,19 +5,35 @@ Year::Year()
}
Year::Year(Year *old)
{
this->number = old->number;
foreach (int weekNumber, old->weeks.keys()) {
weeks[weekNumber] = new Week(old->weeks[weekNumber]);
}
}
Year::~Year()
{
foreach (Week *w, weeks) {
delete w;
}
weeks.clear();
}
Year::Year(int number)
{
this->number = number;
}
Year Year::from_json(QJsonObject obj)
Year* Year::from_json(QJsonObject obj)
{
Year result;
result.number = obj[KEY_NUMBER].toInt();
Year *result = new Year();
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;
Week* w = Week::from_json(val.toObject());
result->weeks[w->getWeekNumber()] = w;
}
return result;
}
@@ -26,17 +42,28 @@ QJsonObject Year::to_json()
{
QJsonObject obj;
QJsonArray arr;
foreach (Week w, weeks) {
arr.append(w.to_json());
foreach (Week *w, weeks) {
arr.append(w->to_json());
}
obj[KEY_NUMBER] = number;
obj[KEY_WEEKS] = arr;
return obj;
}
QMap<int, Week> Year::getWeeks()
Week *Year::getWeek(int weekNumber)
{
return weeks;
return weeks[weekNumber];
}
bool Year::hasWeek(int weekNumber)
{
return weeks.contains(weekNumber);
}
QMapIterator<int, Week *> Year::iterator()
{
QMapIterator i(weeks);
return i;
}
int Year::getNumber()
@@ -44,12 +71,7 @@ int Year::getNumber()
return number;
}
void Year::addWeek(Week w)
void Year::addWeek(Week* w)
{
weeks[w.getWeekNumber()] = w;
}
void Year::setWeeks(QMap<int, Week> weeks)
{
this->weeks = weeks;
weeks[w->getWeekNumber()] = w;
}

View File

@@ -6,6 +6,8 @@
#include <QJsonObject>
#include <QJsonArray>
#include <QMouseEvent>
#include <QMapIterator>
#include "week.h"
@@ -13,20 +15,23 @@ class Year
{
private:
int number;
QMap<int, Week> weeks;
QMap<int, Week*> weeks;
public:
Year();
Year(Year*);
~Year();
Year(int number);
static Year from_json(QJsonObject);
static Year* from_json(QJsonObject);
QJsonObject to_json();
QMap<int, Week> getWeeks();
Week *getWeek(int);
bool hasWeek(int);
QMapIterator<int, Week*> iterator();
int getNumber();
void addWeek(Week w);
void setWeeks(QMap<int, Week> weeks);
void addWeek(Week* w);
};
#endif // YEAR_H