--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiutils/inc/cphonecenrepproxy.h Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,383 @@
+/*
+* 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: Proxy for the connection to central repository.
+*
+*/
+
+
+#ifndef __CPHONECENREPPROXY_H
+#define __CPHONECENREPPROXY_H
+
+// INCLUDES
+#include <coemain.h>
+#include <e32base.h>
+#include <centralrepository.h>
+#include <cenrepnotifyhandler.h>
+
+// CONSTANTS
+class MPhoneCenRepObserver;
+class CPhoneCenRepEventHandler;
+
+// FORWARD DECLARATIONS
+class TPhoneCmdParamAppInfo;
+
+/**
+* CPhoneCenRepProxy is an API used as proxy for phone application to get/set
+* and observe central repository settings.
+*
+* How to get some setting?
+* ---------------------------
+* example code:
+* TBuf<100> value;
+* CPhoneCenRepProxy::Instance()->GetString( uid, key, value );
+*
+* uid and key should be retrieved from <Module Name>InternalCRKeys.h
+*
+* How to set any settings
+* --------------------------------------
+* example code:
+* TInt value = 10;
+* CPhoneCenRepProxy::Instance()->SetInt( uid, key, value );
+*
+* How to observe any settings
+* --------------------------------------
+* example code:
+*
+* class CPhoneSomeManager : private MPhoneCenRepObserver
+* {
+* ...
+* virtual void HandleCenRepChangeL(
+* const TUid& aUid,
+* const TUint aId );
+* ....
+* }
+*
+* CPhoneSomeManager::SomeFunctionL
+* {
+* CPhoneCenRepProxy::Instance()->NotifyChangeL( uid1, id1, this );
+*
+* CPhoneCenRepProxy::Instance()->NotifyChangeL( uid2, id2, this );
+* }
+*
+* CPhoneSomeManager::HandleCenRepChangeL(
+* const TUid& aUid,
+* const TUint aId )
+* {
+* switch( aId )
+* {
+* case ESetting1:
+* .... //do something
+* case ESetting2:
+* .... //do something
+* default:
+* .... //panic in debug
+* }
+* }
+*
+* //The CancelAllNotifies() should be always called before destroy the object
+* CPhoneSomeManager::~CPhoneSomeManager()
+* {
+* CPhoneCenRepProxy::Instance()->CancelAllNotifies( this );
+* }
+*
+*/
+
+
+// CLASS DECLARATION
+
+class CPhoneCenRepProxy :
+ public CCoeStatic
+ {
+ public: // Constructors and destructor
+
+ /**
+ * First call initializes the singleton object. Subsequent calls return
+ * created instance.
+ * @return the created instance.
+ */
+ IMPORT_C static CPhoneCenRepProxy* Instance();
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CPhoneCenRepProxy();
+
+ public: // New Functions
+
+ /**
+ * Cancel all requests by the observer. This function should always be
+ * call before an object is destroyed. During shutdown, this singleton
+ * may be deleted before the classes that observe it. If this happens, the
+ * routine will just return since of requests have already been cancelled.
+ * @param aObserver
+ */
+ IMPORT_C static void CancelAllNotifies(
+ MPhoneCenRepObserver* aObserver );
+
+ /**
+ * Set integer value of setting
+ * @param aUid identifing the central repository UID.
+ * @param aId central repository ID.
+ * @param aValue the value associated with the central repository ID
+ */
+ IMPORT_C TInt SetInt(
+ const TUid& aUid,
+ const TUint aId,
+ const TInt aValue );
+
+ /**
+ * Set string value of setting
+ * @param aUid identifing the central repository UID.
+ * @param aId central repository ID.
+ * @param aValue the value associated with the central repository ID
+ * @return refer to SharedDataClient.h for detail explanation
+ */
+ IMPORT_C TInt SetString(
+ const TUid& aUid,
+ const TUint aId,
+ const TDesC& aValue );
+
+ /**
+ * Set real value of setting
+ * @param aUid identifing the central repository UID.
+ * @param aId central repository ID.
+ * @param aValue the value associated with the central repository ID
+ */
+ IMPORT_C TInt SetReal(
+ const TUid& aUid,
+ const TUint aId,
+ const TReal aValue );
+
+ /**
+ * Get integer value of setting
+ * @param aUid identifing the central repository UID.
+ * @param aId central repository ID.
+ * @param aValue the value associated with the central repository ID
+ */
+ IMPORT_C TInt GetInt(
+ const TUid& aUid,
+ const TUint aId,
+ TInt& aValue ) const;
+
+ /**
+ * Get string value of setting
+ * @param aUid identifing the central repository UID.
+ * @param aId central repository ID.
+ * @param aValue the value associated with the central repository ID
+ */
+ IMPORT_C TInt GetString(
+ const TUid& aUid,
+ const TUint aId,
+ TDes& aValue ) const;
+
+ /**
+ * Get real value of setting
+ * @param aUid identifing the central repository UID.
+ * @param aId central repository ID.
+ * @param aValue the value associated with the central repository ID
+ */
+ IMPORT_C TInt GetReal(
+ const TUid& aUid,
+ const TUint aId,
+ TReal& aValue ) const;
+
+ /**
+ * Notify the change of the setting
+ * @param aUid identifing the central repository UID.
+ * @param aId central repository ID.
+ * @param aObserver The pointer to the observer to handle the change
+ * notification
+ */
+ IMPORT_C void NotifyChangeL(
+ const TUid& aUid,
+ const TUint aId,
+ MPhoneCenRepObserver* aObserver );
+
+ /**
+ * Cancel request. If you don't want to receive notification of the
+ * setting you issued before, call this function.
+ * @param aObserver The observer that have issued request before
+ * @param aId The setting which is to be canceled
+ */
+ IMPORT_C void CancelNotify(
+ MPhoneCenRepObserver* aObserver,
+ const TUint aId );
+
+ /**
+ * Return boolean value that states whether or not
+ * the indicated feature is supported.
+ * @param aFeatureId the feature that is inspected (see values from
+ * TelephonyVariant.hrh)
+ * @return whether or not the feature is supported.
+ */
+ IMPORT_C TBool IsTelephonyFeatureSupported( const TInt aFeatureId );
+
+ /**
+ * Return boolean value that states whether or not
+ * the indicated feature is supported.
+ * @param aFeatureId the feature that is inspected (see values from
+ * PhoneUIVariant.hrh)
+ * @return whether or not the feature is supported.
+ */
+ IMPORT_C TBool IsPhoneUIFeatureSupported( const TInt aFeatureId );
+
+ /**
+ * Get keys from given value range
+ * @param aUid identifing the central repository UID.
+ * @param aPartial partial key to be found
+ * @param aMask mask for partial key
+ * @param aValues reference to array object for found keys
+ * @return KErrNone if successful, system wide error code otherwise.
+ */
+ IMPORT_C TInt Find(
+ const TUid& aUid,
+ const TUint32 aPartial,
+ const TUint32 aMask,
+ RArray<TUint32>& aValues ) const;
+
+ /**
+ * Fetches values from central repository
+ * @param aAppInfo reference to object containing info for
+ * application launching
+ * @param aCode ascii value of the pressed key
+ * @param aAppParam application parameter
+ * @param aValuesFetched ETrue if values fetched ok
+ */
+ IMPORT_C void FetchValuesFromCenRepL( TPhoneCmdParamAppInfo& aAppInfo,
+ TKeyCode aCode,
+ HBufC8* aAppParam, TBool& aValuesFetched );
+
+
+ public: // New methods
+
+ /**
+ * Handle notifications from central repository observers
+ * @param aUid identifing the central repository UID.
+ * @param aId central repository ID.
+ */
+ void HandleNotify(
+ const TUid& aUid,
+ const TUint aId );
+
+ private:
+
+ /**
+ * Two-phased constructor.
+ * @return new instance.
+ */
+ static CPhoneCenRepProxy* NewL();
+
+ /**
+ * C++ default constructor.
+ */
+ CPhoneCenRepProxy();
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ private:
+
+ /**
+ * Find the observer for specific setting on aUid and aId
+ * @param aUid identifing the central repository UID.
+ * @param aId central repository ID.
+ * @param aFromIndex find next observer interested in this setting after
+ * aIndex
+ * @return The index of the observer if it's found and KErrNotFound if
+ * not
+ */
+ TInt FindByUidId(
+ const TUid& aUid,
+ const TUint aId,
+ TInt aFromIndex = 0 );
+
+ /**
+ * Find the specific Observer
+ * @param aObserver The pointer of the observer
+ * @param aId central repository ID.
+ * @return The index in iObserverArray. KErrNotFound if can't find the
+ specific observer
+ */
+ TInt FindByObserverId(
+ const MPhoneCenRepObserver* aObserver,
+ const TUint aId );
+
+ /**
+ * Finds observer by uid, key and observer.
+ * @param aUid identifing the central repository UID.
+ * @param aId central repository ID.
+ * @param aObserver The pointer of the observer
+ */
+ TInt FindByUidIdObserver(
+ const TUid& aUid,
+ const TUint aId,
+ MPhoneCenRepObserver* aObserver );
+
+ /**
+ * Returns Telephony variant read-only data.
+ * @return error code.
+ */
+ TInt GetTelephonyVariantData();
+
+ /**
+ * Returns PhoneUI variant read-only data.
+ * @return error code.
+ */
+ TInt GetPhoneUIVariantData();
+
+ /**
+ * Cancel all request by the observer.
+ * @param aObserver
+ */
+ void CancelAllObserverNotifies( MPhoneCenRepObserver* aObserver );
+
+ /**
+ * Cancel all requests from all observers.
+ */
+ void CancelAllNotifies();
+
+ private: // Data
+
+ // Defines information of one observer.
+ class TCenRepObserverTag
+ {
+ public:
+ TUid iUid;
+ TUint iId;
+ MPhoneCenRepObserver* iObserver;
+ };
+
+ // Owned array of observers.
+ CArrayFixFlat<TCenRepObserverTag>* iObserverArray;
+
+ // Central Repository event handlers.
+ CPhoneCenRepEventHandler* iCenRepAccessoryEventHandler;
+ CPhoneCenRepEventHandler* iCenRepNetworkEventHandler;
+ CPhoneCenRepEventHandler* iCenRepThemesEventHandler;
+ CPhoneCenRepEventHandler* iCenRepLanguageEventHandler;
+ CPhoneCenRepEventHandler* iCenRepQwertyEventHandler;
+ CPhoneCenRepEventHandler* iCenRepKDRMHelperEventHandler;
+
+ //Local Telephony variant read-only data.
+ TInt iTelephonyVariantReadOnlyValues;
+
+ //Local PhoneUI variant read-only data.
+ TInt iPhoneUIVariantReadOnlyValues;
+ };
+
+#endif // __CPHONECENREPPROXY_H
+
+// End of File