filebrowser/engine/FBFileUtils.cpp
branchGCC_SURGE
changeset 37 c20154ccf3c0
parent 35 98924d2efce9
child 48 da3ec8478e66
--- a/filebrowser/engine/FBFileUtils.cpp	Fri Jun 11 16:29:34 2010 +0100
+++ b/filebrowser/engine/FBFileUtils.cpp	Thu Jul 22 16:33:59 2010 +0100
@@ -24,15 +24,16 @@
 
 #include <textresolver.h> 
 #include <eikprogi.h>
-#include <f32file.h>
+#include <e32svr.h>
 #include <eikfutil.h>
 #include <apparc.h>
+#include <apaid.h>
+#include <apaidpartner.h>
 #include <eikenv.h>
 #include <bautils.h>
 #include <gulicon.h>
-#include <aknconsts.h>
 #include <babackup.h> 
-#include <aknmemorycardui.mbg>
+//#include <aknmemorycardui.mbg>
 #include <sendui.h>
 #include <CMessageData.h>
 #include <ezgzip.h>
@@ -118,7 +119,7 @@
     iCurrentSelectionList = new(ELeave) CFileEntryList(64);
 
     iDocHandler = CDocumentHandler::NewL();
-    iDocHandler->SetExitObserver(this);
+//    iDocHandler->SetExitObserver(this);
     
     // set defaults to the search settings
     iSearchAttributes.iSearchDir = KNullDesC;
@@ -202,7 +203,7 @@
 
 // --------------------------------------------------------------------------------------------
 
-void CFileBrowserFileUtils::StartExecutingCommandsL(const TDesC& /*aLabel*/)
+void CFileBrowserFileUtils::StartExecutingCommandsL(const TDesC& aLabel)
     {
     if (iCommandArray->Count() >= 2)
         {
@@ -215,6 +216,8 @@
 //        iProgressInfo->SetFinalValue( CommandArrayCount() );
 //        iProgressDialog->RunLD();
 //        iProgressDialog->MakeVisible( ETrue );        
+        iEngine->FileBrowserUI()->ShowProgressDialog(aLabel, 0, CommandArrayCount());
+        isProgressDialog = ETrue;
         }
     else if (iCommandArray->Count() >= 1)
         {
@@ -224,6 +227,8 @@
 //        iWaitDialog->PrepareLC(R_GENERAL_WAIT_NOTE);
 //        iWaitDialog->SetTextL( aLabel );
 //        iWaitDialog->RunLD();
+        iEngine->FileBrowserUI()->ShowWaitDialog(aLabel);
+        isWaitDialog = ETrue;
         }
     else
         {
@@ -249,6 +254,15 @@
     __ASSERT_ALWAYS(!IsActive(), User::Panic(_L("FileUtils:IsActive"), 333));
 
     // execute a command after a very short delay (25ms)
+    if (isWaitDialog)
+        {
+        iEngine->FileBrowserUI()->ProcessEvents();
+        }
+    if (isProgressDialog)
+        {
+        TInt newValue = iCurrentEntry;
+        iEngine->FileBrowserUI()->SetProgressValue(newValue);
+        }
     iTimer.After(iStatus, 25);
     SetActive();
     }
@@ -363,6 +377,16 @@
         iFileOps->DeActivateSecureBackUpViaFileOp();
 
         // dismiss any wait/progress dialogs        
+        if (isWaitDialog)
+            {
+            iEngine->FileBrowserUI()->CancelWaitDialog();
+            isWaitDialog = EFalse;
+            }
+        if (isProgressDialog)
+            {
+            iEngine->FileBrowserUI()->CancelProgressDialog();
+            isProgressDialog = EFalse;
+            }
 //        if (iWaitDialog)
 //            {
 //            TRAP_IGNORE(iWaitDialog->ProcessFinishedL()); 
@@ -420,29 +444,29 @@
 
         RefreshViewL();
 
-		}
+            }
 	else
