summaryrefslogtreecommitdiff
path: root/src/charts/TimeChart.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts/TimeChart.h')
-rw-r--r--src/charts/TimeChart.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/charts/TimeChart.h b/src/charts/TimeChart.h
new file mode 100644
index 0000000..1d9f92d
--- /dev/null
+++ b/src/charts/TimeChart.h
@@ -0,0 +1,54 @@
+#ifndef TIME_CHART_H
+#define TIME_CHART_H
+
+#include <QtCore>
+
+#include "Chart.h"
+
+class TimeChart: public Chart
+{
+enum TimeUnit
+{
+ Day = 0,
+ Week,
+ Month,
+ Quarter,
+ HalfYear,
+ TimeUnitsNum
+};
+
+public:
+ TimeChart();
+ void setDates(const QList<QDateTime>& dates, int period,
+ int dataDirection = 1);
+
+private:
+ static TimeUnit findTimeUnit(int period);
+ static QDate getIntervalStart(const QDate& date, TimeUnit timeUnit);
+ static QDate getInterval(const QDate& start, TimeUnit timeUnit,
+ int num);
+ static QDate getIntervalEnd(const QDate& start, TimeUnit timeUnit);
+ static QString getDateLabel(const QDate& date, TimeUnit timeUnit);
+ static QString getIntervalFormat(TimeUnit timeUnit);
+ static QString getIntervalLabel(const QDate& startDate,
+ const QDate& endDate, TimeUnit timeUnit);
+ static QDate getQuarterStart(const QDate& date);
+ static QDate getHalfYearStart(const QDate& date);
+ static int getDataPointsNum(int period, TimeUnit timeUnit);
+ static int getTicksInterval(int pointsNum);
+
+private:
+ DataPoint createDataPoint(const QDate& thisIntervalStart, TimeUnit timeUnit,
+ int intervalIndex);
+ int getCardsNumForDate(const QDate& startDate, const QDate& endDate);
+
+private:
+ static const QList<int> TimeUnits;
+ static const int MaxDataPoints = 28;
+ static const int MaxXTicks = 12;
+
+private:
+ QList<QDateTime> dates;
+};
+
+#endif