--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrgui/src/cesmrdynamicitemselectionlist.cpp Wed Sep 01 12:28:57 2010 +0100
@@ -0,0 +1,218 @@
+/*
+* 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: Implementation for mrui dynamic item selection list
+*
+*/
+
+
+// INCLUDE FILES
+#include "emailtrace.h"
+#include "cesmrdynamicitemselectionlist.h"
+
+#include <aknlists.h>
+#include <aknPopup.h>
+#include <bautils.h>
+#include <esmrgui.rsg>
+#include <data_caging_path_literals.hrh>
+
+#include "esmrhelper.h"//locateresourcefile
+
+// CONSTANTS
+// Unnamed namespace for local definitions
+namespace { // codescanner::namespace
+
+#ifdef _DEBUG
+ _LIT( KESMRDynamicItemSelectionListPanicTxt, "ESMRDYNAMICITEMSELECTIONLIST" );
+ /** Enumeration for panic codes */
+ enum TESMRDynamicItemSelectionListPanicCode
+ {
+ // Errors
+ EESMRDynamicItemSelectioListInvalidListType = 0
+ };
+
+ void Panic( TESMRDynamicItemSelectionListPanicCode aPanic )
+ {
+ User::Panic ( KESMRDynamicItemSelectionListPanicTxt, aPanic );
+ }
+#endif
+
+// resource file:
+_LIT( KResourceFileName, "esmrgui.rsc" );
+
+} // namespace
+
+// ======== MEMBER FUNCTIONS ========
+
+// -----------------------------------------------------------------------------
+// CESMRAddressSelectionQuery::CESMRAddressSelectionQuery
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CESMRDynamicItemSelectionList::CESMRDynamicItemSelectionList()
+ {
+ FUNC_LOG;
+ // Do nothing
+ }
+
+// -----------------------------------------------------------------------------
+// CESMRDynamicItemSelectionList::~CESMRDynamicItemSelectionList
+// -----------------------------------------------------------------------------
+//
+CESMRDynamicItemSelectionList::~CESMRDynamicItemSelectionList()
+ {
+ FUNC_LOG;
+ iEnv->DeleteResourceFile( iResourceOffset );
+ }
+
+// -----------------------------------------------------------------------------
+// CESMRDynamicItemSelectionList::NewL
+// -----------------------------------------------------------------------------
+//
+CESMRDynamicItemSelectionList* CESMRDynamicItemSelectionList::NewL()
+ {
+ FUNC_LOG;
+ CESMRDynamicItemSelectionList* self =
+ new (ELeave) CESMRDynamicItemSelectionList();
+ CleanupStack::PushL( self );
+ self->ConstructL( );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CESMRDynamicItemSelectionList::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CESMRDynamicItemSelectionList::ConstructL()
+ {
+ FUNC_LOG;
+ TFileName filename;
+
+ iEnv = CEikonEnv::Static(); // codescanner::eikonenvstatic
+
+ ESMRHelper::LocateResourceFile(
+ KResourceFileName,
+ KDC_RESOURCE_FILES_DIR,
+ filename,
+ &iEnv->FsSession() );
+
+ //for localization
+ BaflUtils::NearestLanguageFile(iEnv->FsSession(),filename);
+ iResourceOffset = iEnv->AddResourceFileL(filename);
+ }
+
+// -----------------------------------------------------------------------------
+// CESMRDynamicItemSelectionList::ExecuteL
+// -----------------------------------------------------------------------------
+//
+TInt CESMRDynamicItemSelectionList::ExecuteL( // codescanner::intleaves
+ const RPointerArray<HBufC>& aItemArray,
+ const TESMRSelectionListType aType )
+ {
+ FUNC_LOG;
+ CPtrCArray* array = new (ELeave) CPtrCArray( 1 );
+ CleanupStack::PushL( array );
+ array->SetReserveL( aItemArray.Count() );
+
+ for ( TInt i = 0; i < aItemArray.Count(); ++i )
+ {
+ array->AppendL( *aItemArray[i] );
+ }
+
+ TInt retVal = ExecuteL( *array, aType );
+ CleanupStack::PopAndDestroy( array );
+ return retVal;
+ }
+
+// -----------------------------------------------------------------------------
+// CESMRDynamicItemSelectionList::ExecuteL
+// -----------------------------------------------------------------------------
+//
+TInt CESMRDynamicItemSelectionList::ExecuteL( // codescanner::intleaves
+ MDesCArray& aItemArray,
+ const TESMRSelectionListType aType )
+ {
+ FUNC_LOG;
+ TInt response( KErrCancel );
+
+ CEikFormattedCellListBox* listBox = NULL;
+ CAknPopupList* popupList = NULL;
+
+ switch( aType )
+ {
+ case EESMRAddressSelectionList:
+ {
+ listBox = new( ELeave )CAknDoublePopupMenuStyleListBox;
+ CleanupStack::PushL( listBox );
+
+ popupList = CAknPopupList::NewL( listBox,
+ R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
+ AknPopupLayouts::EMenuDoubleWindow );
+ CleanupStack::PushL( popupList );
+
+ popupList->SetTitleL(
+ *iEnv->AllocReadResourceAsDes16LC(
+ R_QTN_MEET_REQ_LOC_ADDRESS_SELECTION_TITLE ) );
+ CleanupStack::PopAndDestroy(); // Resource string //codescanner::cleanup
+ break;
+ }
+ case EESMRRecentLocationList:
+ {
+ listBox = new( ELeave )CAknSinglePopupMenuStyleListBox;
+ CleanupStack::PushL( listBox );
+
+ popupList = CAknPopupList::NewL( listBox,
+ R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
+ AknPopupLayouts::EMenuWindow );
+ CleanupStack::PushL( popupList );
+
+ popupList->SetTitleL(
+ *iEnv->AllocReadResourceAsDes16LC(
+ R_QTN_MEET_REQ_RECENT_LOCATIONS_SELECTION_TITLE ) );
+ CleanupStack::PopAndDestroy(); // Resource string //codescanner::cleanup
+ break;
+ }
+ default:
+ {
+ __ASSERT_DEBUG(
+ EFalse, Panic( EESMRDynamicItemSelectioListInvalidListType ));
+ break;
+ }
+ }
+
+ listBox->ConstructL( popupList, EAknListBoxMenuList );
+ listBox->CreateScrollBarFrameL( ETrue );
+ listBox->ScrollBarFrame()->SetScrollBarVisibilityL(
+ CEikScrollBarFrame::EOff,
+ CEikScrollBarFrame::EOn );
+
+ listBox->Model()->SetItemTextArray( &aItemArray );
+ listBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+
+ // Show popup list
+ TBool popupOk = popupList->ExecuteLD();
+ if ( popupOk )
+ {
+ response = listBox->CurrentItemIndex();
+ }
+
+ CleanupStack::Pop( popupList );
+ CleanupStack::PopAndDestroy( listBox );
+
+ return response;
+ }
+
+// End of File
+