-		{
-		// maintain requests
-		iCurrentEntry++;
-
-        //LOGSTRING2("Creator: CCreatorEngine::CheckForMoreCommandsL iCurrentEntry=%d", iCurrentEntry);
-
-        ExecuteCommand();
-		}
+            {
+            // maintain requests
+            iCurrentEntry++;
+
+            //LOGSTRING2("Creator: CCreatorEngine::CheckForMoreCommandsL iCurrentEntry=%d", iCurrentEntry);
+
+            ExecuteCommand();
+            }
     }    
 // --------------------------------------------------------------------------------------------
 
 // This callback function is called when cancel button of the progress bar was pressed
-void CFileBrowserFileUtils::DialogDismissedL(TInt aButtonId)
+void CFileBrowserFileUtils::DialogDismissedL(/*TInt aButtonId*/)
     {
 //    iProgressDialog = NULL;
 //    iProgressInfo = NULL;
 //    iWaitDialog = NULL;
     
     // check if cancel button was pressed
-    if (aButtonId == EAknSoftkeyCancel)
-        {
+//    if (aButtonId == EAknSoftkeyCancel)
+//        {
         // cancel the active object, command executer 
         Cancel();
         
@@ -450,8 +474,10 @@
         
         ResetCommandArray();
 
+        isProgressDialog = EFalse;
+
         iEngine->FileBrowserUI()->ShowInformationNote(_L("Cancelled"), _L(""));
-        }
+//        }
     }
     
 // --------------------------------------------------------------------------------------------
@@ -607,22 +633,6 @@
 
 //    if (iEngine->FileListContainer())
 //        {
-        // update navi pane text        
-//        if (iListingMode == ENormalEntries)
-//            iEngine->FileListContainer()->SetNaviPaneTextL(iCurrentPath);
-//        else if (iListingMode == ESearchResults)
-//            iEngine->FileListContainer()->SetNaviPaneTextL(_L("Search results"));
-//        else if (iListingMode == EOpenFiles)
-//            iEngine->FileListContainer()->SetNaviPaneTextL(_L("Open files"));
-//        else if (iListingMode == EMsgAttachmentsInbox)
-//            iEngine->FileListContainer()->SetNaviPaneTextL(_L("Attachments in Inbox"));
-//        else if (iListingMode == EMsgAttachmentsDrafts)
-//            iEngine->FileListContainer()->SetNaviPaneTextL(_L("Attachments in Drafts"));
-//        else if (iListingMode == EMsgAttachmentsSentItems)
-//            iEngine->FileListContainer()->SetNaviPaneTextL(_L("Attachments in Sent Items"));
-//        else if (iListingMode == EMsgAttachmentsOutbox)
-//            iEngine->FileListContainer()->SetNaviPaneTextL(_L("Attachments in Outbox"));
-//
 //        // create a list box if it doesn't already exist
 //        if (!iEngine->FileListContainer()->ListBox())
 //            iEngine->FileListContainer()->CreateListBoxL(iEngine->Settings().iFileViewMode);
@@ -655,153 +665,153 @@
     
 // --------------------------------------------------------------------------------------------
 
