diff -r 522cd55cc3d7 -r 13ae750350c9 landmarksui/uicontrols/src/CLmkEditorTextField.cpp --- a/landmarksui/uicontrols/src/CLmkEditorTextField.cpp Tue Feb 02 00:16:03 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,386 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Methods for landmark editor text field. -* -*/ - - - - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include "landmarks.hrh" -#include "CLmkEditorTextField.h" -#include "MLmkEditorUiBuilder.h" -#include "CLmkUiUtils.h" -#include "LmkConsts.h" -#include "CLmkFields.h" -// CONSTANTS -/// Unnamed namespace for local definitions -namespace { -const TInt KNumberOfLines( 8 ); -} // namespace - -// ================= MEMBER FUNCTIONS ======================= - -// ---------------------------------------------------- -// CLmkEditorTextField::CLmkEditorTextField -// ---------------------------------------------------- -// -CLmkEditorTextField::CLmkEditorTextField - ( MLmkFieldData& aField, - MLmkEditorUiBuilder& aUiBuilder ) : - CLmkEditorFieldBase( aField, aUiBuilder ) - { - } - -// ---------------------------------------------------- -// CLmkEditorTextField::ConstructL -// ---------------------------------------------------- -// -void CLmkEditorTextField::ConstructL() - { - // Create and insert a line in the dialog - iControl = static_cast( iUiBuilder.CreateLineL( - FieldLabel(), LandmarkItemField().UniqueFieldIdentity(), - EEikCtEdwin ) ); - // ctrl is now owned by the dialog - AknEditUtils::ConstructEditingL( iControl, - LandmarkItemField().FieldLength(), - KNumberOfLines, - EAknEditorTextCase | EAknEditorCharactersUpperCase - | EAknEditorCharactersLowerCase, EAknEditorAlignLeft, - ETrue, ETrue, EFalse ); - - // Set Edwin properties for numeric editor (Phone number field) - if (ETextPhoneNumberFieldEditor == iLmkItemField.EditorType()) - { - iControl->SetAknEditorNumericKeymap(EAknEditorStandardNumberModeKeymap); - iControl->SetAknEditorInputMode(EAknEditorNumericInputMode); - iControl->SetAknEditorAllowedInputModes(EAknEditorNumericInputMode); - iControl->SetAknEditorSpecialCharacterTable(0); - } - - // Set the editor case for URI editor - if ( ETextUriFieldEditor == iLmkItemField.EditorType() ) - { - iControl->SetAknEditorCase( EAknEditorLowerCase ); - iControl->SetAknEditorFlags( EAknEditorFlagLatinInputModesOnly ); - } - else - { - iControl->SetAknEditorCase( EAknEditorTextCase ); - } - - // Get text - HBufC* textBuf = HBufC::NewLC( LandmarkItemField().TextData().Length() ); - TPtr text= textBuf->Des(); - text = LandmarkItemField().TextData(); - - // No Japanese input modes tolerated in Japanese variant, - // set the allowed onces manually - // Only for postal/zip code field - - if (LandmarkItemField().FieldType() == EPostCode) - { - iControl->SetAknEditorInputMode(EAknEditorNumericInputMode); - iControl->SetAknEditorAllowedInputModes(EAknEditorAllInputModes); - if (FeatureManager::FeatureSupported(KFeatureIdJapanese)) - { - iControl->SetAknEditorFlags(EAknEditorFlagLatinInputModesOnly); - } - else - { - AknTextUtils::DisplayTextLanguageSpecificNumberConversion(text); - } - } - else - { - AknTextUtils::DisplayTextLanguageSpecificNumberConversion(text); - } - - - if(LandmarkItemField().FieldType() == EWebAddress && text.Length() > 0) - { - //only for web address field - TInt position; - if((position = IsWebUrlProtocolPreFixedL(text))!= - KErrNotFound) - { - TrimPrefixesFromWebUrlL( text, position +1 ); - } - } - - TPtrC ptr (text); - SetControlTextL(ptr); - - // SetTextL method above copied the text to the control, - // so it is safe to destroy the buffer - CleanupStack::PopAndDestroy( textBuf ); - - LoadBitmapToFieldL(iUiBuilder); - - // Place cursor to the end of the line - iControl->AddFlagToUserFlags( CEikEdwin::EJustAutoCurEnd ); - - // CreateTextViewL() is flagged as deprecated but if it is not - // called here the ActivateL() below crashes sometimes. - iControl->CreateTextViewL(); - iCaptionedCtrl = iUiBuilder.LineControl( ControlId() ); - iCaptionedCtrl->SetTakesEnterKey( ETrue ); - } - -// ---------------------------------------------------- -// CLmkEditorTextField::NewL -// ---------------------------------------------------- -// -CLmkEditorTextField* CLmkEditorTextField::NewL - ( MLmkFieldData& aField, - MLmkEditorUiBuilder& aUiBuilder ) - { - CLmkEditorTextField* self = - new(ELeave) CLmkEditorTextField( aField, aUiBuilder ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// ---------------------------------------------------- -// CLmkEditorTextField::~CLmkEditorTextField -// ---------------------------------------------------- -// -CLmkEditorTextField::~CLmkEditorTextField() - { - delete iText; - delete iUrlPrefix; - } - -// ---------------------------------------------------- -// CLmkEditorTextField::SaveFieldL -// ---------------------------------------------------- -// -TBool CLmkEditorTextField::SaveFieldL() - { - TBool result = EFalse; - HBufC* text = iControl->GetTextInHBufL(); - if ( text ) - { - if ( LandmarkItemField().FieldType() == EWebAddress ) - { - TInt totalLength = text->Length(); - if (totalLength > 0) - { - if(CLmkUiUtils::FindIfWebAddrFieldIsEmpty(text->Des())) - { - //nothing is there after :// e.g http:// - // do not save - text->Des().Zero(); - LandmarkItemField().SetText( text ); - text = NULL; - result = ETrue; - - } - else - { - //something is there after :// e.g http://www.ebay.com - - if( iText && *iText != *text) - { - // store the text - // Prepend the webaddress text with "http://" by default - TInt httpProtoPos = text->Find( KProtocol ); - if ( httpProtoPos == KErrNotFound) - { - if(text->Length() <= KMaxUrlFieldLenWithDefaultProtocol) - { - text = text->ReAllocL( KHttp().Length() + text->Length() ); - text->Des().Insert(0, KHttp); - } - } - - if( isUrlPrefixed ) - { - TPtr text1= text->Des(); - if(IsWebUrlProtocolPreFixedL(text1)== KErrNotFound) - { - //insert the pre-fix back to the url, if it was removed. - //since for ui , prefixes are not shown, but prefixes are - //retained in its original form. - text = text->ReAllocL( iUrlPrefix->Length() + text->Length() ); - text->Des().Insert(0, iUrlPrefix->Des()); - } - } - LandmarkItemField().SetText( text ); - text = NULL; - result = ETrue; - } - }//else - }//end of if statement - }// not a web address field - else - { - if ( LandmarkItemField().TextData() != *text ) - { - // store the text - LandmarkItemField().SetText( text ); - text = NULL; - result = ETrue; - } - } - delete text; - } - else - { - // Ensure field text is empty - if ( LandmarkItemField().TextData().Length() > 0) - { - text = HBufC::New(0); - LandmarkItemField().SetText( text ); - result = ETrue; - } - } - - return result; - } - -// ---------------------------------------------------- -// CLmkEditorTextField::ActivateL -// ---------------------------------------------------- -// -void CLmkEditorTextField::ActivateL() - { - iCaptionedCtrl->ActivateL(); - } - - -// ---------------------------------------------------- -// CLmkEditorTextField::Control -// ---------------------------------------------------- -// -CEikEdwin* CLmkEditorTextField::Control() - { - return iControl; - } - -// ---------------------------------------------------- -// CLmkEditorTextField::Control -// ---------------------------------------------------- -// -CEikCaptionedControl* CLmkEditorTextField::CaptionedControl() - { - return iCaptionedCtrl; - } - -// ---------------------------------------------------- -// CLmkEditorTextField::IsWebUrlProtocolPreFixedL() -// ---------------------------------------------------- -// -TInt CLmkEditorTextField::IsWebUrlProtocolPreFixedL( TPtr& aWebUrl ) - { - TChar ch = '/'; - // e.g image/jpeg/http://www.google.com - TInt protocolPos = aWebUrl.Find(KProtocol); - TInt posPrefix = KErrNotFound; - if( protocolPos != KErrNotFound) - { - //find the left string from ':" character e.g image/jpeg/http - TPtrC ptrPrefix = aWebUrl.Left( protocolPos ); - //search '/' from right handside. - posPrefix = ptrPrefix.LocateReverse(ch); - if( posPrefix != KErrNotFound) - { - /*if( !iUrlPrefix ) - {*/ - delete iUrlPrefix; - iUrlPrefix = NULL; - //prefix e.g image/jpeg. - iUrlPrefix = HBufC::NewL( posPrefix + 1 ); - iUrlPrefix->Des().Copy(ptrPrefix.Left( posPrefix + 1 )); - //} - isUrlPrefixed = ETrue; - } - } - //returns the position of the prefix. - return posPrefix; - } - -// ---------------------------------------------------- -// CLmkEditorTextField::TrimPrefixesFromWebUrlL() -// ---------------------------------------------------- -// -void CLmkEditorTextField::TrimPrefixesFromWebUrlL( TPtr& aWebUrl, - TInt aTrimPos ) - { - //deletes the prefix from url - //e.g deletes "image/jpeg" from image/jpeg/http://www.google.com - aWebUrl.Delete(0,aTrimPos); - } -// ---------------------------------------------------- -// CLmkEditorTextField::SetControlTextL() -// ---------------------------------------------------- -// -void CLmkEditorTextField::SetControlTextL( TPtrC& aText) - { - TPtrC dispTxt; - dispTxt.Set(aText); - // Set formatted text to editor control - if ( LandmarkItemField().FieldType() == EWebAddress && - aText.Length() == 0 && (!iUiBuilder.EditMode())) - { - //only for web address field - // Insert http:// prefix to URL field only in edit mode - dispTxt.Set(KHttp()); - } - else - { - //if it is editor, remove the enter character, if at all present. - if (iUiBuilder.EditMode()) - { - TPtr des1 = CLmkFields::RemoveEnterCharacter( aText ); - dispTxt.Set(des1); - } - } - - if( !iText ) - { - //currently this member is used only for url field. - //it can be used for other fields also, later. - iText = HBufC::NewL( dispTxt.Length() ); - } - else if( dispTxt.Length() > iText->Length()) - { - iText = iText->ReAllocL( dispTxt.Length() ); - } - iText->Des().Copy( dispTxt); - iControl->SetTextL( &dispTxt ); - iControl->DrawDeferred(); - } -// ---------------------------------------------------- -// CLmkEditorTextField::SetEditableL() -// ---------------------------------------------------- -// -void CLmkEditorTextField::SetEditableL( TBool aEditable ) - { - if(iCaptionedCtrl) - iCaptionedCtrl->SetEditableL(aEditable); - } -// End of File -