--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook/View/src/CPbkMultipleEntryFetchDlg.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,150 @@
+/*
+* Copyright (c) 2002 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:
+* Provides methods for Phonebook Multiple Entry Fetch API.
+*
+*/
+
+
+// INCLUDE FILES
+#include "CPbkMultipleEntryFetchDlg.h" // This class
+#include <PbkView.rsg>
+#include "CPbkFetchDlg.h"
+#include "MPbkFetchDlgSelection.h"
+#include <CPbkContactEngine.h>
+
+// LOCAL CONSTANTS AND MACROS
+enum TPanicCode
+ {
+ EPanicPostCond_Constructor = 1,
+ EPanicPreCond_ConstructL,
+ EPanicPreCond_ExecuteLD
+ };
+
+// ================= MEMBER FUNCTIONS =======================
+
+EXPORT_C CPbkMultipleEntryFetchDlg::TParams::TParams() :
+ iContactView(NULL),
+ iMarkedEntries(NULL),
+ iCbaId(0),
+ iFetchSelection(NULL)
+ {
+ }
+
+EXPORT_C CPbkMultipleEntryFetchDlg::TParams::operator TCleanupItem()
+ {
+ return TCleanupItem(Cleanup,this);
+ }
+
+void CPbkMultipleEntryFetchDlg::TParams::Cleanup(TAny* aPtr)
+ {
+ TParams* self = static_cast<TParams*>(aPtr);
+ delete self->iMarkedEntries;
+ self->iMarkedEntries = NULL;
+ }
+
+inline CPbkMultipleEntryFetchDlg::CPbkMultipleEntryFetchDlg
+ (TParams& aParams, CPbkContactEngine& aEngine) :
+ iParams(aParams), iPbkEngine(aEngine)
+ {
+ // PostCond
+ __ASSERT_DEBUG(!iFetchDlg && iParams.iContactView,
+ Panic(EPanicPostCond_Constructor));
+ }
+
+inline void CPbkMultipleEntryFetchDlg::ConstructL()
+ {
+ // PreCond
+ __ASSERT_DEBUG(!iFetchDlg && iParams.iContactView,
+ Panic(EPanicPreCond_ConstructL));
+ }
+
+EXPORT_C CPbkMultipleEntryFetchDlg* CPbkMultipleEntryFetchDlg::NewL
+ (TParams& aParams,
+ CPbkContactEngine& aEngine)
+ {
+ CPbkMultipleEntryFetchDlg* self = new(ELeave) CPbkMultipleEntryFetchDlg(aParams, aEngine);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C void CPbkMultipleEntryFetchDlg::SetMopParent(MObjectProvider* aParent)
+ {
+ iObjectProvider = aParent;
+ }
+
+EXPORT_C TInt CPbkMultipleEntryFetchDlg::ExecuteLD()
+ {
+ // PreCond
+ __ASSERT_DEBUG(iParams.iContactView && !iFetchDlg,
+ Panic(EPanicPreCond_ExecuteLD));
+
+ // "D" function semantics
+ CleanupStack::PushL(this);
+ TBool thisDestroyed = EFalse;
+ iDestroyedPtr = &thisDestroyed;
+
+ // Convert iParams for CPbkFetchEntryDlg
+ CPbkFetchDlg::TParams params;
+ params.iResId = R_PBK_MULTIPLE_ENTRY_FETCH_DLG;
+ params.iFlags = CPbkFetchDlg::FETCH_MARKED;
+ params.iContactView = iParams.iContactView;
+ params.iFetchSelection = iParams.iFetchSelection;
+ params.iCbaId = iParams.iCbaId;
+
+ // Run CPbkFetchEntryDlg dialog
+ iFetchDlg = CPbkFetchDlg::NewL(params, iPbkEngine);
+ iFetchDlg->ResetWhenDestroyed(&iFetchDlg);
+ iFetchDlg->SetMopParent(iObjectProvider);
+ TInt result = iFetchDlg->ExecuteLD();
+
+ if (thisDestroyed)
+ {
+ // this object is destroyed
+ result = 0;
+ CleanupStack::Pop(this);
+ }
+ else
+ {
+ // Convert params back to our format
+ if (result)
+ {
+ iParams.iMarkedEntries = params.iMarkedEntries;
+ params.iMarkedEntries = NULL;
+ }
+ CleanupStack::PopAndDestroy(this);
+ }
+
+ return result;
+ }
+
+CPbkMultipleEntryFetchDlg::~CPbkMultipleEntryFetchDlg()
+ {
+ if (iDestroyedPtr)
+ {
+ *iDestroyedPtr = ETrue;
+ }
+ // Close the dialog
+ delete iFetchDlg;
+ }
+
+void CPbkMultipleEntryFetchDlg::Panic(TInt aReason)
+ {
+ _LIT(KPanicText, "CPbkMultipleEntryFetchDlg");
+ User::Panic(KPanicText, aReason);
+ }
+
+// End of File