cellular/SSSettings/inc/CSSSettingsNotifier.h
changeset 0 ff3b6d0fd310
child 19 7d48bed6ce0c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cellular/SSSettings/inc/CSSSettingsNotifier.h	Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,161 @@
+/*
+* Copyright (c) 2002-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:  Notifier for changes.
+*
+*/
+
+
+#ifndef CSSSETTINGSNOTIFIER_H
+#define CSSSETTINGSNOTIFIER_H
+
+//  INCLUDES
+#include <cenrepnotifyhandler.h>
+
+#include "RSSSettings.h"
+#include "CSSSettingsActiveObject.h"
+
+// FORWARD DECLARATIONS
+class CSSSettingsAlsNotifier;
+
+
+// CLASS DECLARATION
+
+/**
+*  Notifier for changes
+*  @since   1.0
+*  @lib     SsSettings.lib
+*/
+class CSSSettingsNotifier :   public CActive,
+    public MCenRepNotifyHandlerCallback
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * C++ constructor.
+        * @param aSettings reference to RSSSettings
+        */
+        CSSSettingsNotifier( RSSSettings& aSettings );
+
+        /**
+        * Symbian OS constructor. Must be called before usage!
+        */
+        void ConstructL();
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CSSSettingsNotifier();
+
+    public: // New functions
+        
+        /**
+        * Adds observer.
+        * @param aSetting Set observer for this setting
+        * @return KErrNone if succesful.
+        */
+        TInt AddNotifier( TSSSettingsSetting aSetting );
+
+        /**
+        * Removes observer
+        * @param aSetting Remove observer for this setting
+        */
+        void RemoveNotifier( TSSSettingsSetting aSetting );
+
+
+        /**
+        * To get ALS controller.
+        * @return The Als controller. NULL if not supported.
+        */
+        CSSSettingsAlsNotifier* GetAlsHandler();
+
+        /**
+        * Handle SIM refresh
+        * @return Error code
+        */
+        TInt HandleRefresh();
+
+
+    protected:  // Functions from base classes
+        
+        /**
+        * From CActive. This is called when ALS Blocking status
+        * is changed.
+        */
+        void RunL();
+
+        /**
+        * From CActive. ALS blocking change notification is cancelled.
+        */
+        void DoCancel();
+
+        /** 
+        * From MCenRepNotifyHandlerCallback
+        */
+        void HandleNotifyInt(
+            TUint32 aId,
+            TInt aNewValue );
+
+        /** 
+        * From MCenRepNotifyHandlerCallback.
+        */
+        void HandleNotifyError(
+            TUint32 aId,
+            TInt aError,
+            CCenRepNotifyHandler* aHandler );
+
+    private:
+
+        // Prohibit copy constructor if not deriving from CBase.
+        CSSSettingsNotifier( const CSSSettingsNotifier& );
+        // Prohibit assigment operator if not deriving from CBase.
+        CSSSettingsNotifier& operator= ( const CSSSettingsNotifier& );
+        
+   private:
+   
+        // Determines if als supported.
+        TBool AlsSupport( 
+            TBool aPPSupport, 
+            TBool aCSPSupport,
+            TInt aCSPError );
+
+    private:
+        
+        // Settings data
+        RSSSettings&                     iSettings;
+
+        // Als controller
+        CSSSettingsAlsNotifier*          iAls;
+        
+        // valid in RunL
+        RMmCustomAPI::TGetAlsBlockStatus iAlsBlockStatus;
+
+        // Central repository for SSSettings.
+        CRepository*                     iRepository;
+        
+        // Central repository notify handlers. 
+        // Must use multiple handlers to observe all the keys:
+        // KSettingsAlsLine
+        // KSettingsCLIR
+        // KSettingsCUG
+        CCenRepNotifyHandler*            iCenRepAlsNotifyHandler;
+        CCenRepNotifyHandler*            iCenRepClirNotifyHandler;
+        CCenRepNotifyHandler*            iCenRepCugNotifyHandler;
+     
+        // The notified keys.
+        TUint32                          iNotifyKeys;
+    };
+
+#endif      // CSSSETTINGSNOTIFIER_H
+            
+// End of File