diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/CommandsExtension/src/CPbk2ViewImageCmd.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/CommandsExtension/src/CPbk2ViewImageCmd.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,164 @@ +/* +* Copyright (c) 2002-2007 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: +* View image command event handling class. +* +*/ + + +// INCLUDE FILES +#include "CPbk2ViewImageCmd.h" + +// Phonebook 2 +#include "Pbk2DataCaging.hrh" +#include +#include +#include +#include +#include + +// Virtual Phonebook +#include +#include +#include + +// System includes +#include // CDocumentHandler +#include // TDataType +#include +#include + +// Debugging headers +#include + + +// -------------------------------------------------------------------------- +// CPbk2ViewImageCmd::CPbk2ViewImageCmd +// -------------------------------------------------------------------------- +// +CPbk2ViewImageCmd::CPbk2ViewImageCmd( MPbk2ContactUiControl& aUiControl ) + : CPbk2ImageCmdBase( aUiControl ) + { + } + +// -------------------------------------------------------------------------- +// CPbk2ViewImageCmd::ConstructL +// -------------------------------------------------------------------------- +// +void CPbk2ViewImageCmd::ConstructL() + { + CPbk2ImageCmdBase::BaseConstructL(); + iDocHandler = CDocumentHandler::NewL(); + iDocHandler->SetExitObserver( this ); + } + +// -------------------------------------------------------------------------- +// CPbk2ViewImageCmd::NewL +// -------------------------------------------------------------------------- +// +CPbk2ViewImageCmd* CPbk2ViewImageCmd::NewL( + MPbk2ContactUiControl& aUiControl ) + { + CPbk2ViewImageCmd* self = + new (ELeave) CPbk2ViewImageCmd( aUiControl ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// -------------------------------------------------------------------------- +// CPbk2ViewImageCmd::~CPbk2ViewImageCmd +// -------------------------------------------------------------------------- +// +CPbk2ViewImageCmd::~CPbk2ViewImageCmd() + { + delete iDocHandler; + } + +// -------------------------------------------------------------------------- +// CPbk2ViewImageCmd::ExecuteCommandL +// -------------------------------------------------------------------------- +// +TBool CPbk2ViewImageCmd::ExecuteCommandL() + { + TBool result = EFalse; + + // fetch image from contact's image field + TInt fieldIndex( KErrNotFound ); + TPbk2StoreContactAnalyzer analyzer( *iContactManager, iStoreContact ); + fieldIndex = analyzer.HasFieldL( R_PHONEBOOK2_IMAGE_SELECTOR ); + + if( fieldIndex != KErrNotFound ) + { + // retrieve field pointer and its current text for call + MVPbkStoreContactField& field = + iStoreContact->Fields().FieldAt( fieldIndex ); + iFileName.Copy( + MVPbkContactFieldTextData::Cast( field.FieldData() ).Text() ); + + // empty datatype for automatic recognization + TDataType dataType; + + // open file using document handler + TInt status = KErrGeneral; + TRAPD( error, status = iDocHandler-> + OpenFileEmbeddedL( iFileName, dataType ) ); + + // KErrNotReady, when no mmc inserted + // KErrNotFound, when image is deleted + if ( error == KErrNotFound || error == KErrUnderflow + || error == KErrCorrupt + || error == KErrNotReady ) + { + // if the image has been deleted from Image Gallery + // or it is corrupted, show a note instead of leave + ShowImageNotOpenedNoteL(); + } + result = ( status == KErrNone ); + } + else + { + // When viewing image on the business card, show "can't open" note for it + ShowImageNotOpenedNoteL(); + } + + return result; + } + +// -------------------------------------------------------------------------- +// CPbk2ViewImageCmd::HandleServerAppExit +// -------------------------------------------------------------------------- +// +void CPbk2ViewImageCmd::HandleServerAppExit( TInt aReason ) + { + // make base call first + MAknServerAppExitObserver::HandleServerAppExit( aReason ); + // finish the command (treat KUserCancel as KErrNone too) + ProcessDismissed( KErrNone ); + } + +// -------------------------------------------------------------------------- +// CPbk2ViewImageCmd::ShowImageNotOpenedNoteL +// -------------------------------------------------------------------------- +// +void CPbk2ViewImageCmd::ShowImageNotOpenedNoteL() + { + HBufC* prompt = StringLoader::LoadLC( R_QTN_ALBUM_ERR_FORMAT_UNKNOWN ); + CAknInformationNote* dlg = new ( ELeave ) CAknInformationNote( ETrue ); + dlg->ExecuteLD( *prompt ); + CleanupStack::PopAndDestroy( prompt ); + } + +// End of File