diff -r 000000000000 -r e686773b3f54 logsui/LogsPlugin/CLogsSettingsView.cpp --- /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 +#include + +#include +#include "LogsUID.h" + +#include //parser +#include + +#include +#include // Series 60 localisation stringloader +#include + +#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 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* array = new(ELeave)CArrayFixFlat(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