diff -r 8e7494275d3a -r 4f0867e42d62 omads/omadsappui/AspSyncUtil/inc/AspDbNotifier.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omads/omadsappui/AspSyncUtil/inc/AspDbNotifier.h Wed Sep 01 12:30:02 2010 +0100 @@ -0,0 +1,305 @@ +/* +* 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: Used by UI to update settings based on DB changes +* +*/ + + +#ifndef ASPDBNOTIFIER_H +#define ASPDBNOTIFIER_H + +#include +#include + +#include "AspUtil.h" + + +// CLASS DECLARATION + + +/** +* TAspDbEvent +* +* TAspDbEvent represents sync event that is sent to UI. +*/ +NONSHARABLE_CLASS (TAspDbEvent) + { + public: + TInt iType; + TInt iProfileId; + TInt iError; + + public: + /** + * Constructor + * @param aType Event type. + * @return None. + */ + TAspDbEvent(TInt aType); + }; + + + +/** +* MAspDbEventHandler +* +* Observer interface function. +*/ +NONSHARABLE_CLASS (MAspDbEventHandler) + { + public: + /** + * CAspDbNotifier calls this to inform that database has changed. + * @param aEvent Database event. + * @return None. + */ + virtual void HandleDbEventL(TAspDbEvent aEvent) = 0; + }; + + +/** +* CAspDbNotifier +* +* CAspDbNotifier is used to observe sync database events. These events +* are used to update UI. +*/ +NONSHARABLE_CLASS (CAspDbNotifier) : public CBase, + public MAspActiveCallerObserver, + public MSyncMLEventObserver + { + public: + enum TEventType + { + EUpdate, + EUpdateAll, + EDelete, + EClose + }; + + public: + /** + * Two-phased constructor + * @param aDatabase Reference to RDbDatabase instance. + * @param aHandler Pointer to MAspDbEventHandler instance. + * @return None. + */ + static CAspDbNotifier* NewL(const TAspParam& aParam, MAspDbEventHandler* aHandler); + + /** + * Destructor. + */ + virtual ~CAspDbNotifier(); + + private: + + /** + * Constructor + * @param aParam. + * @param aHandler Pointer to event handler. + * @return None. + */ + CAspDbNotifier(const TAspParam& aParam, MAspDbEventHandler* aHandler); + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL(); + + public: + /** + * Start requesting events from db. + * @param None. + * @return None. + */ + void RequestL(); + + + private: // from MAspActiveCallerObserver + + /** + * From MAspActiveCallerObserver + * Called when CAspActiveCaller completes. + * @param aCallId. + * @return None. + */ + void HandleActiveCallL(TInt aCallId); + + private: // from MSyncMLEventObserver + + /** + * Called when SyncML session events oocur. + * @param aEvent Event type. + * @param aIdentifier Object id. + * @param aError Error code. + * @param aAdditionalData Additional data. + * @return None. + */ + void OnSyncMLSessionEvent(TEvent aEvent, TInt aIdentifier, TInt aError, TInt aAdditionalData); + + /** + * Called when SyncML session events oocur. + * @param aEvent Event type. + * @param aIdentifier Object id. + * @param aError Error code. + * @param aAdditionalData Additional data. + * @return None. + */ + void HandleSessionEventL(TEvent aEvent, TInt aIdentifier, TInt aError, TInt aAdditionalData); + + public: + /** + * Calls database event observer with delay. + * @param None. + * @return None. + */ + void CallObserverWithDelay(); + + /** + * Calls database event observer. + * @param None. + * @return None. + */ + void CallObserver(); + + /** + * Disable/enable observer calling. + * @param aDisable. + * @return None. + */ + void SetDisabled(TBool aDisable); + + /** + * Finds out how many profiles have changed. + * @param None. + * @return Profile count. + */ + TInt ChangedProfileCount(); + + /** + * Get one database event from event array. + * @param aIndex. + * @return Database event. + */ + TAspDbEvent Event(TInt aIndex); + + /** + * Return number of received database events. + * @param None. + * @return Event count. + */ + TInt EventCount(); + + /** + * Reset event array. + * @param None. + * @return None. + */ + void Reset(); + + /** + * Find out whether event array contains event that causes UI to close. + * @param None. + * @return Array index. + */ + TInt FindCloseEvent(); + + /** + * Find out whether event array contains events for one profile only. + * @param None. + * @return Array index. + */ + TInt FindSingleProfileEvent(); + + /** + * Find out whether event array contains profile event. + * @param None. + * @return Array index. + */ + TInt FindProfileEvent(); + + /** + * Find out whether event array only contains events with same profile id. + * @param aId Profile id. + * @return Boolean. + */ + TBool IsUniqueProfileId(TInt aId); + + /** + * Creates one update event. + * @param aIdentifier Profile id. + * @param aError Error code. + * @return None. + */ + void CreateUpdateEventL(TInt aIdentifier, TInt aError); + + /** + * Find out whether event array contains delete event. + * @param None. + * @return Boolean. + */ + TBool ProfileDeleted(); + + /** + * Call event observer if event array contains update event. + * @param None. + * @return None. + */ + void CheckUpdateEventL(); + + /** + * Utility function. + * @return Sync session. + */ + RSyncMLSession& Session(); + + +#ifdef _DEBUG + private: + void GetSyncEventText(TDes& aText, MSyncMLEventObserver::TEvent aEvent); + void LogSessionEvent(TEvent& aEvent, TInt aIdentifier, TInt aError); +#endif + + + + private: + // sync session + RSyncMLSession* iSyncSession; + + // Pointer to event handler + MAspDbEventHandler* iHandler; + + // for making function call via active scheduler + CAspActiveCaller* iActiveCaller; + + // for storing ids of changed profiles + RArray iList; + + // can observer be called + TBool iDisabled; + + // is synchronizing going on + //TBool iSyncRunning; + + // have sync session events been requested from RSyncMLSession + TBool iSessionEventRequested; + + // is this object destroyed + TBool* iDestroyedPtr; + }; + + +#endif // ASPDBNOTIFIER_H + + +// End of file \ No newline at end of file