-/*CAknIconArray* CFileBrowserFileUtils::GenerateIconArrayL(TBool aGenerateNewBasicIconArray)
-    {
-	// TODO
-	
-    CAknIconArray* iconArray = NULL;
-
-    if (aGenerateNewBasicIconArray)
-        {
-        iconArray = new(ELeave) CAknIconArray(16);    
-        }
-    else
-        {
-        if (iEngine->FileListContainer())
-            iconArray = iEngine->FileListContainer()->ListBoxIconArrayL();
-        
-        if (!iconArray)    
-            iconArray = new(ELeave) CAknIconArray(16);
-        }
-
-        
-    CleanupStack::PushL(iconArray);
-    
-    // generate basic items if not already existing
-    if (iconArray->Count() < EFixedIconListLength)
-        {
-        // reset arrays
-        iconArray->Reset();
-        iAppIconList->Reset();
-        
-        // get default control color
-        TRgb defaultColor;
-        defaultColor = iEngine->EikonEnv()->Color(EColorControlText);
-        
-        // create a color icon of the marking indicator
-        CFbsBitmap* markBitmap = NULL;
-        CFbsBitmap* markBitmapMask = NULL;
-
-        AknsUtils::CreateColorIconL(AknsUtils::SkinInstance(),
-                KAknsIIDQgnIndiMarkedAdd,
-                KAknsIIDQsnIconColors,
-                EAknsCIQsnIconColorsCG13,
-                markBitmap,
-                markBitmapMask,
-                AknIconUtils::AvkonIconFileName(),
-                EMbmAvkonQgn_indi_marked_add,
-                EMbmAvkonQgn_indi_marked_add_mask,
-                defaultColor
-                );
-         
-        // 0 marking indicator
-        CGulIcon* markIcon = CGulIcon::NewL(markBitmap, markBitmapMask);
-        iconArray->AppendL(markIcon);                       
-
-        // 1 empty
-        AppendGulIconToIconArrayL(iconArray, AknIconUtils::AvkonIconFileName(),
-                                  EMbmAvkonQgn_prop_empty, EMbmAvkonQgn_prop_empty_mask, KAknsIIDQgnPropEmpty);
-        // 2 phone memory
-        AppendGulIconToIconArrayL(iconArray, AknIconUtils::AvkonIconFileName(),
-                                  EMbmAvkonQgn_prop_phone_memc, EMbmAvkonQgn_prop_phone_memc_mask, KAknsIIDQgnPropPhoneMemc);
-        // 3 memory card
-        AppendGulIconToIconArrayL(iconArray, KMemoryCardUiBitmapFile,
-                                  EMbmAknmemorycarduiQgn_prop_mmc_memc, EMbmAknmemorycarduiQgn_prop_mmc_memc_mask, KAknsIIDQgnPropMmcMemc);
-        // 4 memory card disabled
-        AppendGulIconToIconArrayL(iconArray, KMemoryCardUiBitmapFile,
-                                  EMbmAknmemorycarduiQgn_prop_mmc_non, EMbmAknmemorycarduiQgn_prop_mmc_non_mask, KAknsIIDQgnPropMmcNon);
-        // 5 folder
-        AppendGulIconToIconArrayL(iconArray, AknIconUtils::AvkonIconFileName(),
-                                  EMbmAvkonQgn_prop_folder_small, EMbmAvkonQgn_prop_folder_small_mask, KAknsIIDQgnPropFolderSmall);
-        // 6 folder with subfolders
-        AppendGulIconToIconArrayL(iconArray, AknIconUtils::AvkonIconFileName(),
-                                  EMbmAvkonQgn_prop_folder_sub_small, EMbmAvkonQgn_prop_folder_sub_small_mask, KAknsIIDQgnPropFolderSubSmall);
-        // 7 current folder
-        AppendGulIconToIconArrayL(iconArray, AknIconUtils::AvkonIconFileName(),
-                                  EMbmAvkonQgn_prop_folder_current, EMbmAvkonQgn_prop_folder_current_mask, KAknsIIDQgnPropFolderCurrent);
-        }
-
-    // append custom icons if not in drive list view and setting is enabled
-    if (!aGenerateNewBasicIconArray && !IsDriveListViewActive() && iEngine->Settings().iShowAssociatedIcons)
-        {
-        // init id counter
-        TInt idCounter(EFixedIconListLength + iAppIconList->Count());
-        
-        // loop all items in the file list
-        for (TInt i=0; i<iFileEntryList->Count(); i++)
-            {
-            TFileEntry& fileEntry = iFileEntryList->At(i);
-
-            // just check for normal files            
-            if (!fileEntry.iEntry.IsDir())     
-                {
-                TUid appUid = GetAppUid(fileEntry);
-                TInt iconId = AppIconIdForUid(appUid);
-                
-                if (appUid != KNullUid && iconId == KErrNotFound)
-                    {
-                    // icon not found from the icon array, generate it
-                    CFbsBitmap* bitmap = NULL;
-                    CFbsBitmap* mask = NULL;
-                    CGulIcon* appIcon = NULL;
-        
-                    TRAPD(err, 
-                        AknsUtils::CreateAppIconLC(AknsUtils::SkinInstance(), appUid, EAknsAppIconTypeList, bitmap, mask);
-                        appIcon = CGulIcon::NewL(bitmap, mask);
-                        CleanupStack::Pop(2); //bitmap, mask
-                        );
-                         
-                    if (err == KErrNone)
-                        {
-                        TAppIcon appIconEntry;
-                        appIconEntry.iId = idCounter;
-                        appIconEntry.iUid = appUid;
-                        
-                        appIcon->SetBitmapsOwnedExternally(EFalse);
-                        iconArray->AppendL(appIcon);
-                        iAppIconList->AppendL(appIconEntry);
-
-                        fileEntry.iIconId = idCounter;
-                                                
-                        idCounter++;      
-                        }
-                    else
-                        {
-                        delete bitmap;
-                        delete mask;
-		
-                        TAppIcon appIconEntry;
-                        appIconEntry.iId = EFixedIconEmpty;
-                        appIconEntry.iUid = appUid;
-                        
-                        iAppIconList->AppendL(appIconEntry);
-                        }
-                    }
-
-                else if (appUid != KNullUid && iconId >= 0)
-                    {
-                    // we already have already generated an icon for this uid, use it
-                    fileEntry.iIconId = iconId;
-                    }
-                }
-            }
-        }
-
-    CleanupStack::Pop(); //iconArray
-	return iconArray;
-    
-	}
-*/
+//CAknIconArray* CFileBrowserFileUtils::GenerateIconArrayL(TBool aGenerateNewBasicIconArray)
+//    {
+//	// TODO
+//
+//    CAknIconArray* iconArray = NULL;
+//
+//    if (aGenerateNewBasicIconArray)
+//        {
+//        iconArray = new(ELeave) CAknIconArray(16);
+//        }
+//    else
+//        {
+//        if (iEngine->FileListContainer())
+//            iconArray = iEngine->FileListContainer()->ListBoxIconArrayL();
+//
+//        if (!iconArray)
+//            iconArray = new(ELeave) CAknIconArray(16);
+//        }
+//
+//
+//    CleanupStack::PushL(iconArray);
+//
+//    // generate basic items if not already existing
+//    if (iconArray->Count() < EFixedIconListLength)
+//        {
+//        // reset arrays
+//        iconArray->Reset();
+//        iAppIconList->Reset();
+//
+//        // get default control color
+//        TRgb defaultColor;
+//        defaultColor = iEngine->EikonEnv()->Color(EColorControlText);
+//
+//        // create a color icon of the marking indicator
+//        CFbsBitmap* markBitmap = NULL;
+//        CFbsBitmap* markBitmapMask = NULL;
+//
+//        AknsUtils::CreateColorIconL(AknsUtils::SkinInstance(),
+//                KAknsIIDQgnIndiMarkedAdd,
+//                KAknsIIDQsnIconColors,
+//                EAknsCIQsnIconColorsCG13,
+//                markBitmap,
+//                markBitmapMask,
+//                AknIconUtils::AvkonIconFileName(),
+//                EMbmAvkonQgn_indi_marked_add,
+//                EMbmAvkonQgn_indi_marked_add_mask,
+//                defaultColor
+//                );
+//
+//        // 0 marking indicator
+//        CGulIcon* markIcon = CGulIcon::NewL(markBitmap, markBitmapMask);
+//        iconArray->AppendL(markIcon);
+//
+//        // 1 empty
+//        AppendGulIconToIconArrayL(iconArray, AknIconUtils::AvkonIconFileName(),
+//                                  EMbmAvkonQgn_prop_empty, EMbmAvkonQgn_prop_empty_mask, KAknsIIDQgnPropEmpty);
+//        // 2 phone memory
+//        AppendGulIconToIconArrayL(iconArray, AknIconUtils::AvkonIconFileName(),
+//                                  EMbmAvkonQgn_prop_phone_memc, EMbmAvkonQgn_prop_phone_memc_mask, KAknsIIDQgnPropPhoneMemc);
+//        // 3 memory card
+//        AppendGulIconToIconArrayL(iconArray, KMemoryCardUiBitmapFile,
+//                                  EMbmAknmemorycarduiQgn_prop_mmc_memc, EMbmAknmemorycarduiQgn_prop_mmc_memc_mask, KAknsIIDQgnPropMmcMemc);
+//        // 4 memory card disabled
+//        AppendGulIconToIconArrayL(iconArray, KMemoryCardUiBitmapFile,
+//                                  EMbmAknmemorycarduiQgn_prop_mmc_non, EMbmAknmemorycarduiQgn_prop_mmc_non_mask, KAknsIIDQgnPropMmcNon);
+//        // 5 folder
+//        AppendGulIconToIconArrayL(iconArray, AknIconUtils::AvkonIconFileName(),
+//                                  EMbmAvkonQgn_prop_folder_small, EMbmAvkonQgn_prop_folder_small_mask, KAknsIIDQgnPropFolderSmall);
+//        // 6 folder with subfolders
+//        AppendGulIconToIconArrayL(iconArray, AknIconUtils::AvkonIconFileName(),
+//                                  EMbmAvkonQgn_prop_folder_sub_small, EMbmAvkonQgn_prop_folder_sub_small_mask, KAknsIIDQgnPropFolderSubSmall);
+//        // 7 current folder
+//        AppendGulIconToIconArrayL(iconArray, AknIconUtils::AvkonIconFileName(),
+//                                  EMbmAvkonQgn_prop_folder_current, EMbmAvkonQgn_prop_folder_current_mask, KAknsIIDQgnPropFolderCurrent);
+//        }
+//
+//    // append custom icons if not in drive list view and setting is enabled
+//    if (!aGenerateNewBasicIconArray && !IsDriveListViewActive() && iEngine->Settings().iShowAssociatedIcons)
+//        {
+//        // init id counter
+//        TInt idCounter(EFixedIconListLength + iAppIconList->Count());
+//
+//        // loop all items in the file list
+//        for (TInt i=0; i<iFileEntryList->Count(); i++)
+//            {
+//            TFileEntry& fileEntry = iFileEntryList->At(i);
+//
+//            // just check for normal files
+//            if (!fileEntry.iEntry.IsDir())
+//                {
+//                TUid appUid = GetAppUid(fileEntry);
+//                TInt iconId = AppIconIdForUid(appUid);
+//
+//                if (appUid != KNullUid && iconId == KErrNotFound)
+//                    {
+//                    // icon not found from the icon array, generate it
+//                    CFbsBitmap* bitmap = NULL;
+//                    CFbsBitmap* mask = NULL;
+//                    CGulIcon* appIcon = NULL;
+//
+//                    TRAPD(err,
+//                        AknsUtils::CreateAppIconLC(AknsUtils::SkinInstance(), appUid, EAknsAppIconTypeList, bitmap, mask);
+//                        appIcon = CGulIcon::NewL(bitmap, mask);
+//                        CleanupStack::Pop(2); //bitmap, mask
+//                        );
+//
+//                    if (err == KErrNone)
+//                        {
+//                        TAppIcon appIconEntry;
+//                        appIconEntry.iId = idCounter;
+//                        appIconEntry.iUid = appUid;
+//
+//                        appIcon->SetBitmapsOwnedExternally(EFalse);
+//                        iconArray->AppendL(appIcon);
+//                        iAppIconList->AppendL(appIconEntry);
+//
+//                        fileEntry.iIconId = idCounter;
+//
+//                        idCounter++;
+//                        }
+//                    else
+//                        {
+//                        delete bitmap;
+//                        delete mask;
+//
+//                        TAppIcon appIconEntry;
+//                        appIconEntry.iId = EFixedIconEmpty;
+//                        appIconEntry.iUid = appUid;
+//
+//                        iAppIconList->AppendL(appIconEntry);
+//                        }
+//                    }
+//
+//                else if (appUid != KNullUid && iconId >= 0)
+//                    {
+//                    // we already have already generated an icon for this uid, use it
+//                    fileEntry.iIconId = iconId;
+//                    }
+//                }
+//            }
+//        }
+//
+//    CleanupStack::Pop(); //iconArray
+//	return iconArray;
+//
+//	}
+//
 // --------------------------------------------------------------------------------------------
 
 //void CFileBrowserFileUtils::AppendGulIconToIconArrayL(CAknIconArray* aIconArray, const TDesC& aIconFile, TInt aIconId, TInt aMaskId, const TAknsItemID aAknsItemId)
