#ifndef TIME_CHART_H #define TIME_CHART_H #include #include "Chart.h" class TimeChart: public Chart { enum TimeUnit { Day = 0, Week, Month, Quarter, HalfYear, TimeUnitsNum }; public: TimeChart(); void setDates(const QList& 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 TimeUnits; static const int MaxDataPoints = 28; static const int MaxXTicks = 12; private: QList dates; }; #endif