diff -r d189ee25cf9d -r 3533d4323edc emailuis/emailui/src/FreestyleEmailUiGlobalSettingsListView.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/emailui/src/FreestyleEmailUiGlobalSettingsListView.cpp Wed Sep 01 12:28:57 2010 +0100 @@ -0,0 +1,343 @@ +/* +* Copyright (c) 2005-2007 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: Freestyle Email implementation file +* +*/ + + +// SYSTEM INCLUDES +#include "emailtrace.h" +#include +#include +#include +#include +#include +#include +#include +#include +// +#include +// +#include +// + +// LOCAL INCLUDES +#include "FreestyleEmailUiUtilities.h" +#include "FreestyleEmailUiGlobalSettings.hrh" +#include "FreestyleEmailUiGlobalSettingsListView.h" +#include "FreestyleEmailUiGlobalSettingsList.h" +#include "FreestyleEmailUiGlobalSettingsData.h" +#include "FreestyleEmailUiAppui.h" +#include "FreestyleEmailUiConstants.h" +#include "FreestyleEmailUiShortcutBinding.h" +#include "FSEmail.pan" + +/** + * First phase of Symbian two-phase construction. Should not contain any + * code that could leave. + */ +CFsEmailUiGlobalSettingsListView::CFsEmailUiGlobalSettingsListView( CFreestyleEmailUiAppUi* aAppUi, CAlfControlGroup& aControlGroup ) + : CFsEmailUiViewBase( aControlGroup, *aAppUi ) + { + FUNC_LOG; + } + +/** + * Destructor + */ +CFsEmailUiGlobalSettingsListView::~CFsEmailUiGlobalSettingsListView() + { + FUNC_LOG; + } + +/** + * Symbian two-phase constructor. + * This creates an instance then calls the second-phase constructor + * without leaving the instance on the cleanup stack. + * @return new instance of CFsEmailUiGlobalSettingsListView + */ +CFsEmailUiGlobalSettingsListView* CFsEmailUiGlobalSettingsListView::NewL( + CFreestyleEmailUiAppUi* aAppUi, + CAlfControlGroup& aControlGroup ) + { + FUNC_LOG; + + CFsEmailUiGlobalSettingsListView* self = CFsEmailUiGlobalSettingsListView::NewLC( aAppUi, aControlGroup ); + CleanupStack::Pop( self ); + + return self; + } + +/** + * Symbian two-phase constructor. + * This creates an instance, pushes it on the cleanup stack, + * then calls the second-phase constructor. + * @return new instance of CFsEmailUiGlobalSettingsListView + */ +CFsEmailUiGlobalSettingsListView* CFsEmailUiGlobalSettingsListView::NewLC( + CFreestyleEmailUiAppUi* aAppUi, + CAlfControlGroup& aControlGroup ) + { + FUNC_LOG; + + CFsEmailUiGlobalSettingsListView* self = new ( ELeave ) CFsEmailUiGlobalSettingsListView( aAppUi, aControlGroup ); + CleanupStack::PushL( self ); + self->ConstructL(); + + return self; + } + + +/** + * Second-phase constructor for view. + * Initialize contents from resource. + */ +void CFsEmailUiGlobalSettingsListView::ConstructL() + { + FUNC_LOG; + + BaseConstructL( R_GLOBAL_SETTINGS_LIST_VIEW ); + + } + +/** + * @return The UID for this view + */ +TUid CFsEmailUiGlobalSettingsListView::Id() const + { + FUNC_LOG; + return GlobalSettingsViewId; + } + +void CFsEmailUiGlobalSettingsListView::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ) + { + FUNC_LOG; + if ( aResourceId == R_GLOBAL_SETTINGS_MENU_PANE ) + { + + if ( FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ) ) + { + // remove help support in pf5250 + aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); + } + // Dim "Open" and "Change" + aMenuPane->SetItemDimmed( EFsEmailUiCmdChange, ETrue ); + aMenuPane->SetItemDimmed( EFsEmailUiCmdOpen, ETrue ); + + // Add shortcut hints + iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane, + CFSEmailUiShortcutBinding::EContextSettings ); + } + } + +/** + * Handle a command for this view (override) + * @param aCommand command id to be handled + */ +void CFsEmailUiGlobalSettingsListView::HandleCommandL( TInt aCommand ) + { + FUNC_LOG; + + switch ( aCommand ) + { + case EAknSoftkeyBack: + iAppUi.ReturnToPreviousViewL(); + break; + case EFsEmailUiCmdChange: + case EAknSoftkeyChange: + case EFsEmailUiCmdOpen: + case EAknSoftkeyOpen: + HandleChangeSelectedSettingItemL( aCommand ); + break; + case EFsEmailUiCmdHelp: + TFsEmailUiUtility::LaunchHelpL( KFSE_HLP_LAUNCHER_GRID ); + break; + case EFsEmailUiCmdExit: + case EEikCmdExit: + case EAknCmdExit: + AppUi()->HandleCommandL( EEikCmdExit ); + break; + case EFsEmailUiCmdGoToTop: + iGlobalSettingsSettingItemList->GoToTop(); + break; + case EFsEmailUiCmdGoToBottom: + iGlobalSettingsSettingItemList->GoToBottom(); + break; + case EFsEmailUiCmdPageUp: + iGlobalSettingsSettingItemList->PageUp(); + break; + case EFsEmailUiCmdPageDown: + iGlobalSettingsSettingItemList->PageDown(); + break; + default: + __ASSERT_DEBUG( EFalse, Panic(EFSEmailUiUnexpectedValue) ); + break; + } + } + +/** + * Set MSK label depending on the currently focused item + */ +void CFsEmailUiGlobalSettingsListView::SetMskL() + { + FUNC_LOG; + if ( iGlobalSettingsSettingItemList ) + { + TInt focusedId = iGlobalSettingsSettingItemList->FocusedItemId(); + if ( focusedId == EGlobalSettingsActiveIdle ) + { + ChangeMskCommandL( R_FSE_QTN_MSK_OPEN ); + } + else + { + ChangeMskCommandL( R_FSE_QTN_MSK_CHANGE ); + } + } + } + +/** + * Handles actions during activation of the view, + * such as initializing the content. + */ +// Toolbar +/*void CFsEmailUiGlobalSettingsListView::DoActivateL( + const TVwsViewId& aPrevViewId, + TUid aCustomMessageId, + const TDesC8& aCustomMessage )*/ +void CFsEmailUiGlobalSettingsListView::ChildDoActivateL( + const TVwsViewId& /*aPrevViewId*/, + TUid /*aCustomMessageId*/, + const TDesC8& /*aCustomMessage*/ ) +// Toolbar + { + FUNC_LOG; + + SetupStatusPaneL(); + + if ( !iGlobalSettingsSettingItemList ) + { + iSettings = CFsEmailUiGlobalSettingsData::NewL(); + iGlobalSettingsSettingItemList = new ( ELeave ) CFsEmailUiGlobalSettingsList( *iSettings, this ); + iGlobalSettingsSettingItemList->SetMopParent( this ); + iGlobalSettingsSettingItemList->ConstructFromResourceL( R_GLOBAL_SETTINGS_ITEM_LIST ); + iGlobalSettingsSettingItemList->ActivateL(); + iGlobalSettingsSettingItemList->LoadSettingValuesL(); + iGlobalSettingsSettingItemList->LoadSettingsL(); + AppUi()->AddToStackL( *this, iGlobalSettingsSettingItemList ); + } + iAppUi.HideTitlePaneConnectionStatus(); + + } + +/** + * ChildDoDeactivate + * From CFsEmailUiViewBase (override) + */ +void CFsEmailUiGlobalSettingsListView::ChildDoDeactivate() + { + FUNC_LOG; + + if ( iGlobalSettingsSettingItemList ) + { + AppUi()->RemoveFromStack( iGlobalSettingsSettingItemList ); + delete iGlobalSettingsSettingItemList; + iGlobalSettingsSettingItemList = NULL; + delete iSettings; + iSettings = NULL; + } + + } + +/** + * SetupStatusPaneL + * From CAknView + */ +void CFsEmailUiGlobalSettingsListView::SetupStatusPaneL() + { + FUNC_LOG; + + // reset the context pane + TUid contextPaneUid = TUid::Uid( EEikStatusPaneUidContext ); + CEikStatusPaneBase::TPaneCapabilities subPaneContext = + StatusPane()->PaneCapabilities( contextPaneUid ); + if ( subPaneContext.IsPresent() && subPaneContext.IsAppOwned() ) + { + CAknContextPane* context = static_cast< CAknContextPane* > ( + StatusPane()->ControlL( contextPaneUid ) ); + context->SetPictureToDefaultL(); + } + + // setup the title pane + TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle ); + CEikStatusPaneBase::TPaneCapabilities subPaneTitle = + StatusPane()->PaneCapabilities( titlePaneUid ); + if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() ) + { + CAknTitlePane* title = static_cast< CAknTitlePane* >( + StatusPane()->ControlL( titlePaneUid ) ); + TResourceReader reader; + iEikonEnv->CreateResourceReaderLC( reader, R_GLOBAL_SETTINGS_TITLE_RESOURCE ); + title->SetFromResourceL( reader ); + CleanupStack::PopAndDestroy(); // reader internal state + } + + } + +/** + * CleanupStatusPaneL + * Change status pane title back to default + */ +void CFsEmailUiGlobalSettingsListView::CleanupStatusPaneL() + { + FUNC_LOG; + iAppUi.ResetTitlePaneTextL(); + } + + +/** + * Handle status pane size change for this view (override) + * + */ +void CFsEmailUiGlobalSettingsListView::HandleStatusPaneSizeChange() + { + FUNC_LOG; + if ( IsForeground() ) + { + CAknView::HandleStatusPaneSizeChange(); + + // this may fail, but we're not able to propagate exceptions here + TRAPD( err, SetupStatusPaneL() ); + if (err) + { + } + } + } + + +/** + * Handle the selected event. + * @param aCommand the command id invoked + * @return ETrue if the command was handled, EFalse if not + */ +TBool CFsEmailUiGlobalSettingsListView::HandleChangeSelectedSettingItemL( TInt aCommand ) + { + FUNC_LOG; + + TBool calledFromMenu = + ( aCommand != EAknSoftkeyChange && aCommand != EAknSoftkeyOpen ); + iGlobalSettingsSettingItemList->ChangeSelectedItemL( calledFromMenu ); + + return ETrue; + } +