info banner
[badge] / badgedata.cpp
1 #include "badgedata.h"
2 #include <QFile>
3 #include <QDir>
4 #include <QDebug>
5
6 BadgeData::BadgeData()
7 {
8
9 }
10
11 bool BadgeData::setTimetable(TimeTable tt)
12 {
13     QFile data;
14     TimeTable dum;
15     qint64 pos = 0;
16
17     data.setFileName(QDir::homePath() + QDir::separator() + "badge.data");
18     data.open(QIODevice::ReadWrite);
19     QDataStream out(&data);
20     while (!data.atEnd()) {
21         out >> dum;
22         if (dum.day == tt.day) {
23             data.seek(pos);
24
25             out << tt;
26             data.close();
27             return true;
28         }
29          pos = data.pos();
30     }
31     out << tt;
32     data.close();
33     return true;
34 }
35
36 bool BadgeData::getTimetable(TimeTable &tt)
37 {
38     QFile data;
39     TimeTable dum;
40     data.setFileName(QDir::homePath() + QDir::separator() + "badge.data");
41     data.open(QIODevice::ReadOnly);
42     QDataStream out(&data);
43
44
45
46     while (!data.atEnd()) {
47         out >> dum;
48         if (dum.day == tt.day) {
49             tt = dum;
50             data.close();
51             return true;
52         }
53     }
54     data.close();
55     return false;
56 }
57
58 QTime BadgeData::totalTime(QDate begin, QDate end)
59 {
60     QFile data;
61     TimeTable dum;
62     QTime total(0, 0, 0, 0);
63
64     int totalInSeconds = 0;
65
66     data.setFileName(QDir::homePath() + QDir::separator() + "badge.data");
67     data.open(QIODevice::ReadOnly);
68     QDataStream out(&data);
69     while (!data.atEnd()) {
70         out >> dum;
71         if (dum.day >=  begin && dum.day <= end) {
72             totalInSeconds += dum.entrance.secsTo(dum.exit);
73             if (dum.firstPause != dum.endFirstPause) {
74                 totalInSeconds -= dum.firstPause.secsTo(dum.endFirstPause);
75             }
76
77             if (dum.secondPause != dum.endSecondPause) {
78                 totalInSeconds -= dum.secondPause.secsTo(dum.endSecondPause);
79             }
80
81
82
83         }
84
85     }
86     data.close();
87     total.setHMS((int)(totalInSeconds / 3600), (int) ((totalInSeconds % 3600) / 60), 0);
88     return total;
89 }