diff -r 000000000000 -r ba25891c3a9e ncdengine/debuglogger/src/catalogsloggerappui.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/debuglogger/src/catalogsloggerappui.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,189 @@ +/* +* Copyright (c) 2006 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: ?Description +* +*/ + + +#include +#include +#include +#include +#include +#include + + +#include +#include "catalogslogger.pan" +#include "catalogsloggerappui.h" +#include "catalogsloggerappview.h" +#include "catalogslogger.hrh" +#include "catalogsloggermsgqueueobserver.h" +#include "catalogsdebugdefs.h" +#include "osmdelay.h" + +const TInt KTimerDelay = 1*1000000; // 1 s +const TInt KStarupActionDelay = 500000; // 500 ms + +static TInt TimerCallBack( TAny* aAppUi ) + { + reinterpret_cast( aAppUi )->TimerEvent(); + return 0; + } +static TInt StartupActionCallBack( TAny* aAppUi ) + { + reinterpret_cast( aAppUi )->StartupTimerEvent(); + return 0; + } + +// ConstructL is called by the application framework +void CCatalogsLoggerAppUi::ConstructL() + { + BaseConstructL(); + iDelay = COsmDelay::NewL( TCallBack( TimerCallBack, this ) ); + iStartupActionDelay = COsmDelay::NewL( TCallBack( StartupActionCallBack, this ) ); + + iAppView = CCatalogsLoggerAppView::NewL( ClientRect() ); + + AddToStackL( iAppView ); + + // The logger message handler + iMsgObserver = CCatalogsLoggerMsgQueueObserver::NewL(); + iMsgObserver->SetEnableFlags( + ECatalogsDebugFlagEnableError | + ECatalogsDebugFlagEnableWarning | + ECatalogsDebugFlagEnableTrace | + ECatalogsDebugFlagEnableInfo ); + iMsgObserver->StartLogging(); + + iAppView->SetLoggerStatus( ETrue ); + + iDelay->After( KTimerDelay ); + iStartupActionDelay->After( KStarupActionDelay ); + } + +CCatalogsLoggerAppUi::CCatalogsLoggerAppUi() + { + // no implementation required + } + +CCatalogsLoggerAppUi::~CCatalogsLoggerAppUi() + { + delete iDelay; + delete iStartupActionDelay; + if (iAppView) + { + RemoveFromStack( iAppView ); + delete iAppView; + iAppView = NULL; + + delete iMsgObserver; + iMsgObserver = NULL; + } + } + +// handle any menu commands +void CCatalogsLoggerAppUi::HandleCommandL(TInt aCommand) + { + switch( aCommand ) + { + case EEikCmdExit: + case EAknSoftkeyExit: + Exit(); + break; + + case ECatalogsLoggerCommandStart: + { + iMsgObserver->StartLogging(); + iAppView->SetLoggerStatus( ETrue ); + + } + break; + + case ECatalogsLoggerCommandStop: + { + iMsgObserver->StopLogging(); + iAppView->SetLoggerStatus( EFalse ); + } + break; + + case ECatalogsLoggerCommandSendFile: + { + iMsgObserver->SendFileL(); + } + break; + case ECatalogsLoggerCommandClearLog: + { + TInt err = iMsgObserver->ClearLog(); + + if ( err != KErrNone ) + { + // Show error note + } + } + break; + +#ifndef __SERIES60_30__ + // handle events from Active applications-menu option + case EAknCmdTaskSwapper: + { + // do nothing here + break; + } +#endif + case ECatalogsLoggerCommandBackground: + { + TApaTask task(iEikonEnv->WsSession( )); + task.SetWgId(CEikonEnv::Static()->RootWin().Identifier()); + task.SendToBackground(); + } + break; + default: + Panic( ECatalogsLoggerBasicUi ); + break; + } + } + +void CCatalogsLoggerAppUi::TimerEvent() + { + iAppView->SetLoggerNumber( iMsgObserver->FunCounter(), + iMsgObserver->CurrentChunkOffset() ); + iAppView->SetLoggerDrive( iMsgObserver->LogDrive() ); + iAppView->SetData( iMsgObserver->LastData( 1024 ) ); + iDelay->After( KTimerDelay ); + } + +void CCatalogsLoggerAppUi::StartupTimerEvent() + { + // After starup, send application directly to background. + // This removes the need to do that manually. + TRAP_IGNORE( HandleCommandL( ECatalogsLoggerCommandBackground ); ); + } + +void CCatalogsLoggerAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane *aMenuPane) + { + if( aResourceId == R_CATALOGSLOGGER_MENU ) + { + if( iMsgObserver->IsLogging() ) + { + // Running already, disable start. + aMenuPane->SetItemDimmed( ECatalogsLoggerCommandStart, ETrue ); + } + else + { + // not running, disable stop + aMenuPane->SetItemDimmed( ECatalogsLoggerCommandStop, ETrue ); + } + } + }