@@ -1369,8 +1379,9 @@
     // update view
     RefreshViewL();
     
-    if ( iEngine->Settings().iRememberFolderSelection &&
-         iEngine->FileListContainer() && iPrevFolderIndex > KErrNotFound )
+    if (iEngine->Settings().iRememberFolderSelection
+        //&& iEngine->FileListContainer()
+        && iPrevFolderIndex > KErrNotFound )
         {
         
 //        TInt visibleItems = iEngine->FileListContainer()->ListBox()->Rect().Height() /
@@ -1960,46 +1971,48 @@
 //    if (dlgResult)
 //        {
 //        iEngine->EikonEnv()->BusyMsgL(_L("** Searching **"), TGulAlignment(EHCenterVTop));
-//
-//        iFileEntryList->Reset();
-//
-//        // if search dir is empty, find from all drives
-//        if (iSearchAttributes.iSearchDir == KNullDesC)
-//            {
-//            for (TInt i=0; i<iDriveEntryList->Count(); i++)
-//                {
-//                TDriveEntry driveEntry = iDriveEntryList->At(i);
-//
-//                TBuf<10> driveRoot;
-//                driveRoot.Append(driveEntry.iLetter);
-//                driveRoot.Append(_L(":\\"));
-//
-//                DoSearchFiles(iSearchAttributes.iWildCards, driveRoot);
-//
-//                if (iSearchAttributes.iRecurse)
-//                    DoSearchFilesRecursiveL(iSearchAttributes.iWildCards, driveRoot);
-//
-//                }
-//
-//            }
-//
-//        // otherwise just search from the selected directory
-//        else
-//            {
-//            DoSearchFiles(iSearchAttributes.iWildCards, iSearchAttributes.iSearchDir);
-//
-//            if (iSearchAttributes.iRecurse)
-//                DoSearchFilesRecursiveL(iSearchAttributes.iWildCards, iSearchAttributes.iSearchDir);
-//            }
-//
+
+
+        iEngine->FileBrowserUI()->ShowWaitDialog(_L("Searching"));
+        iFileEntryList->Reset();
+
+        // if search dir is empty, find from all drives
+        if (iSearchAttributes.iSearchDir == KNullDesC)
+            {
+            for (TInt i=0; i<iDriveEntryList->Count(); i++)
+                {
+                TDriveEntry driveEntry = iDriveEntryList->At(i);
+
+                TBuf<10> driveRoot;
+                driveRoot.Append(driveEntry.iLetter);
+                driveRoot.Append(_L(":\\"));
+
+                DoSearchFiles(iSearchAttributes.iWildCards, driveRoot);
+
+                if (iSearchAttributes.iRecurse)
+                    DoSearchFilesRecursiveL(iSearchAttributes.iWildCards, driveRoot);
+                }
+
+            }
+
+        // otherwise just search from the selected directory
+        else
+            {
+            DoSearchFiles(iSearchAttributes.iWildCards, iSearchAttributes.iSearchDir);
+
+            if (iSearchAttributes.iRecurse)
+                DoSearchFilesRecursiveL(iSearchAttributes.iWildCards, iSearchAttributes.iSearchDir);
+            }
+
 //        iEngine->EikonEnv()->BusyMsgCancel();
-//
+        iEngine->FileBrowserUI()->CancelWaitDialog();
+
 //        TInt operations = iFileEntryList->Count();
-//
-//        iListingMode = ESearchResults;
-//        iEngine->FileListContainer()->ListBox()->SetCurrentItemIndex(0);
-//        RefreshViewL();
-//
+
+        iListingMode = ESearchResults;
+        // TODO iEngine->FileListContainer()->ListBox()->SetCurrentItemIndex(0);
+        RefreshViewL();
+
 //        _LIT(KMessage, "%d entries found");
 //        TFileName noteMsg;
 //        noteMsg.Format(KMessage, operations);
@@ -2016,8 +2029,9 @@
     CDir* dir;
     TInt err = fileFinder.FindWildByPath(aFileName, &aPath, dir);
 
-    while (err == KErrNone)
+    while (err == KErrNone && iAllowProcessing)
         {
+        iEngine->FileBrowserUI()->ProcessEvents();
         for (TInt i=0; i<dir->Count(); i++)
             {
             TEntry entry = (*dir)[i];
@@ -2739,15 +2753,15 @@
 	
 // --------------------------------------------------------------------------------------------
 
-void CFileBrowserFileUtils::HandleServerAppExit(TInt aReason)
-	{
+//void CFileBrowserFileUtils::HandleServerAppExit(TInt aReason)
+//	{
 //	if (iOpenFileService)
 //		{
 //		delete iOpenFileService;
 //		iOpenFileService = NULL;
 //		}
-	MAknServerAppExitObserver::HandleServerAppExit(aReason);
-	}
+//	MAknServerAppExitObserver::HandleServerAppExit(aReason);
+//	}
 
 // --------------------------------------------------------------------------------------------
 
@@ -3123,7 +3137,7 @@
         // update view
         RefreshViewL(); 
     
-        if (err == KErrNone)    
+        if (err == KErrNone)
             {
             iEngine->FileBrowserUI()->ShowConfirmationNote(_L("State changed"));
             }
@@ -3266,7 +3280,7 @@
         CleanupClosePushL(file);
         iFindFileEntryList->Reset();
         
-        iEngine->EikonEnv()->BusyMsgL(_L("** Generating **"), TGulAlignment(EHCenterVTop));
+        iEngine->FileBrowserUI()->ShowWaitDialog(_L("Generating"));
         
         for (TInt i=0; i<iDriveEntryList->Count(); i++)
             {
@@ -3291,12 +3305,35 @@
             
             writeBuf.Copy(fileEntry.iPath);
             writeBuf.Append(fileEntry.iEntry.iName);
+            writeBuf.Append(_L(","));
+            writeBuf.AppendNum(fileEntry.iEntry.iSize);
+            writeBuf.Append(_L(" B"));
+
+//            // date
+//            TTime entryModified = fileEntry.iEntry.iModified;
+//            // convert from universal time
+//            if ( iTz.ConvertToLocalTime( entryModified ) == KErrNone )
+//                {
+//                entryModified = fileEntry.iEntry.iModified; // use universal time
+//                }
+//
+//            _LIT(KDateFormat,               "%D%M%Y%/0%1%/1%2%/2%3%/3");
+//            TBuf<32> dateBuf;
+//            entryModified.FormatL(dateBuf, KDateFormat);
+//            writeBuf.Append(dateBuf);
+//
+//            writeBuf.Append(_L(" "));
+//            // time
+//            _LIT(KTimeFormat, "%-B%:0%J%:1%T%:2%S%:3%+B");
+//            TBuf<32> timeBuf;
+//            entryModified.FormatL(timeBuf, KTimeFormat);
+//            writeBuf.Append(timeBuf);
+//
             writeBuf.Append(KFileNewLine);
-            
             file.Write(writeBuf);
             }
         
-        iEngine->EikonEnv()->BusyMsgCancel();
+        iEngine->FileBrowserUI()->CancelWaitDialog();
         
         CleanupStack::PopAndDestroy(); //file
         iFindFileEntryList->Reset();
@@ -3305,7 +3342,7 @@
         TFileName noteMsg;
         noteMsg.Format(KMessage, &allFilesPath);
 
-        iEngine->FileBrowserUI()->ShowConfirmationNote(noteMsg, ETrue); // NoTimeout
+        iEngine->FileBrowserUI()->ShowConfirmationNote(noteMsg, EFalse); // NoTimeout
         }
     else
         {
@@ -3325,8 +3362,9 @@
     CDir* dir;
     TInt err = fileFinder.FindWildByPath(aFileName, &aPath, dir);
 
-    while (err == KErrNone)
+    while (err == KErrNone && iAllowProcessing)
         {
+        iEngine->FileBrowserUI()->ProcessEvents();
         for (TInt i=0; i<dir->Count(); i++)
             {
             TEntry entry = (*dir)[i];