gssettingsuis/Gs/GSCallBarringPlugin/Src/GSInternetBarringView.cpp
branchRCL_3
changeset 54 7e0eff37aedb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gssettingsuis/Gs/GSCallBarringPlugin/Src/GSInternetBarringView.cpp	Wed Sep 01 12:20:44 2010 +0100
@@ -0,0 +1,313 @@
+/*
+* Copyright (c) 2005 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:  View for the Internet Barring folder
+*
+*/
+
+ 
+// INCLUDE FILES
+#include "CallBarringPlugin.hrh"    //for enumerations (e.g.TGSInternetBarringSetting)
+#include "GSInternetBarringView.h"//for CGSSettListInternetBarringView
+#include "GSInternetBarringContainer.h" //for CGSBaseContainer
+#include "LocalViewIds.h"         //for KSettListBarringViewId, KGSMainViewId
+#include "GsLogger.h"
+
+
+#include <e32base.h>
+#include <featmgr.h>
+#include <gscallbarringpluginrsc.rsg>      //for resource IDs
+#include <gscommon.hrh>
+#include <StringLoader.h>           //for StringLoader
+#include <aknradiobuttonsettingpage.h>
+#include <aknViewAppUi.h>
+#include <aknnotewrappers.h>
+#include <hlplch.h>                 // For HlpLauncher
+
+// CONSTANS
+const TInt KGSBarringGranularity = 2;
+
+// ========================= MEMBER FUNCTIONS ================================
+
+// ---------------------------------------------------------------------------
+// 
+// C++ constructor.
+// 
+// ---------------------------------------------------------------------------
+CGSSettListInternetBarringView::CGSSettListInternetBarringView()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// Symbian OS two-phased constructor (second phase)
+// 
+// ---------------------------------------------------------------------------
+void CGSSettListInternetBarringView::ConstructL()
+    {
+    BaseConstructL( R_GS_INTERNET_BARRING_VIEW );
+    }
+
+// ---------------------------------------------------------------------------
+// CGSSettListInternetBarringView::NewL()
+// Symbian OS two-phased constructor
+// 
+// ---------------------------------------------------------------------------
+CGSSettListInternetBarringView* CGSSettListInternetBarringView::NewL()
+    {
+    CGSSettListInternetBarringView* self = NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// Symbian OS two-phased constructor (first phase)
+// 
+// ---------------------------------------------------------------------------
+CGSSettListInternetBarringView* CGSSettListInternetBarringView::NewLC()
+    {
+    CGSSettListInternetBarringView* self = 
+        new ( ELeave ) CGSSettListInternetBarringView();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+ 
+// ---------------------------------------------------------------------------
+// 
+// C++ destructor
+// 
+// ---------------------------------------------------------------------------
+CGSSettListInternetBarringView::~CGSSettListInternetBarringView()
+    {
+    }
+ 
+// ---------------------------------------------------------------------------
+// 
+// Returns Id of the Barring view.
+// 
+// ---------------------------------------------------------------------------
+TUid CGSSettListInternetBarringView::Id() const
+    {
+    return KCallInternetBarringViewId;
+    }
+ 
+// ---------------------------------------------------------------------------
+// 
+// Handles other than list box events.
+// 
+// ---------------------------------------------------------------------------
+void CGSSettListInternetBarringView::HandleCommandL( TInt aCommand )
+    {
+    switch ( aCommand )
+        {
+       	case EGSMSKCmdAppChange:
+			HandleListBoxSelectionL();
+       		break;
+       	case EGSCmdAppChange:
+            ShowSettingPageL();
+            break;
+        case EAknSoftkeyBack:
+            iAppUi->ActivateLocalViewL( KCallMainBarringViewId );
+            break;
+        case EAknCmdHelp:
+            if( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+                {
+                HlpLauncher::LaunchHelpApplicationL(
+                    iEikonEnv->WsSession(), iAppUi->AppHelpContextL() );
+                }
+            break;
+        default:
+            iAppUi->HandleCommandL( aCommand );
+            break;
+        }
+    }
+  
+// ---------------------------------------------------------------------------
+// 
+// Activates view.
+// 
+// ---------------------------------------------------------------------------
+void CGSSettListInternetBarringView::DoActivateL( const TVwsViewId& aPrevViewId,
+                                          TUid aCustomMessageId,
+                                          const TDesC8& aCustomMessage )
+    {
+    __GSLOGSTRING("[GS]--> CGSSettListInternetBarringView::DoActivateL");
+    CGSLocalBaseView::DoActivateL( aPrevViewId, aCustomMessageId, 
+                                   aCustomMessage );
+
+    iContainer->iListBox->SetTopItemIndex( iTopItemIndex );
+
+    if ( iCurrentItem >= 0 && 
+         iCurrentItem < iContainer->iListBox->Model()->NumberOfItems() )
+        {
+        iContainer->iListBox->SetCurrentItemIndexAndDraw( iCurrentItem );
+        }
+    __GSLOGSTRING("[GS]<-- CGSSettListInternetBarringView::DoActivateL");
+    }
+ 
+// ---------------------------------------------------------------------------
+// 
+// Deactivates view.
+// 
+// ---------------------------------------------------------------------------
+void CGSSettListInternetBarringView::DoDeactivate()
+    {
+    if ( iContainer )
+        {
+        if ( iContainer->iListBox && iContainer->iListBox->View() )
+            {
+            iCurrentItem = iContainer->iListBox->CurrentItemIndex();
+            iTopItemIndex = iContainer->iListBox->TopItemIndex();
+            }
+        iAppUi->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+    }
+ 
+// ---------------------------------------------------------------------------
+// 
+// Before showing a options menu, delete options key specific settings if 
+// rocker key has been pressed.
+// ---------------------------------------------------------------------------
+//
+void CGSSettListInternetBarringView::DynInitMenuPaneL( TInt aResourceId, 
+                                              CEikMenuPane* aMenuPane )
+    {
+    // show or hide the 'help' menu item when supported
+    if( aResourceId == R_GS_MENU_ITEM_HELP )
+        {
+        User::LeaveIfNull( aMenuPane );
+            
+        if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+            {
+            aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse );
+            }
+        else
+            {
+            aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// Creates new iContainer.
+// 
+// ---------------------------------------------------------------------------
+void CGSSettListInternetBarringView::NewContainerL()
+    {
+    iContainer = new (ELeave) CGSSettListInternetBarringContainer;
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// Handles changing of barring password.
+// 
+// ---------------------------------------------------------------------------
+void CGSSettListInternetBarringView::HandleListBoxSelectionL()
+    {
+    CGSSettListInternetBarringContainer& container = 
+        *static_cast<CGSSettListInternetBarringContainer*>( iContainer );
+    
+    TInt value( KErrNone );
+    container.GetVoIPCallSettingValue( EGSVoIPBarring, value );
+    
+    if ( value == EGSCSCallBarringOff )
+        {
+        container.SetVoIPCallSettingValue( EGSVoIPBarring, EGSCSCallBarringOn );
+        }
+    else
+        {
+        container.SetVoIPCallSettingValue( EGSVoIPBarring, EGSCSCallBarringOff );
+        }
+
+    if ( iContainer->iListBox )
+        {
+        container.UpdateListBoxL();
+        }
+    
+    // Show SCCP note if needed. 
+    TInt status( KErrNone );
+    container.GetSCCPStatus( status );
+       
+    if ( value == EGSCSCallBarringOff && status == 1 )
+        {
+        HBufC* prompt = 
+            StringLoader::LoadLC( R_QTN_VOIP_SCCP_CALL_BARRING_NOTE );
+        CAknInformationNote* note = new(ELeave) CAknInformationNote( ETrue );
+        note->ExecuteLD( *prompt );
+        CleanupStack::PopAndDestroy( prompt ); 
+        }    
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// Shows setting page - for ON/OFF setting items
+// 
+// ---------------------------------------------------------------------------
+void CGSSettListInternetBarringView::ShowSettingPageL()
+    {
+    CGSSettListInternetBarringContainer& container = 
+        *static_cast<CGSSettListInternetBarringContainer*>( iContainer );
+    
+    CDesCArrayFlat* items = 
+          new ( ELeave ) CDesCArrayFlat( KGSBarringGranularity );
+    CleanupStack::PushL( items );
+    
+    AppendItemL( *items, R_INTERNET_BARRING_ON );
+    AppendItemL( *items, R_INTERNET_BARRING_OFF );
+    
+    TInt value( KErrNone );
+    container.GetVoIPCallSettingValue( EGSVoIPBarring, value );
+      
+    CAknRadioButtonSettingPage* dlg = new( ELeave ) 
+        CAknRadioButtonSettingPage( 
+        R_GS_INTERNET_BARRING_SETTING_PAGE,
+        value, items );
+     
+    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+        {
+        if ( value == EGSCSCallBarringOff )
+            {
+            container.SetVoIPCallSettingValue( 
+                EGSVoIPBarring, EGSCSCallBarringOff );
+            }
+        else
+            {
+            container.SetVoIPCallSettingValue( 
+                EGSVoIPBarring, EGSCSCallBarringOn );
+            }
+        }
+        
+    CleanupStack::PopAndDestroy( items );
+    
+    container.UpdateListBoxL();
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// Appends given item to given list
+// 
+// ---------------------------------------------------------------------------
+void CGSSettListInternetBarringView::AppendItemL( 
+    CDesCArrayFlat& aList, TInt aItem )
+    {
+    HBufC* string = StringLoader::LoadLC( aItem );
+    aList.AppendL( *string );
+    CleanupStack::PopAndDestroy( string );
+    }    
+        
+ // End of file