landmarksui/uicontrols/src/CLmkEditorImpl.cpp
changeset 15 13ae750350c9
parent 0 522cd55cc3d7
child 17 0f22fb80ebba
--- a/landmarksui/uicontrols/src/CLmkEditorImpl.cpp	Tue Feb 02 00:16:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3510 +0,0 @@
-/*
-* 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:   This file contains the methods implementing the core
-*                functionality of landmarks editor
-*
-*/
-
-// INCLUDE FILES
-#include <AknSettingCache.h>
-#include <AiwServiceHandler.h>      // AIW
-#include <AiwCommon.hrh>            // AIW
-#include <featmgr.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <aknmessagequerydialog.h>
-#include <AknIconUtils.h>
-#include <AknWaitDialog.h>
-#include <aknlists.h>
-#include <StringLoader.h>
-#include <AknQueryDialog.h>
-#include <eikcapc.h>
-#include <eikmenup.h>
-#include <hlplch.h>
-#include <sendnorm.rsg> // R_SENDUI_MENU
-#include <lmkui.rsg>
-#include <CLmkEditorDlg.h>
-#include <EPos_CPosLandmark.h>
-#include <EPos_CPosLandmarkDatabase.h>
-#include <epos_poslandmarkserialization.h>
-#include <bldvariant.hrh>
-#include <AknDef.h>
-#include <sysutil.h>
-
-#include <baclipb.h>                        // for CClipboard
-#include <txtrich.h>
-#include <txtetext.h>
-#include <s32std.h>
-
-#include "CLmkUiUtils.h"
-#include "landmarks.hrh"
-#include "LmkConsts.h"
-#include "LmkUID.h"
-#include "CLmkLocationService.h"
-#include "CLmkDbUtils.h"
-#include "CLmkEditorFieldArray.h"
-#include "MLmkEditorField.h"
-#include "LmkNotes.h"
-#include "CLmkDlgCategorySelectorImpl.h"
-#include <csxhelp/lm.hlp.hrh>
-#include "CLmkSender.h"
-#include "clmkgotourlcmd.h"
-#include "clmkcallcmd.h"
-#include "CLmkEditorImpl.h"
-#include "CLmkEditorTextField.h"
-#include "lmkicondialog.h"
-#include "CLmkEditorListField.h"
-#include "CLmkEditorCoordinateField.h"
-#include <Landmarks.rsg>
-#include <uriutils.h>
-#include "LmkListProviderFactory.h"
-#include "CLmkListProviderBase.h"
-#include <locnotprefplugindomaincrkeys.h>
-#include "clmkcentralrepository.h"
-#include "CLmkEditorNumberField.h"
-#include "lmkwaitdlglauncher.h" // Wait dialog launcher
-#include "LmkEditorFieldFactory.h"
-#include <locationvariationdomaincrkeys.h>
-#include <lmkerrors.h>
-
-// CONSTANTS
-/// Unnamed namespace for local definitions
-namespace {
- //const TInt KMaxCatCntForInfoPopUp (3);
- const TInt KHOffsetCatInfoPopup ( 100 );
- const TInt KVOffsetCatInfoPopup ( 30 );
- //const TInt KMinCatLenForInfoPopUp ( 11 );
- //const TInt KMaxCatSizeForInfoPopUp ( 135 );
- #if defined(_DEBUG)
-_LIT( KPanicMsg, "CLmkEditorImpl");
-
-void Panic( TPanicCode aReason )
-    {
-    User::Panic( KPanicMsg, aReason );
-    }
- #endif
-}  // namespace
-
-// ================= LOCAL FUNCTIONS =======================
-static void CleanupArray(TAny* aArray)
-    {
-    ( static_cast<RPointerArray<CPosLandmark>*>( aArray ) )->ResetAndDestroy();
-    }
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CLmkEditorImpl
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CLmkEditorImpl::CLmkEditorImpl(
-    CPosLandmarkDatabase& aDb,
-    CLmkSender& aSender,
-    TLmkEditorMode aEditorMode )
-    : iDb( aDb ),
-      iSender( aSender ),
-      iEditorMode( aEditorMode ),
-      iIsEditing(EFalse),
-      iResetWebAddrSize(ETrue),
-      iIsCategorySelctorOpen(EFalse)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::ConstructL(
-    TPosLmItemId aLandmarkId,
-    TLmkEditorAttributes aAttributes )
-    {
-    CommonConstructL(aAttributes);
-    
-    iLandmark = iDb.ReadLandmarkLC(aLandmarkId);  
-    
-    iLmkFields = CLmkFields::NewL( iLabelArray, 
-                                   iDb,
-                                   aAttributes,
-                                   aLandmarkId, 
-                                   iLandmark ,
-                                   iJapaneseInputMode);  
-    ChangeContextImageL();
-    iEditorFieldArray = CLmkEditorFieldArray::NewL( *iLmkFields, *this );    
-    CleanupStack::Pop(iLandmark);
-    
-    if(iLandmark)
-    	{
-    	iIsLmOwned = ETrue;
-    	}
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::ConstructL(
-    CPosLandmark* aLandmark,
-    TLmkEditorAttributes aAttributes )
-    {
-    CommonConstructL(aAttributes);
-
-    iLmkFields = CLmkFields::NewL( iLabelArray,
-                                   iDb,
-                                   aAttributes,
-                                   aLandmark->LandmarkId(),
-                                   aLandmark,
-                                   iJapaneseInputMode );
-    iLandmark = aLandmark;
-
-    ChangeContextImageL();
-    iEditorFieldArray = CLmkEditorFieldArray::NewL( *iLmkFields, *this );
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::ConstructL(
-    TPosLmItemId* aLandmarkId,
-    CPosLandmark* aLandmark,
-    TLmkEditorAttributes aAttributes )
-    {
-    CommonConstructL(aAttributes);
-
-    iLmkFields = CLmkFields::NewL( iLabelArray,
-                                   iDb,
-                                   aAttributes,
-                                   *aLandmarkId,
-                                   aLandmark,
-                                   iJapaneseInputMode );
-	iLandmarkItemId = aLandmarkId;
-	iLandmark = aLandmark;
-    ChangeContextImageL();
-    iEditorFieldArray = CLmkEditorFieldArray::NewL( *iLmkFields, *this );
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CommonConstructL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::CommonConstructL(TLmkEditorAttributes& aAttributes)
-    {
-	iLandmarkItemId = NULL; // Set to NULL by default. Use only where needed.
-    iLmkUiUtils = CLmkUiUtils::NewL();
-    iLmkUiUtils->ReadLmkUiResourceFileL();
-    CAknForm::ConstructL( R_LMK_EDITOR_MENUBAR );
-
-    iLmkUiUtils->StoreNaviPaneL(); // store old navi pane
-    iLmkUiUtils->CreateDefaultNaviPaneL();
-    // For setting Japanese input mode
-    CAknSettingCache& cache = CAknEnv::Static()->SettingCache();
-	TLanguage currentLanguage = cache.InputLanguage();
-	if ( currentLanguage == ELangJapanese )
-    	{
-    	iJapaneseInputMode = ETrue;
-    	}
-    else
-        {
-        iJapaneseInputMode = EFalse;
-        }
-    CreateLabelArrayL();
-    ConstructContextMenuL();
-
-    // launching browser
-    iLmkGoToURLCmd = CLmkGoToURLCmd::NewL();
-    // Launching Call UI
-    iLmkCallCmd = CLmkCallCmd::NewL();
-    iLmkCallCmd->AttachMenuPaneL( R_LMK_EDITOR_CALL_SUBMENU, R_LMK_EDITOR_AIW_INTEREST);
-	// Create AIW interest
-	iLmkCallCmd->AttachInterestL( R_LMK_EDITOR_AIW_INTEREST );
-	// By default enable map and navigation feature
-    iMapNavFeature = ETrue;
-
-    iMapNavInterface = CLmkMapNavigationInterface::NewL( iDb);
-    iCatInfoPopupNote = NULL;
-    iRepository = CLmkCentralRepository::NewL( KLocSystemofMeasurements,this);
-
-    // Create the wait dialog launcher
-    iWaitDialogLauncher = CLmkWaitDialogLauncher::NewL();
-    iWaitDialogLauncher->SetObserver(this);
-
-    iIsLmOwned = EFalse;
-    
-    // Check if the Coordinates has to be hidden
-	CheckHideCoordinateL();
-    
-    if( iIsHideCoordinate )
-        {
-        aAttributes&= ~CLmkEditorDlg::ELmkLatitude;
-        aAttributes&= ~CLmkEditorDlg::ELmkLongitude;
-        aAttributes&= ~CLmkEditorDlg::ELmkPositionAccuracy;
-        aAttributes&= ~CLmkEditorDlg::ELmkAltitude;
-        aAttributes&= ~CLmkEditorDlg::ELmkAltitudeAccuracy;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CLmkEditorImpl* CLmkEditorImpl::NewL(
-    CPosLandmarkDatabase& aDb,
-    CLmkSender& aSender,
-    TLmkEditorAttributes aAttributes,
-    TLmkEditorMode aEditorMode,
-    TPosLmItemId aLandmarkId )
-    {
-    CLmkEditorImpl* self =
-        new( ELeave ) CLmkEditorImpl( aDb, aSender, aEditorMode );
-
-    CleanupStack::PushL( self );
-    self->ConstructL( aLandmarkId, aAttributes );
-    CleanupStack::Pop(); //self
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CLmkEditorImpl* CLmkEditorImpl::NewL(
-    CPosLandmarkDatabase& aDb,
-    CLmkSender& aSender,
-    TLmkEditorAttributes aAttributes,
-    TLmkEditorMode aEditorMode,
-    CPosLandmark* aLandmark )
-    {
-    CLmkEditorImpl* self =
-        new( ELeave ) CLmkEditorImpl( aDb, aSender, aEditorMode );
-
-    CleanupStack::PushL( self );
-    self->ConstructL( aLandmark, aAttributes );
-    CleanupStack::Pop(); //self
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CLmkEditorImpl* CLmkEditorImpl::NewL(
-    CPosLandmarkDatabase& aDb,
-    CLmkSender& aSender,
-    TLmkEditorAttributes aAttributes,
-    TLmkEditorMode aEditorMode,
-    TPosLmItemId* aLandmarkId,
-    CPosLandmark* aLandmark )
-    {
-    CLmkEditorImpl* self =
-        new( ELeave ) CLmkEditorImpl( aDb, aSender, aEditorMode );
-
-    CleanupStack::PushL( self );
-    self->ConstructL( aLandmarkId, aLandmark, aAttributes );
-    CleanupStack::Pop(); //self
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::~CLmkEditorImpl()
-// -----------------------------------------------------------------------------
-//
-CLmkEditorImpl::~CLmkEditorImpl()
-    {
-    delete iWaitDialogLauncher;
-		
-	CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-	cba->RemoveCommandObserver(KMskCommandPos);
-        
-    if( iLmkUiUtils )
-        {
-        iLmkUiUtils->SetOldContextIcon();
-        iLmkUiUtils->RestoreOldTitlePane();
-        }
-
-    delete iLmkUiUtils;
-    delete iLmkFields;
-    iLabelArray.ResetAndDestroy();
-    iCategoryNames.Close();
-    iLabelArray.Close();
-    delete iEditorFieldArray;
-    delete iLocationService;
-
-    if (iContextMenuBar)
-        {
-        iEikonEnv->EikAppUi()->RemoveFromStack(iContextMenuBar);
-        delete iContextMenuBar;
-        }
-    delete iLmkGoToURLCmd;
-    delete iLmkCallCmd;
-    iMapNavInterface->Release();
-	delete iCatInfoPopupNote;
-	delete iRepository;
-	if(iIsLmOwned && iLandmark)
-		delete iLandmark;
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::SetMopParent
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CLmkEditorImpl::SetMopParent(
-    MObjectProvider* aParent )
-    {
-    CCoeControl::SetMopParent( aParent );
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::SetHelpContext
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CLmkEditorImpl::SetHelpContext( TCoeHelpContext aContext )
-    {
-    iHelpContext = aContext;
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ExecuteL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CLmkEditorImpl::ExecuteLD()
-    {
-    CleanupStack::PushL( this );
-    AttachAIWMenuInterestL();
-    CleanupStack::Pop();//this
-    if (iEditorMode == CLmkEditorDlg::ELmkEditor)
-		{
-		iIsEditing = ETrue;
-		return CAknForm::ExecuteLD( R_LMK_EDITOR_DIALOG );
-		}
-    else // viewer/receive state of editor
-	    {
-		iIsEditing = EFalse;
-		return CAknForm::ExecuteLD( R_LMK_VIEWER_DIALOG );
-	    }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::DisableMapAndNavigationMenuOptions
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CLmkEditorImpl::DisableMapAndNavigationMenuOptions()
-	{
-	iMapNavFeature = EFalse;
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::DynInitMenuPaneL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::DynInitMenuPaneL(
-    TInt aResourceId,
-    CEikMenuPane* aMenuPane )
-    {
-    switch( aResourceId )
-        {
-        case R_AVKON_FORM_MENUPANE:
-            {
-            CAknForm::DynInitMenuPaneL( aResourceId, aMenuPane );
-            TBool isLandmarkDataEmpty = EFalse;
-            TBool dimClearPos = ETrue;
-
-            // Disable Map and Navigation feature when opted not to show	
-		    if( !iMapNavFeature )
-		    	{		    	
-		    	isLandmarkDataEmpty = ETrue;
-		    	}	
-		    else	    
-	        	{
-	        	isLandmarkDataEmpty = ArePositionFieldEmptyL();
-	        	}
-	                    
-            if( isLandmarkDataEmpty )
-            	{
-		    	// delete the show on map & Navigate To options
-		    	aMenuPane->DeleteMenuItem( ELmkShowOnMapPlaceHolder );
-            	aMenuPane->DeleteMenuItem( ELmkNavigateToPlaceHolder );
-            	}
-            else if( IsEditable() )
-            	{
-		    	// delete the Navigate To option for editor
-            	aMenuPane->DeleteMenuItem( ELmkNavigateToPlaceHolder );
-            	}
-
-		    if( IsEditable() )
-		    	{
-		    	dimClearPos = ArePositionFieldEmptyL();
-		    	}
-    
-            if( dimClearPos || iIsHideCoordinate)
-	            {
-	            aMenuPane->SetItemDimmed( ELmkCmdClearPosInfo, ETrue );
-	            }
-
-            if( iMapNavFeature )
-            	{
-            	iMapNavInterface->AttachMenuPaneL( aMenuPane, R_LMK_EDITOR_MENU, ELmkCmdMnNav );
-            	}
-
-            // Send menu is handled by the sender:
-            if ( FeatureManager::FeatureSupported( KFeatureIdLandmarksConverter ) )
-				{
-				aMenuPane->SetItemDimmed(ELmkCmdSendDummy, EFalse);
-				iSender.DisplaySendMenuL( *aMenuPane, 1 );
-				}
-			else
-				{
-				aMenuPane->SetItemDimmed(ELmkCmdSendDummy, ETrue);
-				}
-
-			if ( FeatureManager::FeatureSupported( KFeatureIdLocationFrameworkCore ))
-				{
-				aMenuPane->SetItemDimmed( ELmkCmdCurrentLocation,!IsEditable());
-				}
-			else
-				{
-				aMenuPane->SetItemDimmed( ELmkCmdCurrentLocation, ETrue );
-				}
-
-			if ( FeatureManager::FeatureSupported( KFeatureIdHelp )&&
-                        !iIsHideHelp )
-				{
-				aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse );
-				}
-			else
-				{
-				aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
-				}
-
-            //only in edit mode
-            aMenuPane->SetItemDimmed( ELmkCmdSelectCategories, !IsEditable() );
-            aMenuPane->SetItemDimmed( ELmkCmdChangeIcon, !IsEditable() );
-
-
-            //additional commands always dimmed in this class:
-            aMenuPane->SetItemDimmed( ELmkCmdSaveLm, ETrue );
-            // Only in view mode
-            aMenuPane->SetItemDimmed( ELmkCmdEditLm, IsEditable() );
-             //allways dimmed
-            aMenuPane->SetItemDimmed( EAknFormCmdEdit, ETrue );
-		    aMenuPane->SetItemDimmed( EAknFormCmdSave, ETrue );
-		    aMenuPane->SetItemDimmed( EAknFormCmdLabel, ETrue );
-		    aMenuPane->SetItemDimmed( EAknFormCmdAdd, ETrue );
-		    aMenuPane->SetItemDimmed( EAknFormCmdDelete, ETrue );
-            aMenuPane->SetItemDimmed( ELmkCmdCategories, ETrue );
-			aMenuPane->SetItemDimmed( ELmkCmdEditTextLm, ETrue );
-
-			if(IsEditable())
-				{
-				aMenuPane->SetItemDimmed( ELmkCmdCall, ETrue );
-				aMenuPane->SetItemDimmed( ELmkCmdGoToUrl, ETrue );
-				}
-			else
-				{
-				MLmkFieldData* field = iLmkFields->GetField(EPhoneNumber);
-				if(field)
-					{
-	    			TInt id = field->UniqueFieldIdentity();
-					MLmkEditorField* control = iEditorFieldArray->Find( id );
-					if ((!control) || GetFieldTextLengthL( *control ) <= 0 )
-						{
-						aMenuPane->SetItemDimmed( ELmkCmdCall, ETrue );
-						}
-					
-					MLmkFieldData* field2 = iLmkFields->GetField(EWebAddress);
-					if( field2 )
-                        {
-                        TInt id2 = field2->UniqueFieldIdentity();
-                        control = iEditorFieldArray->Find( id2 );
-                        if ( (!control) || GetFieldTextLengthL( *control ) <= 0 )
-                            {
-                            aMenuPane->SetItemDimmed( ELmkCmdGoToUrl, ETrue );
-                            }
-                        }
-					}
-				}
-            break;
-            }
-        case R_SENDUI_MENU: // Dynamically created send ui menu
-            {
-            // Send menu is handled by the sender:
-            if ( FeatureManager::FeatureSupported( KFeatureIdLandmarksConverter ) )
-				{
-				iSender.DisplaySendCascadeMenuL( *aMenuPane );
-				}
-            break;
-            }
-		case R_LMK_EDITOR_CONTEXT_MENU:
-			{
-			MLmkEditorField* field =
-			iEditorFieldArray->Find( IdOfFocusControl() );
-			TUint type = field->LandmarkItemField().FieldType();
-
-			if ( type != EPhoneNumber )
-				{
-				aMenuPane->SetItemDimmed( ELmkEditMenuAiwId, ETrue );
-				}
-			if ( type != EWebAddress )
-				{
-				aMenuPane->SetItemDimmed( ELmkCmdGoToUrl, ETrue );
-				}
-
-			if ( type == EPhoneNumber )
-				{
-				if ( GetFieldTextLengthL( *field ) <= 0 )
-					{
-					aMenuPane->SetItemDimmed( ELmkEditMenuAiwId, ETrue );
-					}
-				}
-			if ( type == EWebAddress )
-				{
-				if ( GetFieldTextLengthL( *field ) <= 0 )
-					{
-					aMenuPane->SetItemDimmed( ELmkCmdGoToUrl, ETrue );
-					}
-				}
-			break;
-			}
-        case R_LMK_EDITOR_CALL_SUBMENU:
-        	{
-        	// Initialize the AIW menu service
-        	iLmkCallCmd->InitializeMenuPaneL(
-                 *aMenuPane,
-                 aResourceId,
-                 ELmkCmdLast // Must not overlap with the other menu ids!
-                 );
-            break;
-        	}
-        default:
-            {
-            break;
-            }
-        }
-    iMapNavInterface->HandleMenuOperationL(aResourceId, aMenuPane, ELmkCmdMnNav);
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::IsLandmarkDataEmptyL
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::IsLandmarkDataEmptyL(CPosLandmark* aLandmark)
-    {
-    // verify that destination landmark has coordinates
-    TLocality loc;
-    TBool isValid = (KErrNone == aLandmark->GetPosition(loc));
-    isValid &= !Math::IsNaN(loc.Latitude()) && !Math::IsNaN(loc.Longitude());
-    return isValid;
-    
-/*    if (!isValid)
-        {
-        // verify that destination landmark has address info
-        TPositionFieldId fieldId = aLandmark->FirstPositionFieldId();
-        while (fieldId != EPositionFieldNone)
-            {
-            if (fieldId > EPositionFieldAddressCapabilitiesBegin && fieldId
-                    < EPositionFieldBuildingTelephone)
-                {
-                TPtrC field;
-                aLandmark->GetPositionField(fieldId, field);
-                if (field.Length())
-                    {
-                    isValid = ETrue;
-                    break;
-                    }
-                }
-            fieldId = aLandmark->NextPositionFieldId(fieldId);
-            }
-        }
-    return !isValid;*/
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ProcessCommandL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::ProcessCommandL( TInt aCommandId )
-    {
-    // Hide the context sensitive menu here
-    HideMenu();
-    iContextMenuBar->StopDisplayingMenuBar();
-
-    CAknDialog::ProcessCommandL( aCommandId );
-    TInt aiwCmd = iMapNavInterface->GetServiceCmdByMenuCmd(aCommandId);
-
-    // Handles Map and Navigation commands
-    if(KAiwCmdNone != aiwCmd)
-    	{
-    	// Landmark array to pass to M&N interface
-    	RPointerArray<CPosLandmark> lmkArray;
-    	switch(aiwCmd)
-    		{
-    		case KAiwCmdMnShowMap:
-    			{
-    			CPosLandmark* landmark = GetCurrentEditedLandmarkL();
-    		    lmkArray.Append(landmark);
-			    CleanupStack::PushL( TCleanupItem( CleanupArray, &lmkArray ) );
-				iMapNavInterface->ShowLandmarksOnMapL(lmkArray, aCommandId,
-				 									 CLmkMapNavigationInterface::EByLmkView);
-				CleanupStack::PopAndDestroy(); //lmkArray
-    			break;
-    			}
-    		case KAiwCmdMnNavigateTo:
-    			{
-    			CPosLandmark* landmark = GetCurrentEditedLandmarkL();
-				lmkArray.Append(landmark);
-	    		CleanupStack::PushL( TCleanupItem( CleanupArray, &lmkArray ) );
-	    		iMapNavInterface->NavigateToLandmarkL(lmkArray[0],aCommandId);
-	    		CleanupStack::PopAndDestroy(); //lmkArray
-    			break;
-    			}
-    		}
-    	lmkArray.Reset();
-    	return;
-    	}
-    switch ( aCommandId )
-        {
-        case EAknCmdHelp:
-            {
-            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
-                static_cast<CAknAppUi*>(
-                    iCoeEnv->AppUi() )->AppHelpContextL() );
-            break;
-            }
-        // these all are same: save & exit
-        case EAknSoftkeyBack:
-        case EAknSoftkeyExit:
-        case EEikCmdExit:
-        case EAknCmdExit:
-            {
-            CAknForm::OkToExitL( aCommandId );
-            iLmkUiUtils->RestoreOldNaviPaneL();
-            CEikAppUi* appUi = iEikonEnv->EikAppUi();
-            // Close this dialog first
-            delete this;
-            // Exit application
-            static_cast<MEikCommandObserver*>(appUi)->ProcessCommandL(aCommandId);
-            break;
-            }
-        case ELmkCmdDeleteLm:
-            {
-            if ( LmkNotes::LandmarkConfirmationQueryL( iEikonEnv ) )
-                {
-                iLmkFields->DeleteLandmarkL();
-                iLmkUiUtils->RestoreOldNaviPaneL();
-                iIsEditing = EFalse;
-                delete this;                
-                }
-            break;
-            }
-        case ELmkCmdSelectCategories:
-            {
-			if(!iIsCategorySelctorOpen)
-				{
-				iIsCategorySelctorOpen = ETrue;
-				SelectCategoriesCmdL();
-				}
-            break;
-            }
-        case ELmkCmdChangeIcon:
-            {
-            ChangeIconCmdL();
-            break;
-            }
-        case ELmkCmdCurrentLocation:
-            {
-            CurrentLocationCmdL();
-            break;
-            }
-        case ELmkCmdSendVia1:
-        case ELmkCmdSendVia2:
-        case ELmkCmdSendVia3:
-        case ELmkCmdSendVia4:
-        case ELmkCmdSendVia5:
-        case ELmkCmdSendVia6:
-        case ELmkCmdSendVia7:
-        case ELmkCmdSendVia8:
-        case ELmkCmdSendVia9:
-        case ELmkCmdSendVia10:
-        case ELmkCmdSend:
-            {
-            if ( !IsNameFieldEmptyL() )
-                {
-                // Obtain the current landmark object
-                CPosLandmark* lmk = GetCurrentEditedLandmarkL();
-                CleanupStack::PushL( lmk );
-                iSender.SendSingleLandmarkL(*lmk);
-                CleanupStack::PopAndDestroy( lmk );
-                }
-            else
-                {
-                DoNotSaveFormDataL();
-                }
-            break;
-            }
-        case ELmkCmdGoToUrl:
-			{
-			// Get URL field
-			MLmkFieldData* field = iLmkFields->GetField(EWebAddress);
-			if(field)
-				{
-				TInt id = field->UniqueFieldIdentity();
-				MLmkEditorField* control = iEditorFieldArray->Find( id );
-				if(control)
-					{
-					HBufC* fieldText =  control->ControlTextL();
-					CleanupStack::PushL( fieldText );
-					TPtr urlPtr = fieldText->Des();
-					if ( urlPtr.Length() > 0 )
-						{
-						iLmkGoToURLCmd->LaunchBrowserL( urlPtr );
-						}
-					CleanupStack::PopAndDestroy( fieldText );
-					}
-				}
-			break;
-			}
-        case ELmkCmdEditLm:
-	        {
-	        if(!iIsEditing)
-	        	{
-	        	LaunchLmkEditorL();
-	        	}
-	        break;
-	        }
-        case ELmkCmdCall:
-	    case ELmkCmdLast:
-		    {
-			MLmkFieldData* field = iLmkFields->GetField(EPhoneNumber);
-			if(field)
-				{
-				TInt id = field->UniqueFieldIdentity();
-				MLmkEditorField* control = iEditorFieldArray->Find( id );
-				if(control)
-					{
-					HBufC* fieldText = control->ControlTextL();
-					CleanupStack::PushL( fieldText );
-		            if ( fieldText && fieldText->Length() > 0 )
-		                {
-						//Check if any active character or not
-						TPtr ptr = fieldText->Des();
-						ptr.Trim();
-						if (ptr.Length() > 0)
-							{
-							//modified for 3.2, since   command is not coming
-							//from menu item, hence need to pass diff command.
-							//this code needs some more modification to make it
-						 	//genericly work for all the commands.
-						    iLmkCallCmd->ExecuteAIWCallCmdL( ELmkCmdCall, ptr );
-							}
-						}
-	            	CleanupStack::PopAndDestroy( fieldText );
-					}
-			    }
-			break;
-		    }
-        case ELmkCmdShow:
-	        {
-	        MLmkEditorField* field =
-			iEditorFieldArray->Find( IdOfFocusControl() );
-			TUint type = field->LandmarkItemField().FieldType();
-			if (type == ECategories )
-				{
-				if(iCalegorySelectionFlag) // Receive mode
-					{
-					CategoriesCmdFromXmlL();
-					}
-				else
-					{
-					CategoriesCmdL();		// View mode
-					}
-				}
-			break;
-	        }
-        case ELmkCmdClearPosInfo:
-        	{
-        	ClearPositionInfoL();
-        	break;
-        	}        	
-        default:
-            {
-            CAknForm::ProcessCommandL( aCommandId );
-            break;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::HandleControlStateChangeL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::HandleControlStateChangeL( TInt aControlId )
-    {
-    MLmkEditorField* changedField = iEditorFieldArray->Find( aControlId );
-    if ( changedField )
-        {
-        if ( changedField->LandmarkItemField().IsTitleField() )
-            {
-            HBufC* title = changedField->ControlTextL();
-            CleanupStack::PushL( title );
-            if ( !title )
-                {
-                title = HBufC::New(0);
-                }
-            iLmkUiUtils->ChangeTitlePaneL( title );
-            CleanupStack::Pop(); //title
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::DoNotSaveFormDataL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::DoNotSaveFormDataL()
-    {
-    if ( !iIsEndKey )
-		{
-	  	LmkNotes::InformationNoteL( iEikonEnv, R_LMK_EMPTY_LANDMARK_NAME_NOTE );
-	    }
-    MLmkFieldData* field = iLmkFields->GetField(EName);
-    if( field )
-        {
-        TInt id = field->UniqueFieldIdentity();
-        TryChangeFocusL(id);        
-        }    
-    CAknForm::SetInitialCurrentLine();
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::GetHelpContext
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    if ( iHelpContext.iContext.Length() > 0 )
-        {
-        aContext.iContext = iHelpContext.iContext;
-        aContext.iMajor = iHelpContext.iMajor;
-        }
-    else if ( iEditorMode == CLmkEditorDlg::ELmkViewer )
-        {
-        aContext.iContext = KLM_HLP_LM_VIEWER;
-        aContext.iMajor = TUid::Uid( KLmkAppUID3 );
-        }
-    else
-        {
-        aContext.iContext = KLM_HLP_LM_EDITOR;
-        aContext.iMajor = TUid::Uid( KLmkAppUID3 );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::OfferKeyEventL
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CLmkEditorImpl::OfferKeyEventL( const TKeyEvent& aKeyEvent,
-                                             TEventCode aType )
-    {
-   /**
-    * By def, dialog opens in view mode
-    * selecting 'edit' option from (either from context menu/options menu)
-    * to edit landmark fields
-    *
-    */
-    if (IsEditable())
-    	{
-    	//always dimmed for the editor
-		DimmMiddleSoftKey();
-    	}
-	if ( aKeyEvent.iCode == EKeyOK )
-		{
-		MLmkEditorField* field =
-		iEditorFieldArray->Find( IdOfFocusControl() );
-		TUint type = field->LandmarkItemField().FieldType();
-		// check the editor mode
-		if (IsEditable()) // edit mode
-			{
-			if ( type == ECategory || type == ECategories )
-				{
-				if(!iIsCategorySelctorOpen)
-					{
-					iIsCategorySelctorOpen = ETrue;
-					SelectCategoriesCmdL();
-					}
-
-				return EKeyWasConsumed;
-				}
-			}
-		else
-			{// view or receive mode
-			if ( type == ECategory || type == ECategories )
-				{
-				if(iCalegorySelectionFlag) // Receive mode
-					{
-					CategoriesCmdFromXmlL();
-					return EKeyWasConsumed;
-					}
-				else
-					{
-					CategoriesCmdL();		// View mode
-					return EKeyWasConsumed;
-					}
-				}
-			else // focus is on any other landmark field
-				{
-				if ( !iCalegorySelectionFlag )// No context menu for receive mode
-					{
-		            if(!iIsEditing)
-		                {
-		                LaunchLmkEditorL();
-		                return EKeyWasConsumed;
-		                }
-/*					
-					//Launch context sensitive menu bar here
-					if ( iContextMenuBar )
-						{
-						iContextMenuBar->TryDisplayMenuBarL();
-						return EKeyWasConsumed;
-						}
-*/						
-					}
-				}
-			}
-		}
-	else if( aKeyEvent.iCode == EKeyBackspace )
-		{
-		if( !IsEditable() && iIsLmkReceiveMode == EFalse )
-			{
-			ProcessCommandL( ELmkCmdDeleteLm );
-			return EKeyWasConsumed;
-			}
-		}
-	else if ( aKeyEvent.iCode == EKeyPhoneEnd )
-			{
-			iIsEndKey = ETrue;
-			OkToExitL(EAknSoftkeyDone);
-			}
-	else // for 'sendkey' handling
-		{
-		if ( aKeyEvent.iCode == EKeyPhoneSend &&  (!IsEditable()) && (!Layout_Meta_Data::IsPenEnabled()) )
-			{
-			// Get Landmark's telephone number
-			TPosLmItemId lmId = iLmkFields->LandmarkId();
-			CPosLandmark* landmark = iDb.ReadLandmarkLC(lmId);
-			// Get phone num field
-			if (landmark->IsPositionFieldAvailable(
-			              ELmkPositionFieldPhoneNumber) )
-				{
-				TPtrC telnumPtr;
-				if ( (landmark->GetPositionField(
-				                ELmkPositionFieldPhoneNumber,
-				                telnumPtr ) == KErrNone) && (telnumPtr.Length() > 0 ))
-					{
-					iLmkCallCmd->ExecuteAIWCallCmdL( ELmkCmdCall,telnumPtr );
-					}
-				else
-					{
-					// Get name
-					TPtrC lmkNamePtr;
-					if ( landmark->GetLandmarkName ( lmkNamePtr ) == KErrNone )
-						{
-						LmkNotes::InformationNotewithTextL( iEikonEnv,
-						                 R_LMK_NOTE_NO_NUMBER_TO_NAME,
-						                 lmkNamePtr);
-						}
-					}
-				}
-			CleanupStack::PopAndDestroy(landmark);
-			}
-		}
-
-	if ( aType == EEventKey && ( aKeyEvent.iCode == EKeyEnter || aKeyEvent.iScanCode == EStdKeyEnter ))
-		{
-		TBool isCategoryField = EFalse;
-		MLmkEditorField* field = iEditorFieldArray->Find( IdOfFocusControl() );
-		TUint type = field->LandmarkItemField().FieldType();
-
-		if ( type == ECategory || type == ECategories )
-			isCategoryField = ETrue;
-
-		// check the editor mode and category field focus
-		if ( IsEditable() == EFalse || isCategoryField )
-			{
-			TKeyEvent enterKeyEvent( aKeyEvent );
-			enterKeyEvent.iCode = EKeyOK;
-			CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-			return cba->OfferKeyEventL( enterKeyEvent, aType );
-			}
-		}
-
-    TKeyResponse response= CAknForm::OfferKeyEventL( aKeyEvent, aType );
-    return response;
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::NotifyL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::NotifyL( const TInt aStatus )
-	{
-    // Stop the running wait dialog
- 	TInt buttonId = iWaitDialogLauncher->StopWaitDialogL();
- 	if( EEikBidCancel != buttonId )
- 	    {
-	    switch( aStatus )
-    		{
-            case KErrNone:
-            case KPositionPartialUpdate:
-                {
-                if(iLocationService)
-                	{
-                	TPosition position = iLocationService->CurrentPosition();
-			    	SetCurrentLocationL( position );
-                	}
-                break;
-                }
-            default:
-                {
-                break;
-                }
-    		}
- 	    }
-    delete iLocationService;
-    iLocationService = NULL;
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::NotifyErrorL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::NotifyErrorL( TInt aErrorCode )
-    {
-
-    // Stop the running wait dialog
- 	TInt buttonId = iWaitDialogLauncher->StopWaitDialogL();
-
-    delete iLocationService;
-    iLocationService = NULL;
-
- 	if( EEikBidCancel != buttonId )
- 	    {
-	    switch( aErrorCode )
-    		{
-	        case KPositionQualityLoss:
-    		case KErrTimedOut:
-    		case KErrNotFound: // No PSY selected.
-    		case KErrUnknown:
-    		case KErrCancel:
-    		case KErrArgument:
-    		default:
-    		    // The above errors are because of location request failures
-		        // Ask user to retry location request
-    			{
-    			if ( LmkNotes::MessageQueryWithLinkL(iEikonEnv,R_LMK_MSG_QUERY_HEADING_PANE_TEXT,
-    												R_LMK_CONF_RETRY_LOCATION_REQUEST,R_LMK_REQUEST_FAIL_MORE_INFO,
-    												MessageQueryCallBack) )
-    				{
-    				if( iLocationService )
-    					{
-    					delete iLocationService;
-    					iLocationService = NULL;
-    					}
-    				CurrentLocationCmdL();
-    				}
-    			}
-    		}
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CreateCustomControlL
-// -----------------------------------------------------------------------------
-//
-SEikControlInfo CLmkEditorImpl::CreateCustomControlL( TInt /*aControlType*/ )
-    {
-    SEikControlInfo ctrl;
-    ctrl.iControl = NULL;
-    ctrl.iTrailerTextId = 0;
-    ctrl.iFlags = 0;
-    /*switch( aControlType )
-        {
-        case EDistanceEditorType:
-            {
-            ctrl.iControl = new(ELeave) CLmkDistanceEditor();
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        }*/
-    return ctrl;
-    }
-
-// ----------------------------------------------------
-// CLmkEditorImpl::ConvertCustomControlTypeToBaseControlType
-// ----------------------------------------------------
-//
-MEikDialogPageObserver::TFormControlTypes
-CLmkEditorImpl::ConvertCustomControlTypeToBaseControlType(
-    TInt aControlType ) const
-    {
-    switch( aControlType )
-        {
-        case EDistanceEditorType:
-            {
-            return MEikDialogPageObserver::EMfneDerived;
-            //break;
-            }
-        default:
-            {
-            return MEikDialogPageObserver::EUnknownType;
-            //break;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::PreLayoutDynInitL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::PreLayoutDynInitL()
-    {
-    CAknForm::PreLayoutDynInitL();
-
-    // When adding fields the form must be editable:
-    //SetEditableL(ETrue);
-    if (iCalegorySelectionFlag && iCategoryNames.Count() >= 1)
-        iEditorFieldArray->SetCategoryName(iCategoryNames[0]);
-    iEditorFieldArray->CreateFieldsFromLmkL();
-    //SetEditableL(EFalse);
-    //CAknForm::SetInitialCurrentLine();
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::PostLayoutDynInitL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::PostLayoutDynInitL()
-    {
-    CAknForm::PostLayoutDynInitL();
-
-    MLmkFieldData* fields = iLmkFields->GetField( EName );
-    if ( fields )
-        {
-        TPtrC name =  fields->TextData();
-
-        //ChangeTitle
-        HBufC* title = name.Alloc();
-        CleanupStack::PushL( title );
-        iLmkUiUtils->StoreTitlePaneL(); // save old title pane
-        iLmkUiUtils->ChangeTitlePaneL( title ); //take ownership
-        CleanupStack::Pop( title ); //title
-        }
-
-    SetEditableL(  iEditorMode == CLmkEditorDlg::ELmkEditor );
-    CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-    cba->UpdateCommandObserverL(KMskCommandPos,*this);
-    if (!IsEditable())
-	    {
-	    AddMskCommandL(R_LM_MSK_EDIT,ELmkCmdEditLm);
-	    }
-	else
-		{
-		//only for editor
-		DimmMiddleSoftKey();
-		if (iFieldTypeToFocus == ECategory || iFieldTypeToFocus == ECategories)
-			{
-			AddMskCommandL(R_LM_MSK_EDIT,ELmkCmdSelectCategories);
-			}
-		}
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::OkToExitL
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::OkToExitL( TInt aKeyCode )
-    {
-    TBool ret = EFalse;
-    switch ( aKeyCode )
-        {
-	    case EAknSoftkeyDone:
-		    {
-            if ( IsEditable() )
-                {
-                if ( iEditorFieldArray->AreAllFieldsEmptyL() )
-                    {
-                    
-                    if( iLandmark && iIsHideCoordinate )
-                    	{
-                    	TLocality locality;
-                    	iLandmark->GetPosition( locality ); 
-                    	if( !Math::IsNaN( locality.Latitude() ))                        		
-                    		{
-					        DoNotSaveFormDataL(); 
-					        iIsEndKey = EFalse;
-                        	// Stay back in the editor mode
-                    		break;
-                    		}
-                    	}
-                    	
-                    TRAPD(err,CPosLandmark* landmark = iDb.ReadLandmarkLC(iLmkFields->LandmarkId());CleanupStack::PopAndDestroy( landmark ));
-                    if (err == KErrNotFound)
-                        {
-						// The Landmark is not in the database.Dont save the 
-						// landmark. Just return
-						// Don't save when all landmark fields are empty 
-						iLmkUiUtils->RestoreOldNaviPaneL();                     
-						ret = ETrue;                       	
-                        }
-                    else
-                        {
-                        // The landmark is in the database. Hence, confirm
-                        // from the user whether he wants to delete the
-                        // landmark
-                        if ( LmkNotes::LandmarkConfirmationQueryL( iEikonEnv ) )
-                            {
-                            iLmkFields->DeleteLandmarkL();
-                            iLmkUiUtils->RestoreOldNaviPaneL();
-                            ret = ETrue;
-                            }
-                        else
-                            {
-                            // Stay back in the editor mode
-                            ret = EFalse;
-                            }
-                        }
-
-                    }
-                else
-                    {
-                    if(!ValidateContentL())
-                    	{
-                    	ret = EFalse;
-                        return ret;
-                    	}
-                    else
-                        {
-                        /**
-                        * Do not save landmark if disc space is not
-                        * enough
-                        */
-                        TRAPD( err, iEditorFieldArray->SaveFieldsL() );
-                        if ( err == KErrDiskFull )
-                            {
-                            ret = EFalse;
-                            LmkNotes::OutOfMemoryNoteL( iEikonEnv );
-                            delete this;
-                            return ret;
-                            }
-
-                        if ( iLandmarkItemId )
-                        	{
-                        	*iLandmarkItemId = iLmkFields->LandmarkId();
-                        	}
-                        iLmkUiUtils->RestoreOldNaviPaneL();
-                        ret = ETrue;
-                        }
-                    }
-                }
-            else
-                {
-                iLmkUiUtils->RestoreOldNaviPaneL();
-                ret = ETrue;
-                }
-            break;
-            }
-        default:
-            break;
-        }
-    if ( !ret )
-        {
-        ret = CAknForm::OkToExitL( aKeyCode );
-        }
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CreateLineL
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CLmkEditorImpl::CreateLineL(
-    const TDesC& aCaption,
-	TInt aControlId,
-	TInt aControlType )
-	{
-	return CreateLineByTypeL(
-			aCaption, aControlId, aControlType, NULL );
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::LineControl
-// -----------------------------------------------------------------------------
-//
-CEikCaptionedControl* CLmkEditorImpl::LineControl( TInt aControlId ) const
-	{
-	return Line( aControlId );
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::DeleteControl
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::DeleteControl( TInt aControlId )
-	{
-	DeleteLine( aControlId );
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::TryChangeFocusL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::TryChangeFocusL( TInt aControlId )
-	{
-	if ( ControlOrNull( aControlId ) )
-		{
-		TryChangeFocusToL( aControlId );
-		}
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::SetCurrentLineCaptionL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::SetCurrentLineCaptionL(
-    TInt aControlId,
-    const TDesC& aText )
-	{
-	CEikCaptionedControl* ctl = Line(aControlId);
-	if (ctl)
-	    {
-	    ctl->SetCaptionL(aText);
-	    ctl->DrawDeferred();
-	    }
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::Control
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CLmkEditorImpl::Control( TInt aControlId ) const
-	{
-	return ControlOrNull( aControlId );
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::SetEditableL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::SetEditableL( TBool aState )
-	{
-    CAknForm::SetEditableL( aState );
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::Database
-// -----------------------------------------------------------------------------
-//
-CPosLandmarkDatabase& CLmkEditorImpl::Database()
-    {
-    return iDb;
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::GetCurrentEditedLandmarkL
-// -----------------------------------------------------------------------------
-//
-CPosLandmark* CLmkEditorImpl::GetCurrentEditedLandmarkL()
-	{
-	iEditorFieldArray->SaveFieldsToBufferL();
-	CArrayPtrFlat<MLmkFieldData>& fieldArray = iLmkFields->Fields();
-	TInt count( fieldArray.Count() );
-	CPosLandmark* lmk = NULL;
-	if( iLandmark )
-		{
-		HBufC8* lmBuf = PosLandmarkSerialization::PackL( *iLandmark );
-		CleanupStack::PushL( lmBuf );
-		lmk = PosLandmarkSerialization::UnpackL( lmBuf->Des() );
-		CleanupStack::PopAndDestroy( lmBuf );
-		}
-	else
-		{
-		lmk = CPosLandmark::NewL();
-		}
-
-	TBool isPosFieldPresent=EFalse;
-	
-	TLocationData locationData; // to store editor position data
-
-    //Position data
-	TLocality locality = TLocality(); // empty locality
-
-	locationData.iLatitude             = locality.Latitude();
-	locationData.iLongitude            = locality.Longitude();
-	locationData.iAltitude             = locality.Altitude();
-	locationData.iHorizontalAccuracy   = locality.HorizontalAccuracy();
-	locationData.iVerticalAccuracy     = locality.VerticalAccuracy();
-		
-    for ( TInt i = 0; i < count; i++ )
-        {
-        switch( fieldArray[i]->FieldType() )
-            {
-            case EName:
-                {
-                lmk->SetLandmarkNameL( fieldArray[i]->TextData() );
-                HBufC* path = fieldArray[i]->IconPath();
-                if ( path && path->Length() > 0 &&
-                    fieldArray[i]->IconId() != KErrNotFound )
-                    {
-                    // Get the default Mask index
-                    lmk->SetIconL( *path, fieldArray[i]->IconId() , KLmkDefaultId+1);
-                    }
-
-                break;
-                }
-            case ECategory:
-            case ECategories:
-                {
-                //Add categories to landmark
-                RArray<TPosLmItemId>& categories =
-                    fieldArray[i]->Categories();
-                TInt Tcount( categories.Count() );
-                for ( TInt j=0; j < Tcount; j++ )
-                    {
-                    lmk->AddCategoryL( categories[j] );
-                    }
-                break;
-                }
-			case EDescription:
-				{
-				lmk->SetLandmarkDescriptionL( fieldArray[i]->TextData() );
-				break;
-				}
-            //these all are same
-            case EStreet:
-            case EPostCode:
-            case ECity:
-            case EStateProvince:
-            case ECountry:
-			case EPhoneNumber:
-			case EWebAddress:
-                {
-                lmk->SetPositionFieldL(
-                        fieldArray[i]->PositionFieldId(),
-                        fieldArray[i]->TextData() );
-                break;
-                }
-            case ELatitude:
-                {
-                isPosFieldPresent = ETrue;
-                locationData.iLatitude = fieldArray[i]->DoubleData();
-                break;
-                }
-            case ELongitude:
-                {
-                isPosFieldPresent = ETrue;
-                locationData.iLongitude = fieldArray[i]->DoubleData();
-                break;
-                }
-            case EPositionAccuracy:
-                {
-                locationData.iHorizontalAccuracy =
-                    fieldArray[i]->FloatData();
-                break;
-                }
-            case EAltitude:
-                {
-                locationData.iAltitude = fieldArray[i]->FloatData();
-                break;
-                }
-            case EAltitudeAccuracy:
-                {
-                locationData.iVerticalAccuracy = fieldArray[i]->FloatData();
-                break;
-                }
-            default:
-                {
-                break;
-                }
-            }
-        }
-
-    if( isPosFieldPresent )
-        {
-        // remove the old values to set new values       
-        lmk->RemoveLandmarkAttributes(CPosLandmark::EPosition);
-
-    	if (!Math::IsNaN(locationData.iLatitude) &&
-        	!Math::IsNaN(locationData.iLongitude))
-            {
-            if (!Math::IsNaN(locationData.iAltitude))
-                {
-                locality.SetCoordinate(
-                    locationData.iLatitude,
-                    locationData.iLongitude,
-                    locationData.iAltitude);
-
-                if (!Math::IsNaN(locationData.iVerticalAccuracy))
-                    {
-                    if( locationData.iVerticalAccuracy > 0 )
-                        locality.SetVerticalAccuracy(locationData.iVerticalAccuracy);
-                    }
-                }
-            else
-                {
-                locality.SetCoordinate(
-                    locationData.iLatitude,
-                    locationData.iLongitude);
-                }
-
-            if (!Math::IsNaN(locationData.iHorizontalAccuracy))
-                {
-                if( locationData.iHorizontalAccuracy > 0 )
-                    locality.SetHorizontalAccuracy(locationData.iHorizontalAccuracy);
-                }
-            // save position if at least lat/lon are entered
-            lmk->SetPositionL(locality);            
-            }
-        }
-
-    return lmk;
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CreateLabelArrayL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::CreateLabelArrayL()
-    {
-
-    if ( iJapaneseInputMode )
-		{
-		// Display in Japanese order
-	    CreateLabelArrayForJapaneseModeL();
-		}
-	else
-		{ // Normal mode
-		CreateLabelArrayForNormalModeL();
-		}
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CreateLabelArrayForNormalModeL()
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::CreateLabelArrayForNormalModeL()
-	{
-    CreateLabelL( R_LMK_NAME_LABEL, EName );
-    CreateLabelL( R_LMK_CATEGORY_LABEL, ECategory );
-    CreateLabelL( R_LMK_CATEGORIES_LABEL, ECategories );
-    CreateLabelL( R_LMK_DESCRIPTION_LABEL, EDescription );
-    CreateLabelL( R_LMK_STREET_LABEL, EStreet );
-    CreateLabelL( R_LMK_POST_CODE_LABEL, EPostCode );
-    CreateLabelL( R_LMK_CITY_LABEL, ECity );
-    CreateLabelL( R_LMK_STATE_PROVINCE_LABEL, EStateProvince );
-    CreateLabelL( R_LMK_COUNTRY_LABEL, ECountry );
-    CreateLabelL( R_LMK_PHONE_NUMBER_LABEL, EPhoneNumber  );
-    CreateLabelL( R_LMK_WEB_ADDRESS_LABEL, EWebAddress );
-    CreateLabelL( R_LMK_LATITUDE_LABEL, ELatitude );
-    CreateLabelL( R_LMK_LONGITUDE_LABEL, ELongitude );
-    CreateLabelL( R_LMK_POSITION_ACCURACY_LABEL, EPositionAccuracy );
-    CreateLabelL( R_LMK_ALTITUDE_LABEL, EAltitude );
-    CreateLabelL( R_LMK_ALTITUDE_ACCURACY_LABEL, EAltitudeAccuracy );
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CreateLabelArrayForJapaneseModeL()
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::CreateLabelArrayForJapaneseModeL()
-	{
-	CreateLabelL( R_LMK_NAME_LABEL, ENameJapaneseMode);
-	CreateLabelL( R_LMK_CATEGORY_LABEL, ECategoryJapaneseMode );
-	CreateLabelL( R_LMK_CATEGORIES_LABEL, ECategoriesJapaneseMode );
-	CreateLabelL( R_LMK_DESCRIPTION_LABEL, 	EDescriptionJapaneseMode );
-	CreateLabelL( R_LMK_POST_CODE_LABEL, EPostCodeJapaneseMode );
-	CreateLabelL( R_LMK_STATE_PROVINCE_LABEL, EStateProvinceJapaneseMode );
-	CreateLabelL( R_LMK_CITY_LABEL, ECityJapaneseMode );
-	CreateLabelL( R_LMK_STREET_LABEL, EStreetJapaneseMode );
-	CreateLabelL( R_LMK_COUNTRY_LABEL, ECountryJapaneseMode );
-	CreateLabelL( R_LMK_PHONE_NUMBER_LABEL, EPhoneNumberJapaneseMode );
-    CreateLabelL( R_LMK_WEB_ADDRESS_LABEL, EWebAddressJapaneseMode );
-	CreateLabelL( R_LMK_LATITUDE_LABEL, ELatitudeJapaneseMode );
-	CreateLabelL( R_LMK_LONGITUDE_LABEL, ELongitudeJapaneseMode );
-	CreateLabelL( R_LMK_POSITION_ACCURACY_LABEL, EPositionAccuracyJapaneseMode );
-	CreateLabelL( R_LMK_ALTITUDE_LABEL, EAltitudeJapaneseMode );
-	CreateLabelL( R_LMK_ALTITUDE_ACCURACY_LABEL, EAltitudeAccuracyJapaneseMode );
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CreateLabelL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::CreateLabelL( TInt iResourceId, TInt iPos )
-    {
-    HBufC* label = iCoeEnv->AllocReadResourceL( iResourceId );
-    CleanupStack::PushL( label );
-    User::LeaveIfError( iLabelArray.Insert( label, iPos ) );
-    CleanupStack::Pop(); //label
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::IsNameFieldEmptyL
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::IsNameFieldEmptyL()
-    {
-    const MLmkEditorField* field = &iEditorFieldArray->FieldAt( 0 );
-    HBufC* fieldText = field->ControlTextL();
-    TBool ret( ETrue );
-    if ( fieldText && fieldText->Length() > 0 )
-        {
-		//Check if any active character or not
-		TPtr16 ptr = fieldText->Des();
-		ptr.Trim();
-		if (ptr.Length() == 0)
-		 	{
-		 	ret = ETrue;
-		 	}
-		 	else
-		 	{
-		 	ret = EFalse;
-		 	}
-        }
-    delete fieldText;
-    return ret;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ValidateContentL()
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::ValidateContentL()
-    {
-    TBool result = ETrue;
-    if(IsFieldEmptyL( ELatitude ) && !IsFieldEmptyL( ELongitude ))
-   		{
-        LmkNotes::InformationNoteL( iEikonEnv,R_LMK_ERROR_CHECK_NOTE );
-        DoNotSaveDataL(ELatitude);
-		result = EFalse;
-   		}
-    else if (!IsFieldEmptyL( ELatitude ) && IsFieldEmptyL( ELongitude ))
-   		{
-        LmkNotes::InformationNoteL( iEikonEnv, R_LMK_ERROR_CHECK_NOTE );
-        DoNotSaveDataL(ELongitude);
-	  	result = EFalse;
-   		}
-    else if(IsFieldEmptyL( ELatitude ) && !IsFieldEmptyL( EPositionAccuracy ))
-	    {
-	    LmkNotes::InformationNoteL( iEikonEnv, R_LMK_ERROR_POS_ACC_CHECK_NOTE );
-	    DoNotSaveDataL(ELatitude);
-    	result = EFalse;
-	    }
-	else if (IsFieldEmptyL( ELongitude ) && !IsFieldEmptyL( EPositionAccuracy ))
-   		{
-        LmkNotes::InformationNoteL( iEikonEnv, R_LMK_ERROR_POS_ACC_CHECK_NOTE );
-	    DoNotSaveDataL(ELongitude);
-    	result = EFalse;
-   		}
-	else if (IsFieldEmptyL( EAltitude ) && !IsFieldEmptyL( EAltitudeAccuracy ))
-   		{
-        LmkNotes::InformationNoteL( iEikonEnv, R_LMK_ERROR_ALT_ACC_CHECK_NOTE );
-        DoNotSaveDataL(EAltitude);
-    	result = EFalse;
-   		}
-	else if ((IsFieldEmptyL( ELatitude ) || IsFieldEmptyL( ELongitude )) && !IsFieldEmptyL( EAltitude ))
-   		{
-        LmkNotes::InformationNoteL( iEikonEnv, R_LMK_ERROR_ALTITUDE_CHECK_NOTE );
-        DoNotSaveDataL(ELatitude);
-    	result = EFalse;
-   		}
-    else if (IsInvalidUriL())
-   		{
-        LmkNotes::InformationNoteL( iEikonEnv, R_LMK_ERROR_URL_ILLEGAL_NOTE );
-        DoNotSaveDataL(EWebAddress);
-    	result = EFalse;
-   		}
-    else if ( IsNameFieldEmptyL() )
-        {
-        DoNotSaveFormDataL();
-        iIsEndKey = EFalse;
-        result = EFalse;
-        }
-    return result;
-
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::IsFieldEmptyL()
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::IsFieldEmptyL(const TUint16 aFieldType)
-	{
-	TInt fldId;
-	MLmkFieldData* field = iLmkFields->GetField(aFieldType);
-	if(field)
-	    {
-	    fldId = field->UniqueFieldIdentity();
-	    }
-    else
-        {
-        return EFalse;
-        }
-
-	MLmkEditorField* fld = iEditorFieldArray->Find(fldId );
-	if(!fld)
-		{
-		return ETrue;
-		}
-	
-	TReal val;
-	switch(aFieldType)
-		{
-		case ELatitude:
-		case ELongitude:
-			{
-			val = fld->FieldValue();
-			}
-		break;
-		case EPositionAccuracy:
-		case EAltitudeAccuracy:
-		case EAltitude:
-			{
-			val = fld->FieldValue();
-			}
-		break;
-		}
-	return Math::IsNaN(val);
-	}
-
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::DoNotSaveDataL()
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::DoNotSaveDataL(const TUint16 aFieldType)
-	{
-	if( iIsEditing )
-		{
-		MLmkFieldData* fields = iLmkFields->GetField(aFieldType);
-		if(fields)
-			{
-			TInt id = fields->UniqueFieldIdentity();
-			TryChangeFocusL(id);
-			}
-		}
-    }
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::OkToExitL
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::OkToExitL()
-    {
-    TBool result = ETrue;
-
-    if ( iEditorFieldArray->AreAllFieldsEmptyL() )
-        {
-        iLmkFields->DeleteLandmarkL();
-        }
-    else
-        {
-        if ( IsNameFieldEmptyL() )
-            {
-            DoNotSaveFormDataL();
-            result = EFalse;
-            }
-        else
-            {
-            TRAPD( err, iEditorFieldArray->SaveFieldsL() );
-            if ( err == KErrDiskFull )
-                {
-                result = EFalse;
-                LmkNotes::OutOfMemoryNoteL( iEikonEnv );
-                delete this;
-                return result;
-                }
-            if ( iLandmarkItemId )
-            	{
-            	*iLandmarkItemId = iLmkFields->LandmarkId();
-            	}
-            }
-        }
-
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::SelectCategoriesCmdL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::SelectCategoriesCmdL()
-    {
-    if(iCatInfoPopupNote)
-		 {
-		 iCatInfoPopupNote->HideInfoPopupNote();
-		 }
-    MLmkFieldData* fields = iLmkFields->GetField( ECategory );
-    if ( !fields )
-        {
-        fields = iLmkFields->GetField( ECategories );
-        }
-
-    if ( fields )
-        {
-        CLmkDlgCategorySelectorImpl* dlg = CLmkDlgCategorySelectorImpl::NewL(
-                                    iDb, ETrue );
-        CleanupStack::PushL( dlg );
-        dlg->SetEmptyDlgLabel(R_LMK_EMPTY_NO_CATEGORIES ,R_LMK_GUIDE_CREATE_LANDMARK);
-        RArray<TPosLmItemId>& categories = fields->Categories();
-        if ( dlg->ExecuteL( categories ) )
-            {
-            iEditorFieldArray->UpdateFieldsL( ECategory );
-            iEditorFieldArray->UpdateFieldsL( ECategories );
-            }
-        CleanupStack::PopAndDestroy( dlg );
-        iIsCategorySelctorOpen = EFalse;
-        DrawNow();
-       // ShowMultipleCategoriesInfoPopupL(ETrue);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CurrentLocationCmdL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::CurrentLocationCmdL()
-    {
-    if(ShowQueryIfLocationFieldsAlreadyFilledL())
-    	{
-    	return;
-    	}
-    HBufC* srvName = StringLoader::LoadLC(
-                      R_LMK_SERVICE_RULE_NAME,
-                      const_cast< CCoeEnv *>( iCoeEnv ));
-    iLocationService = CLmkLocationService::NewL(*srvName);
-    CleanupStack::PopAndDestroy( srvName ); //srvName
-    iLocationService->SetObserver( *this );
-    iLocationService->LocationRequestL();
-
-    TRAPD( error, iWaitDialogLauncher->StartWaitDialogL());
-    if( error )
-        {
-        delete iLocationService;
-        iLocationService = NULL;
-
-        User::Leave( error );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ChangeIconCmdL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::ChangeIconCmdL()
-    {
-    TInt lSelectedIconIndex(0);
-    CLmkIconMapDialog* dialog = new(ELeave) CLmkIconMapDialog( lSelectedIconIndex );
-    MLmkFieldData* nameField;
-    if (dialog->ExecuteLD(R_LMK_ICON_TABLE_DIALOG) )
-        {
-        // icon file also contains masks, therefore 2*
-        TInt iconIndex =  2*lSelectedIconIndex;
-	    RFs fs;
-	    User::LeaveIfError(fs.Connect());
-	    CleanupClosePushL( fs );
-
-	    if ( SysUtil::DiskSpaceBelowCriticalLevelL( &fs, sizeof( CPosLandmark ), EDriveC ) )
-	        {
-	        CleanupStack::PopAndDestroy(); // fs
-	        User::LeaveNoMemory();
-	        }
-		else
-			{            
-            nameField = iLmkFields->GetField( EName );
-            TFileName* iconFile = CLmkUiUtils::LmkUiIconFileLC();
-            if( nameField && iconFile )                
-                {                
-                nameField->SetIconId( iconIndex + EMbmLmkuiQgn_prop_lm_transport);
-                nameField->SetIconPathL( *iconFile );
-        
-                //Update context icon
-                CEikImage* image = new(ELeave) CEikImage();
-                CleanupStack::PushL( image );
-                image->CreatePictureFromFileL( *iconFile,
-                                               nameField->IconId(),
-                                               iconIndex + EMbmLmkuiQgn_prop_lm_transport_mask);
-        
-                iLmkUiUtils->UpdateContextIconL( image );
-        
-                // Added for appending Icon to Name label
-                CLmkUiUtils::ChangeLmNameLabelIconL (*this, *nameField);
-                CleanupStack::Pop(); //image
-                CleanupStack::PopAndDestroy();//iconFile
-                DrawNow();
-                }
-			}
-		CleanupStack::PopAndDestroy(); // fs
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CategoriesCmdL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::CategoriesCmdL()
-    {
-    MLmkFieldData* categoryField = iLmkFields->GetField( ECategories );
-    if ( !categoryField )
-        {
-        categoryField = iLmkFields->GetField( ECategory );
-        if ( !categoryField )
-            {
-            return;
-            }
-        }
-    else    
-        {
-        RArray<TPosLmItemId> categories = categoryField->Categories();
-        TInt count( categories.Count() );
-
-        // Do not launch the popup for displaying one category name
-        if (count <=1 )
-            {
-            //Launch context sensitive menu bar here
-            if ( iContextMenuBar )
-                {
-                iContextMenuBar->TryDisplayMenuBarL();
-                }
-            return;
-            }
-
-        HBufC* catName;
-        // show the category list in a message query
-        HBufC* message = HBufC::NewLC( (KPosLmMaxCategoryNameLength * count) + 1);
-        TPtr msgPtr = message->Des();
-        CDesC16ArrayFlat* desArr = new (ELeave) CDesC16ArrayFlat(count);
-        CleanupStack::PushL(desArr);
-        // fill up the array with category´s names from the engine.
-        for ( TInt i = 0; i < count; i++ )
-            {
-            catName = CLmkDbUtils::CategoryNameL( iDb, categories[i] );
-            CleanupStack::PushL( catName );
-            desArr->AppendL(catName->Des());
-            CleanupStack::PopAndDestroy( catName ); //name
-            }
-            desArr->Sort();
-            for ( TInt i = 0; i < count; i++ )
-            {
-            msgPtr.Append((*desArr)[i]);
-            if ( i != ( count - 1 ) )
-                {
-                msgPtr.Append(_L("\n"));
-                }
-            }
-        LmkNotes::MessageQueryL(  iEikonEnv, msgPtr, count );
-        CleanupStack::Pop();//desArr
-        delete  desArr;
-        CleanupStack::PopAndDestroy( message ); //message
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::SetCurrentLocationL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::SetCurrentLocationL( const TPosition& aPosition )
-    {
-    MLmkFieldData* latitude = iLmkFields->GetField( ELatitude );
-    if(latitude)
-	    {
-	    latitude->SetTReal( aPosition.Latitude() );
-
-	    MLmkFieldData* longitude = iLmkFields->GetField( ELongitude );
-	    if(longitude)
-	        longitude->SetTReal( aPosition.Longitude() );
-	    }
-
-    MLmkFieldData* altitude = iLmkFields->GetField( EAltitude );
-    if(altitude)
-	    {
-	    altitude->SetTReal( aPosition.Altitude() );
-	    }
-
-    MLmkFieldData* horizontalAccuracy =
-                        iLmkFields->GetField( EPositionAccuracy );
-    if(horizontalAccuracy)
-	    {
-	    horizontalAccuracy->SetTReal( aPosition.HorizontalAccuracy() );
-	    }
-
-    MLmkFieldData* verticalAccuracy =
-                        iLmkFields->GetField( EAltitudeAccuracy );
-    if(verticalAccuracy)
-	    {
-	    verticalAccuracy->SetTReal( aPosition.VerticalAccuracy() );
-	    }
-	
-	TRAP_IGNORE(iLandmark->SetPositionL(aPosition));    
-	    
-    iEditorFieldArray->UpdateFieldsL( EAllEditorItems );
-    
-    DrawNow();
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ChangeContextImageL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::ChangeContextImageL()
-    {
-    MLmkFieldData* nameField = iLmkFields->GetField( EName );
-    if( nameField )
-        {
-        CEikImage* image = new(ELeave) CEikImage();
-        CleanupStack::PushL( image );
-        TFileName* defaultIconFile = CLmkUiUtils::LmkUiIconFileLC();
-        // No need to add iconFile to cleanupstack since it is a member variable from CLmkFieldData class
-        HBufC *iconFile = nameField->IconPath();
-        TInt err = KErrNotFound;
-        CFbsBitmap* bitmap;
-        CFbsBitmap* mask;
-        if ( nameField->IconId() != KErrNotFound )
-            {
-            TRAP(err,AknIconUtils::CreateIconL( bitmap, mask,
-                                   *iconFile, nameField->IconId(),
-                                   nameField->IconId()+1 ););
-            }
-        // If the Icon File doesn't exist the CreateIconL in the if statement above will
-        // Leave with KErrNotFound in which case the default Icon should be loaded.
-        // Also when the Landmarks itself doesn't have a valid Icon, the default Icon is
-        // loaded.
-        if ( err != KErrNone )
-            {
-            AknIconUtils::CreateIconL( bitmap, mask,
-                                   *defaultIconFile, KLmkDefaultId,
-                                   KLmkDefaultId+1 );
-            }
-        image->SetBitmap( bitmap );
-        image->SetMask( mask );
-        iLmkUiUtils->SwapNewContextIconL( image );
-        CleanupStack::PopAndDestroy(); //defaultIconFile
-        CleanupStack::Pop(); //image
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CLmkEditorImpl::AttachAIWMenuInterestL
-// ----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::AttachAIWMenuInterestL()
-	{
-	if(iMapNavFeature)
-		{
-		iMapNavInterface->AttachAIWInterestL(R_LMK_EDITOR_MENU, R_LMK_EDITOR_AIW_INTEREST_SHOWONMAP);
-		if (iEditorMode != CLmkEditorDlg::ELmkEditor)
-			{
-			iMapNavInterface->AttachAIWInterestL(R_LMK_EDITOR_MENU, R_LMK_EDITOR_AIW_INTEREST_NAVIGATETO);
-			}
-		}
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::HandleResourceChange()
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::HandleResourceChange (TInt aType)
-	{	
-	CAknForm::HandleResourceChange(aType);
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::CategoriesCmdFromXmlL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::CategoriesCmdFromXmlL()
-    {
-    TInt count = iCategoryNames.Count();
-    if ( count <= 1 )
-        {
-        return;
-        }
-    CDesC16ArrayFlat* desArr = new (ELeave) CDesC16ArrayFlat(count);
-    CleanupStack::PushL(desArr);
-	// fill up the array with category´s names from the engine.
-	for ( TInt i = 0; i < count; i++ )
-        {
-	    desArr->AppendL(iCategoryNames[i]);
-		}
-
-	desArr->Sort();
-	// show the category list in a message query
-	HBufC* message = HBufC::NewLC((KPosLmMaxCategoryNameLength * iCategoryNames.Count()) + 1);
-	TPtr msgPtr = message->Des();
-	for ( TInt i = 0; i < count; i++ )
-		{
-        msgPtr.Append((*desArr)[i]);
-		if ( i != ( count - 1 ))
-    		{
-    		msgPtr.Append(_L("\n"));
-    		}
-		}
-    LmkNotes::MessageQueryL( iEikonEnv, msgPtr, count );
-    CleanupStack::PopAndDestroy( 2 ); //message ,desArr
-    }
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ConstructContextMenuL()
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::ConstructContextMenuL()
-    {
-	CEikMenuBar* newMenuBar = new(ELeave) CEikMenuBar();
-	CleanupStack::PushL(newMenuBar);
-	newMenuBar->ConstructL(this, NULL, R_LMK_EDITOR_CONTEXT_MENUBAR);
-	iEikonEnv->EikAppUi()->AddToStackL(newMenuBar, ECoeStackPriorityMenu, ECoeStackFlagRefusesFocus);
-	iContextMenuBar = newMenuBar;
-	CleanupStack::Pop(newMenuBar);
-    }
-
-// -----------------------------------------------------------------------------
-//  CLmkEditorImpl::GetFieldTextLengthL
-// -----------------------------------------------------------------------------
-//
-TInt  CLmkEditorImpl::GetFieldTextLengthL( MLmkEditorField& afield)
-	{
-	HBufC* fieldText =  afield.ControlTextL();
-	TInt fieldLen (0);
-	if ( fieldText )
-		{
-		if ( fieldText->Length() > 0)
-			{// Remove any blank spaces if any
-			TPtr16 ptr = fieldText->Des();
-			ptr.Trim();
-			fieldLen = ptr.Length();
-			}
-		}
-	delete fieldText;
-	return fieldLen;
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::UpdateViewDlgL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::UpdateViewDlgL()
-	{
-
-	CPosLandmark* landmark;
-	TInt id = iLmkFields->LandmarkId();
-	landmark = iDb.ReadLandmarkLC(id);
-	TLocality locality;
-	landmark->GetPosition(locality);
-    TRAP_IGNORE(iLandmark->SetPositionL(locality));
-	CArrayPtrFlat<MLmkFieldData>& fieldArray =  iLmkFields->Fields();
-	CArrayPtrFlat<MLmkEditorField>& editorFieldArray =
-									iEditorFieldArray->GetFieldArray();
-	TInt count = fieldArray.Count();
-	TInt postn = KErrNotFound;
-	TInt ctrlid = KErrNotFound;
-	for (TInt i(0);i<count;i++)
-		{
-		TUint fieldType = fieldArray[i]->FieldType();
-		MLmkEditorField* fld = iEditorFieldArray->Find(fieldArray[i]->UniqueFieldIdentity(),&postn,&ctrlid);
-
-		switch(fieldType)
-			{
-	        case EName:
-	            {
-	            UpdateNameEditorControlL(fld,landmark,fieldArray[i]);
-	            break;
-	            }
-	        case ECategory:
-	        case ECategories:
-	            {
-	            UpdateCategoryEditorControlL( fld, fieldArray[i],ctrlid,postn,*landmark);
-	            break;
-	            }
-			case EDescription:
-				{
-				UpdateDesEditorControlL(fld,landmark,fieldArray[i],ctrlid,postn);
-				break;
-				}
-	        //these all are same
-	        case EStreet:
-	        case EPostCode:
-	        case ECity:
-	        case EStateProvince:
-	        case ECountry:
-			case EPhoneNumber:
-			case EWebAddress:
-	            {
-	            UpdateTextEditorControlL(fld,landmark,fieldArray[i],
-	            						fieldType,ctrlid,postn);
-	            break;
-	            }
-	        case ELatitude:
-	            {
-	        	UpdateCoordinateEditorControlL(fld,fieldArray[i],
-	        								   locality.Latitude(),
-	        								   ctrlid,postn);
-	            break;
-	            }
-	        case ELongitude:
-	            {
-	        	UpdateCoordinateEditorControlL(fld,fieldArray[i],
-	        								   locality.Longitude(),
-	        								   ctrlid,postn);
-	            break;
-	            }
-	        case EPositionAccuracy:
-	            {
-	            UpdateNumberEditorControlL(fld,fieldArray[i],
-	        								   locality.HorizontalAccuracy(),ctrlid,postn);
-	            break;
-	            }
-	        case EAltitude:
-	            {
-	        	UpdateNumberEditorControlL(fld,fieldArray[i],
-	        								   locality.Altitude(),ctrlid,postn);
-	            break;
-	            }
-	        case EAltitudeAccuracy:
-	            {
-	            UpdateNumberEditorControlL(fld,fieldArray[i],
-	        								   locality.VerticalAccuracy(),ctrlid,postn);
-	            break;
-	            }
-	        default:
-	            {
-	            break;
-	            }
-			}
-		}
-	iEditorFieldArray->UpdateFieldsL();
-	CleanupStack::PopAndDestroy( landmark );
-	DrawNow();
-	if(!IsEditable())
-		{
-		//only for landmarks viewer
-		UpdateMskOnArrowMoveForViewerL();
-		//ShowMultipleCategoriesInfoPopupL(ETrue);
-		}
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ActivateL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::ActivateL()
-	{
-	if (iEditorMode == CLmkEditorDlg::ELmkEditor
-		&& iIsEditing)
-		{
-    	MLmkFieldData* fields = iLmkFields->GetField(iFieldTypeToFocus);
-    	if(fields)
-	    	{
-	    	TInt id = fields->UniqueFieldIdentity();
-	    	TryChangeFocusL(id);	    	
-			if (iFieldTypeToFocus == ECategories || iFieldTypeToFocus == ECategory)
-		    	{
-		    	// ShowMultipleCategoriesInfoPopupL(EFalse);	
-		    	}	
-	    	}
-	    }
-	CCoeControl::ActivateL();
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::UpdateTextEditorControlL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::UpdateTextEditorControlL
-										(MLmkEditorField* aEditorField,
-										CPosLandmark*	aLandmark,
-										MLmkFieldData*  fieldData,
-										TUint aFiledType,
-										TInt aPrevControlId,
-							   			TInt aPos
-										)
-	{
-
-	TPositionFieldId fieldId = EPositionFieldNone;
-	switch(aFiledType)
-	{
-	case EStreet:
-	fieldId = EPositionFieldStreet;
-	break;
-    case EPostCode:
-    fieldId = EPositionFieldPostalCode ;
-    break;
-    case ECity:
-    fieldId = EPositionFieldCity;
-    break;
-    case EStateProvince:
-    fieldId = EPositionFieldState;
-    break;
-    case ECountry:
-    fieldId = EPositionFieldCountry;
-    break;
-	case EPhoneNumber:
-	fieldId = ELmkPositionFieldPhoneNumber;
-	break;
-	case EWebAddress:
-	fieldId = ELmkPositionFieldWebAddress;
-	break;
-	}
-	TPtrC text;
-	if ( aLandmark->GetPositionField(
-    		fieldId, text ) == KErrNone )
-		{
-	   	if (IsEditable() && text.Length() == 0 && aFiledType == EWebAddress)
-	   		{
-	   		//return if web address field and field is empty and its an editor
-	   		return;
-	   		}
-	   	fieldData->SetTextL(text);
-	   	if(!IsEditable())
-			{
-			aEditorField = AddOrDeleteLineL( aEditorField,fieldData,aPrevControlId,
-			 								 fieldData->UniqueFieldIdentity(), aPos);
-			}
-		if(aEditorField)
-			{
-			//now modify the text for display
-	   	CLmkEditorTextField* field =	static_cast<CLmkEditorTextField*>(aEditorField);
-	   	HBufC* buff = HBufC::NewLC(text.Length());
-	   	TPtr dispTxt = buff->Des();
-	    if(!IsEditable())
-		    {
-		    TPtr des1 = CLmkFields::RemoveEnterCharacter( text );
-			dispTxt.Copy(des1);
-		    }
-	    else
-		    {
-			dispTxt.Copy(text);
-		    }
-		if(aFiledType == EWebAddress)
-			{
-			TInt position;
-			if((position =  field->IsWebUrlProtocolPreFixedL(dispTxt))!=
-				KErrNotFound)
-				{
-				field->TrimPrefixesFromWebUrlL( dispTxt, position +1 );
-				}
-			}
-		   	TPtrC ptr;
-		   	ptr.Set(dispTxt);
-		   	field->SetControlTextL(ptr);
-		   	CleanupStack::PopAndDestroy( buff );
-			}
-
-		}
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::UpdateDesEditorControlL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::UpdateDesEditorControlL
-										(MLmkEditorField* aEditorField,
-										CPosLandmark*	aLandmark,
-										MLmkFieldData*  fieldData,
-										TInt aPrevControlId,
-							   			TInt aPos
-										)
-	{
-		TPtrC text;
-        aLandmark->GetLandmarkDescription(text);
-        fieldData->SetTextL(text);
-        TPtrC dispTxt;
-	    if(!IsEditable())
-		    {
-		    TPtr des1 = CLmkFields::RemoveEnterCharacter( text );
-			dispTxt.Set(des1);
-			aEditorField = AddOrDeleteLineL( aEditorField,fieldData,aPrevControlId,
-		 								 fieldData->UniqueFieldIdentity(), aPos);
-		    }
-	    else
-		    {
-			dispTxt.Set(text);
-		    }
-		CLmkEditorTextField* field =	static_cast<CLmkEditorTextField*>(aEditorField);
-		if(aEditorField)
-			{
-			field->Control()->SetTextL(&dispTxt);
-			field->Control()->DrawDeferred();
-			}
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::UpdateCategoryEditorControlL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::UpdateCategoryEditorControlL
-							(
-							MLmkEditorField* aEditorField,
-							MLmkFieldData*  fieldData,
-							TInt aPrevControlId,
-							TInt aPos,
-						    CPosLandmark&	aLandmark
-						    )
-	{
-	RArray<TPosLmItemId>& categories = fieldData->Categories();
-    aLandmark.GetCategoriesL(categories);
-  	TInt count( categories.Count() );
-
-    if ( count  <= 1 )
-        {
-        fieldData->SetFieldType( ECategory );
-        }
-    else
-        {
-        fieldData->SetFieldType( ECategories );
-        }
-    if(!IsEditable())
-		{
-		aEditorField = AddOrDeleteLineL( aEditorField,fieldData,aPrevControlId,
-		 								 fieldData->UniqueFieldIdentity(), aPos);
-		}
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::UpdateCoordinateEditorControlL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::UpdateCoordinateEditorControlL
-							  (
-							  MLmkEditorField* aEditorField,
-							   MLmkFieldData*  fieldData,
-							   TReal aValue,
-							   TInt aPrevControlId,
-							   TInt aPos
-							  )
-	{
-	fieldData->SetTReal( aValue );
-	if(!IsEditable())
-		{
-		aEditorField = AddOrDeleteLineL( aEditorField,fieldData,aPrevControlId,
-		 								 fieldData->UniqueFieldIdentity(), aPos);
-		}
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::UpdateNumberEditorControlL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::UpdateNumberEditorControlL
-							  (
-							  MLmkEditorField* aEditorField,
-							   MLmkFieldData*  fieldData,
-							   TReal32 aValue,
-							   TInt aPrevControlId,
-							   TInt aPos
-							   )
-	{
-	fieldData->SetTReal( aValue );
-
-	if(!IsEditable())
-		{
-		aEditorField = AddOrDeleteLineL( aEditorField,fieldData,aPrevControlId,
-		 								 fieldData->UniqueFieldIdentity(), aPos);
-		}
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::UpdateNameEditorControl
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::UpdateNameEditorControlL
-							  (
-							  MLmkEditorField* aEditorField,
-							  CPosLandmark*	aLandmark,
-							  MLmkFieldData*  fieldData
-							  )
-	{
-	
-	if( aEditorField && aLandmark && fieldData )
-	    {
-	    //name field icon updation
-	    TInt iconIden = -1;
-	    TInt iconMaskIndex = -1;
-	    TPtrC iconFile;
-	    CLmkEditorTextField* field = static_cast<CLmkEditorTextField*>(aEditorField);
-	    if( aLandmark->GetIcon( iconFile, iconIden, iconMaskIndex ) && field )
-	        {
-	        if( iconIden > 0 )
-	            {
-	            fieldData->SetIconId( iconIden );
-	            fieldData->SetIconPathL( iconFile );
-	            CEikImage* image = new( ELeave ) CEikImage();
-	            CleanupStack::PushL( image );
-	            image->CreatePictureFromFileL( iconFile,
-	                               iconIden, iconMaskIndex );
-	            iLmkUiUtils->UpdateContextIconL( image );
-	            CLmkUiUtils::ChangeLmNameLabelIconL ( *this, *fieldData );
-	            CleanupStack::Pop(); //image
-	            field->CaptionedControl()->DrawDeferred();
-	            }
-	        //text control updation
-	        TPtrC text;
-	        aLandmark->GetLandmarkName( text );
-	        TPtrC dispTxt;
-	        if( !IsEditable() )
-	            {
-	            TPtr des1 = CLmkFields::RemoveEnterCharacter( text );
-	            dispTxt.Set(des1);
-	            }
-	        else
-	            {
-	            dispTxt.Set(text);
-	            }
-	        field->Control()->SetTextL( &dispTxt );
-	        fieldData->SetTextL( text );
-	        HBufC* buff = dispTxt.AllocL();
-	        iLmkUiUtils->ChangeTitlePaneL( buff );
-	        field->Control()->DrawDeferred();
-	        }
-	    }
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::SetFieldTypeToFocusInEditMode
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::SetFieldTypeToFocusInEditMode(TUint aFieldType)
-	{
-		iFieldTypeToFocus = aFieldType;
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::IsDlgEditing
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::IsDlgEditing()
-	{
-	return iIsEditing;
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::SetDlgEditing
-// -----------------------------------------------------------------------------
-//
-void  CLmkEditorImpl::SetDlgEditing(TBool aEditing)
-	{
-	iIsEditing = aEditing;
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::SetDlgEditing
-// -----------------------------------------------------------------------------
-//
-TInt CLmkEditorImpl::EditMode()
-    {
-    return iEditorMode;
-    }
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::UpdateMskOnArrowMoveForViewerL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::UpdateMskOnArrowMoveForViewerL()
-	{
-	TBool cmdAdded = EFalse;
-    MLmkEditorField* field =
-	iEditorFieldArray->Find( IdOfFocusControl() );
-	TUint type = field->LandmarkItemField().FieldType();
-	switch(type)
-		{
-		case ECategories:
-			{
-			AddMskCommandL(R_LM_MSK_SHOW,ELmkCmdShow);
-			cmdAdded = ETrue;
-			break;
-			}
-		case EPhoneNumber:
-			{
-			HBufC* fieldText = field->ControlTextL();
-			CleanupStack::PushL( fieldText );
-            if ( fieldText && fieldText->Length() > 0 )
-	            {
-	            AddMskCommandL(R_LM_MSK_CALL,ELmkCmdLast);
-	            cmdAdded = ETrue;
-	            }
-	        CleanupStack::PopAndDestroy( fieldText );
-			break;
-			}
-		case EWebAddress:
-			{
-			HBufC* fieldText =  field->ControlTextL();
-			CleanupStack::PushL( fieldText );
-			if ( fieldText && fieldText->Length() > 0 )
-				{
-				AddMskCommandL(R_LM_MSK_BROWSE,ELmkCmdGoToUrl);
-				cmdAdded = ETrue;
-				}
-			CleanupStack::PopAndDestroy( fieldText );
-			break;
-			}
-		default:
-			{
-			//nothing
-			break;
-			}
-		}
-		if (!cmdAdded)
-			{
-			AddMskCommandL(R_LM_MSK_EDIT,ELmkCmdEditLm);
-			}
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::AddMskCommandL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::AddMskCommandL(TInt aResourceId,
-								   TLmkAppCmdId aCommandId)
-	{
-
-	HBufC* mskTxt = NULL;
-	mskTxt = StringLoader::LoadLC( aResourceId, iEikonEnv );
-	CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-	cba->RemoveCommandFromStack(KMskCommandPos,iMskCmdId);
-	iMskCmdId = aCommandId;
-	iCurrentResourceId = aResourceId;
-	cba->AddCommandToStackL(KMskCommandPos,iMskCmdId,mskTxt->Des());
-	cba->MakeCommandVisible(iMskCmdId,ETrue);
-	CleanupStack::PopAndDestroy( mskTxt );
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::AddMskCommandL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::DimmMiddleSoftKey()
-	{
-	/*This is required, since there was an error,
-	where the menu item appears if there are not items
-	in the lis, after pressing the middle key.Hence, if
-	dummy msk is added to the resource, it fixes the error,
-	now this dummy button needs to be disabled.Check the
-	dialog resource in editor.rss*/
-	CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-	cba->MakeCommandVisible(EAknSoftkeyContextOptions,EFalse);
-	}
-
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ShowMultipleCategoriesInfoPopupL
-// -----------------------------------------------------------------------------
-//
- /*void CLmkEditorImpl::ShowMultipleCategoriesInfoPopupL(TBool aRefresh)
-    {
-    if (iCatInfoPopupNote && aRefresh)
-	    {
-	    delete iCatInfoPopupNote;
-	    iCatInfoPopupNote = NULL;
-	    }
-
-    if (!iCatInfoPopupNote)
-	    {
-
-	    if(!IsCategoryField())
-		    {
-		    return;
-		    }
-	    MLmkFieldData* categoryField = iLmkFields->GetField( ECategories );
-	    if ( !categoryField )
-	        {
-	        categoryField = iLmkFields->GetField( ECategory );
-	        if ( !categoryField )
-	            {
-	            return;
-	            }
-	        }
-	    RArray<TPosLmItemId> categories = categoryField->Categories();
-	    
-	    // This function is also called from message viewer, where the
-	    // landmarks object is populated from xml file instead of db,
-	    // hence the category id's will be dummy and must not be used,
-	    // to get the category name, instead, get the category names
-	    // from the xml file (iCategoryNames).
-	    
-	    TInt count( categories.Count() );
-	    TBool isNotFromMessageViewer(EFalse);
-	    count = iCategoryNames.Count();
-	    if ( count == 0  ) // hack to determine from where the call coming.
-	    	{
-	    	//not called from message viewer
-	    	isNotFromMessageViewer = ETrue;
-	    	count = categories.Count();
-	    	}
-	    // Do not launch the popup for displaying one category name
-		if (count <=1 )
-		    {
-			return;
-		    }
-   
-		// ====================================================================	
-		// Get Font for Formatting the infoPopUp strings 						
-		// ====================================================================	
-
-		// Get parameter and table limits for popup preview text window
-		TAknLayoutScalableParameterLimits limits =
-							AknLayoutScalable_Avkon::popup_preview_text_window_ParamLimits();
-
-		TAknLayoutScalableTableLimits tableLimits =
-							AknLayoutScalable_Avkon::popup_preview_text_window_t_Limits();
-
-		// Get layout rects
-		TRect rectScreen = iAvkonAppUi->ApplicationRect();
-		TInt mainPaneVariety = Layout_Meta_Data::IsLandscapeOrientation() ? 4 : 1;
-
-		TAknWindowLineLayout lineLayout =
-							AknLayoutScalable_Avkon::main_pane( mainPaneVariety ).LayoutLine();
-		TAknLayoutRect layoutRect;
-		layoutRect.LayoutRect(rectScreen, lineLayout);
-		TRect rectMainPane = layoutRect.Rect();
-
-		// Use first variety to be able to get the font for text parsing
-		TInt index = 0;
-		if ( Layout_Meta_Data::IsLandscapeOrientation() )
-			{
-			index += 5;
-			}
-		TInt firstVariety = Min( Max( index, limits.FirstVariety() ), limits.LastVariety() );
-
-		TAknWindowLineLayout lineLayout2 =
-							AknLayoutScalable_Avkon::main_pane( mainPaneVariety ).LayoutLine();
-		TAknLayoutRect layoutRect2;
-		layoutRect2.LayoutRect(rectScreen, lineLayout2);
-		TRect rectPopupWindow = layoutRect2.Rect();
-
-		TInt firstIndex = tableLimits.FirstIndex();
-		TInt firstLineVariety = AknLayoutScalable_Avkon::
-		popup_preview_text_window_t_ParamLimits( firstIndex ).FirstVariety();
-
-		TAknTextLineLayout popupTextLayout =
-		AknLayoutScalable_Avkon::popup_preview_text_window_t(
-		firstIndex, firstLineVariety );
-
-		TAknLayoutText layoutText;
-		layoutText.LayoutText( rectPopupWindow, popupTextLayout );
-		TRect rectText = layoutText.TextRect();
-
-		TInt infoPopupWidth = KMaxCatSizeForInfoPopUp;
-		TInt infoPopupLength = KMinCatLenForInfoPopUp;
-
-		if(rectText.Height() > 25)
-			{
-			infoPopupWidth = KMaxCatSizeForInfoPopUp + 80;
-			}
-		else if(rectText.Height() > 23)
-			{
-			infoPopupWidth = KMaxCatSizeForInfoPopUp + 55;
-			}
-		else if(rectText.Height() > 16)
-			{
-			infoPopupWidth = KMaxCatSizeForInfoPopUp + 10;
-			infoPopupLength++;
-			}
-
-		// Prepare font to format the popupInfo string
-		const CFont *font = layoutText.Font();
-
-       	// =================================================================== 
-       	// =================================================================== 
-
-	    HBufC* catName = NULL;
-	    // show the category list in a message query
-		HBufC* message = HBufC::NewLC( (KPosLmMaxCategoryNameLength * count) + 1);
-		TPtr msgPtr = message->Des();
-	    CDesC16ArrayFlat* desArr = new (ELeave) CDesC16ArrayFlat(count);
-	    CleanupStack::PushL(desArr);
-		// fill up the array with category´s names from the engine.
-		for ( TInt i = 0; i < count; i++ )
-	        {
-	        if ( !isNotFromMessageViewer )
-	        	{
-	        	catName = HBufC::NewL( KPosLmMaxCategoryNameLength + 1);
-	        	catName->Des().Copy(iCategoryNames[i]);
-	        	}
-	        else
-	        	{
-	        	catName = CLmkDbUtils::CategoryNameL( iDb, categories[i] );
-	        	}
-	        CleanupStack::PushL( catName );
-
-			TPtr des = catName->Des();
-
-			TInt textWidth = font->TextWidthInPixels( des );
-	        TInt textLength = des.Length();
-
-	        // check the length of category name string to format for InfoPopUp.
-			if(textLength > infoPopupLength && textWidth > infoPopupWidth)
-				{
-
-				// set the string as per KMinCatLenForInfoPopUp
-				if(textLength > infoPopupLength + 9)
-					{
-					textLength = infoPopupLength + 9;
-					des = des.Mid(0, textLength);
-					}
-
-	    		textWidth = font->TextWidthInPixels( des );
-
-	    		for(TInt ctr=textLength; ctr >= (infoPopupLength-1);ctr--)
-	    			{
-	    			des = des.Mid(0, ctr);
-	    			textWidth = font->TextWidthInPixels( des );
-	    			if(textWidth <= infoPopupWidth)
-	    				{
-	    				break;
-	    				}
-	    			}
-
-				// loading the "..." string
-				HBufC* endString =  StringLoader::LoadLC(R_LM_EDITOR_MANY_CATEGORIES);
-
-				// appending the "..." string at end
-				des.Append(endString->Des());
-
-				// appendig formatted string into category string array
-				desArr->AppendL(des);
-				CleanupStack::PopAndDestroy(endString); // endString
-				}
-			else
-				{
-		    	desArr->AppendL(des);
-				}
-	        CleanupStack::PopAndDestroy( catName ); //name
-			}
-		desArr->Sort();
-		HBufC* catTxt = NULL;
-
-		for ( TInt i = 0; i < desArr->Count(); i++ )
-	        {
-	        if (i <KMaxCatCntForInfoPopUp)
-	            {
-                msgPtr.Append((*desArr)[i]);
-                if ( i != ( count - 1 ) )
-                    {
-                    msgPtr.Append(_L("\n"));
-                    }
-	            }
-			}
-
-		if (count > KMaxCatCntForInfoPopUp)
-			{
-
-			catTxt = StringLoader::LoadLC( R_LM_EDITOR_MANY_CATEGORIES, iEikonEnv );
-            msgPtr.Append(catTxt->Des());
-            CleanupStack::PopAndDestroy(catTxt );//catTxt
-			}
-		TPoint pt1;
-		iCatInfoPopupNote = LmkNotes::ShowDelayedInfoPopupL(msgPtr,pt1);
-		UpdateCatInfoNotePosition();
-		iCatInfoPopupNote->ShowInfoPopupNote();
-		CleanupStack::Pop();//desArr
-	    delete	desArr;
-		CleanupStack::PopAndDestroy( message ); //message
-	    }
-	else
-	    {
-	    UpdateCatInfoNotePosition();
-	    iCatInfoPopupNote->ShowInfoPopupNote();
-	    }
-    }
-*/
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ShowQueryIfLocationFieldsAlreadyFilledL
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::ShowQueryIfLocationFieldsAlreadyFilledL()
-  	{
-  	TBool result = EFalse;
-    TRealX lati;
-    lati.SetNaN();
-    TRealX longi;
-    longi.SetNaN();
-
-    MLmkFieldData* lat = iLmkFields->GetField(ELatitude);
-	if(lat)
-		{
-        //get latitude control id
-        TInt id = lat->UniqueFieldIdentity();
-        MLmkEditorField* latcontrol = iEditorFieldArray->Find( id );
-        //get latitude control current text
-        lati = static_cast<CLmkEditorCoordinateField*>(latcontrol)->FieldValue();
-        
-        MLmkFieldData* lon = iLmkFields->GetField(ELongitude);
-        if(lon)
-            {
-            //get longitude control id
-            id = lon->UniqueFieldIdentity();
-            MLmkEditorField* longcontrol = iEditorFieldArray->Find( id );
-            //get longitude control current text
-            longi = static_cast<CLmkEditorCoordinateField*>(longcontrol)->FieldValue();         
-    		}
-        
-        if ( (!lati.IsNaN()) && (!longi.IsNaN()))
-            {
-            if ( !LmkNotes::ShowOwerriteLocationQueryL( iEikonEnv ) )
-                {
-                result = ETrue;
-                }
-            }
-		}
-	return result;
-  	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::IsInvalidUriL
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::IsInvalidUriL()
-	{
-	TBool ret = EFalse;
-	MLmkFieldData* fields = iLmkFields->GetField( EWebAddress );
-	if(fields)
-		{
-		MLmkEditorField* fld = iEditorFieldArray->Find(fields->UniqueFieldIdentity());
-		if(fld)
-			{
-			HBufC* webaddr = HBufC::NewLC(KMaxBufferLen);
-			CLmkEditorTextField* field =	static_cast<CLmkEditorTextField*>(fld);
-			TPtr ptr = webaddr->Des();
-			field->Control()->GetText(ptr);
-			ret = UriUtils::HasInvalidChars(ptr);
-			CleanupStack::PopAndDestroy();//webaddr
-			}
-		}
-	return ret;
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::HandleListProviderEvent
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::HandleListProviderEvent(TLmkListProviderEventType /*aEvent*/ )
-	{
-	TRAPD(err,CPosLandmark* landmark = iDb.ReadLandmarkLC(iLmkFields->LandmarkId());CleanupStack::PopAndDestroy( landmark ));
-    if (err == KErrNotFound)
-        {
-        TRAP_IGNORE(DeleteSelfL());
-        }
-     else
-     	{
-     	//update the landmark viewer/editor
-     	TRAP_IGNORE(UpdateViewDlgL());
-     	}
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::HandleListProviderError
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::HandleListProviderError( TInt /*aError*/ )
-	{
-	//if error do nothing
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::LaunchLmkEditorL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::LaunchLmkEditorL()
-	{
-	CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-	cba->RemoveCommandFromStack( KMskCommandPos, iMskCmdId );
-    // Launch editor
-   TLmkEditorAttributes attributeFlags( CLmkEditorDlg::ELmkAll );
-   // Check if the Landmark is alreayd present in the database. Incase,
-   // a landmark is associated with the editor and if it is not
-   // added to the Database, then the viewer would be launched with
-   // the lanmark content
-    if( KPosLmNullItemId == iLmkFields->LandmarkId() && iLandmark )
-        {
-        iEditor = CLmkEditorImpl::NewL( iDb,
-                                    iSender,
-                                    attributeFlags,
-                                    CLmkEditorDlg::ELmkEditor,
-                                    iLandmark );
-        }
-    else
-        {
-        iEditor = CLmkEditorImpl::NewL( iDb,
-                                    iSender,
-                                    attributeFlags,
-                                    CLmkEditorDlg::ELmkEditor,
-                                    iLmkFields->LandmarkId() );
-        }
-
-
-	MLmkEditorField* field = iEditorFieldArray->Find( IdOfFocusControl() );
-	iFieldTypeToFocus = field->LandmarkItemField().FieldType();
-    iEditor->SetFieldTypeToFocusInEditMode( iFieldTypeToFocus );
-    iEditor->SetDlgEditing( ETrue );
-    iIsEditing = ETrue;
-    if( !iMapNavFeature )
-	    {
-	    iEditor->DisableMapAndNavigationMenuOptions();
-	    }
-    iEditor->ExecuteLD();
-    iEditor->SetDlgEditing( EFalse );
-    iIsEditing = EFalse;
-    TInt err = KErrNone;
-    TRAP( err, CPosLandmark* landmark = iDb.ReadLandmarkLC( iLmkFields->LandmarkId() ); CleanupStack::PopAndDestroy( landmark ) );
-    if (err == KErrNotFound)
-        {
-        iLmkUiUtils->RestoreOldNaviPaneL();
-        delete this;
-        return;
-        }
-    AddMskCommandL( iCurrentResourceId, iMskCmdId );
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::DeleteSelfL
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::DeleteSelfL()
-	{
-	iLmkUiUtils->RestoreOldNaviPaneL();
-    if(iEditor)
-    	{
-    	//delete only editor,if editor instance is present,
-    	//viewer will be deleted in ProcessCommandL, where
-    	//editor was created.
-    	delete iEditor;
-    	iEditor = NULL;
-    	}
-    else
-    	{
-    	delete this;
-    	}
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::HandleCentralRepositoryChangeL()
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::HandleCentralRepositoryChangeL()
-	{
-	//change unit for position accuracy
-	MLmkFieldData* fldData = iLmkFields->GetField( EPositionAccuracy );
-	if(fldData)
-		{
-		TInt id1 = fldData->UniqueFieldIdentity();
-		CLmkEditorNumberField* field = static_cast<CLmkEditorNumberField*>(iEditorFieldArray->Find( id1 ));
-		if(field)
-			field->HandleUnitChangeL();
-		}
-
-	//change altitude unit
-	MLmkFieldData* fldData1 = iLmkFields->GetField( EAltitude );
-	if(fldData1)
-		{
-		TInt id2 = fldData1->UniqueFieldIdentity();
-		CLmkEditorNumberField* field1 = static_cast<CLmkEditorNumberField*>(iEditorFieldArray->Find( id2 ));
-		if(field1)
-			field1->HandleUnitChangeL();
-		}
-
-	//change altitude accuracy unit
-	MLmkFieldData* fldData2 = iLmkFields->GetField( EAltitudeAccuracy );
-	if(fldData2)
-		{
-		TInt id3 = fldData2->UniqueFieldIdentity();
-		CLmkEditorNumberField* field2 = static_cast<CLmkEditorNumberField*>(iEditorFieldArray->Find( id3 ));
-		if(field2)
-			field2->HandleUnitChangeL();
-		}
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::UpdateCatInfoNotePosition()
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::UpdateCatInfoNotePosition()
-	{
-	//this is only to set the position of the
-	//cat info note.
-	if(iCatInfoPopupNote && IsCategoryField())
-		{
-		CEikCaptionedControl* tmpline = CurrentLine();
-		TPoint pt1 = tmpline->PositionRelativeToScreen();
-		pt1.iX+=KHOffsetCatInfoPopup;
-		pt1.iY+=KVOffsetCatInfoPopup;
-		iCatInfoPopupNote->SetPositionAndAlignment(pt1,EHLeftVTop);
-		}
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::IsCategoryField()
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::IsCategoryField()
-	{
-	//to check whether the current focussed field is a
-	//category field.
-	TBool result = ETrue;
-	MLmkEditorField* field =
-			iEditorFieldArray->Find( IdOfFocusControl() );
-	TUint type = field->LandmarkItemField().FieldType();
-    if(type != ECategories && type != ECategory)
-	    {
-	    result = EFalse;
-	    }
-	return result;
-	}
-
-
-#ifdef RD_SCALABLE_UI_V2
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::HandleDialogPageEventL
-// -----------------------------------------------------------------------------
-//
-
-void CLmkEditorImpl::HandleDialogPageEventL(TInt /*aEventID*/)
-	{
-    /*
-	if(IsEditable())
-		{
-		//editor
-		HandleEditorCommandL();
-		}
-	*/	
-	}
-
-#endif //RD_SCALABLE_UI_V2
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::LineChangedL
-// -----------------------------------------------------------------------------
-//
-
-void CLmkEditorImpl::LineChangedL(TInt /*aControlId*/)
-	{
-
-	//hide the category info pop-up if active
-    if(iCatInfoPopupNote)
-		{
-		iCatInfoPopupNote->HideInfoPopupNote();
-		}
-	MLmkEditorField* field = iEditorFieldArray->Find( IdOfFocusControl() );
-	__ASSERT_DEBUG( field, Panic( KLmkPanicNullMember ) );
-	TUint type = field->LandmarkItemField().FieldType();
-   	if (IsEditable())
-    	{
-    	//editor
-    	if ( type == ECategory || type == ECategories )
-			 {
-			 AddMskCommandL(R_LM_MSK_EDIT,ELmkCmdSelectCategories);
-			 }
-		 else
-			 {
-			 CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-			 cba->MakeCommandVisible(iMskCmdId,EFalse);
-			 }
-    	}
-    else
-        {
-        //viewer
-        UpdateMskOnArrowMoveForViewerL();
-        }
-   	if ( type == ECategory || type == ECategories )
-    	{
-    	// ShowMultipleCategoriesInfoPopupL(IdOfFocusControl());
-    	}
-
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ClearPositionInfoL()
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::ClearPositionInfoL()
-	{
-	//clear latitude
-	MLmkFieldData* lat = iLmkFields->GetField(ELatitude);
-	if(lat)
-		{
-		TInt id = lat->UniqueFieldIdentity();
-		MLmkEditorField* latcontrol = iEditorFieldArray->Find( id );
-		if(latcontrol)
-			{
-			latcontrol->ResetL();
-			}
-		}
-	//clear longitude
-	MLmkFieldData* lon = iLmkFields->GetField(ELongitude);
-	if(lon)
-		{
-		TInt id = lon->UniqueFieldIdentity();
-		MLmkEditorField* longcontrol = iEditorFieldArray->Find( id );
-		if(longcontrol)
-			{
-			longcontrol->ResetL();
-			}
-		}
-	//clear position accuracy
-	MLmkFieldData* fldData = iLmkFields->GetField( EPositionAccuracy );
-	if(fldData)
-		{
-		TInt id1 = fldData->UniqueFieldIdentity();
-		CLmkEditorNumberField* field = static_cast<CLmkEditorNumberField*>(iEditorFieldArray->Find( id1 ));
-		if(field)
-			{
-			field->ResetL();
-			}
-		}
-	//clear altitude
-	MLmkFieldData* fldData1 = iLmkFields->GetField( EAltitude );
-	if(fldData1)
-		{
-		TInt id2 = fldData1->UniqueFieldIdentity();
-		CLmkEditorNumberField* field1 = static_cast<CLmkEditorNumberField*>(iEditorFieldArray->Find( id2 ));
-		if(field1)
-			{
-			field1->ResetL();
-			}
-		}
-	//clear altitude accuracy
-	MLmkFieldData* fldData2 = iLmkFields->GetField( EAltitudeAccuracy );
-	if(fldData2)
-		{
-		TInt id3 = fldData2->UniqueFieldIdentity();
-		CLmkEditorNumberField* field2 = static_cast<CLmkEditorNumberField*>(iEditorFieldArray->Find( id3 ));
-			if(field2)
-			{
-			field2->ResetL();
-			}
-		}
-		
-	DrawNow();
-	
-	}	
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::ArePositionFieldEmptyL()
-// -----------------------------------------------------------------------------
-//
-TBool CLmkEditorImpl::ArePositionFieldEmptyL()
-	{
-	return  (IsFieldEmptyL( ELatitude ) && IsFieldEmptyL( ELongitude ) && IsFieldEmptyL( EAltitude )
-			  && IsFieldEmptyL( EAltitudeAccuracy ) && IsFieldEmptyL( EPositionAccuracy)) ? ETrue : EFalse;
-	}
-
-#ifdef RD_SCALABLE_UI_V2
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::HandleEditorCommandL()
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::HandleEditorCommandL()
-	{
-	MLmkEditorField* field = iEditorFieldArray->Find( IdOfFocusControl() );
-	__ASSERT_DEBUG( field, Panic( KLmkPanicNullMember ) );
-
-	TUint type = field->LandmarkItemField().FieldType();
-	switch(type)
-		{
-		case ECategories:
-		case ECategory:
-			{
-			ProcessCommandL( ELmkCmdSelectCategories );
-			break;
-			}
-		}
-	}
-#endif //RD_SCALABLE_UI_V2
-
-// -----------------------------------------------------------------------------
-// CLmkAppLmItemSelectorImpl::HandleDialogDismissed
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::HandleDialogDismissed( TInt aButtonId )
-	{
-	if( EEikBidCancel == aButtonId )
-		{
-		delete iLocationService;
-    	iLocationService = NULL;
-		}
-	}
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::InsertLineL()
-// -----------------------------------------------------------------------------
-//
-MLmkEditorField* CLmkEditorImpl::InsertLineL(  MLmkFieldData*  aFieldData,
-								   TInt aPrevControlId)
-	{
-	MLmkEditorField* editorField = NULL;
-	//data present, but control not present
-	TryChangeFocusL(aPrevControlId);
-	editorField = LmkEditorFieldFactory::CreateFieldL(
-	                                        *aFieldData, *this );
-    CleanupStack::PushL( editorField );
-    if ( editorField )
-        {
-        editorField->SetEditableL(EFalse);
-        iEditorFieldArray->GetFieldArray().AppendL( editorField );
-        editorField->ActivateL();
-        }
-    CleanupStack::Pop(); //editorField
-    return editorField;
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::DeleteLineL()
-// -----------------------------------------------------------------------------
-//
-void CLmkEditorImpl::DeleteLineL( MLmkEditorField* aEditorField,
-								  TInt aCtrlId , TInt aPos)
-	{
-	//data not present but control present
-	//iEditorFieldArray->GetFieldArray().Delete( aPos-1 );
-	iEditorFieldArray->GetFieldArray().Delete( aPos );
-	delete aEditorField;
-	aEditorField=NULL;
-	DeleteLine(aCtrlId);
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::AddOrDeleteLineL()
-// -----------------------------------------------------------------------------
-//
-MLmkEditorField* CLmkEditorImpl::AddOrDeleteLineL( MLmkEditorField* aEditorField,
-												   MLmkFieldData*  aFieldData ,
-												   TInt aPrevControlId,
-								  				   TInt aCtrlId , TInt aPos)
-	{
-	TBool valPresent = iEditorFieldArray->CheckIfFieldIsEmpty(*aFieldData);
-
-	if(valPresent && !aEditorField)
-		{
-		aEditorField = InsertLineL( aFieldData, aPrevControlId);
-		}
-	else if(!valPresent && aEditorField)
-		{
-		DeleteLineL(aEditorField, aCtrlId,aPos);
-		aEditorField = NULL;
-		}
-	return aEditorField;
-	}
-
-// -----------------------------------------------------------------------------
-// CLmkEditorImpl::MessageQueryCallBack()
-// -----------------------------------------------------------------------------
-//
-TInt CLmkEditorImpl::MessageQueryCallBack( TAny* /*aPtr*/ )
-	{
-	TInt result = KErrNone;
-	CEikonEnv* env = CEikonEnv::Static();
-	TRAP_IGNORE(result = LmkNotes::GenericMessageQueryL(env,R_LMK_REQUEST_FAIL_INFO_TEXT,
-									R_LMK_MSG_QUERY_HEADING_PANE_TEXT));
-	return result;
-	}
-
-// ---------------------------------------------------------
-// CLmkEditorImpl::CheckHideCoordinateL()
-// ---------------------------------------------------------
-//
-void CLmkEditorImpl::CheckHideCoordinateL()
-	{
-    TInt coordinateSettingValue = ELocCoordinatesNotHidden;
-    TInt helpSettingValue = ELocHelpNotHidden;
-    CRepository* repository = CRepository::NewL( TUid::Uid( KCRUidLocLocalVariation) );
-    CleanupStack::PushL( repository );
-    User::LeaveIfError( repository->Get( KLocHideCoordinates,
-                                              coordinateSettingValue ));  
-    User::LeaveIfError( repository->Get( KLocHideHelp,
-                                              helpSettingValue ));  
-    CleanupStack::PopAndDestroy( repository );
-	
-	if( ELocCoordinatesHidden == coordinateSettingValue )
-		iIsHideCoordinate = ETrue;
-	else
-		iIsHideCoordinate = EFalse;
-	
-	if( ELocHelpHidden == helpSettingValue )
-		iIsHideHelp = ETrue;
-	else
-		iIsHideHelp = EFalse;
-	
-	}
-
-// ---------------------------------------------------------
-// CLmkEditorImpl::HandlePointerEventL()
-// ---------------------------------------------------------
-//
-void CLmkEditorImpl::HandlePointerEventL(const TPointerEvent& aPointerEvent)
-    {
-    if (aPointerEvent.iType == TPointerEvent::EButton1Up && iIsDragging
-            == EFalse)
-        {
-        MLmkEditorField* field = iEditorFieldArray->Find(IdOfFocusControl());
-        TUint type = field->LandmarkItemField().FieldType();
-
-        // check the editor mode
-        if (IsEditable()) // edit mode
-            {
-            if (type == ECategory || type == ECategories)
-                {
-                if (!iIsCategorySelctorOpen)
-                    {
-                    iIsCategorySelctorOpen = ETrue;
-                    SelectCategoriesCmdL();
-                    }
-                }
-            }
-        else
-            {// view or receive mode
-            if (type == ECategory || type == ECategories)
-                {
-                if (iCalegorySelectionFlag) // Receive mode
-                    {
-                    CategoriesCmdFromXmlL();
-                    }
-                else
-                    {
-                    CategoriesCmdL(); // View mode
-                    }
-                }
-            else // focus is on any other landmark field
-                {
-                if (!iCalegorySelectionFlag)// No context menu for receive mode
-                    {
-                    if (!iIsEditing)
-                        {
-                        LaunchLmkEditorL();
-                        }
-                    }
-                }
-            }
-        }
-    else
-        {
-        CAknForm::HandlePointerEventL(aPointerEvent);
-
-        if (aPointerEvent.iType == TPointerEvent::EButton1Down)
-            {
-            iIsDragging = EFalse;
-            }
-
-        if (aPointerEvent.iType == TPointerEvent::EDrag)
-            {
-            iIsDragging = ETrue;
-            }
-        }
-    }
-
-//  End of File
-