diff -r ebe688cedc25 -r 7fdbb852d323 email/mail/EditorSrc/cmsgmailprioritysetting.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/mail/EditorSrc/cmsgmailprioritysetting.cpp Wed Sep 01 12:31:54 2010 +0100 @@ -0,0 +1,212 @@ +/* +* Copyright (c) 2006 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: Priority setting item and setting page +* +*/ + + +#include "cmsgmailprioritysetting.h" +#include "MsgMailEditorDocument.h" +#include "MailLog.h" +#include +#include + + +inline void CMsgMailEditorPrioritySettingItem::ConstructL() + { + SetSettingValueL(); + } + +CMsgMailEditorPrioritySettingItem* + CMsgMailEditorPrioritySettingItem::NewL( + TInt aIdentifier, CMsgMailEditorDocument& aDocument ) + { + CMsgMailEditorPrioritySettingItem* self = + new( ELeave ) CMsgMailEditorPrioritySettingItem( + aIdentifier, aDocument ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(self); // self + return self; + } + + +CMsgMailEditorPrioritySettingItem::CMsgMailEditorPrioritySettingItem( + TInt aIdentifier, + CMsgMailEditorDocument& aDocument ): + CAknTextSettingItem( aIdentifier, iSettingValue ), + iDocument( aDocument ) + { + // iSettingValue is set later + } + +CMsgMailEditorPrioritySettingItem::~CMsgMailEditorPrioritySettingItem() + { + iSettingValue.Close(); + delete iPriorityArray; + } + +// ---------------------------------------------------------------------------- +// // From CAknTextSettingItem +// ---------------------------------------------------------------------------- +// +void CMsgMailEditorPrioritySettingItem::EditItemL( + TBool /* aCalledFromMenu */ ) + { + TPtrC settingName = SettingName(); + TInt currentSelection( 0 ); + NameArrayL( currentSelection ); + + CAknSettingPage* dlg = new( ELeave )CAknRadioButtonSettingPage( + &settingName, + SettingNumber(), + EEikCtTextButton, + SettingEditorResourceId(), + SettingPageResourceId(), + currentSelection, + iPriorityArray ); + SetSettingPage( dlg ); + SettingPage()->SetSettingPageObserver( this ); // not used + SettingPage()->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ); + + SaveSettingValueL( currentSelection ); + SetSettingValueL(); + LoadL(); // update setting value to listbox + UpdateListBoxTextL(); + SetSettingPage( 0 ); // it is deleted now + } + + +// ---------------------------------------------------------------------------- +// Create name array +// ---------------------------------------------------------------------------- +// +void CMsgMailEditorPrioritySettingItem::NameArrayL( + TInt& aSelected ) + { + LOG("CMsgMailEditorPrioritySettingItem::NameArrayL"); + + TInt itemCount(3); // CSI: 47 # 3 items + TMsvPriority priority = iDocument.CurrentEntry().Entry().Priority(); + aSelected = priority; + delete iPriorityArray; + iPriorityArray = NULL; + iPriorityArray = new(ELeave)CDesCArrayFlat( itemCount ); + + HBufC* highPriority = GetPriorityTextLC( EMsvHighPriority ); + iPriorityArray->AppendL( *highPriority ); + CleanupStack::PopAndDestroy( highPriority ); + + HBufC* normalPriority = GetPriorityTextLC( EMsvMediumPriority ); + iPriorityArray->AppendL( *normalPriority ); + CleanupStack::PopAndDestroy( normalPriority ); + + HBufC* lowPriority = GetPriorityTextLC( EMsvLowPriority ); + iPriorityArray->AppendL( *lowPriority ); + CleanupStack::PopAndDestroy( lowPriority ); + + ASSERT( iPriorityArray ); + } + +// ---------------------------------------------------------------------------- +// Save selected mbox id to settings +// ---------------------------------------------------------------------------- +// +void CMsgMailEditorPrioritySettingItem::SaveSettingValueL( + TInt aSelected ) + { + CMsvEntry& message = iDocument.CurrentEntry(); + TMsvEntry tentry = message.Entry(); + ASSERT( tentry.iType == KUidMsvMessageEntry ); + + TMsvPriority newValue( EMsvMediumPriority ); + switch ( aSelected ) + { + case 0: // high + { + newValue = EMsvHighPriority; + break; + } + case 1: // normal + { + newValue = EMsvMediumPriority; + break; + } + case 2: // CSI: 47 # low + { + newValue = EMsvLowPriority; + break; + } + default: + { + // unknown state + ASSERT(0); + } + } + + tentry.SetPriority( newValue ); + message.ChangeL( tentry ); + iDocument.SetChanged( ETrue ); + } + +// ---------------------------------------------------------------------------- +// Set current mailbox name to setting list +// ---------------------------------------------------------------------------- +// +void CMsgMailEditorPrioritySettingItem::SetSettingValueL() + { + ASSERT( iDocument.CurrentEntry().Entry().iType == KUidMsvMessageEntry ); + TMsvPriority priority = iDocument.CurrentEntry().Entry().Priority(); + + HBufC* priorityText = GetPriorityTextLC( priority ); + iSettingValue.Close(); + iSettingValue.CreateL( *priorityText ); + CleanupStack::PopAndDestroy( priorityText ); + } + +// ---------------------------------------------------------------------------- +// get localised text for certain priority +// ---------------------------------------------------------------------------- +// +HBufC* CMsgMailEditorPrioritySettingItem::GetPriorityTextLC( + TMsvPriority aPriority ) + { + TInt textResource(0); + switch ( aPriority ) + { + case EMsvHighPriority: + { + textResource = R_QTN_MAIL_SETTING_PRIORITY_HIGH; + break; + } + case EMsvMediumPriority: + { + textResource = R_QTN_MAIL_SETTING_PRIORITY_NORMAL; + break; + } + case EMsvLowPriority: + { + textResource = R_QTN_MAIL_SETTING_PRIORITY_LOW; + break; + } + default: + { + // unknown state + ASSERT(0); + } + } + return StringLoader::LoadLC( textResource ); + } + +// End of File