diff -r 000000000000 -r 32704c33136d ncdengine/debuglogger/src/catalogsloggerappview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/debuglogger/src/catalogsloggerappview.cpp Tue Jan 26 12:06:03 2010 +0200 @@ -0,0 +1,331 @@ +/* +* 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: +* +*/ + + +#include +#include +#include +#include +#include +#include + +#include "catalogsloggerappview.h" +#include "catalogsdebugdefs.h" + +CAknSettingItem* CCatalogsLoggerSettingList::CreateSettingItemL( TInt aIdentifier ) + { + + // Set/clear the setting value based on the corresponding bit + // on the setting property + + TInt settingValue; +// RProperty::Get( KCatalogsDebugPropertyCat, +// ECatalogsLoggerSettingsProperty, +// settingValue ); + settingValue = 0; + + iFlags[aIdentifier] = settingValue & ( 1 << aIdentifier ); + + // Create the setting item + CAknSettingItem* settingItem = NULL; + settingItem = new (ELeave) + CAknBinaryPopupSettingItem( aIdentifier, iFlags[aIdentifier] ); + + return settingItem; + } + +void CCatalogsLoggerSettingList::EditItemL( TInt aIndex, TBool aCalledFromMenu ) + { + // Store the value + CAknSettingItemList::EditItemL( aIndex, aCalledFromMenu ); + ( *SettingItemArray() )[aIndex]->StoreL(); + + // Read the current settings values from the property + TInt settingBits; +// RProperty::Get( KCatalogsDebugPropertyCat, +// ECatalogsLoggerSettingsProperty, +// settingBits ); + settingBits = 0; + + // Set/clear the bit corresoponding this setting value + TInt settingId = ( *SettingItemArray())[aIndex]->Identifier(); + if( iFlags[settingId] ) + { + settingBits |= ( 1 << settingId ); + } + else + { + settingBits &= ~( 1 << settingId ); + } + + /* + TInt err = RProperty::Set( KCatalogsDebugPropertyCat, + ECatalogsLoggerSettingsProperty, + settingBits ); + User::LeaveIfError( err ); + */ +} + +CCatalogsLoggerAppView* CCatalogsLoggerAppView::NewL(const TRect& aRect) + { + CCatalogsLoggerAppView* self = CCatalogsLoggerAppView::NewLC(aRect); + CleanupStack::Pop(self); + return self; + } + +CCatalogsLoggerAppView* CCatalogsLoggerAppView::NewLC(const TRect& aRect) + { + CCatalogsLoggerAppView* self = new (ELeave) CCatalogsLoggerAppView; + CleanupStack::PushL(self); + self->ConstructL(aRect); + return self; + } + +CCatalogsLoggerAppView::CCatalogsLoggerAppView() + : iSettingsView( NULL ) + { + } + +CCatalogsLoggerAppView::~CCatalogsLoggerAppView() + { + delete iSettingsView; + iSettingsView = NULL; + delete iData; + } + +void CCatalogsLoggerAppView::ConstructL(const TRect& aRect) + { + CreateWindowL(); + SetRect(aRect); + + // Create settings view +// iSettingsView = new( ELeave ) CCatalogsLoggerSettingList(); +// iSettingsView->SetContainerWindowL( *this ); +// iSettingsView->ConstructFromResourceL( R_CATALOGS_LOGGER_SETTING_ITEM_LIST ); +// iSettingsView->ActivateL(); + + ActivateL(); + } + +void CCatalogsLoggerAppView::Draw(const TRect& /*aRect*/) const + { + // Clear the screen, the list will draw itself after this + CWindowGc& gc = SystemGc(); + + // Gets the control's extent + TRect drawRect( Rect()); + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.SetBrushColor( KRgbWhite ); + gc.SetPenColor( KRgbBlack ); + + gc.Clear( drawRect ); + + // Print some info + + const CFont* font = LatinBold19(); + gc.UseFont( font ); + + TInt yOffset = Rect().iTl.iY + font->HeightInPixels(); + + if( iLoggerStatus ) + { + gc.DrawText( _L("Logging on"), TPoint( Rect().iTl.iX+2, yOffset ) ); + } + else + { + gc.DrawText( _L("Logging off"), TPoint( Rect().iTl.iX+2, yOffset ) ); + } + yOffset += font->HeightInPixels(); + TBuf<100> line; + line.Copy(_L("Chunks: ")); + line.AppendNum( iLoggerNumber ); + line.Append(_L(" Offset: ")); + line.AppendNum( iLoggerOffset>>10 ); + gc.DrawText( line, TPoint( Rect().iTl.iX+2, yOffset ) ); yOffset += font->HeightInPixels(); + + line.Copy(_L("Log drive: ")); + line.Append( iLoggerDrive == EDriveC ? 'C' : 'E' ); + + TVolumeInfo info; + iEikonEnv->FsSession().Volume( info, iLoggerDrive ); + line.Append(_L(" Free space: ")); + line.AppendNum( info.iFree/1024/1024 ); // megabytes + + gc.DrawText( line, TPoint( Rect().iTl.iX+2, yOffset ) ); yOffset += font->HeightInPixels(); + + // Print some l0gzor + + font = LatinPlain12(); + gc.UseFont( font ); + +// TLex18 lex; +// if( iData && *iData != KNullDesC8 ) +// { +// lex.Assign( *iData ); +// } +// else +// { +// _LIT8(KHorror,"*not set*\n*not set*\n*not set*\n"); +// lex.Assign(KHorror); +// } + + if( iData ) + { + CArrayFixFlat* lines = new(ELeave) CArrayFixFlat( 32 ); + CleanupStack::PushL( lines ); + AknTextUtils::WrapToArrayL( iData->Des(), Rect().Width() - 6, *font, *lines ); + + for( TInt i = 0; i < lines->Count(); i++ ) + { + gc.DrawText( lines->At( i ), TPoint( Rect().iTl.iX+2, yOffset ) ); + yOffset += font->HeightInPixels(); + if( yOffset >= Rect().iBr.iY ) + { + break; + } + } + CleanupStack::PopAndDestroy( lines ); + } + +// lex.Mark(); +// while( 1 ) +// { +// if( lex.Peek() == '\n' || lex.Eos() ) +// { +// TPtrC8 marked = lex.MarkedToken(); +// HBufC* buffer = HBufC::NewLC( marked.Length() ); +// buffer->Des().Copy( marked ); + +// CArrayFixFlat* lines = new(ELeave) CArrayFixFlat( 8 ); +// CleanupStack::PushL( lines ); +// AknTextUtils::WrapToArrayL( +// buffer->Des(), +// Rect().Width() - 6, +// *font, +// *lines +// ); + +// for( TInt i = 0; i < lines->Count(); i++ ) +// { +// gc.DrawText( lines->At( i ), TPoint( Rect().iTl.iX+2, yOffset ) ); +// yOffset += font->HeightInPixels(); +// if( yOffset >= Rect().iBr.iY ) +// { +// return; +// } +// } + +// CleanupStack::PopAndDestroy( lines ); +// CleanupStack::PopAndDestroy( buffer ); +// if( ! lex.Eos() ) +// { +// lex.SkipAndMark(1); +// } +// else +// { +// break; +// } +// } +// else +// { +// lex.Inc(); +// } +// } + } + +TInt CCatalogsLoggerAppView::CountComponentControls() const + { + if( iSettingsView != NULL ) + { + return 1; + } + else + { + return 0; + } + } + +CCoeControl* CCatalogsLoggerAppView::ComponentControl( TInt aIndex ) const + { + switch ( aIndex ) + { + case 0: + return iSettingsView; + default: + return NULL; + } + } + +void CCatalogsLoggerAppView::SizeChanged() + { + if ( iSettingsView ) + { + iSettingsView->SetRect( Rect() ); + } + } + +TKeyResponse CCatalogsLoggerAppView::OfferKeyEventL( const TKeyEvent &aKeyEvent, TEventCode aType ) +{ + if ( iSettingsView ) + { + TKeyResponse response = iSettingsView->OfferKeyEventL( aKeyEvent, aType ); + + DrawNow(); + return response; + } + return EKeyWasNotConsumed; +} + +void CCatalogsLoggerAppView::SetLoggerStatus( TBool aStatus ) + { + iLoggerStatus = aStatus; + DrawDeferred(); + } +void CCatalogsLoggerAppView::SetLoggerNumber( TInt aNumber, TInt aOffset ) + { + iLoggerNumber = aNumber; + iLoggerOffset = aOffset; + DrawDeferred(); + } + +void CCatalogsLoggerAppView::SetLoggerDrive( TInt aDrive ) + { + iLoggerDrive = aDrive; + DrawDeferred(); + } + +static void ReplaceChar( TPtr aDes, TChar aOldChar, TChar aNewChar ) + { + for( TInt i = 0; i < aDes.Length(); ++i ) + { + if ( aDes[ i ] == aOldChar ) + { + aDes[ i ] = aNewChar; + } + } + } + +void CCatalogsLoggerAppView::SetData( TPtrC8 aData ) + { + delete iData; + iData = 0; + iData = HBufC::NewL( aData.Length() ); + iData->Des().Copy( aData ); + ReplaceChar( iData->Des(), TChar('\t'), TChar(' ') ); + DrawDeferred(); + } +