mediasettings/mediasettingsapp/src/MPSettingsProxySettingItemList.cpp
changeset 0 96612d01cf9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mediasettings/mediasettingsapp/src/MPSettingsProxySettingItemList.cpp	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,243 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*
+*/
+
+
+// Version : %version: 3 %
+
+
+
+
+// INCLUDE FILES
+#include    <eikappui.h>
+#include    <akntextsettingpage.h>
+#include    <barsread.h>
+
+#include    "mediasettings.hrh"
+#include    "MPSettingsProxySettingItemList.h"
+#include    "MPSettingsModelForROP.h"
+#include	"mpxlog.h"
+
+// CONSTANTS
+const   TInt    KMPSettProxyHostListItemId  =   1;
+const   TInt    KMPSettProxyPortListItemId  =   2;
+const   TInt    KMPSettProxyHostMaxLength = 1000;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMPSettingsProxySettingItemList::CMPSettingsProxySettingItemList
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CMPSettingsProxySettingItemList::CMPSettingsProxySettingItemList(CMPSettingsModelForROP* aModel) 
+	: iModel( aModel), iProxyHostPtr(NULL, 0)
+    {
+    MPX_DEBUG1(_L("#MS# CMPSettingsProxySettingItemList::CMPSettingsProxySettingItemList()"));
+    }
+
+// -----------------------------------------------------------------------------
+// CMPSettingsProxySettingItemList::ConstructFromResourceL
+// -----------------------------------------------------------------------------
+//
+void CMPSettingsProxySettingItemList::ConstructFromResourceL(TInt aResourceId) 
+    {
+    MPX_DEBUG2(_L("#MS# CMPSettingsProxySettingItemList::ConstructFromResourceL(0x%X)"),aResourceId);
+	TResourceReader reader;
+	iCoeEnv->CreateResourceReaderLC(reader, aResourceId);
+	ConstructFromResourceL(reader);
+    CleanupStack::PopAndDestroy(); // reader
+    }
+
+// -----------------------------------------------------------------------------
+// CMPSettingsProxySettingItemList::ConstructFromResourceL
+// -----------------------------------------------------------------------------
+//
+void CMPSettingsProxySettingItemList::ConstructFromResourceL(TResourceReader& aReader) 
+    {
+    MPX_DEBUG1(_L("#MS# CMPSettingsProxySettingItemList::ConstructFromResourceL()"));
+    LoadAllL();
+    CAknSettingItemList::ConstructFromResourceL(aReader);
+    SetItemVisibilityL();
+    }
+  
+// -----------------------------------------------------------------------------
+// CMPSettingsProxySettingItemList::~CMPSettingsProxySettingItemList
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CMPSettingsProxySettingItemList::~CMPSettingsProxySettingItemList()
+    {
+    MPX_DEBUG1(_L("#MS# CMPSettingsProxySettingItemList::~CMPSettingsProxySettingItemList()"));
+	if (iProxyHost) 
+		{
+		delete iProxyHost;
+		}
+    }
+
+// -----------------------------------------------------------------------------
+// CMPSettingsProxySettingItemList::EditItemL
+// -----------------------------------------------------------------------------
+//
+void CMPSettingsProxySettingItemList::EditItemL(TInt aIndex, TBool aCalledFromMenu)
+    {
+    MPX_DEBUG3(_L("#MS# CMPSettingsProxySettingItemList::EditItemL(%d,%d)"),aIndex,aCalledFromMenu);
+    CAknSettingItem* settingItem = SettingItemArray()->At(aIndex);
+    TInt identifier = settingItem->Identifier();
+
+    // Load current value from settings model
+//    LoadSettingL(identifier);
+//    settingItem->LoadL();
+
+    // Call base call's method
+    CAknSettingItemList::EditItemL(aIndex, aCalledFromMenu);
+
+    // Store setting value to settings model
+    settingItem->StoreL();   
+    StoreSettingL(identifier);
+
+    // Hide/unhide Proxy port & Proxy host settings according to Proxy mode.
+    if (identifier == EMPSettProxyModeSettingId)
+        {
+        SetItemVisibilityL();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMPSettingsProxySettingItemList::CreateSettingItemL
+// -----------------------------------------------------------------------------
+//
+CAknSettingItem* CMPSettingsProxySettingItemList::CreateSettingItemL(TInt aSettingId)
+    {
+    MPX_DEBUG2(_L("#MS# CMPSettingsProxySettingItemList::CreateSettingItemL(%d)"),aSettingId);
+    __ASSERT_DEBUG(iProxyHost, User::Leave(KErrAbort));
+
+    CAknSettingItem* settingItem  = NULL;
+
+    switch (aSettingId)
+        {
+        case EMPSettProxyModeSettingId:
+            settingItem = new(ELeave) CAknBinaryPopupSettingItem(aSettingId, iProxyMode);
+            break;
+        case EMPSettProxyHostSettingId:
+            {
+            settingItem = new(ELeave) CAknTextSettingItem(aSettingId, iProxyHostPtr);
+            settingItem->SetSettingPageFlags(CAknTextSettingPage::EZeroLengthAllowed);
+            break;
+            }
+        case EMPSettProxyPortSettingId:
+            settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aSettingId, iProxyPort);
+            break;            
+        default:
+            break;
+        }
+
+    return settingItem;   
+    }
+
+// -----------------------------------------------------------------------------
+// CMPSettingsProxySettingItemList::SetItemVisibilityL
+// -----------------------------------------------------------------------------
+//
+void CMPSettingsProxySettingItemList::SetItemVisibilityL()
+    {
+    MPX_DEBUG2(_L("#MS# CMPSettingsProxySettingItemList::SetItemVisibilityL() iProxyMode(%d)"),iProxyMode);
+    if (iProxyMode)
+        {
+        SettingItemArray()->At(KMPSettProxyHostListItemId)->SetHidden(EFalse);
+        SettingItemArray()->At(KMPSettProxyPortListItemId)->SetHidden(EFalse);
+        }
+    else
+       {
+       SettingItemArray()->At(KMPSettProxyHostListItemId)->SetHidden(ETrue);
+       SettingItemArray()->At(KMPSettProxyPortListItemId)->SetHidden(ETrue);
+       }
+
+    HandleChangeInItemArrayOrVisibilityL();
+    }
+
+// -----------------------------------------------------------------------------
+// CMPSettingsProxySettingItemList::LoadAllL
+// -----------------------------------------------------------------------------
+//
+void CMPSettingsProxySettingItemList::LoadAllL()
+    {
+    MPX_DEBUG1(_L("#MS# CMPSettingsProxySettingItemList::LoadAllL()"));
+    iModel->LoadSettingsL(EConfigUser);
+    LoadSettingL(EMPSettProxyModeSettingId);
+    LoadSettingL(EMPSettProxyHostSettingId);
+    LoadSettingL(EMPSettProxyPortSettingId);
+    }
+
+// -----------------------------------------------------------------------------
+// CMPSettingsProxySettingItemList::LoadSettingL
+// -----------------------------------------------------------------------------
+//
+void CMPSettingsProxySettingItemList::LoadSettingL(TInt aSettingId)
+    {
+    MPX_DEBUG2(_L("#MS# CMPSettingsProxySettingItemList::LoadSettingL(%d)"),aSettingId);
+    switch (aSettingId)
+        {
+        case EMPSettProxyModeSettingId:
+            iModel->GetProxyMode(iProxyMode);
+            break;
+        case EMPSettProxyHostSettingId:
+            {
+            if (!iProxyHost)
+                {
+                iProxyHost = HBufC::NewL(KMPSettProxyHostMaxLength);
+                iProxyHostPtr.Set(iProxyHost->Des());
+                }
+
+            iModel->GetProxyHostName(iProxyHostPtr);
+            break;
+            }
+        case EMPSettProxyPortSettingId:
+            iModel->GetProxyPort(iProxyPort);
+            break;
+        default:
+            break;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMPSettingsProxySettingItemList::StoreSettingL
+// -----------------------------------------------------------------------------
+//
+void CMPSettingsProxySettingItemList::StoreSettingL(TInt aSettingId)
+    {
+    MPX_DEBUG2(_L("#MS# CMPSettingsProxySettingItemList::StoreSettingL(%d)"),aSettingId);
+    switch (aSettingId)
+        {
+        case EMPSettProxyModeSettingId:
+            iModel->SetProxyMode(iProxyMode);
+            break;
+        case EMPSettProxyHostSettingId:
+            iModel->SetProxyHostNameL(*iProxyHost);
+            break;
+        case EMPSettProxyPortSettingId:
+            iModel->SetProxyPort(iProxyPort);
+            break;
+        default:
+            break;
+        }
+
+    iModel->StoreSettingsL();
+    }
+
+
+//  End of File