--- a/cmmanager/cmmgr/Framework/Src/cmpbasesettingsdlg.cpp Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1503 +0,0 @@
-/*
-* Copyright (c) 2006 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: base class for connection method plugin dialogs
-*
-*/
-
-
-// INCLUDE FILES
-
-// System
-#include <cmmanager.rsg>
-#include <aknnavide.h>
-#include <StringLoader.h>
-#include <akntitle.h>
-#include <aknradiobuttonsettingpage.h>
-#include <data_caging_path_literals.hrh>
-#include <akntextsettingpage.h>
-#include <aknpasswordsettingpage.h>
-#include <in_sock.h>
-#include <aknmfnesettingpage.h>
-#include <AknQueryDialog.h>
-#include <featmgr.h>
-
-#include <hlplch.h>
-
-// User
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlg.h>
-#include <cmmanager.h>
-#include <cmpluginbaseeng.h>
-#include "cmmanagerimpl.h"
-#include "cmmanager.hrh"
-#include <cmcommonui.h>
-#include <cmcommonconstants.h>
-#include <cmpsettingsconsts.h>
-#include "cmpluginmultilinedialog.h"
-#include "cmlogger.h"
-#include "ccmdexec.h"
-
-using namespace CMManager;
-
-// Maximum speed mapping
-struct TIPv6DNSMapping
- {
- TInt iResId;
- TInt iSettingValue;
- };
-
-// Mapping for IPv6 DNS types
-const TIPv6DNSMapping KTIPv6DNSItems[] =
- {
- { R_QTN_SET_DNS_SERVERS_AUTOMATIC, EIPv6Unspecified },
- { R_QTN_SET_IP_WELL_KNOWN, EIPv6WellKnown },
- { R_QTN_SET_IP_USER_DEFINED, EIPv6UserDefined },
- { 0, 0 }
- };
-
-const TUint32 KMaxInt32Length = 10;
-
-// ================= MEMBER FUNCTIONS =======================================
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ConstructAndRunLD
-// Constructs the dialog and runs it.
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::ConstructAndRunLD( )
- {
- CleanupStack::PushL( this );
- FeatureManager::InitializeLibL();
- iHelp = FeatureManager::FeatureSupported( KFeatureIdHelp );
- FeatureManager::UnInitializeLib();
- ConstructL( R_PLUGIN_BASE_MENUBAR );
- PrepareLC( R_PLUGIN_BASE_DIALOG );
- CleanupStack::Pop( this );
- iSettingIndex = new ( ELeave ) CArrayFixFlat<TUint>( 4 );
-
- if (!iHasSettingChanged)
- {
- iHasSettingChanged = ETrue;
- }
-
- return RunLD();
- }
-
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::CmPluginBaseSettingsDlg()
-// --------------------------------------------------------------------------
-//
-EXPORT_C CmPluginBaseSettingsDlg::CmPluginBaseSettingsDlg(
- CCmPluginBaseEng& aCmPluginBase ) :
- iCmPluginBaseEng( aCmPluginBase ),
- iExitReason( KDialogUserBack ),
- iResourceReader( *CCoeEnv::Static() ),
- iIsPossibleToSaveSetting( ETrue ),
- iHasSettingChanged( EFalse )
- {
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::~CApSelectorDialog
-// --------------------------------------------------------------------------
-//
-EXPORT_C CmPluginBaseSettingsDlg::~CmPluginBaseSettingsDlg()
- {
- // iModel is deleted by the ListBox because LB owns the model...
- // of course only after we passed ownership...
- if ( iNaviDecorator )
- {
- delete iNaviDecorator;
- }
- if ( iTitlePane )
- {
- // set old text back, if we have it...
- if ( iOldTitleText )
- {
- TRAP_IGNORE( iTitlePane->SetTextL( *iOldTitleText ) );
- delete iOldTitleText;
- }
- }
- if ( iSettingIndex )
- {
- delete iSettingIndex;
- }
- iResourceReader.Close();
-
- delete iCmdExec;
- iCmdExec = NULL;
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::PreLayoutDynInitL();
-// called by framework before dialog is shown
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::PreLayoutDynInitL()
- {
- iListbox = STATIC_CAST( CAknSettingStyleListBox*,
- Control( KPluginBaseListboxId ) );
- iListbox->CreateScrollBarFrameL( ETrue );
- iListbox->ScrollBarFrame()->SetScrollBarVisibilityL
- ( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
- iListbox->SetListBoxObserver( this );
-
- HandleListboxDataChangeL();
- iListbox->HandleItemAdditionL();
- InitTextsL();
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::UpdateListBoxContentL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::UpdateListBoxContentL()
- {
- // Must save listbox indexes because content will be deleted
- TInt lastListBoxPos = iListbox->CurrentItemIndex();
- TInt lastListBoxTopPos = iListbox->TopItemIndex();
-
- // deleting listbox content
- MDesCArray* itemList = iListbox->Model()->ItemTextArray();
- CDesCArray* itemArray = (CDesCArray*)itemList;
-
- while ( itemArray->Count() )
- {
- itemArray->Delete( 0 );
- }
- while ( iSettingIndex->Count() )
- {
- iSettingIndex->Delete( 0 );
- }
-
- // CONNECTION NAME
- AppendSettingTextsL( *itemArray, ECmName );
-
- // BEARER SPECIFIC SETTINGS
- UpdateListBoxContentBearerSpecificL( *itemArray );
-
- //-----------------------------------------------------------------------
- // Handle content changes
- iListbox->Reset();
- iListbox->HandleItemAdditionL();
-
- // Listbox might not have index
- if ( lastListBoxPos != -1 )
- {
- iListbox->SetCurrentItemIndex( lastListBoxPos );
- iListbox->SetTopItemIndex( lastListBoxTopPos );
- }
- iListbox->DrawNow();
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::AppendSettingTextsL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::AppendSettingTextsL(
- CDesCArray& aItemArray,
- const TInt aSettingItemId,
- const TInt aValueResId )
- {
- HBufC* value = StringLoader::LoadLC( aValueResId );
-
- AppendSettingTextsL( aItemArray, aSettingItemId, value );
-
- CleanupStack::PopAndDestroy( value );
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::AppendSettingTextsL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::AppendSettingTextsL(
- CDesCArray& aItemArray,
- const TInt aSettingItemId,
- const HBufC* aValueString )
- {
- const TCmAttribConvTable* convItem =
- iCmPluginBaseEng.ConvTableItem( aSettingItemId );
- HBufC* value = NULL;
-
- if ( aValueString )
- {
- value = (HBufC*)aValueString;
- }
- else
- {
- if ( convItem->iAttribFlags & EConvNumber )
- {
- TUint32 num = iCmPluginBaseEng.GetIntAttributeL( aSettingItemId );
-
- if( !num && convItem->iDefSettingResId )
- {
- value = StringLoader::LoadL( convItem->iDefSettingResId );
- }
- else
- {
- value = HBufC::NewL( KMaxInt32Length );
- value->Des().AppendNum( num );
-
- TPtr number( value->Des() );
- AknTextUtils::LanguageSpecificNumberConversion( number );
- }
- }
- else
- {
- if( convItem->iAttribFlags & EConv8Bits )
- // make 16bits copy of this 8bits buffer
- {
- HBufC8* value8 = iCmPluginBaseEng.GetString8AttributeL( aSettingItemId );
- CleanupStack::PushL( value8 );
- value = HBufC::NewL( value8->Length() );
- value->Des().Copy( *value8 );
- CleanupStack::PopAndDestroy( value8 );
- }
- else
- {
- value = iCmPluginBaseEng.GetStringAttributeL( aSettingItemId );
- }
-
- if ( convItem->iDefSettingResId )
- // We have default value in resource.
- // Check if we have use it, instead of current value.
- {
- if ( convItem->iAttribFlags & EConvIPv4 )
- // This is an IPv4 text attribute
- {
- if ( IsUnspecifiedIPv4Address( *value ) )
- // Use default value from resource instead of
- // displaying unspecified IP address
- {
- delete value; value = NULL;
- }
- }
- else if ( convItem->iAttribFlags & EConvIPv6 )
- // This is an IPv4 text attribute
- {
- }
- else if( convItem->iAttribFlags & EConvPassword )
- // In case of password, we can show only the resource
- // string.
- {
- delete value; value = NULL;
- }
- else if ( *value == KNullDesC && convItem->iDefSettingResId )
- // empty string, but it has a default value in resource
- // Use the resource value.
- {
- delete value; value = NULL;
- }
-
- if ( !value )
- // use default value from resource.
- {
- value = StringLoader::LoadL( convItem->iDefSettingResId );
- }
- }
- }
-
- CleanupStack::PushL( value );
- }
-
- HBufC* title = StringLoader::LoadLC( convItem->iTitleId );
-
- _LIT( KSettingListFormat, "\t%S\t\t%S" );
- HBufC* itemTextBuf = HBufC::NewLC( KSettingListFormat().Length() +
- title->Length() +
- value->Length() +
- KTxtCompulsory().Length() );
-
- TPtr itemText = itemTextBuf->Des();
-
- itemText.Format( KSettingListFormat, title, value );
-
- // indicator for compulsory settings
- if ( convItem->iAttribFlags & EConvCompulsory )
- {
- itemText.Append( KTxtCompulsory );
- }
-
- aItemArray.AppendL( itemText );
- CleanupStack::PopAndDestroy( 2, title ); // itemTextBuf, title
-
- if ( !aValueString )
- {
- CleanupStack::PopAndDestroy( (HBufC*)value );
- }
-
- iSettingIndex->AppendL( aSettingItemId );
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::AppendSettingTextsL
-// --------------------------------------------------------------------------
-//
-
-EXPORT_C void CmPluginBaseSettingsDlg::AppendSettingTextsL(
- CDesCArray& aItemArray,
- const TInt aSettingItemId,
- const TInt aTitleResId,
- const TInt aValueResId,
- const TBool aCompulsory ) const
- {
- HBufC* value = NULL;
- if ( aValueResId )
- {
- value = StringLoader::LoadLC( aValueResId );
- }
- else
- {
- value = KNullDesC().AllocL();
- CleanupStack::PushL( value );
- }
- TPtr ptrValue = value->Des();
-
- AppendSettingTextsL( aItemArray, aSettingItemId,
- aTitleResId, ptrValue, aCompulsory );
-
- CleanupStack::PopAndDestroy( value );
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::AppendSettingTextsL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::AppendSettingTextsL(
- CDesCArray& aItemArray,
- const TInt aSettingItemId,
- const TInt aTitleResId,
- const TDesC& aValueString,
- const TBool aCompulsory ) const
- {
- // Title
- HBufC* title = StringLoader::LoadLC( aTitleResId );
-
- _LIT( KSettingListFormat, "\t%S\t\t%S" );
- HBufC* itemTextBuf = HBufC::NewLC( KSettingListFormat().Length() +
- title->Length() +
- aValueString.Length() +
- KTxtCompulsory().Length() );
-
- TPtr itemText = itemTextBuf->Des();
-
- itemText.Format( KSettingListFormat, title, &aValueString );
-
- // indicator for compulsory settings
- if ( aCompulsory )
- {
- itemText.Append( KTxtCompulsory );
- }
-
- aItemArray.AppendL( itemText );
- CleanupStack::PopAndDestroy( 2, title ); // itemTextBuf, title
- iSettingIndex->AppendL( aSettingItemId );
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::DynInitMenuPaneL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::DynInitMenuPaneL(
- TInt aResourceId,
- CEikMenuPane* aMenuPane )
- {
- CAknDialog::DynInitMenuPaneL( aResourceId, aMenuPane );
-
- if ( aResourceId == R_PLUGIN_BASE_MENU )
- {
- if (!iHelp)
- {
- aMenuPane->DeleteMenuItem( EAknCmdHelp );
- }
- TInt currentItem = iSettingIndex->At( iListbox->CurrentItemIndex() );
- if ( currentItem == ECmBearerSettingName )
- {
-
- aMenuPane->SetItemDimmed( EPluginBaseCmdChange, ETrue );
- }
- }
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ProcessCommandL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::ProcessCommandL( TInt aCommandId )
- {
- if ( MenuShowing() )
- {
- HideMenu();
- }
-
- switch ( aCommandId )
- {
- case EAknSoftkeyOptions:
- {
- DisplayMenuL();
- break;
- }
- case EPluginBaseCmdExit:
- {
- iExitReason = KDialogUserExit;
- if( iIsPossibleToSaveSetting && iHasSettingChanged )
- {
- iCmPluginBaseEng.UpdateL();
- iHasSettingChanged = EFalse;
- }
-
- TryExitL( iExitReason );
- break;
- }
- case EAknSoftkeyOk:
- case EAknSoftkeyChange:
- {
- // Function CheckSpaceBelowCriticalLevelL may User::Leave with KLeaveWithoutAlert
- // if no space available to save changes. The User::Leave message will be caught
- // by iCmdExec. So,it is not caught here.
- iCmPluginBaseEng.CheckSpaceBelowCriticalLevelL();
-
- ShowPopupSettingPageL(
- iSettingIndex->At( iListbox->CurrentItemIndex() ),
- aCommandId );
-
- break;
- }
- case EAknCmdHelp:
- {
- // Help context (the default value) has been set so this value is used.
- HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
- iEikonEnv->EikAppUi()->AppHelpContextL() );
- }
- break;
- default:
- {
- break;
- }
- }
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::InitTextsL
-// called before the dialog is shown
-// to initialize localized textual data
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::InitTextsL()
- {
- // set pane text if neccessary...
- // pane text needed if not pop-up...
- if ( iEikonEnv )
- {
- iStatusPane = iEikonEnv->AppUiFactory()->StatusPane();
- iTitlePane = ( CAknTitlePane* )iStatusPane->ControlL(
- TUid::Uid( EEikStatusPaneUidTitle ) );
-
- iOldTitleText = iTitlePane->Text()->AllocL();
- HBufC* pdConnName = iCmPluginBaseEng.GetStringAttributeL( ECmName );
- CleanupStack::PushL( pdConnName ); // 1
-
- if ( pdConnName )
- {
- iTitlePane->SetTextL( *pdConnName );
- }
- else
- {
- iTitlePane->SetTextL( KNullDesC );
- }
- CleanupStack::PopAndDestroy( pdConnName ); // 0
-
-
- iNaviPane = ( CAknNavigationControlContainer* )iStatusPane->ControlL(
- TUid::Uid( EEikStatusPaneUidNavi ) );
- iNaviDecorator = iNaviPane->CreateNavigationLabelL( KNullDesC );
- iNaviPane->PushL( *iNaviDecorator );
- }
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::OkToExitL
-// Good to know : EAknSoftkeyCancel is never called, because
-// EEikDialogFlagNotifyEsc flag is not set in the resource.
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::OkToExitL( TInt aButtonId )
- {
- // Translate the button presses into commands for the appui & current
- // view to handle
- TBool retval( EFalse );
-
- switch ( aButtonId )
- {
- case EAknSoftkeyOk:
- case EAknSoftkeyChange:
- {
- ProcessCommandL( aButtonId );
- break;
- }
- case EAknSoftkeyBack:
- case EAknSoftkeyExit:
- case KDialogUserExit:
- {
-
- if ( iIsPossibleToSaveSetting && iHasSettingChanged )
- {
- iCmPluginBaseEng.UpdateL();
- iHasSettingChanged = EFalse;
- }
- retval = ETrue;
- break;
- }
- case EAknSoftkeyOptions:
- {
- DisplayMenuL();
- break;
- }
- default:
- {
- retval = ETrue;
- break;
- }
- }
-
- return retval;
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::HandleListBoxEventL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::HandleListBoxEventL(
- CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
- {
- switch ( aEventType )
- {
- case EEventEnterKeyPressed:
- case EEventItemSingleClicked:
- {
- if ( !iProcessing )
- {
- delete iCmdExec;
- iCmdExec = NULL;
- iCmdExec = new (ELeave) CCmdExec(*this);
- iCmdExec->Execute();
- }
- break;
- }
- case EEventEditingStarted:
- {
- break;
- }
- case EEventEditingStopped:
- {
- break;
- }
- default:
- {
- break;
-// User::Leave( KErrNotSupported );
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::OfferKeyEventL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TKeyResponse CmPluginBaseSettingsDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent,
- TEventCode aType )
- {
- return iListbox->OfferKeyEventL( aKeyEvent, aType );
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::LoadResourceL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::LoadResourceL (
- const TDesC& aResFileName )
- {
- TInt err( KErrNone );
- // Add resource file.
- TParse* fp = new ( ELeave ) TParse();
- err = fp->Set( aResFileName,
- &KDC_RESOURCE_FILES_DIR,
- NULL );
- if ( err )
- {
- User::Leave( err );
- }
-
- TFileName resourceFileNameBuf = fp->FullName();
- delete fp;
-
- iResourceReader.OpenL( resourceFileNameBuf );
- return err;
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::HandleListboxDataChangeL
-// called before the dialog is shown to initialize listbox data
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::HandleListboxDataChangeL()
- {
- UpdateListBoxContentL();
- iListbox->HandleItemAdditionL();
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupSettingPageL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupSettingPageL(
- TUint32 aAttribute, TInt /*aCommandId*/ )
- {
- TBool retval( EFalse );
-
- switch ( aAttribute )
- {
- case ECmBearerSettingName:
- {
- TCmCommonUi::ShowNoteL ( R_PLUGIN_BASE_INFO_BEARER_NOT_EDITABLE,
- TCmCommonUi::ECmInfoNote );
- break;
- }
- case ECmName:
- default:
- {
- retval = ShowPopupTextSettingPageL( aAttribute );
- break;
- }
- }
- return retval;
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::SelectItem
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::SelectItem( TInt aItemIndex )
- {
- iListbox->ScrollToMakeItemVisible( aItemIndex );
- iListbox->SetCurrentItemIndexAndDraw( aItemIndex );
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::StringAttributeWithDefaultL
-//---------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CmPluginBaseSettingsDlg::StringAttributeWithDefaultL(
- TUint32 aAttribute, TUint32 aDefRes )
- {
- HBufC* value = iCmPluginBaseEng.GetStringAttributeL( aAttribute );
- if ( *value == KNullDesC )
- {
- delete value;
- value = NULL;
- value = StringLoader::LoadL( aDefRes );
- }
-
- return value;
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::GetHelpContext
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::GetHelpContext( TCoeHelpContext& aContext ) const
- {
- aContext.iMajor = KHelpUidPlugin;
- aContext.iContext = iHelpContext;
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupIpSettingPageL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupIpSettingPageL(
- TUint32 aAttribute,
- TUint32 aTitleId )
-
- {
- TBool retval = EFalse;
- const TCmAttribConvTable* convItem =
- iCmPluginBaseEng.ConvTableItem( aAttribute );
-
- HBufC* servName = HBufC::NewLC( convItem->iMaxLength );
- TPtr ptrServName ( servName->Des() );
-
- HBufC* orig = iCmPluginBaseEng.GetStringAttributeL( aAttribute );
- CleanupStack::PushL( orig );
- ptrServName.Copy( *orig );
-
- TInetAddr addr;
- addr.Input( ptrServName );
-
- TInt resId = EditorId( convItem->iEditorResId, R_TEXT_SETTING_PAGE_IP );
-
- CAknIpFieldSettingPage* dlg =
- new ( ELeave ) CAknIpFieldSettingPage(
- resId,
- addr );
-
- CleanupStack::PushL( dlg );
- SetTitleL( dlg, convItem->iTitleId, aTitleId );
- CleanupStack::Pop( dlg );
-
- if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
- {
- addr.Output( ptrServName );
-
- if ( orig->Des().CompareF( ptrServName ) )
- // User modified IP address
- {
- iCmPluginBaseEng.SetStringAttributeL( aAttribute, ptrServName );
- retval = ETrue;
- UpdateListBoxContentL();
- }
- }
-
- CleanupStack::PopAndDestroy( 2, servName ); // orig, servName
- return retval;
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL(
- const TUint32* aResIds,
- TInt& aCurrentItem,
- TUint32 aTitleId )
- {
- CDesCArrayFlat* items =
- new ( ELeave ) CDesCArrayFlat( KCmArraySmallGranularity );
-
- CleanupStack::PushL( items );
- TInt count( 0 );
- for( ; aResIds[count]; ++count )
- {
- HBufC* item = StringLoader::LoadLC( aResIds[count] );
- items->AppendL( *item );
- }
-
- TUint32 resId = EditorId( 0, R_RADIO_BUTTON_SETTING_PAGE_OK_CANCEL );
- CAknRadioButtonSettingPage* dlg =
- new ( ELeave ) CAknRadioButtonSettingPage(
- resId,
- aCurrentItem,
- items );
- CleanupStack::PushL( dlg );
- SetTitleL( dlg, 0, aTitleId );
- CleanupStack::Pop( dlg );
-
- TBool retVal = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
-
- CleanupStack::PopAndDestroy( count ); // selection items
- CleanupStack::PopAndDestroy( items );
-
- return retVal;
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL(
- CDesCArrayFlat& aItems,
- TInt& aCurrentItem,
- TUint32 aTitleId )
- {
- TUint32 resId = EditorId( 0, R_RADIO_BUTTON_SETTING_PAGE_OK_CANCEL );
- CAknRadioButtonSettingPage* dlg =
- new ( ELeave ) CAknRadioButtonSettingPage(
- resId,
- aCurrentItem,
- &aItems );
- CleanupStack::PushL( dlg );
- SetTitleL( dlg, 0, aTitleId );
- CleanupStack::Pop( dlg );
-
- TBool retVal = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
-
- return retVal;
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupTextSettingPageL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupTextSettingPageL(
- TUint32 aAttribute,
- TUint32 aTitleId )
- {
- TBool retval( EFalse );
- const TCmAttribConvTable* convItem =
- iCmPluginBaseEng.ConvTableItem( aAttribute );
-
- HBufC* textToChange = HBufC::NewLC( convItem->iMaxLength );
- TPtr ptrTextToChange( textToChange->Des() );
-
- HBufC* value = HBufC::NewLC( convItem->iMaxLength );
- if ( convItem->iAttribFlags & EConv8Bits )
- // convert 8bits attribute to 16bits
- {
- HBufC8* stringFromCm =
- iCmPluginBaseEng.GetString8AttributeL( aAttribute );
- value->Des().Copy( *stringFromCm );
-
- delete stringFromCm; stringFromCm = NULL;
- }
- else
- {
- HBufC* stringFromCm =
- iCmPluginBaseEng.GetStringAttributeL( aAttribute );
- value->Des().Copy( *stringFromCm );
-
- delete stringFromCm; stringFromCm = NULL;
- }
-
- if( *value == KNullDesC && convItem->iDefValueResId )
- // empty string is replaced with the default value from resource
- {
- HBufC* stringFromCm = StringLoader::LoadL( convItem->iDefValueResId );
-
- value->Des().Copy( *stringFromCm );
-
- delete stringFromCm; stringFromCm = NULL;
- }
-
- TPtr ptrValue( value->Des() );
- ptrTextToChange.Copy( ptrValue );
-
- TInt textSettingPageFlags( EAknSettingPageNoOrdinalDisplayed );
-
- if ( !(convItem->iAttribFlags & EConvNoZeroLength) )
- {
- textSettingPageFlags = CAknTextSettingPage::EZeroLengthAllowed;
- }
-
- TUint32 resId = EditorId( convItem->iEditorResId, 0 );
-
- CAknTextSettingPage* dlg = new ( ELeave ) CAknTextSettingPage(
- resId,
- ptrTextToChange,
- textSettingPageFlags );
-
- CleanupStack::PushL( dlg );
- SetTitleL( dlg, convItem->iTitleId, aTitleId );
- CleanupStack::Pop( dlg );
-
- if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
- {
- if ( aAttribute == ECmName )
- {
- iTitlePane->SetTextL( ptrTextToChange );
- }
- if ( ptrTextToChange.Compare( ptrValue ) )
- // user modified the value
- {
- if ( convItem->iAttribFlags & EConv8Bits )
- // convert back from 16bits to 8bits
- {
- HBufC8* stringTo = HBufC8::NewLC( ptrTextToChange.Length() );
-
- stringTo->Des().Copy( ptrTextToChange );
- iCmPluginBaseEng.SetString8AttributeL( aAttribute, *stringTo );
-
- CleanupStack::PopAndDestroy( stringTo );
- }
- else
- {
- if( aAttribute == ECmName )
- {
- SetUniqueNameL( ptrTextToChange );
- }
- else
- {
- iCmPluginBaseEng.SetStringAttributeL( aAttribute,
- ptrTextToChange );
- }
- }
-
- retval = ETrue;
- UpdateListBoxContentL();
- }
- }
-
- CleanupStack::PopAndDestroy( 2, textToChange );
- return retval;
- }
-
-
-void CmPluginBaseSettingsDlg::SetUniqueNameL( TPtr aPtrTextToChange )
- {
- // Saves the recent naming method and set it to "Not accept"
- TUint32 savedNM = iCmPluginBaseEng.GetIntAttributeL( ECmNamingMethod );
- iCmPluginBaseEng.SetIntAttributeL( ECmNamingMethod, ENamingNotAccept );
-
- // Tries to save the nem name. If it is not unique
- // then ret == KErrArgument
- TRAPD( err, iCmPluginBaseEng.SetStringAttributeL( ECmName, aPtrTextToChange ) );
-
- if( KErrArgument == err )
- {
- // Opens a info note
- HBufC* noteLine = StringLoader::LoadLC(
- R_CMMANAGERUI_INFO_DEST_ALREADY_IN_USE, aPtrTextToChange );
-
- TCmCommonUi::ShowNoteL( *noteLine, TCmCommonUi::ECmInfoNote );
-
- CleanupStack::PopAndDestroy( noteLine );
- }
-
- // Sets back the original naming method
- iCmPluginBaseEng.SetIntAttributeL( ECmNamingMethod, savedNM );
- }
-
-
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupPasswordSettingPageL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupPasswordSettingPageL(
- TUint32 aAttribute,
- TUint32 aTitleId )
- {
- TBool retVal( EFalse );
-
- const TCmAttribConvTable* convItem =
- iCmPluginBaseEng.ConvTableItem( aAttribute );
- HBufC* newPassword = HBufC::NewLC( KCmMaxPasswordLength );
- TPtr16 ptrNewPassword = newPassword->Des();
-
- HBufC* oldPassword = NULL;
- oldPassword = iCmPluginBaseEng.GetStringAttributeL( aAttribute );
- CleanupStack::PushL( oldPassword );
-
- TUint32 resId = EditorId( convItem->iEditorResId,
- R_TEXT_SETTING_PAGE_PASSWD );
- CAknAlphaPasswordSettingPage* dlg =
- new ( ELeave ) CAknAlphaPasswordSettingPage(
- resId,
- ptrNewPassword,
- *oldPassword );
- CleanupStack::PushL( dlg );
- SetTitleL( dlg, convItem->iTitleId, aTitleId );
- CleanupStack::Pop( dlg );
-
- if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
- {
- iCmPluginBaseEng.SetStringAttributeL( aAttribute, newPassword->Des() );
- UpdateListBoxContentL();
-
- retVal = ETrue;
- }
- CleanupStack::PopAndDestroy( 2, newPassword );
-
- return retVal;
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowNumSettingPageL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupPortNumSettingPageL(
- TUint32 aAttribute, TUint32 aTitleId )
- {
- TBool retVal( EFalse );
- const TCmAttribConvTable* convItem =
- iCmPluginBaseEng.ConvTableItem( aAttribute );
-
- TInt value( 0 );
- value = iCmPluginBaseEng.GetIntAttributeL( aAttribute );
-
- TInt origVal = value;
-
- HBufC* buf = HBufC::NewLC( convItem->iMaxLength );
- TPtr ptr( buf->Des() );
-
- ptr.Num( value );
-
- TInt flags = EAknSettingPageNoOrdinalDisplayed;
-
- if ( !(convItem->iAttribFlags & EConvNoZeroLength) )
- {
- flags |= CAknTextSettingPage::EZeroLengthAllowed;
- }
-
- TUint32 resId = EditorId( convItem->iEditorResId,
- R_PORT_NUMBER_SETTING_PAGE );
- CAknTextSettingPage* dlg = new ( ELeave ) CAknTextSettingPage(
- resId,
- ptr,
- flags );
-
- CleanupStack::PushL( dlg );
- SetTitleL( dlg, convItem->iTitleId, aTitleId );
- CleanupStack::Pop( dlg );
-
- if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
- {
- TLex lex ( buf->Des() );
-
- // An empty string should be treated as default
- if ( buf->Des() == KNullDesC )
- {
- value = 0;
- }
- else
- {
- lex.Val( value );
- }
- if ( value != origVal )
- {
- iCmPluginBaseEng.SetIntAttributeL( aAttribute, value );
- retVal = ETrue;
- UpdateListBoxContentL();
- }
- }
-
- CleanupStack::PopAndDestroy( buf );
- return retVal;
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupIPv4DNSEditorL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupIPv4DNSEditorL(
- TUint32 aDNSUsageAttribute,
- TUint32 aDNS1ServAttribute,
- TUint32 aDNS2ServAttribute,
- TUint32 aTitleId )
- {
- // In default the return value is 'Automatic'
- TBool retVal( EFalse );
- // In default DNS setting is automatic.
- const TCmAttribConvTable* convItem =
- iCmPluginBaseEng.ConvTableItem( aDNSUsageAttribute );
-
- HBufC* primServ = iCmPluginBaseEng.GetStringAttributeL( aDNS1ServAttribute );
- CleanupStack::PushL( primServ );
- HBufC* secServ = iCmPluginBaseEng.GetStringAttributeL( aDNS2ServAttribute );
- CleanupStack::PushL( secServ );
-
- TBuf<KIpAddressWidth> newPrim;
- TBuf<KIpAddressWidth> newSec;
-
- newPrim.Copy( *primServ );
- newSec.Copy( *secServ );
-
- TInetAddr dns1Addr;
- TInetAddr dns2Addr;
-
- dns1Addr.Input( newPrim );
- dns2Addr.Input( newSec );
-
- CAknMultiLineIpQueryDialog* dlg =
- CAknMultiLineIpQueryDialog::NewL( dns1Addr,
- dns2Addr );
-
- CleanupStack::PushL( dlg );
-
- TUint32 editorId = EditorId( convItem->iEditorResId, R_DNSIP4_QUERY );
- dlg->PrepareLC( editorId );
-
- TUint32 titleId = TitleId( convItem->iTitleId, aTitleId );
- if ( titleId )
- {
- dlg->SetTitleL( titleId );
- }
-
- CleanupStack::Pop( dlg );
-
- if ( dlg->RunLD() )
- {
- dns1Addr.Output( newPrim );
- dns2Addr.Output( newSec );
-
- if ( newPrim.CompareF( *primServ ) ||
- newSec.CompareF( *secServ ) )
- // User modified the DNS setting
- {
- iCmPluginBaseEng.SetDNSServerAddressL(
- aDNS1ServAttribute,
- newPrim,
- aDNS2ServAttribute,
- newSec,
- aDNSUsageAttribute,
- EFalse );
-
- UpdateListBoxContentL();
-
- retVal = ETrue;
- }
- }
-
- CleanupStack::PopAndDestroy( 2, primServ );
-
- return retVal;
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupIPv6DNSEditorL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::ShowPopupIPv6DNSEditorL(
- const TUint32* aSelectionItems,
- TUint32 aDNSUsageAttribute,
- TUint32 aDNS1ServAttribute,
- TUint32 aDNS2ServAttribute )
- {
- TBool update( EFalse );
- TInt selected = GetIPv6DNSTypeL( aDNS1ServAttribute, aDNS2ServAttribute );
-
- // convert the current setting value to the selection index
- TInt resId = KTIPv6DNSItems[selected].iResId;
- TInt i = 0;
- while ( aSelectionItems[i] )
- {
- if ( resId == aSelectionItems[i] )
- {
- selected = i;
- break;
- }
- i++;
- }
-
- if ( ShowRadioButtonSettingPageL( aSelectionItems,
- selected,
- R_QTN_SET_DNS_SERVERS_IP ) )
- {
- // convert the selection to the setting value
- resId = aSelectionItems[selected];
- TInt j = 0;
-
- while ( KTIPv6DNSItems[j].iResId )
- {
- if ( resId == KTIPv6DNSItems[j].iResId )
- {
- selected = KTIPv6DNSItems[j].iSettingValue;
- break;
- }
- j++;
- }
-
- switch ( selected )
- {
- case EIPv6WellKnown:
- {
- iCmPluginBaseEng.SetStringAttributeL(
- aDNS1ServAttribute, KKnownIp6NameServer1 );
- iCmPluginBaseEng.SetStringAttributeL(
- aDNS2ServAttribute, KKnownIp6NameServer2 );
-
- iCmPluginBaseEng.SetBoolAttributeL(
- aDNSUsageAttribute, EFalse );
-
- update = ETrue;
- }
- break;
-
- case EIPv6Unspecified:
- {
- iCmPluginBaseEng.SetStringAttributeL(
- aDNS1ServAttribute, KDynamicIpv6Address );
- iCmPluginBaseEng.SetStringAttributeL(
- aDNS2ServAttribute, KDynamicIpv6Address );
- iCmPluginBaseEng.SetBoolAttributeL(
- aDNSUsageAttribute, ETrue );
-
- update = ETrue;
- }
- break;
-
- case EIPv6UserDefined:
- {
- TInt err1;
- TInt err2;
- TBool cancelled(EFalse);
- do
- {
- // These has to be reset to KErrNone in case of
- // inputting an invalid address (DLAN-7FJD68).
- err1 = KErrNone;
- err2 = KErrNone;
-
- HBufC* dns1 = HBufC::NewLC( KMaxIPv6NameServerLength );
- HBufC* dns2 = HBufC::NewLC( KMaxIPv6NameServerLength );
-
- TPtr dns1ptr( dns1->Des() );
- TPtr dns2ptr( dns2->Des() );
-
- HBufC* temp = iCmPluginBaseEng.GetStringAttributeL(
- aDNS1ServAttribute );
- dns1ptr.Copy( *temp );
- delete temp; temp = NULL;
-
- temp = iCmPluginBaseEng.GetStringAttributeL(
- aDNS2ServAttribute );
- dns2ptr.Copy( *temp );
- delete temp; temp = NULL;
-
- // KDynamicIpv6Address is offered instead of empty string
- if ( dns1ptr.Length() == 0 )
- {
- dns1ptr = KDynamicIpv6Address;
- }
- if ( dns2ptr.Length() == 0 )
- {
- dns2ptr = KDynamicIpv6Address;
- }
-
-
- if ( ( dns1ptr.Compare( KKnownIp6NameServer1 ) == 0 ) &&
- ( dns2ptr.Compare( KKnownIp6NameServer2 ) == 0 ) )
- { // special value, well-known
- // in this case 'dynamic' string must be offered so
- // temp data must be changed to 'dynamic'
- dns1ptr = KDynamicIpv6Address;
- dns2ptr = KDynamicIpv6Address;
- }
-
- CCmPluginMultiLineDialog* ipquery =
- CCmPluginMultiLineDialog::NewL( dns1ptr,
- dns2ptr );
-
- if ( ipquery->ExecuteLD( R_DNSIP6_QUERY ) )
- {
- TInetAddr dns1Addr;
- TInetAddr dns2Addr;
-
- if ( dns1ptr.Compare( KNullDesC ) )
- {
- err1 = dns1Addr.Input( dns1ptr );
- }
- if ( dns2ptr.Compare( KNullDesC ) )
- {
- err2 = dns2Addr.Input( dns2ptr );
- }
- if ( err1 || err2 )
- {
- TCmCommonUi::ShowNoteL
- ( R_QTN_SET_INFO_INVALID_IP,
- TCmCommonUi::ECmErrorNote );
- }
- else
- {
- iCmPluginBaseEng.SetDNSServerAddressL(
- aDNS1ServAttribute,
- dns1ptr,
- aDNS2ServAttribute,
- dns2ptr,
- aDNSUsageAttribute,
- ETrue );
-
- update = ETrue;
- }
- }
- else
- {
- cancelled = ETrue;
- }
- CleanupStack::PopAndDestroy( dns2 );
- CleanupStack::PopAndDestroy( dns1 );
- } while ( (err1 || err2) && (!cancelled) );
- break;
- }
- default:
- {
- User::Leave( KErrNotSupported );
- }
- }
- }
-
- if( update )
- {
- UpdateListBoxContentL();
- }
-
- return selected;
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::TitleId
-//---------------------------------------------------------------------------
-//
-TUint32 CmPluginBaseSettingsDlg::TitleId( TUint32 aConvTitleId,
- TUint32 aTitleId ) const
- {
- TUint32 titleId( 0 );
- if ( aTitleId )
- {
- titleId = aTitleId;
- }
- else if ( !titleId )
- {
- titleId = aConvTitleId;
- }
-
- return titleId;
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::SetTitleL
-//---------------------------------------------------------------------------
-//
-void CmPluginBaseSettingsDlg::SetTitleL( CAknSettingPage* aDlg,
- TUint32 aConvTitleId,
- TUint32 aTitleId ) const
- {
- TUint32 titleId( TitleId( aConvTitleId, aTitleId ) );
-
- if ( titleId )
- {
- HBufC* title = StringLoader::LoadLC( titleId );
- aDlg->SetSettingTextL( *title );
- CleanupStack::PopAndDestroy( title );
- }
- }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::EditorId
-//---------------------------------------------------------------------------
-//
-TUint32 CmPluginBaseSettingsDlg::EditorId( TUint32 aConvEditorId,
- TUint32 aEditorId ) const
- {
- TUint32 resId( 0 );
- if ( aConvEditorId )
- {
- resId = aConvEditorId;
- }
- if ( !resId )
- {
- resId = aEditorId;
- }
-
- return resId;
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::GetIPv6DNSTypeL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::GetIPv6DNSTypeL(
- TUint32 aDNS1ServAttribute,
- TUint32 aDNS2ServAttribute )
- {
- TIPv6Types retval( EIPv6UserDefined );
-
- HBufC* priServ = NULL;
- priServ = iCmPluginBaseEng.GetStringAttributeL( aDNS1ServAttribute );
- CleanupStack::PushL( priServ );
- TPtr16 ptr1( priServ->Des() );
-
- HBufC* secServ = NULL;
- secServ = iCmPluginBaseEng.GetStringAttributeL( aDNS2ServAttribute );
- CleanupStack::PushL( secServ );
- TPtr16 ptr2( secServ->Des() );
-
- // net type 6: if IspIPv6NameServ <> 0.0.0.0
- // => User defined OR well-known
-
- if ( ( !ptr1.Compare( KKnownIp6NameServer1 ) )
- && ( !ptr2.Compare( KKnownIp6NameServer2 ) ) )
- { // special value, well-known
- retval = EIPv6WellKnown;
- }
- else
- {
- // dynamic, if 0:0:...
- // OR EMPTY text...
- if ( ( ( !ptr1.Compare( KDynamicIpv6Address ) )
- || ( !ptr1.Compare( KNullDesC ) ) )
- &&( ( !ptr2.Compare( KDynamicIpv6Address ) )
- ||( !ptr2.Compare( KDynamicIpv6Address ) ) ) )
- { // dynamic, 0:0:...
- retval = EIPv6Unspecified;
- }
- else
- { // other value, user defined
- retval = EIPv6UserDefined;
- }
- }
-
- CleanupStack::PopAndDestroy( 2, priServ );
-
- return retval;
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::HandleResourceChange
-// --------------------------------------------------------------------------
-//
-
-EXPORT_C void CmPluginBaseSettingsDlg::HandleResourceChange( TInt aType )
- {
- CCoeControl::HandleResourceChange( aType );
-
- CAknDialog::HandleResourceChange(aType);
-
- if( aType == KEikDynamicLayoutVariantSwitch )
- {
- DrawNow();
- }
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::Execute
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::Execute()
- {
- iProcessing = ETrue;
-
- TRAPD( err, ProcessCommandL( EAknSoftkeyChange ) );
- if ( err )
- {
- HandleLeaveError( err );
- }
- iProcessing = EFalse;
- }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::HandleLeaveError
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::HandleLeaveError( TInt aError )
-{
- switch( aError )
- {
- case KLeaveWithoutAlert:
- case KErrNoMemory:
- // Indicate no memory to save setting changes
- iIsPossibleToSaveSetting = EFalse;
-
- if (iProcessing)
- {
- // Release processing protection so that the next processing can be done
- iProcessing = EFalse;
- }
- break;
- default:
- // More leave errors may be handled if necessary
- // Now other leave errors are ignored here
- break;
- }
-}