diff -r 000000000000 -r 4e91876724a2 photosgallery/logging/app/src/glxloggingappui.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/logging/app/src/glxloggingappui.cpp Thu Dec 17 08:45:44 2009 +0200 @@ -0,0 +1,131 @@ +/* +* Copyright (c) 2008-2009 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: Logging utility application for MC Photos +* +*/ + + + + +#include +#include + +#include + +#include "glxlogging.pan" +#include "glxloggingappui.h" +#include "glxloggingapp.hrh" + + +// Constants +namespace + { + +const TInt KLoggingDriveLetterLength = 3; + +_LIT(KColonBackSlash, ":\\"); + +#ifdef __WINSCW__ + // log to the c: drive on the emulator + _LIT(KGlxLoggingFolderDrive, "c"); +#else + // log to the root of the removable media card on hardware + _LIT(KGlxLoggingFolderDrive, "e"); +#endif + + // write logged data to the file every 0.5s + const TInt KGlxLoggingIntervalMicroSec = 500000; + } + +// ----------------------------------------------------------------------------- +// ConstructL +// ----------------------------------------------------------------------------- +void CGlxLoggingAppUi::ConstructL() + { + BaseConstructL(); + + // we dont want to respond to shutdown events + iEikonEnv->SetRespondsToShutdownEvent( EFalse ); + + // Log manager + iLogManager.CreateL(); + + // Create and start the timer + iTimer = CPeriodic::NewL( CActive::EPriorityStandard ); + iTimer->Start( KGlxLoggingIntervalMicroSec, + KGlxLoggingIntervalMicroSec, TCallBack( TimerCallback, this ) ); + } + +// ----------------------------------------------------------------------------- +// CGlxLoggingAppUi +// ----------------------------------------------------------------------------- +CGlxLoggingAppUi::CGlxLoggingAppUi() + { + // delete timer + delete iTimer; + // release the chunks + iLogManager.Release(); + } + +// ----------------------------------------------------------------------------- +// ~CGlxLoggingAppUi +// ----------------------------------------------------------------------------- +CGlxLoggingAppUi::~CGlxLoggingAppUi() + { + // try to write the remainder of the log + DoLog(); + } + +// ----------------------------------------------------------------------------- +// TimerCallback +// ----------------------------------------------------------------------------- +TInt CGlxLoggingAppUi::TimerCallback( TAny* aParam ) + { + return reinterpret_cast( aParam )->DoLog(); + } + +// ----------------------------------------------------------------------------- +// DoLog +// ----------------------------------------------------------------------------- +TInt CGlxLoggingAppUi::DoLog() + { + // Timer has called back so update the log file with all the entries + // that have been written to the chunks in the meantime + // just try to write all, nothing to do on leave + TBuf driveLetter; + driveLetter.Append(KGlxLoggingFolderDrive); + driveLetter.Append(KColonBackSlash); + TRAP_IGNORE( iLogManager.CommitToFileL( driveLetter ) ); + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// HandleCommandL. handle any menu commands +// ----------------------------------------------------------------------------- +void CGlxLoggingAppUi::HandleCommandL(TInt aCommand) + { + switch(aCommand) + { + case EEikCmdExit: + case EAknSoftkeyExit: + Exit(); + break; + default: + Panic(EGlxLoggingBasicUi); + break; + } + } + + +