Skip to content
This repository has been archived by the owner on Sep 4, 2021. It is now read-only.

Latest commit

 

History

History
490 lines (398 loc) · 18.3 KB

seasidecache.h

File metadata and controls

490 lines (398 loc) · 18.3 KB
 
Jul 16, 2013
Jul 16, 2013
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
* Copyright (C) 2013 Jolla Mobile <andrew.den.exter@jollamobile.com>
*
* You may use this file under the terms of the BSD license as follows:
*
* "Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Nemo Mobile nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
*/
#ifndef SEASIDECACHE_H
#define SEASIDECACHE_H
#include "contactcacheexport.h"
May 27, 2014
May 27, 2014
36
#include "cacheconfiguration.h"
Aug 7, 2013
Aug 7, 2013
37
#include "seasidenamegrouper.h"
Jul 16, 2013
Jul 16, 2013
38
39
#include <qtcontacts-extensions.h>
Jul 30, 2013
Jul 30, 2013
40
#include <QContactStatusFlags>
Jul 16, 2013
Jul 16, 2013
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <QContact>
#include <QContactManager>
#include <QContactFetchRequest>
#include <QContactFetchByIdRequest>
#include <QContactRemoveRequest>
#include <QContactSaveRequest>
#include <QContactRelationshipFetchRequest>
#include <QContactRelationshipSaveRequest>
#include <QContactRelationshipRemoveRequest>
#include <QContactIdFilter>
#include <QContactIdFetchRequest>
#include <QBasicTimer>
#include <QSet>
#include <QElapsedTimer>
#include <QAbstractListModel>
Aug 6, 2013
Aug 6, 2013
60
61
QTCONTACTS_USE_NAMESPACE
Jul 16, 2013
Jul 16, 2013
62
63
64
65
66
67
class CONTACTCACHE_EXPORT SeasideNameGroupChangeListener
{
public:
SeasideNameGroupChangeListener() {}
~SeasideNameGroupChangeListener() {}
Sep 6, 2013
Sep 6, 2013
68
virtual void nameGroupsUpdated(const QHash<QString, QSet<quint32> > &groups) = 0;
Jul 16, 2013
Jul 16, 2013
69
70
71
72
73
74
75
76
77
78
79
80
81
82
};
class CONTACTCACHE_EXPORT SeasideCache : public QObject
{
Q_OBJECT
public:
enum FilterType {
FilterNone,
FilterAll,
FilterFavorites,
FilterOnline,
FilterTypesCount
};
Aug 5, 2013
Aug 5, 2013
83
84
85
86
enum FetchDataType {
FetchNone = 0,
FetchAccountUri = (1 << 0),
FetchPhoneNumber = (1 << 1),
Jan 9, 2014
Jan 9, 2014
87
FetchEmailAddress = (1 << 2),
Jan 9, 2014
Jan 9, 2014
88
89
90
91
92
FetchOrganization = (1 << 3),
FetchTypesMask = (FetchAccountUri |
FetchPhoneNumber |
FetchEmailAddress |
FetchOrganization)
Aug 5, 2013
Aug 5, 2013
93
94
};
Jul 16, 2013
Jul 16, 2013
95
enum DisplayLabelOrder {
May 27, 2014
May 27, 2014
96
97
FirstNameFirst = CacheConfiguration::FirstNameFirst,
LastNameFirst = CacheConfiguration::LastNameFirst
Jul 16, 2013
Jul 16, 2013
98
99
100
101
};
enum ContactState {
ContactAbsent,
Aug 5, 2013
Aug 5, 2013
102
ContactPartial,
Jul 16, 2013
Jul 16, 2013
103
ContactRequested,
Aug 5, 2013
Aug 5, 2013
104
ContactComplete
Jul 16, 2013
Jul 16, 2013
105
106
};
Dec 6, 2013
Dec 6, 2013
107
108
109
110
111
enum {
// Must be after the highest bit used in QContactStatusFlags::Flag
HasValidOnlineAccount = (QContactStatusFlags::IsOnline << 1)
};
Jul 16, 2013
Jul 16, 2013
112
113
114
115
116
117
struct ItemData
{
virtual ~ItemData() {}
virtual void displayLabelOrderChanged(DisplayLabelOrder order) = 0;
Aug 5, 2013
Aug 5, 2013
118
virtual void updateContact(const QContact &newContact, QContact *oldContact, ContactState state) = 0;
Jul 16, 2013
Jul 16, 2013
119
120
121
122
123
124
125
126
virtual void constituentsFetched(const QList<int> &ids) = 0;
virtual void mergeCandidatesFetched(const QList<int> &ids) = 0;
virtual void aggregationOperationCompleted() = 0;
virtual QList<int> constituents() const = 0;
};
Aug 9, 2013
Aug 9, 2013
127
128
struct CacheItem;
struct ItemListener
Jul 16, 2013
Jul 16, 2013
129
{
Aug 9, 2013
Aug 9, 2013
130
131
ItemListener() : next(0), key(0) {}
virtual ~ItemListener() {}
Jul 16, 2013
Jul 16, 2013
132
Aug 9, 2013
Aug 9, 2013
133
134
135
136
137
virtual void itemUpdated(CacheItem *item) = 0;
virtual void itemAboutToBeRemoved(CacheItem *item) = 0;
ItemListener *next;
void *key;
Jul 16, 2013
Jul 16, 2013
138
139
140
141
};
struct CacheItem
{
Aug 9, 2013
Aug 9, 2013
142
CacheItem() : itemData(0), iid(0), contactState(ContactAbsent), listeners(0) {}
Jul 30, 2013
Jul 30, 2013
143
CacheItem(const QContact &contact)
Aug 9, 2013
Aug 9, 2013
144
145
: contact(contact), itemData(0), iid(internalId(contact)),
statusFlags(contact.detail<QContactStatusFlags>().flagsValue()), contactState(ContactAbsent), listeners(0) {}
Jul 16, 2013
Jul 16, 2013
146
Jan 28, 2014
Jan 28, 2014
147
QContactId apiId() const { return SeasideCache::apiId(contact); }
Jul 16, 2013
Jul 16, 2013
148
Aug 9, 2013
Aug 9, 2013
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
ItemListener *appendListener(ItemListener *listener, void *key)
{
if (listeners) {
ItemListener *existing(listeners);
while (existing->next) {
existing = existing->next;
}
existing->next = listener;
} else {
listeners = listener;
}
listener->next = 0;
listener->key = key;
return listener;
}
Aug 13, 2013
Aug 13, 2013
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
bool removeListener(ItemListener *listener)
{
if (listeners) {
ItemListener *existing(listeners);
ItemListener **previous = &listeners;
while (existing) {
if (existing == listener) {
*previous = listener->next;
return true;
}
previous = &existing->next;
existing = existing->next;
}
}
return false;
}
Aug 9, 2013
Aug 9, 2013
185
186
ItemListener *listener(void *key)
{
Aug 13, 2013
Aug 13, 2013
187
188
189
ItemListener *existing(listeners);
while (existing && (existing->key != key) && (existing->next)) {
existing = existing->next;
Aug 9, 2013
Aug 9, 2013
190
}
Aug 13, 2013
Aug 13, 2013
191
return (existing && (existing->key == key)) ? existing : 0;
Aug 9, 2013
Aug 9, 2013
192
193
}
Jul 16, 2013
Jul 16, 2013
194
195
QContact contact;
ItemData *itemData;
Jul 29, 2013
Jul 29, 2013
196
quint32 iid;
Jul 30, 2013
Jul 30, 2013
197
quint64 statusFlags;
Jul 16, 2013
Jul 16, 2013
198
ContactState contactState;
Aug 9, 2013
Aug 9, 2013
199
ItemListener *listeners;
Sep 6, 2013
Sep 6, 2013
200
QString nameGroup;
Aug 19, 2013
Aug 19, 2013
201
QString displayLabel;
Jul 16, 2013
Jul 16, 2013
202
203
204
205
};
struct ContactLinkRequest
{
Jan 28, 2014
Jan 28, 2014
206
ContactLinkRequest(const QContactId &id) : contactId(id), constituentsFetched(false) {}
Jul 16, 2013
Jul 16, 2013
207
208
ContactLinkRequest(const ContactLinkRequest &req) : contactId(req.contactId), constituentsFetched(req.constituentsFetched) {}
Jan 28, 2014
Jan 28, 2014
209
QContactId contactId;
Jul 16, 2013
Jul 16, 2013
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
bool constituentsFetched;
};
class ListModel : public QAbstractListModel
{
public:
ListModel(QObject *parent = 0) : QAbstractListModel(parent) {}
virtual ~ListModel() {}
virtual void sourceAboutToRemoveItems(int begin, int end) = 0;
virtual void sourceItemsRemoved() = 0;
virtual void sourceAboutToInsertItems(int begin, int end) = 0;
virtual void sourceItemsInserted(int begin, int end) = 0;
virtual void sourceDataChanged(int begin, int end) = 0;
Aug 16, 2013
Aug 16, 2013
227
228
virtual void sourceItemsChanged() = 0;
Jul 16, 2013
Jul 16, 2013
229
230
virtual void makePopulated() = 0;
virtual void updateDisplayLabelOrder() = 0;
Aug 29, 2013
Aug 29, 2013
231
virtual void updateSortProperty() = 0;
Aug 30, 2013
Aug 30, 2013
232
virtual void updateGroupProperty() = 0;
Jul 16, 2013
Jul 16, 2013
233
234
};
Aug 5, 2013
Aug 5, 2013
235
236
237
238
struct ResolveListener
{
virtual ~ResolveListener() {}
Aug 6, 2013
Aug 6, 2013
239
240
241
242
243
244
245
246
247
virtual void addressResolved(const QString &first, const QString &second, CacheItem *item) = 0;
};
struct ChangeListener
{
virtual ~ChangeListener() {}
virtual void itemUpdated(CacheItem *item) = 0;
virtual void itemAboutToBeRemoved(CacheItem *item) = 0;
Aug 5, 2013
Aug 5, 2013
248
249
};
Jul 16, 2013
Jul 16, 2013
250
static SeasideCache *instance();
Oct 21, 2013
Oct 21, 2013
251
static QContactManager *manager();
Jul 16, 2013
Jul 16, 2013
252
Jan 28, 2014
Jan 28, 2014
253
254
static QContactId apiId(const QContact &contact);
static QContactId apiId(quint32 iid);
Jul 16, 2013
Jul 16, 2013
255
Jan 28, 2014
Jan 28, 2014
256
static bool validId(const QContactId &id);
Jul 16, 2013
Jul 16, 2013
257
258
259
260
static quint32 internalId(const QContact &contact);
static quint32 internalId(const QContactId &id);
Jan 9, 2014
Jan 9, 2014
261
static void registerModel(ListModel *model, FilterType type, FetchDataType requiredTypes = FetchNone, FetchDataType extraTypes = FetchNone);
Jul 16, 2013
Jul 16, 2013
262
263
264
265
266
267
268
269
static void unregisterModel(ListModel *model);
static void registerUser(QObject *user);
static void unregisterUser(QObject *user);
static void registerNameGroupChangeListener(SeasideNameGroupChangeListener *listener);
static void unregisterNameGroupChangeListener(SeasideNameGroupChangeListener *listener);
Aug 6, 2013
Aug 6, 2013
270
271
272
273
274
static void registerChangeListener(ChangeListener *listener);
static void unregisterChangeListener(ChangeListener *listener);
static void unregisterResolveListener(ResolveListener *listener);
Aug 7, 2013
Aug 7, 2013
275
276
static void setNameGrouper(SeasideNameGrouper *grouper);
Jul 16, 2013
Jul 16, 2013
277
static DisplayLabelOrder displayLabelOrder();
Aug 29, 2013
Aug 29, 2013
278
static QString sortProperty();
Aug 30, 2013
Aug 30, 2013
279
static QString groupProperty();
Jul 16, 2013
Jul 16, 2013
280
281
282
static int contactId(const QContact &contact);
Jan 28, 2014
Jan 28, 2014
283
static CacheItem *existingItem(const QContactId &id);
Jul 29, 2013
Jul 29, 2013
284
static CacheItem *existingItem(quint32 iid);
Jan 28, 2014
Jan 28, 2014
285
static CacheItem *itemById(const QContactId &id, bool requireComplete = true);
Aug 5, 2013
Aug 5, 2013
286
static CacheItem *itemById(int id, bool requireComplete = true);
Jan 28, 2014
Jan 28, 2014
287
288
static QContactId selfContactId();
static QContact contactById(const QContactId &id);
Aug 5, 2013
Aug 5, 2013
289
290
static void ensureCompletion(CacheItem *cacheItem);
Aug 19, 2013
Aug 19, 2013
291
static void refreshContact(CacheItem *cacheItem);
Aug 5, 2013
Aug 5, 2013
292
Sep 6, 2013
Sep 6, 2013
293
294
static QString nameGroup(const CacheItem *cacheItem);
static QString determineNameGroup(const CacheItem *cacheItem);
Aug 16, 2013
Aug 16, 2013
295
Sep 6, 2013
Sep 6, 2013
296
297
static QStringList allNameGroups();
static QHash<QString, QSet<quint32> > nameGroupMembers();
Jul 16, 2013
Jul 16, 2013
298
Aug 5, 2013
Aug 5, 2013
299
300
301
302
303
304
305
306
static CacheItem *itemByPhoneNumber(const QString &number, bool requireComplete = true);
static CacheItem *itemByEmailAddress(const QString &address, bool requireComplete = true);
static CacheItem *itemByOnlineAccount(const QString &localUid, const QString &remoteUid, bool requireComplete = true);
static CacheItem *resolvePhoneNumber(ResolveListener *listener, const QString &number, bool requireComplete = true);
static CacheItem *resolveEmailAddress(ResolveListener *listener, const QString &address, bool requireComplete = true);
static CacheItem *resolveOnlineAccount(ResolveListener *listener, const QString &localUid, const QString &remoteUid, bool requireComplete = true);
Jul 16, 2013
Jul 16, 2013
307
static bool saveContact(const QContact &contact);
Jul 19, 2013
Jul 19, 2013
308
static bool removeContact(const QContact &contact);
Jul 16, 2013
Jul 16, 2013
309
310
311
312
static void aggregateContacts(const QContact &contact1, const QContact &contact2);
static void disaggregateContacts(const QContact &contact1, const QContact &contact2);
Jul 19, 2013
Jul 19, 2013
313
314
static bool fetchConstituents(const QContact &contact);
static bool fetchMergeCandidates(const QContact &contact);
Jul 16, 2013
Jul 16, 2013
315
316
317
318
static int importContacts(const QString &path);
static QString exportContacts();
Sep 20, 2013
Sep 20, 2013
319
static const QList<quint32> *contacts(FilterType filterType);
Jul 16, 2013
Jul 16, 2013
320
321
322
323
static bool isPopulated(FilterType filterType);
static QString generateDisplayLabel(const QContact &contact, DisplayLabelOrder order = FirstNameFirst);
static QString generateDisplayLabelFromNonNameDetails(const QContact &contact);
Sep 19, 2013
Sep 19, 2013
324
static QUrl filteredAvatarUrl(const QContact &contact, const QStringList &metadataFragments = QStringList());
Jul 16, 2013
Jul 16, 2013
325
Feb 10, 2014
Feb 10, 2014
326
327
static QString normalizePhoneNumber(const QString &input, bool validate = false);
static QString minimizePhoneNumber(const QString &input, bool validate = false);
Aug 20, 2013
Aug 20, 2013
328
Jul 16, 2013
Jul 16, 2013
329
330
331
bool event(QEvent *event);
// For synchronizeLists()
Sep 20, 2013
Sep 20, 2013
332
int insertRange(int index, int count, const QList<quint32> &source, int sourceIndex) { return insertRange(m_syncFilter, index, count, source, sourceIndex); }
Aug 5, 2013
Aug 5, 2013
333
int removeRange(int index, int count) { removeRange(m_syncFilter, index, count); return 0; }
Jul 16, 2013
Jul 16, 2013
334
335
336
protected:
void timerEvent(QTimerEvent *event);
Aug 29, 2013
Aug 29, 2013
337
void setSortOrder(const QString &property);
Jan 9, 2014
Jan 9, 2014
338
void startRequest(bool *idleProcessing);
Jul 16, 2013
Jul 16, 2013
339
340
341
342
343
344
private slots:
void contactsAvailable();
void contactIdsAvailable();
void relationshipsAvailable();
void requestStateChanged(QContactAbstractRequest::State state);
Oct 17, 2014
Oct 17, 2014
345
void addressRequestStateChanged(QContactAbstractRequest::State state);
Jul 16, 2013
Jul 16, 2013
346
347
348
void updateContacts();
void contactsAdded(const QList<QContactId> &contactIds);
void contactsChanged(const QList<QContactId> &contactIds);
Dec 10, 2013
Dec 10, 2013
349
void contactsPresenceChanged(const QList<QContactId> &contactIds);
Jul 16, 2013
Jul 16, 2013
350
void contactsRemoved(const QList<QContactId> &contactIds);
May 27, 2014
May 27, 2014
351
352
353
void displayLabelOrderChanged(CacheConfiguration::DisplayLabelOrder order);
void sortPropertyChanged(const QString &sortProperty);
void groupPropertyChanged(const QString &groupProperty);
Dec 10, 2013
Dec 10, 2013
354
void displayStatusChanged(const QString &);
Jul 16, 2013
Jul 16, 2013
355
356
private:
Aug 5, 2013
Aug 5, 2013
357
358
359
360
361
enum PopulateProgress {
Unpopulated,
FetchFavorites,
FetchMetadata,
FetchOnline,
Jan 9, 2014
Jan 9, 2014
362
Populated
Aug 5, 2013
Aug 5, 2013
363
364
};
Jul 16, 2013
Jul 16, 2013
365
366
367
368
369
SeasideCache();
~SeasideCache();
static void checkForExpiry();
Jan 9, 2014
Jan 9, 2014
370
void keepPopulated(quint32 requiredTypes, quint32 extraTypes);
Jul 16, 2013
Jul 16, 2013
371
372
void requestUpdate();
Jan 28, 2014
Jan 28, 2014
373
void appendContacts(const QList<QContact> &contacts, FilterType filterType, bool partialFetch, const QSet<QContactDetail::DetailType> &queryDetailTypes);
Jul 16, 2013
Jul 16, 2013
374
void fetchContacts();
Jan 28, 2014
Jan 28, 2014
375
void updateContacts(const QList<QContactId> &contactIds, QList<QContactId> *updateList);
Dec 9, 2013
Dec 9, 2013
376
void applyPendingContactUpdates();
Oct 17, 2014
Oct 17, 2014
377
void applyContactUpdates(const QList<QContact> &contacts, const QSet<QContactDetail::DetailType> &queryDetailTypes);
Jul 16, 2013
Jul 16, 2013
378
Aug 30, 2013
Aug 30, 2013
379
void resolveUnknownAddresses(const QString &first, const QString &second, CacheItem *item);
Jan 28, 2014
Jan 28, 2014
380
bool updateContactIndexing(const QContact &oldContact, const QContact &contact, quint32 iid, const QSet<QContactDetail::DetailType> &queryDetailTypes, CacheItem *item);
Dec 9, 2013
Dec 9, 2013
381
void updateCache(CacheItem *item, const QContact &contact, bool partialFetch, bool initialInsert);
Aug 29, 2013
Aug 29, 2013
382
void reportItemUpdated(CacheItem *item);
Aug 5, 2013
Aug 5, 2013
383
Jul 16, 2013
Jul 16, 2013
384
void removeRange(FilterType filter, int index, int count);
Sep 20, 2013
Sep 20, 2013
385
int insertRange(FilterType filter, int index, int count, const QList<quint32> &queryIds, int queryIndex);
Jul 16, 2013
Jul 16, 2013
386
Sep 20, 2013
Sep 20, 2013
387
388
389
void contactDataChanged(quint32 iid);
void contactDataChanged(quint32 iid, FilterType filter);
void removeContactData(quint32 iid, FilterType filter);
Jul 16, 2013
Jul 16, 2013
390
391
void makePopulated(FilterType filter);
Sep 6, 2013
Sep 6, 2013
392
393
394
void addToContactNameGroup(quint32 iid, const QString &group, QSet<QString> *modifiedGroups = 0);
void removeFromContactNameGroup(quint32 iid, const QString &group, QSet<QString> *modifiedGroups = 0);
void notifyNameGroupsChanged(const QSet<QString> &groups);
Jul 16, 2013
Jul 16, 2013
395
Jan 28, 2014
Jan 28, 2014
396
397
void updateConstituentAggregations(const QContactId &contactId);
void completeContactAggregation(const QContactId &contact1Id, const QContactId &contact2Id);
Jul 16, 2013
Jul 16, 2013
398
Aug 5, 2013
Aug 5, 2013
399
400
void resolveAddress(ResolveListener *listener, const QString &first, const QString &second, bool requireComplete);
Oct 24, 2013
Oct 24, 2013
401
402
CacheItem *itemMatchingPhoneNumber(const QString &number, const QString &normalized, bool requireComplete);
Sep 20, 2013
Sep 20, 2013
403
404
int contactIndex(quint32 iid, FilterType filter);
Jul 31, 2014
Jul 31, 2014
405
static QContactRelationship makeRelationship(const QString &type, const QContactId &id1, const QContactId &id2);
Jul 16, 2013
Jul 16, 2013
406
407
static QContactRelationship makeRelationship(const QString &type, const QContact &contact1, const QContact &contact2);
Sep 20, 2013
Sep 20, 2013
408
409
QList<quint32> m_contacts[FilterTypesCount];
Jul 16, 2013
Jul 16, 2013
410
411
412
QBasicTimer m_expiryTimer;
QBasicTimer m_fetchTimer;
QHash<quint32, CacheItem> m_people;
Oct 24, 2013
Oct 24, 2013
413
QMultiHash<QString, quint32> m_phoneNumberIds;
Jul 16, 2013
Jul 16, 2013
414
QHash<QString, quint32> m_emailAddressIds;
Aug 5, 2013
Aug 5, 2013
415
QHash<QPair<QString, QString>, quint32> m_onlineAccountIds;
Jan 28, 2014
Jan 28, 2014
416
QHash<QContactId, QContact> m_contactsToSave;
Sep 6, 2013
Sep 6, 2013
417
QHash<QString, QSet<quint32> > m_contactNameGroups;
Jul 16, 2013
Jul 16, 2013
418
QList<QContact> m_contactsToCreate;
Jan 28, 2014
Jan 28, 2014
419
420
421
422
423
424
QHash<FilterType, QPair<QSet<QContactDetail::DetailType>, QList<QContact> > > m_contactsToAppend;
QList<QPair<QSet<QContactDetail::DetailType>, QList<QContact> > > m_contactsToUpdate;
QList<QContactId> m_contactsToRemove;
QList<QContactId> m_changedContacts;
QList<QContactId> m_presenceChangedContacts;
QSet<QContactId> m_aggregatedContacts;
Jul 16, 2013
Jul 16, 2013
425
426
QList<QContactId> m_contactsToFetchConstituents;
QList<QContactId> m_contactsToFetchCandidates;
Sep 9, 2013
Sep 9, 2013
427
QList<QContactId> m_contactsToLinkTo;
Jul 16, 2013
Jul 16, 2013
428
429
430
QList<QPair<ContactLinkRequest, ContactLinkRequest> > m_contactPairsToLink;
QList<QContactRelationship> m_relationshipsToSave;
QList<QContactRelationship> m_relationshipsToRemove;
Aug 7, 2013
Aug 7, 2013
431
QScopedPointer<SeasideNameGrouper> m_nameGrouper;
Jul 16, 2013
Jul 16, 2013
432
QList<SeasideNameGroupChangeListener*> m_nameGroupChangeListeners;
Aug 6, 2013
Aug 6, 2013
433
QList<ChangeListener*> m_changeListeners;
Jul 16, 2013
Jul 16, 2013
434
435
QList<ListModel *> m_models[FilterTypesCount];
QSet<QObject *> m_users;
Jan 28, 2014
Jan 28, 2014
436
QHash<QContactId,int> m_expiredContacts;
Jul 16, 2013
Jul 16, 2013
437
438
439
440
441
442
443
444
QContactFetchRequest m_fetchRequest;
QContactFetchByIdRequest m_fetchByIdRequest;
QContactIdFetchRequest m_contactIdRequest;
QContactRelationshipFetchRequest m_relationshipsFetchRequest;
QContactRemoveRequest m_removeRequest;
QContactSaveRequest m_saveRequest;
QContactRelationshipSaveRequest m_relationshipSaveRequest;
QContactRelationshipRemoveRequest m_relationshipRemoveRequest;
Aug 22, 2013
Aug 22, 2013
445
446
QList<QContactSortOrder> m_sortOrder;
QList<QContactSortOrder> m_onlineSortOrder;
Oct 21, 2013
Oct 21, 2013
447
FilterType m_syncFilter;
Jul 16, 2013
Jul 16, 2013
448
449
450
int m_populated;
int m_cacheIndex;
int m_queryIndex;
Sep 19, 2013
Sep 19, 2013
451
452
int m_fetchProcessedCount;
int m_fetchByIdProcessedCount;
Jul 16, 2013
Jul 16, 2013
453
DisplayLabelOrder m_displayLabelOrder;
Aug 29, 2013
Aug 29, 2013
454
QString m_sortProperty;
Aug 30, 2013
Aug 30, 2013
455
QString m_groupProperty;
Jul 16, 2013
Jul 16, 2013
456
bool m_keepPopulated;
Aug 5, 2013
Aug 5, 2013
457
PopulateProgress m_populateProgress;
Oct 15, 2014
Oct 15, 2014
458
bool m_populating; // true if current m_fetchRequest makes progress
Aug 5, 2013
Aug 5, 2013
459
quint32 m_fetchTypes;
Jan 9, 2014
Jan 9, 2014
460
461
quint32 m_extraFetchTypes;
quint32 m_dataTypesFetched;
Jul 16, 2013
Jul 16, 2013
462
463
464
bool m_updatesPending;
bool m_refreshRequired;
bool m_contactsUpdated;
Dec 10, 2013
Dec 10, 2013
465
bool m_displayOff;
Jan 28, 2014
Jan 28, 2014
466
467
QSet<QContactId> m_constituentIds;
QSet<QContactId> m_candidateIds;
Jul 16, 2013
Jul 16, 2013
468
Aug 5, 2013
Aug 5, 2013
469
470
471
struct ResolveData {
QString first;
QString second;
Aug 30, 2013
Aug 30, 2013
472
QString compare;
Aug 5, 2013
Aug 5, 2013
473
474
bool requireComplete;
ResolveListener *listener;
Oct 17, 2014
Oct 17, 2014
475
QContactFetchRequest *fetchRequest;
Aug 5, 2013
Aug 5, 2013
476
477
};
QList<ResolveData> m_resolveAddresses;
Dec 11, 2013
Dec 11, 2013
478
QList<ResolveData> m_unknownResolveAddresses;
Aug 30, 2013
Aug 30, 2013
479
QList<ResolveData> m_unknownAddresses;
Oct 24, 2013
Oct 24, 2013
480
QSet<QString> m_resolvedPhoneNumbers;
Aug 5, 2013
Aug 5, 2013
481
Jul 16, 2013
Jul 16, 2013
482
483
484
485
QElapsedTimer m_timer;
QElapsedTimer m_fetchPostponed;
static SeasideCache *instancePtr;
Jan 15, 2014
Jan 15, 2014
486
static int contactNameGroupCount;
Sep 6, 2013
Sep 6, 2013
487
static QStringList allContactNameGroups;
Jul 16, 2013
Jul 16, 2013
488
489
490
};
#endif