[Kde-pim] [patch] korganizer - printing calendar item recurrence

ron rong.dev at gmail.com
Wed Oct 1 04:15:22 BST 2008


On Monday 29 September 2008 13:52:12 Sentinel wrote:
> I also have had the same problem compiling PIM with AkonadiConfig.cmake.
> Although I am not sure if I'm
> not just downloading Akonadi from the wrong "kdesupport" directory.
>
> svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport
>
> after compileing and then installing as root I still get the same error
> message
>
> CMake Error: Akonadi_DIR is not set.  It must be set to the directory
> containing AkonadiConfig.cmake in order to use Akonadi.
>
> yet I searched my entire hardrive and have not come up with a file called
> AkonadiConfig.cmake
>
> someone please help me
>
> Ron Goodheart wrote:
> > 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
> >
> > 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 at kde.org
> > https://mail.kde.org/mailman/listinfo/kde-pim
> > KDE PIM home page at http://pim.kde.org/


Oops, sorry, last reply had an extra not to myself in it:
This is what was posted and worked for me...


http://techbase.kde.org/Getting_Started/Build/KDE4 and get trunk
compiling. To be short: In order to compile trunk, compile in this order:
kdesupport
KDE/kdelibs
KDE/kdepimlibs 
KDE/kdebase
KDE/kdepim
Then the Akonadi problem should be solved.

Regards,
Ron
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/



More information about the kde-pim mailing list