summaryrefslogtreecommitdiffabout
path: root/libkcal
Side-by-side diff
Diffstat (limited to 'libkcal') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/phoneformat.cpp34
1 files changed, 25 insertions, 9 deletions
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp
index bc1b863..596148e 100644
--- a/libkcal/phoneformat.cpp
+++ b/libkcal/phoneformat.cpp
@@ -340,13 +340,13 @@ public:
GSM_DateTime repeat_startdate = {0,0,0,0,0,0,0};
GSM_DateTime repeat_stopdate = {0,0,0,0,0,0,0};
#endif
QString recurString = "no";
- if ( repeating ) {
+ if ( repeating && repeat_frequency != -1) {
recurString = "y";
if ( repeat_dayofweek >= 0 )
recurString += "dow" + QString::number (repeat_dayofweek);
if ( repeat_day >= 0 )
recurString += "d" + QString::number (repeat_day);
if ( repeat_weekofmonth >= 0 )
@@ -356,25 +356,27 @@ public:
if ( repeat_frequency >= 0 )
recurString += "f" + QString::number (repeat_frequency );
int rtype = 0;
// qDebug("recurs ");
QDate startDate, endDate;
- if ( repeat_startdate.Day > 0 )
+ if ( repeat_startdate.Day > 0 ) {
startDate = datefromGSM ( &repeat_startdate );
- else
+ event->setDtStart(QDateTime ( startDate, event->dtStart().time()));
+ } else {
startDate = event->dtStart().date();
+ }
int freq = repeat_frequency;
bool hasEndDate = false;
if ( repeat_stopdate.Day > 0 ) {
endDate = datefromGSM ( &repeat_stopdate );
hasEndDate = true;
}
uint weekDaysNum = repeat_dayofweek ;
-
+ // 1 == monday, 7 == sunday
QBitArray weekDays( 7 );
int i;
int bb = 1;
for( i = 1; i <= 7; ++i ) {
weekDays.setBit( i - 1, ( bb & weekDaysNum ));
bb = 2 << (i-1);
@@ -395,22 +397,36 @@ public:
int repeat_weekofmonth = -1;
int repeat_month = -1;
int repeat_frequency = -1;
*/
int dayOfWeek = startDate.dayOfWeek();
if ( repeat_weekofmonth >= 0 ) {
- rtype = 2;
+ rtype = 2; // ************************ 2 MonthlyPos
pos = repeat_weekofmonth;
if ( repeat_dayofweek >= 0 )
dayOfWeek = repeat_dayofweek;
+ if (repeat_month > 0) {
+ if ( repeat_month != event->dtStart().date().month() ) {
+ QDate date (event->dtStart().date().year(),repeat_month,event->dtStart().date().day() );
+ event->setDtStart(QDateTime ( date , event->dtStart().time()) );
+ }
+ if ( freq == 1 )
+ freq = 12;
+ }
} else if ( repeat_dayofweek >= 0 ) {
- rtype = 1;
- } if ( repeat_dayofweek >= 0 ) {
- rtype = 1;
+ rtype = 1;// ************************ 1 Weekly
+ } else if ( repeat_day >= 0 ) {
+ if ( repeat_month > 0) {
+ rtype = 4;
+ } else {
+ rtype = 3;
+ }
+ } else {
+ rtype = 0 ;
}
-
+
if ( rtype == 0 ) {
if ( hasEndDate ) r->setDaily( freq, endDate );
else r->setDaily( freq, -1 );
} else if ( rtype == 1 ) {
if ( hasEndDate ) r->setWeekly( freq, weekDays, endDate );
else r->setWeekly( freq, weekDays, -1 );