williamr@2: /* williamr@2: * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: SyncML APIs for data synchronization client. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef __SYNCMLCLIENTDS_H__ williamr@2: #define __SYNCMLCLIENTDS_H__ williamr@2: // williamr@2: #include williamr@2: #include williamr@2: // williamr@2: class CClientSessionData; williamr@2: // williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLDataSyncJob williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLDataSyncJob : public RSyncMLJobBase williamr@2: /** williamr@2: Handle to a data synchronisation job. williamr@2: williamr@2: A job synchronises the data in one or more data stores, as defined by the list williamr@2: of tasks. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C RSyncMLDataSyncJob(); williamr@2: IMPORT_C void CreateL(RSyncMLSession&, TSmlProfileId); williamr@2: IMPORT_C void CreateL(RSyncMLSession&, TSmlProfileId, TSmlConnectionId); williamr@2: IMPORT_C void CreateL(RSyncMLSession&, TSmlProfileId, TSmlSyncType); williamr@2: IMPORT_C void CreateL(RSyncMLSession&, TSmlProfileId, TSmlConnectionId, TSmlSyncType); williamr@2: IMPORT_C void CreateL(RSyncMLSession&, TSmlProfileId, const RArray&); williamr@2: IMPORT_C void CreateL(RSyncMLSession&, TSmlProfileId, TSmlConnectionId, const RArray&); williamr@2: IMPORT_C void CreateL(RSyncMLSession&, TSmlProfileId, TSmlSyncType, const RArray&); williamr@2: IMPORT_C void CreateL(RSyncMLSession&, TSmlProfileId, TSmlConnectionId, TSmlSyncType, const RArray&); williamr@2: IMPORT_C void OpenL(RSyncMLSession&, TSmlJobId); williamr@2: IMPORT_C void StopL(); williamr@2: IMPORT_C const RArray& TaskIDs() const; williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLDataSyncProfile williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLDataSyncProfile : public RSyncMLProfileBase williamr@2: /** williamr@2: Handle to a SyncML Data Synchronisation profile. williamr@2: williamr@2: A profile encapsulates a relationship with a single SyncML remote server, williamr@2: and contains a number of 'tasks' and 'connections'. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C RSyncMLDataSyncProfile(); williamr@2: IMPORT_C void CreateL(RSyncMLSession&); williamr@2: IMPORT_C void OpenL(RSyncMLSession&, TSmlProfileId, TSmlOpenMode); williamr@2: williamr@2: IMPORT_C void SetCreatorId(TSmlCreatorId); williamr@2: IMPORT_C void SetDisplayNameL(const TDesC&); williamr@2: IMPORT_C void SetUserNameL(const TDesC8&); williamr@2: IMPORT_C void SetPasswordL(const TDesC8&); williamr@2: williamr@2: IMPORT_C void DeleteConnectionL(TSmlTransportId); williamr@2: williamr@2: IMPORT_C void ListTasksL(RArray&) const; williamr@2: IMPORT_C void DeleteTaskL(TSmlTaskId); williamr@2: williamr@2: IMPORT_C void UpdateL(); williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLTask williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLTask : public RSubSessionBase williamr@2: /** williamr@2: Represents a mapping between a local data store and a remote williamr@2: data store on a SyncML server in the context of a profile. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C RSyncMLTask(); williamr@2: IMPORT_C void CreateL(RSyncMLDataSyncProfile&, TSmlDataProviderId, williamr@2: const TDesC& aServerDataSource, const TDesC& aClientDataSource); williamr@2: IMPORT_C void CreateL(RSyncMLDataSyncProfile&, TSmlDataProviderId, williamr@2: const TDesC& aServerDataSource, const TDesC& aClientDataSource, RPointerArray& aArray); williamr@2: IMPORT_C void OpenL(RSyncMLDataSyncProfile&, TSmlTaskId); williamr@2: williamr@2: IMPORT_C TSmlTaskId Identifier() const; williamr@2: IMPORT_C TSmlProfileId Profile() const; williamr@2: IMPORT_C TSmlCreatorId CreatorId() const; williamr@2: IMPORT_C const TDesC& DisplayName() const; williamr@2: IMPORT_C const TDesC& ServerDataSource() const; williamr@2: IMPORT_C const TDesC& ClientDataSource() const; williamr@2: IMPORT_C TSmlDataProviderId DataProvider() const; williamr@2: IMPORT_C TSmlSyncType DefaultSyncType() const; williamr@2: williamr@2: //IMPORT_C TInt ServerFilterCount() const; williamr@2: //IMPORT_C const CSyncMLFilter& ServerFilterL(TInt aIndex) const; // Get the server filter at the specified index williamr@2: IMPORT_C TSyncMLFilterMatchType FilterMatchType() const; williamr@2: IMPORT_C TBool Enabled() const; williamr@2: williamr@2: IMPORT_C void SetCreatorId(TSmlCreatorId); williamr@2: IMPORT_C void SetDisplayNameL(const TDesC&); williamr@2: IMPORT_C void SetDefaultSyncTypeL(TSmlSyncType); williamr@2: //IMPORT_C void ReplaceServerFilterL(TInt aIndex, const CSyncMLFilter& aFilter); // Replaces the server filter at the specified index williamr@2: //IMPORT_C TInt AddServerFilterL(const CSyncMLFilter& aFilter); // Adds the server filter, returns the index at which it was added williamr@2: //IMPORT_C void DeleteServerFilterL(TInt aIndex); // Deletes the server filter at the specified index williamr@2: //IMPORT_C void DeleteAllServerFiltersL(); // Deletes all server filters williamr@2: //IMPORT_C void SetServerFilterEnabledL(TInt aIndex, TBool aEnable); // Changes the enabled flag for the server filter at the specified index williamr@2: IMPORT_C void SetFilterMatchTypeL(TSyncMLFilterMatchType) const; williamr@2: IMPORT_C void SetEnabledL(TBool); williamr@2: williamr@2: /* Return the set of filters that can be used to send to the SyncML server. This will only contain filters which are williamr@2: supported by the server, unless williamr@2: 1) no previous synchronisation with the server was done, or williamr@2: 2) the underlying Data Provider does not support this feature. In both cases the full list of filters supported by williamr@2: the Data Provider will be returned. */ williamr@2: IMPORT_C RPointerArray& SupportedServerFiltersL( TSyncMLFilterChangeInfo& aChangeInfo ) const; williamr@2: IMPORT_C TBool SupportsUserSelectableMatchType() const; williamr@2: williamr@2: IMPORT_C TBool IsReadOnly() const; williamr@2: IMPORT_C void UpdateL(); williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: private: williamr@2: mutable CClientSessionData* iData; williamr@2: private: williamr@2: // Prohibited. williamr@2: RSyncMLTask& operator=(const RSyncMLTask&); williamr@2: RSyncMLTask(const RSyncMLTask&); williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLDataProvider williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLDataProvider : public RSubSessionBase williamr@2: /** williamr@2: Handle to information about an available SyncML data provider. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C RSyncMLDataProvider(); williamr@2: IMPORT_C void OpenL(RSyncMLSession&, TSmlDataProviderId); williamr@2: williamr@2: IMPORT_C TSmlDataProviderId Identifier() const; williamr@2: IMPORT_C TVersion Version() const; williamr@2: IMPORT_C const TDesC& DisplayName() const; williamr@2: williamr@2: IMPORT_C TInt MimeTypeCount() const; williamr@2: IMPORT_C const TDesC& MimeType(TInt aIndex) const; williamr@2: IMPORT_C const TDesC& MimeVersion(TInt aIndex) const; williamr@2: williamr@2: IMPORT_C const TDesC& DefaultDataStoreName() const; williamr@2: IMPORT_C TBool AllowsMultipleDataStores() const; williamr@2: IMPORT_C void GetDataStoreNamesL(CDesCArray&) const; williamr@2: williamr@2: /* Return the set of filters that can be used to send to the SyncML server */ williamr@2: //IMPORT_C const RPointerArray& SupportedServerFiltersL() const; williamr@2: williamr@2: IMPORT_C TSmlProtocolVersion RequiredProtocolVersionL() const; williamr@2: williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: private: williamr@2: mutable CClientSessionData* iData; williamr@2: private: williamr@2: // Prohibited. williamr@2: RSyncMLDataProvider& operator=(const RSyncMLDataProvider&); williamr@2: RSyncMLDataProvider(const RSyncMLDataProvider&); williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: #endif