/*
* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: Server alerts for Data Sync and Device Management engines.
*
*
*/
#ifndef CSYNCMLAPPLAUNCHNOTIFIER_H
#define CSYNCMLAPPLAUNCHNOTIFIER_H
// INCLUDES
#include <SyncMLClient.h>
#include <SyncMLNotifierParams.h>
#include "SyncMLNotifierBase.h" // Base class
#include <SyncService.h>
#include <centralrepository.h>
#include <e32property.h>
// CONSTANTS
// From S60\SyncMLFota
const TUid KUidNSmlMediumTypeInternet = { 0x101F99F0 };
_LIT8( KNSmlIAPId, "NSmlIapId" );
_LIT8( KNSmlAlwaysAsk, "-1" );
const TInt KDefaultTimeoutforNotes ( 30 );
const TUid KDisclaimerProperty = {0x101F8769};
const TUint32 KDisclaimerInteger = 0x00000001;
const TUid KCRUidNSmlDSApp = { 0x101F9A1D };
// CLASS DECLARATION
class CDMDisclaimerObserver;
/**
* Notifier for launching SyncML applications
*
* @lib SyncMLNotifier
* @since Series 60 3.0
*/
NONSHARABLE_CLASS( CSyncMLAppLaunchNotifier ) : public CSyncMLNotifierBase
{
public: // Constructors and destructor
enum TSanSupport
{
EOff,EON
};
/**
* Two-phased constructor.
*/
static CSyncMLAppLaunchNotifier* NewL();
/**
* Destructor.
*/
virtual ~CSyncMLAppLaunchNotifier();
public:
/**
* Returns correct SyncService depending on the Service Id
* @param aServiceId
* @return CSyncService*
*/
CSyncService* SyncServiceL( TUint aServiceId );
/**
* Called to complete the message
* @param aDisclaimerAccepted
*/
void CompleteMessageL(TInt aDisclaimerAccepted);
private: // New functions
/**
* Retrieves required parameters for the note and launching of the
* synchronization application.
* @param aParam Parameter structure that is forwarded to syncservice
* @param aServerName Returns the clear-text name of the corresponding server.
* @param aUserInteraction Returns the profile setting of whether the user
* acceptance should be queried.
* @return None
*/
void RetrieveSyncParamsL( TSyncServiceParam& aParam,
TDes& aServerName,
TSmlServerAlertedAction& aUserInteraction );
/**
* Retrieves required parameters for the note and launching of the
* device management application.
* @param aParam Parameter structure that is forwarded to syncservice
* @param aServerName Returns the clear-text name of the corresponding server.
* @param aUserInteraction Returns the profile setting of whether the user
* acceptance should be queried.
* @return None
*/
void RetrieveMgmtParamsL( TSyncServiceParam& aParam,
TDes& aServerName,
TSmlServerAlertedAction& aUserInteraction );
/**
* Checks if the user and/or parameters have defined that the session
* should be accepted without querying the user.
* @param aUserInteraction Sync profile interaction enumeration.
* @return True, if the session is accepted automatically.
*/
TBool IsSilent( TSmlServerAlertedAction& aUserInteraction );
private: // Functions from base classes
/**
* From CSyncMLNotifierBase Called when a notifier is first loaded.
* @param None.
* @return A structure containing priority and channel info.
*/
TNotifierInfo RegisterL();
/**
* From CSyncMLNotifierBase The notifier has been deactivated
* so resources can be freed and outstanding messages completed.
* @param None.
* @return None.
*/
void Cancel();
/**
* From CSyncMLNotifierBase Used in asynchronous notifier launch to
* store received parameters into members variables and
* make needed initializations.
* @param aBuffer A buffer containing received parameters
* @param aReturnVal The return value to be passed back.
* @param aMessage Should be completed when the notifier is deactivated.
* @return None.
*/
void GetParamsL( const TDesC8& aBuffer,
TInt aReplySlot,
const RMessagePtr2& aMessage );
/**
* From CSyncMLNotifierBase Gets called when a request completes.
* @param None.
* @return None.
*/
void RunL();
/**
* From RConnectionMonitor gets the staus of roaming .
* If roaming returns true else returns false
* @param ret
* @return None.
*/
void IsRoamingL(TBool& ret);
/**
* HandleDMSession
* @param ret
* @return TBool
*/
TBool HandleDMSessionL();
/**
* HandleCompleteMessage
* @param TInt &keypress, TBool &silent, TInt &SanSupport, TInt &Timeout, TInt &CustomNotes
* @return None.
*/
void HandleCompleteMessageL(TInt &keypress, TBool &silent, TInt &SanSupport, TInt &Timeout, TInt &CustomNotes);
/**
* IsLanguageSupported
* @param ret
* @return True if the language is supported.
*/
TBool IsLanguageSupportedL();
void ReadRepositoryL(TInt aKey, TInt& aValue);
void ShowRoamingMessageL(TInt keypress, TUint profileId);
private:
/**
* C++ default constructor.
*/
CSyncMLAppLaunchNotifier();
private: // Data
// Type of session queried
TSyncMLSessionTypes iSmlProtocol;
CDMDisclaimerObserver* iObserver;
// Job identifier from the parameters
TInt iJobId;
// Identifier of the used SyncML profile from the parameters
TInt iProfileId;
// Sync Service for Data Sync
CSyncService* iDSSyncService;
// Sync Service for Device Management
CSyncService* iDMSyncService;
// Is always ask selected as accesspoint for current profile
TBool iAlwaysAsk;
// Alert mode
TInt iUimode;
// DM Sync Server
TBuf<KSyncMLMaxProfileNameLength> DMSyncServerName;
// UI behaviour
TSmlServerAlertedAction uiAction;
// Sync Service param
TSyncServiceParam param;
// Stringholder
HBufC* stringholder;
// Central Respository
CRepository* centrep;
// To store the bearer type
TInt iBearerType;
};
/**
* CDMDisclaimerObserver class
*
*/
class CDMDisclaimerObserver : public CActive
{
public:
CDMDisclaimerObserver();
~CDMDisclaimerObserver();
void WaitOnDisclaimerL(CSyncMLAppLaunchNotifier* aPtr);
protected:
void DoCancel();
void RunL();
TInt RunError(TInt aError);
private:
TInt iPropertyVal;
RProperty iDisclaimerProperty;
CSyncMLAppLaunchNotifier* iNot;
};
#endif // CSYNCMLAPPLAUNCHNOTIFIER_H
// End of File