--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/mmsui/settingssrc/MmsSettingsDialog.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,1418 @@
+/*
+* Copyright (c) 2002-2004 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:
+* Provides MMS Settings Dialog methods.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <barsread.h>
+#include <mtclreg.h>
+
+#include <eiktxlbx.h>
+#include <aknnavi.h>
+#include <akntitle.h>
+#include <aknsettingpage.h>
+#include <aknradiobuttonsettingpage.h>
+#include <aknnotewrappers.h>
+
+#include <mmssettings.h> // MMS Engine settings
+
+#include <MmsSettings.rsg>
+#include <mmssettingsdefs.h> // image size definitions
+
+#include <ApSettingsHandlerUI.h>
+#include <ApSettingsHandlerCommons.h>
+#include <ApEngineConsts.h>
+#include <ApUtils.h>
+#include <ApDataHandler.h>
+#include <ApAccessPointItem.h>
+#include <ApSelect.h> //CApSelect
+
+#include <muiusettingsarray.h>
+#include <StringLoader.h>
+
+#include <centralrepository.h> // link against centralrepository.lib
+#include <messaginginternalcrkeys.h> // for Central Repository keys
+
+#include <mmsclient.h>
+#include <mmsconst.h>
+
+// Features
+#include <featmgr.h>
+#include <bldvariant.hrh>
+#include <messagingvariant.hrh>
+#include <csxhelp/mce.hlp.hrh>
+#include <hlplch.h> // For HlpLauncher
+
+#include "unieditorfeatures.h" // EUniFeaturePriority
+
+#include "MmsMtmConst.h"
+
+#include "MmsApSelect.h"
+#include "MmsSettingsDialog.h"
+#include "MmsSettingsPanic.h"
+#include "MmsSettings.hrh"
+
+// CONSTANTS
+
+const TUid KUidMce = {0x100058C5};
+
+// Possible values for mms validity period in seconds
+const TInt32 KMmsValidityPeriod1h = 3600;
+const TInt32 KMmsValidityPeriod6h = 21600;
+const TInt32 KMmsValidityPeriod24h = 86400;
+const TInt32 KMmsValidityPeriod3Days = 259200;
+const TInt32 KMmsValidityPeriodWeek = 604800;
+const TInt32 KMmsValidityPeriodMax = 0;
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog
+// C++ constructor
+// ---------------------------------------------------------
+//
+CMmsSettingsDialog::CMmsSettingsDialog(
+ //CMmsClientMtm *aClientMtm,
+ CMmsSettings* aMmsSettings,
+ TMmsExitCode& aExitCode ) :
+ //iMmsClient( aClientMtm ),
+ iMmsSettings( aMmsSettings ),
+ iExitCode( aExitCode ),
+ iSettingsFlags( 0 )
+ {
+ iExitCode = EMmsExternalInterrupt; // reference -> cannot be initialized above
+ }
+
+
+// ---------------------------------------------------------
+// ~CMmsSettingsDialog()
+// Destructor
+// ---------------------------------------------------------
+//
+CMmsSettingsDialog::~CMmsSettingsDialog()
+ {
+ delete iPreviousTitleText;
+ delete iCommsDb;
+
+ // remove default navi pane
+ if ( iSettingsFlags & EDefaultNaviPane )
+ {
+ if ( iNaviPane )
+ {
+ // if "EDefaultNaviPane" flag is set
+ // iNaviPane != 0
+ iNaviPane->Pop(NULL);
+ }
+ }
+
+ // For lint
+ iNaviPane = NULL;
+ iItems = NULL;
+ //iMmsClient = NULL;
+ iMmsSettings = NULL;
+ iTitlePane = NULL;
+ iListbox = NULL;
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::ProcessCommandL
+//
+// Processes menu item commands
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::ProcessCommandL( TInt aCommandId )
+ {
+ CAknDialog::ProcessCommandL( aCommandId );
+
+ switch ( aCommandId )
+ {
+ case EChangeItem:
+ HandleEditRequestL( iListbox->CurrentItemIndex(), EFalse );
+ break;
+
+ case EAknCmdHelp:
+ {
+ LaunchHelpL();
+ }
+ break;
+
+ case EExitItem:
+ ExitDialogL();
+ break;
+ default:
+ break;
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::ExitDialogL()
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::ExitDialogL()
+ {
+ iExitCode = EMmsExit;
+ TryExitL( EAknSoftkeyCancel );
+ }
+
+
+// ---------------------------------------------------------
+// DynInitMenuPaneL(TInt aMenuId, CEikMenuPane* aMenuPane)
+// Initializes items on the menu
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::DynInitMenuPaneL(
+ TInt aMenuId,
+ CEikMenuPane* aMenuPane)
+ {
+ if ( aMenuPane
+ && aMenuId == R_SETTINGSDIALOG_MENUPANE )
+ {
+ // Set help menu-item visibility according featureManager
+ if ( ! ( iSettingsFlags & EHelpFeatureSupported ) )
+ {
+ aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
+ }
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::OkToExitL
+//
+// ---------------------------------------------------------
+//
+TBool CMmsSettingsDialog::OkToExitL( TInt aKeyCode )
+ {
+ switch ( aKeyCode )
+ {
+ case EChangeItem:
+ HandleEditRequestL( iListbox->CurrentItemIndex(), ETrue );
+ return EFalse;
+
+ case EAknSoftkeyCancel:
+ {
+ iSettingsFlags |= EExitSelected;
+ iSettingsFlags |= EGoingToExit;
+ if ( ClosingDialogL() )
+ {
+ iExitCode = EMmsExit;
+ }
+ else
+ {
+ iExitCode = EMmsExitWithSave;
+ }
+
+ return ETrue;
+ }
+ case EAknSoftkeyBack:
+ {
+ iSettingsFlags &= ~EExitSelected;
+ ClosingDialogL();
+
+ //if exit wanted during back operation
+ if( iSettingsFlags & ESwitchToExit )
+ {
+ iExitCode = EMmsExit;
+ }
+ else//normal back
+ {
+ iExitCode = EMmsBack;
+ }
+
+ // Replace title with old title text
+ if ( iPreviousTitleText )
+ {
+ iTitlePane->SetTextL( *iPreviousTitleText );
+ }
+ return ETrue;
+ }
+ default :
+ return CAknDialog::OkToExitL( aKeyCode );
+ }
+
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::CheckAndCorrectAccessPointL()
+//
+// Checks the access point as a part of closing dialog
+// (back / exit). AP must exist.
+// ---------------------------------------------------------
+//
+TBool CMmsSettingsDialog::CheckAndCorrectAccessPointL()
+ {
+ TInt32 ap = iMmsSettings->AccessPoint( 0 );
+
+ CApUtils* apUtils = CApUtils::NewLC(*iCommsDb);
+
+ // Access point is compulsory
+ TBool closingWithErrors = EFalse; // ETrue if user wants to close down even with errors
+ while ( !ApExistsL( apUtils, ap ) )
+ {
+ // Do not save if exit with errors
+ if ( iSettingsFlags & EExitSelected )
+ {
+ closingWithErrors = ETrue;
+ }
+ else
+ {
+ closingWithErrors = ShowExitAnywayQueryL();
+ }
+
+ if ( closingWithErrors )
+ {
+ break;
+ }
+ //if user selects exit in ap dialog, we will exit.
+ if ( EditAccessPointL() )
+ {
+ //when we return, this tells that we are exiting.
+ iSettingsFlags |= ESwitchToExit;
+ break;
+ }
+ ap = iMmsSettings->AccessPoint( 0 );
+ }
+ CleanupStack::PopAndDestroy(); // apUtils
+ return closingWithErrors;
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::ShowExitAnywayQueryL() const
+//
+// ---------------------------------------------------------
+//
+TBool CMmsSettingsDialog::ShowExitAnywayQueryL() const
+ {
+ CAknQueryDialog* confirmQuery = CAknQueryDialog::NewL();
+ return ( confirmQuery->ExecuteLD( R_MMSUI_QUERY_EXIT_ANYWAY ) );
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::ApExistsL(CApUtils* aUtils, TUint32 aAP) const
+// Checks whether or not given AP exists
+//
+// ---------------------------------------------------------
+//
+TBool CMmsSettingsDialog::ApExistsL( CApUtils* aUtils, TInt32 aAP ) const
+ {
+ if ( aAP == KErrNotFound )
+ {
+ return EFalse;
+ }
+ TBool exists = EFalse;
+ TRAPD( error, ( exists = aUtils->WapApExistsL( aAP ) ) );
+ if ( exists )
+ {
+ return ETrue;
+ }
+ // we are only handling "not found" leave
+ if ( error != KErrNotFound )
+ {
+ User::LeaveIfError( error );
+ }
+ return EFalse;
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::PreLayoutDynInitL()
+//
+// Creates a listbox for the settings.
+// Values are read from the resource file.
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::PreLayoutDynInitL()
+ {
+
+ // Get supported features from feature manager.
+ FeatureManager::InitializeLibL();
+ if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+ {
+ iSettingsFlags |= EHelpFeatureSupported;
+ }
+ FeatureManager::UnInitializeLib();
+
+ TInt featureBitmask = 0;
+ CRepository* repository = CRepository::NewL( KCRUidMmsui );
+ repository->Get( KMmsuiCsdEnabled, featureBitmask );
+ if ( featureBitmask )
+ {
+ iSettingsFlags |= ECSDEnabled;
+ }
+ delete repository;
+ repository = NULL;
+ featureBitmask = 0;
+
+ repository = CRepository::NewL( KCRUidMuiuVariation );
+ repository->Get( KMuiuMmsFeatures, featureBitmask );
+ delete repository;
+ repository = NULL;
+ if ( featureBitmask & KMmsFeatureIdUserCreationMode )
+ {
+ iSettingsFlags |= ECreationModeChangeEnabled;
+ }
+ if ( featureBitmask & KMmsFeatureIdHideReceivingOff )
+ {
+ iSettingsFlags |= EReceivingOffDisabled;
+ }
+ if ( featureBitmask & KMmsFeatureIdHideManualFetchMode )
+ {
+ iSettingsFlags |= EReceivingAlwaysManualDisabled;
+ }
+ if ( featureBitmask & KMmsFeatureIdHideAutomaticAtHome )
+ {
+ iSettingsFlags |= EReceivingAutomaticHomeDisabled;
+ }
+
+ SetTitleTextL();
+
+ iCommsDb = CCommsDatabase::NewL( EDatabaseTypeIAP );
+
+ // Get listbox pointer
+ iListbox = static_cast<CEikTextListBox*>( Control( EDlgSettingListBox ) );
+ iListbox->SetListBoxObserver( this );
+
+
+ // Sets correct size for the listbox
+ iListbox->SetRect( iAvkonAppUi->ClientRect() );
+
+ iItems = CMuiuSettingsArray::NewL( R_MMS_SERVICE_SETTINGS_LIST );
+ GetServiceSettingsValuesL();
+
+ // scroll bars
+ iListbox->CreateScrollBarFrameL( ETrue );
+ iListbox->ScrollBarFrame()->SetScrollBarVisibilityL(
+ CEikScrollBarFrame::EOff,
+ CEikScrollBarFrame::EAuto
+ );
+
+ // replace navi pane with empty one.
+ iNaviPane = static_cast<CAknNavigationControlContainer*>
+ ( iEikonEnv->AppUiFactory()->StatusPane()->ControlL(
+ TUid::Uid(EEikStatusPaneUidNavi) ) );
+ iNaviPane->PushDefaultL();
+ iSettingsFlags |= EDefaultNaviPane;
+
+ CTextListBoxModel* model = iListbox->Model();
+ model->SetItemTextArray( iItems );
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::ClosingDialogL
+//
+// ---------------------------------------------------------
+//
+TBool CMmsSettingsDialog::ClosingDialogL()
+ {
+ //if user selects exit or outside exit occurs, no ap checks are made.
+ return CheckAndCorrectAccessPointL();
+ }
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::GetServiceSettingsValuesL
+// Gets the values for the mms service settings and puts them in
+// to the listbox. Text strings are from loc files.
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::GetServiceSettingsValuesL()
+ {
+ // Access point
+ TInt32 ap = iMmsSettings->AccessPoint( 0 );
+ TBuf<KCommsDbSvrMaxFieldLength> apName;
+
+ GetNameForApL( ap, apName );
+ SetArrayItem( EMmsSettingsAccessPoint, static_cast<TInt>( ap ), apName );
+
+ TInt fetchHome = iMmsSettings->ReceivingModeHome();
+ TInt fetchRoam = iMmsSettings->ReceivingModeForeign();
+
+ // if default value is not acceptable, choose next by keeping costs low
+ if ( fetchHome == EMmsReceivingAutomatic &&
+ fetchRoam == EMmsReceivingAutomatic )
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingAutomaticAlways );
+ }
+ else if ( fetchHome == EMmsReceivingManual &&
+ fetchRoam == EMmsReceivingManual )
+ {
+ if ( ! ( iSettingsFlags & EReceivingAlwaysManualDisabled ) )
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingManualAlways );
+ }
+ else
+ {
+ if ( ! ( iSettingsFlags & EReceivingAutomaticHomeDisabled ) )
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingAutomaticHome );
+ }
+ else if ( ! ( iSettingsFlags & EReceivingOffDisabled ) )
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingDisabledAlways );
+ }
+ else
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingAutomaticAlways );
+ }
+ }
+ }
+ else if ( fetchHome == EMmsReceivingReject &&
+ fetchRoam == EMmsReceivingReject )
+ {
+ if ( ! ( iSettingsFlags & EReceivingOffDisabled ) )
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingDisabledAlways );
+ }
+ else
+ {
+ if ( ! ( iSettingsFlags & EReceivingAlwaysManualDisabled ) )
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingManualAlways );
+ }
+ else if ( ! ( iSettingsFlags & EReceivingAutomaticHomeDisabled ) )
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingAutomaticHome );
+ }
+ else
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingAutomaticAlways );
+ }
+ }
+ }
+ else
+ {
+ // Should always be automatic@home & manaul@roam
+ if ( ! ( iSettingsFlags & EReceivingAutomaticHomeDisabled ) )
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingAutomaticHome );
+ }
+ else
+ {
+ if ( ! ( iSettingsFlags & EReceivingAlwaysManualDisabled ) )
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingManualAlways );
+ }
+ else if ( ! ( iSettingsFlags & EReceivingOffDisabled ) )
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingDisabledAlways );
+ }
+ else
+ {
+ SetArrayItem( EMmsSettingsReceivingMode,
+ EMmsSettingsReceivingAutomaticAlways );
+ }
+ }
+ }
+
+ // Receiving anonymous messages
+ if ( iMmsSettings->AcceptAnonymousMessages() )
+ {
+ SetArrayItem( EMmsSettingsReceivingAnonymous, EMmsSettingsYes );
+ }
+ else
+ {
+ SetArrayItem( EMmsSettingsReceivingAnonymous, EMmsSettingsNo );
+ }
+
+
+ // Receiving ads
+ if ( iMmsSettings->AcceptAdvertisementMessages() )
+ {
+ SetArrayItem( EMmsSettingsReceivingAds, EMmsSettingsYes );
+ }
+ else
+ {
+ SetArrayItem( EMmsSettingsReceivingAds, EMmsSettingsNo );
+ }
+
+ // Receive report
+ TBool deliveryReport = ( iMmsSettings->DeliveryReportWanted() == EMmsYes );
+ if ( deliveryReport && iMmsSettings->ReadReplyReportWanted() == EMmsYes )
+ {
+ SetArrayItem( EMmsSettingsReceiveReport, EMmsSettingsReceiveReportBoth );
+ }
+ else if ( deliveryReport )
+ {
+ SetArrayItem( EMmsSettingsReceiveReport, EMmsSettingsReceiveReportDelivery );
+ }
+ else // read report only is not supported
+ {
+ SetArrayItem( EMmsSettingsReceiveReport, EMmsSettingsReceiveReportNone );
+ }
+
+ // Delivery report sending allowed and read report sending has both their own
+ // attribute. Writing the value takes care that both have same value.
+ // Read here only delivery report sending allowed attribute.
+ if ( iMmsSettings->DeliveryReportSendingAllowed() == EMmsDeliveryReportAllowedYes )
+ {
+ SetArrayItem( EMmsSettingsDenyDeliveryReport, EMmsSettingsNo );
+ }
+ else
+ {
+ SetArrayItem( EMmsSettingsDenyDeliveryReport, EMmsSettingsYes );
+ }
+
+ // Validity period
+ switch ( iMmsSettings->ExpiryInterval() )
+ {
+ case KMmsValidityPeriod1h:
+ SetArrayItem( EMmsSettingsValidityPeriod, EMmsSettingsValidityPeriod1h );
+ break;
+ case KMmsValidityPeriod6h:
+ SetArrayItem( EMmsSettingsValidityPeriod, EMmsSettingsValidityPeriod6h );
+ break;
+ case KMmsValidityPeriod24h:
+ SetArrayItem( EMmsSettingsValidityPeriod, EMmsSettingsValidityPeriod24h );
+ break;
+ case KMmsValidityPeriod3Days:
+ SetArrayItem( EMmsSettingsValidityPeriod, EMmsSettingsValidityPeriod3d );
+ break;
+ case KMmsValidityPeriodWeek:
+ SetArrayItem( EMmsSettingsValidityPeriod, EMmsSettingsValidityPeriodWeek );
+ break;
+ case KMmsValidityPeriodMax:
+ default: // default to max
+ SetArrayItem( EMmsSettingsValidityPeriod, EMmsSettingsValidityPeriodMaximum );
+ break;
+ }
+
+ // Image size
+ TInt32 imageWidth = iMmsSettings->ImageWidth();
+ TInt32 imageHeight = iMmsSettings->ImageHeight();
+
+ if ( imageWidth == KMmsUniImageLargeWidth && imageHeight == KMmsUniImageLargeHeight )
+ {
+ SetArrayItem( EMmsSettingsImageSize, EMmsSettingsImageLarge );
+ }
+ else
+ {
+ SetArrayItem( EMmsSettingsImageSize, EMmsSettingsImageSmall );
+ }
+
+ SetArrayItem( EMmsSettingsCreationMode, GetCreationMode() );
+
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::SetArrayItem(TInt aIndex, TInt aCurrentNumber)
+// Updates indexed item of listbox
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::SetArrayItem( TInt aIndex, TInt aCurrentNumber )
+ {
+ iItems->At( aIndex ).iUserText.Copy(
+ ( *iItems->At( aIndex ).iMuiuSettingsItemArray )[aCurrentNumber]);
+ ( *iItems )[aIndex].iCurrentNumber = aCurrentNumber;
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::SetArrayItem(TInt aIndex, TInt aCurrentNumber, const TDesC& aUserText)
+// Updates indexed item of listbox - user text formatted by the caller
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::SetArrayItem(TInt aIndex, TInt aCurrentNumber, const TDesC& aUserText)
+ {
+ iItems->At( aIndex ).iUserText.Copy( aUserText );
+ ( *iItems )[aIndex].iCurrentNumber = aCurrentNumber;
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType)
+// Handles listbox event
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::HandleListBoxEventL( CEikListBox* /* aListBox */,
+ TListBoxEvent aEventType )
+ {
+ switch ( aEventType )
+ {
+ case EEventEnterKeyPressed:
+ case EEventItemSingleClicked:
+ HandleEditRequestL( iListbox->CurrentItemIndex(), ETrue );
+ break;
+ default:
+ break;
+ }
+
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType)
+// Handles listbox event
+//
+// ---------------------------------------------------------
+//
+TKeyResponse CMmsSettingsDialog::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
+ {
+ TBool isDestructed( EFalse );
+ if ( aType ==EEventKey
+ && aKeyEvent.iCode == EKeyEscape )
+ {
+ isDestructed = ETrue;
+ }
+
+ TKeyResponse ret = CAknDialog::OfferKeyEventL( aKeyEvent, aType );
+
+ if ( !isDestructed
+ && iSettingsFlags & EShouldExit )
+ {
+ iExitCode = EMmsExit;
+ TryExitL( EAknSoftkeyCancel );
+ }
+
+ return ret;
+ }
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::HandleEditRequestL(TInt aIndex, TBool aEnterPressed)
+// Handles editing of a selected setting
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::HandleEditRequestL( TInt aIndex, TBool aEnterPressed )
+ {
+ switch ( aIndex )
+ {
+ case EMmsSettingsAccessPoint:
+ if ( EditAccessPointL() )
+ {
+ // Cannot exit directly here - we are in the middle of HandleListBoxEvent
+ // Real exit is activated in OfferKeyEventL()
+ iSettingsFlags |= EShouldExit;
+ iExitCode = EMmsExit;
+ }
+ break;
+ case EMmsSettingsReceivingMode:
+ EditReceivingModeL();
+ break;
+ case EMmsSettingsReceivingAnonymous:
+ EditReceivingAnonymousL( aEnterPressed );
+ break;
+ case EMmsSettingsReceivingAds:
+ EditReceivingAdsL( aEnterPressed );
+ break;
+ case EMmsSettingsReceiveReport:
+ EditReceiveReportsL( );
+ break;
+ case EMmsSettingsDenyDeliveryReport:
+ EditDenySendingDeliveryReportsL( aEnterPressed );
+ break;
+ case EMmsSettingsValidityPeriod:
+ EditValidityPeriodL();
+ break;
+ case EMmsSettingsImageSize:
+ EditImageSizeL( aEnterPressed );
+ break;
+ case EMmsSettingsCreationMode:
+ EditCreationModeL( aEnterPressed );
+ break;
+ default:
+ __ASSERT_DEBUG( EFalse, Panic( EMmsSettingsWrongParameters ) );
+ break;
+ } // switch
+ iListbox->DrawItem( aIndex );
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::SetAndGetSettingItemL(TInt& aCurrentItem, TUint aList, TInt aItem)
+// Sets the ui for the setting item and returns true if item selection
+// is accepted. Selected value is passed as a parameter.
+//
+// ---------------------------------------------------------
+//
+TBool CMmsSettingsDialog::SetAndGetSettingItemL( TInt& aCurrentItem,
+ TInt aList,
+ TInt aItem)
+ {
+ TBool isOk = EFalse;
+ TResourceReader reader;
+ iEikonEnv->CreateResourceReaderLC( reader, aList );
+
+ CDesCArrayFlat* items = new ( ELeave ) CDesCArrayFlat( KSettingsGranularity );
+ CleanupStack::PushL( items );
+
+ // Get the labels from resources
+ const TInt count = reader.ReadInt16();
+
+ for ( TInt loop = 0; loop < count; loop++ )
+ {
+ HBufC* label = reader.ReadHBufCL();
+ if ( ( aList == R_RECEIVING_MMS_LIST && ( iSettingsFlags & EReceivingAlwaysManualDisabled ) && loop == EMmsSettingsReceivingManualAlways ) ||
+ ( aList == R_RECEIVING_MMS_LIST && ( iSettingsFlags & EReceivingOffDisabled ) && loop == EMmsSettingsReceivingDisabledAlways ) ||
+ ( aList == R_RECEIVING_MMS_LIST && ( iSettingsFlags & EReceivingAutomaticHomeDisabled ) && loop == EMmsSettingsReceivingAutomaticHome ) ||
+ ( aList == R_MMS_IMAGE_SIZE_LIST && iMmsSettings->CreationMode() == EMmsCreationModeRestricted && loop == EMmsSettingsImageLarge ) )
+ {
+ delete label;
+ }
+ else
+ {
+ CleanupStack::PushL( label );
+ TPtr pLabel = label->Des();
+ AknTextUtils::DisplayTextLanguageSpecificNumberConversion( pLabel );
+ items->AppendL( pLabel );
+ CleanupStack::PopAndDestroy( label );
+ }
+ label = NULL;
+ }
+
+ if ( aList == R_RECEIVING_MMS_LIST )
+ {
+ // 3. removed, update 4
+ if ( ( iSettingsFlags & EReceivingAlwaysManualDisabled )
+ && aCurrentItem == EMmsSettingsReceivingDisabledAlways )
+ {
+ aCurrentItem--;
+ }
+ // 2. removed, update 3 & 4
+ if ( ( iSettingsFlags & EReceivingAutomaticHomeDisabled )
+ && aCurrentItem >= EMmsSettingsReceivingAutomaticHome )
+ {
+ // Adjust the index for every setting that comes after AutomaticAtHome when it is hidden
+ aCurrentItem--;
+ }
+ }
+
+ CAknRadioButtonSettingPage* dlg = new ( ELeave ) CAknRadioButtonSettingPage(
+ R_MMS_SETTING_PAGE,
+ aCurrentItem,
+ items );
+
+ dlg->SetSettingTextL( iItems->At( aItem ).iLabelText );
+ if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+ {
+ // Adjust the index back after the user has made the selection
+ if ( aList == R_RECEIVING_MMS_LIST )
+ {
+ // 2. removed, update 3 & 4
+ if ( ( iSettingsFlags & EReceivingAutomaticHomeDisabled )
+ && aCurrentItem >= EMmsSettingsReceivingAutomaticHome )
+ {
+ // Adjust the index for every setting that comes after AutomaticAtHome when it is hidden
+ aCurrentItem++;
+ }
+
+ // 3. removed, update 4
+ if ( ( iSettingsFlags & EReceivingAlwaysManualDisabled )
+ && aCurrentItem >= EMmsSettingsReceivingManualAlways )
+ {
+
+ aCurrentItem++;
+ }
+ }
+
+ isOk = ETrue;
+ }
+
+ CleanupStack::PopAndDestroy( 2 ); //items & reader
+
+ return isOk;
+ }
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::EditReceivingModeL()
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::EditReceivingModeL()
+ {
+ TInt currentItem = iItems->At( EMmsSettingsReceivingMode ).iCurrentNumber;
+
+ if ( SetAndGetSettingItemL(
+ currentItem,
+ R_RECEIVING_MMS_LIST,
+ EMmsSettingsReceivingMode ) )
+ {
+ switch ( currentItem )
+ {
+ case EMmsSettingsReceivingAutomaticHome:
+ {
+ iMmsSettings->SetReceivingModeHome( EMmsReceivingAutomatic );
+ iMmsSettings->SetReceivingModeForeign( EMmsReceivingManual );
+ break;
+ }
+ case EMmsSettingsReceivingAutomaticAlways:
+ iMmsSettings->SetReceivingModeHome( EMmsReceivingAutomatic );
+ iMmsSettings->SetReceivingModeForeign( EMmsReceivingAutomatic );
+ break;
+ case EMmsSettingsReceivingManualAlways:
+ {
+ iMmsSettings->SetReceivingModeHome( EMmsReceivingManual );
+ iMmsSettings->SetReceivingModeForeign( EMmsReceivingManual );
+ break;
+ }
+ case EMmsSettingsReceivingDisabledAlways:
+ iMmsSettings->SetReceivingModeHome( EMmsReceivingReject );
+ iMmsSettings->SetReceivingModeForeign( EMmsReceivingReject );
+ break;
+ default:
+ break;
+ }
+ //to be sure that we have the selected item
+ iItems->At( EMmsSettingsReceivingMode ).iCurrentNumber = currentItem;
+
+ SetArrayItem( EMmsSettingsReceivingMode, currentItem );
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::EditReceivingAnonymousL
+// Edits the value for receiving anonymous messages.
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::EditReceivingAnonymousL( TBool aEnterPressed )
+ {
+ TBool isOk = EFalse;
+ TInt currentItem = iItems->At( EMmsSettingsReceivingAnonymous ).iCurrentNumber;
+ if ( aEnterPressed )
+ {
+ currentItem ^= 1;
+ }
+ else
+ {
+ isOk = SetAndGetSettingItemL(
+ currentItem,
+ R_MMS_YES_NO_LIST,
+ EMmsSettingsReceivingAnonymous );
+ }
+
+ if ( aEnterPressed || isOk )
+ {
+ switch ( currentItem )
+ {
+ case EMmsSettingsNo:
+ iMmsSettings->SetAcceptAnonymousMessages( EFalse );
+ break;
+ case EMmsSettingsYes: // flow through
+ default:
+ iMmsSettings->SetAcceptAnonymousMessages( ETrue );
+ break;
+ }
+ SetArrayItem( EMmsSettingsReceivingAnonymous, currentItem );
+ CEikFormattedCellListBox* settingListBox =
+ static_cast<CEikFormattedCellListBox*>( Control(EDlgSettingListBox ) );
+ settingListBox->DrawNow();
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::EditReceivingAdsL
+// Edits the value for receiving advertisements
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::EditReceivingAdsL( TBool aEnterPressed )
+ {
+ TBool isOk = EFalse;
+ TInt currentItem = iItems->At( EMmsSettingsReceivingAds ).iCurrentNumber;
+ if ( aEnterPressed )
+ {
+ currentItem ^= 1;
+ }
+ else
+ {
+ isOk = SetAndGetSettingItemL(
+ currentItem,
+ R_MMS_YES_NO_LIST,
+ EMmsSettingsReceivingAds );
+ }
+
+ if (aEnterPressed || isOk)
+ {
+ switch (currentItem)
+ {
+ case EMmsSettingsNo:
+ iMmsSettings->SetAcceptAdvertisementMessages( EFalse );
+ break;
+ case EMmsSettingsYes: // flow through
+ default:
+ iMmsSettings->SetAcceptAdvertisementMessages( ETrue );
+ break;
+ }
+ SetArrayItem(EMmsSettingsReceivingAds, currentItem);
+ CEikFormattedCellListBox* settingListBox =
+ static_cast<CEikFormattedCellListBox*>( Control( EDlgSettingListBox ) );
+ settingListBox->DrawNow();
+ }
+ }
+// ---------------------------------------------------------
+// CMmsSettingsDialog::EditReceiveReportsL
+// Edits the value for receiving reports.
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::EditReceiveReportsL( )
+ {
+ TInt currentItem = iItems->At( EMmsSettingsReceiveReport ).iCurrentNumber;
+
+ if ( SetAndGetSettingItemL(
+ currentItem,
+ R_MCE_MMS_REPORTS,
+ EMmsSettingsReceiveReport ) )
+ {
+ SetReceiveReportSetting( static_cast<TMmsSettingsReceiveReportValues>( currentItem ) );
+ }
+ SetArrayItem( EMmsSettingsReceiveReport, currentItem );
+ CEikFormattedCellListBox* settingListBox =
+ static_cast<CEikFormattedCellListBox*>( Control( EDlgSettingListBox ) );
+ settingListBox->DrawNow();
+ }
+
+// ---------------------------------------------------------
+// SetReceiveReportSetting( TMmsSettingsReceiveReportValues aReceiveReport )
+// Stores the value for receive report settings.
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::SetReceiveReportSetting( TMmsSettingsReceiveReportValues aReceiveReport )
+ {
+ switch ( aReceiveReport )
+ {
+ case EMmsSettingsReceiveReportBoth:
+ iMmsSettings->SetDeliveryReportWanted( EMmsYes );
+ iMmsSettings->SetReadReplyReportWanted( EMmsYes );
+ break;
+ case EMmsSettingsReceiveReportDelivery:
+ iMmsSettings->SetDeliveryReportWanted( EMmsYes );
+ iMmsSettings->SetReadReplyReportWanted( EMmsNo );
+ break;
+ case EMmsSettingsReceiveReportNone:
+ iMmsSettings->SetDeliveryReportWanted( EMmsNo );
+ iMmsSettings->SetReadReplyReportWanted( EMmsNo );
+ break;
+ default:
+ __ASSERT_DEBUG_NO_LEAVE( Panic( EMmsSettingsWrongParameters ) );
+ iMmsSettings->SetDeliveryReportWanted( EMmsNo );
+ iMmsSettings->SetReadReplyReportWanted( EMmsNo );
+ break;
+ }
+ }
+// ---------------------------------------------------------
+// CMmsSettingsDialog::EditDenySendingDeliveryReportL
+// Edits the value for sending delivery reports.
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::EditDenySendingDeliveryReportsL( TBool aEnterPressed )
+ {
+ TBool isOk = EFalse;
+ TInt currentItem = iItems->At( EMmsSettingsDenyDeliveryReport ).iCurrentNumber;
+
+ if ( aEnterPressed )
+ {
+ currentItem ^= 1;
+ }
+ else
+ {
+ isOk = SetAndGetSettingItemL(
+ currentItem,
+ R_MMS_YES_NO_LIST,
+ EMmsSettingsDenyDeliveryReport );
+ }
+
+ if ( aEnterPressed || isOk )
+ {
+ switch ( currentItem )
+ {
+ case EMmsSettingsNo:
+ iMmsSettings->SetDeliveryReportSendingAllowed( EMmsDeliveryReportAllowedYes );
+ iMmsSettings->SetReadReplyReportSendingAllowed( ETrue );
+ break;
+ case EMmsSettingsYes: // flow through
+ default:
+ iMmsSettings->SetDeliveryReportSendingAllowed( EMmsDeliveryReportAllowedNo );
+ iMmsSettings->SetReadReplyReportSendingAllowed( EFalse );
+ break;
+ }
+ SetArrayItem( EMmsSettingsDenyDeliveryReport, currentItem );
+ CEikFormattedCellListBox* settingListBox =
+ static_cast<CEikFormattedCellListBox*>( Control( EDlgSettingListBox ) );
+ settingListBox->DrawNow();
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::EditValidityPeriodL
+// Edits the value for validity period
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::EditValidityPeriodL()
+ {
+ TInt currentItem = iItems->At( EMmsSettingsValidityPeriod ).iCurrentNumber;
+
+ if (SetAndGetSettingItemL( currentItem, R_MMS_VALIDITY_PERIOD_LIST, EMmsSettingsValidityPeriod ))
+ {
+ switch (currentItem)
+ {
+ case EMmsSettingsValidityPeriod1h:
+ SetValidityPeriodSetting( KMmsValidityPeriod1h );
+ break;
+ case EMmsSettingsValidityPeriod6h:
+ SetValidityPeriodSetting( KMmsValidityPeriod6h );
+ break;
+ case EMmsSettingsValidityPeriod24h:
+ SetValidityPeriodSetting( KMmsValidityPeriod24h );
+ break;
+ case EMmsSettingsValidityPeriod3d:
+ SetValidityPeriodSetting( KMmsValidityPeriod3Days );
+ break;
+ case EMmsSettingsValidityPeriodWeek:
+ SetValidityPeriodSetting( KMmsValidityPeriodWeek );
+ break;
+ case EMmsSettingsValidityPeriodMaximum:
+ default: // default to max
+ SetValidityPeriodSetting( KMmsValidityPeriodMax );
+ break;
+ }
+ SetArrayItem( EMmsSettingsValidityPeriod, currentItem );
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::SetValidityPeriodSetting(TInt32 aValidityPeriod)
+// Stores the value for validity period settings.
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::SetValidityPeriodSetting( TInt32 aValidityPeriod )
+ {
+ iMmsSettings->SetExpiryInterval( aValidityPeriod );
+ }
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::EditAccessPointL
+//
+// ---------------------------------------------------------
+//
+TBool CMmsSettingsDialog::EditAccessPointL()
+ {
+ TUint32 currentItem = iItems->At( EMmsSettingsAccessPoint ).iCurrentNumber;
+
+
+ TInt bearers = EApBearerTypeGPRS;
+ if ( iSettingsFlags & ECSDEnabled )
+ {
+ bearers |= ( EApBearerTypeCSD | EApBearerTypeHSCSD );
+ }
+
+ TUint32 selectedAp = KMaxTUint32; // invalid value
+ TInt taskDone = MmsApSelect::SelectMmsAccessPointL(
+ *iCommsDb,
+ currentItem,
+ selectedAp,
+ bearers );
+
+ // Note: taskDone == KApUiEventDeleted is not handled here.
+ // Basically the user can delete the AP that was selected. This is noticed
+ // & complained when closing Settings dialog.
+ CApUtils* apUtils = CApUtils::NewLC( *iCommsDb );
+ TBuf<KCommsDbSvrMaxFieldLength> apName;
+
+ if( !ApExistsL( apUtils, currentItem ) && taskDone == 0 ) //if ap has been deleted, set "must be defined"
+ {
+ selectedAp = 0;
+ }//if
+ else if( selectedAp == KMaxTUint32 )
+ {
+ selectedAp = currentItem;
+ }
+ GetNameForApL( selectedAp, apName );
+ SetArrayItem( EMmsSettingsAccessPoint, selectedAp, apName );
+
+ // Use cases numbered:
+ if ( taskDone || selectedAp != 0 )
+ {
+ // 1) sp selected
+ // 2) previously ap selected but 'back' now
+ // 3) none selected
+ while ( iMmsSettings->AccessPointCount() )
+ {
+ iMmsSettings->DeleteAccessPointL( 0 );
+ }
+
+ if ( selectedAp != 0 )
+ {
+ // 1) sp selected, 2) previously ap selected but 'back' now
+ iMmsSettings->AddAccessPointL( selectedAp, 0 );
+ }
+ }
+ // else - 4) previously none selected and 'back' now
+
+ CleanupStack::PopAndDestroy(); // apUtils
+
+ return ( taskDone & ( KApUiEventExitRequested | KApUiEventShutDownRequested ) );
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::GetNameForApL
+// Get a name for the given access point id
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::GetNameForApL( TUint32 aId, TDes& aName )
+ {
+ aName.Zero();
+ CApUtils* apUtils = CApUtils::NewLC( *iCommsDb );
+ if ( !ApExistsL( apUtils, aId ) )
+ {
+ // No access point -> "Compulsory"
+ HBufC* text = iEikonEnv->AllocReadResourceLC( R_MMS_SETTINGS_COMPULSORY );
+ aName.Copy( *text );
+ CleanupStack::PopAndDestroy(); // text
+ }
+ else
+ {
+ apUtils->NameL( aId, aName );
+ }
+ CleanupStack::PopAndDestroy(); // apUtils
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::EditImageSizeL
+// Edits the value for image size setting.
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::EditImageSizeL( TBool aEnterPressed )
+ {
+ TBool isOk = EFalse;
+ TInt currentItem = iItems->At( EMmsSettingsImageSize ).iCurrentNumber;
+
+ if ( aEnterPressed &&
+ iMmsSettings->CreationMode() != EMmsCreationModeRestricted )
+ {
+ currentItem ^= 1;
+ isOk = ETrue;
+ }
+ else
+ {
+ // We come here either from "Options -> Change" or with selection key
+ // in "restricted" mode (opens a list with a single item).
+ isOk = SetAndGetSettingItemL(
+ currentItem,
+ R_MMS_IMAGE_SIZE_LIST,
+ EMmsSettingsImageSize );
+ }
+
+ if ( isOk )
+ {
+ switch ( currentItem )
+ {
+ case EMmsSettingsImageLarge:
+ iMmsSettings->SetImageWidth( KMmsUniImageLargeWidth );
+ iMmsSettings->SetImageHeight( KMmsUniImageLargeHeight );
+ break;
+ case EMmsSettingsImageSmall: // flow through
+ default:
+ iMmsSettings->SetImageWidth( KMmsUniImageSmallWidth );
+ iMmsSettings->SetImageHeight( KMmsUniImageSmallHeight );
+ break;
+ }
+ SetArrayItem( EMmsSettingsImageSize, currentItem );
+ CEikFormattedCellListBox* settingListBox =
+ static_cast<CEikFormattedCellListBox*>( Control( EDlgSettingListBox ) );
+ settingListBox->DrawNow();
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::EditCreationModeL
+// Edits the value for creation mode setting.
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::EditCreationModeL( TBool /*aEnterPressed*/ )
+ {
+ if ( !( iSettingsFlags & ECreationModeChangeEnabled ) )
+ {
+ ShowInformationNoteL( R_MMSUI_INFO_CANNOT_CHANGE_CMODE );
+ return;
+ }
+
+ TInt enumMode = EMmsSettingsCreationMode;
+
+ TInt currentItem = iItems->At( enumMode ).iCurrentNumber;
+
+ if ( SetAndGetSettingItemL( currentItem, R_MMS_CREATION_MODE_LIST, enumMode) )
+ {
+ TInt32 oldMode = GetCreationMode();
+ switch ( currentItem )
+ {
+ case EMmsSettingsCreationModeRestricted:
+ iMmsSettings->SetCreationMode( EMmsCreationModeRestricted );
+ if ( oldMode != currentItem &&
+ ( iMmsSettings->ImageWidth() != KMmsUniImageSmallWidth ||
+ iMmsSettings->ImageHeight() != KMmsUniImageSmallHeight ) )
+ {
+ iMmsSettings->SetImageWidth( KMmsUniImageSmallWidth );
+ iMmsSettings->SetImageHeight( KMmsUniImageSmallHeight );
+ SetArrayItem( EMmsSettingsImageSize, EMmsSettingsImageSmall );
+ ShowInformationNoteL( R_MMSUI_INFO_IMAGE_SIZE_CHANGED );
+ iListbox->DrawItem( EMmsSettingsImageSize );
+ }
+ break;
+ case EMmsSettingsCreationModeFree:
+ {
+ if ( oldMode != currentItem )
+ {
+ CAknQueryDialog* confirmQuery = CAknQueryDialog::NewL();
+ if ( confirmQuery->ExecuteLD( R_MMSUI_QUERY_CHANGE_TO_FREE ) )
+ {
+ iMmsSettings->SetCreationMode( EMmsCreationModeFree );
+ }
+ else
+ {
+ currentItem = oldMode;
+ }
+ }
+ }
+ break;
+ default:
+ case EMmsSettingsCreationModeGuided:
+ iMmsSettings->SetCreationMode( EMmsCreationModeWarning );
+ break;
+ }
+ SetArrayItem( enumMode, currentItem );
+ }
+
+ }
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::GetCreationMode
+// Maps creation mode value from engine to SettingsDialog values
+//
+// ---------------------------------------------------------
+//
+TInt32 CMmsSettingsDialog::GetCreationMode()
+ {
+ switch ( iMmsSettings->CreationMode() )
+ {
+ case EMmsCreationModeRestricted:
+ return EMmsSettingsCreationModeRestricted;
+ case EMmsCreationModeFree:
+ return EMmsSettingsCreationModeFree;
+ case EMmsCreationModeWarning:
+ default:
+ return EMmsSettingsCreationModeGuided;
+ }
+ }
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::SetTitleTextL()
+// Makes the status pane
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::SetTitleTextL()
+ {
+ CEikStatusPane *sp = ( static_cast<CAknAppUi*>
+ ( CEikonEnv::Static()->EikAppUi() ) )->StatusPane();
+ iTitlePane = static_cast<CAknTitlePane*>
+ ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+
+ //save old title
+ iPreviousTitleText = ( *iTitlePane->Text() ).Alloc();
+
+ // set new title
+ HBufC* text = text = StringLoader::LoadLC( R_MMS_SETTINGS_TITLE_TEXT );
+ iTitlePane->SetTextL( *text );
+ CleanupStack::PopAndDestroy(); // text
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::LaunchHelpL
+// launch help using context
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::LaunchHelpL()
+ {
+ if ( iSettingsFlags & EHelpFeatureSupported )
+ {
+ CCoeAppUi* editorAppUi = static_cast<CCoeAppUi*>( ControlEnv()->AppUi() );
+
+ CArrayFix<TCoeHelpContext>* helpContext = editorAppUi->AppHelpContextL();
+ HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(), helpContext );
+ }
+ }
+
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::GetHelpContext
+// returns helpcontext as aContext
+//
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::GetHelpContext
+ ( TCoeHelpContext& aContext ) const
+ {
+ if ( iSettingsFlags & EHelpFeatureSupported )
+ {
+ aContext.iMajor = KUidMce;
+ aContext.iContext = KMCE_HLP_SETTINGS_MMS;
+ }
+ }
+
+// ---------------------------------------------------------
+// CMmsSettingsDialog::ShowInformationNoteL
+// ---------------------------------------------------------
+//
+void CMmsSettingsDialog::ShowInformationNoteL( TInt aResourceId )
+ {
+ CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue );
+ HBufC* string = StringLoader::LoadLC( aResourceId );
+ note->ExecuteLD( *string );
+ CleanupStack::PopAndDestroy(); //string
+ }
+
+// End of File