diff -r 000000000000 -r d6fe6244b863 memspyui/source/MemSpyViewDriveInfo.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/memspyui/source/MemSpyViewDriveInfo.cpp Tue Feb 02 00:17:27 2010 +0200 @@ -0,0 +1,381 @@ +/* +* Copyright (c) 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: +* +*/ + +#include "MemSpyViewDriveInfo.h" + +// System includes +#include + +// Engine includes +#include +#include +#include +#include +#include +#include +#include +#include + +// User includes +#include "MemSpyUiUtils.h" +#include "MemSpyViewMainMenu.h" + + + +CMemSpyViewDriveInfoBase::CMemSpyViewDriveInfoBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver ) +: CMemSpyViewBase( aEngine, aObserver ) + { + } + + +CMemSpyViewDriveInfoBase::~CMemSpyViewDriveInfoBase() + { + if ( iList ) + { + iList->SetObserver( NULL ); + } + // + delete iList; + } + + +void CMemSpyViewDriveInfoBase::BaseConstructL() + { + iList = iEngine.HelperFileSystem().DriveListL(); + } + + +TBool CMemSpyViewDriveInfoBase::HandleCommandL( TInt aCommand ) + { + TBool handled = ETrue; + // + switch ( aCommand ) + { + default: + handled = CMemSpyViewBase::HandleCommandL( aCommand ); + break; + } + // + return handled; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CMemSpyViewDriveList::CMemSpyViewDriveList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver ) +: CMemSpyViewDriveInfoBase( aEngine, aObserver ), iUseDriveNumber( EFalse ), iDriveNumber( EDriveA ) + { + } + + +CMemSpyViewDriveList::CMemSpyViewDriveList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TDriveNumber aDriveNumber ) +: CMemSpyViewDriveInfoBase( aEngine, aObserver ), iUseDriveNumber( ETrue ), iDriveNumber( aDriveNumber ) + { + } + + +void CMemSpyViewDriveList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune ) + { + BaseConstructL(); + + _LIT( KTitle, "Drive Summary" ); + SetTitleL( KTitle ); + + // Start watching list + iList->SetObserver( this ); + + // Finish construction + CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune ); + + if ( iUseDriveNumber ) + { +#ifdef _DEBUG + RDebug::Printf( "CMemSpyViewDriveList::ConstructL() - iDriveNumber: %c:", iDriveNumber + 'A' ); +#endif + iCurrentDrive = iList->EntryByDriveNumber( iDriveNumber ); + +#ifdef _DEBUG + RDebug::Printf( "CMemSpyViewDriveList::ConstructL() - iCurrentDrive: 0x%08x", iCurrentDrive ); +#endif + if ( iCurrentDrive ) + { + const TInt index = iList->ItemIndex( *iCurrentDrive ); +#ifdef _DEBUG + RDebug::Printf( "CMemSpyViewDriveList::ConstructL() - index: %d", index ); +#endif + iListBox->SetCurrentItemIndex( index ); + HandleListBoxItemSelectedL( index ); + } + } + + iListBox->DrawDeferred(); + } + + +TMemSpyViewType CMemSpyViewDriveList::ViewType() const + { + return EMemSpyViewTypeDriveSummary; + } + + +CMemSpyViewBase* CMemSpyViewDriveList::PrepareParentViewL() + { + CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver ); + CleanupStack::PushL( parent ); + parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() ); + CleanupStack::Pop( parent ); + // + if ( parent ) + { + iList->SetObserver( NULL ); + } + // + return parent; + } + + +CMemSpyViewBase* CMemSpyViewDriveList::PrepareChildViewL() + { + ASSERT( iCurrentDrive ); + CMemSpyViewBase* child = new(ELeave) CMemSpyViewDriveInfo( iEngine, iObserver, iCurrentDrive->DriveNumber() ); + + // Stop watching list + if ( child ) + { + iList->SetObserver( NULL ); + } + + // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now. + // This object is about to die in any case. + iList = NULL; + + CleanupStack::PushL( child ); + child->ConstructL( Rect(), *Parent() ); + CleanupStack::Pop( child ); + return child; + } + + +void CMemSpyViewDriveList::RefreshL() + { + if ( iList ) + { + iList->SetObserver( NULL ); + } + // + CMemSpyEngineDriveList* list = iEngine.HelperFileSystem().DriveListL(); + delete iList; + iList = list; + iList->SetObserver( this ); + // + SetListBoxModelL(); + CMemSpyViewBase::RefreshL(); + } + + +void CMemSpyViewDriveList::SetListBoxModelL() + { + CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox ); + listbox->Model()->SetItemTextArray( iList ); + listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); + } + + +void CMemSpyViewDriveList::HandleListBoxItemActionedL( TInt aIndex ) + { + const TInt count = iList->Count(); + if ( aIndex >= 0 && aIndex < count ) + { + CMemSpyEngineDriveEntry& entry = iList->At( aIndex ); + iCurrentDrive = &entry; + } + else + { + iCurrentDrive = NULL; + } + + // Notify observer about item selection + ReportEventL( MMemSpyViewObserver::EEventItemActioned ); + } + + +void CMemSpyViewDriveList::HandleListBoxItemSelectedL( TInt aIndex ) + { + const TInt count = iList->Count(); + if ( aIndex >= 0 && aIndex < count ) + { + CMemSpyEngineDriveEntry& entry = iList->At( aIndex ); + iCurrentDrive = &entry; + } + else + { + iCurrentDrive = NULL; + } + + // Notify observer about item selection + ReportEventL( MMemSpyViewObserver::EEventItemSelected ); + } + + +void CMemSpyViewDriveList::HandleDriveListChangedL( const CMemSpyEngineDriveList& /*aList*/ ) + { + RefreshL(); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CMemSpyViewDriveInfo::CMemSpyViewDriveInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TDriveNumber aDriveNumber ) +: CMemSpyViewDriveInfoBase( aEngine, aObserver ), iDriveNumber( aDriveNumber ) + { + } + + +void CMemSpyViewDriveInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune ) + { + BaseConstructL(); + // + iDriveInfo = iList->EntryByDriveNumber( iDriveNumber ); + if ( !iDriveInfo ) + { + User::Leave( KErrNotFound ); + } + iDriveInfo->SetObserver( this ); + + _LIT( KTitleFormat, "Drive %S Info" ); + const TDriveName name( iDriveInfo->DriveUnit().Name() ); + TName title; + title.Format( KTitleFormat, &name ); + SetTitleL( title ); + + // Finish construction + CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune ); + } + + +void CMemSpyViewDriveInfo::RefreshL() + { + SetListBoxModelL(); + CMemSpyViewBase::RefreshL(); + } + + +TMemSpyViewType CMemSpyViewDriveInfo::ViewType() const + { + return EMemSpyViewTypeDriveInfo; + } + + +CMemSpyViewBase* CMemSpyViewDriveInfo::PrepareParentViewL() + { + ASSERT( iDriveInfo ); + CMemSpyViewDriveList* parent = new(ELeave) CMemSpyViewDriveList( iEngine, iObserver, iDriveInfo->DriveNumber() ); + CleanupStack::PushL( parent ); + parent->ConstructL( Rect(), *Parent() ); + CleanupStack::Pop( parent ); + // + if ( parent ) + { + iDriveInfo->SetObserver( NULL ); + } + // + return parent; + } + + +void CMemSpyViewDriveInfo::SetListBoxModelL() + { + if ( iDriveInfo ) + { + CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox ); + listbox->Model()->SetItemTextArray( iDriveInfo ); + listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); + } + } + + +void CMemSpyViewDriveInfo::HandleDriveEntryChangedL( const CMemSpyEngineDriveEntry& /*aEntry*/ ) + { + RefreshL(); + } + + + + + + + + + + + +