diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrbooleanfield.cpp --- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrbooleanfield.cpp Mon Mar 15 12:39:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,301 +0,0 @@ -/* -* Copyright (c) 2007-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" -* 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: ESMR boolean field implementation -* -*/ - -#include "emailtrace.h" -#include "cesmrbooleanfield.h" - -#include -#include -#include -#include -#include -#include "mesmrcalentry.h" -#include "mesmrlistobserver.h" -#include "mesmrfieldvalidator.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CESMRBooleanField::NewL -// --------------------------------------------------------------------------- -// -CESMRBooleanField* CESMRBooleanField::NewL( MESMRFieldValidator* aValidator ) - { - FUNC_LOG; - CESMRBooleanField* self = new (ELeave) CESMRBooleanField( aValidator ); - CleanupStack::PushL ( self ); - self->ConstructL ( ); - CleanupStack::Pop ( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CESMRBooleanField::~CESMRBooleanField -// --------------------------------------------------------------------------- -// -CESMRBooleanField::~CESMRBooleanField( ) - { - FUNC_LOG; - //do nothing - } - -// --------------------------------------------------------------------------- -// CESMRBooleanField::InitializeL -// --------------------------------------------------------------------------- -// -void CESMRBooleanField::InitializeL() - { - FUNC_LOG; - iLabel->SetFont ( iLayout->Font (iCoeEnv, iFieldId ) ); - iLabel->SetLabelAlignment (CESMRLayoutManager::IsMirrored ( ) ? ELayoutAlignRight - : ELayoutAlignLeft ); - AknLayoutUtils::OverrideControlColorL ( *iLabel, - EColorLabelText, - iLayout->GeneralListAreaTextColor() ); - } - -// --------------------------------------------------------------------------- -// CESMRBooleanField::InternalizeL -// --------------------------------------------------------------------------- -// -void CESMRBooleanField::InternalizeL( MESMRCalEntry& aEntry ) - { - FUNC_LOG; - if (aEntry.IsStoredL ( ) ) // entry is already stored in db - { - MESMRCalEntry::TESMRAlarmType alarmType; - TTime alarmTime; - aEntry.GetAlarmL (alarmType, alarmTime ); - - switch (alarmType ) - { - //flow through - case MESMRCalEntry::EESMRAlarmAbsolute: - case MESMRCalEntry::EESMRAlarmRelative: // Show alarm as - ON - { - iStatus = ETrue; - } - break; - //flow through - case MESMRCalEntry::EESMRAlarmNotFound: - default: // Show alarm as - OFF - { - iStatus = EFalse; - } - break; - } - } - else // This is a new entry and default implementation is required - { - switch (aEntry.Type ( ) ) - { - case MESMRCalEntry::EESMRCalEntryTodo: // To-do - { - TTime alarmTime; - MESMRCalEntry::TESMRAlarmType alarmType; - aEntry.GetAlarmL (alarmType, alarmTime ); - - // Change status to "ON" if alarm has been set by default - iStatus = alarmType != MESMRCalEntry::EESMRAlarmNotFound; - } - break; - // Flow through - case MESMRCalEntry::EESMRCalEntryMeetingRequest: // Meeting request - case MESMRCalEntry::EESMRCalEntryMeeting: // Meeting - { - iStatus = ETrue;// Change the status to "ON" for these dialog default - } - break; - - case MESMRCalEntry::EESMRCalEntryAnniversary: // Anniversary - { - iStatus = ETrue;// Change the status to "ON" for these dialog default - } - break; - // Flow through - case MESMRCalEntry::EESMRCalEntryMemo: // Memo - case MESMRCalEntry::EESMRCalEntryReminder: // Reminder - - default: - iStatus = EFalse; // Change the status to "OFF" for these dialog default - break; - } - } - ResetFieldL ( ); - } - -// --------------------------------------------------------------------------- -// CESMRBooleanField::OfferKeyEventL -// --------------------------------------------------------------------------- -// -TKeyResponse CESMRBooleanField::OfferKeyEventL(const TKeyEvent& aEvent, - TEventCode aType ) - { - FUNC_LOG; - TKeyResponse response( EKeyWasNotConsumed); - if ( aType == EEventKey ) - { - switch ( aEvent.iScanCode ) - { - // Flowthrough, doesn't matter which key was pressed since - // the value is always changes from "off" to "on" or vice versus. - case EStdKeyDevice3: // selection key - case EStdKeyLeftArrow: - case EStdKeyRightArrow: - iStatus = !iStatus; // change status - ResetFieldL ( ); - response = EKeyWasConsumed; - break; - - default: - break; - } - } - return response; - } - - -// --------------------------------------------------------------------------- -// CESMRBooleanField::SetOutlineFocusL -// --------------------------------------------------------------------------- -// -void CESMRBooleanField::SetOutlineFocusL( TBool aFocus ) - { - FUNC_LOG; - CESMRField::SetOutlineFocusL( aFocus ); - - if (aFocus) //Focus is gained on the field - { - if (iStatus) - { - ChangeMiddleSoftKeyL(EESMRCmdAlarmOff,R_QTN_MEET_REQ_ALARM_OFF); //R_TEXT_SOFTKEY_OFF - } - else - { - ChangeMiddleSoftKeyL(EESMRCmdAlarmOn,R_QTN_MEET_REQ_ALARM_ON); //R_TEXT_SOFTKEY_ON - } - } - } - -// --------------------------------------------------------------------------- -// CESMRBooleanField::MakeVisible -// --------------------------------------------------------------------------- -// -void CESMRBooleanField::MakeVisible(TBool aVisible ) - { - FUNC_LOG; - CCoeControl::MakeVisible (aVisible ); - if ( iObserver ) - { - TRAP_IGNORE(ResetFieldL ( ) ); - } - } - -// --------------------------------------------------------------------------- -// CESMRBooleanField::ExecuteGenericCommandL() -// --------------------------------------------------------------------------- -// -void CESMRBooleanField::ExecuteGenericCommandL( TInt aCommand ) - { - FUNC_LOG; - if( aCommand == EESMRCmdAlarmOn || aCommand == EESMRCmdAlarmOff ) - { - SwitchMiddleSoftKeyL(); - } - } - -// --------------------------------------------------------------------------- -// CESMRBooleanField::SwitchMiddleSoftKeyL -// --------------------------------------------------------------------------- -// -void CESMRBooleanField::SwitchMiddleSoftKeyL() - { - FUNC_LOG; - iStatus = !iStatus; // change status - ResetFieldL ( ); - if (iStatus) - { - ChangeMiddleSoftKeyL(EESMRCmdAlarmOff,R_QTN_MEET_REQ_ALARM_OFF); - } - else - { - ChangeMiddleSoftKeyL(EESMRCmdAlarmOn,R_QTN_MEET_REQ_ALARM_ON); - } - } - -// --------------------------------------------------------------------------- -// CESMRBooleanField::CESMRBooleanField -// --------------------------------------------------------------------------- -// -CESMRBooleanField::CESMRBooleanField( MESMRFieldValidator* aValidator ) : - iValidator( aValidator) - { - FUNC_LOG; - iStatus = ETrue; - } - -// --------------------------------------------------------------------------- -// CESMRBooleanField::ConstructL -// --------------------------------------------------------------------------- -// -void CESMRBooleanField::ConstructL( ) - { - FUNC_LOG; - _LIT(KEmptyText, "" ); - SetFieldId ( EESMRFieldAlarmOnOff ); - iLabel = new (ELeave) CEikLabel(); - iLabel->SetTextL (KEmptyText ); - - CESMRIconField::ConstructL (KAknsIIDQgnMeetReqIndiAlarm, iLabel ); - } - -// --------------------------------------------------------------------------- -// CESMRBooleanField::ResetFieldL -// --------------------------------------------------------------------------- -// -void CESMRBooleanField::ResetFieldL( ) - { - FUNC_LOG; - iValidator->SetAlarmOnOffL( iStatus ); - - HBufC* buf = StringLoader::LoadLC ( iStatus ? - R_QTN_MEET_REQ_ALARM_ON : - R_QTN_MEET_REQ_ALARM_OFF ); - - iLabel->SetTextL ( *buf ); - CleanupStack::PopAndDestroy ( buf ); - - // if status on 'on', add time and date fields for - // all day event alert, otherwise remove them. - // if this field is not visible -> alldayevent not set - // let's not show the date and time fields either. - if ( iStatus && IsVisible ( ) ) - { - iObserver->InsertControl ( EESMRFieldAlarmTime ); - iObserver->InsertControl ( EESMRFieldAlarmDate ); - } - else - { - iObserver->RemoveControl ( EESMRFieldAlarmTime ); - iObserver->RemoveControl ( EESMRFieldAlarmDate ); - } - - iLabel->DrawDeferred ( ); - } - -// EOF -