39 #include <QtCore/QRegExp>
40 #include <QtCore/QString>
42 using namespace KCalCore;
48 int korg = productId.indexOf(
"KOrganizer" );
49 int outl9 = productId.indexOf(
"Outlook 9.0" );
53 int versionStart = productId.indexOf(
" ", korg );
54 if ( versionStart >= 0 ) {
55 int versionStop = productId.indexOf( QRegExp(
"[ /]" ), versionStart + 1 );
56 if ( versionStop >= 0 ) {
57 QString version = productId.mid( versionStart + 1,
58 versionStop - versionStart - 1 );
60 int versionNum = version.section(
'.', 0, 0 ).toInt() * 10000 +
61 version.section(
'.', 1, 1 ).toInt() * 100 +
62 version.section(
'.', 2, 2 ).toInt();
63 int releaseStop = productId.indexOf(
"/", versionStop );
65 if ( releaseStop > versionStop ) {
66 release = productId.mid( versionStop+1, releaseStop-versionStop-1 );
68 if ( versionNum < 30100 ) {
70 }
else if ( versionNum < 30200 ) {
72 }
else if ( versionNum == 30200 && release ==
"pre" ) {
73 kDebug() <<
"Generating compat for KOrganizer 3.2 pre";
75 }
else if ( versionNum < 30400 ) {
77 }
else if ( versionNum < 30500 ) {
82 }
else if ( outl9 >= 0 ) {
83 kDebug() <<
"Generating compat for Outlook < 2000 (Outlook 9.0)";
108 if ( incidence->summary().isEmpty() && !( incidence->description().isEmpty() ) ) {
109 QString oldDescription = incidence->description().trimmed();
110 QString newSummary( oldDescription );
111 newSummary.remove( QRegExp(
"\n.*" ) );
112 incidence->setSummary( newSummary );
113 if ( oldDescription == newSummary ) {
114 incidence->setDescription(
"" );
121 Q_UNUSED( incidence );
131 Q_UNUSED( incidence );
148 Recurrence *recurrence = incidence->recurrence();
150 KDateTime start( incidence->dtStart() );
153 if ( r && !r->dateMatchesRules( start ) ) {
154 recurrence->addExDateTime( start );
164 if ( 0 < priority && priority < 6 ) {
166 return 2 * priority - 1;
174 Recurrence *recurrence = incidence->recurrence();
176 recurrence->
setDuration( recurrence->
duration() + incidence->recurrence()->exDates().count() );
184 endDate = endDate.addDays( 1 );
194 r = recur->defaultRRule();
198 if ( duration > 0 ) {
204 QDate end( r->
startDt().date() );
205 bool doNothing =
false;
207 int tmp = ( duration - 1 ) * r->
frequency();
208 switch ( r->recurrenceType() ) {
209 case RecurrenceRule::rWeekly:
211 end = end.addDays( tmp * 7 + 7 - end.dayOfWeek() );
214 case RecurrenceRule::rMonthly:
216 int month = end.month() - 1 + tmp;
217 end.setYMD( end.year() + month / 12, month % 12 + 1, 31 );
220 case RecurrenceRule::rYearly:
222 end.setYMD( end.year() + tmp, 12, 31 );
231 KDateTime( end, QTime( 0, 0, 0 ), incidence->dtStart().timeSpec() ) );
239 QList<int> days = r->byYearDays();
240 if ( !days.isEmpty() ) {
241 QList<int> months = r->byMonths();
242 for (
int i = 0; i < months.size(); ++i ) {
244 QDate( r->
startDt().date().year(), 1, 1 ).addDays( months.at( i ) - 1 ).month();
245 if ( !months.contains( newmonth ) ) {
246 months.append( newmonth );
250 r->setByMonths( months );
252 r->setByYearDays( days );
263 Alarm::List::Iterator it;
264 for ( it = alarms.begin(); it != alarms.end(); ++it ) {
266 if ( al && al->hasStartOffset() ) {
267 Duration offsetDuration = al->startOffset();
272 al->setStartOffset( offsetDuration );