diff -r ba8a586c45f1 -r c20154ccf3c0 filebrowser/engine/FBFileUtils.cpp --- 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 #include -#include +#include #include #include +#include +#include #include #include #include -#include #include -#include +//#include #include #include #include @@ -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; iCount(); 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; iCount(); 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; iCount(); 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; iCount(); 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; iCount(); 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; iCount(); 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; iCount(); i++) { TEntry entry = (*dir)[i];