kalendarVariables.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <qdatetime.h>
00019 #include <qstring.h>
00020 #include "kalendarVariables.h"
00021
00022 #include <stdlib.h>
00023 #include <iostream>
00024 #include <stdio.h>
00025
00026 KalendarVariables::KalendarVariables()
00027 {
00028 m_bIsDate = false;
00029 m_bIsStartDate = false;
00030 m_bIsEndDate = false;
00031 m_bNext = false;
00032 m_bVerbose = false;
00033 }
00034
00035 KalendarVariables::~KalendarVariables()
00036 {
00037 }
00038
00039 void KalendarVariables::setDate(QDate date)
00040 {
00041 m_bIsDate = true;
00042 m_date = date;
00043 }
00044
00045 QDate KalendarVariables::getDate()
00046 {
00047 return m_date;
00048 }
00049
00050 bool KalendarVariables::isDate()
00051 {
00052 return m_bIsDate;
00053 }
00054
00055 void KalendarVariables::setStartDate(QDate start)
00056 {
00057 m_bIsStartDate = true;
00058 m_startDate = start;
00059 }
00060
00061 QDate KalendarVariables::getStartDate()
00062 {
00063 return m_startDate;
00064 }
00065
00066 bool KalendarVariables::isStartDate()
00067 {
00068 return m_bIsStartDate;
00069 }
00070
00071 void KalendarVariables::setEndDate(QDate end)
00072 {
00073 m_bIsEndDate = true;
00074 m_endDate = end;
00075 }
00076
00077 QDate KalendarVariables::getEndDate()
00078 {
00079 return m_endDate;
00080 }
00081
00082 bool KalendarVariables::isEndDate()
00083 {
00084 return m_bIsEndDate;
00085 }
00086
00087 void KalendarVariables::setNext(bool next)
00088 {
00089 m_bNext = next;
00090 }
00091
00092 bool KalendarVariables::isNext()
00093 {
00094 return m_bNext;
00095 }
00096
00097 void KalendarVariables::setVerbose(bool verbose)
00098 {
00099 m_bVerbose = verbose;
00100 }
00101
00102 bool KalendarVariables::isVerbose()
00103 {
00104 return m_bVerbose;
00105 }
00106
00107 void KalendarVariables::setCalendarFile(QString calendar)
00108 {
00109 m_calendar = calendar;
00110 }
00111
00112 QString KalendarVariables::getCalendarFile()
00113 {
00114 return m_calendar;
00115 }
00116
00117 bool KalendarVariables::isAll()
00118 {
00119 return m_bAll;
00120 }
00121
00122 void KalendarVariables::setAll( bool all)
00123 {
00124 m_bAll = all;
00125 }
00126
00127 bool KalendarVariables::getAll()
00128 {
00129 return m_bAll;
00130 }
00131
00132
00133 QDate KalendarVariables::parseDate(QString str)
00134 {
00135 int strpos=0,
00136 errpos=-1;
00137
00138 bool lookNumber, done;
00139
00140 int numbers[3];
00141 int numstart;
00142 char separator = '\0';
00143 int actnum=0;
00144 int cursorpos = 0;
00145
00146 int actsep=0,
00147 tottok=0,
00148 seppos;
00149
00150 int format = -1;
00151
00152
00153
00154
00155
00156 str_length=str.length();
00157
00158 numbers[0]=numbers[1]=numbers[2]=-1;
00159
00160 lookNumber=true;
00161 done=false;
00162
00163
00164
00165
00166
00167
00168
00169 while( (errpos==-1) && (strpos < str_length) && (!done)) {
00170 if( lookNumber ) {
00171
00172 if(( numbers[actnum]=findNumber(str,strpos,numstart) )==-1) {
00173
00174 done=true;
00175 } else {
00176
00177
00178
00179
00180
00181 if(numbers[actnum]==-2) {
00182 numbers[actnum]=-1;
00183 }
00184
00185
00186 actnum++;
00187 tottok++;
00188
00189
00190
00191
00192 if(actnum==3)
00193 done=true;
00194 else
00195 lookNumber=false;
00196 }
00197 } else {
00198
00199 switch(actsep) {
00200 case 0:
00201
00202 separator = findSeparator(str,strpos,seppos);
00203 switch(separator) {
00204 case '.':
00205
00206 format = 1;
00207 break;
00208 case '-':
00209 format = 2;
00210 break;
00211 case '/':
00212
00213 format = 3;
00214 break;
00215 default:
00216
00217 errpos=seppos;
00218 }
00219 break;
00220
00221 case 1:
00222
00223 if(separator!=findSeparator(str,strpos,seppos))
00224 errpos=seppos;
00225 break;
00226
00227 }
00228
00229
00230 actsep++;
00231 tottok++;
00232
00233 lookNumber=true;
00234 };
00235 }
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249 if(errpos==-1) {
00250 if(strpos<str_length) {
00251 skipWhiteSpace(str,strpos);
00252
00253 if(strpos<str_length) {
00254
00255 errpos=strpos;
00256 }
00257 }
00258 }
00259
00260
00261 if(errpos!=-1) {
00262 cursorpos=errpos;
00263 return QDate::currentDate();
00264 };
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276 switch(format) {
00277 case 1:
00278
00279
00280
00281
00282 return QDate(numbers[2], numbers[1], numbers[0]);
00283
00284 case 2:
00285 case 3:
00286
00287
00288
00289 return QDate(numbers[2], numbers[1], numbers[0]);
00290
00291 default:
00292 break;
00293 };
00294 return QDate::currentDate();
00295 }
00296
00297
00298 int KalendarVariables::findNumber(const QString &str, int &pos, int &startpos)
00299 {
00300 skipWhiteSpace(str,pos);
00301
00302 if(pos >= str_length)
00303 return -1;
00304
00305 startpos=pos;
00306
00307 while( (pos<str_length) && (str[pos]>='0') && (str[pos]<='9') )
00308 pos++;
00309
00310 if(startpos==pos)
00311 return -2;
00312
00313 return str.mid(startpos,pos-startpos).toInt();
00314 }
00315
00316
00317
00318 char KalendarVariables::findSeparator(const QString &str, int &pos, int &seppos)
00319 {
00320 skipWhiteSpace(str,pos);
00321
00322 if(pos>=str_length) {
00323 seppos=-1;
00324 return 0;
00325 };
00326
00327 seppos=pos;
00328 pos++;
00329 return str[seppos];
00330 }
00331
00332 #define ISWHITESPACE(c) ( ((c)==' ') || ((c)=='\t') || ((c)=='\n') || ((c)=='\r') )
00333 void KalendarVariables::skipWhiteSpace(const QString &str, int &pos)
00334 {
00335 while( (pos<str_length) && ISWHITESPACE(str[pos]) )
00336 pos++;
00337 }
This file is part of the documentation for kdelibs Version 3.1.5.