browserui/browser/SettingsSrc/SettingsView.cpp
changeset 0 84ad3b177aa3
child 10 57d5b8e231c4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/SettingsSrc/SettingsView.cpp	Mon Mar 30 12:49:49 2009 +0300
@@ -0,0 +1,304 @@
+/*
+* 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: 
+*     View of the information about the active settings
+*     
+*
+*/
+
+
+// INCLUDE FILES
+
+#include <AKNLISTS.H>
+#include <CALSLBS.H>
+#include <AKNVIEWAPPUI.H>
+#include <BrowserNG.rsg>
+#include <EikMenuP.H>
+
+#include "BrowserAppUi.h"
+#include "BrowserPreferences.h"
+#include "BrowserDialogs.h"
+#include "SettingsView.h"
+#include "SettingsContainer.h"
+#include "CommonConstants.h"
+
+#include <eikapp.h>
+// CONSTS
+
+// ========================= MEMBER FUNCTIONS ================================
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::ConstructL
+// ---------------------------------------------------------
+//
+void CBrowserSettingsView::ConstructL()
+	{
+	BaseConstructL( R_BROWSER_SETTINGS_SETTINGS_VIEW );
+	}
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::NewLC
+// ---------------------------------------------------------
+//
+CBrowserSettingsView* CBrowserSettingsView::NewLC( MApiProvider& aApiProvider )
+    {
+	CBrowserSettingsView* result;
+	result = new( ELeave ) CBrowserSettingsView( aApiProvider );
+	CleanupStack::PushL( result );
+	result->ConstructL();
+	return result;
+	}
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::NewL
+// ---------------------------------------------------------
+//
+CBrowserSettingsView* CBrowserSettingsView::NewL( MApiProvider& aApiProvider )
+	{
+	CBrowserSettingsView* result;
+	result = CBrowserSettingsView::NewLC( aApiProvider );
+	CleanupStack::Pop();
+	return result;
+	}
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::CBrowserSettingsView
+// ---------------------------------------------------------
+//
+CBrowserSettingsView::CBrowserSettingsView( MApiProvider& aApiProvider )
+: CBrowserViewBase( aApiProvider )
+	{
+	}
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::~CBrowserSettingsView
+// ---------------------------------------------------------
+//
+CBrowserSettingsView::~CBrowserSettingsView()
+	{
+	delete iContainer;
+	}
+
+// ---------------------------------------------------------------------------
+// CBrowserSettingsView::CommandSetResourceIdL
+// ---------------------------------------------------------------------------
+TInt CBrowserSettingsView::CommandSetResourceIdL()
+    {
+    // It is never called, but this function have to be implemented
+    return KWmlEmptyResourceId;
+    }
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::HandleCommsModelChangeL
+// ---------------------------------------------------------
+//
+void CBrowserSettingsView::HandleCommsModelChangeL()
+	{
+	MPreferences& preferences = ApiProvider().Preferences();
+    TUint defaultAp = preferences.DefaultAccessPoint();
+
+	// re-check default access point in case it was deleted.
+	preferences.SetDefaultAccessPointL(defaultAp);
+	
+	if ( iContainer )
+		{
+		iContainer->DisplayCorrectSettingCategoryListL();
+		}
+	}
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::HandleCommandL
+// ---------------------------------------------------------
+//
+void CBrowserSettingsView::HandleCommandL( TInt aCommandId )
+    {
+    switch ( aCommandId )
+        {
+        case EWmlCmdSettingsOpen:
+            {
+            UpdateCbaL(R_BROWSER_SETTINGS_CBA_OPTIONS_BACK_CHANGE);
+            iContainer->DisplayCorrectSettingCategoryListL();
+            break;
+            }
+        case EWmlCmdSettingsChange:
+            {
+            UpdateCbaL(R_BROWSER_SETTINGS_CBA_OPTIONS_BACK_CHANGE);
+            iContainer->ChangeItemL( ETrue );
+            break;
+            }            
+        case EAknSoftkeyBack:
+            {
+            if ( iContainer->SettingsError() )
+                {
+                TBrowserDialogs::ErrorNoteL( R_BROWSER_SETTING_TOOLBAR_SAVE_DIALOG );
+                break;
+                }
+                
+            UpdateCbaL(R_BROWSER_SETTINGS_CBA_OPTIONS_BACK_OPEN);
+
+            // Close the settings
+            if ( iContainer->CloseSettingsListL() )
+                {
+                if ( iLastViewId != KNullViewId )
+                    {
+                    ActivateViewL( iLastViewId );
+                    }
+                }
+            break;
+            }
+        case EWmlNoCmd:
+            {
+            // Fake MSK command for settings -- update cba to label MSK as Change
+            UpdateCbaL(R_BROWSER_SETTINGS_CBA_OPTIONS_BACK_CHANGE);
+            break;
+            }    
+            
+    	case EWmlCmdUserExit:
+	    	{
+	    	if ( iContainer->SettingsError() )
+                {
+                TBrowserDialogs::ErrorNoteL( R_BROWSER_SETTING_TOOLBAR_SAVE_DIALOG );
+                break;
+                }
+            
+            // Save the settings
+            iContainer->SaveChangesL();
+	    	}
+	    	// intentional fall through to default case below.
+
+        default:
+            {
+            AppUi()->HandleCommandL( aCommandId );
+            break;
+            }
+        }
+    }
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::Id
+// ---------------------------------------------------------
+//
+TUid CBrowserSettingsView::Id() const
+	{
+	return KUidBrowserSettingsViewId;
+	}
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::DoActivateL
+// ---------------------------------------------------------
+//
+void CBrowserSettingsView::DoActivateL( const TVwsViewId& aPrevViewId,
+                                        TUid aCustomMessageId,
+                                        const TDesC8& /*aCustomMessage*/ )
+	{
+  	StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL );
+  	StatusPane()->MakeVisible( ETrue );
+  		
+	if (aPrevViewId.iAppUid == AppUi()->Application()->AppDllUid())
+	    { // store this only if our own...
+    	    iLastViewId = aPrevViewId;    
+	    }
+	else 
+	    {
+	    iLastViewId = TVwsViewId(AppUi()->Application()->AppDllUid(),  ApiProvider().LastActiveViewId());  
+	    }    
+
+    ApiProvider().SetLastActiveViewId( Id() );
+
+	// restoring container
+	iContainer = CSettingsContainer::NewL
+        ( ClientRect(), ApiProvider(), *this );
+        
+
+	AppUi()->AddToViewStackL( *this, iContainer );
+    ApiProvider().CommsModel().AddObserverL( *this );
+    
+    if (iContainer && ( aCustomMessageId == KUidSettingsGotoToolbarGroup ) )
+        {
+        iContainer->DisplayToolbarSettingsL();
+        UpdateCbaL(R_BROWSER_SETTINGS_CBA_OPTIONS_BACK_CHANGE);
+        }
+    else if (iContainer && ( aCustomMessageId == KUidSettingsGotoShortcutsGroup ) )
+        {
+        iContainer->DisplayShortcutsSettingsL();
+        UpdateCbaL(R_BROWSER_SETTINGS_CBA_OPTIONS_BACK_CHANGE);
+        }
+    else if (iContainer)
+        {
+        UpdateCbaL(R_BROWSER_SETTINGS_CBA_OPTIONS_BACK_OPEN);
+        }
+	}
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::DoDeactivate
+// ---------------------------------------------------------
+//
+void CBrowserSettingsView::DoDeactivate()
+	{
+	if ( !ApiProvider().ExitInProgress() )
+        {
+        ApiProvider().CommsModel().RemoveObserver( *this );
+        }
+    // removing container
+    AppUi()->RemoveFromViewStack( *this, iContainer );
+	delete iContainer;
+	iContainer = NULL;
+	}
+
+// ---------------------------------------------------------
+// CBrowserSettingsView::HandleClientRectChange
+// ---------------------------------------------------------
+//
+void CBrowserSettingsView::HandleClientRectChange()
+	{
+	if( iContainer )
+	    {
+        iContainer->SetRect( ClientRect() );
+        }
+	}
+
+// ---------------------------------------------------------------------------
+// CBrowserSettingsView::DynInitMenuPaneL
+// ---------------------------------------------------------------------------
+void CBrowserSettingsView::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if ( aResourceId == R_BROWSER_SETTINGS_SETTINGS_MENU )    
+        {
+        // Show the appropriate menu items, depending on whether
+        // we are in the main setting list, or sub category e.g. Page
+        if ( iContainer->IsSettingModifiable() )
+            {
+            aMenuPane->SetItemDimmed( EWmlCmdSettingsOpen, ETrue );
+            }
+        else
+            {
+            aMenuPane->SetItemDimmed( EWmlCmdSettingsChange, ETrue );
+            }
+
+        }
+        
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserSettingsView::UpdateCba()
+// ---------------------------------------------------------------------------
+void CBrowserSettingsView::UpdateCbaL(TInt aCommandSet)
+    {
+    if (Cba())
+        {
+        Cba()->SetCommandSetL(aCommandSet);
+        Cba()->DrawDeferred();
+        }
+    }
+// End of File