wvuing/IMPSServiceSettingsUI/Src/CWVSettingsUISettingItemCreator.cpp
branchRCL_3
changeset 17 a941bc465d9f
parent 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/IMPSServiceSettingsUI/Src/CWVSettingsUISettingItemCreator.cpp	Wed Sep 01 12:31:13 2010 +0100
@@ -0,0 +1,296 @@
+/*
+* Copyright (c) 2003 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:  Setting item creator
+*
+*/
+
+
+// INCLUDE FILES
+#include "CWVSettingsUISettingItemCreator.h"
+#include "CWVSettingsUIDialogImp.h"
+#include "WVSettingsUIPanics.h"
+#include "CWVSettingsUIDefs.h"
+
+#include	<cwvsettingsUING.rsg>
+#include	<aknsettingitemlist.h>
+#include	<aknsettingpage.h>
+#include    <featmgr.h>
+#ifdef RD_MULTIPLE_DRIVE
+#include	<CAknMemorySelectionSettingItemMultiDrive.h>
+#endif
+
+#include 	"variantkeys.h"
+#include 	<centralrepository.h>
+#include 	<barsread.H>
+// CONSTANTS
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CWVSettingsUISettingItemCreator::CreateSettingItemListL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+CAknSettingItemArray* CWVSettingsUISettingItemCreator::CreateSettingItemListL( TBool aCASettings,
+                                                                               TDes& aServerInUse,
+                                                                               TInt& aImLoginType,
+#ifdef RD_MULTIPLE_DRIVE
+                                                                               TDes& aMemorySelectionType,
+#endif
+                                                                               TDes& aConnectionDaysIM,
+                                                                               TDes& aConnectionHoursIM )
+    {
+    // granularity = 6, since there can be 6 items, and we start the numbering from 1
+    CAknSettingItemArray* settingItemArray = settingItemArray =
+                                                 new ( ELeave ) CAknSettingItemArray( 7, EFalse, 1 );
+    CleanupStack::PushL( settingItemArray );
+
+    // count for cleanupstack pop
+    TInt count( 0 );
+
+    // add setting items
+
+    if ( aCASettings )
+        {
+
+        settingItemArray->AppendL( CWVSettingsUISettingItemCreator::CreateSettingItemLC(
+                                       CWVSettingsUIDialogImp::EWVSettingsCASettings,
+                                       R_WVSETTINGSVIEW_SETTING_PREFERENCES_TITLE,
+                                       0,
+                                       0,
+                                       aServerInUse,
+                                       aImLoginType,
+#ifdef RD_MULTIPLE_DRIVE
+                                       aMemorySelectionType,
+#endif
+                                       aConnectionDaysIM,
+                                       aConnectionHoursIM ) );
+        count++;
+        }
+
+    // edit servers
+    settingItemArray->AppendL( CWVSettingsUISettingItemCreator::CreateSettingItemLC(
+                                   CWVSettingsUIDialogImp::EWVSettingsServers,
+                                   R_WVSETTINGSVIEW_SETTING_EDITSERVER_TITLE,
+                                   0,
+                                   0,
+                                   aServerInUse,
+                                   aImLoginType,
+#ifdef RD_MULTIPLE_DRIVE
+                                   aMemorySelectionType,
+#endif
+                                   aConnectionDaysIM,
+                                   aConnectionHoursIM ) );
+    count++;
+    // server in use
+    settingItemArray->AppendL( CWVSettingsUISettingItemCreator::CreateSettingItemLC(
+                                   CWVSettingsUIDialogImp::EWVSettingsServerInUse,
+                                   R_WVSETTINGSVIEW_SETTING_SERVERINUSE_TITLE,
+                                   0,
+                                   0,
+                                   aServerInUse,
+                                   aImLoginType,
+#ifdef RD_MULTIPLE_DRIVE
+                                   aMemorySelectionType,
+#endif
+                                   aConnectionDaysIM,
+                                   aConnectionHoursIM ) );
+    count++;
+
+    settingItemArray->AppendL( CWVSettingsUISettingItemCreator::CreateSettingItemLC(
+                                   CWVSettingsUIDialogImp::EWVSettingsIMLoginType,
+                                   R_WVSETTINGSVIEW_SETTING_IM_LOGINTYPE_TITLE,
+                                   R_WVSETTINGSVIEW_SET_LOGIN,
+                                   R_WVSETTINGSVIEW_SET_IM_LOGIN_TEXTS,
+                                   aServerInUse,
+                                   aImLoginType,
+#ifdef RD_MULTIPLE_DRIVE
+                                   aMemorySelectionType,
+#endif
+                                   aConnectionDaysIM,
+                                   aConnectionHoursIM ) );
+    count++;
+
+#ifdef RD_MULTIPLE_DRIVE
+    // Memory Selection
+    settingItemArray->AppendL( CWVSettingsUISettingItemCreator::CreateSettingItemLC(
+                                   CWVSettingsUIDialogImp::EWVSettingsSaveChatsTo,
+                                   R_WVSETTINGSVIEW_SETTING_MEMORY_SELECTION_TYPE,
+                                   0,
+                                   0,
+                                   aServerInUse,
+                                   aImLoginType,
+                                   aMemorySelectionType,
+                                   aConnectionDaysIM,
+                                   aConnectionHoursIM ) );
+    count++;
+
+#endif
+
+    if ( ( aImLoginType == EWVSettingsChatLoginAutoAlways ) ||
+         ( aImLoginType == EWVSettingsChatLoginAutoInHomeNW ) )
+        {
+        // PEC login type automatic, we have to show the scheduling setting items also
+        settingItemArray->AppendL( CWVSettingsUISettingItemCreator::CreateSettingItemLC(
+                                       CWVSettingsUIDialogImp::EWVSettingsIMConnDays,
+                                       R_WVSETTINGSVIEW_SETTING_PEC_CONN_ALLDAYS_TITLE,
+                                       0,
+                                       0,
+                                       aServerInUse,
+                                       aImLoginType,
+#ifdef RD_MULTIPLE_DRIVE
+                                       aMemorySelectionType,
+#endif
+                                       aConnectionDaysIM,
+                                       aConnectionHoursIM ) );
+        count++;
+
+        settingItemArray->AppendL( CWVSettingsUISettingItemCreator::CreateSettingItemLC(
+                                       CWVSettingsUIDialogImp::EWVSettingsIMConnHours,
+                                       R_WVSETTINGSVIEW_SETTING_PEC_CONN_ALLHOURS_TITLE,
+                                       0,
+                                       0,
+                                       aServerInUse,
+                                       aImLoginType,
+#ifdef RD_MULTIPLE_DRIVE
+                                       aMemorySelectionType,
+#endif
+                                       aConnectionDaysIM,
+                                       aConnectionHoursIM ) );
+        count++;
+        }
+
+    CleanupStack::Pop( count ); // setting items
+    CleanupStack::Pop( settingItemArray );
+    return settingItemArray;
+    }
+
+// ---------------------------------------------------------
+// CWVSettingsUISettingItemCreator::CreateSettingItemLC()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+CAknSettingItem* CWVSettingsUISettingItemCreator::CreateSettingItemLC( TInt aIndex,
+                                                                       TInt aResourceId,
+                                                                       TInt aSettingPageResourceId,
+                                                                       TInt aAssosiatedResource,
+                                                                       TDes& aServerInUse,
+                                                                       TInt& aImLoginType,
+#ifdef RD_MULTIPLE_DRIVE
+                                                                       TDes& aMemorySelectionType,
+#endif
+                                                                       TDes& aConnectionDaysIM,
+                                                                       TDes& aConnectionHoursIM )
+    {
+    CAknSettingItem* settingItem = NULL;
+    HBufC* itemTitle = NULL;
+
+    CEikonEnv* eikonEnv = CEikonEnv::Static();
+    switch ( aIndex )
+        {
+        case CWVSettingsUIDialogImp::EWVSettingsCASettings:
+            {
+            settingItem = new ( ELeave ) CAknBigSettingItemBase( 0 );
+            CleanupStack::PushL( settingItem );
+            itemTitle = eikonEnv->AllocReadResourceLC( aResourceId );
+            settingItem->ConstructL( EFalse, aIndex, *itemTitle, NULL, NULL, NULL );
+            break;
+            }
+
+        case CWVSettingsUIDialogImp::EWVSettingsServers:
+            {
+            settingItem = new ( ELeave ) CAknBigSettingItemBase( 0 );
+            CleanupStack::PushL( settingItem );
+            itemTitle = eikonEnv->AllocReadResourceLC( aResourceId );
+            settingItem->ConstructL( EFalse, aIndex, *itemTitle, NULL, NULL, NULL );
+            break;
+            }
+        case CWVSettingsUIDialogImp::EWVSettingsServerInUse:
+            {
+            settingItem = new ( ELeave ) CAknTextSettingItem( 0,  aServerInUse );
+            CleanupStack::PushL( settingItem );
+            itemTitle = eikonEnv->AllocReadResourceLC( aResourceId );
+            settingItem->SetEmptyItemTextL( KEmptyDesC );
+            settingItem->ConstructL( EFalse, aIndex, *itemTitle, NULL, NULL, EEikCtEdwin );
+            break;
+            }
+        case CWVSettingsUIDialogImp::EWVSettingsIMLoginType:
+            {
+            settingItem = new ( ELeave ) CAknEnumeratedTextPopupSettingItem( 0,  aImLoginType );
+            CleanupStack::PushL( settingItem );
+            itemTitle = eikonEnv->AllocReadResourceLC( aResourceId );
+            settingItem->ConstructL( EFalse, aIndex, *itemTitle,
+                                     NULL, aSettingPageResourceId,
+                                     EAknCtPopupField, NULL, aAssosiatedResource );
+            break;
+            }
+
+#ifdef RD_MULTIPLE_DRIVE
+        case CWVSettingsUIDialogImp::EWVSettingsSaveChatsTo:
+            {
+            settingItem = new ( ELeave ) CAknTextSettingItem( 0,  aMemorySelectionType );
+            CleanupStack::PushL( settingItem );
+            itemTitle = eikonEnv->AllocReadResourceLC( aResourceId );
+            settingItem->ConstructL( EFalse, aIndex, *itemTitle, NULL, NULL, EEikCtEdwin );
+            break;
+            }
+
+#endif
+
+        case CWVSettingsUIDialogImp::EWVSettingsIMConnDays:
+            {
+            settingItem = new ( ELeave ) CAknTextSettingItem( 0, aConnectionDaysIM );
+            CleanupStack::PushL( settingItem );
+            itemTitle = eikonEnv->AllocReadResourceLC( aResourceId );
+            settingItem->SetEmptyItemTextL( KEmptyDesC );
+            settingItem->ConstructL( EFalse, aIndex, *itemTitle, NULL, NULL, EEikCtEdwin );
+            break;
+            }
+
+
+        case CWVSettingsUIDialogImp::EWVSettingsIMConnHours:
+            {
+            settingItem = new ( ELeave ) CAknTextSettingItem( 0,  aConnectionHoursIM );
+            CleanupStack::PushL( settingItem );
+            itemTitle = eikonEnv->AllocReadResourceLC( aResourceId );
+            settingItem->SetEmptyItemTextL( KEmptyDesC );
+            settingItem->ConstructL( EFalse, aIndex, *itemTitle, NULL, NULL, EEikCtEdwin );
+            break;
+            }
+
+        default:
+            {
+            break;
+            }
+        }
+    CleanupStack::PopAndDestroy( itemTitle );
+
+    return settingItem;
+    }
+
+// ---------------------------------------------------------
+// CWVSettingsUISettingItemCreator::SchdeulingSupported()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool CWVSettingsUISettingItemCreator::SchedulingSupported()
+    {
+    return ETrue;
+    }
+
+//  End of File