cbs/CbsServer/ServerInc/CCbsDbImpSettings.H
changeset 0 ff3b6d0fd310
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbs/CbsServer/ServerInc/CCbsDbImpSettings.H	Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,238 @@
+/*
+* Copyright (c) 2003 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:  This file contains the header file of the CCbsDbImpSettings class
+*    
+*                This class represents the settings stored in the database.
+*
+*/
+
+
+
+#ifndef     CCBSDBIMPSETTINGS_H
+#define     CCBSDBIMPSETTINGS_H
+
+// INCLUDES
+#include "CbsCommon.h"
+#include "CCbsDbImp.H"
+
+//  FORWARD DECLARATIONS
+class MCbsDbSettingsObserver;
+
+//  CLASS DECLARATION 
+
+/**
+*   CCbsDbImpSettings represents server persistent settings.
+*   These settings include receive mode, topic detection mode
+*   and user selected languages.
+*
+*   Receive mode controls whether any CB messages are received
+*   or not. If topic detection is enabled and a message belonging
+*   to a previously unknown topic (i.e., a topic not on topic list)
+*   is received, the topic of this message is added onto the topic
+*   list.
+*
+*   User selected languages determine which message are received.
+*   The language of an incoming message has to be on the array
+*   of these preferred languages. Selection "All" allows reception
+*   of all messages, regardless of language. 
+*
+*   Settings are modifiable only through UI client requests.
+*   MCN client requests have no effect on these settings,
+*   that is, the settings in the file store. MCN client requests
+*   are taken into account when a call to CCbsRecEtel::ApplyStateChangesL()
+*   is made.
+*   
+*/
+class CCbsDbImpSettings : public CBase
+
+    {        
+    public:        // New functions
+        /**
+        *   Creates a new instance of the class. 
+        *
+        *   @param  aDatabase               Reference to the main DB instance.
+        *   @return                         Returns a pointer to the created 
+        *                                   instance of the class.
+        */
+        static CCbsDbImpSettings* NewL( CCbsDbImp& aDatabase );
+
+        /**
+        *   Destructor.
+        */
+        ~CCbsDbImpSettings();
+
+        /**
+        *   Changes the topic detection status.
+        *
+        *   @param aStatus                  New topic detection status.
+        */
+        void SetTopicDetectionStatusL( TBool aStatus );
+
+        /**
+        *   Returns the current value of the topic detection status.
+        *
+        *   @param aStatus                  The method will store to 
+        *                                   the variable the current topic 
+        *                                   detection status.
+        */
+        void GetTopicDetectionStatus( TBool& aStatus ) const;
+
+        /**
+        *   Changes the reception status.
+        *
+        *   @param aStatus                  New reception status.
+        */
+        void SetReceptionStatusL( TBool aStatus );
+
+        /**
+        *   Returns the current value of the topic reception status.
+        *
+        *   @param aStatus                  The method will store to 
+        *                                   the variable 
+        *                                   the current reception status.
+        */                  
+        void GetReceptionStatus( TBool& aStatus ) const;
+    
+        /**
+        *   Changes the preferred languages.
+        *
+        *   @param aLanguages               New preferred languages.
+        */
+        void SetLanguagesL( const TCbsDbLanguages& aLanguages );
+
+        /**
+        *   Returns the preferred languages.
+        *
+        *   @param aLanguages               The method will store to the variable
+        *                                   the current preferred languages.
+        */
+        void GetLanguages( TCbsDbLanguages& aLanguages ) const;
+
+        /**
+        *   Adds an observer to the settings. 
+        *
+        *   Observers are notified when an event occurs on the settings.
+        *
+        *   Panics if aObserver is null.
+        *
+        *   @param aObserver                Pointer to the observer that is 
+        *                                   requested to be added.
+        */
+        void AddObserverL( MCbsDbSettingsObserver* aObserver );
+    
+        /**
+        *   Removes database observer. 
+        *
+        *   The method will panic, if there is no such observer added
+        *   or the given observer is null.
+        *
+        *   @param aObserver                Pointer to the observer that is 
+        *                                   requested to be removed.
+        */
+        void RemoveObserver( const MCbsDbSettingsObserver* aObserver );
+
+    private:
+
+        // A structure that contains the settings.
+        struct TCbsDbImpSettings
+            {
+            // Reception status. ETrue, if the reception is enabled.
+            TBool iReceptionStatus;
+
+            // Topic detection status. ETrue, if the topic detection is enabled.
+            TBool iTopicDetectionStatus;
+
+            // Language settings.
+            TCbsDbLanguages iLanguageStatus;
+            };
+
+        /**
+        *   Constructor.
+        *
+        *   @param aDatabase                Reference to the main database object.
+        */
+        CCbsDbImpSettings( CCbsDbImp& aDatabase );
+
+        /**
+        *   Creates the instances.
+        *
+        */
+        void ConstructL();
+  
+        /**
+        *   Saves the settings to the shared data. 
+        *
+        *   @return Boolean value indicating whether the saving succeeded.
+        */
+        TBool SaveSettings();
+
+        /**
+        *   Saves the settings to the shared data.
+        *
+        *   The method leaves in case the writing to the stream does not 
+        *   succeed.
+        */
+        void DoSaveSettingsL();
+
+        /**
+        *   Loads the settings, i.e. values for reception status, 
+        *   topic detection and language subscriptions.
+        *
+        *   These values are retrieved from Central Repository, associated with
+        *   the UID of CbsServer.
+        *
+        */
+        void LoadSettingsL();
+
+        /**
+        *   Determines whether the language settings are equal.
+        *
+        *   @param  aLanguage1              First language set.
+        *   @param  aLanguage2              Second language set.
+        *   @return                         ETrue, if the languages are equal.
+        */
+        TBool IsLanguagesEqual( const TCbsDbLanguages& aLanguage1, 
+            const TCbsDbLanguages& aLanguage2 ) const;
+
+        /**
+        *   Sets default language settings.
+        *
+        *   @param  aLanguage               Place where to put the default 
+        *                                   settings.
+        */
+        void SetDefaultLanguageSettings( TCbsDbLanguages& aLanguage ) const;
+
+        /**
+        *   Reads settings from shared data.
+        *
+        */
+        //void ReadSettingsL( );
+
+    private:    
+
+        // The main database object.
+        CCbsDbImp& iDatabase;
+
+        // Cached CB settings.
+        TCbsDbImpSettings iSettings;
+
+        // Owns:   Array containing registered settings observers.
+        CArrayFixFlat<MCbsDbSettingsObserver*>* iObservers;
+
+        __DECLARE_TEST;
+    };
+
+#endif      //  CCBSDBIMPSETTINGS_H   
+            
+// End of File