diff -r b3cee849fa46 -r fad26422216a memspyui/ui/avkon/src/MemSpyViewFBServBitmaps.cpp --- a/memspyui/ui/avkon/src/MemSpyViewFBServBitmaps.cpp Tue Aug 31 15:15:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,746 +0,0 @@ -/* -* 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 "MemSpyViewFBServBitmaps.h" - -// System includes -#include - -// Engine includes -#include -#include -#include -#include -#include -#include -#include -#include - -// User includes -#include "MemSpyUiUtils.h" -#include "MemSpyViewMainMenu.h" -#include "MemSpyViewThreads.h" -#include "MemSpyContainerObserver.h" -#include "MemSpyExportBitmapsToMemoryCardDialog.h" - -// Constants -const TInt KMemSpyIdleResetListboxTimerPeriod = 500000; -const TInt KMemSpyImageSlideshowPeriod = 1000000; - - - -CMemSpyViewFBServBase::CMemSpyViewFBServBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps ) -: CMemSpyViewBase( aEngine, aObserver ), iBitmaps( aBitmaps ) - { - } - - -CMemSpyViewFBServBase::~CMemSpyViewFBServBase() - { -#ifdef _DEBUG - RDebug::Printf("CMemSpyViewFBServBase::~CMemSpyViewFBServBase() - deleting bitmaps: 0x%08x", iBitmaps ); -#endif - delete iBitmaps; - } - - -TBool CMemSpyViewFBServBase::HandleCommandL( TInt aCommand ) - { - TBool handled = ETrue; - // - switch ( aCommand ) - { - case EMemSpyCmdImagesSlideshow: - OnCmdSlideShowL(); - break; -#ifndef __WINS__ - case EMemSpyCmdImagesSaveAllToMemoryCard: - OnCmdExportToMemoryCardL(); - break; -#endif - case EMemSpyCmdImagesListing: - OnCmdImageListingL(); - break; - - default: - handled = CMemSpyViewBase::HandleCommandL( aCommand ); - break; - } - // - return handled; - } - - -void CMemSpyViewFBServBase::OnCmdSlideShowL() - { - TInt index = 0; - CMemSpyViewFBServSlideshow::NewLD( *iBitmaps, index ); - - // Select the item that was last displayed - const TInt count = iBitmaps->Count(); - if ( iListBox && index >= 0 && index < count ) - { - iListBox->SetCurrentItemIndex( index ); - HandleListBoxItemSelectedL( index ); - DrawDeferred(); - } - } - - -void CMemSpyViewFBServBase::OnCmdExportToMemoryCardL() - { - // Deletes itself - CMemSpyExportBitmapsToMemoryCardDialog::NewL( iCoeEnv->FsSession(), *iBitmaps ); - } - - -void CMemSpyViewFBServBase::OnCmdImageListingL() - { - // Begin a new data stream - _LIT( KMemSpyContext, "Bitmap List - " ); - _LIT( KMemSpyFolder, "Bitmaps" ); - iEngine.Sink().DataStreamBeginL( KMemSpyContext, KMemSpyFolder ); - - // Set prefix for overall listing - _LIT(KOverallPrefix, "Bitmap List - "); - iEngine.Sink().OutputPrefixSetLC( KOverallPrefix ); - - // Create header - CMemSpyEngineFbServBitmap::OutputDataColumnsL( iEngine ); - - // List items - const TInt count = iBitmaps->Count(); - for(TInt i=0; iAt( i ); - // - bitmap.OutputDataL( iEngine ); - } - - // Tidy up - CleanupStack::PopAndDestroy(); // prefix - - // End data stream - iEngine.Sink().DataStreamEndL(); - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver ) -: CMemSpyViewFBServBase( aEngine, aObserver, NULL ) - { -#ifdef _DEBUG - RDebug::Printf("CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps(1) - iBitmaps is: 0x%08x", iBitmaps ); -#endif - } - - -CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps ) -: CMemSpyViewFBServBase( aEngine, aObserver, aBitmaps ) - { -#ifdef _DEBUG - RDebug::Printf("CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps(2) - iBitmaps is: 0x%08x", iBitmaps ); -#endif - } - - -CMemSpyViewFBServBitmaps::~CMemSpyViewFBServBitmaps() - { - delete iIdleResetListboxTimer; - iBitmapHandles.Close(); - } - - -void CMemSpyViewFBServBitmaps::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune ) - { - _LIT( KTitle, "Font & Bitmap Server" ); - SetTitleL( KTitle ); - - if ( iBitmaps == NULL ) - { - // Prepare bitmap handles - iEngine.HelperFbServ().GetArrayOfBitmapHandlesL( iBitmapHandles ); - - // Create bitmap array - construction occurs asynchronously - iBitmaps = CMemSpyEngineFbServBitmapArray::NewL( CActive::EPriorityIdle, iBitmapHandles, *this ); - } - - // Finish construction - CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune ); - - // Create idle listbox refresh timer - if ( iBitmaps->Count() == 0 ) - { - iIdleResetListboxTimer = CPeriodic::NewL( CActive::EPriorityLow ); - } - else - { - if ( aSelectionRune != NULL ) - { - iCurrentBitmap = reinterpret_cast< CMemSpyEngineFbServBitmap* >( aSelectionRune ); - const TInt index = iBitmaps->BitmapIndexByHandle( iCurrentBitmap->Handle() ); - iListBox->SetCurrentItemIndex( index ); - HandleListBoxItemSelectedL( index ); - } - - iListBox->DrawDeferred(); - } - } - - -void CMemSpyViewFBServBitmaps::RefreshL() - { -#ifdef _DEBUG - RDebug::Printf("CMemSpyViewFBServBitmaps::RefreshL() - iBitmaps->Count(): %d", iBitmaps->Count()); -#endif - - SetListBoxModelL(); - CMemSpyViewBase::RefreshL(); - } - - -TMemSpyViewType CMemSpyViewFBServBitmaps::ViewType() const - { - return EMemSpyViewTypeFBServBitmaps; - } - - -CMemSpyViewBase* CMemSpyViewFBServBitmaps::PrepareParentViewL() - { - CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver ); - CleanupStack::PushL( parent ); - parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() ); - CleanupStack::Pop( parent ); - return parent; - } - - -CMemSpyViewBase* CMemSpyViewFBServBitmaps::PrepareChildViewL() - { - CMemSpyViewBase* child = new(ELeave) CMemSpyViewFBServBitmapInfo( iEngine, iObserver, iBitmaps, *iCurrentBitmap ); - - // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now. - // This object is about to die in any case. - iBitmaps = NULL; - - CleanupStack::PushL( child ); - child->ConstructL( Rect(), *Parent() ); - CleanupStack::Pop( child ); - return child; - } - - -void CMemSpyViewFBServBitmaps::HandleFbServBitmapArrayEventL( TEvent aEvent ) - { - if ( aEvent == EBitmapItemsCreated ) - { - } - else if ( aEvent == EBitmapArrayConstructionComplete ) - { - } - // - iIdleResetListboxTimer->Cancel(); - iIdleResetListboxTimer->Start( KMemSpyIdleResetListboxTimerPeriod/2, KMemSpyIdleResetListboxTimerPeriod, TCallBack( IdleUpdateListBoxModel, this ) ); - } - - -void CMemSpyViewFBServBitmaps::SetListBoxModelL() - { - CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox ); - listbox->Model()->SetItemTextArray( iBitmaps ); - listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); - } - - -void CMemSpyViewFBServBitmaps::HandleListBoxItemActionedL( TInt aIndex ) - { - const TInt count = iBitmaps->Count(); - if ( aIndex >= 0 && aIndex < count ) - { - CMemSpyEngineFbServBitmap& bitmap = iBitmaps->At( aIndex ); - iCurrentBitmap = &bitmap; - } - else - { - iCurrentBitmap = NULL; - } - - // Notify observer about item selection - ReportEventL( MMemSpyViewObserver::EEventItemActioned ); - } - - -void CMemSpyViewFBServBitmaps::HandleListBoxItemSelectedL( TInt aIndex ) - { - const TInt count = iBitmaps->Count(); - if ( aIndex >= 0 && aIndex < count ) - { - CMemSpyEngineFbServBitmap& bitmap = iBitmaps->At( aIndex ); - iCurrentBitmap = &bitmap; - } - else - { - iCurrentBitmap = NULL; - } - - // Notify observer about item selection - ReportEventL( MMemSpyViewObserver::EEventItemSelected ); - } - - -TInt CMemSpyViewFBServBitmaps::IdleUpdateListBoxModel( TAny* aSelf ) - { - CMemSpyViewFBServBitmaps* self = reinterpret_cast< CMemSpyViewFBServBitmaps* >( aSelf ); - TRAP_IGNORE( self->DoIdleUpdateListBoxModelL() ); - return EFalse; - } - - -void CMemSpyViewFBServBitmaps::DoIdleUpdateListBoxModelL() - { - // Try to maintain current item selection if at all possible. - TInt handle = 0; - if ( iCurrentBitmap ) - { - handle = iCurrentBitmap->Handle(); - iCurrentBitmap = NULL; - } - - // Update list box & model - iListBox->HandleItemAdditionL(); - iListBox->DrawDeferred(); - - // Try to select previous item if it is still available - const TInt index = iBitmaps->BitmapIndexByHandle( handle ); - if ( index >= 0 && index < iBitmaps->Count() ) - { - iListBox->SetCurrentItemIndex( index ); - HandleListBoxItemSelectedL( index ); - } - - iIdleResetListboxTimer->Cancel(); - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CMemSpyViewFBServBitmapInfo::CMemSpyViewFBServBitmapInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps, CMemSpyEngineFbServBitmap& aSelectedBitmap ) -: CMemSpyViewFBServBase( aEngine, aObserver, aBitmaps ), iBitmapObject( aSelectedBitmap ) - { -#ifdef _DEBUG - RDebug::Printf("CMemSpyViewFBServBitmapInfo::CMemSpyViewFBServBitmapInfo() - iBitmaps is: 0x%08x", iBitmaps ); -#endif - } - - -void CMemSpyViewFBServBitmapInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune ) - { - _LIT( KTitle, "Bitmap Details" ); - SetTitleL( KTitle ); - - // Finish construction - CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune ); - - if ( iBitmaps->Count() ) - { - iListBox->SetCurrentItemIndex( 0 ); - HandleListBoxItemSelectedL( 0 ); - } - } - - -void CMemSpyViewFBServBitmapInfo::RefreshL() - { - SetListBoxModelL(); - CMemSpyViewBase::RefreshL(); - } - - -TMemSpyViewType CMemSpyViewFBServBitmapInfo::ViewType() const - { - return EMemSpyViewTypeFBServBitmapInfo; - } - - -CMemSpyViewBase* CMemSpyViewFBServBitmapInfo::PrepareParentViewL() - { - CMemSpyViewFBServBitmaps* parent = new(ELeave) CMemSpyViewFBServBitmaps( iEngine, iObserver, iBitmaps ); - - // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now. - // This object is about to die in any case. - iBitmaps = NULL; - - CleanupStack::PushL( parent ); - parent->ConstructL( Rect(), *Parent(), &iBitmapObject ); - CleanupStack::Pop( parent ); - return parent; - } - - -CMemSpyViewBase* CMemSpyViewFBServBitmapInfo::PrepareChildViewL() - { - CMemSpyViewFBServBitmapViewer* child = new(ELeave) CMemSpyViewFBServBitmapViewer( iEngine, iObserver, iBitmaps, iBitmapObject ); - - // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now. - // This object is about to die in any case. - iBitmaps = NULL; - - CleanupStack::PushL( child ); - CEikAppUi* appUi = static_cast< CEikAppUi* >( iEikonEnv->AppUi() ); - const TRect rect( TPoint( 0, 0 ), appUi->ClientRect().Size() ); - child->ConstructL( rect, *Parent() ); - CleanupStack::Pop( child ); - return child; - } - - -void CMemSpyViewFBServBitmapInfo::SetListBoxModelL() - { - CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox ); - listbox->Model()->SetItemTextArray( &iBitmapObject ); - listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); - } - - -void CMemSpyViewFBServBitmapInfo::HandleListBoxItemActionedL( TInt aIndex ) - { - // Only report the event if its the first item that was actioned - if ( aIndex == 0 ) - { - ReportEventL( MMemSpyViewObserver::EEventItemActioned ); - } - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CMemSpyViewFBServBitmapViewer::CMemSpyViewFBServBitmapViewer( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps, CMemSpyEngineFbServBitmap& aSelectedBitmap ) -: CMemSpyViewFBServBase( aEngine, aObserver, aBitmaps ), iBitmapObject( aSelectedBitmap ) - { -#ifdef _DEBUG - RDebug::Printf("CMemSpyViewFBServBitmapViewer::CMemSpyViewFBServBitmapViewer() - iBitmaps is: 0x%08x", iBitmaps ); -#endif - } - - -CMemSpyViewFBServBitmapViewer::~CMemSpyViewFBServBitmapViewer() - { - delete iImage; - } - - -void CMemSpyViewFBServBitmapViewer::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune ) - { - _LIT( KTitle, "Bitmap Preview" ); - SetTitleL( KTitle ); - - // Finish construction - CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune ); - - // Prepare image - iImage = new(ELeave) CEikImage(); - iImage->SetContainerWindowL( *this ); - iImage->SetPicture( &iBitmapObject.Bitmap(), NULL ); - iImage->SetPictureOwnedExternally( ETrue ); - SizeChanged(); - } - - -void CMemSpyViewFBServBitmapViewer::RefreshL() - { - CMemSpyViewBase::RefreshL(); - } - - -TMemSpyViewType CMemSpyViewFBServBitmapViewer::ViewType() const - { - return EMemSpyViewTypeFBServBitmapViewer; - } - - -CMemSpyViewBase* CMemSpyViewFBServBitmapViewer::PrepareParentViewL() - { - CMemSpyViewFBServBitmapInfo* parent = new(ELeave) CMemSpyViewFBServBitmapInfo( iEngine, iObserver, iBitmaps, iBitmapObject ); - - // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now. - // This object is about to die in any case. - iBitmaps = NULL; - - CleanupStack::PushL( parent ); - CEikAppUi* appUi = static_cast< CEikAppUi* >( iEikonEnv->AppUi() ); - const TRect rect( TPoint( 0, 0 ), appUi->ClientRect().Size() ); - parent->ConstructL( rect, *Parent() ); - CleanupStack::Pop( parent ); - return parent; - } - - -void CMemSpyViewFBServBitmapViewer::SetListBoxModelL() - { - } - - -CEikListBox* CMemSpyViewFBServBitmapViewer::ConstructListBoxL() - { - return NULL; - } - - -void CMemSpyViewFBServBitmapViewer::Draw( const TRect& /*aRect*/ ) const - { - CWindowGc& gc = SystemGc(); - // - gc.SetPenStyle( CGraphicsContext::ENullPen ); - gc.SetBrushColor( KRgbWhite ); - gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc.DrawRect( Rect() ); - // - gc.SetBrushColor( KRgbBlack ); - gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc.DrawRect( iBorderRect ); - } - - -void CMemSpyViewFBServBitmapViewer::SizeChanged() - { - TRect rect( Rect() ); - TSize size( rect.Size() ); - // - TSize bitmapSize( iBitmapObject.Bitmap().SizeInPixels() ); - - // Try to center image, if possible. - if ( bitmapSize.iWidth < size.iWidth ) - { - const TInt offset = ( size.iWidth - bitmapSize.iWidth) / 2; - rect.Move( offset, 0 ); - size.iWidth = bitmapSize.iWidth; - } - if ( bitmapSize.iHeight < size.iHeight ) - { - const TInt offset = ( size.iHeight - bitmapSize.iHeight) / 2; - rect.Move( 0, offset ); - size.iHeight = bitmapSize.iHeight; - } - // - rect.SetSize( size ); - if ( iImage ) - { - iImage->SetRect( rect ); - } - iBorderRect = rect; - iBorderRect.Grow( 2, 2 ); - } - - -TInt CMemSpyViewFBServBitmapViewer::CountComponentControls() const - { - TInt count = 0; - // - if ( iImage ) - { - ++count; - } - // - return count; - } - - -CCoeControl* CMemSpyViewFBServBitmapViewer::ComponentControl( TInt /*aIndex*/ ) const - { - return iImage; - } - - - - - - - - - - - - - - - - - -CMemSpyViewFBServSlideshow::CMemSpyViewFBServSlideshow( CMemSpyEngineFbServBitmapArray& aBitmaps, TInt& aIndex ) -: iBitmaps( aBitmaps ), iIndex( aIndex ) - { - } - - -CMemSpyViewFBServSlideshow::~CMemSpyViewFBServSlideshow() - { - delete iTimer; - } - - -void CMemSpyViewFBServSlideshow::ConstructL() - { - iTimer = CPeriodic::NewL( CActive::EPriorityLow ); - iTimer->Start( KMemSpyImageSlideshowPeriod, KMemSpyImageSlideshowPeriod, TCallBack( IdleUpdate, this ) ); - } - - -void CMemSpyViewFBServSlideshow::NewLD( CMemSpyEngineFbServBitmapArray& aBitmaps, TInt& aIndex ) - { - CMemSpyViewFBServSlideshow* self = new(ELeave) CMemSpyViewFBServSlideshow( aBitmaps, aIndex ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - // - self->ExecuteLD( R_MEMSPY_IMAGE_SLIDESHOW ); - } - - -void CMemSpyViewFBServSlideshow::PreLayoutDynInitL() - { - ShowNextImageL(); - } - - -TBool CMemSpyViewFBServSlideshow::OkToExitL( TInt /*aButtonId*/ ) - { - return ETrue; - } - - -TInt CMemSpyViewFBServSlideshow::IdleUpdate( TAny* aSelf ) - { - CMemSpyViewFBServSlideshow* self = reinterpret_cast< CMemSpyViewFBServSlideshow* >( aSelf ); - TRAP_IGNORE( self->ShowNextImageL() ); - return EFalse; - } - - -void CMemSpyViewFBServSlideshow::ShowNextImageL() - { - CEikImage* imageControl = static_cast< CEikImage* >( Control(EMemSpyCtrlIdSlideShowImage) ); - - // Get the right image - const TInt imageCount = iBitmaps.Count(); - if ( iIndex < imageCount ) - { - CMemSpyEngineFbServBitmap& bitmap = iBitmaps.At( iIndex ); - imageControl->SetPicture( &bitmap.Bitmap(), NULL ); - imageControl->SetPictureOwnedExternally( ETrue ); - - // Prepare title - const TSize size( bitmap.Bitmap().SizeInPixels() ); - _LIT(KTitleFormat, "%3d x %3d"); - TBuf<128> title; - title.Format( KTitleFormat, size.iWidth, size.iHeight ); - SetTitleL( title ); - // - User::ResetInactivityTime(); - // - Layout(); - // - ++iIndex; - } - else - { - // Dismiss myself. - delete this; - } - } -