• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdepimlibs-4.11.3 API Reference
  • KDE Home
  • Contact Us
 

KCalUtils Library

  • kcalutils
stringify.cpp
Go to the documentation of this file.
1 /*
2  This file is part of the kcalutils library.
3 
4  Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
5  Copyright (c) 2004 Reinhold Kainhofer <reinhold@kainhofer.com>
6  Copyright (c) 2005 Rafal Rzepecki <divide@users.sourceforge.net>
7  Copyright (c) 2009-2010 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.net>
8 
9  This library is free software; you can redistribute it and/or
10  modify it under the terms of the GNU Library General Public
11  License as published by the Free Software Foundation; either
12  version 2 of the License, or (at your option) any later version.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Library General Public License for more details.
18 
19  You should have received a copy of the GNU Library General Public License
20  along with this library; see the file COPYING.LIB. If not, write to
21  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22  Boston, MA 02110-1301, USA.
23 */
36 #include "stringify.h"
37 
38 #include <kcalcore/exceptions.h>
39 using namespace KCalCore;
40 
41 #include <KLocale>
42 #include <KLocalizedString>
43 #include <KGlobal>
44 #include <KSystemTimeZone>
45 
46 using namespace KCalUtils;
47 using namespace Stringify;
48 
49 QString Stringify::incidenceType( Incidence::IncidenceType type )
50 {
51  switch( type ) {
52  case Incidence::TypeEvent:
53  return i18nc( "@item incidence type is event", "event" );
54  case Incidence::TypeTodo:
55  return i18nc( "@item incidence type is to-do/task", "to-do" );
56  case Incidence::TypeJournal:
57  return i18nc( "@item incidence type is journal", "journal" );
58  case Incidence::TypeFreeBusy:
59  return i18nc( "@item incidence type is freebusy", "free/busy" );
60  default:
61  return QString();
62  }
63 }
64 
65 QString Stringify::todoCompletedDateTime( const Todo::Ptr &todo,
66  bool shortfmt )
67 {
68  return KGlobal::locale()->formatDateTime( todo->completed().dateTime(),
69  ( shortfmt ? KLocale::ShortDate :
70  KLocale::LongDate ) );
71 }
72 
73 QString Stringify::incidenceSecrecy( Incidence::Secrecy secrecy )
74 {
75  switch ( secrecy ) {
76  case Incidence::SecrecyPublic:
77  return i18nc( "@item incidence access if for everyone", "Public" );
78  case Incidence::SecrecyPrivate:
79  return i18nc( "@item incidence access is by owner only", "Private" );
80  case Incidence::SecrecyConfidential:
81  return i18nc( "@item incidence access is by owner and a controlled group", "Confidential" );
82  default: // to make compiler happy
83  return QString();
84  }
85 }
86 
87 QStringList Stringify::incidenceSecrecyList()
88 {
89  QStringList list;
90  list << incidenceSecrecy( Incidence::SecrecyPublic );
91  list << incidenceSecrecy( Incidence::SecrecyPrivate );
92  list << incidenceSecrecy( Incidence::SecrecyConfidential );
93 
94  return list;
95 }
96 
97 QString Stringify::incidenceStatus( Incidence::Status status )
98 {
99  switch ( status ) {
100  case Incidence::StatusTentative:
101  return i18nc( "@item event is tentative", "Tentative" );
102  case Incidence::StatusConfirmed:
103  return i18nc( "@item event is definite", "Confirmed" );
104  case Incidence::StatusCompleted:
105  return i18nc( "@item to-do is complete", "Completed" );
106  case Incidence::StatusNeedsAction:
107  return i18nc( "@item to-do needs action", "Needs-Action" );
108  case Incidence::StatusCanceled:
109  return i18nc( "@item event orto-do is canceled; journal is removed", "Canceled" );
110  case Incidence::StatusInProcess:
111  return i18nc( "@item to-do is in process", "In-Process" );
112  case Incidence::StatusDraft:
113  return i18nc( "@item journal is in draft form", "Draft" );
114  case Incidence::StatusFinal:
115  return i18nc( "@item journal is in final form", "Final" );
116  case Incidence::StatusX:
117  case Incidence::StatusNone:
118  default:
119  return QString();
120  }
121 }
122 
123 QString Stringify::incidenceStatus( const Incidence::Ptr &incidence )
124 {
125  if ( incidence->status() == Incidence::StatusX ) {
126  return incidence->customStatus();
127  } else {
128  return incidenceStatus( incidence->status() );
129  }
130 }
131 
132 QString Stringify::attendeeRole( Attendee::Role role )
133 {
134  switch ( role ) {
135  case Attendee::Chair:
136  return i18nc( "@item chairperson", "Chair" );
137  break;
138  default:
139  case Attendee::ReqParticipant:
140  return i18nc( "@item participation is required", "Participant" );
141  break;
142  case Attendee::OptParticipant:
143  return i18nc( "@item participation is optional", "Optional Participant" );
144  break;
145  case Attendee::NonParticipant:
146  return i18nc( "@item non-participant copied for information", "Observer" );
147  break;
148  }
149 }
150 
151 QStringList Stringify::attendeeRoleList()
152 {
153  QStringList list;
154  list << attendeeRole( Attendee::ReqParticipant );
155  list << attendeeRole( Attendee::OptParticipant );
156  list << attendeeRole( Attendee::NonParticipant );
157  list << attendeeRole( Attendee::Chair );
158 
159  return list;
160 }
161 
162 QString Stringify::attendeeStatus( Attendee::PartStat status )
163 {
164  switch ( status ) {
165  default:
166  case Attendee::NeedsAction:
167  return i18nc( "@item event, to-do or journal needs action", "Needs Action" );
168  break;
169  case Attendee::Accepted:
170  return i18nc( "@item event, to-do or journal accepted", "Accepted" );
171  break;
172  case Attendee::Declined:
173  return i18nc( "@item event, to-do or journal declined", "Declined" );
174  break;
175  case Attendee::Tentative:
176  return i18nc( "@item event or to-do tentatively accepted", "Tentative" );
177  break;
178  case Attendee::Delegated:
179  return i18nc( "@item event or to-do delegated", "Delegated" );
180  break;
181  case Attendee::Completed:
182  return i18nc( "@item to-do completed", "Completed" );
183  break;
184  case Attendee::InProcess:
185  return i18nc( "@item to-do in process of being completed", "In Process" );
186  break;
187  case Attendee::None:
188  return i18nc( "@item event or to-do status unknown", "Unknown" );
189  break;
190  }
191 }
192 
193 QStringList Stringify::attendeeStatusList()
194 {
195  QStringList list;
196  list << attendeeStatus( Attendee::NeedsAction );
197  list << attendeeStatus( Attendee::Accepted );
198  list << attendeeStatus( Attendee::Declined );
199  list << attendeeStatus( Attendee::Tentative );
200  list << attendeeStatus( Attendee::Delegated );
201  list << attendeeStatus( Attendee::Completed );
202  list << attendeeStatus( Attendee::InProcess );
203 
204  return list;
205 }
206 
207 QString Stringify::formatTime( const KDateTime &dt, bool shortfmt, const KDateTime::Spec &spec )
208 {
209  if ( spec.isValid() ) {
210 
211  QString timeZone;
212  if ( spec.timeZone() != KSystemTimeZones::local() ) {
213  timeZone = ' ' + spec.timeZone().name();
214  }
215 
216  return KGlobal::locale()->formatTime( dt.toTimeSpec( spec ).time(), !shortfmt ) + timeZone;
217  } else {
218  return KGlobal::locale()->formatTime( dt.time(), !shortfmt );
219  }
220 }
221 
222 QString Stringify::formatDate( const KDateTime &dt, bool shortfmt, const KDateTime::Spec &spec )
223 {
224  if ( spec.isValid() ) {
225 
226  QString timeZone;
227  if ( spec.timeZone() != KSystemTimeZones::local() ) {
228  timeZone = ' ' + spec.timeZone().name();
229  }
230 
231  return
232  KGlobal::locale()->formatDate( dt.toTimeSpec( spec ).date(),
233  ( shortfmt ? KLocale::ShortDate : KLocale::LongDate ) ) +
234  timeZone;
235  } else {
236  return
237  KGlobal::locale()->formatDate( dt.date(),
238  ( shortfmt ? KLocale::ShortDate : KLocale::LongDate ) );
239  }
240 }
241 
242 QString Stringify::formatDateTime( const KDateTime &dt, bool allDay,
243  bool shortfmt, const KDateTime::Spec &spec )
244 {
245  if ( allDay ) {
246  return formatDate( dt, shortfmt, spec );
247  }
248 
249  if ( spec.isValid() ) {
250  QString timeZone;
251  if ( spec.timeZone() != KSystemTimeZones::local() ) {
252  timeZone = ' ' + spec.timeZone().name();
253  }
254 
255  return KGlobal::locale()->formatDateTime(
256  dt.toTimeSpec( spec ).dateTime(),
257  ( shortfmt ? KLocale::ShortDate : KLocale::LongDate ) ) + timeZone;
258  } else {
259  return KGlobal::locale()->formatDateTime(
260  dt.dateTime(),
261  ( shortfmt ? KLocale::ShortDate : KLocale::LongDate ) );
262  }
263 }
264 
265 QString Stringify::errorMessage( const Exception &exception )
266 {
267  QString message = "";
268 
269  switch ( exception.code() ) {
270  case Exception::LoadError:
271  message = i18nc( "@item", "Load Error" );
272  break;
273  case Exception::SaveError:
274  message = i18nc( "@item", "Save Error" );
275  break;
276  case Exception::ParseErrorIcal:
277  message = i18nc( "@item", "Parse Error in libical" );
278  break;
279  case Exception::ParseErrorKcal:
280  message = i18nc( "@item", "Parse Error in the kcalcore library" );
281  break;
282  case Exception::NoCalendar:
283  message = i18nc( "@item", "No calendar component found." );
284  break;
285  case Exception::CalVersion1:
286  message = i18nc( "@item", "Expected iCalendar, got vCalendar format" );
287  break;
288  case Exception::CalVersion2:
289  message = i18nc( "@item", "iCalendar Version 2.0 detected." );
290  break;
291  case Exception::CalVersionUnknown:
292  message = i18nc( "@item", "Expected iCalendar, got unknown format" );
293  break;
294  case Exception::Restriction:
295  message = i18nc( "@item", "Restriction violation" );
296  break;
297  case Exception::NoWritableFound:
298  message = i18nc( "@item", "No writable resource found" );
299  break;
300  case Exception::SaveErrorOpenFile:
301  Q_ASSERT( exception.arguments().count() == 1 );
302  message = i18nc( "@item", "Error saving to '%1'.", exception.arguments()[0] );
303  break;
304  case Exception::SaveErrorSaveFile:
305  Q_ASSERT( exception.arguments().count() == 1 );
306  message = i18nc( "@item", "Could not save '%1'", exception.arguments()[0] );
307  break;
308  case Exception::LibICalError:
309  message = i18nc( "@item", "libical error" );
310  break;
311  case Exception::VersionPropertyMissing:
312  message = i18nc( "@item", "No VERSION property found" );
313  break;
314  case Exception::ExpectedCalVersion2:
315  message = i18nc( "@item", "Expected iCalendar, got vCalendar format" );
316  break;
317  case Exception::ExpectedCalVersion2Unknown:
318  message = i18nc( "@item", "Expected iCalendar, got unknown format" );
319  break;
320  case Exception::ParseErrorNotIncidence:
321  message = i18nc( "@item", "object is not a freebusy, event, todo or journal" );
322  break;
323  case Exception::ParseErrorEmptyMessage:
324  message = i18nc( "@item", "messageText is empty, unable to parse into a ScheduleMessage" );
325  break;
326  case Exception::ParseErrorUnableToParse:
327  message = i18nc( "@item", "icalparser is unable to parse messageText into a ScheduleMessage" );
328  break;
329  case Exception::ParseErrorMethodProperty:
330  message = i18nc( "@item", "message does not contain ICAL_METHOD_PROPERTY" );
331  break;
332  case Exception::UserCancel:
333  // no real error; the user canceled the operation
334  break;
335 
336  }
337 
338  return message;
339 }
340 
341 QString Stringify::scheduleMessageStatus( ScheduleMessage::Status status )
342 {
343  switch( status ) {
344  case ScheduleMessage::PublishNew:
345  return i18nc( "@item this is a new scheduling message",
346  "New Scheduling Message" );
347  case ScheduleMessage::PublishUpdate:
348  return i18nc( "@item this is an update to an existing scheduling message",
349  "Updated Scheduling Message" );
350  case ScheduleMessage::Obsolete:
351  return i18nc( "@item obsolete status", "Obsolete" );
352  case ScheduleMessage::RequestNew:
353  return i18nc( "@item this is a request for a new scheduling message",
354  "New Scheduling Message Request" );
355  case ScheduleMessage::RequestUpdate:
356  return i18nc( "@item this is a request for an update to an existing scheduling message",
357  "Updated Scheduling Message Request" );
358  default:
359  return i18nc( "@item unknown status", "Unknown Status: %1", int( status ) );
360  }
361 }
362 
363 QString Stringify::secrecyName( Incidence::Secrecy secrecy )
364 {
365  switch ( secrecy ) {
366  case Incidence::SecrecyPublic:
367  return i18nc( "@item incidence access if for everyone", "Public" );
368  case Incidence::SecrecyPrivate:
369  return i18nc( "@item incidence access is by owner only", "Private" );
370  case Incidence::SecrecyConfidential:
371  return i18nc( "@item incidence access is by owner and a controlled group", "Confidential" );
372  default:
373  return QString(); // to make compilers happy
374  }
375 }
376 
377 QStringList Stringify::secrecyList()
378 {
379  QStringList list;
380  list << secrecyName( Incidence::SecrecyPublic );
381  list << secrecyName( Incidence::SecrecyPrivate );
382  list << secrecyName( Incidence::SecrecyConfidential );
383 
384  return list;
385 }
KCalCore::Exception::NoWritableFound
KCalCore::Exception
KCalCore::Exception::CalVersion2
KCalCore::Attendee::NonParticipant
KCalCore::Exception::arguments
virtual QStringList arguments() const
KCalCore::Exception::ParseErrorIcal
KCalCore::Attendee::Role
Role
KCalCore::Exception::LoadError
KCalUtils::Stringify::formatDate
KCALUTILS_EXPORT QString formatDate(const KDateTime &dt, bool shortfmt=true, const KDateTime::Spec &spec=KDateTime::Spec())
Build a QString date representation of a KDateTime object.
Definition: stringify.cpp:222
KCalCore::Exception::code
virtual ErrorCode code() const
KCalCore::Exception::NoCalendar
KCalUtils::Stringify::formatDateTime
KCALUTILS_EXPORT QString formatDateTime(const KDateTime &dt, bool dateOnly=false, bool shortfmt=true, const KDateTime::Spec &spec=KDateTime::Spec())
Build a QString date/time representation of a KDateTime object.
Definition: stringify.cpp:242
KCalUtils::Stringify::incidenceSecrecyList
KCALUTILS_EXPORT QStringList incidenceSecrecyList()
Returns a list of all available Secrecy types as a list of translated strings.
Definition: stringify.cpp:87
KCalCore::Attendee::Delegated
KCalCore::Exception::ParseErrorKcal
KCalCore::Exception::CalVersionUnknown
KCalCore::Attendee::PartStat
PartStat
KCalCore::Exception::SaveError
KCalUtils::Stringify::incidenceSecrecy
KCALUTILS_EXPORT QString incidenceSecrecy(KCalCore::Incidence::Secrecy secrecy)
Returns the incidence Secrecy as translated string.
stringify.h
This file is part of the API for handling calendar data and provides static functions for formatting ...
exceptions.h
KCalCore::Attendee::ReqParticipant
KCalCore::ScheduleMessage::RequestNew
KCalUtils::Stringify::errorMessage
KCALUTILS_EXPORT QString errorMessage(const KCalCore::Exception &exception)
Build a translated message representing an exception.
Definition: stringify.cpp:265
KCalCore::Exception::UserCancel
KCalCore::Attendee::OptParticipant
KCalCore::Attendee::InProcess
KCalCore::ScheduleMessage::Status
Status
KCalCore::Attendee::NeedsAction
KCalCore::Exception::Restriction
KCalUtils::Stringify::todoCompletedDateTime
KCALUTILS_EXPORT QString todoCompletedDateTime(const KCalCore::Todo::Ptr &todo, bool shortfmt=false)
Returns string containing the date/time when the to-do was completed, formatted according to the user...
Definition: stringify.cpp:65
KCalCore::Attendee::Completed
KCalUtils::Stringify::formatTime
KCALUTILS_EXPORT QString formatTime(const KDateTime &dt, bool shortfmt=true, const KDateTime::Spec &spec=KDateTime::Spec())
Build a QString time representation of a KDateTime object.
Definition: stringify.cpp:207
KCalCore::Attendee::Tentative
KCalCore::ScheduleMessage::PublishNew
KCalCore::ScheduleMessage::PublishUpdate
KCalCore::Attendee::Chair
KCalCore::ScheduleMessage::Obsolete
KCalCore::Todo::Ptr
QSharedPointer< Todo > Ptr
KCalCore::ScheduleMessage::RequestUpdate
KCalCore::Attendee::Accepted
KCalCore::Attendee::Declined
KCalCore::Exception::CalVersion1
This file is part of the KDE documentation.
Documentation copyright © 1996-2013 The KDE developers.
Generated on Tue Nov 26 2013 09:02:53 by doxygen 1.8.5 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KCalUtils Library

Skip menu "KCalUtils Library"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Members
  • File List
  • Related Pages

kdepimlibs-4.11.3 API Reference

Skip menu "kdepimlibs-4.11.3 API Reference"
  • akonadi
  •   contact
  •   kmime
  •   socialutils
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  •   nntp
  • kldap
  • kmbox
  • kmime
  • kontactinterface
  • kpimidentities
  • kpimtextedit
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal