email/mail/EditorSrc/cmsgmailshedulingsetting.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/mail/EditorSrc/cmsgmailshedulingsetting.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,193 @@
+/*
+* 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:  Send sheduling setting item and setting page
+*
+*/
+
+
+#include "cmsgmailshedulingsetting.h"
+#include "MsgMailEditorDocument.h"
+#include "MailLog.h"
+#include <MsgMailEditor.rsg>
+#include <StringLoader.h>
+
+
+inline void CMsgMailEditorShedulingSettingItem::ConstructL()
+    {
+    SetSettingValueL();
+    }
+
+CMsgMailEditorShedulingSettingItem* 
+    CMsgMailEditorShedulingSettingItem::NewL( 
+    TInt aIdentifier, CMsgMailEditorDocument& aDocument )
+    {
+    CMsgMailEditorShedulingSettingItem* self =
+        new( ELeave ) CMsgMailEditorShedulingSettingItem( 
+        aIdentifier,  aDocument );
+    CleanupStack::PushL( self );
+	self->ConstructL();
+	CleanupStack::Pop(self); // self
+    return self;
+    }
+
+
+CMsgMailEditorShedulingSettingItem::CMsgMailEditorShedulingSettingItem(
+    TInt aIdentifier,
+    CMsgMailEditorDocument& aDocument ): 
+    CAknTextSettingItem( aIdentifier, iSettingValue ),  
+    iDocument( aDocument )
+    {
+    // iSettingValue is set later
+    }        
+
+CMsgMailEditorShedulingSettingItem::~CMsgMailEditorShedulingSettingItem()
+    {
+    iSettingValue.Close();
+    delete iShedulingItems;
+    }
+
+// ----------------------------------------------------------------------------
+//  // From CAknTextSettingItem
+// ----------------------------------------------------------------------------
+//        
+void CMsgMailEditorShedulingSettingItem::EditItemL( 
+    TBool aCalledFromMenu )
+    {
+    if ( aCalledFromMenu )
+        {
+        TPtrC settingName = SettingName();
+        TInt currentSelection( 0 );
+        NameArrayL( currentSelection );
+        
+        CAknSettingPage* dlg = new( ELeave )CAknRadioButtonSettingPage(        
+            &settingName, 
+            SettingNumber(), 
+            EEikCtTextButton,
+            SettingEditorResourceId(), 
+            SettingPageResourceId(), 
+            currentSelection, 
+            iShedulingItems );
+        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        
+        }
+    else
+        {
+        // change value
+        DoChangeValueL();
+        SetSettingValueL();
+        LoadL(); // update setting value to listbox
+        UpdateListBoxTextL();        
+        }
+    }
+
+// ----------------------------------------------------------------------------
+//  Create name array
+// ----------------------------------------------------------------------------
+//    
+void CMsgMailEditorShedulingSettingItem::NameArrayL(
+    TInt& aSelected )
+    {
+    LOG("CMsgMailEditorShedulingSettingItem::NameArrayL");
+    
+    delete iShedulingItems;
+    iShedulingItems = NULL;
+    iShedulingItems = new(ELeave)CDesCArrayFlat(2);			// CSI: 47 # For two texts.
+    
+    CCoeEnv* coeEnv = CCoeEnv::Static();
+    HBufC* text = StringLoader::LoadLC(R_TEXT_SHED_NOW, coeEnv);
+    iShedulingItems->AppendL(*text);
+    CleanupStack::PopAndDestroy(text); // text
+    text = StringLoader::LoadLC(R_TEXT_SHED_NEXT, coeEnv);
+    iShedulingItems->AppendL(*text);
+    CleanupStack::PopAndDestroy(text); // text
+
+    CMsgMailPreferences& prefs = iDocument.SendOptions();
+    
+    aSelected = ( prefs.MessageScheduling() == 
+        CMsgMailPreferences::EMsgMailSchedulingNow ) ? 0 : 1;        
+    }
+
+// ----------------------------------------------------------------------------
+//  Save to settings
+// ----------------------------------------------------------------------------
+//  
+void CMsgMailEditorShedulingSettingItem::SaveSettingValueL( TInt aSelected )
+    {
+    ASSERT( aSelected >= 0 && aSelected <= 1 );
+    
+    CMsgMailPreferences& prefs = iDocument.SendOptions();
+    if ( aSelected == 0 )
+        {
+        prefs.SetMessageScheduling(
+            CMsgMailPreferences::EMsgMailSchedulingNow);
+        }
+    else
+        {
+        prefs.SetMessageScheduling(
+            CMsgMailPreferences::EMsgMailSchedulingNextConn);
+        }
+    iDocument.SetChanged( ETrue );
+    }
+
+// ----------------------------------------------------------------------------
+//  Set current value to setting list
+// ----------------------------------------------------------------------------
+//  
+void CMsgMailEditorShedulingSettingItem::SetSettingValueL()
+    {
+	TInt stringResource(R_TEXT_SHED_NOW);
+	
+	CMsgMailPreferences& prefs = iDocument.SendOptions();
+    if( prefs.MessageScheduling() == 
+        CMsgMailPreferences::EMsgMailSchedulingNextConn )
+        {
+		stringResource = R_TEXT_SHED_NEXT;
+		}	
+	
+	HBufC* sheduling = StringLoader::LoadLC( stringResource );
+	iSettingValue.Close();
+    iSettingValue.CreateL( *sheduling );
+    CleanupStack::PopAndDestroy( sheduling );
+    }
+    
+//-----------------------------------------------------------------------------
+//  Swap betveen values
+//-----------------------------------------------------------------------------
+void CMsgMailEditorShedulingSettingItem::DoChangeValueL()
+    {
+    CMsgMailPreferences& prefs = iDocument.SendOptions();
+
+    if ( prefs.MessageScheduling() == 
+        CMsgMailPreferences::EMsgMailSchedulingNow )
+        {
+        prefs.SetMessageScheduling(
+            CMsgMailPreferences::EMsgMailSchedulingNextConn );
+        }
+    else
+        {
+        prefs.SetMessageScheduling(
+            CMsgMailPreferences::EMsgMailSchedulingNow );
+        }
+
+    iDocument.SetChanged(ETrue);
+    }    
+
+// End of File