[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-pim
Subject: [Kde-pim] [patch] korganizer - printing calendar item recurrence
From: "Ron Goodheart" <ron.goodheart () gmail ! com>
Date: 2008-08-22 5:18:50
Message-ID: 138cf8bd0808212218t3a2311a2oc43bcf303e3d371b () mail ! gmail ! com
[Download RAW message or body]
HI all,
Got the following on my printout when printing my scheduled event on korganizer.
"Repeat: TODO: Convert Repeat to String!"
So created the attached patch to print the recurrence information.
However, have only tested with 3.5 - could not get trunk to compile
due to never finding "AkonadiConfig.cmake".
The patch does support all of the recurrence available on the 3.5 GUI.
Regards,
Ron
["calprintdefaultplugins.diff" (text/x-patch)]
Index: printing/calprintdefaultplugins.cpp
===================================================================
--- printing/calprintdefaultplugins.cpp (revision 850710)
+++ printing/calprintdefaultplugins.cpp (working copy)
@@ -37,6 +37,7 @@
#include <kcalendarsystem.h>
#include <knuminput.h>
#include <kcombobox.h>
+#include "koglobals.h"
#include "calprintdefaultplugins.h"
@@ -280,12 +281,126 @@
h = QMAX( printCaptionAndText( p, textRect, stringVis.mEndCaption, \
stringVis.mEndString, captionFont, textFont ), h ); }
-
+ // Convert recurrence to a string
if ( (*it)->doesRecur() ) {
QRect recurBox( timesBox.left()+padding(), h+padding(), \
timesBox.right()-padding(), lineHeight );
- // TODO: Convert the recurrence to a string and print it out!
- QString recurString( "TODO: Convert Repeat to String!" );
- h = QMAX( printCaptionAndText( p, recurBox, i18n("Repeats: "), recurString, \
captionFont, textFont ), h ); + KCal::Recurrence *recurs = (*it)->recurrence();
+ // recurrence
+ QStringList dayList;
+ dayList.push_back( i18n("5th Last") );
+ dayList.push_back( i18n("4th Last") );
+ dayList.push_back( i18n("3rd Last") );
+ dayList.push_back( i18n("2nd Last") );
+ dayList.push_back( i18n("Last") );
+ dayList.push_back( i18n("unknown") ); // zero
+ dayList.push_back( i18n("1st") );
+ dayList.push_back( i18n("2nd") );
+ dayList.push_back( i18n("3rd") );
+ dayList.push_back( i18n("4th") );
+ dayList.push_back( i18n("5th") );
+ QString recurString;
+ const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem();
+ switch(recurs->recurrenceType()) {
+ case Recurrence::rNone:
+ recurString = i18n("None");
+ break;
+ case Recurrence::rDaily:
+ recurString = i18n("Every 1 day","Every %1 \
days",recurs->frequency()).arg(recurs->frequency()); + break;
+ case Recurrence::rWeekly:
+ {
+ QString dayNames;
+ // Respect start of week setting
+ int weekStart = KGlobal::locale()->weekStartDay();
+ bool addSpace = false;
+ for ( int i = 0; i < 7; ++i ) {
+ if ( recurs->days().testBit( (i+weekStart+6)%7 )) {
+ if (addSpace) dayNames.append(" ");
+ dayNames.append( calSys->weekDayName( ((i+weekStart+6)%7)+1, true ) );
+ addSpace=true;
+ }
+ }
+ recurString = i18n("Every %1 week on %2","Every %1 weeks on \
%2",recurs->frequency()).arg(recurs->frequency()).arg(dayNames); + break;
+ }
+ case Recurrence::rMonthlyPos:
+ {
+ KCal::RecurrenceRule::WDayPos rule = recurs->monthPositions()[0];
+ recurString = i18n("Every %1 month on the %2 %3","Every %1 months on the \
%2 %3",recurs->frequency()) + .arg(recurs->frequency())
+ .arg(dayList[rule.pos() + 5])
+ .arg(calSys->weekDayName(rule.day()));
+ break;
+ }
+ case Recurrence::rMonthlyDay:
+ {
+ int days = recurs->monthDays()[0];
+ if (days < 0) {
+ recurString = i18n("Every %1 month on the %2 day","Every %1 months on \
the %2 day",recurs->frequency()) + .arg( \
recurs->frequency() ) + .arg( dayList[days + 5] );
+ } else {
+ recurString = i18n("Every %1 month on day %2","Every %1 months on day \
%2",recurs->frequency()) + .arg(recurs->frequency())
+ .arg(recurs->monthDays()[0]);
+ }
+ break;
+ }
+
+ case Recurrence::rYearlyMonth:
+ recurString = i18n("Every %1 year on day %2 of %3","Every %1 years on day \
%2 of %3",recurs->frequency()) + .arg(recurs->frequency())
+ .arg(recurs->yearDates()[0])
+ .arg(calSys->monthName(recurs->yearMonths()[0],1960));
+ break;
+ case Recurrence::rYearlyPos:
+ {
+ KCal::RecurrenceRule::WDayPos rule = recurs->yearPositions()[0];
+ recurString = i18n("Every %1 year on the %2 %3 of %4","Every %1 years on \
the %2 %3 %4",recurs->frequency()) + .arg( \
recurs->frequency() ) + .arg( dayList[rule.pos() + 5] )
+ .arg( calSys->weekDayName(rule.day()) )
+ .arg( calSys->monthName(recurs->yearMonths()[0],1960) );
+ break;
+ }
+ case Recurrence::rYearlyDay:
+ recurString = i18n("Every %1 year on day %2","Every %1 years on day \
%2",recurs->frequency()) + .arg( recurs->frequency() )
+ .arg( recurs->yearDays()[0] );
+ break;
+ }
+ // occurrances
+ QString occurString;
+ switch (recurs->duration()) {
+ case 0: // end date set
+ occurString = i18n("until \
%1").arg(KGlobal::locale()->formatDate(recurs->endDate(),true)); + break;
+ case -1: // infinite
+ break;
+ default: // number of occurrances
+ occurString = i18n("for 1 occurance","for %1 \
occurances",recurs->duration()).arg(recurs->duration()); + break;
+ }
+ // exception dates
+ QString exceptString;
+ if ( !recurs->exDates().isEmpty() ) {
+ exceptString = i18n("except");
+ for ( unsigned i = 0; i < recurs->exDates().size(); i++ ) {
+ if (true == recurs->recursOn(recurs->exDates()[i]))
+ exceptString.append("@");
+ exceptString.append(" ");
+ exceptString.append( KGlobal::locale()->formatDate( \
recurs->exDates()[i],true) ); + }
+ }
+ QString displayString;
+ displayString.append(recurString);
+ if (!displayString.endsWith(" "))
+ displayString.append(" ");
+ displayString.append(occurString);
+ if (!displayString.endsWith(" "))
+ displayString.append(" ");
+ displayString.append(exceptString);
+ h = QMAX( printCaptionAndText( p, recurBox, i18n("Repeats: "), displayString, \
captionFont, textFont ), h ); }
QRect alarmBox( timesBox.left()+padding(), h+padding(), \
timesBox.right()-padding(), lineHeight );
_______________________________________________
KDE PIM mailing list kde-pim@kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic