diff -r 8173571d354e -r 1fc85118c3ae locationlandmarksrefappfors60/Src/LandmarksInfoContainer.cpp --- a/locationlandmarksrefappfors60/Src/LandmarksInfoContainer.cpp Thu Aug 19 09:48:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,288 +0,0 @@ -/* -* Copyright (c) 2004-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: Implements the CLandmarksInfoContainer class -* -*/ - - - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include "LmRefApp.hrh" -#include "LandmarksCommonData.h" -#include "LandmarksInfoContainer.h" -#include "LandmarksInfoModel.h" -#include "LandmarksEditDialog.h" -#include "LandmarksApplicationEngine.h" - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CLandmarksInfoContainer::CLandmarksInfoContainer( - CAknView& aView, - CLandmarksApplicationEngine& aEngine, - CAknNavigationDecorator* aNaviDecorator) -: iView(aView), - iEngine(aEngine), - iNaviDecorator(aNaviDecorator) - { - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksInfoContainer::ConstructL(const TRect& aRect) - { - CreateWindowL(); - CreateListBoxL(); - - // Create data model. - iModel = new (ELeave) CLandmarksInfoModel(iEngine); - - SetRect(aRect); - ActivateL(); - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CLandmarksInfoContainer::~CLandmarksInfoContainer() - { - iFields.Close(); - delete iListBox; - delete iLandmark; - delete iModel; - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -TInt CLandmarksInfoContainer::CountComponentControls() const - { - TInt count = 0; - if (iListBox) - { - count++; - } - - return count; // Return the number of controls inside this container. - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CCoeControl* CLandmarksInfoContainer::ComponentControl(TInt aIndex) const - { - switch (aIndex) - { - case 0: - return iListBox; // Returns the pointer to listbox object. - default: - return NULL; // Exception : Returns NULL. - } - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -TKeyResponse CLandmarksInfoContainer::OfferKeyEventL( - const TKeyEvent& aKeyEvent, TEventCode aType) - { - TKeyResponse response = EKeyWasNotConsumed; - - switch (aKeyEvent.iCode) - { - case EKeyUpArrow: - case EKeyDownArrow: - // Scrolling the listbox. Forward to iListBox. - response = iListBox->OfferKeyEventL(aKeyEvent, aType); - break; - - case EKeyLeftArrow: - case EKeyRightArrow: - // Eat these to disable switching views - response = EKeyWasConsumed; - break; - - case EKeyDevice3: - EditLandmarkL(); - response = EKeyWasConsumed; - break; - - default: - // menu keys should be handled - break; - } - - return response; - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksInfoContainer::StoreTitlePaneL() - { - CEikStatusPane* statusPane = iAvkonAppUi->StatusPane(); - iTitlePane = (CAknTitlePane*) statusPane->ControlL( - TUid::Uid(EEikStatusPaneUidTitle)); - - iOriginalTitle = iTitlePane->Text()->AllocL(); - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksInfoContainer::RestoreTitlePane() - { - if (iTitlePane && iOriginalTitle) - { - iTitlePane->SetText(iOriginalTitle); // ownership is transferred - } - else - { - delete iOriginalTitle; - } - iOriginalTitle = NULL; - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksInfoContainer::CreateListBoxL() - { - // Create a control to display a list of descriptors - iListBox = new (ELeave) CAknSingleHeadingStyleListBox(); - iListBox->SetContainerWindowL(*this); - iListBox->ConstructL(this, 0); - - // Create scrollbars - CEikScrollBarFrame* scrollBar = iListBox->CreateScrollBarFrameL(); - scrollBar->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto); - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksInfoContainer::SizeChanged() - { - // Set list box size. - iListBox->SetRect(Rect()); - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksInfoContainer::HandleResourceChange(TInt aType) - { - CCoeControl::HandleResourceChange(aType); - if ( aType == KEikDynamicLayoutVariantSwitch ) - { - SetRect(iView.ClientRect()); - } - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksInfoContainer::LoadLandmarkL(TPosLmItemId aLandmarkId) - { - delete iLandmark; - iLandmark = NULL; - - iLandmark = iEngine.LandmarkLC(aLandmarkId); - CleanupStack::Pop(iLandmark); - - UpdateL(); - iListBox->View()->SetCurrentItemIndex(0); - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksInfoContainer::EditLandmarkL() - { - // Create editor - TBool isEdited = EFalse; - - TInt selectedLine = iListBox->View()->CurrentItemIndex(); - TInt activeField = 0; - if (selectedLine >= 0 && selectedLine < iFields.Count()) - { - activeField = iFields[selectedLine]; - } - - CLandmarksEditDialog* editDialog = CLandmarksEditDialog::NewLC( - *iLandmark, EFalse, isEdited, iEngine, activeField); - - TInt err = editDialog->ExecuteLD(R_LMREFAPP_EDIT_DIALOG); - CleanupStack::Pop(editDialog); - User::LeaveIfError(err); - - UpdateL(); - - // Commit if edited - if (isEdited) - { - iEngine.CommitLandmarkL(*iLandmark); - - // move to first field - iListBox->View()->SetCurrentItemIndex(0); - } - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksInfoContainer::UpdateL() - { - CDesCArray* infoArray = iModel->GetLandmarkInfoL(*iLandmark, iFields); - - CTextListBoxModel* model = iListBox->Model(); - model->SetItemTextArray(infoArray); - model->SetOwnershipType(ELbmOwnsItemArray); - iListBox->HandleItemAdditionL(); - - UpdateTitleBarL(); - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksInfoContainer::UpdateTitleBarL() - { - TPtrC ptr; - if (iLandmark) - { - iLandmark->GetLandmarkName(ptr); - iTitlePane->SetTextL(ptr); - } - else - { - iTitlePane->SetTextL(*iOriginalTitle); - } - } - -