C++: define Duration as a metatype in Qt to be able to parse it in
[smartapi.git] / Common / C++ / SmartAPI / smartapi / common / Duration.h
1 #ifndef __DURATION_H__
2 #define __DURATION_H__
3
4 #include <QVariant>
5 #include <QDateTime>
6 #include "smartapi/rdf/GraphItem.h"
7
8 class Duration
9 {
10 public:
11         Duration();
12         Duration(QString lexicalRepresentation);
13         Duration(bool isPositive, int years, int months, int days, int hours, int minutes, int seconds);
14         Duration(int years, int months, int days, int hours, int minutes, int seconds);
15         Duration(Duration* d);
16         ~Duration() {}
17
18         QDateTime add(QDateTime date);
19         QString toString();
20         int toSeconds();
21
22         bool isPositive()               { return mIsPositive; }
23         int getYears()                  { return mYears; }
24         int getMonths()                 { return mMonths; }
25         int getDays()                   { return mDays; }
26         int getHours()                  { return mHours; }
27         int getMinutes()                { return mMinutes; }
28         int getSeconds()                { return mSeconds; }
29         void setPositive()              { mIsPositive = true; }
30         void setNegative()              { mIsPositive = false; }
31         void setYears(int i)    { mYears = i; }
32         void setMonths(int i)   { mMonths = i; }
33         void setDays(int i)             { mDays = i; }
34         void setHours(int i)    { mHours = i; }
35         void setMinutes(int i)  { mMinutes = i; }
36         void setSeconds(int i)  { mSeconds = i; }
37
38         // compatibility only
39         void destroyCascade(QSet<GraphItem*>* trash) { Q_UNUSED(trash); }
40
41 private:
42         bool parseLexicalRepresentation(QString str);
43         QString constructLexicalRepresentation();
44
45         bool mIsPositive;
46         int mYears;
47         int mMonths;
48         int mDays;
49         int mHours;
50         int mMinutes;
51         int mSeconds;
52 };
53
54 Q_DECLARE_METATYPE(Duration*)
55
56 #endif // __DURATION_H__