filebrowser/src/FBFileDlgs.cpp
branchRCL_3
changeset 21 b3cee849fa46
parent 20 48060abbbeaf
child 22 fad26422216a
--- 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, &currentFolderName);
-        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
-