diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/UIControls/src/CPbk2GeneralConfirmationQuery.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/UIControls/src/CPbk2GeneralConfirmationQuery.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,219 @@ +/* +* Copyright (c) 2005-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: Phonebook 2 general confirmation query. +* +*/ + + +#include "CPbk2GeneralConfirmationQuery.h" + +// Phonebook 2 +#include +#include +#include +#include + +// Virtual Phonebook +#include + +// System includes +#include +#include + +/// Unnamed namespace for local definitions +namespace { + +const TUint32 KNameFormatterFlags = MPbk2ContactNameFormatter::EUseSeparator; +const TInt KDontDelete = 0; + +#ifdef _DEBUG + +enum TPanicCode + { + EExecuteLD_PreCond =1 + }; + +void Panic(TPanicCode aReason) + { + _LIT(KPanicText, "CPbk2GeneralConfirmationQuery"); + User::Panic(KPanicText,aReason); + } + +#endif // _DEBUG + +/** + * Createst prompt text. + * + * @param aContact Contact. + * @param aResId Prompt string resource id. + * @param aFormatFlag Formatting flag info; default is KNameFormatterFlags + * @return Prompt text. + */ +HBufC* CreatePromptLC( const MVPbkBaseContact& aContact, TInt aResId, TInt aFormatFlag = KNameFormatterFlags ) + { + CPbk2ApplicationServices* appServices = CPbk2ApplicationServices::InstanceLC(); + HBufC* name = appServices->NameFormatter().GetContactTitleL + ( aContact.Fields(), aFormatFlag ); + CleanupStack::PushL( name ); + HBufC* prompt = StringLoader::LoadL( aResId, *name ); + CleanupStack::PopAndDestroy( name ); + CleanupStack::PopAndDestroy(); // appServices + + CleanupStack::PushL( prompt ); + + return prompt; + } + +/** + * Createst prompt text. + * + * @param aAmountOfContacts Amount of contacts. + * @param aResId Prompt string resource id. + * @return Prompt text. + */ +HBufC* CreatePromptLC( TInt aAmountOfContacts, TInt aResId ) + { + return StringLoader::LoadLC( aResId, aAmountOfContacts ); + } + +/** + * Executes the query. + * + * @param aQuery Confirmation query. + * @param aParam Prompt parameter (templated type). + * @param aResId Prompt text resource id. + * @return Result. + */ +template +TInt ExecuteQueryLD( CPbk2GeneralConfirmationQuery* aQuery, + CAknQueryDialog*& aQueryDlg, + const PromptParam& aParam, TInt aResId ) + { + CleanupStack::PushL( aQuery ); + HBufC* prompt = CreatePromptLC( aParam, aResId ); + aQueryDlg = CAknQueryDialog::NewL(); + TInt result = aQueryDlg->ExecuteLD + ( R_PBK2_GENERAL_CONFIRMATION_QUERY, *prompt ); + aQueryDlg = NULL; + CleanupStack::PopAndDestroy( 2, aQuery ); + return result; + } + +/** + * Executes the query. + * + * @param aQuery Confirmation query. + * @param aParam Prompt parameter (templated type). + * @param aResId Prompt text resource id. + * @param aFormatFlag Formatting flag info + * @return Result. + */ +template +TInt ExecuteQueryLD( CPbk2GeneralConfirmationQuery* aQuery, + CAknQueryDialog*& aQueryDlg, + const PromptParam& aParam, TInt aResId, TInt aFormatFlag ) + { + CleanupStack::PushL( aQuery ); + HBufC* prompt = CreatePromptLC( aParam, aResId, aFormatFlag ); + aQueryDlg = CAknQueryDialog::NewL(); + TInt result = aQueryDlg->ExecuteLD + ( R_PBK2_GENERAL_CONFIRMATION_QUERY, *prompt ); + aQueryDlg = NULL; + CleanupStack::PopAndDestroy( 2, aQuery ); + return result; + } + + +} /// namespace + +// -------------------------------------------------------------------------- +// CPbk2GeneralConfirmationQuery::CPbk2GeneralConfirmationQuery +// -------------------------------------------------------------------------- +// +inline CPbk2GeneralConfirmationQuery::CPbk2GeneralConfirmationQuery() + { + } + +// -------------------------------------------------------------------------- +// CPbk2GeneralConfirmationQuery::~CPbk2GeneralConfirmationQuery +// -------------------------------------------------------------------------- +// +CPbk2GeneralConfirmationQuery::~CPbk2GeneralConfirmationQuery() + { + delete iQueryDlg; + } + +// -------------------------------------------------------------------------- +// CPbk2GeneralConfirmationQuery::NewL +// -------------------------------------------------------------------------- +// +EXPORT_C CPbk2GeneralConfirmationQuery* CPbk2GeneralConfirmationQuery::NewL() + { + CPbk2GeneralConfirmationQuery* self = + new ( ELeave ) CPbk2GeneralConfirmationQuery; + return self; + } + +// -------------------------------------------------------------------------- +// CPbk2GeneralConfirmationQuery::ExecuteLD +// -------------------------------------------------------------------------- +// +EXPORT_C TInt CPbk2GeneralConfirmationQuery::ExecuteLD + ( const MVPbkBaseContact& aContact, TInt aResId ) + { + return ExecuteQueryLD( this, iQueryDlg, aContact, aResId ); + } + + +// -------------------------------------------------------------------------- +// CPbk2GeneralConfirmationQuery::ExecuteFormatLD +// -------------------------------------------------------------------------- +// +EXPORT_C TInt CPbk2GeneralConfirmationQuery::ExecuteLD + ( const MVPbkBaseContact& aContact, TInt aResId, TInt aFormatFlag ) + { + return ExecuteQueryLD( this, iQueryDlg, aContact, aResId, aFormatFlag ); + } + + +// -------------------------------------------------------------------------- +// CPbk2GeneralConfirmationQuery::ExecuteLD +// -------------------------------------------------------------------------- +// +EXPORT_C TInt CPbk2GeneralConfirmationQuery::ExecuteLD + ( TInt aAmountOfContacts, TInt aResId ) + { + __ASSERT_DEBUG( aAmountOfContacts > 1, Panic( EExecuteLD_PreCond ) ); + + TInt ret = KDontDelete; + + if ( aAmountOfContacts > 1 ) + { + ret = ExecuteQueryLD( this, iQueryDlg, aAmountOfContacts, aResId ); + } + + return ret; + } + +// -------------------------------------------------------------------------- +// CPbk2GeneralConfirmationQuery::StopQuery +// -------------------------------------------------------------------------- +// +EXPORT_C void CPbk2GeneralConfirmationQuery::StopQuery() + { + delete iQueryDlg; + iQueryDlg = NULL; + } + +// End of File