filemanager/View/src/FileManagerDlgUtils.cpp
changeset 0 6a9f87576119
child 20 efe289f793e7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/View/src/FileManagerDlgUtils.cpp	Mon Jan 18 20:09:41 2010 +0200
@@ -0,0 +1,665 @@
+/*
+* 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 <avkon.rsg>
+#include <StringLoader.h>
+#include <aknradiobuttonsettingpage.h>
+#include <akncheckboxsettingpage.h>
+#include <aknmfnesettingpage.h>
+#include <aknmessagequerydialog.h>
+#include <aknnotewrappers.h>
+#include <FileManagerView.rsg>
+#include <CFileManagerEngine.h>
+#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 = CFileManagerInfoPopup::NewL(
+        aProperties, aFeatureManager );
+    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