diff -r 000000000000 -r 96612d01cf9f mediasettings/mpsettbase/src/MPSettingsBaseView.cpp --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#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(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