logsui/LogsPlugin/CLogsSettingsView.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/LogsPlugin/CLogsSettingsView.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,320 @@
+/*
+* Copyright (c) 2002 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: 
+*     Logs application "Settings" view class implementation
+*
+*/
+
+
+#ifndef     __Logs_App_CLogsSettingsView_H__
+#define     __Logs_App_CLogsSettingsView_H__
+
+//  INCLUDES
+#include <ConeResLoader.h>
+#include <logcli.h>
+#include <gsplugininterface.h>
+#include <aknradiobuttonsettingpage.h> 
+
+#include "CLogsBaseView.h"                  
+#include "MLogsObserver.h"
+
+#include "LogsEng.hrh"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CLogsSettingsControlContainer;
+class CLogsEngine;
+class MCoeForegroundObserver;
+class CAknQueryDialog;
+
+// CLASS DECLARATION
+
+/**
+ * Logs application "Settings" view class implementation.
+ * Several application settings can be modified in this view.
+ */
+class   CLogsSettingsView : public CGSPluginInterface, 
+                            public MLogsObserver, 
+                            public MEikListBoxObserver,
+                            public MLogsKeyProcessor,
+                            public MCoeForegroundObserver    
+    {
+    public:  // interface
+    
+    
+        /**
+        * Creates new GS plugin having the given UID.
+        * Uses Leave code KErrNotFound if implementation is not found.
+        *
+        * @param aImplementationUid Implementation UID of the plugin to be
+        *        created.
+        * @param aInitParams Plugin's initialization parameters. Make sure you know 
+        *        what the plugin expects as initialization parameters. This 
+        *        should be an agreement between the plugin client and the 
+        *        plugin. Parameter can be used for example as sharing a common 
+        *        data model between multiple plugins.
+        */
+        static CGSPluginInterface* NewPluginL(
+            const TUid aImplementationUid,
+            TAny* aInitParams);
+    
+        /**
+         * Destructor.
+         */
+        ~CLogsSettingsView();
+
+    
+    private:
+        /**
+         * Constructor, second phase. 
+         */
+        void ConstructL();
+
+        /**
+         * C++ constructor
+         */
+        CLogsSettingsView();
+
+        /**
+         * Framework calls to init menu items.
+         *
+         * @param aResourceId   resource read
+         * @param aMenuPane     menu pane
+         */ 
+        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+        
+        /**
+         * Framework calls to init process commands
+         *
+         * @param aCommand
+         */ 
+        void ProcessCommandL( TInt aCommand );
+
+        // from MLogsKeyProcessor
+        TBool ProcessKeyEventL( const TKeyEvent& aKeyEvent,
+                                TEventCode aType );
+ 		/**
+         * Overrides the baseclass handler
+         * 
+         * @param aIndex	The index of the item tapped
+         */                                   
+        void ProcessPointerEventL( TInt aIndex);
+        
+        //void FocusChangedL();        
+
+        MAknTabObserver* TabObserver();                                                  
+
+        // from MEikListBoxObserver
+        void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType );
+
+        // from MLogsModelObserver
+        void StateChangedL( MLogsStateHolder* aHolder ); 
+
+    private:  // from CAknView
+        /**
+         * Returns the ID of the view.
+         * @return view id
+         */
+        TUid Id() const;
+
+        /**
+         * Called when the client rectangle of this view changes
+         */
+        void HandleClientRectChange();
+
+        /**
+         * Called by the framework when this view is activated.
+         *
+         * @param aPrevViewId      This is ID for previous view.
+         * @param aCustomMessageId ID of the custom message. Not used.
+         * @param aCustomMessage   custom message. Not used.
+         */
+        void DoActivateL( const TVwsViewId& aPrevViewId,
+                          TUid aCustomMessageId,
+                          const TDesC8& aCustomMessage );
+        
+        /**
+         *  Called by the framework when this view is deactivated.
+         */
+        void DoDeactivate();
+
+        /*
+         * Show note dialog
+         * @param aResourceId, note to show.
+         */
+        void ShowNoteL( TInt aResourceID );
+
+
+        /**
+         * Is call active
+         * @return ETrue if call is active, else return EFalse
+         */
+        // TBool CallIsActiveL();
+    
+    private: // From MCoeForegroundObserver.
+     
+        /** 
+         * Called by the framework when this view gains foreground
+         */                  
+        void HandleGainingForeground();
+        
+        /**
+         * Called by the framework when this view loses foreground
+         */  
+        void HandleLosingForeground();    
+
+    private: // Command handlers (use "Cmd" prefix)
+       
+        /**
+         * Manage setting log length possible changes.
+         */
+        void CmdLogLengthL();
+
+        //Below: "Show Call Duration" moved General Settings application, not in use any more in Logs 
+        /**
+         *  Makes the change in to the "Call Duration" and handles the
+         *  rules, which have been given
+         *
+         *  @param  aDurationItem   The selected item
+         */
+        // void MakeCallDurationChangeL( TBool aChange );
+
+        /**
+         * Manage setting show call duration possible changes.
+         */
+        // void CmdShowCallDurationPhoneL();
+
+
+        /**
+         *  Makes opposite selection to "Call Duration"
+         */
+        // void MakeCallDurationOppositeL();
+
+    public:
+        /**
+         *  Log age getter
+         *
+         *  @return log age
+         */
+        TLogAge LogAge() const;
+        
+        /**
+         *  Logs Engine getter
+         *
+         *  @return Logs engine
+         */
+        CLogsEngine* Engine();
+
+    private:  // from CGSPluginInterface  
+
+        /**
+        * Provides caption of this plugin. This should be the
+        * localized name of the Logs settings view to be shown in parent view
+        * (i.e. GS applications view)
+        *
+        * @param aCaption pointer to Caption variable
+        */
+        void GetCaptionL( TDes& aCaption ) const;
+
+        /**
+        * Provides the plugin provider category. See
+        * TGSPluginProviderCategory. PluginProviderCategory can be used for
+        * sorting plugins.
+        *
+        * Default value is EGSPluginProvider3rdParty. Override this function
+        * to change the category.
+        *
+        * @return Plugin provider category ID defined by
+        *         TGSPluginProviderCategory
+        */
+        TInt PluginProviderCategory() const;    
+        
+        /**
+        * Creates a new icon of desired type. Override this to provide custom
+        * icons. Othervise default icon is used. Ownership of the created icon
+        * is transferred to the caller.
+        *
+        * Icon type UIDs (use these defined constants):
+        * KGSIconTypeLbxItem  -   ListBox item icon.
+        * KGSIconTypeTab      -   Tab icon.
+        *
+        * @param aIconType UID Icon type UID of the icon to be created.
+        * @return Pointer of the icon. NOTE: Ownership of this icon is
+        *         transferred to the caller.
+        */
+        virtual CGulIcon* CreateIconL( const TUid aIconType );        
+
+        virtual TAny* CustomOperationL( TAny* aParam1, TAny* aParam2 );
+
+    private: // from MEikCommandObserver
+        /**
+         * Handles the view specific commands.
+         *
+         * @param aCommandId This is an id for command.
+         *                   Most of the commands are forwarded to LogAppUI.
+         */
+         void HandleCommandL(TInt aCommand);
+
+    
+    private:  // operations
+
+        /**
+         *  Makes view's one line with the given information
+         *
+         *  @param  aItems          Array where to put the line information
+         *  @param  aResourceText   The resource index of text to be shown
+         */
+        void MakeSettingLineL( CDesCArrayFlat* aItems, TInt aResourceText );
+
+        /**
+         * User log length selection "No log" query.
+         *
+         * @return The ETrue value indicates that log lenght "No log" 
+         *         should be activated.
+         */
+        TBool NoLogQueryL();
+        
+        void SetForGS( TBool aForGS );
+
+    private:  // data
+        /// Own: This view's control container
+        CLogsSettingsControlContainer* iContainer;
+        CAknRadioButtonSettingPage*    iDialog;
+        CAknQueryDialog* 			   iNoLogQueryDlg;
+        CDesCArrayFlat*                iSettingItems; 
+        
+        /// Own: config info
+        TLogConfig      iConfig;
+        CLogsEngine*    iEngine;    
+        TVwsViewId      iPrevViewId;
+        CEikonEnv*      iEikEnv;                // Local eikonenv		
+        TInt            iResourceFileOffset;    // Offset for eikon env.
+        TBool           iForGs;
+        TLogsState      iState;      
+        
+        TInt            iLastMaxEventAge;                  
+    };
+
+#endif  // __Logs_App_CLogsSettingsView_H__
+
+
+// End of File
+