--- 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 <filebrowser.rsg>
-
-#include <aknlistquerydialog.h>
-#include <AknIconArray.h>
-#include <aknlists.h>
-#include <eikbtgpc.h>
-#include <akntitle.h>
-#include <AknPopupFieldText.h>
-#include <aknnotewrappers.h>
-#include <eikfutil.h>
-#include <eikclbd.h>
-
-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; i<aDriveEntryList->Count(); 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<CEikFormattedCellListBox*>(ListBox())->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue);
- }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserDestinationFolderSelectionDlg::PostLayoutDynInitL()
- {
- CAknListQueryDialog::PostLayoutDynInitL();
-
- SetIconArrayL(static_cast<CArrayPtr<CGulIcon>*>(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; i<iDriveEntryList->Count(); 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; i<dir->Count(); 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; j<subDir->Count(); 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; i<iFileEntryList->Count(); 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<CAknTitlePane*>( 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<CAknPopupFieldText*>(Control(EFileBrowserAttributeEditorSetArchive));
- CAknPopupFieldText* hiddenPopup = static_cast<CAknPopupFieldText*>(Control(EFileBrowserAttributeEditorSetHidden));
- CAknPopupFieldText* readOnlyPopup = static_cast<CAknPopupFieldText*>(Control(EFileBrowserAttributeEditorSetReadOnly));
- CAknPopupFieldText* systemPopup = static_cast<CAknPopupFieldText*>(Control(EFileBrowserAttributeEditorSetSystem));
- CAknPopupFieldText* recursePopup = static_cast<CAknPopupFieldText*>(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<CAknPopupFieldText*>(Control(EFileBrowserAttributeEditorSetArchive));
- CAknPopupFieldText* hiddenPopup = static_cast<CAknPopupFieldText*>(Control(EFileBrowserAttributeEditorSetHidden));
- CAknPopupFieldText* readOnlyPopup = static_cast<CAknPopupFieldText*>(Control(EFileBrowserAttributeEditorSetReadOnly));
- CAknPopupFieldText* systemPopup = static_cast<CAknPopupFieldText*>(Control(EFileBrowserAttributeEditorSetSystem));
- CAknPopupFieldText* recursePopup = static_cast<CAknPopupFieldText*>(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<CAknTitlePane*>( 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<CEikEdwin*>(Control(EFileBrowserSearchQuerySearchDir));
- CEikEdwin* wildCards = static_cast<CEikEdwin*>(Control(EFileBrowserSearchQueryWildCards));
- CEikEdwin* textInFile = static_cast<CEikEdwin*>(Control(EFileBrowserSearchQueryTextInFile));
- CEikNumberEditor* minSize = static_cast<CEikNumberEditor*>(Control(EFileBrowserSearchQueryMinSize));
- CEikNumberEditor* maxSize = static_cast<CEikNumberEditor*>(Control(EFileBrowserSearchQueryMaxSize));
- CEikDateEditor* minDate = static_cast<CEikDateEditor*>(Control(EFileBrowserSearchQueryMinDate));
- CEikDateEditor* maxDate = static_cast<CEikDateEditor*>(Control(EFileBrowserSearchQueryMaxDate));
- CAknPopupFieldText* recurse = static_cast<CAknPopupFieldText*>(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<CEikEdwin*>(Control(EFileBrowserSearchQuerySearchDir));
- CEikEdwin* wildCards = static_cast<CEikEdwin*>(Control(EFileBrowserSearchQueryWildCards));
- CEikEdwin* textInFile = static_cast<CEikEdwin*>(Control(EFileBrowserSearchQueryTextInFile));
- CEikNumberEditor* minSize = static_cast<CEikNumberEditor*>(Control(EFileBrowserSearchQueryMinSize));
- CEikNumberEditor* maxSize = static_cast<CEikNumberEditor*>(Control(EFileBrowserSearchQueryMaxSize));
- CEikDateEditor* minDate = static_cast<CEikDateEditor*>(Control(EFileBrowserSearchQueryMinDate));
- CEikDateEditor* maxDate = static_cast<CEikDateEditor*>(Control(EFileBrowserSearchQueryMaxDate));
- CAknPopupFieldText* recurse = static_cast<CAknPopupFieldText*>(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<CAknTitlePane*>( 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<CAknSingleGraphicStyleListBox*>( 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; i<iDTArray->Count(); 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<CAknIconArray*>(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<TApaAppInfo>* appInfoArray = new(ELeave) CArrayFixFlat<TApaAppInfo>(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; i<appInfoArray->Count(); 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
-