diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmdatefield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmdatefield.cpp Mon Mar 15 12:39:10 2010 +0200 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmdatefield.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" @@ -19,34 +19,48 @@ #include "cesmreditor.h" #include "mesmrlistobserver.h" -#include "nmrlayoutmanager.h" -#include "nmrbitmapmanager.h" +#include "mesmrmeetingrequestentry.h" +#include "mesmrcalentry.h" +#include "esmrfieldbuilderdef.h" +#include "cmrimage.h" #include "cmrlabel.h" -#include "cmrimage.h" -#include +#include "nmrlayoutmanager.h" +#include "cesmrglobalnote.h" -#include #include -#include -#include -#include #include -#include -#include -#include -#include -#include +#include +#include +#include -// ======== LOCAL FUNCTIONS ======== -namespace // codescanner::namespace - { - const TInt KComponentCount( 2 ); // icon and label - const TInt KMaxTimeBuffer( 32 ); // buffer for date formatting - } // unnamed namespace +#include "emailtrace.h" + // ======== MEMBER FUNCTIONS ======== // --------------------------------------------------------------------------- +// CESMRViewerAlarmDateField::CESMRViewerAlarmDateField() +// --------------------------------------------------------------------------- +// +CESMRViewerAlarmDateField::CESMRViewerAlarmDateField() + { + FUNC_LOG; + SetFieldId ( EESMRFieldAlarmDate ); + SetFocusType( EESMRHighlightFocus ); + } + +// --------------------------------------------------------------------------- +// CESMRViewerAlarmDateField::~CESMRViewerAlarmDateField() +// --------------------------------------------------------------------------- +// +CESMRViewerAlarmDateField::~CESMRViewerAlarmDateField() + { + FUNC_LOG; + delete iIcon; + delete iLockIcon; + } + +// --------------------------------------------------------------------------- // CESMRViewerAlarmDateField::NewL() // --------------------------------------------------------------------------- // @@ -60,89 +74,37 @@ } // --------------------------------------------------------------------------- -// CESMRViewerAlarmDateField::~CESMRViewerAlarmDateField() -// --------------------------------------------------------------------------- -// -CESMRViewerAlarmDateField::~CESMRViewerAlarmDateField() - { - delete iLabel; - delete iIcon; - } - +// CESMRViewerAlarmDateField::ConstructL() // --------------------------------------------------------------------------- -// CESMRViewerAlarmDateField::CESMRViewerAlarmDateField() -// --------------------------------------------------------------------------- -// -CESMRViewerAlarmDateField::CESMRViewerAlarmDateField() - { - SetFieldId ( EESMRFieldAlarmDate ); - SetFocusType( EESMRHighlightFocus ); - } - -// ----------------------------------------------------------------------------- -// CESMRViewerAlarmDateField::ConstructL() -// ----------------------------------------------------------------------------- // void CESMRViewerAlarmDateField::ConstructL() { + FUNC_LOG; iLabel = CMRLabel::NewL(); iLabel->SetParent( this ); - iIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapAlarmDate ); + CESMRField::ConstructL( iLabel ); // ownership transfered + + iIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapDateStart ); iIcon->SetParent( this ); } // --------------------------------------------------------------------------- -// CESMRViewerAlarmDateField::InitializeL() -// --------------------------------------------------------------------------- -// -void CESMRViewerAlarmDateField::InitializeL() - { - // Setting Font for the rich text viewer - TAknLayoutText text = NMRLayoutManager::GetLayoutText( - Rect(), - NMRLayoutManager::EMRTextLayoutTextEditor ); - - iLabel->SetFont( text.Font() ); - - // This is called so theme changes will apply when changing theme "on the fly" - if ( IsFocused() ) - { - iLabel->FocusChanged( EDrawNow ); - } - - AknLayoutUtils::OverrideControlColorL( *iLabel, EColorLabelText, - KRgbBlack ); - } - - -// --------------------------------------------------------------------------- // CESMRViewerAlarmDateField::InternalizeL() // --------------------------------------------------------------------------- // void CESMRViewerAlarmDateField::InternalizeL( MESMRCalEntry& aEntry ) { MESMRCalEntry::TESMRAlarmType alarmType; - TTime alarmTime; - - aEntry.GetAlarmL( alarmType, alarmTime ); + aEntry.GetAlarmL( alarmType, iAlarmTime ); if( alarmType == MESMRCalEntry::EESMRAlarmAbsolute ) { - // Read format string from AVKON resource - HBufC* dateFormatString = iEikonEnv->AllocReadResourceLC( - R_QTN_DATE_USUAL_WITH_ZERO ); - TBuf buf; - - alarmTime.FormatL( buf, *dateFormatString ); - AknTextUtils::DisplayTextLanguageSpecificNumberConversion( buf ); - iLabel->SetTextL( buf ); - - CleanupStack::PopAndDestroy( dateFormatString ); + FormatAlarmTimeL(); } else // Remove the alarm fields { CCoeControl::MakeVisible(EFalse); - iObserver->RemoveControl(EESMRFieldAlarmDate); + iObserver->HideControl( EESMRFieldAlarmDate ); } } @@ -152,28 +114,48 @@ // void CESMRViewerAlarmDateField::SizeChanged() { + FUNC_LOG; TRect rect = Rect(); TAknLayoutRect rowLayoutRect = NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 ); rect = rowLayoutRect.Rect(); - + TAknWindowComponentLayout iconLayout = - NMRLayoutManager::GetWindowComponentLayout( + NMRLayoutManager::GetWindowComponentLayout( NMRLayoutManager::EMRLayoutTextEditorIcon ); AknLayoutUtils::LayoutImage( iIcon, rect, iconLayout ); - TAknLayoutRect bgLayoutRect = - NMRLayoutManager::GetLayoutRect( - rect, NMRLayoutManager::EMRLayoutTextEditorBg ); - TRect bgRect( bgLayoutRect.Rect() ); + // Layouting lock icon + if( iLockIcon ) + { + TAknWindowComponentLayout iconLayout( + NMRLayoutManager::GetWindowComponentLayout( + NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) ); + AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout ); + } + + // Layouting label + TAknLayoutText viewerLayoutText; + if( iLockIcon ) + { + viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, + NMRLayoutManager::EMRTextLayoutSingleRowEditorText ); + } + else + { + viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, + NMRLayoutManager::EMRTextLayoutTextEditor ); + } + + TRect viewerRect( viewerLayoutText.TextRect() ); + iLabel->SetRect( viewerRect ); + // Move focus rect so that it's relative to field's position. - bgRect.Move( -Position() ); - SetFocusRect( bgRect ); - - TAknLayoutText labelLayout = - NMRLayoutManager::GetLayoutText( - rect, NMRLayoutManager::EMRTextLayoutTextEditor ); - iLabel->SetRect( labelLayout.TextRect() ); + viewerRect.Move( -Position() ); + SetFocusRect( viewerRect ); + + // Setting font also for the label + iLabel->SetFont( viewerLayoutText.Font() ); } // --------------------------------------------------------------------------- @@ -182,7 +164,23 @@ // TInt CESMRViewerAlarmDateField::CountComponentControls() const { - TInt count( KComponentCount ); + FUNC_LOG; + TInt count( 0 ); + if ( iIcon ) + { + ++count; + } + + if ( iLabel ) + { + ++count; + } + + if ( iLockIcon ) + { + ++count; + } + return count; } @@ -192,12 +190,15 @@ // CCoeControl* CESMRViewerAlarmDateField::ComponentControl( TInt aIndex ) const { + FUNC_LOG; switch ( aIndex ) { case 0: return iIcon; case 1: return iLabel; + case 2: + return iLockIcon; default: return NULL; } @@ -209,15 +210,80 @@ // void CESMRViewerAlarmDateField::SetOutlineFocusL( TBool aFocus ) { + FUNC_LOG; CESMRField::SetOutlineFocusL ( aFocus ); + + iLabel->SetFocus( aFocus ); + } + +// --------------------------------------------------------------------------- +// CESMRViewerAlarmDateField::ExecuteGenericCommandL() +// --------------------------------------------------------------------------- +// +TBool CESMRViewerAlarmDateField::ExecuteGenericCommandL( TInt aCommand ) + { + FUNC_LOG; - iLabel->SetFocus( aFocus ); - - if ( !aFocus ) + TBool retValue( EFalse ); + + if( (aCommand == EAknCmdOpen) && IsLocked() ) + { + HandleTactileFeedbackL(); + + CESMRGlobalNote::ExecuteL( + CESMRGlobalNote::EESMRUnableToEdit ); + retValue = ETrue; + } + + if ( EMRCmdDoEnvironmentChange == aCommand ) { - AknLayoutUtils::OverrideControlColorL ( *iLabel, EColorLabelText, - KRgbBlack ); + FormatAlarmTimeL(); + retValue = ETrue; } + + return retValue; } + +// --------------------------------------------------------------------------- +// CESMRViewerAlarmDateField::LockL() +// --------------------------------------------------------------------------- +// +void CESMRViewerAlarmDateField::LockL() + { + FUNC_LOG; + if( IsLocked() ) + { + return; + } + + CESMRField::LockL(); + + delete iLockIcon; + iLockIcon = NULL; + iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue ); + iLockIcon->SetParent( this ); + } + +// --------------------------------------------------------------------------- +// CESMRViewerAlarmDateField::FormatAlarmTimeL() +// --------------------------------------------------------------------------- +// +void CESMRViewerAlarmDateField::FormatAlarmTimeL() + { + FUNC_LOG; + + // Read format string from AVKON resource + HBufC* dateFormatString = iEikonEnv->AllocReadResourceLC( + R_QTN_DATE_USUAL_WITH_ZERO ); + HBufC* buf = HBufC::NewLC( KBufferLength ); + TPtr ptr( buf->Des() ); + + iAlarmTime.FormatL( ptr, *dateFormatString ); + AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr ); + iLabel->SetTextL( *buf ); + + CleanupStack::PopAndDestroy( 2, dateFormatString ); + } + + // EOF -