Go to the documentation of this file.00001 #ifndef ACTIVITYCHANGEINFOARRAY_H
00002 #define ACTIVITYCHANGEINFOARRAY_H
00003
00004 #include "ActivityChangeInfoCard.h"
00005 #include "../PictureGenerators/SvgDayActivity.h"
00006 #include <QtCore/QDebug>
00007
00008
00009 bool prepareActivityChangeInfoArray(Subblocks<ActivityChangeInfo> activities){
00010
00011 for(int j = 0; j < activities.size() - 1; ++j){
00012 if(activities[j + 1].t != 0) activities[j].duration = activities[j + 1].t - activities[j].t;
00013 else activities[j].duration = 60*24 - activities[j].t;
00014 }
00015 activities[activities.size() - 1].duration = 60*24 - activities[activities.size() - 1].t;
00016 return true;
00017 }
00018
00019 SvgDayActivity visualizeActivityChangeInfoArray(Subblocks<ActivityChangeInfo> activities){
00020 SvgDayActivity visualization;
00021 for(int j = 0; j < Activities.size(); ++j){
00022 visualization.add(Activities[j].t,Activities[j].duration,(Activities[j].a+1)*10,Activities[j].color(),Activities[j].toString());
00023 }
00024 }
00025
00026 class ActivityChangeInfoArray : public DataType {
00027 Q_DECLARE_TR_FUNCTIONS(ActivityChangeInfoArray)
00028 private:
00029 int dataSize;
00030 bool invalid;
00031 QVector<ActivityChangeInfoCard> Activities;
00032 public:
00033 ActivityChangeInfoArray(const DataPointer& filewalker, int dataSize) : DataType(filewalker), dataSize(dataSize) {
00034 if(start.bytesLeft() < dataSize) invalid = true;
00035 else {
00036 invalid = false;
00037 for(int j = 0; j < dataSize; j += 2){
00038 Activities.append(ActivityChangeInfoCard(start + j));
00039 }
00040 for(int j = 0; j < Activities.size() - 1; ++j){
00041 if(Activities[j + 1].t != 0) Activities[j].duration = Activities[j + 1].t - Activities[j].t;
00042 else Activities[j].duration = 60*24 - Activities[j].t;
00043 }
00044 Activities[Activities.size() - 1].duration = 60*24 - Activities[Activities.size() - 1].t;
00045 }
00046 }
00047 void printOn(Reporter& o) const {
00048 if(invalid){
00049 o.tagValuePair("invalid", "size is larger than remaining space");
00050 }
00051 if(o.allowSvg()){
00052 SvgDayActivity visualization;
00053 for(int j = 0; j < Activities.size(); ++j){
00054 visualization.add(Activities[j].t,Activities[j].duration,(Activities[j].a+1)*10,Activities[j].color(),Activities[j].toString());
00055 }
00056 o.tagValuePair("Activities", visualization.toString());
00057 }
00058 for(int j = 0; j < Activities.size(); ++j) o << Activities[j];
00059 }
00060 int size() const {
00061 return dataSize;
00062 }
00063 };
00064 #endif