85
82
#include <calfilechangenotification.h>
90
class QOrganizerItemSymbianFactory : public QObject, public QOrganizerItemManagerEngineFactory
88
class OrganizerItemTransform; // forward declare transform class.
89
class QOrganizerItemSymbianEngine; // forward declare symbian engine.
90
class QOrganizerCollectionSymbianEngineId : public QOrganizerCollectionEngineId
93
QOrganizerCollectionSymbianEngineId();
94
QOrganizerCollectionSymbianEngineId(quint64 collectionId);
95
~QOrganizerCollectionSymbianEngineId();
96
QOrganizerCollectionSymbianEngineId(const QOrganizerCollectionSymbianEngineId& other);
98
bool isEqualTo(const QOrganizerCollectionEngineId* other) const;
99
bool isLessThan(const QOrganizerCollectionEngineId* other) const;
101
QString managerUri() const;
102
QOrganizerCollectionEngineId* clone() const;
104
QString toString() const;
106
#ifndef QT_NO_DEBUG_STREAM
107
QDebug& debugStreamOut(QDebug& dbg) const;
112
quint64 m_localCollectionId;
113
friend class QOrganizerItemSymbianEngine;
116
class QOrganizerItemSymbianEngineId : public QOrganizerItemEngineId
119
QOrganizerItemSymbianEngineId();
120
QOrganizerItemSymbianEngineId(quint64 collectionId, quint32 itemId);
121
~QOrganizerItemSymbianEngineId();
122
QOrganizerItemSymbianEngineId(const QOrganizerItemSymbianEngineId& other);
124
bool isEqualTo(const QOrganizerItemEngineId* other) const;
125
bool isLessThan(const QOrganizerItemEngineId* other) const;
127
QString managerUri() const;
128
QOrganizerItemEngineId* clone() const;
130
QString toString() const;
132
#ifndef QT_NO_DEBUG_STREAM
133
QDebug& debugStreamOut(QDebug& dbg) const;
138
quint32 calLocalUid() const { return m_localItemId; }
139
quint64 calCollectionId() const { return m_localCollectionId; }
142
quint64 m_localCollectionId;
143
quint32 m_localItemId; // the symbian backend requires quint32 for itemId + quint64 for collectionId
144
friend class QOrganizerItemSymbianEngine;
145
friend class OrganizerItemTransform;
151
class QOrganizerItemSymbianFactory : public QObject,
152
public QOrganizerManagerEngineFactory
93
Q_INTERFACES(QtMobility::QOrganizerItemManagerEngineFactory)
155
Q_INTERFACES(QtMobility::QOrganizerManagerEngineFactory)
95
QOrganizerItemManagerEngine* engine(const QMap<QString, QString>& parameters, QOrganizerItemManager::Error*);
157
QOrganizerManagerEngine* engine(
158
const QMap<QString, QString>& parameters,
159
QOrganizerManager::Error*);
96
160
QString managerName() const;
161
QOrganizerItemEngineId* createItemEngineId(const QMap<QString, QString>& parameters,
162
const QString& engineIdString) const;
163
QOrganizerCollectionEngineId* createCollectionEngineId(const QMap<QString, QString>& parameters,
164
const QString& engineIdString) const;
99
167
class QOrganizerItemSymbianEngineData : public QSharedData
143
211
QMap<QString, QString> managerParameters() const;
144
212
int managerVersion() const;
146
QList<QOrganizerItem> itemInstances(const QOrganizerItem& generator, const QDateTime& periodStart, const QDateTime& periodEnd, int maxCount, QOrganizerItemManager::Error* error) const;
147
QList<QOrganizerItem> itemInstances(const QOrganizerItemFilter& filter, const QList<QOrganizerItemSortOrder>& sortOrders, const QOrganizerItemFetchHint& fetchHint,QOrganizerItemManager::Error* error) const;
149
QList<QOrganizerItemLocalId> itemIds(const QOrganizerItemFilter& filter, const QList<QOrganizerItemSortOrder>& sortOrders, QOrganizerItemManager::Error* error) const;
150
QList<QOrganizerItem> items(const QOrganizerItemFilter& filter, const QList<QOrganizerItemSortOrder>& sortOrders, const QOrganizerItemFetchHint& fetchHint, QOrganizerItemManager::Error* error) const;
151
QOrganizerItem item(const QOrganizerItemLocalId& itemId, const QOrganizerItemFetchHint& fetchHint, QOrganizerItemManager::Error* error) const;
153
bool saveItem(QOrganizerItem* item, const QOrganizerCollectionLocalId& collectionId, QOrganizerItemManager::Error* error);
154
bool saveItems(QList<QOrganizerItem> *items, const QOrganizerCollectionLocalId& collectionId, QMap<int, QOrganizerItemManager::Error> *errorMap, QOrganizerItemManager::Error *error);
156
bool removeItem(const QOrganizerItemLocalId& organizeritemId, QOrganizerItemManager::Error* error);
157
bool removeItems(const QList<QOrganizerItemLocalId> &itemIds, QMap<int, QOrganizerItemManager::Error> *errorMap, QOrganizerItemManager::Error *error);
214
QList<QOrganizerItem> itemOccurrences(const QOrganizerItem& parentItem,
215
const QDateTime& periodStart, const QDateTime& periodEnd,
216
int maxCount, const QOrganizerItemFetchHint& fetchHint,
217
QOrganizerManager::Error* error) const;
218
QList<QOrganizerItem> items(const QDateTime& periodStart,
219
const QDateTime& periodEnd,
220
const QOrganizerItemFilter& filter,
221
const QList<QOrganizerItemSortOrder>& sortOrders,
222
const QOrganizerItemFetchHint& fetchHint,
223
QOrganizerManager::Error* error) const;
225
QList<QOrganizerItemId> itemIds(const QDateTime& periodStart,
226
const QDateTime& periodEnd,
227
const QOrganizerItemFilter& filter,
228
const QList<QOrganizerItemSortOrder>& sortOrders,
229
QOrganizerManager::Error* error) const;
230
QList<QOrganizerItemId> getIdsModifiedSinceDateL(
231
const QDateTime& periodStart,
232
const QDateTime& periodEnd,
233
const QOrganizerItemFilter& filter) const;
235
QList<QOrganizerItemId>& ids,
236
const QDateTime& periodStart,
237
const QDateTime& periodEnd,
238
const QOrganizerItemFilter& filter,
239
const QList<QOrganizerItemSortOrder>& sortOrders) const;
240
QList<QOrganizerItem> itemsForExport(const QDateTime& periodStart,
241
const QDateTime& periodEnd,
242
const QOrganizerItemFilter& filter,
243
const QList<QOrganizerItemSortOrder>& sortOrders,
244
const QOrganizerItemFetchHint& fetchHint,
245
QOrganizerManager::Error* error) const;
246
void itemsForExportL(QList<QOrganizerItem>& itemsList,
247
const QDateTime& periodStart,
248
const QDateTime& periodEnd,
249
const QOrganizerItemFilter& filter,
250
const QList<QOrganizerItemSortOrder>& sortOrders,
251
const QOrganizerItemFetchHint& fetchHint) const;
252
QOrganizerItem item(const QOrganizerItemId& itemId,
253
const QOrganizerItemFetchHint& fetchHint,
254
QOrganizerManager::Error* error) const;
256
bool saveItem(QOrganizerItem* item,
257
QOrganizerManager::Error* error);
258
bool saveItems(QList<QOrganizerItem> *items,
259
QMap<int, QOrganizerManager::Error> *errorMap,
260
QOrganizerManager::Error *error);
262
bool removeItem(const QOrganizerItemId& organizeritemId,
263
QOrganizerManager::Error* error);
264
bool removeItems(const QList<QOrganizerItemId> &itemIds,
265
QMap<int, QOrganizerManager::Error> *errorMap,
266
QOrganizerManager::Error *error);
159
268
/* Collections - every item belongs to exactly one collection */
160
#ifdef SYMBIAN_CALENDAR_V2
161
QOrganizerCollectionLocalId defaultCollectionId(QOrganizerItemManager::Error* error) const;
162
QList<QOrganizerCollectionLocalId> collectionIds(QOrganizerItemManager::Error* error) const;
163
QList<QOrganizerCollection> collections(const QList<QOrganizerCollectionLocalId>& collectionIds, QOrganizerItemManager::Error* error) const;
164
bool collectionL(const int
165
index, const QList<QOrganizerCollectionLocalId>& collectionIds,
166
QOrganizerCollection& collection) const;
167
bool saveCollection(QOrganizerCollection* collection, QOrganizerItemManager::Error* error);
168
bool removeCollection(const QOrganizerCollectionLocalId& collectionId, QOrganizerItemManager::Error* error);
269
QOrganizerCollection defaultCollection(
270
QOrganizerManager::Error* error) const;
271
QOrganizerCollection collection(
272
const QOrganizerCollectionId& collectionId,
273
QOrganizerManager::Error* error) const;
274
QList<QOrganizerCollection> collections(
275
QOrganizerManager::Error* error) const;
276
bool saveCollection(QOrganizerCollection* collection,
277
QOrganizerManager::Error* error);
278
bool removeCollection(const QOrganizerCollectionId& collectionId,
279
QOrganizerManager::Error* error);
281
/* Return a pruned or modified item which is valid and can be saved in the backend */
282
QOrganizerItem compatibleItem(const QOrganizerItem& original, QOrganizerManager::Error* error) const;
283
QOrganizerCollection compatibleCollection(const QOrganizerCollection& original, QOrganizerManager::Error* error) const;
171
285
/* Definitions - Accessors and Mutators */
172
QMap<QString, QOrganizerItemDetailDefinition> detailDefinitions(const QString& itemType, QOrganizerItemManager::Error* error) const;
286
QMap<QString, QOrganizerItemDetailDefinition> detailDefinitions(
287
const QString& itemType, QOrganizerManager::Error* error) const;
174
289
/* Capabilities reporting */
175
bool hasFeature(QOrganizerItemManager::ManagerFeature feature, const QString& itemType) const;
290
bool hasFeature(QOrganizerManager::ManagerFeature feature,
291
const QString& itemType) const;
176
292
bool isFilterSupported(const QOrganizerItemFilter& filter) const;
177
QList<QVariant::Type> supportedDataTypes() const;
293
QList<int> supportedDataTypes() const;
178
294
QStringList supportedItemTypes() const;
180
296
/* Asynchronous Request Support */
181
void requestDestroyed(QOrganizerItemAbstractRequest* req);
182
bool startRequest(QOrganizerItemAbstractRequest* req);
183
bool cancelRequest(QOrganizerItemAbstractRequest* req);
184
bool waitForRequestFinished(QOrganizerItemAbstractRequest* req, int msecs);
297
void requestDestroyed(QOrganizerAbstractRequest* req);
298
bool startRequest(QOrganizerAbstractRequest* req);
299
bool cancelRequest(QOrganizerAbstractRequest* req);
300
bool waitForRequestFinished(QOrganizerAbstractRequest* req, int msecs);
186
302
public: // MCalProgressCallBack
187
303
void Progress(TInt aPercentageCompleted);
188
304
void Completed(TInt aError);
189
305
TBool NotifyProgress();
191
public: // MCalChangeCallBack2
192
void CalChangeNotification(RArray<TCalChangeEntry>& aChangeItems);
194
307
#ifdef SYMBIAN_CALENDAR_V2
195
308
public: // MCalFileChangeObserver
196
void CalendarInfoChangeNotificationL(RPointerArray<CCalFileChangeInfo>& aCalendarInfoChangeEntries);
309
void CalendarInfoChangeNotificationL(
310
RPointerArray<CCalFileChangeInfo>& aCalendarInfoChangeEntries);
200
315
/* Util functions */
201
static bool transformError(TInt symbianError, QOrganizerItemManager::Error* qtError);
202
void saveItemL(QOrganizerItem *item, const QOrganizerCollectionLocalId& collectionId, QOrganizerItemChangeSet *changeSet);
203
void itemL(const QOrganizerItemLocalId& itemId, QOrganizerItem *item,
316
static bool transformError(TInt symbianError,
317
QOrganizerManager::Error* qtError);
318
void itemOccurrencesL(
319
QList<QOrganizerItem> &itemOccurrences,
320
const QOrganizerItem &parentItem,
321
const QDateTime &periodStart,
322
const QDateTime &periodEnd,
324
const QOrganizerItemFetchHint &fetchHint) const;
325
QList<QOrganizerItem> itemsL(
326
QList<QOrganizerItem> &itemOccurrences,
327
const QDateTime& periodStart,
328
const QDateTime& periodEnd,
329
const QOrganizerItemFilter &filter,
330
const QList<QOrganizerItemSortOrder> &sortOrders,
331
const QOrganizerItemFetchHint &fetchHint) const;
332
void toItemOccurrencesL(
333
const RPointerArray<CCalInstance> &calInstanceList,
334
QOrganizerItem parentItem,
336
QOrganizerCollectionId collectionId,
337
QList<QOrganizerItem> &itemOccurrences) const;
338
QOrganizerItem itemL(const QOrganizerItemId& itemId,
204
339
const QOrganizerItemFetchHint& fetchHint) const;
205
void removeItemL(const QOrganizerItemLocalId& organizeritemId);
340
void saveItemL(QOrganizerItem *item,
341
QOrganizerItemChangeSet *changeSet);
342
void removeItemL(const QOrganizerItemId& organizeritemId);
206
343
QList<QOrganizerItem> slowFilter(const QList<QOrganizerItem> &items,
207
344
const QOrganizerItemFilter& filter,
208
345
const QList<QOrganizerItemSortOrder>& sortOrders) const;
209
#ifdef SYMBIAN_CALENDAR_V2
210
QList<QOrganizerCollectionLocalId> collectionIdsL() const;
211
int sessionCount() const;
212
QList<QOrganizerCollection> collectionsL(const QList<QOrganizerCollectionLocalId>& collectionIds) const;
348
QList<QOrganizerCollection> collectionsL() const;
213
349
void saveCollectionL(QOrganizerCollection* collection);
214
void removeCollectionL(const QOrganizerCollectionLocalId& collectionId);
218
CCalEntryView* entryViewL(const QOrganizerCollectionLocalId& collectionId) const;
219
QOrganizerCollectionLocalId collectionLocalIdL(QOrganizerItem item, const QOrganizerCollectionLocalId& collectionId = 0) const;
220
CCalEntry* entryForItemOccurrenceL(const QOrganizerCollectionLocalId collectionId, QOrganizerItem *item, bool &isNewEntry) const;
221
CCalEntry* entryForItemL(const QOrganizerCollectionLocalId collectionId, QOrganizerItem *item, bool &isNewEntry) const;
222
CCalEntry* findEntryL(const QOrganizerCollectionLocalId collectionId, QOrganizerItemLocalId localId, QString manageruri) const;
223
CCalEntry* findEntryL(const QOrganizerCollectionLocalId collectionId, const TDesC8& globalUid) const;
224
CCalEntry* findParentEntryLC(const QOrganizerCollectionLocalId collectionId, QOrganizerItem *item, const TDesC8& globalUid) const;
350
void removeCollectionL(const QOrganizerCollectionId& collectionId);
351
bool isCollectionNameAvailable(QString name) const;
352
CCalEntryView* entryViewL(const QOrganizerCollectionId& collectionId) const;
353
CCalInstanceView* instanceViewL(const QOrganizerCollectionId& collectionId) const;
354
QOrganizerCollectionId collectionIdL(const QOrganizerItem &item,
355
const QOrganizerCollectionId &collectionId = QOrganizerCollectionId()) const;
356
CCalEntry* entryForItemOccurrenceL(
357
const QOrganizerCollectionId &collectionId, const QOrganizerItem &item,
358
bool &isNewEntry) const;
359
CCalEntry* entryForItemL(const QOrganizerCollectionId &collectionId,
360
const QOrganizerItem &item, bool &isNewEntry) const;
361
CCalEntry* findEntryL(const QOrganizerCollectionId &collectionId,
362
const QOrganizerItemId &localId, QString manageruri) const;
363
CCalEntry* findEntryL(const QOrganizerCollectionId &collectionId,
364
const TDesC8& globalUid) const;
365
CCalEntry* findParentEntryLC(const QOrganizerCollectionId &collectionId,
366
const QOrganizerItem &item, const TDesC8& globalUid) const;
227
369
QOrganizerItemSymbianEngineData *d;
228
CCalSession *m_defaultCalSession;
229
#ifdef SYMBIAN_CALENDAR_V2
230
RPointerArray<CCalSession> m_calSessions;
232
QMap<QOrganizerCollectionLocalId, CCalEntryView *> m_entryViews;
233
CCalInstanceView *m_instanceView;
234
CActiveSchedulerWait *m_activeSchedulerWait;
371
OrganizerSymbianCollection m_defaultCollection;
372
QMap<QOrganizerCollectionId, OrganizerSymbianCollection> m_collections;
235
373
QOrganizerItemRequestQueue* m_requestServiceProviderQueue;
237
// TODO: replace this with an algorithm that generates the calendar entry UID
239
374
OrganizerItemTransform m_itemTransform;
240
375
mutable QMap<QString, QMap<QString, QOrganizerItemDetailDefinition> > m_definition;