Buteo Synchronization Framework
ProfileManager.h
1/*
2 * This file is part of buteo-syncfw package
3 *
4 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5 *
6 * Contact: Sateesh Kavuri <sateesh.kavuri@nokia.com>
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public License
10 * version 2.1 as published by the Free Software Foundation.
11 *
12 * This library is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA
21 *
22 */
23
24#ifndef PROFILEMANAGER_H
25#define PROFILEMANAGER_H
26
27#include "SyncProfile.h"
28#include "Profile.h"
29#include <QObject>
30#include <QList>
31#include <QHash>
32
33namespace Buteo {
34
35class ProfileManagerPrivate;
36
45class ProfileManager: public QObject
46{
47 Q_OBJECT
48public:
62
65
67 SearchCriteria(const SearchCriteria &aSource);
68
71
77
82
84 QString iKey;
85
87 QString iValue;
88 };
89
101
105
109
115 QStringList profileNames(const QString &aType);
116
128 SyncProfile *syncProfile(const QString &aName);
129
136
145
161 QList<SyncProfile *> getSyncProfilesByData(const QString &aSubProfileName,
162 const QString &aSubProfileType,
163 const QString &aKey = "", const QString &aValue = "");
164
173 const QList<SearchCriteria> &aCriteria);
174
187 const QString &aStorageName, bool aStorageMustBeEnabled = false);
188
198 const QString &aStorageName);
199
206 void expand(Profile &aProfile);
207
213 bool saveLog(const SyncLog &aLog);
214
224 bool saveSyncResults(QString aProfileName, const SyncResults &aResults);
225
235 Profile *profile(const QString &aName, const QString &aType);
236
245 Profile *profileFromXml(const QString &aProfileAsXml);
246
255 SyncProfile *createTempSyncProfile (const QString &btAddress, bool &saveNewProfile);
256
266 QString updateProfile(const Profile &aProfile);
267
276 bool removeProfile(const QString &aProfileId);
277
284 bool rename(const QString &aName, const QString &aNewName);
285
294 void enableStorages (Profile &aProfile, QMap<QString, bool> &aStorageMap, bool *aModified = NULL);
295
304 void setStoragesVisible(Profile &aProfile, QMap<QString, bool> &aStorageMap, bool *aModified = NULL);
305
312 void saveRemoteTargetId (Profile &aProfile, const QString &aId);
313
320 bool setSyncSchedule(QString aProfileId, QString aScheduleAsXml);
321
326 void addRetriesInfo(const SyncProfile *aProfile);
327
333 QDateTime getNextRetryInterval(const SyncProfile *aProfile);
334
340 void retriesDone(const QString &aProfileName);
341
342#ifdef SYNCFW_UNIT_TESTS
343 friend class ProfileManagerTest;
344#endif
345 // for testing purposes only
346 // configPath is the root of primary profile directory, used for writing changes
347 // systemConfigPath is for read-only system profiles
348 void setPaths(const QString &configPath, const QString &systemConfigPath);
349
350signals:
359 void signalProfileChanged(QString aProfileName, int aChangeType, QString aProfileAsXml);
360
361private:
362 ProfileManager &operator=(const ProfileManager &aRhs);
363 ProfileManagerPrivate *d_ptr;
364};
365
366}
367
368#endif // PROFILEMANAGER_H
ProfileManager is responsible for storing and retrieving the profiles.
Definition ProfileManager.h:46
QList< SyncProfile * > allVisibleSyncProfiles()
Gets all visible sync profiles.
Definition ProfileManager.cpp:396
void enableStorages(Profile &aProfile, QMap< QString, bool > &aStorageMap, bool *aModified=NULL)
Enables sync'd storages in profile.
Definition ProfileManager.cpp:736
void expand(Profile &aProfile)
Expands the given profile.
Definition ProfileManager.cpp:837
bool saveLog(const SyncLog &aLog)
Saves the given synchronization log.
Definition ProfileManager.cpp:876
QList< SyncProfile * > getSOCProfilesForStorage(const QString &aStorageName)
Gets profiles interested in sync on change for a storage.
Definition ProfileManager.cpp:497
Profile * profileFromXml(const QString &aProfileAsXml)
Gets a profile object from an xml document.
Definition ProfileManager.cpp:641
QList< SyncProfile * > allSyncProfiles()
Gets all sync profiles.
Definition ProfileManager.cpp:379
QList< SyncProfile * > getSyncProfilesByStorage(const QString &aStorageName, bool aStorageMustBeEnabled=false)
Gets profiles based on supported storages.
Definition ProfileManager.cpp:550
bool saveSyncResults(QString aProfileName, const SyncResults &aResults)
Saves the results of a sync session to the log.
Definition ProfileManager.cpp:955
QString updateProfile(const Profile &aProfile)
Updates the existing profile with the profile given as parameter and emits profileChanged() Signal wi...
Definition ProfileManager.cpp:659
~ProfileManager()
Destructor.
Definition ProfileManager.cpp:286
SyncProfile * syncProfile(const QString &aName)
Gets a sync profile.
Definition ProfileManager.cpp:315
Profile * profile(const QString &aName, const QString &aType)
Gets a profile.
Definition ProfileManager.cpp:310
bool rename(const QString &aName, const QString &aNewName)
Renames a profile, and the associated log too.
Definition ProfileManager.cpp:926
void setStoragesVisible(Profile &aProfile, QMap< QString, bool > &aStorageMap, bool *aModified=NULL)
Sets storage subprofiles hidden status for the given profile.
Definition ProfileManager.cpp:761
SyncProfile * createTempSyncProfile(const QString &btAddress, bool &saveNewProfile)
Gets a temporary profile (saved if sync is sucessfull).
Definition ProfileManager.cpp:692
bool removeProfile(const QString &aProfileId)
Deletes a profile from the persistent storage.
Definition ProfileManager.cpp:788
QStringList profileNames(const QString &aType)
Gets the names of all available profiles with the given type.
Definition ProfileManager.cpp:348
QList< SyncProfile * > getSyncProfilesByData(const QString &aSubProfileName, const QString &aSubProfileType, const QString &aKey="", const QString &aValue="")
Gets profiles with matching data.
Definition ProfileManager.cpp:413
QDateTime getNextRetryInterval(const SyncProfile *aProfile)
gets the next retry after time for a sync profile
Definition ProfileManager.cpp:1131
void retriesDone(const QString &aProfileName)
call this to indicate that retries have to stop for a certain sync for a profile - either the no....
Definition ProfileManager.cpp:1146
bool setSyncSchedule(QString aProfileId, QString aScheduleAsXml)
Sets/Overwrites the schedule to a profile.
Definition ProfileManager.cpp:979
void addRetriesInfo(const SyncProfile *aProfile)
checks if a profile has retries info and stores the same
Definition ProfileManager.cpp:1120
void saveRemoteTargetId(Profile &aProfile, const QString &aId)
Sets remote target in profile.
Definition ProfileManager.cpp:915
ProfileChangeType
Enum to indicate the change type of the Profile Operation.
Definition ProfileManager.h:91
@ PROFILE_LOGS_MODIFIED
Profile log file Modified.
Definition ProfileManager.h:99
@ PROFILE_MODIFIED
a Existing Profile has been modified
Definition ProfileManager.h:95
@ PROFILE_ADDED
a New Profile has been added
Definition ProfileManager.h:93
@ PROFILE_REMOVED
Profile has been Removed.
Definition ProfileManager.h:97
void signalProfileChanged(QString aProfileName, int aChangeType, QString aProfileAsXml)
Notifies about a change in profile.
Definition moc_ProfileManager.cpp:172
ProfileManager()
Constructor.
Definition ProfileManager.cpp:280
This class represents a single profile, a collection of settings or data releated to some entity.
Definition Profile.h:53
History of completed synchronization sessions and their results.
Definition SyncLog.h:45
A top level synchronization profile.
Definition SyncProfile.h:54
Contains information about a completed synchronization session.
Definition SyncResults.h:62
Definition SyncBackupAdaptor.h:41
Search criteria for finding profiles.
Definition ProfileManager.h:50
QString iValue
Key value. This must be given if criteria type is EQUAL or NOT_EQUAL.
Definition ProfileManager.h:87
QString iKey
Key name. If this is empty, key comparison is not made.
Definition ProfileManager.h:84
Type
Enum to identify if a member type exists or not.
Definition ProfileManager.h:52
@ EXISTS
Sub-profile (and key) exists.
Definition ProfileManager.h:54
@ EQUAL
Key value is equal.
Definition ProfileManager.h:58
@ NOT_EXISTS
Sub-profile (or key) does not exist.
Definition ProfileManager.h:56
@ NOT_EQUAL
Key value is not equal.
Definition ProfileManager.h:60
QString iSubProfileName
Definition ProfileManager.h:76
SearchCriteria()
Constructor.
Definition ProfileManager.cpp:266
Type iType
Search criteria type.
Definition ProfileManager.h:70
QString iSubProfileType
Definition ProfileManager.h:81