filemanager/View/src/FileManagerDlgUtils.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 25 May 2010 12:28:34 +0300
branchRCL_3
changeset 20 efe289f793e7
parent 0 6a9f87576119
child 28 529f3bf5c2f1
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

/*
* 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