filemanager/App/src/CFileManagerViewBase.cpp
branchRCL_3
changeset 52 40fb776cbfb3
parent 45 6a0ceb387ac7
equal deleted inserted replaced
45:6a0ceb387ac7 52:40fb776cbfb3
   351 //
   351 //
   352 void CFileManagerViewBase::HandleCommandL( TInt aCommand )
   352 void CFileManagerViewBase::HandleCommandL( TInt aCommand )
   353     {
   353     {
   354     if ( !iContainer ) return;
   354     if ( !iContainer ) return;
   355 
   355 
   356     // Initialization, do not allow marking mode exit as default.
       
   357     iContainer->AllowMarkingModeExit( EFalse );
       
   358 
       
   359     TBool updateCba( !iContainer->SelectionModeEnabled() );
   356     TBool updateCba( !iContainer->SelectionModeEnabled() );
   360 
   357 
   361     switch( aCommand )
   358     switch( aCommand )
   362         {
   359         {
   363         case EFileManagerOpen:
   360         case EFileManagerOpen:
   381             break;
   378             break;
   382             }
   379             }
   383         case EFileManagerNewFolder:
   380         case EFileManagerNewFolder:
   384             {
   381             {
   385             CmdNewFolderL();
   382             CmdNewFolderL();
       
   383             break;
       
   384             }
       
   385         case EFileManagerMarkOne:   // FALLTHROUGH
       
   386         case EFileManagerUnmarkOne: // FALLTHROUGH
       
   387         case EFileManagerToggleMark:
       
   388             {
       
   389             CmdToggleMarkL();
       
   390             break;
       
   391             }
       
   392         case EFileManagerMarkAll:
       
   393             {
       
   394             CmdMarkAllL();
       
   395             break;
       
   396             }
       
   397         case EFileManagerUnmarkAll:
       
   398             {
       
   399             CmdUnmarkAllL();
   386             break;
   400             break;
   387             }
   401             }
   388         case EFileManagerRename:
   402         case EFileManagerRename:
   389             {
   403             {
   390             CmdRenameL();
   404             CmdRenameL();
   408 //            break;
   422 //            break;
   409 //            }
   423 //            }
   410         case EFileManagerReceiveViaIR:
   424         case EFileManagerReceiveViaIR:
   411             {
   425             {
   412             CmdReceiveViaIRL();
   426             CmdReceiveViaIRL();
       
   427             break;
       
   428             }
       
   429         case EFileManagerCheckMark: // Suppress
       
   430             {
   413             break;
   431             break;
   414             }
   432             }
   415         case EAknSoftkeyContextOptions: // FALLTHROUGH
   433         case EAknSoftkeyContextOptions: // FALLTHROUGH
   416         case EFileManagerSelectionKey:
   434         case EFileManagerSelectionKey:
   417             {
   435             {
   519 // 
   537 // 
   520 // -----------------------------------------------------------------------------
   538 // -----------------------------------------------------------------------------
   521 // 
   539 // 
   522 void CFileManagerViewBase::SendUiQueryL()
   540 void CFileManagerViewBase::SendUiQueryL()
   523     {
   541     {
   524     // Do not allow marking mode exit during send.
   542     //iSendUiPopupOpened = ETrue;	
   525     // No need to call iContainer->AllowMarkingModeExit( EFalse ).
   543     	
   526     // Already done in CFileManagerViewBase::HandleCommandL().
       
   527     
       
   528     CSendUi& sendUi( static_cast< CFileManagerAppUi* >( AppUi() )->SendUiL() );
   544     CSendUi& sendUi( static_cast< CFileManagerAppUi* >( AppUi() )->SendUiL() );
   529     CMessageData* msgData = CMessageData::NewL();
   545     CMessageData* msgData = CMessageData::NewL();
   530     CleanupStack::PushL( msgData );
   546     CleanupStack::PushL( msgData );
   531     TInt msgSize( KMessageSize );
   547     TInt msgSize( KMessageSize );
   532     CArrayFixFlat< TInt >* files = GetSendFilesLC( msgSize );
   548     CArrayFixFlat< TInt >* files = GetSendFilesLC( msgSize );
   575 // 
   591 // 
   576 // -----------------------------------------------------------------------------
   592 // -----------------------------------------------------------------------------
   577 // 
   593 // 
   578 void CFileManagerViewBase::MarkMenuFilteringL( CEikMenuPane& aMenuPane )
   594 void CFileManagerViewBase::MarkMenuFilteringL( CEikMenuPane& aMenuPane )
   579     {
   595     {
       
   596     TInt index( iContainer->ListBoxCurrentItemIndex() );
       
   597 
       
   598     if ( iEngine.IsFolder( index ) )
       
   599         {
       
   600         aMenuPane.SetItemDimmed( EFileManagerMarkOne, ETrue );
       
   601         aMenuPane.SetItemDimmed( EFileManagerUnmarkOne, ETrue );
       
   602         }
       
   603     else
       
   604         {
       
   605         if ( iContainer->ListBoxIsItemSelected( index ) )
       
   606             {
       
   607             aMenuPane.SetItemDimmed( EFileManagerMarkOne, ETrue );
       
   608             }
       
   609         else
       
   610             {
       
   611             aMenuPane.SetItemDimmed( EFileManagerUnmarkOne, ETrue );
       
   612             }
       
   613         }
   580     TInt files( 0 );
   614     TInt files( 0 );
   581     // Get file count in current view, first check whether there is a
   615     if( iContainer->IsSearchFieldVisible() )
   582     // filter rule working.
       
   583     if ( iContainer->IsSearchFieldVisible() )
       
   584         {
   616         {
   585         files = FilesCountInSearchField();
   617         files = FilesCountInSearchField();
   586         }
   618         }
   587     else
   619     else
   588         {
   620         {
   589         files = iEngine.FilesInFolderL();
   621         files = iEngine.FilesInFolderL();
   590         }  
   622         }  
   591     TInt count( iContainer->ListBoxSelectionIndexesCount() );
   623     TInt count( iContainer->ListBoxSelectionIndexesCount() );
   592     // if all the files are marked or no file eixists,
       
   593     // dim MarkAll.
       
   594     if ( count == files )
   624     if ( count == files )
   595         {
   625         {
   596         aMenuPane.SetItemDimmed( EAknCmdMarkingModeMarkAll, ETrue );
   626         aMenuPane.SetItemDimmed( EFileManagerMarkAll, ETrue );
   597         }
   627         }
   598     // if no file marked, dim UnmarkAll.
   628 
   599     if ( count == 0 )
   629     if ( !count )
   600         {
   630         {
   601         aMenuPane.SetItemDimmed( EAknCmdMarkingModeUnmarkAll, ETrue );
   631         aMenuPane.SetItemDimmed( EFileManagerUnmarkAll, ETrue );
   602         }
       
   603     // Dim MarkAll and UnMarkAll if the list is empty.
       
   604     if ( iContainer->ListBoxNumberOfItems() == 0 )
       
   605         {
       
   606         aMenuPane.SetItemDimmed( EAknCmdMarkingModeMarkAll, ETrue );
       
   607         aMenuPane.SetItemDimmed( EAknCmdMarkingModeUnmarkAll, ETrue );
       
   608         }
   632         }
   609     }
   633     }
   610 
   634 
   611 // -----------------------------------------------------------------------------
   635 // -----------------------------------------------------------------------------
   612 // CFileManagerViewBase::CmdOpenL
   636 // CFileManagerViewBase::CmdOpenL
   699     TBool ret( EFalse );
   723     TBool ret( EFalse );
   700     DenyDirectoryRefresh( ETrue );
   724     DenyDirectoryRefresh( ETrue );
   701     TRAPD( err, ret = FileManagerDlgUtils::ShowConfirmQueryWithYesNoL( *prompt ) );
   725     TRAPD( err, ret = FileManagerDlgUtils::ShowConfirmQueryWithYesNoL( *prompt ) );
   702     DenyDirectoryRefresh( EFalse );
   726     DenyDirectoryRefresh( EFalse );
   703     User::LeaveIfError( err );
   727     User::LeaveIfError( err );
   704 
       
   705     // Set flag to indicate marking mode could exit or not.
       
   706     // Do not allow Marking mode exit when leave occurs.
       
   707     iContainer->AllowMarkingModeExit( ret );
       
   708 
       
   709 
       
   710     if ( ret )
   728     if ( ret )
   711         {
   729         {
   712         if( IsDriveAvailable( DriveInfo().iDrive ) )
   730         if( IsDriveAvailable( DriveInfo().iDrive ) )
   713             {
   731             {
   714             DeleteItemsL( index );
   732             DeleteItemsL( index );
   764         R_FILEMANAGER_MOVE_MEMORY_SELECTIONDIALOG,
   782         R_FILEMANAGER_MOVE_MEMORY_SELECTIONDIALOG,
   765         filter ) );
   783         filter ) );
   766     DenyDirectoryRefresh( EFalse );
   784     DenyDirectoryRefresh( EFalse );
   767     CleanupStack::PopAndDestroy( filter );
   785     CleanupStack::PopAndDestroy( filter );
   768 
   786 
   769     // Set flag to indicate marking mode could exit or not
       
   770     iContainer->AllowMarkingModeExit( ret );
       
   771 
       
   772     if ( ret && ptrFileName.Length() )
   787     if ( ret && ptrFileName.Length() )
   773         {
   788         {
   774         if ( !DriveReadOnlyMmcL( ptrFileName ) )
   789         if ( !DriveReadOnlyMmcL( ptrFileName ) )
   775             {
   790             {
   776             RunOperationL( 
   791             RunOperationL( 
   815         R_FILEMANAGER_COPY_MEMORY_SELECTIONDIALOG,
   830         R_FILEMANAGER_COPY_MEMORY_SELECTIONDIALOG,
   816         filter ) );
   831         filter ) );
   817     DenyDirectoryRefresh( EFalse );
   832     DenyDirectoryRefresh( EFalse );
   818     CleanupStack::PopAndDestroy( filter );
   833     CleanupStack::PopAndDestroy( filter );
   819 
   834 
   820     // Set flag to indicate marking mode could exit or not
       
   821     iContainer->AllowMarkingModeExit( ret );
       
   822 
       
   823     if ( ret && ptrFileName.Length() )
   835     if ( ret && ptrFileName.Length() )
   824         {
   836         {
   825         if ( !DriveReadOnlyMmcL( ptrFileName ) )
   837         if ( !DriveReadOnlyMmcL( ptrFileName ) )
   826             {
   838             {
   827             RunOperationL(
   839             RunOperationL(
   884             {
   896             {
   885             iContainer->DrawDeferred();
   897             iContainer->DrawDeferred();
   886             }
   898             }
   887         }
   899         }
   888     CleanupStack::PopAndDestroy( folderNameBuf );
   900     CleanupStack::PopAndDestroy( folderNameBuf );
       
   901     }
       
   902 
       
   903 // -----------------------------------------------------------------------------
       
   904 // CFileManagerViewBase::CmdToggleMarkL
       
   905 // 
       
   906 // -----------------------------------------------------------------------------
       
   907 // 
       
   908 void CFileManagerViewBase::CmdToggleMarkL()
       
   909     {
       
   910     const TInt index( iContainer->ListBoxCurrentItemIndex() );
       
   911     if ( iEngine.IsFolder( index ) )
       
   912         {
       
   913         iContainer->ListBoxDeselectItem( index );
       
   914         }
       
   915     else
       
   916         {
       
   917         iContainer->ListBoxToggleItemL( index );
       
   918         }
       
   919     }
       
   920 
       
   921 // -----------------------------------------------------------------------------
       
   922 // CFileManagerViewBase::CmdMarkAllL
       
   923 // 
       
   924 // -----------------------------------------------------------------------------
       
   925 // 
       
   926 void CFileManagerViewBase::CmdMarkAllL()
       
   927     {
       
   928     iContainer->ListBoxSelectAllL();
       
   929     }
       
   930 
       
   931 // -----------------------------------------------------------------------------
       
   932 // CFileManagerViewBase::CmdUnmarkAllL
       
   933 // 
       
   934 // -----------------------------------------------------------------------------
       
   935 // 
       
   936 void CFileManagerViewBase::CmdUnmarkAllL()
       
   937     {
       
   938     iContainer->ListBoxClearSelection();
   889     }
   939     }
   890 
   940 
   891 // -----------------------------------------------------------------------------
   941 // -----------------------------------------------------------------------------
   892 // CFileManagerViewBase::CmdRenameL
   942 // CFileManagerViewBase::CmdRenameL
   893 // 
   943 // 
  1132         case R_FILEMANAGER_MEMORY_STORE_VIEW_MENU:
  1182         case R_FILEMANAGER_MEMORY_STORE_VIEW_MENU:
  1133             {
  1183             {
  1134             MemoryStoreMenuFilteringL( *aMenuPane );
  1184             MemoryStoreMenuFilteringL( *aMenuPane );
  1135             break;
  1185             break;
  1136             }
  1186             }
  1137         // Marking mode menu
  1187         case R_FILEMANAGER_MARK_UNMARK_MENU:
  1138         case R_AVKON_MENUPANE_MARK_MULTIPLE:
  1188         case R_FILEMANAGER_CONTEXT_SENSITIVE_MARK_UNMARK_MENU:
  1139             {
  1189             {
  1140             MarkMenuFilteringL( *aMenuPane );
  1190             MarkMenuFilteringL( *aMenuPane );
  1141             break;
  1191             break;
  1142             }
  1192             }
  1143         case R_FILEMANAGER_ORGANISE_MENU:
  1193         case R_FILEMANAGER_ORGANISE_MENU:
  1406     LOG_IF_ERROR2( aError, "CFileManagerViewBase::DoProcessFinishedL-iActiveProcess=%d,aError=%d",
  1456     LOG_IF_ERROR2( aError, "CFileManagerViewBase::DoProcessFinishedL-iActiveProcess=%d,aError=%d",
  1407         iActiveProcess, aError )
  1457         iActiveProcess, aError )
  1408 
  1458 
  1409     if ( iPeriodic && iProgressInfo && iTotalTransferredBytes )
  1459     if ( iPeriodic && iProgressInfo && iTotalTransferredBytes )
  1410         {
  1460         {
  1411         if ( iActiveProcess == ECopyProcess || iActiveProcess == EMoveProcess )
  1461         iProgressInfo->SetAndDraw( iTotalTransferredBytes );
  1412             {
       
  1413             iProgressInfo->SetAndDraw( iTotalTransferredBytes / KMinificationFactor );
       
  1414             }
       
  1415         else
       
  1416             {
       
  1417             iProgressInfo->SetAndDraw( iTotalTransferredBytes );
       
  1418             }
       
  1419         }
  1462         }
  1420     if ( IsSystemProcess( iActiveProcess ) )
  1463     if ( IsSystemProcess( iActiveProcess ) )
  1421         {
  1464         {
  1422         // Remove system status to allow app close from task switcher
  1465         // Remove system status to allow app close from task switcher
  1423         iEikonEnv->SetSystem( EFalse );
  1466         iEikonEnv->SetSystem( EFalse );
  2607         {
  2650         {
  2608         ret = ETrue;
  2651         ret = ETrue;
  2609         }
  2652         }
  2610     if ( ret )
  2653     if ( ret )
  2611         {
  2654         {
       
  2655 #ifdef RD_MULTIPLE_DRIVE
       
  2656         HBufC* text = iEngine.GetFormattedDriveNameLC(
       
  2657             aDrive,
       
  2658             R_QTN_MEMC_MULTIPLE_MEMC_READ_ONLY );
       
  2659         FileManagerDlgUtils::ShowErrorNoteL( *text );
       
  2660         CleanupStack::PopAndDestroy( text );
       
  2661 #else // RD_MULTIPLE_DRIVE
  2612         FileManagerDlgUtils::ShowErrorNoteL(
  2662         FileManagerDlgUtils::ShowErrorNoteL(
  2613             R_QTN_MEMC_MEMORYCARD_READ_ONLY );
  2663             R_QTN_MEMC_MEMORYCARD_READ_ONLY );
       
  2664 #endif // RD_MULTIPLE_DRIVE
  2614         }
  2665         }
  2615 
  2666 
  2616     return ret;
  2667     return ret;
  2617     }
  2668     }
  2618 
  2669 
  2677         msgSize = Int64ToInt( iEngine.GetFileSizesL( *indexArray ) );
  2728         msgSize = Int64ToInt( iEngine.GetFileSizesL( *indexArray ) );
  2678         }
  2729         }
  2679     CleanupStack::PopAndDestroy( indexArray );
  2730     CleanupStack::PopAndDestroy( indexArray );
  2680     TSendingCapabilities caps(
  2731     TSendingCapabilities caps(
  2681         0, msgSize, TSendingCapabilities::ESupportsAttachments );
  2732         0, msgSize, TSendingCapabilities::ESupportsAttachments );
  2682     TBool addMenuResult = EFalse;
  2733     sendUi.AddSendMenuItemL( aMenuPane, pos, EFileManagerSend, caps );
  2683     sendUi.AddSendMenuItemToMenuPaneL( addMenuResult, aMenuPane, pos, EFileManagerSend, caps );
  2734     aMenuPane.SetItemSpecific(EFileManagerSend, ETrue);
  2684     // EFileManagerSend is added by CSendUI, existence checking
       
  2685     // should be taken before setting the properties of command.
       
  2686     // Try to set properties of a none-existing command will cause panic. 
       
  2687     if ( addMenuResult )
       
  2688         {
       
  2689         aMenuPane.SetItemSpecific( EFileManagerSend, ETrue );
       
  2690         }
       
  2691     }
  2735     }
  2692 
  2736 
  2693 // ------------------------------------------------------------------------------
  2737 // ------------------------------------------------------------------------------
  2694 // CFileManagerViewBase::DeleteStatusNotOk
  2738 // CFileManagerViewBase::DeleteStatusNotOk
  2695 //
  2739 //
  3169     TInt driveNumber = drvInfo.iDrive;
  3213     TInt driveNumber = drvInfo.iDrive;
  3170     iEngine.GetDriveInfoL(driveNumber,drvInfo);
  3214     iEngine.GetDriveInfoL(driveNumber,drvInfo);
  3171 
  3215 
  3172     // Common remote drive filtering
  3216     // Common remote drive filtering
  3173     RemoteDriveCommonFilteringL( aMenuPane );
  3217     RemoteDriveCommonFilteringL( aMenuPane );
  3174     
  3218     if( iContainer->IsSearchFieldVisible() && 
  3175     // Used while checking EAknCmdMarkingModeEnter's existance
  3219             !FilesCountInSearchField() )
  3176     TInt pos ( 0 );
  3220         {
  3177     // No file exists after find pane filtering,
  3221         aMenuPane.SetItemDimmed( EFileManagerMark, ETrue );
  3178     // disable enter marking mode
       
  3179     if ( iContainer->IsSearchFieldVisible() && 
       
  3180             FilesCountInSearchField() == 0 )
       
  3181         {
       
  3182         if ( aMenuPane.MenuItemExists( EAknCmdMarkingModeEnter, pos ) )
       
  3183             {
       
  3184             aMenuPane.SetItemDimmed( EAknCmdMarkingModeEnter, ETrue );
       
  3185             }
       
  3186         }
  3222         }
  3187     if ( iContainer->ListBoxNumberOfItems() )
  3223     if ( iContainer->ListBoxNumberOfItems() )
  3188         {
  3224         {
  3189         if ( !iContainer->ListBoxSelectionIndexesCount() )
  3225         if ( !iContainer->ListBoxSelectionIndexesCount() )
  3190             {
  3226             {
  3201         aMenuPane.SetItemDimmed( EFileManagerMoveToFolder, ETrue );
  3237         aMenuPane.SetItemDimmed( EFileManagerMoveToFolder, ETrue );
  3202         aMenuPane.SetItemDimmed( EFileManagerCopyToFolder, ETrue );
  3238         aMenuPane.SetItemDimmed( EFileManagerCopyToFolder, ETrue );
  3203         }
  3239         }
  3204     TInt index(iContainer->ListBoxCurrentItemIndex());
  3240     TInt index(iContainer->ListBoxCurrentItemIndex());
  3205     TUint32 fileType(iEngine.FileTypeL(index));
  3241     TUint32 fileType(iEngine.FileTypeL(index));
  3206     // Do not dim move to folder command in option menu and stylus popup
  3242     if (!(fileType & CFileManagerItemProperties::EFolder))
  3207     // menu while marking mode is activated.
       
  3208     // At least one item is marked.
       
  3209     if ( !(fileType & CFileManagerItemProperties::EFolder )
       
  3210             && iContainer->ListBoxSelectionIndexesCount() == 0 )
       
  3211         {
  3243         {
  3212         aMenuPane.SetItemDimmed(EFileManagerMoveToFolder, ETrue);
  3244         aMenuPane.SetItemDimmed(EFileManagerMoveToFolder, ETrue);
  3213         }
  3245         }
  3214     CFileManagerFeatureManager& featureManager( FeatureManager() );
  3246     CFileManagerFeatureManager& featureManager( FeatureManager() );
  3215     
  3247     
  3244         {
  3276         {
  3245         // Search view item dimming
  3277         // Search view item dimming
  3246         aMenuPane.SetItemDimmed( EFileManagerRename, ETrue );
  3278         aMenuPane.SetItemDimmed( EFileManagerRename, ETrue );
  3247         aMenuPane.SetItemDimmed( EFileManagerReceiveViaIR, ETrue );
  3279         aMenuPane.SetItemDimmed( EFileManagerReceiveViaIR, ETrue );
  3248         aMenuPane.SetItemDimmed( EFileManagerOrganise, ETrue );
  3280         aMenuPane.SetItemDimmed( EFileManagerOrganise, ETrue );
       
  3281 //        aMenuPane.SetItemDimmed( EFileManagerMemoryCard, ETrue );
       
  3282 //        aMenuPane.SetItemDimmed( EFileManagerMemoryCardPassword, ETrue );
       
  3283         //aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3249         aMenuPane.SetItemDimmed( EFileManagerRefreshRemoteDrive, ETrue );
  3284         aMenuPane.SetItemDimmed( EFileManagerRefreshRemoteDrive, ETrue );
  3250 #ifdef RD_MULTIPLE_DRIVE
  3285 #ifdef RD_MULTIPLE_DRIVE
  3251         aMenuPane.SetItemDimmed( EFileManagerFormatMassStorage, ETrue );
  3286         aMenuPane.SetItemDimmed( EFileManagerFormatMassStorage, ETrue );
  3252 #endif // RD_MULTIPLE_DRIVE
  3287 #endif // RD_MULTIPLE_DRIVE
  3253         aMenuPane.SetItemDimmed( EFileManagerSort, ETrue );
  3288         aMenuPane.SetItemDimmed( EFileManagerSort, ETrue );
  3262         {
  3297         {
  3263         // Write protected item dimming
  3298         // Write protected item dimming
  3264         aMenuPane.SetItemDimmed( EFileManagerRename, ETrue );
  3299         aMenuPane.SetItemDimmed( EFileManagerRename, ETrue );
  3265         aMenuPane.SetItemDimmed( EFileManagerDelete, ETrue );
  3300         aMenuPane.SetItemDimmed( EFileManagerDelete, ETrue );
  3266         aMenuPane.SetItemDimmed( EFileManagerReceiveViaIR, ETrue );
  3301         aMenuPane.SetItemDimmed( EFileManagerReceiveViaIR, ETrue );
       
  3302 //        aMenuPane.SetItemDimmed( EFileManagerMemoryCard, ETrue );
       
  3303 //        aMenuPane.SetItemDimmed( EFileManagerMemoryCardPassword, ETrue );
  3267 #ifdef RD_MULTIPLE_DRIVE
  3304 #ifdef RD_MULTIPLE_DRIVE
  3268         aMenuPane.SetItemDimmed( EFileManagerFormatMassStorage, ETrue );
  3305         aMenuPane.SetItemDimmed( EFileManagerFormatMassStorage, ETrue );
  3269 #endif // RD_MULTIPLE_DRIVE
  3306 #endif // RD_MULTIPLE_DRIVE
  3270         }
  3307         }
  3271 
  3308 
  3272 #ifdef RD_MULTIPLE_DRIVE
  3309 #ifdef RD_MULTIPLE_DRIVE
  3273     if ( drvInfo.iState & TFileManagerDriveInfo::EDriveMassStorage )
  3310     if ( drvInfo.iState & TFileManagerDriveInfo::EDriveMassStorage )
  3274         {
  3311         {
  3275         // Mass storage item dimming
  3312         // Mass storage item dimming
       
  3313 //        aMenuPane.SetItemDimmed( EFileManagerMemoryCard, ETrue );
       
  3314 //        aMenuPane.SetItemDimmed( EFileManagerMemoryCardPassword, ETrue );
  3276         aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3315         aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3277 
  3316 
  3278         if ( !( drvInfo.iState & TFileManagerDriveInfo::EDrivePresent ) )
  3317         if ( !( drvInfo.iState & TFileManagerDriveInfo::EDrivePresent ) )
  3279             {
  3318             {
  3280             aMenuPane.SetItemDimmed( EFileManagerFormatMassStorage, ETrue );
  3319             aMenuPane.SetItemDimmed( EFileManagerFormatMassStorage, ETrue );
  3287         // Memory card item dimming
  3326         // Memory card item dimming
  3288         if ( !( drvInfo.iState & TFileManagerDriveInfo::EDrivePresent ) ||
  3327         if ( !( drvInfo.iState & TFileManagerDriveInfo::EDrivePresent ) ||
  3289              ( drvInfo.iState & ( TFileManagerDriveInfo::EDriveCorrupted |
  3328              ( drvInfo.iState & ( TFileManagerDriveInfo::EDriveCorrupted |
  3290                                   TFileManagerDriveInfo::EDriveLocked ) ) )
  3329                                   TFileManagerDriveInfo::EDriveLocked ) ) )
  3291             {
  3330             {
       
  3331 //            aMenuPane.SetItemDimmed( EFileManagerMemoryCardPassword, ETrue );
  3292             aMenuPane.SetItemDimmed( EFileManagerDetails, ETrue );
  3332             aMenuPane.SetItemDimmed( EFileManagerDetails, ETrue );
  3293             }
  3333             }
  3294         if ( ( drvInfo.iState & TFileManagerDriveInfo::EDriveCorrupted ) ||
  3334         if ( ( drvInfo.iState & TFileManagerDriveInfo::EDriveCorrupted ) ||
  3295              !( drvInfo.iState & TFileManagerDriveInfo::EDriveLocked ) )
  3335              !( drvInfo.iState & TFileManagerDriveInfo::EDriveLocked ) )
  3296             {
  3336             {
  3297             aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3337             aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3298             }
  3338             }
       
  3339 //        if ( !( drvInfo.iState & TFileManagerDriveInfo::EDriveLockable ) )
       
  3340 //            {
       
  3341 //            aMenuPane.SetItemDimmed( EFileManagerMemoryCardPassword, ETrue );
       
  3342 //            }
  3299         if ( !featureManager.IsMmcPassWdSupported() )
  3343         if ( !featureManager.IsMmcPassWdSupported() )
  3300             {
  3344             {
       
  3345             //aMenuPane.SetItemDimmed( EFileManagerMemoryCardPassword, ETrue );
  3301             aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3346             aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3302             }
  3347             }
  3303 #ifdef RD_MULTIPLE_DRIVE
  3348 #ifdef RD_MULTIPLE_DRIVE
  3304         aMenuPane.SetItemDimmed( EFileManagerFormatMassStorage, ETrue );
  3349         aMenuPane.SetItemDimmed( EFileManagerFormatMassStorage, ETrue );
  3305 #endif // RD_MULTIPLE_DRIVE
  3350 #endif // RD_MULTIPLE_DRIVE
  3306         }
  3351         }
  3307     else
  3352     else
  3308         {
  3353         {
  3309         // No mass storage or memory card item dimming
  3354         // No mass storage or memory card item dimming
       
  3355 //        aMenuPane.SetItemDimmed( EFileManagerMemoryCard, ETrue );
       
  3356 //        aMenuPane.SetItemDimmed( EFileManagerMemoryCardPassword, ETrue );
  3310         aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3357         aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3311 #ifdef RD_MULTIPLE_DRIVE
  3358 #ifdef RD_MULTIPLE_DRIVE
  3312         aMenuPane.SetItemDimmed( EFileManagerFormatMassStorage, ETrue );
  3359         aMenuPane.SetItemDimmed( EFileManagerFormatMassStorage, ETrue );
  3313 #endif // RD_MULTIPLE_DRIVE
  3360 #endif // RD_MULTIPLE_DRIVE
  3314         }
  3361         }
  3315     
  3362 
       
  3363 //    CEikListBox& listBox = iContainer->ListBox();
  3316     TBool dimSend( EFalse );
  3364     TBool dimSend( EFalse );
  3317 
  3365 
  3318     if ( iContainer->ListBoxSelectionIndexesCount() )
  3366     if ( iContainer->ListBoxSelectionIndexesCount() )
  3319         {
  3367         {
  3320         // Selections in list
  3368         // Selections in list
  3336             {
  3384             {
  3337             aMenuPane.SetItemDimmed( EFileManagerDetails, ETrue );
  3385             aMenuPane.SetItemDimmed( EFileManagerDetails, ETrue );
  3338             }
  3386             }
  3339         
  3387         
  3340         if ( !( drvInfo.iState & TFileManagerDriveInfo::EDrivePresent ) || 
  3388         if ( !( drvInfo.iState & TFileManagerDriveInfo::EDrivePresent ) || 
  3341              ( drvInfo.iState & TFileManagerDriveInfo::EDriveInUse ) ||
  3389         	 ( ( drvInfo.iState & TFileManagerDriveInfo::EDriveRemote ) &&
  3342              ( ( drvInfo.iState & TFileManagerDriveInfo::EDriveRemote ) &&
       
  3343              !( drvInfo.iState & TFileManagerDriveInfo::EDriveConnected ) ) )
  3390              !( drvInfo.iState & TFileManagerDriveInfo::EDriveConnected ) ) )
  3344            {
  3391            {
  3345            // Handle unavailable drive or disconnected remote drive
  3392            // Handle unavailable drive OR  disconnected remote drive
  3346            dimSend = ETrue;
  3393            dimSend = ETrue;
  3347            aMenuPane.SetItemDimmed( EFileManagerSort, ETrue );
  3394            aMenuPane.SetItemDimmed( EFileManagerSort, ETrue );
  3348            aMenuPane.SetItemDimmed( EFileManagerOrganise, ETrue );
  3395            aMenuPane.SetItemDimmed( EFileManagerOrganise, ETrue );
  3349            aMenuPane.SetItemDimmed( EFileManagerDelete, ETrue );
  3396            aMenuPane.SetItemDimmed( EFileManagerMark, ETrue );             
  3350            if ( aMenuPane.MenuItemExists( EAknCmdMarkingModeEnter, pos ) )
       
  3351                {
       
  3352                aMenuPane.SetItemDimmed( EAknCmdMarkingModeEnter, ETrue );
       
  3353                }
       
  3354            }
  3397            }
  3355         }
  3398         }
  3356     else if ( iContainer->ListBoxNumberOfItems() )
  3399     else if ( iContainer->ListBoxNumberOfItems() )
  3357         {
  3400         {
  3358         // Check whether there is file on the list
  3401         // Check if there is files on the list
  3359         TInt files( iEngine.FilesInFolderL() );
  3402         TInt files( iEngine.FilesInFolderL() );
  3360         if ( files == 0 ) 
  3403         if ( !files ) 
  3361             {
  3404             {
  3362             dimSend = ETrue;
  3405             dimSend = ETrue;
  3363             if ( aMenuPane.MenuItemExists( EAknCmdMarkingModeEnter, pos ) )
  3406             aMenuPane.SetItemDimmed( EFileManagerMark, ETrue );
  3364                 {
       
  3365                 aMenuPane.SetItemDimmed( EAknCmdMarkingModeEnter, ETrue );
       
  3366                 }
       
  3367             }
  3407             }
  3368         
  3408         
  3369         // There is items in list, check selection type
  3409         // There is items in list, check selection type
  3370         TUint32 fileType( iEngine.FileTypeL(
  3410         TUint32 fileType( iEngine.FileTypeL(
  3371             iContainer->ListBoxCurrentItemIndex() ) );
  3411             iContainer->ListBoxCurrentItemIndex() ) );
  3401     else 
  3441     else 
  3402         {
  3442         {
  3403         // List is empty
  3443         // List is empty
  3404         aMenuPane.SetItemDimmed( EFileManagerOpen, ETrue );
  3444         aMenuPane.SetItemDimmed( EFileManagerOpen, ETrue );
  3405         aMenuPane.SetItemDimmed( EFileManagerDelete, ETrue );
  3445         aMenuPane.SetItemDimmed( EFileManagerDelete, ETrue );
  3406         if ( aMenuPane.MenuItemExists( EAknCmdMarkingModeEnter, pos ) )
  3446         aMenuPane.SetItemDimmed( EFileManagerMark, ETrue );
  3407             {
       
  3408             aMenuPane.SetItemDimmed( EAknCmdMarkingModeEnter, ETrue );
       
  3409             }
       
  3410         aMenuPane.SetItemDimmed( EFileManagerRename, ETrue );
  3447         aMenuPane.SetItemDimmed( EFileManagerRename, ETrue );
  3411         aMenuPane.SetItemDimmed( EFileManagerSort, ETrue );
  3448         aMenuPane.SetItemDimmed( EFileManagerSort, ETrue );
  3412         aMenuPane.SetItemDimmed( EFileManagerSearchSort, ETrue );
  3449         aMenuPane.SetItemDimmed( EFileManagerSearchSort, ETrue );
  3413         aMenuPane.SetItemDimmed( EFileManagerDetails, ETrue );
  3450         aMenuPane.SetItemDimmed( EFileManagerDetails, ETrue );
  3414         dimSend = ETrue;
  3451         dimSend = ETrue;
  3428              !( drvInfo.iState & TFileManagerDriveInfo::EDriveConnected ) )
  3465              !( drvInfo.iState & TFileManagerDriveInfo::EDriveConnected ) )
  3429             {
  3466             {
  3430             // Handle disconnected remote drive
  3467             // Handle disconnected remote drive
  3431             aMenuPane.SetItemDimmed( EFileManagerReceiveViaIR, ETrue );
  3468             aMenuPane.SetItemDimmed( EFileManagerReceiveViaIR, ETrue );
  3432             aMenuPane.SetItemDimmed( EFileManagerOrganise, ETrue );
  3469             aMenuPane.SetItemDimmed( EFileManagerOrganise, ETrue );
       
  3470 //            aMenuPane.SetItemDimmed( EFileManagerDetails, ETrue );
  3433             }
  3471             }
  3434         else if ( !( drvInfo.iState & TFileManagerDriveInfo::EDrivePresent ) ||  
  3472         else if ( !( drvInfo.iState & TFileManagerDriveInfo::EDrivePresent ) ||  
  3435                  ( drvInfo.iState & (
  3473                  ( drvInfo.iState & (
  3436                     TFileManagerDriveInfo::EDriveCorrupted |
  3474                     TFileManagerDriveInfo::EDriveCorrupted |
  3437                     TFileManagerDriveInfo::EDriveLocked ) ) )
  3475                     TFileManagerDriveInfo::EDriveLocked ) ) )
  3438             {
  3476             {
  3439             // Handle unavailable drive
  3477             // Handle unavailable drive
       
  3478 //            aMenuPane.SetItemDimmed( EFileManagerDetails, ETrue );
  3440             aMenuPane.SetItemDimmed( EFileManagerReceiveViaIR, ETrue );
  3479             aMenuPane.SetItemDimmed( EFileManagerReceiveViaIR, ETrue );
  3441             aMenuPane.SetItemDimmed( EFileManagerOrganise, ETrue );
  3480             aMenuPane.SetItemDimmed( EFileManagerOrganise, ETrue );
       
  3481 //            aMenuPane.SetItemDimmed( EFileManagerMemoryCardPassword, ETrue );
  3442             
  3482             
  3443             if ( drvInfo.iState & TFileManagerDriveInfo::EDriveRemovable &&
  3483             if ( drvInfo.iState & TFileManagerDriveInfo::EDriveRemovable &&
  3444                  !( drvInfo.iState & TFileManagerDriveInfo::EDriveLocked ) )
  3484                  !( drvInfo.iState & TFileManagerDriveInfo::EDriveLocked ) )
  3445                 {
  3485                 {
  3446                 aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3486                 aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3453             // Handle empty search results and invalid path
  3493             // Handle empty search results and invalid path
  3454             if ( isSearchOn || !iEngine.CurrentDirectory().Length() )
  3494             if ( isSearchOn || !iEngine.CurrentDirectory().Length() )
  3455                 {
  3495                 {
  3456                 aMenuPane.SetItemDimmed( EFileManagerReceiveViaIR, ETrue );
  3496                 aMenuPane.SetItemDimmed( EFileManagerReceiveViaIR, ETrue );
  3457                 aMenuPane.SetItemDimmed( EFileManagerOrganise, ETrue );
  3497                 aMenuPane.SetItemDimmed( EFileManagerOrganise, ETrue );
       
  3498 //                aMenuPane.SetItemDimmed( EFileManagerMemoryCardPassword, ETrue );
       
  3499 //                aMenuPane.SetItemDimmed( EFileManagerMemoryCard, ETrue );
  3458                 aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
  3500                 aMenuPane.SetItemDimmed( EFileManagerUnlockMemoryCard, ETrue );
       
  3501 //                aMenuPane.SetItemDimmed( EFileManagerDetails, ETrue );
  3459                 }
  3502                 }
  3460             else
  3503             else
  3461                 {
  3504                 {
  3462                 // BaflUtils::PathExists does not work for remote drive root dirs.
  3505                 // BaflUtils::PathExists does not work for remote drive root dirs.
  3463                 if( drvInfo.iState & TFileManagerDriveInfo::EDriveRemote )
  3506                 if( drvInfo.iState & TFileManagerDriveInfo::EDriveRemote )