logsui/LogsPlugin/CLogsSettingsView.cpp
changeset 0 e686773b3f54
child 21 9da50d567e3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/LogsPlugin/CLogsSettingsView.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,867 @@
+/*
+* 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
+*
+*/
+
+
+// INCLUDE FILES
+#include <aknnotedialog.h>    
+#include <AknQueryDialog.h>  
+
+#include <gsfwviewuids.h>
+#include "LogsUID.h"
+
+#include <bautils.h> //parser
+#include <featmgr.h>
+
+#include <Logs.rsg>  
+#include <StringLoader.h>   // Series 60 localisation stringloader
+#include <hlplch.h>
+
+#include "CLogsSettingsView.h"
+#include "CLogsSettingsControlContainer.h"
+#include "CLogsEngine.h"
+#include "MLogsSharedData.h"
+#include "MLogsConfig.h"
+#include "MLogsClearLog.h"
+#include "CLogsAocObjFactory.h"
+#include "MLogsCallStatus.h"
+#include "LogsConsts.h"
+#include "LogsConstants.hrh"        //KLogsPluginImplUID
+#include "MLogsStateHolder.h"
+
+#include "Logs.hrh"
+#include "LogsIcons.hrh"
+#include <logs.mbg>     // Logs icons
+
+#include "LogsDebug.h"
+#include "LogsTraces.h"
+
+const TInt KMaxEventCount = 1000;
+const TInt KZeroEventCount = 0;
+
+
+
+// =========================== From CGSPluginInterface ========================
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::NewPluginL
+//
+// From CGSPluginInterface
+// ----------------------------------------------------------------------------
+//
+CGSPluginInterface* CLogsSettingsView::NewPluginL(
+    TUid  /* aImplementationUid */, 
+    TAny* /* aInitParams */  ) 
+    {
+    TRACE_ENTRY_POINT;
+    CLogsSettingsView* self = new ( ELeave ) CLogsSettingsView();  
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();  // self
+    
+    TRACE_EXIT_POINT;
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::GetCaptionL
+//
+// From CGSPluginInterface. Text for GS's list of applicatons
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::GetCaptionL( TDes& aCaption ) const
+    {
+    TRACE_ENTRY_POINT;
+    // Resource file is already opened in ConstructL.    
+    HBufC* text = iCoeEnv->AllocReadResourceLC( R_SET_FOLDER_LOGS );
+    aCaption.Copy( *text );    
+    CleanupStack::PopAndDestroy( text ); 
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::PluginProviderCategory
+//
+// From CGSPluginInterface
+// ----------------------------------------------------------------------------
+//
+int CLogsSettingsView::PluginProviderCategory(void) const
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return CGSPluginInterface::EGSPluginProviderOEM;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::CreateIconL
+//
+// From CGSPluginInterface
+// ----------------------------------------------------------------------------
+//
+CGulIcon* CLogsSettingsView::CreateIconL( const TUid aIconType )
+    {
+    TRACE_ENTRY_POINT;
+    TFileName iconFileWithPath;
+    iconFileWithPath += KLogsIconFileDrive;
+    iconFileWithPath += KDC_APP_BITMAP_DIR;          
+    iconFileWithPath += KLogsIconFile;  
+
+    CGulIcon* icon = AknsUtils::CreateGulIconL(
+        AknsUtils::SkinInstance(), 
+        KAknsIIDQgnPropSetAppsLog,
+        iconFileWithPath,
+        EMbmLogsQgn_prop_set_apps_log, 
+        EMbmLogsQgn_prop_set_apps_log_mask );
+        
+     if( aIconType == KGSIconTypeLbxItem )
+        {
+        //nop currently
+        }
+    else if( aIconType == KGSIconTypeTab )
+        {
+        //nop
+        }
+    
+    TRACE_EXIT_POINT;
+    return icon;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::CustomOperationL
+//
+// From CGSPluginInterface
+// ----------------------------------------------------------------------------
+//
+TAny* CLogsSettingsView::CustomOperationL( 
+    TAny* /* aParam1 */,
+    TAny* /* aParam2 */ )
+    {
+    TRACE_ENTRY_POINT;
+    //Called only from Logs, so we can use this to swich off GS specific title
+    iForGs = EFalse;
+    TRACE_EXIT_POINT;
+    return NULL;
+    }
+//=============================================================================
+
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::CLogsSettingsView
+// ----------------------------------------------------------------------------
+//
+CLogsSettingsView::CLogsSettingsView() :
+    iState( EStateUndefined )            
+    {
+    TRACE_ENTRY_POINT;
+    iConfig.iMaxEventAge = ELogsConfigAge30Days;
+    TRACE_EXIT_POINT;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::ConstructL
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::ConstructL()
+    {
+    TRACE_ENTRY_POINT;
+    iForGs = ETrue;   
+    iDialog = NULL; 
+    iEikEnv = CEikonEnv::Static();
+    iEngine = CLogsEngine::NewL();    
+    iEngine->ConfigL()->SetObserver( this );
+    iEngine->SharedDataL()->SetObserver( this );
+    iCoeEnv->AddForegroundObserverL( *this );
+
+    _LIT( KLogsPluginResourceFileName, "z:\\resource\\Apps\\Logs.RSC" );
+    TFileName fileName( KLogsPluginResourceFileName );
+
+    // Get language of resource file
+    BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName );       
+
+    // Open resource file
+    iResourceFileOffset=iEikEnv->AddResourceFileL( fileName );	
+    BaseConstructL( R_LOGS_SETTINGS_VIEW );    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::~CLogsSettingsView
+// ----------------------------------------------------------------------------
+//
+CLogsSettingsView::~CLogsSettingsView()
+    {
+    TRACE_ENTRY_POINT;
+    
+    if( iContainer )
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        }
+
+	iEikEnv->DeleteResourceFile(iResourceFileOffset);
+    delete iEngine;
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::Id
+// ----------------------------------------------------------------------------
+//
+TUid CLogsSettingsView::Id() const
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return TUid::Uid( KLogsPluginImplUID );//Impl UID for CGSPluginInterface
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::DoActivateL
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::DoActivateL(
+    const TVwsViewId& aPrevViewId , 
+    TUid  /*aCustomMessageId*/,
+    const TDesC8& /*aCustomMessage*/ )
+    {
+    TRACE_ENTRY_POINT;
+    iPrevViewId = aPrevViewId;
+
+    // Create the control container
+    if( iContainer == NULL )
+        {
+        iContainer = CLogsSettingsControlContainer::NewL( this, ClientRect(), iForGs );
+        iContainer->SetMopParent( this );        
+        AppUi()->AddToViewStackL( *this, iContainer );  
+        }
+    
+    iContainer->ListBox()->SetListBoxObserver( this );
+        
+    iEngine->ConfigL()->GetConfig( iConfig );        
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::DoDeactivate
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::DoDeactivate()
+    {
+    TRACE_ENTRY_POINT;
+    if( iContainer )
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::HandleGainingForeground
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::HandleGainingForeground()
+    {
+    TRACE_ENTRY_POINT;
+    
+    // There can be Settings view open from general settings and Logs 
+    // at the same time so we need to re-read the config for possible 
+    // changes.
+    //
+    TRAPD(err, iEngine->ConfigL()->GetConfig( iConfig ) );
+    if (err)
+    	{
+    	iCoeEnv->HandleError(err);
+    	}   
+        	
+    TRACE_EXIT_POINT;
+    }
+    
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::HandleLosingForeground
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::HandleLosingForeground()
+    {
+    TRACE_ENTRY_POINT;
+    // Do nothing   
+    TRACE_EXIT_POINT;
+    }
+      
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::ProcessCommandL
+//
+// Called from FW when e.g. cba pressed
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::ProcessCommandL( TInt aCommand )
+    {
+    TRACE_ENTRY_POINT;
+    CAknView::ProcessCommandL( aCommand );
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::ProcessKeyEventL
+// ----------------------------------------------------------------------------
+//
+TBool CLogsSettingsView::ProcessKeyEventL( 
+    const TKeyEvent& aKeyEvent,
+    TEventCode aType)
+    {
+    TRACE_ENTRY_POINT;
+
+    //Copied for base view    
+    if( aType == EEventKey )
+        {
+        switch( aKeyEvent.iCode )
+            {
+            case EKeyApplication0:
+                iCoeEnv->Flush( KDelayMicroSeconds );
+                TRACE_EXIT_POINT;
+                return EFalse;
+            }
+        }
+    
+    TRACE_EXIT_POINT;
+    return EFalse;
+    }
+     
+//
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::ProcessPointerEventL
+//
+// Handler for pointer events, when the current focused item is tapped
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::ProcessPointerEventL( TInt /* aIndex */ )
+	{
+	TRACE_ENTRY_POINT;
+	HandleCommandL( ELogsCmdChange );
+	TRACE_EXIT_POINT;
+	}
+	
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::FocusChangedL
+//
+// Informs subclass that focus is changed in listbox (item is tapped)
+// ----------------------------------------------------------------------------
+//
+// void CLogsSettingsView::FocusChangedL()
+//	{
+//	}
+	
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::TabObserver
+// ----------------------------------------------------------------------------
+//
+MAknTabObserver* CLogsSettingsView::TabObserver()  
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return NULL;  //
+    }
+    
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::HandleCommandL
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::HandleCommandL( TInt aCommandId )
+    {
+    TRACE_ENTRY_POINT;
+    switch( aCommandId )
+        {
+        //
+        // Menu commands
+        //
+        case ELogsCmdChange: // settings item selected from options menu
+            {
+            switch( iContainer->ListBox()->CurrentItemIndex() )
+                {
+                case ELogSettingsLogLength:
+                    if( iState == EStateFinished ) 
+                        {
+                        CmdLogLengthL();     
+                        }
+                    
+                    break;
+                /************************************************
+                "Show Call Duration" moved General Settings application, not in use any more in Logs 
+                case ELogSettingsShowCallDurationPhone:
+                    if( !CallIsActiveL() )
+                        {
+                        CmdShowCallDurationPhoneL();
+                        }
+                    else
+                        {
+
+                        CAknNoteDialog* noteDlg = new( ELeave ) CAknNoteDialog( CAknNoteDialog::ENoTone,
+                                                       CAknNoteDialog::ELongTimeout );
+                        noteDlg->ExecuteLD( R_LOGS_NOTE_DURING_CALL_OPTION_NOT_ALLOWED );
+                        }
+                    break;
+                ************************************************/
+                } // switch
+                break;
+            } // case
+            
+        case EEikCmdExit:       // flow-through
+        case ELogsCmdMenuExit:  // flow-through
+        case EAknSoftkeyExit:
+            if (iForGs)
+                { // Fix for error EAWG-6UGBGV: If opened from general settings we need to change 
+                  // the command id to EEikCmdExit
+                aCommandId = EEikCmdExit;     
+                }
+            AppUi()->HandleCommandL( aCommandId  );  
+            break;        
+        
+        case EAknSoftkeyBack:
+            //Return to previous view if it is from GS or Logs
+            if( iPrevViewId.iAppUid == TUid( KUidGS ) || 
+                iPrevViewId.iAppUid == TUid::Uid( KLogsAppUID3 )) 
+                {
+                AppUi()->ActivateLocalViewL( iPrevViewId.iViewUid );
+                }
+            else
+                //Put Logs to background as unknown application is owner of previous view (e.g. Help)
+                {
+                AppUi()->HandleCommandL( ELogsCmdMenuExit );  
+                }
+
+            break;
+
+        case EAknCmdHelp:
+        
+            if( iContainer )
+                {
+                TCoeHelpContext context;
+                iContainer->GetHelpContext( context );
+                CArrayFixFlat<TCoeHelpContext>* array = new(ELeave)CArrayFixFlat<TCoeHelpContext>(1);
+                array->AppendL( context );
+                HlpLauncher::LaunchHelpApplicationL(iEikonEnv->WsSession(), array );
+                }
+            break;
+
+        default:
+            AppUi()->HandleCommandL( aCommandId );  
+            break;
+        }
+    TRACE_EXIT_POINT;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::DynInitMenuPaneL
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::DynInitMenuPaneL(
+    TInt /* aResourceId */,
+    CEikMenuPane* aMenuPane )
+    {
+    TRACE_ENTRY_POINT;
+    TInt position = -1;
+
+    if( aMenuPane->MenuItemExists( EAknCmdHelp, position ) )
+        {
+        if( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+            {
+            aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse );
+            }
+        else
+            {
+            aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
+            }
+        }
+    TRACE_EXIT_POINT;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::HandleClientRectChange
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::HandleClientRectChange()
+    {
+    TRACE_ENTRY_POINT;
+    
+    if (iContainer)
+        {
+        iContainer->SetRect( ClientRect() );  
+        }
+    
+    TRACE_EXIT_POINT;
+    }
+    
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::HandleListBoxEventL
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::HandleListBoxEventL(
+    CEikListBox* /*aListBox*/,
+    TListBoxEvent aEventType )
+    {
+    TRACE_ENTRY_POINT;
+    // Handle pointer events
+    if( AknLayoutUtils::PenEnabled() )  
+        {
+            switch ( aEventType )
+            {
+            case EEventItemSingleClicked:
+            case EEventEnterKeyPressed:
+                HandleCommandL( ELogsCmdChange ); 
+                break;
+            default:
+                break;
+            }  
+        }
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::MakeSettingLineL
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::MakeSettingLineL(
+    CDesCArrayFlat* aItems,
+    TInt aResourceText )
+    {
+    TRACE_ENTRY_POINT;
+    
+    HBufC* text = iCoeEnv->AllocReadResourceLC( aResourceText );
+    TPtr ptr = text->Des();
+    AknTextUtils::LanguageSpecificNumberConversion( ptr );
+    aItems->AppendL( ptr  );
+    CleanupStack::PopAndDestroy();  // textFromResourceFile
+
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::CmdLogLengthL
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::CmdLogLengthL()
+    {
+    TRACE_ENTRY_POINT;
+    // If dialog already exist, do nothing. Avoids for example
+    // multiple dialogs opening from multiple quick taps. 
+    if (iDialog == NULL)
+        {   
+        TLogConfig temp;
+        
+        // 4 is number of options in query
+        iSettingItems = new( ELeave ) CDesCArrayFlat( 4 );
+        
+        MakeSettingLineL( iSettingItems, R_LOGS_SV_LOG_LENGTH_0_TEXT );
+        MakeSettingLineL( iSettingItems, R_LOGS_SV_LOG_LENGTH_1_TEXT );
+        MakeSettingLineL( iSettingItems, R_LOGS_SV_LOG_LENGTH_10_TEXT );
+        MakeSettingLineL( iSettingItems, R_LOGS_SV_LOG_LENGTH_30_TEXT );
+
+        TInt current( 0 );
+
+        switch( iConfig.iMaxEventAge )
+            {
+            case ELogsConfigAgeNoLog:
+                current = 0;
+                break;
+
+            case ELogsConfigAge1Days:
+                current = 1;
+                break;
+
+            case ELogsConfigAge10Days:
+                current = 2;
+                break;
+
+            case ELogsConfigAge30Days:
+                current = 3;
+                break;
+
+            default:
+                break;
+            }
+
+        iDialog = new ( ELeave ) CAknRadioButtonSettingPage( R_LOGS_SETTINGS_LOG_LENGTH_PAGE, 
+                                                             current , iSettingItems );
+                                        
+        if ( iDialog->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+            {
+            switch( current )
+                {
+                case 0:
+                    temp.iMaxEventAge = ELogsConfigAgeNoLog;
+                    temp.iMaxLogSize = KZeroEventCount;
+                    break;
+
+                case 1:
+                    temp.iMaxEventAge = ELogsConfigAge1Days;
+                    temp.iMaxLogSize = KMaxEventCount;
+                    break;
+
+                case 2:
+                    temp.iMaxEventAge = ELogsConfigAge10Days;
+                    temp.iMaxLogSize = KMaxEventCount;
+                    break;
+
+                case 3:
+                    temp.iMaxEventAge = ELogsConfigAge30Days;
+                    temp.iMaxLogSize = KMaxEventCount;
+                    break;
+
+                default:
+                    break;
+                }
+        
+            if( current == 0 )
+                {
+				// if No Log had been before, don't need pop No Log Confirm Quary and
+				// clear log again.
+                if( iConfig.iMaxEventAge != ELogsConfigAgeNoLog )
+                    {
+                    if( NoLogQueryL() )
+                        {
+                        iConfig.iMaxEventAge = temp.iMaxEventAge;
+                        iConfig.iMaxLogSize = temp.iMaxLogSize;
+                        iEngine->ConfigL()->SetConfig( iConfig );
+                        iEngine->SharedDataL()->SetLoggingEnabled( EFalse );
+                        iEngine->ClearLogsL()->ClearModelL( ELogsMainModel );
+                        iState = EStateActive;
+                        }
+                    }
+                }
+            else
+                {
+                iConfig.iMaxEventAge = temp.iMaxEventAge;
+                iConfig.iMaxLogSize = temp.iMaxLogSize;
+                iEngine->ConfigL()->SetConfig( iConfig );
+                iEngine->SharedDataL()->SetLoggingEnabled( ETrue );
+                iState = EStateActive;
+                }
+
+            iContainer->UpdateListBoxContentL();
+            }
+        delete iSettingItems;    
+        iSettingItems = NULL;
+        iDialog = NULL; //ExecuteLD handles destruction
+        }
+    TRACE_EXIT_POINT;
+    }
+
+
+/************************************************
+"Show Call Duration" moved to General Settings application, not in use any more in Logs 
+
+void CLogsSettingsView::CmdShowCallDurationPhoneL()
+    {
+    // 2 is number of options in query
+    CDesCArrayFlat* items = new( ELeave ) CDesCArrayFlat( 2 );
+    CleanupStack::PushL( items );
+
+    TBool currentItem( iEngine->SharedDataL()->ShowCallDurationPhone() );
+
+    // Timer OFF
+    MakeSettingLineL( items, R_QTN_LOGS_LDV3_TIMER_OFF_TEXT );
+
+    // Timer ON
+    MakeSettingLineL( items, R_QTN_LOGS_LDV3_TIMER_ON_TEXT );
+
+    CAknRadioButtonSettingPage* dlg = new ( ELeave )
+        CAknRadioButtonSettingPage( R_LOGS_SETTINGS_CALL_DURATION_PAGE,
+        ( TInt & )currentItem, items );
+
+    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+        {
+        MakeCallDurationChangeL( currentItem );
+        }
+    CleanupStack::PopAndDestroy(); // items
+    }
+
+void CLogsSettingsView::MakeCallDurationOppositeL()
+    {
+    MakeCallDurationChangeL( ! iEngine->SharedDataL()->ShowCallDurationPhone() );
+    }
+    
+void CLogsSettingsView::MakeCallDurationChangeL( TBool aChange )
+    {
+    iEngine->SharedDataL()->SetShowCallDurationPhone( aChange );
+    //iContainer->CreateListBoxL();
+    iContainer->UpdateListBoxContentL();
+
+    }
+************************************************/
+    
+
+//  Sets logging enabled/disabled
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::NoLogQueryL
+// ----------------------------------------------------------------------------
+//
+TBool CLogsSettingsView::NoLogQueryL()
+    {
+    TRACE_ENTRY_POINT;
+    TBool ret;
+    iNoLogQueryDlg = CAknQueryDialog::NewL();
+
+    ret = iNoLogQueryDlg->ExecuteLD( R_LL_NO_LOG_CONFIRMATION_QUERY );
+    iNoLogQueryDlg = NULL;
+   
+    TRACE_EXIT_POINT;
+    return ret;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::ShowNoteL
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::ShowNoteL(TInt aResourceID)
+    {
+    TRACE_ENTRY_POINT;
+    CAknNoteDialog* noteDlg = new ( ELeave ) 
+                CAknNoteDialog(
+                    CAknNoteDialog::ENoTone, 
+                    CAknNoteDialog::ELongTimeout );
+    noteDlg->ExecuteLD( aResourceID );
+    TRACE_EXIT_POINT;
+    }
+
+
+/************************************************
+"Show Call Duration" moved General Settings application, not in use any more in Logs 
+
+TBool CLogsSettingsView::CallIsActiveL()
+    {
+    MLogsCallStatus* callStatus = CLogsAocObjFactory::CallStatusLC();
+    TBool activeCall( EFalse );
+    User::LeaveIfError( callStatus->CallIsActive( activeCall ) );
+    CleanupStack::PopAndDestroy(); // call status
+    return activeCall;
+    }
+************************************************/
+
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::StateChangedL
+// ----------------------------------------------------------------------------
+//
+void CLogsSettingsView::StateChangedL( MLogsStateHolder* aHolder )
+    {
+    TRACE_ENTRY_POINT;
+	//  void panic as the sharedata may pass the NULL to observer
+    if (!aHolder )
+        {
+        return;
+        }
+    iState = aHolder->State();
+    
+    TVwsViewId activeViewId;
+    TInt ActiveViewExists = AppUi()->GetActiveViewId(activeViewId);
+       
+    if (ActiveViewExists == KErrNone && 
+        activeViewId == ViewId() && IsForeground() )
+    	{ 
+    	//-------------------------------------------------------------	
+    	if( iContainer && iState == EStateFinished )
+    	        {
+    	        iContainer->UpdateListBoxContentL();
+    	        }
+    	   
+	    // If log lenght has changed and there is a dialog open, update dialog to change 
+	    // focus and selected item as there can be Settings view open from general settings 
+	    // and Logs at the same time.
+	    if  (!iNoLogQueryDlg && (iLastMaxEventAge != iConfig.iMaxEventAge) )
+	        {         
+	         if (iDialog && iSettingItems)
+	            {    
+	            TInt current( 0 );
+	                switch( iConfig.iMaxEventAge )
+	                {
+	                case ELogsConfigAgeNoLog:
+	                    current = 0;
+	                    break;
+
+	                case ELogsConfigAge1Days:
+	                    current = 1;
+	                    break;
+
+	                case ELogsConfigAge10Days:
+	                    current = 2;
+	                    break;
+
+	                case ELogsConfigAge30Days:
+	                    current = 3;
+	                    break;
+
+	                default:
+	                    break;
+	                }
+	            
+	            // Update setting item selection and listbox focus
+	            iDialog->SetItemArrayAndSelectionL(iSettingItems, current); 
+	            iDialog->ListBoxControl()->SetCurrentItemIndex(current);
+	            iDialog->ListBoxControl()->FocusChanged( EDrawNow );  
+	            }
+	        } 	
+    	}
+		// for Error EMHU-7PLCXX, close the No Log Quary dialog to avoid the Redundant 
+		// when GS log setting and logs setting open at the same time
+        else
+        {
+        if(iState == EStateLogEnableChanged && iNoLogQueryDlg)
+            {
+            if ( !iEngine->SharedDataL()->IsLoggingEnabled() )
+                {
+                    delete iNoLogQueryDlg;
+					iNoLogQueryDlg = NULL;
+                }
+            }
+    	} //-------------------------------------------------------------
+   
+    // Finally store the current config for future reference value.
+    iLastMaxEventAge = iConfig.iMaxEventAge;     
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::LogAge
+// ----------------------------------------------------------------------------
+//
+TLogAge CLogsSettingsView::LogAge() const
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return iConfig.iMaxEventAge;
+    }
+    
+// ----------------------------------------------------------------------------
+// CLogsSettingsView::Engine
+// ----------------------------------------------------------------------------
+//
+CLogsEngine* CLogsSettingsView::Engine()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return iEngine;
+    }
+
+
+
+//  End of File