diff -r 8173571d354e -r 1fc85118c3ae landmarksui/uicontrols/src/CLmkMultiSelectorDialog.cpp --- a/landmarksui/uicontrols/src/CLmkMultiSelectorDialog.cpp Thu Aug 19 09:48:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,388 +0,0 @@ -/* -* 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: LandmarksUi Content File - -* -*/ - - - -// INCLUDE FILES -#include -#include // R_SENDUI_MENU -#include -#include -#include -#include - -#include "CLmkMultiSelectorDialog.h" -#include "MLmkDlgMenuObserver.h" -#include "MLmkNavigationObserver.h" -#include "LmkConsts.h" -#include "landmarks.hrh" -#include "CLmkSender.h" - - -// CONSTANTS -/// Unnamed namespace for local definitions -namespace { - -#if defined(_DEBUG) - -_LIT( KPanicMsg, "CLmkMultiSelectorDialog" ); - -void Panic( TPanicCode aReason ) - { - User::Panic( KPanicMsg, aReason ); - } -#endif -} // namespace - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CLmkMultiSelectorDialog::CLmkMultiSelectorDialog -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CLmkMultiSelectorDialog::CLmkMultiSelectorDialog( - TInt& aOpenedItemIndex, - CArrayFix* aSelectionIndexArray, - MDesCArray* aLbModel, - TInt aMenuBarResourceId, - TInt aOkOptionsMenuResourceId, - MEikCommandObserver* aCmdObserver, - MLmkDlgMenuObserver* aMenuObserver, - MLmkListMemento* aMemento ) - : CLmkSelectorDialog( aOpenedItemIndex, aLbModel, aCmdObserver,aMemento ), - iMenuBarResourceId( aMenuBarResourceId ), - iOkOptionsMenuResourceId( aOkOptionsMenuResourceId ), - iSendUiMenuPaneResourceId( KZeroResourceId ), - iSelectionIndexArray( aSelectionIndexArray ), - iMenuObserver( aMenuObserver ) - { - iExited = EFalse; - iIsToClearSelection = EFalse; - } - -// ----------------------------------------------------------------------------- -// CLmkMultiSelectorDialog::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CLmkMultiSelectorDialog* CLmkMultiSelectorDialog::NewL( - TInt& aOpenedItemIndex, - CArrayFix* aSelectionIndexArray, - MDesCArray* aLbModel, - TInt aMenuBarResourceId, - TInt aOkOptionsMenuResourceId, - MEikCommandObserver* aCmdObserver, - MLmkDlgMenuObserver* aMenuObserver, - MLmkListMemento* aMemento ) - { - CLmkMultiSelectorDialog* self = - new( ELeave ) CLmkMultiSelectorDialog( aOpenedItemIndex, - aSelectionIndexArray, - aLbModel, - aMenuBarResourceId, - aOkOptionsMenuResourceId, - aCmdObserver, - aMenuObserver, - aMemento ); - - CleanupStack::PushL( self ); - self->ConstructL( aMenuBarResourceId ); - CleanupStack::Pop(); - - return self; - } - -// ---------------------------------------------------- -// CLmkMultiSelectorDialog::ConstructL -// ---------------------------------------------------- -// -void CLmkMultiSelectorDialog::ConstructL(TInt aMenuBarResourceId) - { - CAknSelectionListDialog::ConstructL( aMenuBarResourceId ); - } - -// ---------------------------------------------------- -// CLmkMultiSelectorDialog::~CLmkMultiSelectorDialog -// ---------------------------------------------------- -// -CLmkMultiSelectorDialog::~CLmkMultiSelectorDialog() - { - } - -// ---------------------------------------------------- -// CLmkMultiSelectorDialog::SetupSendMenu -// ---------------------------------------------------- -// -void CLmkMultiSelectorDialog::SetupSendMenu( - CLmkSender& aSender, - TInt aSendUiMenuPaneResource, - TInt aMenuTextResource ) - { - iLmkSender = &aSender; - iSendUiMenuPaneResourceId = aSendUiMenuPaneResource; - iMenuTextResourceId = aMenuTextResource; - } - -// ---------------------------------------------------- -// CLmkMultiSelectorDialog::HandleListBoxEventL -// ---------------------------------------------------- -// -void CLmkMultiSelectorDialog::HandleListBoxEventL( - CEikListBox* /*aListBox*/, - TListBoxEvent aEventType ) - { - switch( aEventType ) - { - case EEventEnterKeyPressed: - case EEventItemDoubleClicked: - { - // Do nothing -- offerkeyevent handles this - } - break; - #ifdef RD_SCALABLE_UI_V2 - case EEventItemClicked: - { - UpdateMskL(); - break; - } - #endif//RD_SCALABLE_UI_V2 - default: - { - break; - } - }; - } - - -// ---------------------------------------------------- -// CLmkMultiSelectorDialog::SelectionListProcessCommandL -// ---------------------------------------------------- -// -void CLmkMultiSelectorDialog::SelectionListProcessCommandL( TInt aCommand ) - { - AknSelectionService::HandleMarkableListProcessCommandL( aCommand, - ListBox() ); - } - -// ----------------------------------------------------------------------------- -// CLmkMultiSelectorDialog::OfferKeyEventL -// ?implementation_description -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TKeyResponse CLmkMultiSelectorDialog::OfferKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - // Do not process navigation handling till UI gets from engine - if (!ListBox()) - { - return EKeyWasConsumed; - } - if (aType == EEventKey && - (aKeyEvent.iCode == EKeyOK || aKeyEvent.iCode == EKeyEnter || aKeyEvent.iScanCode == EStdKeyEnter) ) - { - ListBox()->View()->ToggleItemL(ListBox()->CurrentItemIndex()); - return EKeyWasConsumed; - } - if (aKeyEvent.iRepeats == 0) - { - if (KeyEventForNavigationL(aKeyEvent, aType) == EKeyWasConsumed) - { - iIsToClearSelection = ETrue; - TryExitL(EAknSoftkeyOk); - return EKeyWasConsumed; - } - CAknSearchField* findBox = FindBox(); - if (findBox && !(findBox->IsVisible())) - { - return EKeyWasConsumed; - } - } - - TKeyResponse keyResponce; - keyResponce = CAknSelectionListDialog::OfferKeyEventL(aKeyEvent, aType); - //CEikButtonGroupContainer &buttonContainer = *(CEikButtonGroupContainer::Current());//ButtonGroupContainer(); - if(!iExited) - { - UpdateMskL(); - } - return keyResponce; - } - -// ---------------------------------------------------- -// CLmkMultiSelectorDialog::PreLayoutDynInitL -// ---------------------------------------------------- -// -void CLmkMultiSelectorDialog::PreLayoutDynInitL() - { - CLmkSelectorDialog::PreLayoutDynInitL(); - __ASSERT_DEBUG( iSelectionIndexArray, Panic( KLmkPanicNullMember ) ); - ListBox()->SetSelectionIndexesL( iSelectionIndexArray ); - } -// ---------------------------------------------------- -// CLmkMultiSelectorDialog::PostLayoutDynInitL -// ---------------------------------------------------- - -void CLmkMultiSelectorDialog::PostLayoutDynInitL() - { - CLmkSelectorDialog::PostLayoutDynInitL(); - UpdateMskL(); - - } -// ----------------------------------------------------------------------------- -// CLmkMultiSelectorDialog::OkToExitL -// ?implementation_description -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CLmkMultiSelectorDialog::OkToExitL( TInt aButtonId ) - { - TBool b = CAknSelectionListDialog::OkToExitL( aButtonId ); - if ( iSelectionIndexArray ) - { - const CArrayFix* array = ListBox()->SelectionIndexes(); - if ( FindBox() ) - { - CAknFilteredTextListBoxModel* model = - static_cast( ListBox()->Model() ); - model->Filter()->UpdateSelectionIndexesL(); - array = model->Filter()->SelectionIndexes(); - } - TInt numberOfItems( array->Count() ); - iSelectionIndexArray->Reset(); - for ( TInt i( 0 ); i < numberOfItems; ++i ) - { - iSelectionIndexArray->AppendL( array->At( i ) ); - } - } - if(iIsToClearSelection && iSelectionIndexArray) - { - iSelectionIndexArray->Reset(); - } - if ( b && iNavigationObserver ) - { - iNavigationObserver->HandleClosingEventL(); - } - - iExited = b; - return b; - } - -// ---------------------------------------------------- -// CLmkMultiSelectorDialog::DynInitMenuPaneL -// ---------------------------------------------------- -// -void CLmkMultiSelectorDialog::DynInitMenuPaneL( - TInt aResourceId, - CEikMenuPane* aMenuPane ) - { - AknSelectionService::HandleMarkableListDynInitMenuPane( aResourceId, - aMenuPane, ListBox() ); - - if ( iMenuObserver ) - { - iMenuObserver->DynInitDlgMenuPaneL( aResourceId, aMenuPane ); - } - - TInt visibleCount = ListBox()->Model()->NumberOfItems(); - - if ( aResourceId == iSendUiMenuPaneResourceId ) - { - if ( iLmkSender ) - { - // Send menu is handled by iLmkSender: - if ( FeatureManager::FeatureSupported( KFeatureIdLandmarksConverter ) ) - { - aMenuPane->SetItemDimmed(ELmkCmdSendDummy, EFalse); - } - else - { - aMenuPane->SetItemDimmed(ELmkCmdSendDummy, ETrue); - } - } - } - else if ( aResourceId == R_SENDUI_MENU ) - { // Dynamically created send ui menu - // Sender always exists if R_SENDUI_MENU exists: - __ASSERT_DEBUG( iLmkSender, Panic( KLmkPanicSenderNotExist ) ); - - if ( FeatureManager::FeatureSupported( KFeatureIdLandmarksConverter ) ) - { - iLmkSender->DisplaySendCascadeMenuL( *aMenuPane ); - } - } - - CAknSelectionListDialog::DynInitMenuPaneL( aResourceId, aMenuPane ); - } - - -// ---------------------------------------------------- -// CLmkMultiSelectorDialog::UpdateMskL -// ---------------------------------------------------- -// - void CLmkMultiSelectorDialog::UpdateMskL() - { - - CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current(); - HBufC* mskTxt = NULL; - if (ListBox()->Model()->NumberOfItems() > 0) - { - cba->MakeCommandVisibleByPosition(CEikButtonGroupContainer::EMiddleSoftkeyPosition,ETrue); - cba->MakeCommandVisible(EAknSoftkeyDone, ETrue); - cba->MakeCommandVisible(EAknSoftkeyOk, ETrue); - if(IsCurrentItemMarked()) - { - mskTxt = StringLoader::LoadLC( R_LM_MSK_UNMARK, iEikonEnv ); - cba->AddCommandToStackL(KMskCommandPos,EAknSoftkeyUnmark,mskTxt->Des()); - CleanupStack::PopAndDestroy(mskTxt); - - } - else - { - mskTxt = StringLoader::LoadLC( R_LM_MSK_MARK, iEikonEnv ); - cba->AddCommandToStackL(KMskCommandPos,EAknSoftkeyMark,mskTxt->Des()); - CleanupStack::PopAndDestroy(mskTxt); - } - } - else - { - cba->MakeCommandVisible(EAknSoftkeyDone, EFalse); - cba->MakeCommandVisible(EAknSoftkeyOk, EFalse); - cba->MakeCommandVisibleByPosition(CEikButtonGroupContainer::EMiddleSoftkeyPosition,EFalse); - } - cba->DrawDeferred(); - } - - -// ---------------------------------------------------- -// CLmkMultiSelectorDialog::IsCurrentItemMarked -// ---------------------------------------------------- -// -TBool CLmkMultiSelectorDialog::IsCurrentItemMarked() - { - TBool ret(EFalse); - TInt itemIndex = ListBox()->View()->CurrentItemIndex(); - if (itemIndex != KErrNotFound) - { - ret = ListBox()->View()->ItemIsSelected(itemIndex); - } - return ret; - } -// End of File