diff -r 000000000000 -r f979ecb2b13e calendarui/editors/src/CalenDescriptionField.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/editors/src/CalenDescriptionField.cpp Tue Feb 02 10:12:19 2010 +0200 @@ -0,0 +1,158 @@ +/* +* 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: ?Description +* +*/ + + +// system includes +#include +#include + +// user includes +#include "CalenDescriptionField.h" +#include "CalenDescription.h" + +// debug +#include "calendarui_debug.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// --------------------------------------------------------------------------- +// CCalenDescriptionField::CCalenDescriptionField +// C++ constructor can NOT contain any code, that might leave. +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +CCalenDescriptionField::CCalenDescriptionField( CCalenDescription& aDescription ) + : iDescription( aDescription ) + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + } + +// ----------------------------------------------------------------------------- +// CCalenDescriptionField::~CCalenDescriptionField +// Destructor. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +CCalenDescriptionField::~CCalenDescriptionField() + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + } + +// ----------------------------------------------------------------------------- +// CCalenDescriptionField::OfferKeyEventL +// Handle key events. Could show/edit/remove description. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TKeyResponse CCalenDescriptionField::OfferKeyEventL( const TKeyEvent& aKeyEvent, + TEventCode aType ) + { + TRACE_ENTRY_POINT; + + TKeyResponse exitCode = EKeyWasNotConsumed; + if (aType == EEventKey) + { + switch( aKeyEvent.iCode ) + { + case EKeyOK: + { + iDescription.ShowL(); + exitCode = EKeyWasConsumed; + } + break; + case EKeyEnter: + { + iDescription.ShowL(); // Open notepad to edit description + exitCode = EKeyWasConsumed; + } + break; + case EKeyBackspace: + { + iDescription.RemoveL(); + exitCode = EKeyWasConsumed; + } + break; + default: + break; + } + } + else if( aType == EEventKeyDown ) + { + TInt code = aKeyEvent.iScanCode; + if ( ('0' <= code && code <= '9') || // digit keys + ('A' <= code && code <= 'Z') ) // character keys + { + // calls modal dialog, for which key is posted + iDescription.EditL(); + exitCode = EKeyWasConsumed; + } + } + else + { + // do nothing + } + + if( exitCode != EKeyWasConsumed ) + { + exitCode = CEikEdwin::OfferKeyEventL( aKeyEvent, aType ); + } + + TRACE_EXIT_POINT; + return exitCode; + } + +// ----------------------------------------------------------------------------- +// CCalenDescriptionField::SetTextL +// Sets the given text to the description field. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CCalenDescriptionField::SetTextL( const TDesC* aData ) + { + TRACE_ENTRY_POINT; + + // Shorten data and take max length of head of text, + // otherwise edwin takes tail of text. + CTextLayout* layout = const_cast( iTextView->Layout() ); + + if ( !layout->Truncating() ) + { + layout->SetTruncating( TRUE ); + } + + TInt maxLen = iTextLimit; + HBufC* stripBuf = HBufC::NewLC( maxLen ); + TPtr stripPtr = stripBuf->Des(); + stripPtr.Append( aData->Left( maxLen ) ); + // Replace some common unicode control characters with spaces + // as Edwin can't show them correctly. + // - normal ASCII line break (\n) + // - normal ASCII tab (\t) + // - paragraph separator (0x2029) + // - line break (0x2028) + _LIT( KParagraphCharacter, "\n\t\x2029\x2028" ); + TChar space(' '); + AknTextUtils::ReplaceCharacters( stripPtr, KParagraphCharacter, space ); + CEikEdwin::SetTextL( stripBuf ); + CleanupStack::PopAndDestroy( stripBuf ); + + TRACE_EXIT_POINT; + } + +// End of File