diff -r 491b3ed49290 -r 65326cf895ed filemanager/View/src/FileManagerDlgUtils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filemanager/View/src/FileManagerDlgUtils.cpp Wed Sep 01 12:31:07 2010 +0100 @@ -0,0 +1,669 @@ +/* +* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0"" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Dialog utilities +* +*/ + + + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "FileManagerDlgUtils.h" +#include "CFileManagerMMCInfoPopup.h" +#include "CFileManagerCheckBoxSettingPage.h" +#include "CFileManagerFileNameQueryDlg.h" +#include "Cfilemanagerfoldernamequerydlg.h" +#include "CFileManagerInfoPopup.h" + + +// ======== MEMBER FUNCTIONS ======== + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowOOfMSettingQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowOOfMSettingQueryL( + const TInt aTitleId, + const MDesCArray* aTextArray, + TInt& aSelectedIndex ) + { + TInt index( aSelectedIndex ); + TBool ret( EFalse ); + HBufC* title = StringLoader::LoadLC( aTitleId ); + CAknRadioButtonSettingPage* dlg = + new ( ELeave )CAknRadioButtonSettingPage( + R_FILEMANAGER_SETTING_RADIOBUTTON_PAGE, index, aTextArray ); + CleanupStack::PushL( dlg ); + dlg->SetSettingTextL( *title ); + CleanupStack::Pop( dlg ); + if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) ) + { + // Get new selected item and inform change + if ( index != aSelectedIndex ) + { + aSelectedIndex = index; + ret = ETrue; + } + } + CleanupStack::PopAndDestroy( title ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowOOfMSettingQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowOOfMSettingQueryL( + const TInt aTitleId, + const TInt aTextIds, + TInt& aSelectedIndex ) + { + CDesCArray* texts = CCoeEnv::Static()->ReadDesCArrayResourceL( aTextIds ); + CleanupStack::PushL( texts ); + TBool ret( ShowOOfMSettingQueryL( aTitleId, texts, aSelectedIndex ) ); + CleanupStack::PopAndDestroy( texts ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowWeekdayQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowWeekdayQueryL( + const TInt aTitleId, + TDay& aDay ) + { + const TInt KDaysPerWeek = 7; + TLocale locale; + TDay startingDay( locale.StartOfWeek() ); + CDesCArray* texts = new ( ELeave ) CDesCArrayFlat( KDaysPerWeek ); + CleanupStack::PushL( texts ); + TInt j( startingDay % KDaysPerWeek ); + TDayName dayName; + for ( TInt i( 0 ); i < KDaysPerWeek; i++ ) + { + dayName.Set( static_cast< TDay >( j ) ); + texts->AppendL( dayName ); + j = ( j + 1 ) % KDaysPerWeek; + } + TInt index( 0 ); + if ( aDay >= startingDay ) + { + index = aDay - startingDay; + } + else + { + index = KDaysPerWeek - startingDay + aDay; + } + TBool ret( ShowOOfMSettingQueryL( aTitleId, texts, index ) ); + if ( ret ) + { + aDay = static_cast< TDay >( ( startingDay + index ) % KDaysPerWeek ); + } + CleanupStack::PopAndDestroy( texts ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowNOfMSettingQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowNOfMSettingQueryL( + const TInt aTitleId, + const TInt aTextIds, + TUint32& aSelection, + const TInt aDominantIndex ) + { + TBool ret( EFalse ); + + // Get title and text array + HBufC* title = StringLoader::LoadLC( aTitleId ); + CDesCArray* texts = CCoeEnv::Static()->ReadDesCArrayResourceL( aTextIds ); + CleanupStack::PushL( texts ); + + // Create selection array + TInt count( texts->MdcaCount() ); + CSelectionItemList* items = + new ( ELeave ) CSelectionItemList( count ); + CleanupStack::PushL( items ); + for ( TInt i( 0 ); i < count; i++ ) + { + TBool check( EFalse ); + if ( aSelection & ( 1 << i ) ) + { + check = ETrue; + } + TPtrC ptr( texts->MdcaPoint( i ) ); + CSelectableItem* selectionItem = new ( ELeave ) CSelectableItem( + ptr, check ); + CleanupStack::PushL( selectionItem ); + selectionItem->ConstructL(); + items->AppendL( selectionItem ); + CleanupStack::Pop( selectionItem ); + } + + // Create multiselection list + CFileManagerCheckBoxSettingPage* dlg = + new ( ELeave ) CFileManagerCheckBoxSettingPage( + R_FILEMANAGER_SETTING_CHECKBOX_PAGE, *items, aDominantIndex ); + CleanupStack::PushL( dlg ); + dlg->SetSettingTextL( *title ); + CleanupStack::Pop( dlg ); + if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) ) + { + // Get new selection and inform changes + TUint32 selection( 0 ); + for ( TInt i( 0 ); i < count; i++ ) + { + if ( items->At( i )->SelectionStatus() ) + { + selection |= 1 << i; + } + } + if ( selection != aSelection ) + { + aSelection = selection; + ret = ETrue; + } + } + items->ResetAndDestroy(); + CleanupStack::PopAndDestroy( items ); + CleanupStack::PopAndDestroy( texts ); + CleanupStack::PopAndDestroy( title ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowTimeSettingQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowTimeSettingQueryL( + const TInt aTitleId, TTime& aTime ) + { + TTime time( aTime ); + TBool ret( EFalse ); + HBufC* title = StringLoader::LoadLC( aTitleId ); + CAknTimeSettingPage* dlg = + new (ELeave) CAknTimeSettingPage( + R_FILEMANAGER_TIME_SETTING_PAGE, + time); + CleanupStack::PushL( dlg ); + dlg->SetSettingTextL( *title ); + CleanupStack::Pop( dlg ); + if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) ) + { + // Get new time and inform change + if ( time != aTime ) + { + aTime = time; + ret = ETrue; + } + } + CleanupStack::PopAndDestroy( title ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowInfoQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowInfoQueryL( + const TDesC& aText ) + { + CAknMessageQueryDialog* dlg = + CAknMessageQueryDialog::NewL( const_cast< TDesC& >( aText ) ); + dlg->ExecuteLD( R_FILEMANAGER_INFO_QUERY ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowInfoQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowInfoQueryL( + const TInt aTextId, const TDesC& aValue ) + { + HBufC* text = NULL; + if ( aValue.Length() ) + { + text = StringLoader::LoadLC( aTextId, aValue ); + } + else + { + text = StringLoader::LoadLC( aTextId ); + } + ShowInfoQueryL( *text ); + CleanupStack::PopAndDestroy( text ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowInfoQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowInfoQueryL( + const TInt aTextId, const TInt aValue ) + { + HBufC* text = StringLoader::LoadLC( aTextId, aValue ); + ShowInfoQueryL( *text ); + CleanupStack::PopAndDestroy( text ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowErrorNoteL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowErrorNoteL( + const TInt aTextId, const TDesC& aValue ) + { + HBufC* text = NULL; + if ( aValue.Length() ) + { + text = StringLoader::LoadLC( aTextId, aValue ); + } + else + { + text = StringLoader::LoadLC( aTextId ); + } + ShowErrorNoteL( *text ); + CleanupStack::PopAndDestroy( text ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowConfirmNoteL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowConfirmNoteL( + const TInt aTextId ) + { + HBufC* text = StringLoader::LoadLC( aTextId ); + CAknConfirmationNote* confirmNote = + new( ELeave ) CAknConfirmationNote( ETrue ); + confirmNote->ExecuteLD( *text ); + CleanupStack::PopAndDestroy( text ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowWarningNoteL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowWarningNoteL( + const TInt aTextId ) + { + HBufC* text = StringLoader::LoadLC( aTextId ); + CAknWarningNote* warningNote = + new( ELeave ) CAknWarningNote( ETrue ); + warningNote->ExecuteLD( *text ); + CleanupStack::PopAndDestroy( text ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowConfirmQueryWithYesNoL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowConfirmQueryWithYesNoL( + const TInt aTextId, const TDesC& aValue ) + { + HBufC* text = NULL; + if ( aValue.Length() ) + { + text = StringLoader::LoadLC( aTextId, aValue ); + } + else + { + text = StringLoader::LoadLC( aTextId ); + } + + TBool ret( ShowConfirmQueryWithYesNoL( *text ) ); + CleanupStack::PopAndDestroy( text ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowConfirmQueryWithYesNoL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowConfirmQueryWithYesNoL( + const TDesC& aText ) + { + TBool ret( EFalse ); + CAknQueryDialog* dlg = CAknQueryDialog::NewL(); + if ( dlg->ExecuteLD( R_FILEMANAGER_CONFIRM_QUERY_WITH_YES_NO, aText ) ) + { + ret = ETrue; + } + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowConfirmQueryWithOkL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowConfirmQueryWithOkL( + const TIcons aIcons, + const TInt aTextId, + const TDesC& aValue ) + { + HBufC* text = NULL; + if ( aValue.Length() ) + { + text = StringLoader::LoadLC( aTextId, aValue ); + } + else + { + text = StringLoader::LoadLC( aTextId ); + } + ShowConfirmQueryWithOkL( aIcons, *text ); + CleanupStack::PopAndDestroy( text ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowConfirmQueryWithOkL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowConfirmQueryWithOkL( + const TIcons aIcons, + const TInt aTextId, + const TInt aValue ) + { + HBufC* text = StringLoader::LoadLC( aTextId, aValue ); + ShowConfirmQueryWithOkL( aIcons, *text ); + CleanupStack::PopAndDestroy( text ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowConfirmQueryWithOkL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowConfirmQueryWithOkL( + const TIcons aIcons, + const TDesC& aText ) + { + TInt resId( 0 ); + switch ( aIcons ) + { + case EInfoIcons: + { + resId = R_FILEMANAGER_INFO_CONFIRM_QUERY_WITH_OK; + break; + } + case EErrorIcons: + { + resId = R_FILEMANAGER_ERROR_CONFIRM_QUERY_WITH_OK; + break; + } + default: + { + break; + } + } + if ( resId ) + { + CAknQueryDialog* dlg = CAknQueryDialog::NewL(); + dlg->ExecuteLD( resId, aText ); + } + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowConfirmQueryWithOkCancelL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowConfirmQueryWithOkCancelL( + const TDesC& aText ) + { + TBool ret( EFalse ); + CAknQueryDialog* dlg = CAknQueryDialog::NewL(); + if ( dlg->ExecuteLD( + R_FILEMANAGER_CONFIRM_QUERY_WITH_OK_CANCEL, aText ) ) + { + ret = ETrue; + } + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowConfirmQueryWithOkCancelL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowConfirmQueryWithOkCancelL( + const TInt aTextId, + const TDesC& aValue ) + { + HBufC* text = NULL; + if ( aValue.Length() ) + { + text = StringLoader::LoadLC( aTextId, aValue ); + } + else + { + text = StringLoader::LoadLC( aTextId ); + } + TBool ret( ShowConfirmQueryWithOkCancelL( *text ) ); + CleanupStack::PopAndDestroy( text ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowInfoNoteL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowInfoNoteL( + const TDesC& aText ) + { + CAknInformationNote* dlg = new(ELeave) CAknInformationNote( ETrue ); + dlg->ExecuteLD( aText ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowInfoNoteL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowInfoNoteL( + const TInt aTextId, const TDesC& aValue ) + { + HBufC* text = NULL; + if( aValue.Length() ) + { + text = StringLoader::LoadLC( aTextId, aValue ); + } + else + { + text = StringLoader::LoadLC( aTextId ); + } + ShowInfoNoteL( *text ); + CleanupStack::PopAndDestroy( text ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowInfoNoteL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowInfoNoteL( + const TInt aTextId, const TInt aValue ) + { + HBufC* text = StringLoader::LoadLC( aTextId, aValue ); + ShowInfoNoteL( *text ); + CleanupStack::PopAndDestroy( text ); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowSimplePasswordQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowSimplePasswordQueryL( + const TInt aTitleId, + TDes& aPwd ) + { + TBool ret( EFalse ); + HBufC* title = StringLoader::LoadLC( aTitleId ); + ret = ShowSimplePasswordQueryL( *title, aPwd ); + CleanupStack::PopAndDestroy( title ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowPasswordQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowPasswordQueryL( + TDes& aPwd ) + { + HBufC* confirm = HBufC::NewLC( aPwd.MaxLength() ); + TPtr ptrConfirm( confirm->Des() ); + TBool ret( EFalse ); + // Execute dialog again and again until cancelled or passwords match + TBool isDone( EFalse ); + while( !isDone ) + { + aPwd.FillZ( aPwd.MaxLength() ); + aPwd.Zero(); + ptrConfirm.FillZ( ptrConfirm.MaxLength() ); + ptrConfirm.Zero(); + + CAknMultiLineDataQueryDialog* dlg = + CAknMultiLineDataQueryDialog::NewL( + aPwd, ptrConfirm ); + if ( dlg->ExecuteLD( R_FILEMANAGER_PASSWORD_QUERY ) ) + { + // Check if the words match + if ( aPwd.Compare( ptrConfirm ) ) + { + FileManagerDlgUtils::ShowErrorNoteL( + R_QTN_PASSWORDS_DONT_MATCH_TEXT ); + } + else + { + ret = ETrue; + isDone = ETrue; + } + } + else + { + isDone = ETrue; + } + } + CleanupStack::PopAndDestroy( confirm ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowMemoryStoreInfoPopupL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowMemoryStoreInfoPopupL( + const TFileManagerDriveInfo& aInfo + ) + { + CFileManagerMMCInfoPopup* popup = CFileManagerMMCInfoPopup::NewL( + aInfo ); + popup->ExecuteLD(); + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowFileNameQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowFileNameQueryL( + const TInt aTitleId, + const TDesC& aOldName, + TDes& aNewName, + CFileManagerEngine& aEngine ) + { + TBool ret( EFalse ); + HBufC* title = StringLoader::LoadLC( aTitleId ); + CFileManagerFileNameQueryDlg* dlg = + CFileManagerFileNameQueryDlg::NewL( + aOldName, aNewName, aEngine ); + if ( dlg->ExecuteLD( R_FILEMANAGER_FILE_NAME_QUERY, *title ) ) + { + ret = ETrue; + } + CleanupStack::PopAndDestroy( title ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowFolderNameQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowFolderNameQueryL( + const TInt aTitleId, + TDes& aName, + CFileManagerEngine& aEngine, + const TBool aNameGeneration ) + { + TBool ret( EFalse ); + HBufC* title = StringLoader::LoadLC( aTitleId ); + CFileManagerFolderNameQueryDlg* dlg = + CFileManagerFolderNameQueryDlg::NewL( + aName, aEngine, aNameGeneration ); + if ( dlg->ExecuteLD( R_FILEMANAGER_FILE_NAME_QUERY, *title ) ) + { + ret = ETrue; + } + CleanupStack::PopAndDestroy( title ); + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowItemInfoPopupL( +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowItemInfoPopupL( + CFileManagerItemProperties& aProperties, + const CFileManagerFeatureManager& aFeatureManager ) + { + CFileManagerInfoPopup* popup = NULL; + TRAPD ( err, popup = CFileManagerInfoPopup::NewL( + aProperties, aFeatureManager ) ); + if ( err == KErrNone ) + { + popup->ExecuteLD(); + } + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowSimplePasswordQueryL +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool FileManagerDlgUtils::ShowSimplePasswordQueryL( + const TDesC& aText, TDes& aPwd ) + { + TBool ret( EFalse ); + CAknTextQueryDialog* dlg = + CAknTextQueryDialog::NewL( aPwd, CAknQueryDialog::ENoTone ); + if ( dlg->ExecuteLD( R_FILEMANAGER_SIMPLE_PASSWORD_QUERY, aText ) ) + { + ret = ETrue; + } + return ret; + } + +// ---------------------------------------------------------------------------- +// FileManagerDlgUtils::ShowErrorNoteL +// ---------------------------------------------------------------------------- +// +EXPORT_C void FileManagerDlgUtils::ShowErrorNoteL( const TDesC& aText ) + { + CAknErrorNote* dlg = new( ELeave ) CAknErrorNote( ETrue ); + dlg->ExecuteLD( aText ); + } + +// End of File