Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1
kdepimlibs4
r875318-display-events-in-localtime.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File r875318-display-events-in-localtime.diff of Package kdepimlibs4
Index: kcal/incidenceformatter.h =================================================================== --- kcal/incidenceformatter.h (revision 891924) +++ kcal/incidenceformatter.h (working copy) @@ -19,10 +19,19 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +/** + @file + This file is part of the API for handling calendar data and provides + static functions for formatting Incidences for various purposes. + + @author Cornelius Schumacher \<schumacher@kde.org\> + @author Reinhold Kainhofer \<reinhold@kainhofer.com\> +*/ #ifndef KCAL_INCIDENCEFORMATTER_H #define KCAL_INCIDENCEFORMATTER_H #include "kcal_export.h" +#include <KDE/KDateTime> #include <QtCore/QString> namespace KCal { @@ -48,17 +57,76 @@ }; /** - Helpers that provides several static methods to format an Incidence into - different formats, like an HTML representation for KMail, a representation - for tool tips, or a representation for the event viewer. + @brief + Provides methods to format Incidences in various ways for display purposes. + + Helpers that provides several static methods to format an Incidence in + different ways: like an HTML representation for KMail, a representation + for tool tips, or a representation for a viewer widget. - @short methods to format incidences into various formats for displaying them */ namespace IncidenceFormatter { - KCAL_EXPORT QString toolTipString( IncidenceBase *incidence, bool richText = true ); - KCAL_EXPORT QString mailBodyString( IncidenceBase *incidencebase ); - KCAL_EXPORT QString extensiveDisplayString( IncidenceBase *incidence ); + /** + Create a QString representation of an Incidence in a nice format + suitable for using in a tooltip. + @param incidence is a pointer to the Incidence to be formatted. + @param richText if yes, the QString will be created as RichText. + @param spec is an optional time specification which, when specified, + will shift the Incidence times to different timezones. + @since 4.2 + */ + KCAL_EXPORT QString toolTipStr( IncidenceBase *incidence, + bool richText=true, + KDateTime::Spec spec=KDateTime::Spec() ); + /** + Create a QString representation of an Incidence in a nice format + suitable for using in a tooltip. + @param incidence is a pointer to the Incidence to be formatted. + @param richText if yes, the QString will be created as RichText. + @deprecated use toolTipStr( IncidenceBase *, bool, KDateTime::Spec) + */ + KCAL_EXPORT KDE_DEPRECATED QString toolTipString( IncidenceBase *incidence, + bool richText=true ); + + /** + Create a RichText QString representation of an Incidence in a nice format + suitable for using in a viewer widget. + @param incidence is a pointer to the Incidence to be formatted. + @param spec is an optional time specification which, when specified, + will shift the Incidence times to different timezones. + @since 4.2 + */ + KCAL_EXPORT QString extensiveDisplayStr( IncidenceBase *incidence, + KDateTime::Spec spec=KDateTime::Spec() ); + + /** + Create a RichText QString representation of an Incidence in a nice format + suitable for using in a viewer widget. + @param incidence is a pointer to the Incidence to be formatted. + @deprecated use extensiveDisplayStr( IncidenceBase *, KDateTime::Spec ) + */ + KCAL_EXPORT KDE_DEPRECATED QString extensiveDisplayString( IncidenceBase *incidence ); + + /** + Create a QString representation of an Incidence in format suitable for + including inside a mail message. + @param incidence is a pointer to the Incidence to be formatted. + @param spec is an optional time specification which, when specified, + will shift the Incidence times to different timezones. + @since 4.2 + */ + KCAL_EXPORT QString mailBodyStr( IncidenceBase *incidence, + KDateTime::Spec spec=KDateTime::Spec() ); + + /** + Create a QString representation of an Incidence in format suitable for + including inside a mail message. + @param incidence is a pointer to the Incidence to be formatted. + @deprecated use mailBodyStr( IncidenceBase *, KDateTime::Spec ) + */ + KCAL_EXPORT KDE_DEPRECATED QString mailBodyString( IncidenceBase *incidence ); + KCAL_EXPORT QString formatICalInvitation( QString invitation, Calendar *mCalendar, InvitationFormatterHelper *helper ); @@ -75,6 +143,9 @@ KCAL_EXPORT QString msTNEFToVPart( const QByteArray &tnef ); /** + Build a pretty QString representation of an Incidence's recurrence info. + @param incidence is a pointer to the Incidence whose recurrence info + is to be formatted. @since 4.1 */ KCAL_EXPORT QString recurrenceString( Incidence *incidence ); Index: kcal/incidenceformatter.cpp =================================================================== --- kcal/incidenceformatter.cpp (revision 891924) +++ kcal/incidenceformatter.cpp (working copy) @@ -20,7 +20,18 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +/** + @file + This file is part of the API for handling calendar data and provides + static functions for formatting Incidences for various purposes. + @brief + Provides methods to format Incidences in various ways for display purposes. + + @author Cornelius Schumacher \<schumacher@kde.org\> + @author Reinhold Kainhofer \<reinhold@kainhofer.com\> +*/ + #include "incidenceformatter.h" #include "attachment.h" #include "event.h" @@ -55,6 +66,7 @@ * Helper functions for the extensive display (event viewer) *******************************************************************/ +//@cond PRIVATE static QString eventViewerAddLink( const QString &ref, const QString &text, bool newline = true ) { @@ -243,36 +255,47 @@ QString tmpStr = "<table><tr>"; // show icons - /* all of those icons currently don't exist, makes no sense currently - to load a set of "unknown" icons. re-enable when those are available. - { - KIconLoader *iconLoader = KIconLoader::global(); - tmpStr += "<td>"; - - if ( incidence->type() == "Todo" ) { - tmpStr += "<img src=\"" + iconLoader->iconPath( "todo", KIconLoader::Small ) + "\">"; - } - if ( incidence->isAlarmEnabled() ) { - tmpStr += "<img src=\"" + iconLoader->iconPath( "bell", KIconLoader::Small ) + "\">"; - } - if ( incidence->recurs() ) { - tmpStr += "<img src=\"" + iconLoader->iconPath( "recur", KIconLoader::Small ) + "\">"; - } - if ( incidence->isReadOnly() ) { - tmpStr += "<img src=\"" + iconLoader->iconPath( "readonlyevent", KIconLoader::Small ) + "\">"; - } - - tmpStr += "</td>"; + KIconLoader *iconLoader = KIconLoader::global(); + tmpStr += "<td>"; + if ( incidence->type() == "Todo" ) { + tmpStr += "<img src=\"" + + iconLoader->iconPath( "view-calendar-tasks", KIconLoader::Small ) + + "\">"; } - */ + if ( incidence->type() == "Event" ) { + tmpStr += "<img src=\"" + + iconLoader->iconPath( "view-calendar-day", KIconLoader::Small ) + + "\">"; + } + //TODO: re-enable this code when we have the icons available +#if 0 + if ( incidence->isAlarmEnabled() ) { + tmpStr += "<img src=\"" + + iconLoader->iconPath( "task-reminder", KIconLoader::Small ) + + "\">"; + } + if ( incidence->recurs() ) { + tmpStr += "<img src=\"" + + iconLoader->iconPath( "appointment-recurring", KIconLoader::Small ) + + "\">"; + } +#endif + if ( incidence->isReadOnly() ) { + tmpStr += "<img src=\"" + + iconLoader->iconPath( "object-locked", KIconLoader::Small ) + + "\">"; + } + tmpStr += "</td>"; - tmpStr += "<td>" + eventViewerAddTag( "h2", incidence->richSummary() ) + "</td>"; - tmpStr += "</tr></table><br>"; + tmpStr += "<td>" + + eventViewerAddTag( "h2", incidence->richSummary() ) + + "</td>"; + tmpStr += "</tr></table>"; return tmpStr; } -static QString eventViewerFormatEvent( Event *event ) +static QString eventViewerFormatEvent( Event *event, KDateTime::Spec spec ) { if ( !event ) { return QString(); @@ -292,37 +315,43 @@ if ( event->allDay() ) { if ( event->isMultiDay() ) { tmpStr += "<td align=\"right\"><b>" + i18n( "Time" ) + "</b></td>"; - tmpStr += "<td>" + i18nc("<beginTime> - <endTime>","%1 - %2", - event->dtStartDateStr( true, event->dtStart().timeSpec() ), - event->dtEndDateStr( true, event->dtEnd().timeSpec() ) ) + "</td>"; + tmpStr += "<td>" + + i18nc( "<beginTime> - <endTime>","%1 - %2", + event->dtStartDateStr( true, spec ), + event->dtEndDateStr( true, spec ) ) + + "</td>"; } else { tmpStr += "<td align=\"right\"><b>" + i18n( "Date" ) + "</b></td>"; tmpStr += "<td>" + i18nc( "date as string","%1", - event->dtStartDateStr( true, event->dtStart().timeSpec() ) ) + "</td>"; + event->dtStartDateStr( true, spec ) ) + + "</td>"; } } else { if ( event->isMultiDay() ) { tmpStr += "<td align=\"right\"><b>" + i18n( "Time" ) + "</b></td>"; tmpStr += "<td>" + i18nc( "<beginTime> - <endTime>","%1 - %2", - event->dtStartStr( true, event->dtStart().timeSpec() ), - event->dtEndStr( true, event->dtEnd().timeSpec() ) ) + "</td>"; + event->dtStartStr( true, spec ), + event->dtEndStr( true, spec ) ) + + "</td>"; } else { tmpStr += "<td align=\"right\"><b>" + i18n( "Time" ) + "</b></td>"; if ( event->hasEndDate() && event->dtStart() != event->dtEnd() ) { tmpStr += "<td>" + i18nc( "<beginTime> - <endTime>","%1 - %2", - event->dtStartTimeStr( true, event->dtStart().timeSpec() ), - event->dtEndTimeStr( true, event->dtEnd().timeSpec() ) ) + "</td>"; + event->dtStartTimeStr( true, spec ), + event->dtEndTimeStr( true, spec ) ) + + "</td>"; } else { - tmpStr += "<td>" + event->dtStartTimeStr( true, event->dtStart().timeSpec() ) + "</td>"; + tmpStr += "<td>" + event->dtStartTimeStr( true, spec ) + "</td>"; } tmpStr += "</tr><tr>"; tmpStr += "<td align=\"right\"><b>" + i18n( "Date" ) + "</b></td>"; tmpStr += "<td>" + i18nc( "date as string","%1", - event->dtStartDateStr( true, event->dtStart().timeSpec() ) ) + "</td>"; + event->dtStartDateStr( true, spec ) ) + + "</td>"; } } tmpStr += "</tr>"; @@ -381,7 +410,7 @@ return tmpStr; } -static QString eventViewerFormatTodo( Todo *todo ) +static QString eventViewerFormatTodo( Todo *todo, KDateTime::Spec spec ) { if ( !todo ) { return QString(); @@ -395,7 +424,7 @@ } if ( todo->hasDueDate() && todo->dtDue().isValid() ) { - tmpStr += i18n( "<b>Due on:</b> %1", todo->dtDueStr( true, todo->dtDue().timeSpec() ) ); + tmpStr += i18n( "<b>Due on:</b> %1", todo->dtDueStr( true, spec ) ); } if ( !todo->description().isEmpty() ) { @@ -425,7 +454,7 @@ return tmpStr; } -static QString eventViewerFormatJournal( Journal *journal ) +static QString eventViewerFormatJournal( Journal *journal, KDateTime::Spec spec ) { if ( !journal ) { return QString(); @@ -433,19 +462,20 @@ QString tmpStr; if ( !journal->summary().isEmpty() ) { - tmpStr+= eventViewerAddTag( "h2", journal->richSummary() ); + tmpStr += eventViewerAddTag( "h2", journal->richSummary() ); } tmpStr += eventViewerAddTag( - "h3", i18n( "Journal for %1", - journal->dtStartDateStr( false, journal->dtStart().timeSpec() ) ) ); + "h3", i18n( "Journal for %1", journal->dtStartDateStr( false, spec ) ) ); if ( !journal->description().isEmpty() ) { tmpStr += eventViewerAddTag( "p", journal->richDescription() ); } return tmpStr; } -static QString eventViewerFormatFreeBusy( FreeBusy *fb ) +static QString eventViewerFormatFreeBusy( FreeBusy *fb, KDateTime::Spec spec ) { + Q_UNUSED( spec ); + if ( !fb ) { return QString(); } @@ -504,49 +534,65 @@ tmpStr += eventViewerAddTag( "p", text ); return tmpStr; } +//@endcond //@cond PRIVATE -class KCal::IncidenceFormatter::EventViewerVisitor : public IncidenceBase::Visitor +class KCal::IncidenceFormatter::EventViewerVisitor + : public IncidenceBase::Visitor { public: - EventViewerVisitor() { mResult = ""; } - bool act( IncidenceBase *incidence ) { return incidence->accept( *this ); } + EventViewerVisitor() + : mSpec( KDateTime::Spec() ), mResult( "" ) {} + + bool act( IncidenceBase *incidence, KDateTime::Spec spec=KDateTime::Spec() ) + { + mSpec = spec; + mResult = ""; + return incidence->accept( *this ); + } QString result() const { return mResult; } + protected: bool visit( Event *event ) { - mResult = eventViewerFormatEvent( event ); + mResult = eventViewerFormatEvent( event, mSpec ); return !mResult.isEmpty(); } bool visit( Todo *todo ) { - mResult = eventViewerFormatTodo( todo ); + mResult = eventViewerFormatTodo( todo, mSpec ); return !mResult.isEmpty(); } bool visit( Journal *journal ) { - mResult = eventViewerFormatJournal( journal ); + mResult = eventViewerFormatJournal( journal, mSpec ); return !mResult.isEmpty(); } bool visit( FreeBusy *fb ) { - mResult = eventViewerFormatFreeBusy( fb ); + mResult = eventViewerFormatFreeBusy( fb, mSpec ); return !mResult.isEmpty(); } protected: + KDateTime::Spec mSpec; QString mResult; }; //@endcond QString IncidenceFormatter::extensiveDisplayString( IncidenceBase *incidence ) { + return extensiveDisplayStr( incidence, KDateTime::Spec() ); +} + +QString IncidenceFormatter::extensiveDisplayStr( IncidenceBase *incidence, KDateTime::Spec spec ) +{ if ( !incidence ) { return QString(); } EventViewerVisitor v; - if ( v.act( incidence ) ) { + if ( v.act( incidence, spec ) ) { return v.result(); } else { return QString(); @@ -557,6 +603,7 @@ * Helper functions for the body part formatter of kmail *******************************************************************/ +//@cond PRIVATE static QString string2HTML( const QString &str ) { return Qt::convertFromPlainText( str, Qt::WhiteSpaceNormal ); @@ -1049,9 +1096,11 @@ return i18n( "Error: Free/Busy iMIP message with unknown method: '%1'", msg->method() ); } } +//@endcond //@cond PRIVATE -class KCal::IncidenceFormatter::ScheduleMessageVisitor : public IncidenceBase::Visitor +class KCal::IncidenceFormatter::ScheduleMessageVisitor + : public IncidenceBase::Visitor { public: ScheduleMessageVisitor() : mMessage(0) { mResult = ""; } @@ -1125,8 +1174,9 @@ return id; } -class IncidenceFormatter::IncidenceCompareVisitor : - public IncidenceBase::Visitor +//@cond PRIVATE +class IncidenceFormatter::IncidenceCompareVisitor + : public IncidenceBase::Visitor { public: IncidenceCompareVisitor() : mExistingIncidence( 0 ) {} @@ -1244,6 +1294,7 @@ Incidence *mExistingIncidence; QStringList mChanges; }; +//@endcond QString InvitationFormatterHelper::makeLink( const QString &id, const QString &text ) { @@ -1257,6 +1308,7 @@ return 0; } +//@cond PRIVATE // Check if the given incidence is likely one that we own instead one from // a shared calendar (Kolab-specific) static bool incidenceOwnedByMe( Calendar *calendar, Incidence *incidence ) @@ -1436,20 +1488,24 @@ return html; } +//@endcond /******************************************************************* * Helper functions for the Incidence tooltips *******************************************************************/ //@cond PRIVATE -class KCal::IncidenceFormatter::ToolTipVisitor : public IncidenceBase::Visitor +class KCal::IncidenceFormatter::ToolTipVisitor + : public IncidenceBase::Visitor { public: - ToolTipVisitor() : mRichText( true ), mResult( "" ) {} + ToolTipVisitor() + : mRichText( true ), mSpec( KDateTime::Spec() ), mResult( "" ) {} - bool act( IncidenceBase *incidence, bool richText=true ) + bool act( IncidenceBase *incidence, bool richText=true, KDateTime::Spec spec=KDateTime::Spec() ) { mRichText = richText; + mSpec = spec; mResult = ""; return incidence ? incidence->accept( *this ) : false; } @@ -1470,6 +1526,7 @@ protected: bool mRichText; + KDateTime::Spec mSpec; QString mResult; }; @@ -1482,21 +1539,19 @@ QString tmp; if ( event->isMultiDay() ) { - tmp = event->dtStartStr( true, event->dtStart().timeSpec() ); + tmp = event->dtStartStr( true, mSpec ); ret += "<br>" + i18nc( "Event start", "<i>From:</i> %1", tmp ); - tmp = event->dtEndStr( true, event->dtEnd().timeSpec() ); + tmp = event->dtEndStr( true, mSpec ); ret += "<br>" + i18nc( "Event end","<i>To:</i> %1", tmp ); } else { ret += "<br>" + - i18n( "<i>Date:</i> %1", - event->dtStartDateStr( - true, event->dtStart().timeSpec() ) ); + i18n( "<i>Date:</i> %1", event->dtStartDateStr( true, mSpec ) ); if ( !event->allDay() ) { - const QString dtStartTime = event->dtStartTimeStr( true, event->dtStart().timeSpec() ); - const QString dtEndTime = event->dtEndTimeStr( true, event->dtEnd().timeSpec() ); + const QString dtStartTime = event->dtStartTimeStr( true, mSpec ); + const QString dtEndTime = event->dtEndTimeStr( true, mSpec ); if ( dtStartTime == dtEndTime ) { // to prevent 'Time: 17:00 - 17:00' tmp = "<br>" + @@ -1528,14 +1583,10 @@ // No need to add <i> here. This is separated issue and each line // is very visible on its own. On the other hand... Yes, I like it // italics here :) - ret += "<br>" + i18n( "<i>Start:</i> %1", - todo->dtStartStr( - true, false, todo->dtStart().timeSpec() ) ) ; + ret += "<br>" + i18n( "<i>Start:</i> %1", todo->dtStartStr( true, false, mSpec ) ); } if ( todo->hasDueDate() && todo->dtDue().isValid() ) { - ret += "<br>" + i18n( "<i>Due:</i> %1", - todo->dtDueStr( - true, todo->dtDue().timeSpec() ) ); + ret += "<br>" + i18n( "<i>Due:</i> %1", todo->dtDueStr( true, mSpec ) ); } if ( todo->isCompleted() ) { ret += "<br>" + @@ -1556,8 +1607,7 @@ QString ret; if ( journal->dtStart().isValid() ) { ret += "<br>" + - i18n( "<i>Date:</i> %1", - journal->dtStartDateStr( false, journal->dtStart().timeSpec() ) ); + i18n( "<i>Date:</i> %1", journal->dtStartDateStr( false, mSpec ) ); } return ret.replace( " ", " " ); } @@ -1640,10 +1690,17 @@ } //@endcond -QString IncidenceFormatter::toolTipString( IncidenceBase *incidence, bool richText ) +QString IncidenceFormatter::toolTipString( IncidenceBase *incidence, + bool richText ) { + return toolTipStr( incidence, richText, KDateTime::Spec() ); +} + +QString IncidenceFormatter::toolTipStr( IncidenceBase *incidence, + bool richText, KDateTime::Spec spec ) +{ ToolTipVisitor v; - if ( v.act( incidence, richText ) ) { + if ( v.act( incidence, richText, spec ) ) { return v.result(); } else { return QString(); @@ -1654,6 +1711,7 @@ * Helper functions for the Incidence tooltips *******************************************************************/ +//@cond PRIVATE static QString mailBodyIncidence( Incidence *incidence ) { QString body; @@ -1668,15 +1726,19 @@ } return body; } +//@endcond //@cond PRIVATE -class KCal::IncidenceFormatter::MailBodyVisitor : public IncidenceBase::Visitor +class KCal::IncidenceFormatter::MailBodyVisitor + : public IncidenceBase::Visitor { public: - MailBodyVisitor() : mResult( "" ) {} + MailBodyVisitor() + : mSpec( KDateTime::Spec() ), mResult( "" ) {} - bool act( IncidenceBase *incidence ) + bool act( IncidenceBase *incidence, KDateTime::Spec spec=KDateTime::Spec() ) { + mSpec = spec; mResult = ""; return incidence ? incidence->accept( *this ) : false; } @@ -1695,6 +1757,7 @@ return !mResult.isEmpty(); } protected: + KDateTime::Spec mSpec; QString mResult; }; @@ -1714,19 +1777,15 @@ }; mResult = mailBodyIncidence( event ); - mResult += i18n( "Start Date: %1\n", - event->dtStartDateStr( true, event->dtStart().timeSpec() ) ); + mResult += i18n( "Start Date: %1\n", event->dtStartDateStr( true, mSpec ) ); if ( !event->allDay() ) { - mResult += i18n( "Start Time: %1\n", - event->dtStartTimeStr( true, event->dtStart().timeSpec() ) ); + mResult += i18n( "Start Time: %1\n", event->dtStartTimeStr( true, mSpec ) ); } if ( event->dtStart() != event->dtEnd() ) { - mResult += i18n( "End Date: %1\n", - event->dtEndDateStr( true, event->dtStart().timeSpec() ) ); + mResult += i18n( "End Date: %1\n", event->dtEndDateStr( true, mSpec ) ); } if ( !event->allDay() ) { - mResult += i18n( "End Time: %1\n", - event->dtEndTimeStr( true, event->dtStart().timeSpec() ) ); + mResult += i18n( "End Time: %1\n", event->dtEndTimeStr( true, mSpec ) ); } if ( event->recurs() ) { Recurrence *recur = event->recurrence(); @@ -1765,19 +1824,15 @@ mResult = mailBodyIncidence( todo ); if ( todo->hasStartDate() && todo->dtStart().isValid() ) { - mResult += i18n( "Start Date: %1\n", - todo->dtStartDateStr( true, false, todo->dtStart().timeSpec() ) ); + mResult += i18n( "Start Date: %1\n", todo->dtStartDateStr( true, false, mSpec ) ); if ( !todo->allDay() ) { - mResult += i18n( "Start Time: %1\n", - todo->dtStartTimeStr( true, false, todo->dtStart().timeSpec() ) ); + mResult += i18n( "Start Time: %1\n", todo->dtStartTimeStr( true, false, mSpec ) ); } } if ( todo->hasDueDate() && todo->dtDue().isValid() ) { - mResult += i18n( "Due Date: %1\n", - todo->dtDueDateStr( true, todo->dtDue().timeSpec() ) ); + mResult += i18n( "Due Date: %1\n", todo->dtDueDateStr( true, mSpec ) ); if ( !todo->allDay() ) { - mResult += i18n( "Due Time: %1\n", - todo->dtDueTimeStr( true, todo->dtDue().timeSpec() ) ); + mResult += i18n( "Due Time: %1\n", todo->dtDueTimeStr( true, mSpec ) ); } } QString details = todo->richDescription(); @@ -1790,9 +1845,9 @@ bool IncidenceFormatter::MailBodyVisitor::visit( Journal *journal ) { mResult = mailBodyIncidence( journal ); - mResult += i18n( "Date: %1\n", journal->dtStartDateStr( true, journal->dtStart().timeSpec() ) ); + mResult += i18n( "Date: %1\n", journal->dtStartDateStr( true, mSpec ) ); if ( !journal->allDay() ) { - mResult += i18n( "Time: %1\n", journal->dtStartTimeStr( true, journal->dtStart().timeSpec() ) ); + mResult += i18n( "Time: %1\n", journal->dtStartTimeStr( true, mSpec ) ); } if ( !journal->description().isEmpty() ) { mResult += i18n( "Text of the journal:\n%1\n", journal->richDescription() ); @@ -1803,17 +1858,24 @@ QString IncidenceFormatter::mailBodyString( IncidenceBase *incidence ) { + return mailBodyStr( incidence, KDateTime::Spec() ); +} + +QString IncidenceFormatter::mailBodyStr( IncidenceBase *incidence, + KDateTime::Spec spec ) +{ if ( !incidence ) { return QString(); } MailBodyVisitor v; - if ( v.act( incidence ) ) { + if ( v.act( incidence, spec ) ) { return v.result(); } return QString(); } +//@cond PRIVATE static QString recurEnd( Incidence *incidence ) { QString endstr; @@ -1824,6 +1886,7 @@ } return endstr; } +//@endcond QString IncidenceFormatter::recurrenceString( Incidence *incidence ) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor