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 
33 namespace Buteo {
34 
35 class ProfileManagerPrivate;
36 
45 class ProfileManager: public QObject
46 {
47  Q_OBJECT
48 public:
50  struct SearchCriteria {
52  enum Type {
55 
58 
61 
63  NOT_EQUAL
64  };
65 
68 
70  SearchCriteria(const SearchCriteria &aSource);
71 
74 
79  QString iSubProfileName;
80 
84  QString iSubProfileType;
85 
87  QString iKey;
88 
90  QString iValue;
91  };
92 
103  };
104 
113  ProfileManager(const QString &aPrimaryPath = QString(),
114  const QString &aSecondaryPath = QString());
115 
118  ~ProfileManager();
119 
125  QStringList profileNames(const QString &aType);
126 
138  SyncProfile *syncProfile(const QString &aName);
139 
146 
155 
171  QList<SyncProfile *> getSyncProfilesByData(const QString &aSubProfileName,
172  const QString &aSubProfileType,
173  const QString &aKey = "", const QString &aValue = "");
174 
183  const QList<SearchCriteria> &aCriteria);
184 
197  const QString &aStorageName, bool aStorageMustBeEnabled = false);
198 
208  const QString &aStorageName);
209 
216  void expand(Profile &aProfile);
217 
223  bool saveLog(const SyncLog &aLog);
224 
234  bool saveSyncResults(QString aProfileName, const SyncResults &aResults);
235 
245  Profile *profile(const QString &aName, const QString &aType);
246 
255  Profile *profileFromXml(const QString &aProfileAsXml);
256 
265  SyncProfile *createTempSyncProfile (const QString &btAddress, bool &saveNewProfile);
266 
276  QString updateProfile(const Profile &aProfile);
277 
286  bool removeProfile(const QString &aProfileId);
287 
294  bool rename(const QString &aName, const QString &aNewName);
295 
304  void enableStorages (Profile &aProfile, QMap<QString, bool> &aStorageMap, bool *aModified = NULL);
305 
314  void setStoragesVisible(Profile &aProfile, QMap<QString, bool> &aStorageMap, bool *aModified = NULL);
315 
322  void saveRemoteTargetId (Profile &aProfile, const QString &aId);
323 
330  bool setSyncSchedule(QString aProfileId, QString aScheduleAsXml);
331 
336  void addRetriesInfo(const SyncProfile *aProfile);
337 
343  QDateTime getNextRetryInterval(const SyncProfile *aProfile);
344 
350  void retriesDone(const QString &aProfileName);
351 
352 #ifdef SYNCFW_UNIT_TESTS
353  friend class ProfileManagerTest;
354 #endif
355 
356 signals:
357 
367  void signalProfileChanged(QString aProfileName, int aChangeType, QString aProfileAsXml);
368 
369 private:
370 
371  ProfileManager &operator=(const ProfileManager &aRhs);
372 
373  ProfileManagerPrivate *d_ptr;
374 
375  QHash<QString, QList<quint32> > iSyncRetriesInfo;
376 };
377 
378 }
379 
380 #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:399
void enableStorages(Profile &aProfile, QMap< QString, bool > &aStorageMap, bool *aModified=NULL)
Enables sync'd storages in profile.
Definition: ProfileManager.cpp:739
void expand(Profile &aProfile)
Expands the given profile.
Definition: ProfileManager.cpp:840
bool saveLog(const SyncLog &aLog)
Saves the given synchronization log.
Definition: ProfileManager.cpp:879
QList< SyncProfile * > getSOCProfilesForStorage(const QString &aStorageName)
Gets profiles interested in sync on change for a storage.
Definition: ProfileManager.cpp:500
Profile * profileFromXml(const QString &aProfileAsXml)
Gets a profile object from an xml document.
Definition: ProfileManager.cpp:644
QList< SyncProfile * > allSyncProfiles()
Gets all sync profiles.
Definition: ProfileManager.cpp:382
QList< SyncProfile * > getSyncProfilesByStorage(const QString &aStorageName, bool aStorageMustBeEnabled=false)
Gets profiles based on supported storages.
Definition: ProfileManager.cpp:553
bool saveSyncResults(QString aProfileName, const SyncResults &aResults)
Saves the results of a sync session to the log.
Definition: ProfileManager.cpp:958
QString updateProfile(const Profile &aProfile)
Updates the existing profile with the profile given as parameter and emits profileChanged() Signal wi...
Definition: ProfileManager.cpp:662
~ProfileManager()
Destructor.
Definition: ProfileManager.cpp:304
SyncProfile * syncProfile(const QString &aName)
Gets a sync profile.
Definition: ProfileManager.cpp:317
Profile * profile(const QString &aName, const QString &aType)
Gets a profile.
Definition: ProfileManager.cpp:311
bool rename(const QString &aName, const QString &aNewName)
Renames a profile, and the associated log too.
Definition: ProfileManager.cpp:929
void setStoragesVisible(Profile &aProfile, QMap< QString, bool > &aStorageMap, bool *aModified=NULL)
Sets storage subprofiles hidden status for the given profile.
Definition: ProfileManager.cpp:764
SyncProfile * createTempSyncProfile(const QString &btAddress, bool &saveNewProfile)
Gets a temporary profile (saved if sync is sucessfull).
Definition: ProfileManager.cpp:695
bool removeProfile(const QString &aProfileId)
Deletes a profile from the persistent storage.
Definition: ProfileManager.cpp:791
QStringList profileNames(const QString &aType)
Gets the names of all available profiles with the given type.
Definition: ProfileManager.cpp:350
QList< SyncProfile * > getSyncProfilesByData(const QString &aSubProfileName, const QString &aSubProfileType, const QString &aKey="", const QString &aValue="")
Gets profiles with matching data.
Definition: ProfileManager.cpp:416
ProfileManager(const QString &aPrimaryPath=QString(), const QString &aSecondaryPath=QString())
Constructor.
Definition: ProfileManager.cpp:296
QDateTime getNextRetryInterval(const SyncProfile *aProfile)
gets the next retry after time for a sync profile
Definition: ProfileManager.cpp:1138
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:1153
bool setSyncSchedule(QString aProfileId, QString aScheduleAsXml)
Sets/Overwrites the schedule to a profile.
Definition: ProfileManager.cpp:982
void addRetriesInfo(const SyncProfile *aProfile)
checks if a profile has retries info and stores the same
Definition: ProfileManager.cpp:1127
void saveRemoteTargetId(Profile &aProfile, const QString &aId)
Sets remote target in profile.
Definition: ProfileManager.cpp:918
ProfileChangeType
Enum to indicate the change type of the Profile Operation.
Definition: ProfileManager.h:94
@ PROFILE_LOGS_MODIFIED
Profile log file Modified.
Definition: ProfileManager.h:102
@ PROFILE_MODIFIED
a Existing Profile has been modified
Definition: ProfileManager.h:98
@ PROFILE_ADDED
a New Profile has been added
Definition: ProfileManager.h:96
@ PROFILE_REMOVED
Profile has been Removed.
Definition: ProfileManager.h:100
void signalProfileChanged(QString aProfileName, int aChangeType, QString aProfileAsXml)
Notifies about a change in profile.
Definition: moc_ProfileManager.cpp:132
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:49
Contains information about a completed synchronization session.
Definition: SyncResults.h:59
Definition: SyncBackupAdaptor.h:40
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:90
QString iKey
Key name. If this is empty, key comparison is not made.
Definition: ProfileManager.h:87
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:60
@ NOT_EXISTS
Sub-profile (or key) does not exist.
Definition: ProfileManager.h:57
@ NOT_EQUAL
Key value is not equal.
Definition: ProfileManager.h:63
QString iSubProfileName
Definition: ProfileManager.h:79
SearchCriteria()
Constructor.
Definition: ProfileManager.cpp:282
Type iType
Search criteria type.
Definition: ProfileManager.h:73
QString iSubProfileType
Definition: ProfileManager.h:84