diff -r 81f8547efd4f -r e8e3147d53eb phonebookui/Phonebook2/ccapplication/ccamycardplugin/src/ccappmycardplugin.cpp --- a/phonebookui/Phonebook2/ccapplication/ccamycardplugin/src/ccappmycardplugin.cpp Fri Mar 12 15:41:25 2010 +0200 +++ b/phonebookui/Phonebook2/ccapplication/ccamycardplugin/src/ccappmycardplugin.cpp Mon Mar 15 12:39:26 2010 +0200 @@ -22,6 +22,7 @@ #include "ccappmycardpluginuids.hrh" #include "ccappmycard.h" #include "ccappmycard.hrh" +#include #include #include #include @@ -34,6 +35,7 @@ #include #include #include +#include #include #include //pbk2cmdsend #include @@ -43,6 +45,9 @@ #include #include #include +#include +#include +#include // --------------------------------------------------------------------------- // Constants @@ -94,6 +99,8 @@ iCommandsResourceFile.Close(); + delete iModel; + delete iMyCard; delete iCommandHandler; @@ -138,15 +145,61 @@ } // --------------------------------------------------------------------------- +// CCCAppMyCardPlugin::Model +// --------------------------------------------------------------------------- +// +CSpbContactDataModel& CCCAppMyCardPlugin::Model() + { + return *iModel; + } + +// --------------------------------------------------------------------------- // CCCAppMyCardPlugin::PreparePluginViewL // --------------------------------------------------------------------------- // void CCCAppMyCardPlugin::PreparePluginViewL( - MCCAppPluginParameter& /*aPluginParameter*/ ) + MCCAppPluginParameter& aPluginParameter ) { CCA_DP(KMyCardLogFile, CCA_L("->CCCAppMyCardPlugin::PreparePluginViewL()")); + iModel = CSpbContactDataModel::NewL( + iMyCard->ContactManager(), *iCoeEnv, R_MYCARD_CLIP_FIELD_SELECTOR ); + BaseConstructL( R_CCAMYCARD_VIEW ); + MCCAParameter& param = aPluginParameter.CCAppLaunchParameter(); + if( param.ContactDataFlag() == MCCAParameter::EContactLink ) + { + HBufC& data = param.ContactDataL(); + HBufC8* data8 = HBufC8::NewLC( data.Size() ); + data8->Des().Copy( data ); + CVPbkContactLinkArray* array = CVPbkContactLinkArray::NewLC( + *data8, iMyCard->ContactManager().ContactStoresL() ); + if( array->Count() ) + { + iMyCard->SetLinkL( array->At( 0 ) ); + } + CleanupStack::PopAndDestroy( 2 ); // data, array + } + else if( param.ContactDataFlag() == MCCAParameter::EContactDataModel ) + { + HBufC& cntData = param.ContactDataL(); + TPtrC8 data( (TUint8*)cntData.Ptr(), cntData.Size() ); + RDesReadStream stream( data ); + CleanupClosePushL( stream ); + iModel->InternalizeL( stream ); + CleanupStack::PopAndDestroy(); // strean + + MVPbkContactLink* link = iModel->ContactLink(); + if( link ) + { + iMyCard->SetLinkL( *link ); + } + else + { + // model without a link means that mycard does not exist. + iMyCard->ForceCreateMyCard(); + } + } CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCardPlugin::PreparePluginViewL()")); } @@ -171,6 +224,8 @@ SetTitleL( *title ); CleanupStack::PopAndDestroy( title ); + iMyCard->FetchMyCardL(); + CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCardPlugin::DoActivateL()")); } @@ -299,6 +354,14 @@ iMyCard->EditContactL( aFocusedFieldIndex ); } +// --------------------------------------------------------------------------- +// CCCAppMyCardPlugin::HandleError +// --------------------------------------------------------------------------- +// +void CCCAppMyCardPlugin::HandleError( TInt aError ) + { + CCoeEnv::Static()->HandleError( aError ); + } // --------------------------------------------------------------------------- // CCCAppMyCardPlugin::NewContainerL @@ -395,32 +458,39 @@ // void CCCAppMyCardPlugin::ProcessCommandL(TInt aCommandId) { + TInt err = KErrNone; + switch(aCommandId) { - case ECCAppMyCardCmdStylusViewImageCmd: - ViewImageCmdL(); - break; + case ECCAppMyCardCmdStylusViewImageCmd: + TRAP( err, ViewImageCmdL() ); + break; case ECCAppMyCardCmdStylusChangeImageCmd: - ChangeImageCmdL(); + TRAP( err, ChangeImageCmdL() ); break; case ECCAppMyCardCmdStylusRemoveImageCmd: - RemoveImageCmdL(); + TRAP( err, RemoveImageCmdL() ); break; case ECCAppMyCardCmdStylusAddImageCmd: - AddImageCmdL(); + TRAP( err, AddImageCmdL() ); break; case ECCAppMyCardCmdStylusCopyDetailCmd: - CopyDetailL(); + TRAP( err, CopyDetailL() ); break; default: CAknView::ProcessCommandL(aCommandId); break; } + + if( err != KErrNone ) + { + HandleError( err ); + } } // --------------------------------------------------------------------------- @@ -467,4 +537,5 @@ { CommandHandlerL()->HandleCommandL( EPbk2CmdCopyDetail, *iOwnContainer, NULL ); } + // End of File