--- a/cmmanager/cmmgr/Framework/Src/cmcommonui.cpp Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,687 +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: Defines common UI methods.
-*
-*/
-
-#include <aknlists.h> // CAknDoubleLargeGraphicPopupMenuStyleListBox
-#include <aknPopup.h> // CAknPopupList
-#include <AknQueryDialog.h>
-#include <aknnotedialog.h>
-#include <badesca.h> // CDesCArray
-#include <e32def.h>
-#include <e32std.h>
-#include <eikfrlb.h> // CEikFormattedCellListBox
-#include <eiklbm.h> // ELbmDoesNotOwnItemArray
-#include <gulicon.h>
-#include <StringLoader.h>
-#include <cmmanager.rsg>
-
-#include <cmcommonconstants.h>
-#include <cmcommonui.h>
-#include "cmlogger.h"
-#include "cmmanagerimpl.h"
-#include "cmmanager.hrh"
-#include <cmconnectionmethoddef.h>
-
-using namespace CMManager;
-
-const TInt KDefaultListBoxFlags = 0;
-
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::CCmDesCArray::CCmDesCArray
-// ---------------------------------------------------------------------------
-//
-TCmCommonUi::CCmDesCArray::CCmDesCArray()
- : CDesCArrayFlat( KCmArraySmallGranularity )
- , iUids( KCmArraySmallGranularity )
- {
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::CCmDesCArray::~CCmDesCArray
-// ---------------------------------------------------------------------------
-//
-TCmCommonUi::CCmDesCArray::~CCmDesCArray()
- {
- iUids.Close();
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::CCmDesCArray::AppendL
-// ---------------------------------------------------------------------------
-//
-void TCmCommonUi::CCmDesCArray::AppendL( TUint aUid, const TDesC& aItem )
- {
- iUids.AppendL( aUid );
- CDesCArray::AppendL( aItem );
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::CCmDesCArray::Uid
-// ---------------------------------------------------------------------------
-//
-TUint TCmCommonUi::CCmDesCArray::Uid( TInt aIndex ) const
- {
- return iUids[ aIndex ];
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowConfirmationQueryWithInputL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowConfirmationQueryWithInputL( TInt aResId,
- TDes& aInput )
- {
- CLOG_ENTERFN_PTR( "ShowConfirmationQueryWithInputL" );
- HBufC* prompt = CEikonEnv::Static()->AllocReadResourceAsDes16LC( aResId );
-
- CAknTextQueryDialog* dlg =
- CAknTextQueryDialog::NewL( aInput, CAknQueryDialog::ENoTone );
-
- // Handle the allowable enterable length of the text
- CLOG_WRITE_1_PTR( NULL, "max length input: [%d ]", aInput.MaxLength() );
- dlg->SetMaxLength( aInput.MaxLength() );
-
- TInt retval = dlg->ExecuteLD( R_TEXT_QUERY, *prompt );
-
- CleanupStack::PopAndDestroy( prompt );
-
- return retval;
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowConfirmationQueryL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowConfirmationQueryL( TInt aResId )
- {
- CLOG_ENTERFN_PTR( "ShowConfirmationQueryL" );
- HBufC* prompt = CEikonEnv::Static()->AllocReadResourceL( aResId );
-
- // Ownership (of 'prompt') is handed over to callee. That's why we don't
- // bother with cleanup stack either - let it be the callee's problem.
- return ShowConfirmationQueryL( prompt );
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowConfirmationQueryL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowConfirmationQueryL( TInt aResId,
- const TDesC& aString )
- {
- CLOG_ENTERFN_PTR( "ShowConfirmationQueryL" );
- HBufC* prompt = StringLoader::LoadL( aResId, aString );
-
- // Ownership (of 'prompt') is handed over to callee.
- return ShowConfirmationQueryL( prompt );
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowAvailableMethodsL
-// ---------------------------------------------------------------------------
-//
-TUint32 TCmCommonUi::ShowAvailableMethodsL(
- const RArray<TUint32>& aAvailableBearers,
- const CCmManagerImpl& aCmManager )
- {
- CLOG_ENTERFN_PTR( "ShowAvailableMethodsL" );
-
- TUint32 retval = 0;
-
- // Create listbox and popup list and perform some initialization on them.
- CEikFormattedCellListBox* listBox =
- new (ELeave) CAknDoubleLargeGraphicPopupMenuStyleListBox();
- CleanupStack::PushL( listBox );
-
- CAknPopupList* popupList =
- CAknPopupList::NewL( listBox,
- R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
- AknPopupLayouts::EMenuDoubleLargeGraphicWindow );
- CleanupStack::PushL( popupList );
-
- listBox->ConstructL( popupList, KDefaultListBoxFlags );
- listBox->CreateScrollBarFrameL( ETrue );
- listBox->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EAuto );
-
- // Create the icon and item text arrays.
- CArrayPtr<CGulIcon>* icons =
- new(ELeave) CArrayPtrFlat<CGulIcon>( KCmArraySmallGranularity );
- CleanupStack::PushL( icons );
-
- CCmDesCArray* itemArray = new (ELeave) CCmDesCArray();
- listBox->Model()->SetItemTextArray( itemArray );
- // just to be on the safe side: next line is not mandatory, but advisable
- listBox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-
- // Note: we don't have to put 'itemArray' on to the cleanup stack, as the
- // model has already taken this object over.
-
- // Fill up the arrays
- for ( TInt i = 0; i < aAvailableBearers.Count(); i++ )
- {
- TUint32 bearerUid = aAvailableBearers[i];
-
- // Add icons to the icon array
- CGulIcon* icon = (CGulIcon*)(aCmManager.GetBearerInfoIntL(
- bearerUid,
- ECmBearerAvailableIcon ) );
-
- if( !icon )
- {
- continue;
- }
-
- CleanupStack::PushL( icon );
- icons->AppendL( icon );
- CleanupStack::Pop( icon ); // icon array took over ownership
-
- // Add item text to the array.
- // Query the name of the bearer first.
- HBufC* firstLine = aCmManager.GetBearerInfoStringL(
- bearerUid,
- ECmBearerAvailableName );
- CleanupStack::PushL( firstLine );
-
- // Query the availability string of the bearer second.
- HBufC* secondLine = aCmManager.GetBearerInfoStringL(
- bearerUid,
- ECmBearerAvailableText );
- CleanupStack::PushL( secondLine );
-
- // Third, combine these two strings along with an icon index.
- HBufC* listBoxLine = FormattedTextForListBoxLC( i,
- *firstLine,
- *secondLine );
-
- // Finally add the resulting string to the item array.
- itemArray->AppendL( bearerUid, *listBoxLine );
-
- CLOG_WRITE_1_PTR( NULL,
- "ShowAvailableMethodsL new listbox item: [%S]",
- listBoxLine );
-
- // Clean-up: firstLine, secondLine, listBoxLine.
- CleanupStack::PopAndDestroy( 3, firstLine );
- }
-
- // Handing over the ownership of the icon array to the listbox
- listBox->ItemDrawer()->FormattedCellData()->SetIconArrayL( icons );
-
- CleanupStack::Pop( icons ); // ownership already handed over
-
- // Set title
- HBufC* title = StringLoader::LoadLC( R_CMWIZARD_AVAILABLE_METHODS );
- popupList->SetTitleL( *title );
- CleanupStack::PopAndDestroy( title );
-
- if ( popupList->ExecuteLD() )
- {
- retval = itemArray->Uid( listBox->CurrentItemIndex() );
- }
-
- CleanupStack::Pop( popupList ); // ExecuteLD has already destroyed it
- CleanupStack::PopAndDestroy( listBox );
-
- CLOG_WRITE_1_PTR( NULL, "ShowAvailableMethodsL exit, retval: [%d]", retval );
-
- return retval;
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::SelectBearerL
-// ---------------------------------------------------------------------------
-//
-TUint32 TCmCommonUi::SelectBearerL( const CCmManagerImpl& aCmManager )
- {
- CLOG_ENTERFN_PTR( "SelectBearerL" );
- TUint32 retval = 0;
-
- CEikFormattedCellListBox* listBox =
- new (ELeave) CAknSingleGraphicPopupMenuStyleListBox();
- CleanupStack::PushL( listBox );
-
- CAknPopupList* popupList =
- CAknPopupList::NewL( listBox,
- R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
- AknPopupLayouts::EMenuGraphicWindow );
- CleanupStack::PushL( popupList );
-
- listBox->ConstructL( popupList, KDefaultListBoxFlags );
- listBox->CreateScrollBarFrameL( ETrue );
- listBox->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EAuto );
-
- RArray<TUint32> bearers( KCmArrayMediumGranularity );
- CleanupClosePushL( bearers );
- aCmManager.SupportedBearersL( bearers );
-
- TInt i;
-
- for ( i = 0; i < bearers.Count(); ++i )
- {
- if( !aCmManager.GetBearerInfoBoolL( bearers[i],
- ECmBearerHasUi ) )
- {
- bearers.Remove( i );
- --i;
- }
-
- }
-
- CArrayPtr<CGulIcon>* icons =
- new(ELeave) CArrayPtrFlat<CGulIcon>( KCmArrayMediumGranularity );
- CleanupStack::PushL( icons );
-
- // Note: it's interesting that we, in fact, set up an *ordered* list of
- // icons. Ordering of the icon array is based on the order of supported
- // bearers.
- for ( i = 0; i < bearers.Count(); ++i )
- {
- CGulIcon* icon = (CGulIcon*)(aCmManager.GetBearerInfoIntL(
- bearers[i],
- ECmBearerIcon ) );
-
- if( !icon )
- {
- bearers.Remove( i );
- --i;
- continue;
- }
-
- CleanupStack::PushL( icon );
-
- icons->AppendL( icon );
-
- CleanupStack::Pop( icon ); // icon array took over ownership
- }
-
- // Handing over the ownership of the icon array to the listbox
- listBox->ItemDrawer()->FormattedCellData()->SetIconArrayL( icons );
-
- CleanupStack::Pop( icons ); // ownership already handed over
-
- CCmDesCArray* itemArray = new (ELeave) CCmDesCArray();
- listBox->Model()->SetItemTextArray( itemArray );
- // just to be on the safe side: next line is not mandatory, but advisable
- listBox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-
- // Note: we don't have to put 'itemArray' on to the cleanup stack, as the
- // model has already taken this object over.
-
- for ( TInt i = 0; i < bearers.Count(); i++ )
- {
- // Here we take advantage of the fact that our icon array is ordered.
- // That is, the indices of the icons in the array will always be
- // in sync with those in the item text array (i.e. each bearer will
- // have the right icon associated with it).
- HBufC* bearerName = aCmManager.GetBearerInfoStringL( bearers[i],
- ECmBearerSupportedName );
- CleanupStack::PushL( bearerName );
-
- HBufC* lineText = FormattedTextForListBoxLC( i, *bearerName );
-
- itemArray->AppendL( bearers[i], *lineText );
-
- CLOG_WRITE_1_PTR( NULL, "SelectBearerL new listbox item: [%S]",
- lineText );
-
- CleanupStack::PopAndDestroy( 2, bearerName ); // lineText, bearerName
- }
-
- CleanupStack::PopAndDestroy( &bearers );
-
- // Set title
- HBufC* title = StringLoader::LoadLC( R_CMWIZARD_SELECT_CONN_METHOD );
- popupList->SetTitleL( *title );
- CleanupStack::PopAndDestroy( title );
-
- if ( popupList->ExecuteLD() )
- {
- retval = itemArray->Uid( listBox->CurrentItemIndex() );
- }
-
- CleanupStack::Pop( popupList ); // ExecuteLD has already destroyed it
- CleanupStack::PopAndDestroy( listBox );
-
- CLOG_WRITE_1_PTR( NULL, "SelectBearerL exit, retval: [%d]", retval );
-
- return retval;
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowConfirmationQueryL
-// ---------------------------------------------------------------------------
-//
-TInt TCmCommonUi::ShowConfirmationQueryL( HBufC* aPrompt )
- {
- CLOG_ENTERFN_PTR( "ShowConfirmationQueryL" );
-
- CleanupStack::PushL( aPrompt );
-
- CAknQueryDialog* dlg =
- CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone );
- TInt retval = dlg->ExecuteLD( R_CONFIRMATION_QUERY, *aPrompt );
-
- CleanupStack::PopAndDestroy( aPrompt );
-
- return retval;
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowMemoryFullConfirmationQueryL
-// ---------------------------------------------------------------------------
-//
-TInt TCmCommonUi::ShowMemoryFullConfirmationQueryL()
- {
- CLOG_ENTERFN_PTR( "ShowMemoryFullConfirmationQueryL" );
-
- // need to check if EikonEnv exists in this context
- CEikonEnv* eikPtr = CEikonEnv::Static();
- TInt retval( KErrNone );
- if( eikPtr )
- {
- HBufC* prompt = eikPtr->AllocReadResourceL( R_QTN_MEMLO_MEMORY_FULL );
- CleanupStack::PushL( prompt );
- CAknQueryDialog* dlg =
- CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone );
- retval = dlg->ExecuteLD( R_MEMORY_FULL_CONFIRMATION_QUERY, *prompt );
- CleanupStack::PopAndDestroy( prompt );
- }
-
- return retval;
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowNoteL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowNoteL( TInt aResId, TCmNoteType aNoteType )
- {
- CLOG_ENTERFN_PTR( "ShowNoteL" );
- HBufC* prompt = CEikonEnv::Static()->AllocReadResourceLC( aResId );
-
- TInt result = ShowNoteL( *prompt, aNoteType );
-
- CleanupStack::PopAndDestroy( prompt );
-
- return result;
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowNoteL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowNoteL( TInt aResId, const TDesC& aString,
- TCmNoteType aNoteType )
- {
- CLOG_ENTERFN_PTR( "ShowNoteL" );
- HBufC* prompt = StringLoader::LoadLC( aResId, aString );
-
- TInt result = ShowNoteL( *prompt, aNoteType );
-
- CleanupStack::PopAndDestroy( prompt );
-
- return result;
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowNoteL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowNoteL( const TDesC& aPrompt, TCmNoteType aNoteType )
- {
- CLOG_ENTERFN_PTR( "ShowNoteL" );
-
- CAknNoteDialog* dlg = new (ELeave) CAknNoteDialog(
- CAknNoteDialog::ENoTone,
- CAknNoteDialog::ELongTimeout );
-
- TInt resId;
- switch ( aNoteType )
- {
- case ECmOkNote:
- {
- resId = R_OK_NOTE;
- break;
- }
- case ECmWarningNote:
- {
- resId = R_WARNING_NOTE;
- break;
- }
- case ECmErrorNote:
- {
- resId = R_ERROR_NOTE;
- break;
- }
- default:
- {
- resId = R_INFO_NOTE;
- }
- }
-
- // no need to worry about LC (PrepareLC), RunLD takes care of it
- dlg->PrepareLC( resId );
- dlg->SetTextL( aPrompt );
-
- return dlg->RunLD();
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::FormattedTextForListBoxLC
-// ---------------------------------------------------------------------------
-//
-HBufC* TCmCommonUi::FormattedTextForListBoxLC( TInt aIconIndex,
- const TDesC& aLineText )
- {
- HBufC* formattedString =
- HBufC::NewL( KNumberOfStaticCharsIn1LineFormattedString +
- aLineText.Length() );
-
- TPtr des = formattedString->Des();
- des.AppendFormat( KSingleNumberAsString, aIconIndex );
- des.Append( TChar( KSettingsListBoxItemPrefix ) );
- des.Append( aLineText );
-
- CleanupStack::PushL( formattedString );
-
- return formattedString;
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::FormattedTextForListBoxLC
-// ---------------------------------------------------------------------------
-//
-HBufC* TCmCommonUi::FormattedTextForListBoxLC( TInt aIconIndex,
- const TDesC& aFirstLine,
- const TDesC& aSecondLine )
- {
- HBufC* formattedString =
- HBufC::NewL( KNumberOfStaticCharsIn2LineFormattedString +
- aFirstLine.Length() +
- aSecondLine.Length() );
-
- TPtr des = formattedString->Des();
- des.AppendFormat( KSingleNumberAsString, aIconIndex );
- des.Append( TChar( KSettingsListBoxItemPrefix ) );
- des.Append( aFirstLine );
- des.Append( TChar( KSettingsListBoxItemPrefix ) );
- des.Append( aSecondLine );
-
- CleanupStack::PushL( formattedString );
-
- return formattedString;
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::FormattedTextForListBoxLC
-// ---------------------------------------------------------------------------
-//
-HBufC* TCmCommonUi::FormattedTextForListBoxLC( TInt aIconIndex,
- TInt aFirstLineResId,
- TInt aSecondLineResId )
- {
- HBufC* secondLine = StringLoader::LoadLC( aSecondLineResId );
-
- HBufC* formattedString = FormattedTextForListBoxL( aIconIndex,
- aFirstLineResId,
- *secondLine );
-
- CleanupStack::PopAndDestroy( secondLine );
-
- CleanupStack::PushL( formattedString );
-
- return formattedString;
- }
-
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::FormattedTextForListBoxLC
-// ---------------------------------------------------------------------------
-//
-HBufC* TCmCommonUi::FormattedTextForListBoxLC( TInt aIconIndex,
- TInt aFirstLineResId,
- TInt aSecondLineResId,
- TInt aReplacementInSecondLine )
- {
- HBufC* secondLine = StringLoader::LoadLC( aSecondLineResId,
- aReplacementInSecondLine );
-
- HBufC* formattedString = FormattedTextForListBoxL( aIconIndex,
- aFirstLineResId,
- *secondLine );
-
- CleanupStack::PopAndDestroy( secondLine );
-
- CleanupStack::PushL( formattedString );
-
- return formattedString;
- }
-
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::FormattedTextForListBoxL
-// ---------------------------------------------------------------------------
-//
-HBufC* TCmCommonUi::FormattedTextForListBoxL( TInt aIconIndex,
- TInt aFirstLineResId,
- const TDesC& aSecondLine )
- {
- HBufC* firstLine = StringLoader::LoadLC( aFirstLineResId );
-
- HBufC* formattedString =
- HBufC::NewL( KNumberOfStaticCharsIn2LineFormattedString +
- firstLine->Length() +
- aSecondLine.Length() );
-
- TPtr des = formattedString->Des();
- des.AppendFormat( KSingleNumberAsString, aIconIndex );
- des.Append( TChar( KSettingsListBoxItemPrefix ) );
- des.Append( *firstLine );
- des.Append( TChar( KSettingsListBoxItemPrefix ) );
- des.Append( aSecondLine );
-
- CleanupStack::PopAndDestroy( firstLine );
-
- return formattedString;
- }
-
-
-// --------------------------------------------------------------------------
-// TCmCommonUi::ShowPopupListL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool TCmCommonUi::ShowPopupListL( const TDesC& aTitle,
- CDesCArrayFlat* aTextItems,
- CArrayPtr<CGulIcon>* aIconArray,
- const TUint aSoftKeys,
- TInt& aSelection )
- {
- TBool retVal ( EFalse );
-
- // Prepare the dialog
- CEikFormattedCellListBox* list = NULL;
- if ( aIconArray )
- {
- list = new ( ELeave ) CAknSingleGraphicPopupMenuStyleListBox;
- }
- else
- {
- list = new ( ELeave ) CAknSinglePopupMenuStyleListBox;
- }
-
- CleanupStack::PushL( list );
-
- CAknPopupList* popupList = CAknPopupList::NewL(
- list, aSoftKeys,
- AknPopupLayouts::EMenuWindow );
- CleanupStack::PushL( popupList );
-
- // initialise listbox.
- list->ConstructL( popupList, CEikListBox::ELeftDownInViewRect );
- list->CreateScrollBarFrameL( ETrue );
- list->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EAuto );
-
- // Handing over the ownership of the icon array to the listbox
- if ( aIconArray )
- {
- list->ItemDrawer()->FormattedCellData()->SetIconArrayL( aIconArray );
- }
-
- // Items
- list->Model()->SetItemTextArray( aTextItems );
-
- // Title
- popupList->SetTitleL( aTitle );
-
- // Show the dialog
- if ( popupList->ExecuteLD() )
- {
- aSelection = list->CurrentItemIndex();
- retVal = ETrue;
- }
-
- CleanupStack::Pop( popupList );
- CleanupStack::PopAndDestroy( list );
-
- return retVal;
- }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowAlwaysAskNoteL
-// ---------------------------------------------------------------------------
-//
-TBool TCmCommonUi::ShowAlwaysAskNoteL( TCmDefConnValue aOldDefConn,
- CCmManagerImpl& aCmManagerImpl )
- {
- TCmDefConnValue newConn;
- aCmManagerImpl.ReadDefConnL( newConn );
- if ( newConn != aOldDefConn )
- {
- ShowNoteL( R_CMMANAGERUI_CONF_DEFAULT_ALWAYS_ASK,
- TCmCommonUi::ECmOkNote );
- return ETrue;
- }
- return EFalse;
- }
-
-