diff -r 000000000000 -r ba25891c3a9e appinstall_plat/appmngr2runtimeapi/src/appmngr2infoiterator.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/appinstall_plat/appmngr2runtimeapi/src/appmngr2infoiterator.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,180 @@ +/* +* 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: Implements MCUIInfoIterator API for CCUIDetailsDialog +* +*/ + + +#include "appmngr2infoiterator.h" // CAppMngr2InfoIterator +#include "appmngr2infobase.h" // CAppMngr2InfoBase +#include // CDesC8Array +#include // StringLoader +#include // Resource IDs +#include // Resource IDs + +const TInt KGranularity = 8; + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::CAppMngr2InfoIterator() +// --------------------------------------------------------------------------- +// +EXPORT_C CAppMngr2InfoIterator::CAppMngr2InfoIterator( CAppMngr2InfoBase& aInfo, + TAppMngr2InfoType aInfoType ) : iInfo( aInfo ), iInfoType( aInfoType ) + { + } + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::BaseConstructL() +// --------------------------------------------------------------------------- +// +EXPORT_C void CAppMngr2InfoIterator::BaseConstructL() + { + iKeys = new ( ELeave ) CDesCArrayFlat( KGranularity ); + iValues = new ( ELeave ) CDesCArrayFlat( KGranularity ); + SetAllFieldsL(); + } + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::~CAppMngr2InfoIterator() +// --------------------------------------------------------------------------- +// +EXPORT_C CAppMngr2InfoIterator::~CAppMngr2InfoIterator() + { + if( iKeys ) + { + iKeys->Reset(); + delete iKeys; + } + if( iValues ) + { + iValues->Reset(); + delete iValues; + } + } + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::HasNext() +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CAppMngr2InfoIterator::HasNext() const + { + TInt keysCount = iKeys->Count(); + return ( keysCount > 0 && keysCount > iCurrentIndex ); + } + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::Next() +// --------------------------------------------------------------------------- +// +EXPORT_C void CAppMngr2InfoIterator::Next( TPtrC& aKey, TPtrC& aValue ) + { + aKey.Set( ( *iKeys )[ iCurrentIndex ] ); + aValue.Set( ( *iValues )[ iCurrentIndex ] ); + iCurrentIndex++; + } + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::Reset() +// --------------------------------------------------------------------------- +// +EXPORT_C void CAppMngr2InfoIterator::Reset() + { + iCurrentIndex = 0; + } + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::SetFieldL() +// --------------------------------------------------------------------------- +// +EXPORT_C void CAppMngr2InfoIterator::SetFieldL( TInt aResourceId, const TDesC& aValue ) + { + HBufC* fieldName = StringLoader::LoadLC( aResourceId ); + iKeys->AppendL( fieldName->Des() ); + CleanupStack::PopAndDestroy( fieldName ); + iValues->AppendL( aValue ); + } + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::SetAllFieldsL() +// --------------------------------------------------------------------------- +// +EXPORT_C void CAppMngr2InfoIterator::SetAllFieldsL() + { + SetFieldL( R_SWCOMMON_DETAIL_NAME, iInfo.Name() ); + SetStatusL(); + SetLocationL(); + SetFieldL( R_SWCOMMON_DETAIL_APPSIZE, iInfo.Details() ); + SetOtherFieldsL(); + } + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::SetStatusL() +// --------------------------------------------------------------------------- +// +EXPORT_C void CAppMngr2InfoIterator::SetStatusL() + { + HBufC* status = NULL; + if( iInfoType == EAppMngr2StatusInstalled ) + { + status = StringLoader::LoadLC( R_SWCOMMON_DETAIL_VALUE_INSTALLED ); + } + else // iInfoType is EAppMngr2StatusNotInstalled + { + status = StringLoader::LoadLC( R_SWCOMMON_DETAIL_VALUE_NOT_INSTALLED ); + } + SetFieldL( R_SWCOMMON_DETAIL_STATUS, *status ); + CleanupStack::PopAndDestroy( status ); + } + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::SetLocationL() +// --------------------------------------------------------------------------- +// +EXPORT_C void CAppMngr2InfoIterator::SetLocationL() + { + TChar driveChar; + RFs::DriveToChar( iInfo.LocationDrive(), driveChar ); + const TInt KSingleLetter = 1; + TBuf driveLetter; + driveLetter.Append( driveChar ); + + HBufC* memory = NULL; + if( iInfo.Location() == EAppMngr2LocationMemoryCard ) + { + memory = StringLoader::LoadLC( R_SWCOMMON_DETAIL_VALUE_MMC, driveLetter ); + } + else if( iInfo.Location() == EAppMngr2LocationMassStorage ) + { + memory = StringLoader::LoadLC( R_SWCOMMON_DETAIL_VALUE_MASS_STORAGE, driveLetter ); + } + else + { + memory = StringLoader::LoadLC( R_SWCOMMON_DETAIL_VALUE_DEVICE, driveLetter ); + } + SetFieldL( R_SWCOMMON_DETAIL_LOCATION, *memory ); + CleanupStack::PopAndDestroy( memory ); + } + +// --------------------------------------------------------------------------- +// CAppMngr2InfoIterator::SetOtherFieldsL() +// --------------------------------------------------------------------------- +// +EXPORT_C void CAppMngr2InfoIterator::SetOtherFieldsL() + { + // empty default implementation + } +