diff -r 0396474f30f5 -r 4ce476e64c59 meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsingletimefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsingletimefield.cpp Mon Mar 15 12:39:10 2010 +0200 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsingletimefield.cpp Wed Mar 31 21:08:33 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 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" @@ -15,20 +15,19 @@ * */ - -#include "emailtrace.h" -#include -#include -#include -#include -#include -#include - #include "cesmrsingletimefield.h" #include "mesmrfieldvalidator.h" #include "cesmrglobalnote.h" #include "esmrfieldbuilderdef.h" -#include +#include "cmrimage.h" +#include "nmrlayoutmanager.h" +#include "nmrcolormanager.h" +#include "nmrbitmapmanager.h" + +#include +#include + +#include "emailtrace.h" namespace{ // codescanner::namespace #define KMinimumTime (TTime(0)) // codescanner::baddefines @@ -38,41 +37,45 @@ #define KMaximumTime (TTime(KDayInMicroSeconds)) // codescanner::baddefines } +// ======== MEMBER FUNCTIONS ======== + // --------------------------------------------------------------------------- // CESMRSingleTimeField::CESMRSingleTimeField // --------------------------------------------------------------------------- // -CESMRSingleTimeField::CESMRSingleTimeField( - MESMRFieldValidator* aValidator ) : - iValidator( aValidator ) +CESMRSingleTimeField::CESMRSingleTimeField( MESMRFieldValidator* aValidator ) { FUNC_LOG; - //do nothing + + iValidator = aValidator; + SetFieldId ( EESMRFieldAlarmTime ); + SetFocusType( EESMRHighlightFocus ); } // --------------------------------------------------------------------------- // CESMRSingleTimeField::~CESMRSingleTimeField // --------------------------------------------------------------------------- // -CESMRSingleTimeField::~CESMRSingleTimeField( ) +CESMRSingleTimeField::~CESMRSingleTimeField() { FUNC_LOG; - delete iFrameBgContext; + delete iFieldIcon; + delete iBgCtrlContext; } // --------------------------------------------------------------------------- // CESMRSingleTimeField::NewL // --------------------------------------------------------------------------- // -CESMRSingleTimeField* CESMRSingleTimeField::NewL( +CESMRSingleTimeField* CESMRSingleTimeField::NewL( MESMRFieldValidator* aValidator ) { FUNC_LOG; CESMRSingleTimeField* self = - new (ELeave) CESMRSingleTimeField( aValidator ); - CleanupStack::PushL ( self ); - self->ConstructL ( ); - CleanupStack::Pop ( self ); + new( ELeave )CESMRSingleTimeField( aValidator ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); return self; } @@ -83,44 +86,43 @@ void CESMRSingleTimeField::ConstructL( ) { FUNC_LOG; - SetFieldId ( EESMRFieldAlarmTime ); - + + SetComponentsToInheritVisibility( ETrue ); + TTime startTime; startTime.HomeTime(); - iTime = new (ELeave) CEikTimeEditor(); + iTime = new( ELeave )CEikTimeEditor(); + + CESMRField::ConstructL( iTime ); //ownership transferred + iTime->ConstructL( KMinimumTime, KMaximumTime, startTime, EEikTimeWithoutSecondsField ); iTime->SetUpAndDownKeysConsumed( EFalse ); - - iBackground = AknsDrawUtils::ControlContext( this ); - - CESMRIconField::ConstructL( - KAknsIIDQgnFscalIndiAlarmTime, - iTime ); - - if ( iValidator ) + + iFieldIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapAlarmClock ); + iFieldIcon->SetParent( this ); + + if( iValidator ) { iValidator->SetAlarmTimeFieldL( *iTime ); } - } + + TRect tempRect( 0, 0, 0, 0 ); + + // Setting background instead of theme skin + NMRBitmapManager::TMRBitmapStruct bitmapStruct; + bitmapStruct = NMRBitmapManager::GetBitmapStruct( NMRBitmapManager::EMRBitmapInputCenter ); -// --------------------------------------------------------------------------- -// CESMRSingleTimeField::InitializeL -// --------------------------------------------------------------------------- -// -void CESMRSingleTimeField::InitializeL() - { - FUNC_LOG; - iTime->SetFont ( iLayout->Font (iCoeEnv, iFieldId ) ); - iTime->SetMfneAlignment ( CESMRLayoutManager::IsMirrored ( ) ? EAknEditorAlignRight - : EAknEditorAlignLeft ); - - iTime->SetBorder( TGulBorder::ENone ); - iTime->SetSkinTextColorL( iLayout->NormalTextColorID ( ) ); + iBgCtrlContext = CAknsBasicBackgroundControlContext::NewL( + bitmapStruct.iItemId, + tempRect, + EFalse ); + + iTime->SetSkinBackgroundControlContextL( iBgCtrlContext ); } // --------------------------------------------------------------------------- @@ -131,14 +133,14 @@ TESMREntryFieldId /*aNextItem*/ ) { FUNC_LOG; - TInt err(KErrNone ); - if ( iValidator ) + TInt err( KErrNone ); + if( iValidator ) { TRAP( err, iValidator->AlarmTimeChangedL() ); } - if ( err != KErrNone ) + if( err != KErrNone ) { - CESMRGlobalNote::ExecuteL ( + CESMRGlobalNote::ExecuteL( CESMRGlobalNote::EESMRCalenLaterDate ); return EFalse; } @@ -149,16 +151,16 @@ // CESMRSingleTimeField::OfferKeyEventL // --------------------------------------------------------------------------- // -TKeyResponse CESMRSingleTimeField::OfferKeyEventL(const TKeyEvent& aEvent, +TKeyResponse CESMRSingleTimeField::OfferKeyEventL( const TKeyEvent& aEvent, TEventCode aType ) { FUNC_LOG; - TKeyResponse response( EKeyWasNotConsumed); + TKeyResponse response( EKeyWasNotConsumed ); if ( aType == EEventKey ) { TInt fieldIndex( iTime->CurrentField() ); - switch ( aEvent.iScanCode ) + switch( aEvent.iScanCode ) { // make sure these events are NOT consumed case EStdKeyUpArrow: @@ -167,6 +169,7 @@ default: response = iTime->OfferKeyEventL ( aEvent, aType ); + iTime->DrawDeferred(); break; } @@ -176,42 +179,6 @@ } // --------------------------------------------------------------------------- -// CESMRSingleTimeField::ActivateL -// --------------------------------------------------------------------------- -// -void CESMRSingleTimeField::ActivateL() - { - FUNC_LOG; - CCoeControl::ActivateL(); - TRect rect(TPoint(iTime->Position()), iTime->Size()); - TRect inner(rect); - TRect outer(rect); - - iTime->SetSize(iLayout->FieldSize( FieldId() )); - - delete iFrameBgContext; - iFrameBgContext = NULL; - iFrameBgContext = CAknsFrameBackgroundControlContext::NewL( KAknsIIDQsnFrInput, outer, inner, EFalse ) ; - - iFrameBgContext->SetParentContext( iBackground ); - iTime->SetSkinBackgroundControlContextL(iFrameBgContext); - } - -// --------------------------------------------------------------------------- -// CESMRSingleTimeField::PositionChanged -// --------------------------------------------------------------------------- -// -void CESMRSingleTimeField::PositionChanged() - { - FUNC_LOG; - CCoeControl::PositionChanged(); - if( iFrameBgContext ) - { - iFrameBgContext->SetFrameRects( iTime->Rect(), iTime->Rect() ); - } - } - -// --------------------------------------------------------------------------- // CESMRSingleTimeField::CheckIfValidatingNeededL // --------------------------------------------------------------------------- // @@ -222,12 +189,12 @@ TInt err( KErrNone ); TInt fieldIndex( iTime->CurrentField() ); - if ( fieldIndex != aStartFieldIndex ) + if( fieldIndex != aStartFieldIndex ) { TRAP( err, iValidator->AlarmTimeChangedL() ); } - if ( err != KErrNone ) + if( err != KErrNone ) { CESMRGlobalNote::ExecuteL ( CESMRGlobalNote::EESMRCalenLaterDate ); @@ -240,12 +207,183 @@ void CESMRSingleTimeField::SetOutlineFocusL( TBool aFocus ) { FUNC_LOG; - CESMRField::SetOutlineFocusL ( aFocus ); - if ( aFocus ) + CESMRField::SetOutlineFocusL( aFocus ); + + if( aFocus ) + { + ChangeMiddleSoftKeyL( EESMRCmdSaveMR, R_QTN_MSK_SAVE ); + } + } + +// --------------------------------------------------------------------------- +// CESMRSingleTimeField::SetValidatorL +// --------------------------------------------------------------------------- +// +void CESMRSingleTimeField::SetValidatorL( MESMRFieldValidator* aValidator ) + { + FUNC_LOG; + + CESMRField::SetValidatorL( aValidator ); + + if ( iValidator ) + { + iValidator->SetAlarmTimeFieldL( *iTime ); + } + } + +// --------------------------------------------------------------------------- +// CESMRSingleTimeField::SizeChanged() +// --------------------------------------------------------------------------- +// +TBool CESMRSingleTimeField::ExecuteGenericCommandL( TInt aCommand ) + { + FUNC_LOG; + + TBool retValue( EFalse ); + + if ( EMRCmdDoEnvironmentChange == aCommand ) + { + // Locale has been changed + DoEnvChangeL(); + retValue = ETrue; + } + + return retValue; + } + +// --------------------------------------------------------------------------- +// CESMRSingleTimeField::SizeChanged() +// --------------------------------------------------------------------------- +// +void CESMRSingleTimeField::SizeChanged() + { + TRect rect( Rect() ); + + // Layouting field icon + if( iFieldIcon ) + { + TAknWindowComponentLayout iconLayout = + NMRLayoutManager::GetWindowComponentLayout( + NMRLayoutManager::EMRLayoutDateEditorIcon ); + AknLayoutUtils::LayoutImage( iFieldIcon, rect, iconLayout ); + } + + // Layouting time editor + if( iTime ) { - ChangeMiddleSoftKeyL(EESMRCmdSaveMR,R_QTN_MSK_SAVE); + TAknLayoutRect bgLayoutRect = + NMRLayoutManager::GetLayoutRect( + rect, NMRLayoutManager::EMRLayoutTextEditorBg ); + TRect bgRect( bgLayoutRect.Rect() ); + // Move focus rect so that it's relative to field's position. + bgRect.Move( -Position() ); + SetFocusRect( bgRect ); + + TAknTextComponentLayout editorLayout = + NMRLayoutManager::GetTextComponentLayout( + NMRLayoutManager::EMRTextLayoutDateEditor ); + AknLayoutUtils::LayoutMfne( iTime, rect, editorLayout ); + + NMRColorManager::SetColor( *iTime, + NMRColorManager::EMRMainAreaTextColor ); + + } + } + +// --------------------------------------------------------------------------- +// CESMRSingleTimeField::CountComponentControls() +// --------------------------------------------------------------------------- +// +TInt CESMRSingleTimeField::CountComponentControls() const + { + TInt count( 0 ); + if( iFieldIcon ) + { + ++count; + } + + if( iTime ) + { + ++count; + } + return count; + } + +// --------------------------------------------------------------------------- +// CESMRSingleTimeField::ComponentControl() +// --------------------------------------------------------------------------- +// +CCoeControl* CESMRSingleTimeField::ComponentControl( TInt aIndex ) const + { + switch( aIndex ) + { + case 0: + return iFieldIcon; + case 1: + return iTime; + default: + return NULL; } } +// --------------------------------------------------------------------------- +// CESMRSingleTimeField::SetContainerWindowL +// --------------------------------------------------------------------------- +// +void CESMRSingleTimeField::SetContainerWindowL( + const CCoeControl& aContainer ) + { + iContainerWindow = &aContainer; + + CCoeControl::SetContainerWindowL( *iContainerWindow ); + + iFieldIcon->SetContainerWindowL( *iContainerWindow ); + iTime->SetContainerWindowL( *iContainerWindow ); + + iFieldIcon->SetParent( this ); + iTime->SetParent( this ); + } + +// --------------------------------------------------------------------------- +// CESMRSingleTimeField::DoEnvChangeL +// --------------------------------------------------------------------------- +// +void CESMRSingleTimeField::DoEnvChangeL() + { + FUNC_LOG; + + CEikTimeEditor* time = new( ELeave )CEikTimeEditor; + CleanupStack::PushL( time ); + + TTime startTime; + startTime.HomeTime(); + + time->ConstructL( + KMinimumTime, + KMaximumTime, + startTime, + EEikTimeWithoutSecondsField ); + + time->SetUpAndDownKeysConsumed( EFalse ); + + UpdateExtControlL( time ); + + CleanupStack::Pop( time ); + iTime = time; + + iTime->SetSkinBackgroundControlContextL( iBgCtrlContext ); + SetContainerWindowL( *iContainerWindow ); + + if ( iValidator ) + { + iValidator->SetAlarmTimeFieldL( *iTime ); + } + + iTime->ActivateL(); + + SizeChanged(); + DrawDeferred(); + } + // EOF