email/mail/EditorSrc/cmsgmailprioritysetting.cpp
branchRCL_3
changeset 27 7fdbb852d323
parent 0 72b543305e3a
--- /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 <MsgMailEditor.rsg>
+#include <StringLoader.h>
+
+
+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