mediasettings/mpsettbase/src/MPSettingsBaseView.cpp
changeset 0 96612d01cf9f
child 1 6711b85517b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mediasettings/mpsettbase/src/MPSettingsBaseView.cpp	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,228 @@
+/*
+* 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:   Base class for MediaSettings views.*
+*/
+
+
+// Version : %version: 4 %
+
+
+
+
+// INCLUDE FILES
+#include    <aknViewAppUi.h>
+#include    <akntitle.h>
+#include    <barsread.h>
+#include    <aknnavi.h>
+#include    <aknnavide.h>
+#include    <featmgr.h>
+#include    <eikmenup.h>
+#include    <MediaSettings.rsg>
+#include    <StringLoader.h> 
+#include    "mediasettings.hrh"
+#include    "MPSettingsAppUi.h"
+#include    "MPSettingsBaseView.h"
+#include    "MPSettingsBaseContainer.h"
+#include    "MPSettingsNaviPaneController.h"
+#include    "MPSettingsConstants.h"
+#include    "mpxlog.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMPSettingsBaseView::CMPSettingsBaseView
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMPSettingsBaseView::CMPSettingsBaseView()
+    {
+    MPX_DEBUG1(_L("#MS# CMPSettingsBaseView::CMPSettingsBaseView()"));
+    iNaviCntrl = static_cast<CMPSettingsAppUi*>(AppUi());
+    }
+
+// -----------------------------------------------------------------------------
+// CMPSettingsBaseView::~CMPSettingsBaseView
+// Destructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMPSettingsBaseView::~CMPSettingsBaseView()
+    {
+        MPX_DEBUG1(_L("#MS# CMPSettingsBaseView::~CMPSettingsBaseView()"));
+        if (iContainer)
+        {
+        AppUi()->RemoveFromStack(iContainer);
+        delete iContainer;
+        }
+
+        if (iNaviPaneContext && iNaviPaneContext != iNaviCntrl->MPTabGroup())
+        {
+        delete iNaviPaneContext;
+        }   
+    }
+
+// ---------------------------------------------------------
+// CMPSettingsBaseView::HandleClientRectChange
+// ---------------------------------------------------------
+//
+EXPORT_C void CMPSettingsBaseView::HandleClientRectChange()
+    {
+        MPX_DEBUG1(_L("#MS# CMPSettingsBaseView::HandleClientRectChange()"));
+        if (iContainer)
+        {
+        iContainer->SetRect(ClientRect());
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CMPSettingsBaseView::HandleClientRectChange
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CMPSettingsBaseView::SetCurrentItem(TInt aIndex)
+    {
+        MPX_DEBUG2(_L("#MS# CMPSettingsBaseView::SetCurrentItem(%d)"),aIndex);
+        iCurrentItem = aIndex;
+    }
+
+// ---------------------------------------------------------
+// CMPSettingsBaseView::DoActivateL
+// ---------------------------------------------------------
+//
+EXPORT_C void CMPSettingsBaseView::DoActivateL(
+   const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
+   const TDesC8& /*aCustomMessage*/)
+    {
+        MPX_DEBUG1(_L("#MS# CMPSettingsBaseView::DoActivateL()"));
+        // Set correct navi pane
+        SetNaviPaneL();
+
+        // Create iContainer if one does not exist
+        if (!iContainer)
+        {
+            iContainer = NewContainerL();
+
+            __ASSERT_DEBUG(iContainer, User::Panic(_L("DoActivateL"), EMPViewPanicNullPtr));
+
+            iContainer->SetMopParent(this);
+
+            // Construction of component control could fail => delete iContainer in order 
+            // to quarantee that it is constructed again the next time it is used.
+            TRAPD(error, iContainer->ConstructL(ClientRect()));
+            if (error)
+                {
+                delete iContainer;
+                iContainer = NULL;
+                User::Leave(error);
+                }
+
+            AppUi()->AddToStackL(*this, iContainer);
+
+            DynInitContainerL();
+        } 
+   }
+
+// ---------------------------------------------------------
+// CMPSettingsBaseView::HandleCommandL
+// ---------------------------------------------------------
+//
+EXPORT_C void CMPSettingsBaseView::DoDeactivate()
+    {
+        MPX_DEBUG1(_L("#MS# CMPSettingsBaseView::DoDeactivate()"));
+        if (iContainer)
+        {
+            CEikTextListBox* listbox = iContainer->ListBox();
+            if (listbox)
+                {
+                iCurrentItem = listbox->CurrentItemIndex();
+                iTopItemIndex = listbox->TopItemIndex();
+                }
+
+            AppUi()->RemoveFromStack(iContainer);
+            delete iContainer;
+            iContainer = NULL;
+        }    
+    }
+
+// ---------------------------------------------------------------------------
+// CMPSettingsBaseView::DynInitMenuPaneL
+// Before showing a options menu
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CMPSettingsBaseView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+    {
+        MPX_DEBUG2(_L("#MS# CMPSettingsBaseView::DynInitMenuPaneL(0x%X)"),aResourceId);
+        if (aResourceId == R_MPSETT_APP_MENU)
+        {
+            // Help should be displayed only if the feature is supported according
+            // to Feature Manager
+            if (!FeatureManager::FeatureSupported(KFeatureIdHelp))
+                {
+                aMenuPane->SetItemDimmed(EMPSettCmdHelp, ETrue);
+                }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CMPSettingsBaseView::SetNaviPaneL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CMPSettingsBaseView::SetNaviPaneL()
+    {
+        MPX_DEBUG1(_L("#MS# CMPSettingsBaseView::SetNaviPaneL()"));
+        if (iNaviPaneContext)
+        {
+            iNaviCntrl->NaviContainer()->PushL(*iNaviPaneContext);
+            if (iNaviPaneContext == iNaviCntrl->MPTabGroup())
+                {
+                iNaviCntrl->UpdateTabIndex();
+                }
+        }
+        else 
+        {
+            iNaviCntrl->NaviContainer()->PushDefaultL();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CMPSettingsBaseView::DynInitContainerL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CMPSettingsBaseView::DynInitContainerL()
+    {
+    MPX_DEBUG1(_L("#MS# CMPSettingsBaseView::DynInitContainerL()"));
+    // Do nothing.
+    }
+
+// ---------------------------------------------------------------------------
+// CMPSettingsBaseView::SetMiddleSoftKeyLabelL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CMPSettingsBaseView::SetMiddleSoftKeyLabelL( const TInt aResourceId, const TInt aCommandId )
+    {
+    MPX_DEBUG1(_L("#MS# CMPSettingsBaseView::SetMiddleSoftKeyLabelL()"));
+    CEikButtonGroupContainer* cbaGroup = Cba();
+    if ( cbaGroup )
+        {
+        HBufC* middleSKText = StringLoader::LoadLC( aResourceId );
+        TPtr mskPtr = middleSKText->Des();
+        MPX_DEBUG2(_L("#MS# CMPSettingsBaseView::SetMiddleSoftKeyLabelL(%S)"),&mskPtr);
+        cbaGroup->AddCommandToStackL(
+            KMediaSettingsMSKControlID,
+            aCommandId,
+            mskPtr );
+        CleanupStack::PopAndDestroy( middleSKText );
+        }
+    }
+
+//  End of File