diff -r 48060abbbeaf -r b3cee849fa46 filebrowser/src/FBFileDlgs.cpp --- a/filebrowser/src/FBFileDlgs.cpp Thu Aug 19 09:55:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1115 +0,0 @@ -/* -* Copyright (c) 2009 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: -* -*/ - - -// INCLUDE FILES -#include "FBFileDlgs.h" -#include "FBFileUtils.h" -#include "FB.hrh" -#include "FBStd.h" -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -const TInt KAttOn = 1; -const TInt KAttOff = 2; -const TInt KAttEnableRecursion = 0; -const TInt KAttDisableRecursion = 1; -const TInt64 KAlmostaDayInMicroSeconds = 86399999999; - - -// ===================================== MEMBER FUNCTIONS ===================================== - -CFileBrowserDestinationFolderSelectionDlg* CFileBrowserDestinationFolderSelectionDlg::NewL( - TDes& aReturnPath, CDriveEntryList* aDriveEntryList, CAknIconArray* aIconArray) - { - CFileBrowserDestinationFolderSelectionDlg* self = new(ELeave) CFileBrowserDestinationFolderSelectionDlg(aReturnPath, aIconArray); - CleanupStack::PushL(self); - self->ConstructL(aDriveEntryList); - CleanupStack::Pop(self); - return self; - } - -// -------------------------------------------------------------------------------------------- - -CFileBrowserDestinationFolderSelectionDlg::~CFileBrowserDestinationFolderSelectionDlg() - { - delete iFileEntryList; - delete iDriveEntryList; - - iFs.Close(); - - iEikonEnv->InfoMsgCancel(); - } - -// -------------------------------------------------------------------------------------------- - -CFileBrowserDestinationFolderSelectionDlg::CFileBrowserDestinationFolderSelectionDlg( - TDes& aReturnPath, CAknIconArray* aIconArray) : CAknListQueryDialog(&iSelectedIndex), - iReturnPath(aReturnPath), iIconArray(aIconArray) - { - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDestinationFolderSelectionDlg::ConstructL(CDriveEntryList* aDriveEntryList) - { - User::LeaveIfError( iFs.Connect() ); - iDriveEntryList = new(ELeave) CDriveEntryList(8); - iFileEntryList = new(ELeave) CFileEntryList(32); - iCurrentPath = KNullDesC; - - //iIsDragging = EFalse; - //EnableDragEvents(); - - // get only writeable drives - for (TInt i=0; iCount(); i++) - { - TDriveEntry driveEntry = aDriveEntryList->At(i); - - if (driveEntry.iVolumeInfo.iDrive.iMediaAtt != KMediaAttWriteProtected && driveEntry.iVolumeInfo.iDrive.iMediaAtt != KMediaAttLocked && driveEntry.iVolumeInfo.iDrive.iDriveAtt != KDriveAbsent) - { - iDriveEntryList->AppendL(driveEntry); - } - } - } - -// -------------------------------------------------------------------------------------------- - -/* -void CFileBrowserDestinationFolderSelectionDlg::HandlePointerEventL(const TPointerEvent &aPointerEvent) - { - // detect direction of dragging by comparing the start and finish points - - if (aPointerEvent.iType == TPointerEvent::EButton1Down) - { - iDragStartPoint = aPointerEvent.iPosition; - iIsDragging = EFalse; - } - else if (aPointerEvent.iType == TPointerEvent::EDrag) - { - iIsDragging = ETrue; - - return; - } - else if (aPointerEvent.iType == TPointerEvent::EButton1Up) - { - if (iIsDragging) - { - const TInt KDelta = iDragStartPoint.iX - aPointerEvent.iPosition.iX; - const TInt KThreshold = 30; - - if (KDelta < -KThreshold) // dragging to right - { - // "emulate" right key press - - TKeyEvent keyEvent; - keyEvent.iCode = EKeyRightArrow; - keyEvent.iModifiers = 0; - - TEventCode type = EEventKey; - - OfferKeyEventL(keyEvent, type); - - return; - } - else if (KDelta > KThreshold) // dragging to left - { - // "emulate" left key press - - TKeyEvent keyEvent; - keyEvent.iCode = EKeyLeftArrow; - keyEvent.iModifiers = 0; - - TEventCode type = EEventKey; - - OfferKeyEventL(keyEvent, type); - - return; - } - } - iIsDragging = EFalse; - } - else - { - iIsDragging = EFalse; - } - - CAknListQueryDialog::HandlePointerEventL(aPointerEvent); - } -*/ - -// -------------------------------------------------------------------------------------------- - -TKeyResponse CFileBrowserDestinationFolderSelectionDlg::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType) - { - if(aType != EEventKey) - return EKeyWasNotConsumed; - - if (aKeyEvent.iCode == EKeyLeftArrow && !IsDriveListViewActive()) - { - MoveUpOneLevelL(); - return EKeyWasConsumed; - } - else if (aKeyEvent.iCode == EKeyRightArrow && ((ListBox()->CurrentItemIndex() > 0 && !IsDriveListViewActive()) || IsDriveListViewActive())) - { - MoveDownToDirectoryL(); - return EKeyWasConsumed; - } - else if (aKeyEvent.iCode == EKeyOK || aKeyEvent.iCode == EKeyEnter) - { - if (IsDriveListViewActive()) - { - MoveDownToDirectoryL(); - return EKeyWasConsumed; - } - else if (ListBox()->CurrentItemIndex() == 0) - { - TryExitL(EAknSoftkeyOk); - return EKeyWasConsumed; - } - else if (ListBox()->CurrentItemIndex() > 0) - { - MoveDownToDirectoryL(); - return EKeyWasConsumed; - } - } - - TKeyResponse result = CAknDialog::OfferKeyEventL(aKeyEvent, aType); - - // update LSK label - if (!IsDriveListViewActive()) - { - if (ListBox()->CurrentItemIndex() == 0) - { - ButtonGroupContainer().SetCommandL(0, EAknSoftkeyOk, iLSKActionText); - ButtonGroupContainer().DrawNow(); - } - else - { - ButtonGroupContainer().SetCommandL(0, EAknSoftkeyOk, _L("Open dir")); - ButtonGroupContainer().DrawNow(); - } - } - - return result; - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDestinationFolderSelectionDlg::PreLayoutDynInitL() - { - CAknListQueryDialog::PreLayoutDynInitL(); - - static_cast(ListBox())->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue); - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDestinationFolderSelectionDlg::PostLayoutDynInitL() - { - CAknListQueryDialog::PostLayoutDynInitL(); - - SetIconArrayL(static_cast*>(iIconArray)); - - RefreshViewL(); - } - -// -------------------------------------------------------------------------------------------- - -TBool CFileBrowserDestinationFolderSelectionDlg::OkToExitL(TInt aButtonId) - { - if (aButtonId == GetLeftCBAShortKeyPress()) - { - if (IsDriveListViewActive()) - { - MoveDownToDirectoryL(); - return EFalse; - } - else if (ListBox()->CurrentItemIndex() == 0) - { - // close the dialog - iReturnPath = iCurrentPath; - return ETrue; - } - else if (ListBox()->CurrentItemIndex() > 0) - { - MoveDownToDirectoryL(); - return EFalse; - } - else - return EFalse; - } - else if (aButtonId == GetRightCBAShortKeyPress()) - { - return ETrue; - } - else - { - return EFalse; - } - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDestinationFolderSelectionDlg::MoveUpOneLevelL() - { - if (iCurrentPath.Length() <= 3) - { - // move to drive list view is the current path is already short enough - iCurrentPath = KNullDesC; - } - else - { - // move one directory up - TInt marker(iCurrentPath.Length()); - - // find second last dir marker - for (TInt i=iCurrentPath.Length()-2; i>=0; i--) - { - if (iCurrentPath[i] == '\\') - { - marker = i; - break; - } - - } - iCurrentPath = iCurrentPath.LeftTPtr(marker+1); - } - - // update view - RefreshViewL(); - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDestinationFolderSelectionDlg::MoveDownToDirectoryL() - { - TInt index = ListBox()->CurrentItemIndex(); - - if (index >= 0) - { - if (IsDriveListViewActive()) - { - // currently in a drive list view, move to root of selected drive - if (iDriveEntryList->Count() > index) - { - TDriveEntry driveEntry = iDriveEntryList->At(index); - - iCurrentPath.Append(driveEntry.iLetter); - iCurrentPath.Append(_L(":\\")); - } - } - else - { - // this needed because we have an extra item in the listbox - index--; - - // append the new directory - if (iFileEntryList->Count() > index) - { - TFileEntry fileEntry = iFileEntryList->At(index); - - if (fileEntry.iEntry.IsDir()) - { - iCurrentPath.Append(fileEntry.iEntry.iName); - iCurrentPath.Append(_L("\\")); - } - } - } - - // update view - RefreshViewL(); - } - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDestinationFolderSelectionDlg::RefreshViewL() - { - CDesCArray* textArray = new(ELeave) CDesCArrayFlat(16); - - if (IsDriveListViewActive()) - { - _LIT(KSimpleDriveEntry, "%d\t%c: <%S>\t\t"); - - for (TInt i=0; iCount(); i++) - { - TFileName textEntry; - TDriveEntry driveEntry = iDriveEntryList->At(i); - - textEntry.Format(KSimpleDriveEntry, driveEntry.iIconId, TUint(driveEntry.iLetter), &driveEntry.iMediaTypeDesc); - - textArray->AppendL(textEntry); - } - - // set default LSK label - ButtonGroupContainer().SetCommandL(0, EAknSoftkeyOk, _L("Open drive")); - ButtonGroupContainer().DrawNow(); - } - - else - { - // first get the directory list - iFileEntryList->Reset(); - - CDir* dir = NULL; - if (iFs.GetDir(iCurrentPath, KEntryAttDir|KEntryAttMatchMask, ESortByName | EAscending | EDirsFirst, dir) == KErrNone) - { - CleanupStack::PushL(dir); - - for (TInt i=0; iCount(); i++) - { - TFileEntry fileEntry; - fileEntry.iPath = iCurrentPath; - fileEntry.iEntry = (*dir)[i]; - fileEntry.iDirEntries = KErrNotFound; - fileEntry.iIconId = EFixedIconEmpty; - - // check for directory entries - if (fileEntry.iEntry.IsDir()) - { - fileEntry.iIconId = EFixedIconFolder; - - TFileName subPath = fileEntry.iPath; - subPath.Append(fileEntry.iEntry.iName); - subPath.Append(_L("\\")); - - // check if any sub directories - CDir* subDir = NULL; - if (iFs.GetDir(subPath, KEntryAttDir|KEntryAttMatchMask, ESortNone | EDirsFirst, subDir) == KErrNone) - { - fileEntry.iDirEntries = subDir->Count(); - - for (TInt j=0; jCount(); j++) - { - TEntry entry = (*subDir)[j]; - - if (entry.IsDir()) - { - fileEntry.iIconId = EFixedIconFolderSub; - break; - } - } - - delete subDir; - } - } - - iFileEntryList->AppendL(fileEntry); - } - - CleanupStack::PopAndDestroy(); //dir - } - - - _LIT(KSimpleFileEntry, "%d\t%S\t\t"); - - - // append current folder item - TParse nameParser; - TInt err = nameParser.SetNoWild(iCurrentPath.LeftTPtr(iCurrentPath.Length()-1), NULL, NULL); - TFileName currentFolderName = nameParser.Name(); - if (currentFolderName == KNullDesC) - currentFolderName.Copy(_L("[root level]")); - - TFileName currentDirTextEntry; - currentDirTextEntry.Format(KSimpleFileEntry, EFixedIconFolderCurrent, ¤tFolderName); - textArray->AppendL(currentDirTextEntry); - - - for (TInt i=0; iCount(); i++) - { - TFileName textEntry; - TFileEntry fileEntry = iFileEntryList->At(i); - - textEntry.Format(KSimpleFileEntry, fileEntry.iIconId, &fileEntry.iEntry.iName); - - textArray->AppendL(textEntry); - } - - // set default LSK label - ButtonGroupContainer().SetCommandL(0, EAknSoftkeyOk, iLSKActionText); - ButtonGroupContainer().DrawNow(); - } - - if (iCurrentPath == KNullDesC) - iEikonEnv->InfoMsgWithDuration(_L("<- up dir down dir ->"), TTimeIntervalMicroSeconds32(KMaxTInt)); - else - iEikonEnv->InfoMsgWithDuration(iCurrentPath, TTimeIntervalMicroSeconds32(KMaxTInt)); - - SetItemTextArray(textArray); - SetOwnershipType(ELbmOwnsItemArray); - ListBox()->HandleItemAdditionL(); - Layout(); - ListBox()->SetCurrentItemIndex(0); - DrawDeferred(); - } - -// -------------------------------------------------------------------------------------------- - -TBool CFileBrowserDestinationFolderSelectionDlg::RunCopyDlgLD() - { - iLSKActionText.Copy(_L("Copy")); - return ExecuteLD(R_COPY_TO_FOLDER_SELECTION_QUERY); - } - -// -------------------------------------------------------------------------------------------- - -TBool CFileBrowserDestinationFolderSelectionDlg::RunMoveDlgLD() - { - iLSKActionText.Copy(_L("Move")); - return ExecuteLD(R_MOVE_TO_FOLDER_SELECTION_QUERY); - } - -// -------------------------------------------------------------------------------------------- - -TInt CAknQueryDialog::GetLeftCBAShortKeyPress() - { - return TInt16(0xffff & TInt16(ButtonGroupContainer().ButtonGroup()->CommandId(0))); - } - -// -------------------------------------------------------------------------------------------- - -TInt CAknQueryDialog::GetRightCBAShortKeyPress() - { - return TInt16(0xffff & TInt16(ButtonGroupContainer().ButtonGroup()->CommandId(2))); - } - - -// -------------------------------------------------------------------------------------------- -// -------------------------------------------------------------------------------------------- - - -CFileBrowserAttributeEditorDlg* CFileBrowserAttributeEditorDlg::NewL(TUint& aSetAttMask, TUint& aClearAttMask, TBool& aRecurse) - { - CFileBrowserAttributeEditorDlg* self = new(ELeave) CFileBrowserAttributeEditorDlg(aSetAttMask, aClearAttMask, aRecurse); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// -------------------------------------------------------------------------------------------- - -CFileBrowserAttributeEditorDlg::~CFileBrowserAttributeEditorDlg() - { - } - -// -------------------------------------------------------------------------------------------- - -CFileBrowserAttributeEditorDlg::CFileBrowserAttributeEditorDlg(TUint& aSetAttMask, TUint& aClearAttMask, TBool& aRecurse) : - iSetAttMask(aSetAttMask), iClearAttMask(aClearAttMask), iRecurse(aRecurse) - { - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserAttributeEditorDlg::ConstructL() - { - CAknForm::ConstructL(); - - // set title text - CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane(); - CAknTitlePane* tp = static_cast( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - tp->SetTextL( _L("Set attributes") ); - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserAttributeEditorDlg::PreLayoutDynInitL() - { - CAknForm::PreLayoutDynInitL(); - - // set default LSK label - ButtonGroupContainer().SetCommandL(0, EAknSoftkeyOk, _L("Save")); - - // load values - CAknPopupFieldText* archivePopup = static_cast(Control(EFileBrowserAttributeEditorSetArchive)); - CAknPopupFieldText* hiddenPopup = static_cast(Control(EFileBrowserAttributeEditorSetHidden)); - CAknPopupFieldText* readOnlyPopup = static_cast(Control(EFileBrowserAttributeEditorSetReadOnly)); - CAknPopupFieldText* systemPopup = static_cast(Control(EFileBrowserAttributeEditorSetSystem)); - CAknPopupFieldText* recursePopup = static_cast(Control(EFileBrowserAttributeEditorSetRecurse)); - - if (iSetAttMask & KEntryAttArchive) - archivePopup->SetCurrentValueIndex(KAttOn); - else if (iClearAttMask & KEntryAttArchive) - archivePopup->SetCurrentValueIndex(KAttOff); - - if (iSetAttMask & KEntryAttHidden) - hiddenPopup->SetCurrentValueIndex(KAttOn); - else if (iClearAttMask & KEntryAttHidden) - hiddenPopup->SetCurrentValueIndex(KAttOff); - - if (iSetAttMask & KEntryAttReadOnly) - readOnlyPopup->SetCurrentValueIndex(KAttOn); - else if (iClearAttMask & KEntryAttReadOnly) - readOnlyPopup->SetCurrentValueIndex(KAttOff); - - if (iSetAttMask & KEntryAttSystem) - systemPopup->SetCurrentValueIndex(KAttOn); - else if (iClearAttMask & KEntryAttSystem) - systemPopup->SetCurrentValueIndex(KAttOff); - - if (iRecurse) - recursePopup->SetCurrentValueIndex(KAttEnableRecursion); - else - recursePopup->SetCurrentValueIndex(KAttDisableRecursion); - } - -// -------------------------------------------------------------------------------------------- - -TBool CFileBrowserAttributeEditorDlg::OkToExitL(TInt aButtonId) - { - if (aButtonId == EAknSoftkeyOk) - { - // save changes - CAknPopupFieldText* archivePopup = static_cast(Control(EFileBrowserAttributeEditorSetArchive)); - CAknPopupFieldText* hiddenPopup = static_cast(Control(EFileBrowserAttributeEditorSetHidden)); - CAknPopupFieldText* readOnlyPopup = static_cast(Control(EFileBrowserAttributeEditorSetReadOnly)); - CAknPopupFieldText* systemPopup = static_cast(Control(EFileBrowserAttributeEditorSetSystem)); - CAknPopupFieldText* recursePopup = static_cast(Control(EFileBrowserAttributeEditorSetRecurse)); - - iSetAttMask = 0; - iClearAttMask = 0; - - if (archivePopup->CurrentValueIndex() == KAttOn) - iSetAttMask |= KEntryAttArchive; - else if (archivePopup->CurrentValueIndex() == KAttOff) - iClearAttMask |= KEntryAttArchive; - - if (hiddenPopup->CurrentValueIndex() == KAttOn) - iSetAttMask |= KEntryAttHidden; - else if (hiddenPopup->CurrentValueIndex() == KAttOff) - iClearAttMask |= KEntryAttHidden; - - if (readOnlyPopup->CurrentValueIndex() == KAttOn) - iSetAttMask |= KEntryAttReadOnly; - else if (readOnlyPopup->CurrentValueIndex() == KAttOff) - iClearAttMask |= KEntryAttReadOnly; - - if (systemPopup->CurrentValueIndex() == KAttOn) - iSetAttMask |= KEntryAttSystem; - else if (systemPopup->CurrentValueIndex() == KAttOff) - iClearAttMask |= KEntryAttSystem; - - if (recursePopup->CurrentValueIndex() == KAttEnableRecursion) - iRecurse = ETrue; - else if (recursePopup->CurrentValueIndex() == KAttDisableRecursion) - iRecurse = EFalse; - } - - return ETrue; - } -// -------------------------------------------------------------------------------------------- - -TBool CFileBrowserAttributeEditorDlg::RunEditorLD() - { - return ExecuteLD(R_ATTRIBUTE_EDITOR_FORM_DIALOG); - } - - -// -------------------------------------------------------------------------------------------- -// -------------------------------------------------------------------------------------------- - - -CFileBrowserSearchQueryDlg* CFileBrowserSearchQueryDlg::NewL(TSearchAttributes& aSearchAttributes) - { - CFileBrowserSearchQueryDlg* self = new(ELeave) CFileBrowserSearchQueryDlg(aSearchAttributes); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// -------------------------------------------------------------------------------------------- - -CFileBrowserSearchQueryDlg::~CFileBrowserSearchQueryDlg() - { - } - -// -------------------------------------------------------------------------------------------- - -CFileBrowserSearchQueryDlg::CFileBrowserSearchQueryDlg(TSearchAttributes& aSearchAttributes) : - iSearchAttributes(aSearchAttributes) - { - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserSearchQueryDlg::ConstructL() - { - CAknForm::ConstructL(); - - // set title text - CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane(); - CAknTitlePane* tp = static_cast( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - tp->SetTextL( _L("Search") ); - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserSearchQueryDlg::PreLayoutDynInitL() - { - CAknForm::PreLayoutDynInitL(); - - // set default LSK label - ButtonGroupContainer().SetCommandL(0, EAknSoftkeyOk, _L("Search")); - - // load values - CEikEdwin* searchDir = static_cast(Control(EFileBrowserSearchQuerySearchDir)); - CEikEdwin* wildCards = static_cast(Control(EFileBrowserSearchQueryWildCards)); - CEikEdwin* textInFile = static_cast(Control(EFileBrowserSearchQueryTextInFile)); - CEikNumberEditor* minSize = static_cast(Control(EFileBrowserSearchQueryMinSize)); - CEikNumberEditor* maxSize = static_cast(Control(EFileBrowserSearchQueryMaxSize)); - CEikDateEditor* minDate = static_cast(Control(EFileBrowserSearchQueryMinDate)); - CEikDateEditor* maxDate = static_cast(Control(EFileBrowserSearchQueryMaxDate)); - CAknPopupFieldText* recurse = static_cast(Control(EFileBrowserSearchQueryRecurse)); - - searchDir->SetTextL(&iSearchAttributes.iSearchDir); - wildCards->SetTextL(&iSearchAttributes.iWildCards); - textInFile->SetTextL(&iSearchAttributes.iTextInFile); - minSize->SetNumber(iSearchAttributes.iMinSize); - maxSize->SetNumber(iSearchAttributes.iMaxSize); - minDate->SetDate(iSearchAttributes.iMinDate); - maxDate->SetDate(iSearchAttributes.iMaxDate); - recurse->SetCurrentValueIndex(iSearchAttributes.iRecurse); - } -// -------------------------------------------------------------------------------------------- - -TBool CFileBrowserSearchQueryDlg::OkToExitL(TInt aButtonId) - { - if (aButtonId == EAknSoftkeyOk) - { - // save changes - CEikEdwin* searchDir = static_cast(Control(EFileBrowserSearchQuerySearchDir)); - CEikEdwin* wildCards = static_cast(Control(EFileBrowserSearchQueryWildCards)); - CEikEdwin* textInFile = static_cast(Control(EFileBrowserSearchQueryTextInFile)); - CEikNumberEditor* minSize = static_cast(Control(EFileBrowserSearchQueryMinSize)); - CEikNumberEditor* maxSize = static_cast(Control(EFileBrowserSearchQueryMaxSize)); - CEikDateEditor* minDate = static_cast(Control(EFileBrowserSearchQueryMinDate)); - CEikDateEditor* maxDate = static_cast(Control(EFileBrowserSearchQueryMaxDate)); - CAknPopupFieldText* recurse = static_cast(Control(EFileBrowserSearchQueryRecurse)); - - // get the current value of search dir and make sure it has a trailing backslash - TFileName searchDirBuf; - searchDir->GetText(searchDirBuf); - if (searchDirBuf.Length() && searchDirBuf[searchDirBuf.Length()-1] != '\\') - searchDirBuf.Append('\\'); - - // check that the path is valid - if (searchDirBuf.Length() && !EikFileUtils::PathExists(searchDirBuf)) - { - CAknInformationNote* note = new(ELeave) CAknInformationNote; - note->ExecuteLD(_L("Given search directory does not exists")); - - return EFalse; - } - - iSearchAttributes.iSearchDir = searchDirBuf; - wildCards->GetText(iSearchAttributes.iWildCards); - textInFile->GetText(iSearchAttributes.iTextInFile); - iSearchAttributes.iMinSize = minSize->Number(); - iSearchAttributes.iMaxSize = maxSize->Number(); - iSearchAttributes.iMinDate = minDate->Date(); - iSearchAttributes.iMaxDate = maxDate->Date(); - // Adjust the MaxDate to the end of the day: - iSearchAttributes.iMaxDate += TTimeIntervalMicroSeconds( KAlmostaDayInMicroSeconds ); - iSearchAttributes.iRecurse = recurse->CurrentValueIndex(); - } - - return ETrue; - } -// -------------------------------------------------------------------------------------------- - -TBool CFileBrowserSearchQueryDlg::RunQueryLD() - { - return ExecuteLD(R_SEARCH_QUERY_FORM_DIALOG); - } - - -// -------------------------------------------------------------------------------------------- -// -------------------------------------------------------------------------------------------- - - -CFileBrowserDataTypesDlg* CFileBrowserDataTypesDlg::NewL() - { - CFileBrowserDataTypesDlg* self = new(ELeave) CFileBrowserDataTypesDlg(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// -------------------------------------------------------------------------------------------- - -CFileBrowserDataTypesDlg::~CFileBrowserDataTypesDlg() - { - delete iDTArray; - - iLs.Close(); - } - -// -------------------------------------------------------------------------------------------- - -CFileBrowserDataTypesDlg::CFileBrowserDataTypesDlg() - { - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDataTypesDlg::ConstructL() - { - // construct a menu bar - CAknDialog::ConstructL(R_FILEBROWSER_DATA_TYPES_MENUBAR); - - // set title text - CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane(); - CAknTitlePane* tp = static_cast( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - tp->SetTextL( _L("Data types") ); - - User::LeaveIfError(iLs.Connect()); - - iDTArray = new(ELeave) CDataTypeArray(32); - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDataTypesDlg::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType) - { - switch (aEventType) - { - case EEventEnterKeyPressed: - case EEventItemDoubleClicked: - // reserved for future extensions; - break; - default: - break; - } - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDataTypesDlg::ProcessCommandL(TInt aCommandId) - { - CAknDialog::ProcessCommandL(aCommandId); - - switch (aCommandId) - { - case EFileBrowserCmdDataTypesChangeMapping: - ChangeMappingL(); - break; - case EFileBrowserCmdDataTypesSetDefaultMapping: - SetDefaultMappingL(); - break; - case EFileBrowserCmdDataTypesRefresh: - GetDataTypesL(); - break; - case EFileBrowserCmdDataTypesExit: - TryExitL(EAknCmdExit); - break; - default: - break; - } - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDataTypesDlg::PreLayoutDynInitL() - { - CAknDialog::PreLayoutDynInitL(); - - iListBox = static_cast( Control(EFileBrowserDataTypesList) ); - iListBox->SetContainerWindowL(*this); - iListBox->View()->SetListEmptyTextL(_L("No data types")); - - iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue); - - iListBox->CreateScrollBarFrameL(ETrue); - iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto); - iListBox->SetListBoxObserver(this); - - iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray); - - GetDataTypesL(); - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDataTypesDlg::GetDataTypesL() - { - // get an instance of the listbox's item array - MDesCArray* tempArray = iListBox->Model()->ItemTextArray(); - CDesCArray* listBoxArray = (CDesCArray*)tempArray; - listBoxArray->Reset(); - - // create an icon array - CAknIconArray* iconArray = new(ELeave) CAknIconArray(32); - CleanupStack::PushL(iconArray); - - // get data types - iDTArray->Reset(); - User::LeaveIfError(iLs.GetSupportedDataTypesL(*iDTArray)); - - // sort the array - TKeyArrayFix key(0, ECmpFolded8); // iDataType is located in offset 0 and contain 8-bit descriptor - iDTArray->Sort(key); - - - // loop each data type - for (TInt i=0; iCount(); i++) - { - TDataType& dt = iDTArray->At(i); - - // get app uid which handles this data type - TUid appUid; - TInt err = iLs.AppForDataType(dt, appUid); - - // generate icon which is the app icon which handles this mime type - CFbsBitmap* bitmap = NULL; - CFbsBitmap* mask = NULL; - CGulIcon* appIcon = NULL; - - TRAPD(err2, - AknsUtils::CreateAppIconLC(AknsUtils::SkinInstance(), appUid, EAknsAppIconTypeList, bitmap, mask); - appIcon = CGulIcon::NewL(bitmap, mask); - CleanupStack::Pop(2); //bitmap, mask - ); - - // append to the icon array - appIcon->SetBitmapsOwnedExternally(EFalse); - iconArray->AppendL(appIcon); - - TFileName entry; - entry.AppendNum(i); - entry.Append(_L("\t")); - entry.Append(dt.Des()); - entry.Append(_L(" <<")); - - - // get caption of the handling app - TFileName appCaption; - - if (err || err2 || appUid == KNullUid) - entry.Append(_L("none")); - else - { - TApaAppInfo appInfo; - - if (iLs.GetAppInfo(appInfo, appUid) == KErrNone) - entry.Append(appInfo.iCaption); - else - entry.Append(_L("none")); - } - - entry.Append(_L(">>")); - - listBoxArray->AppendL( entry ); - } - - - // clear any previous icon array - CAknIconArray* oldIconArray = static_cast(iListBox->ItemDrawer()->ColumnData()->IconArray()); - if (oldIconArray) - delete oldIconArray; - - - CleanupStack::Pop(); //iconArray - - // updates the listbox - iListBox->ItemDrawer()->ColumnData()->SetIconArray(iconArray); - iListBox->HandleItemAdditionL(); - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDataTypesDlg::ChangeMappingL() - { - TInt currentItemIndex = iListBox->CurrentItemIndex(); - - if (iDTArray->Count() > currentItemIndex && currentItemIndex >= 0) - { - // create list of TApaAppInfo - CArrayFixFlat* appInfoArray = new(ELeave) CArrayFixFlat(64); - CleanupStack::PushL(appInfoArray); - - // get list of applications - TApaAppInfo appInfo; - User::LeaveIfError(iLs.GetAllApps()); - - while (iLs.GetNextApp(appInfo) == KErrNone) - { - appInfoArray->AppendL(appInfo); - } - - // sort the array - TKeyArrayFix key(_FOFF(TApaAppInfo,iCaption), ECmpFolded16); - appInfoArray->Sort(key); - - // create a popup with listbox - CAknSingleGraphicPopupMenuStyleListBox* listBox = new(ELeave) CAknSingleGraphicPopupMenuStyleListBox(); - CleanupStack::PushL(listBox); - CAknPopupList* popupList = CAknPopupList::NewL(listBox, R_AVKON_SOFTKEYS_SELECT_CANCEL, AknPopupLayouts::EMenuGraphicWindow ); - CleanupStack::PushL(popupList); - listBox->ConstructL( popupList, 0 ); - listBox->CreateScrollBarFrameL(ETrue); - listBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto); - listBox->View()->SetListEmptyTextL(_L("No apps")); - listBox->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue); - listBox->Model()->SetOwnershipType(ELbmOwnsItemArray); - popupList->SetTitleL(_L("Select app")); - popupList->EnableFind(); - - - // get an instance of the listbox's item array - MDesCArray* tempArray = listBox->Model()->ItemTextArray(); - CDesCArray* listBoxArray = (CDesCArray*)tempArray; - - // create an icon array - CAknIconArray* iconArray = new(ELeave) CAknIconArray(32); - CleanupStack::PushL(iconArray); - - // loop each app info - for (TInt i=0; iCount(); i++) - { - - // get icon of this app - CFbsBitmap* bitmap = NULL; - CFbsBitmap* mask = NULL; - CGulIcon* appIcon = NULL; - - TRAP_IGNORE( - AknsUtils::CreateAppIconLC(AknsUtils::SkinInstance(), appInfoArray->At(i).iUid, EAknsAppIconTypeList, bitmap, mask); - appIcon = CGulIcon::NewL(bitmap, mask); - CleanupStack::Pop(2); //bitmap, mask - ); - - // append to the icon array - appIcon->SetBitmapsOwnedExternally(EFalse); - iconArray->AppendL(appIcon); - - TFileName entry; - entry.AppendNum(i); - entry.Append(_L("\t")); - entry.Append(appInfoArray->At(i).iCaption); - - listBoxArray->AppendL(entry); - } - - - CleanupStack::Pop(); //iconArray - - // updates the listbox - listBox->ItemDrawer()->ColumnData()->SetIconArray(iconArray); - listBox->HandleItemAdditionL(); - - - // execute the popup to query the application - if (popupList->ExecuteLD()) - { - - // query priority - TInt queryIndex(0); - CAknListQueryDialog* listQueryDlg = new(ELeave) CAknListQueryDialog(&queryIndex); - - if (listQueryDlg->ExecuteLD(R_DATA_TYPE_PRIORITY_QUERY)) - { - TInt32 selectedPriority(0); - - if (queryIndex == EDataTypePriorityMaximum) - selectedPriority = KDataTypeUnTrustedPriorityThreshold; - else if (queryIndex == EDataTypePriorityHigh) - selectedPriority = KDataTypePriorityHigh; - else if (queryIndex == EDataTypePriorityNormal) - selectedPriority = KDataTypePriorityNormal; - else if (queryIndex == EDataTypePriorityLow) - selectedPriority = KDataTypePriorityLow; - else - selectedPriority = KDataTypePriorityLastResort; - - - TApaAppInfo& selectedAppInfo = appInfoArray->At(listBox->CurrentItemIndex()); - - if (iLs.InsertDataMapping(iDTArray->At(currentItemIndex), selectedPriority, selectedAppInfo.iUid) == KErrNone) - { - GetDataTypesL(); - - CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote; - note->ExecuteLD(_L("Mapping changed")); - } - else - { - CAknErrorNote* note = new(ELeave) CAknErrorNote; - note->ExecuteLD(_L("Unable to change mapping")); - } - } - } - - CleanupStack::Pop(); // popupList - CleanupStack::PopAndDestroy(2); // listBox, appInfoArray - } - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserDataTypesDlg::SetDefaultMappingL() - { - TInt currentItemIndex = iListBox->CurrentItemIndex(); - - if (iDTArray->Count() > currentItemIndex && currentItemIndex >= 0) - { - if (iLs.DeleteDataMapping(iDTArray->At(currentItemIndex)) == KErrNone) - { - GetDataTypesL(); - - CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote; - note->ExecuteLD(_L("Restored default")); - } - else - { - CAknInformationNote* note = new(ELeave) CAknInformationNote; - note->ExecuteLD(_L("Nothing to restore")); - } - } - } - -// -------------------------------------------------------------------------------------------- - -TBool CFileBrowserDataTypesDlg::OkToExitL(TInt aButtonId) - { - return CAknDialog::OkToExitL(aButtonId); - } - -// -------------------------------------------------------------------------------------------- - -TBool CFileBrowserDataTypesDlg::RunQueryLD() - { - return ExecuteLD(R_DATA_TYPES_DIALOG); - } - -// -------------------------------------------------------------------------------------------- - -// End of File -