--- /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 <AknUtils.h>
+#include <AknDef.h>
+
+// 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<CTextLayout *>( 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