/*
* Copyright (c) 2008 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: Utils for IMUiServiceTab modules.
*
*/
// INCLUDE FILES
#include "vimpstutilsdialog.h"
#include "vimpstutilstextquerydialog.h"
#include <StringLoader.h>
#include <AknQueryDialog.h>
#include <vimpstuires.rsg>
#include <AknQueryDialog.h>
#include "uiservicetabtracer.h"
// ---------------------------------------------------------
// VIMPSTUtilsDialog::DisplayNoteDialogL
// (other items were commented in a header).
// ---------------------------------------------------------
//
EXPORT_C TInt VIMPSTUtilsDialog::DisplayNoteDialogL( const TDesC& aText,
const TInt aButtonsResourceId, /*= R_AVKON_SOFTKEYS_EMPTY*/
const CAknNoteDialog::TTimeout& aTimeout /*= CAknNoteDialog::EShortTimeout*/ )
{
TRACER_AUTO;
// CodeScanner warning ignored because CS does not
// notice that PrepareLC puts the dialog to cleanupstack
CAknNoteDialog* dlg = new ( ELeave ) CAknNoteDialog( // CSI: 35 # See comment above
CAknNoteDialog::EConfirmationTone , aTimeout );
//TODO : Modify the function body when required later
dlg->PrepareLC( R_IM_INFO_NOTE_TEMPLATE );
dlg->SetTextL( aText );
CEikButtonGroupContainer& cba = dlg->ButtonGroupContainer();
cba.SetCommandSetL( aButtonsResourceId );
return dlg->RunLD();
}
// ---------------------------------------------------------
// VIMPSTUtilsDialog::DisplayErrorNoteL
// (other items were commented in a header).
// ---------------------------------------------------------
//
EXPORT_C TInt VIMPSTUtilsDialog::DisplayErrorNoteL( const TDesC& aText,
TBool aSoftkeyOk /*= EFalse*/ )
{
TRACER_AUTO;
//TODO : Modify the function body when required later
if( aSoftkeyOk )
{
return VIMPSTUtilsDialog::DisplayQueryDialogL( R_IM_ERROR_NOTE_TEMPLATE_WITH_OK, aText );
}
else
{
// CodeScanner warning ignored because CS does not
// notice that PrepareLC puts the dialog to cleanupstack
CAknNoteDialog* dlg = // CSI: 35 # See comment above
new ( ELeave ) CAknNoteDialog( CAknNoteDialog::EErrorTone ,
CAknNoteDialog::ELongTimeout );
dlg->PrepareLC( R_IM_ERROR_NOTE_TEMPLATE );
dlg->SetTextL( aText );
return dlg->RunLD();
}
}
// ---------------------------------------------------------
// VIMPSTUtilsDialog::DisplayQueryDialogL
// (other items were commented in a header).
// ---------------------------------------------------------
//
EXPORT_C TInt VIMPSTUtilsDialog::DisplayQueryDialogL( TInt aDialogResourceId,
const TDesC& aPrompt )
{
TRACER_AUTO;
CAknQueryDialog* dlg = new (ELeave) CAknQueryDialog(
CAknQueryDialog::ENoTone );
if( aPrompt != KNullDesC )
{
CleanupStack::PushL( dlg );
dlg->SetPromptL( aPrompt );
CleanupStack::Pop( dlg );
}
return dlg->ExecuteLD( aDialogResourceId );
}
// ---------------------------------------------------------
// VIMPSTUtilsDialog::DisplayTextQueryDialogL()
// Displays text query dialog
// (other items were commented in a header).
// ---------------------------------------------------------
//
EXPORT_C TInt VIMPSTUtilsDialog::DisplayTextQueryDialogL(
TDes& aDataText,
const TInt aTitleResourceId,
const TInt aDialogResourceId,
TBool aPredictiveInput /* = EFalse */,
TBool aLeftSoftkeyAlwaysVisible /* = EFalse */,
TLeftSoftkey /*aLeftSoftkey = EDefault */,
TInitialSelectionMode aSelectionMode /* = ESelectAll */,
TBool aDomainSelectionQuery /* = EFalse */ )
{
TRACER_AUTO;
// CodeScanner warning ignored because CS does not
// notice that PrepareLC puts the dialog to cleanupstack
CAknTextQueryDialog* dlg = CVIMPSTUtilsTextQueryDialog::NewL( aDataText, // CSI: 35 # See comment above
CAknQueryDialog::ENoTone,
aLeftSoftkeyAlwaysVisible,
aDomainSelectionQuery );
dlg->PrepareLC( aDialogResourceId );
HBufC* text = CEikonEnv::Static()->AllocReadResourceLC( aTitleResourceId );
dlg->SetPromptL( *text );
dlg->SetPredictiveTextInputPermitted( aPredictiveInput );
CleanupStack::PopAndDestroy( text );
// Set correct selection mode
switch ( aSelectionMode )
{
case ESelectNone:
{
CCoeControl* ctrl = dlg->ControlOrNull( EGeneralQuery );
if ( ctrl )
{
CAknQueryControl* query = static_cast<CAknQueryControl*>( ctrl );
ctrl = query->ControlByLayoutOrNull( EDataLayout );
if ( ctrl )
{
CEikEdwin* edwin = static_cast<CEikEdwin*>( ctrl );
edwin->AddFlagToUserFlags( CEikEdwin::ENoAutoSelection );
}
}
break;
}
default:
{
// Use default flags in edwin
break;
}
}
return ( dlg->RunLD() );
}
// ---------------------------------------------------------
// VIMPSTUtilsDialog::DisplayListQueryDialogL
// (other items were commented in a header).
// ---------------------------------------------------------
//
EXPORT_C TInt VIMPSTUtilsDialog::DisplayListQueryDialogL( TInt* aSelectedIndex,
MDesCArray* aItemList,
const TInt aDialogResourceId,
const TDesC& aAlternativeTitle /*KNullDesC*/,
const TDesC& aListEmptyText /*= KNullDesC*/,
const TBool aIsForwardQuery /* EFalse */,
const TBool /*aIsOnlySelect = EFalse */ )
{
TRACER_AUTO;
CAknListQueryDialog* dlg = new (ELeave) CAknListQueryDialog(
aSelectedIndex );
dlg->PrepareLC( aDialogResourceId );
dlg->SetItemTextArray( aItemList );
dlg->SetOwnershipType( ELbmDoesNotOwnItemArray );
if ( aAlternativeTitle != KNullDesC )
{
dlg->SetHeaderTextL( aAlternativeTitle );
}
if ( aItemList->MdcaCount() == 0 )
{
CEikButtonGroupContainer& cba = dlg->ButtonGroupContainer();
cba.SetCommandSetL( R_AVKON_SOFTKEYS_CANCEL );
}
else
{
if ( aIsForwardQuery )
{
CEikButtonGroupContainer& cba = dlg->ButtonGroupContainer();
cba.SetCommandSetL( R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT );
}
}
dlg->ListBox()->SetCurrentItemIndex( *aSelectedIndex );
if( aListEmptyText != KNullDesC )
{
dlg->ListBox()->View()->SetListEmptyTextL( aListEmptyText );
}
return ( dlg->RunLD() );
}
// End of File