1 | /* |
2 | This file is part of the kcal library. |
3 | |
4 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> |
5 | |
6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public |
8 | License as published by the Free Software Foundation; either |
9 | version 2 of the License, or (at your option) any later version. |
10 | |
11 | This library is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | Library General Public License for more details. |
15 | |
16 | You should have received a copy of the GNU Library General Public License |
17 | along with this library; see the file COPYING.LIB. If not, write to |
18 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
19 | Boston, MA 02110-1301, USA. |
20 | */ |
21 | /** |
22 | @file |
23 | This file is part of the API for handling calendar data and |
24 | defines the CalFormat base class. |
25 | |
26 | @brief |
27 | Base class providing an interface to various calendar formats. |
28 | |
29 | @author Cornelius Schumacher \<schumacher@kde.org\> |
30 | */ |
31 | |
32 | #include "calformat.h" |
33 | |
34 | #include <klocalizedstring.h> |
35 | #include <kdebug.h> |
36 | #include <krandom.h> |
37 | |
38 | using namespace KCal; |
39 | |
40 | /** |
41 | Private class that helps to provide binary compatibility between releases. |
42 | @internal |
43 | */ |
44 | //@cond PRIVATE |
45 | class KCal::CalFormat::Private |
46 | { |
47 | public: |
48 | Private() : mException( 0 ) {} |
49 | ~Private() { delete mException; } |
50 | static QString mApplication; // Name of application, for creating unique ID strings |
51 | static QString mProductId; // PRODID string to write to calendar files |
52 | QString mLoadedProductId; // PRODID string loaded from calendar file |
53 | ErrorFormat *mException; |
54 | }; |
55 | |
56 | QString CalFormat::Private::mApplication = QLatin1String( "libkcal" ); |
57 | QString CalFormat::Private::mProductId = |
58 | QLatin1String( "-//K Desktop Environment//NONSGML libkcal 4.3//EN" ); |
59 | //@endcond |
60 | |
61 | CalFormat::CalFormat() |
62 | : d( new KCal::CalFormat::Private ) |
63 | { |
64 | } |
65 | |
66 | CalFormat::~CalFormat() |
67 | { |
68 | delete d; |
69 | } |
70 | |
71 | void CalFormat::clearException() |
72 | { |
73 | delete d->mException; |
74 | d->mException = 0; |
75 | } |
76 | |
77 | void CalFormat::setException( ErrorFormat *exception ) |
78 | { |
79 | delete d->mException; |
80 | d->mException = exception; |
81 | } |
82 | |
83 | ErrorFormat *CalFormat::exception() |
84 | { |
85 | return d->mException; |
86 | } |
87 | |
88 | void CalFormat::setApplication( const QString &application, |
89 | const QString &productID ) |
90 | { |
91 | Private::mApplication = application; |
92 | Private::mProductId = productID; |
93 | } |
94 | |
95 | const QString &CalFormat::application() |
96 | { |
97 | return Private::mApplication; |
98 | } |
99 | |
100 | const QString &CalFormat::productId() |
101 | { |
102 | return Private::mProductId; |
103 | } |
104 | |
105 | const QString &CalFormat::loadedProductId() |
106 | { |
107 | return d->mLoadedProductId; |
108 | } |
109 | |
110 | void CalFormat::setLoadedProductId( const QString &id ) |
111 | { |
112 | d->mLoadedProductId = id; |
113 | } |
114 | |
115 | QString CalFormat::createUniqueId() |
116 | { |
117 | int hashTime = QTime::currentTime().hour() + |
118 | QTime::currentTime().minute() + QTime::currentTime().second() + |
119 | QTime::currentTime().msec(); |
120 | QString uidStr = QString( "%1-%2.%3" ). |
121 | arg( Private::mApplication ). |
122 | arg( KRandom::random() ). |
123 | arg( hashTime ); |
124 | return uidStr; |
125 | } |
126 | |