diff -r 1fc85118c3ae -r 870918037e16 landmarksui/app/src/CLmkByLmContainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/landmarksui/app/src/CLmkByLmContainer.cpp Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,372 @@ +/* + * Copyright (c) 2002-2010 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 LM compass view's container class methods. + * + */ + +// INCLUDE FILES +#include +#include +#include +#include +#include // To Check TOUCH Support +// For RD_AVKON_UNBRANCH +#include +#include +#include +#include "CLmkAppUi.h" +#include "CLmkUiUtils.h" +#include "CLmkSender.h" +#include +#include "CLmkByLmView.h" +#include "CLmkByLmContainer.h" +#include "CLmkAppLmSelectorImpl.h" +#include "landmarks.hrh" +#include +#include "Debug.h" + +// ----------- Touch feedback additions start +#ifdef RD_TACTILE_FEEDBACK +#include +#endif //RD_TACTILE_FEEDBACK +// ----------- Touch feedback additions end + +// ================= MEMBER FUNCTIONS ======================= +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::NewL +// ---------------------------------------------------------------------------- +// +CLmkByLmContainer* CLmkByLmContainer::NewL(MLmkKeyProcessor& aKeyProcessor, + MObjectProvider* aParent, const TRect& aRect, CAknView& aView) + { + CLmkByLmContainer* self = new (ELeave) CLmkByLmContainer(aKeyProcessor, + aView); + CleanupStack::PushL(self); + self->SetMopParent(aParent); + self->ConstructL(aRect); + CleanupStack::Pop(); // self + return self; + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::ConstructL +// ---------------------------------------------------------------------------- +// +void CLmkByLmContainer::ConstructL(const TRect& aRect) + { + CLmkLbWithFilterContainer::ConstructL(aRect); + iFindBox->SetObserver(this); + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::CLmkByLmContainer +// ---------------------------------------------------------------------------- +// +CLmkByLmContainer::CLmkByLmContainer(MLmkKeyProcessor& aKeyProcessor, + CAknView& aView) : + CLmkLbWithFilterContainer(aKeyProcessor, KLM_HLP_LM_BY_NAME), + iView(aView) + { + iIsEditorOpened = EFalse; + iHandlePointerEvent = ETrue; + } +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::~CLmkByLmContainer +// ---------------------------------------------------------------------------- +// +CLmkByLmContainer::~CLmkByLmContainer() + { + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::SetupTitlePaneL +// ---------------------------------------------------------------------------- +// +void CLmkByLmContainer::SetupTitlePaneL() + { + CLmkUiUtils::ChangeTitlePaneL( R_LMK_BYLM_VIEW_TITLE); + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::SetupSelectorAndListL +// ---------------------------------------------------------------------------- +// +void CLmkByLmContainer::SetupSelectorAndListL(CPosLandmarkDatabase& aDb, + CLmkSender& aSender) + { + iSelector = CLmkAppLmSelectorImpl::NewL(aDb, aSender, ETrue); + iSelector->SetMskObserver(this); + iListBox = &(iSelector->CreateListBoxL(this, EAknCtSingleGraphicListBox, +#ifdef RD_SCALABLE_UI_V2 + EAknListBoxStylusMarkableList, +#else + EAknListBoxMarkableList, +#endif //RD_SCALABLE_UI_V2 + R_LMK_EMPTY_NO_LANDMARKS, R_LMK_GUIDE_NEW_LANDMARK)); + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::SetupNaviPaneL +// ---------------------------------------------------------------------------- +// +void CLmkByLmContainer::SetupNaviPaneL() + { + iNaviDeco = CreateNaviPaneL(R_LMK_TAB_GROUP); + ActivateTabL(*iNaviDeco, ELmkByLmView); + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::OfferKeyEventL +// ---------------------------------------------------------------------------- +// +TKeyResponse CLmkByLmContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, + TEventCode aType) + { + DEBUG( CLmkByLmContainer::OfferKeyEventL entered ); + DEBUG2( aKeyEvent.iCode=%d aKeyEvent.iScanCode=%d, + aKeyEvent.iCode, + aKeyEvent.iScanCode + ); + DEBUG3( aKeyEvent.iModifiers=%d aKeyEvent.iRepeats=%d aType=%d, + aKeyEvent.iModifiers, + aKeyEvent.iRepeats, + aType + ); + + TBool shiftKeyPressed = (aKeyEvent.iModifiers & EModifierShift) + || (aKeyEvent.iModifiers & EModifierLeftShift) + || (aKeyEvent.iModifiers & EModifierRightShift); + + if (aKeyEvent.iScanCode == EStdKeyUpArrow || aKeyEvent.iScanCode + == EStdKeyDownArrow) + { + if (aType == EEventKey) + { + if (iListBox->OfferKeyEventL(aKeyEvent, aType) == EKeyWasConsumed) + { + if (shiftKeyPressed) + UpdateMskContainerL(); + return EKeyWasConsumed; + } + } + return EKeyWasNotConsumed; + } + + CLmkAppSelectorImplBase& selector = SelectorImpl(); + TInt markedCount(selector.ListMarkedItemCountL()); + TInt visibleCount(selector.ListVisibleItemCount()); + DEBUG1( CLmkByLmContainer::OfferKeyEventL markedCount=%d,markedCount ); + DEBUG1( CLmkByLmContainer::OfferKeyEventL visibleCount=%d,visibleCount ); + + if (aKeyEvent.iCode == EKeyOK && !shiftKeyPressed && aType == EEventKey) + { + DEBUG( CLmkByLmContainer::OfferKeyEventL EKeyOK ); + if (visibleCount > 0 && markedCount < 1) + { + DEBUG( CLmkByLmContainer::OfferKeyEventL EKeyOK ELmkCmdOpenLm ); + // Launch landmark viewer here + selector.ProcessCommandL(ELmkCmdOpenLm); + iIsEditorOpened = ETrue; + return EKeyWasConsumed; + } + else + { + DEBUG( CLmkByLmContainer::OfferKeyEventL EKeyOK show menubar ); + CEikMenuBar* menubar = + static_cast (iAvkonAppUi)->View( + TUid::Uid(ELmkByLmView))->MenuBar(); + if (menubar) + { + menubar->SetMenuTitleResourceId(R_LMK_OK_MENUBAR); + + menubar->StopDisplayingMenuBar(); + TRAPD(err, menubar->TryDisplayMenuBarL()); + DEBUG1( CLmkByLmContainer::OfferKeyEventL menubar->TryDisplayMenuBarL() = %d,err ); + // set ordinary menubar back even in case of error + menubar->SetMenuTitleResourceId(R_LMK_BYLM_MENUBAR); + User::LeaveIfError( err); + } + + return EKeyWasConsumed; + } + } + else if (shiftKeyPressed && aType == EEventKeyUp) + { + UpdateMskContainerL(); + } + else + { + DEBUG( CLmkByLmContainer::OfferKeyEventL send event key & other keys handling ); + // 'send' eveny key processing + if (visibleCount > 0 && markedCount < 1) + { + // Check TOUCH Support + if (aKeyEvent.iCode == EKeyPhoneSend + && (!Layout_Meta_Data::IsPenEnabled())) + { + selector.ProcessCommandL(ELmkCmdCall); + } + } + if (iIsEditorOpened) + { + DEBUG( CLmkByLmContainer::OfferKeyEventL iIsEditorOpened entered ); + SelectorImpl().HandleListProviderEvent(ELmkEventListReady); + } + } + iIsEditorOpened = EFalse; + DEBUG( CLmkByLmContainer::OfferKeyEventL end ); + return CLmkLbWithFilterContainer::OfferKeyEventL(aKeyEvent, aType); + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::HandleControlEventL() +// Called by framework when the view size is changed +// ---------------------------------------------------------------------------- +// + +void CLmkByLmContainer::HandleControlEventL(CCoeControl* aControl, + TCoeEvent aEventType) + { + if (aEventType == EEventStateChanged && aControl == iFindBox) + { + SelectorImpl().ProcessCommandL(ELmkCmdFindBoxSearchAfresh); + } + } + +// ----------------------------------------------------------------------------- +//CLmkByLmContainer::HandleResourceChange +// ----------------------------------------------------------------------------- +// +void CLmkByLmContainer::HandleResourceChange(TInt aType) + { + CCoeControl::HandleResourceChange(aType); + if (aType == KEikDynamicLayoutVariantSwitch) + { + (static_cast (&iView))->Update(); + } + + if (iListBox) + { + iListBox->DrawNow(); + } + if (iFindBox && iFindBox->IsVisible()) + { + iFindBox->DrawNow(); + } + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::GetSelectedLandmarksL +// ---------------------------------------------------------------------------- +// +TInt CLmkByLmContainer::GetSelectedLandmarksL( + RPointerArray &aArray) + { + return (static_cast (iSelector))->GetSelectedLandmarksL( + aArray); + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::IsLandmarkEmptyL +// ---------------------------------------------------------------------------- +// +TBool CLmkByLmContainer::IsLandmarkDataEmptyL(CPosLandmark* aLandmark) + { + return (static_cast (iSelector))->IsLandmarkDataEmptyL( + aLandmark); + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::FocusChanged() +// ---------------------------------------------------------------------------- +// +void CLmkByLmContainer::FocusChanged(TDrawNow aDrawNow) + { + if (iListBox) + { + iListBox->SetFocus(IsFocused(), aDrawNow); + } + if (iFindBox && iFindBox->IsVisible()) + { + iFindBox->SetFocus(IsFocused(), aDrawNow); + } + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::IsEditorOpened() +// ---------------------------------------------------------------------------- +// +TBool CLmkByLmContainer::IsEditorOpened() + { + return iIsEditorOpened; + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::SetEditorOpenedBool() +// ---------------------------------------------------------------------------- +// +void CLmkByLmContainer::SetEditorOpenedBool(TBool aBoolvalue) + { + iIsEditorOpened = aBoolvalue; + } + +// ---------------------------------------------------------------------------- +// CLmkByLmContainer::UpdateMskContainerL() +// ---------------------------------------------------------------------------- +// +void CLmkByLmContainer::UpdateMskContainerL() + { + CLmkBaseView* view = reinterpret_cast (&iView); + view->UpdateMskViewL(ResolveMskDisplayItem()); + } + +// --------------------------------------------------------- +// CLmkByLmContainer::MenuBar +// --------------------------------------------------------- +// +CEikMenuBar* CLmkByLmContainer::MenuBar() + { + return ViewAppUi()->View(TUid::Uid(ELmkByLmView))->MenuBar(); + } + +// --------------------------------------------------------- +// CLmkByLmContainer::ContextSpecificMenuBar +// --------------------------------------------------------- +// +TInt CLmkByLmContainer::ContextSpecificMenuBar() + { + return R_LMK_OK_MENUBAR; + } + +// --------------------------------------------------------- +// CLmkByLmContainer::SetHandlePointerEventBool +// --------------------------------------------------------- +// +void CLmkByLmContainer::SetHandlePointerEventBool(TBool aBoolValue) + { + iHandlePointerEvent = aBoolValue; + } + +#ifdef RD_SCALABLE_UI_V2 +// --------------------------------------------------------- +// CLmkByLmContainer::HandlePoineteventL +// --------------------------------------------------------- +// +void CLmkByLmContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent ) + { + CCoeControl::HandlePointerEventL(aPointerEvent); + } + +#endif//RD_SCALABLE_UI_V2 +// End of File