filemanager/GFLM/src/CGflmFileFinder.cpp
branchRCL_3
changeset 38 491b3ed49290
parent 36 95243422089a
child 39 65326cf895ed
--- a/filemanager/GFLM/src/CGflmFileFinder.cpp	Thu Aug 19 09:42:45 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,408 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Searches items matching with given string in given file system
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <e32std.h>
-#include <f32file.h>
-#include <bautils.h>
-#include "CGflmFileFinder.h"
-#include "CGflmFileFinderItem.h"
-#include "CGflmDriveItem.h"
-#include "CGflmDriveResolver.h"
-#include "CGflmItemLocalizer.h"
-#include "MGflmItemFilter.h"
-#include "GflmUtils.h"
-
-// CONSTANTS
-const TInt KWildCardSpace = 2;
-_LIT( KWildCard, "*" );
-const TInt KSearchResultsGranularity = 32;
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// MakeWildStringL
-// -----------------------------------------------------------------------------
-//
-static HBufC* MakeWildStringL( const TDesC& aString )
-    {
-    if ( GflmUtils::HasWildCard( aString ) )
-        {
-        return aString.AllocL();
-        }
-    HBufC* ret = HBufC::NewL( aString.Length() + KWildCardSpace );
-    TPtr ptr( ret->Des() );
-    ptr.Copy( KWildCard );
-    ptr.Append( aString );
-    ptr.Append( KWildCard );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// MakeWildPathL
-// -----------------------------------------------------------------------------
-//
-#if 0
-static HBufC* MakeWildPathL( const TDesC& aFolder, const TDesC& aString )
-    {
-    const TInt KBackslashSpace = 1;
-    if ( !GflmUtils::HasWildCard( aString ) )
-        {
-        return aFolder.AllocL();
-        }
-    HBufC* ret = HBufC::NewL(
-        aFolder.Length() + aString.Length() + KBackslashSpace );
-    TPtr ptr( ret->Des() );
-    ptr.Copy( aFolder );
-    GflmUtils::EnsureFinalBackslash( ptr );
-    ptr.Append( aString );
-    return ret;
-    }
-#endif // 0
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::CGflmFileFinder
-// -----------------------------------------------------------------------------
-//
-CGflmFileFinder::CGflmFileFinder(
-            RFs& aFss,
-            CGflmItemLocalizer& aLocalizer,
-            CGflmDriveResolver& aResolver,
-            const TBool& aCancelIndicator ) :
-        iFss( aFss ),
-        iItemLocalizer( aLocalizer ),
-        iDriveResolver( aResolver ),
-        iCancelIndicator( aCancelIndicator ),
-        iSearchResults( KSearchResultsGranularity )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::NewL
-// -----------------------------------------------------------------------------
-//
-CGflmFileFinder* CGflmFileFinder::NewL(
-        RFs& aFss,
-        CGflmItemLocalizer& aLocalizer,
-        CGflmDriveResolver& aResolver,
-        const TBool& aCancelIndicator )
-    {
-    CGflmFileFinder* self = new( ELeave ) CGflmFileFinder( 
-        aFss, aLocalizer, aResolver, aCancelIndicator );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CGflmFileFinder::ConstructL()
-    {
-    iSortCollationMethod = *Mem::CollationMethodByIndex( 0 );
-    iSortCollationMethod.iFlags |=
-        TCollationMethod::EIgnoreNone | TCollationMethod::EFoldCase;
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::~CGflmFileFinder
-// -----------------------------------------------------------------------------
-// 
-CGflmFileFinder::~CGflmFileFinder()
-    {
-    delete iSearchFolder;
-    delete iSearchFolderWild;
-    delete iSearchString;
-    delete iSearchStringWild;
-    iSearchResults.ResetAndDestroy();
-    iSearchResults.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::SetSearchFolderL
-// -----------------------------------------------------------------------------
-// 
-void CGflmFileFinder::SetSearchFolderL( const TDesC& aSearchFolder )
-    {
-    delete iSearchFolderWild;
-    iSearchFolderWild = NULL;
-
-    delete iSearchFolder;
-    iSearchFolder = NULL;
-    iSearchFolder = aSearchFolder.AllocL();
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::SetSearchStringL
-// -----------------------------------------------------------------------------
-// 
-void CGflmFileFinder::SetSearchStringL( const TDesC& aSearchString )
-    {
-    delete iSearchFolderWild;
-    iSearchFolderWild = NULL;
-
-    delete iSearchString;
-    iSearchString = NULL;
-    iSearchString = aSearchString.AllocL();
-
-    delete iSearchStringWild;
-    iSearchStringWild = NULL;
-    iSearchStringWild = MakeWildStringL( aSearchString );
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::RefreshL
-// -----------------------------------------------------------------------------
-// 
-void CGflmFileFinder::RefreshL(
-        MGflmItemFilter* aFilter,
-        TGflmSortMethod aSortMethod,
-        TGflmRefreshMode aRefreshMode )
-    {
-    FUNC_LOG
-
-    INFO_LOG2(
-        "CGflmItemGroupImpl::RefreshL-aRefreshMode=%d, aSortMethod=%d",
-        aRefreshMode, aSortMethod )
-
-    if ( aRefreshMode == ERefreshItems )
-        {
-        TRAPD( err, DoSearchL( aFilter ) );
-
-        // If error just log it and show already found items
-        if ( err != KErrNone )
-            {
-            ERROR_LOG1( "CGflmFileFinder::RefreshL-err=%d", err )
-            }
-        }
-
-    if ( aSortMethod == EByMatch )
-        {
-        iSearchResults.Sort( CGflmFileFinderItem::CompareByMatch );
-        }
-    else
-        {
-        iSearchResults.Sort( CGflmGroupItem::GetSortL( aSortMethod ) );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::DoSearchL
-// -----------------------------------------------------------------------------
-// 
-void CGflmFileFinder::DoSearchL( MGflmItemFilter* aFilter )
-    {
-    FUNC_LOG
-
-    iSearchResults.ResetAndDestroy();
-
-    // Ensure that search data is defined
-    if ( !iSearchFolder || !iSearchString || !iSearchStringWild )
-        {
-        return;
-        }
-    // Ensure that search drive exists
-    CGflmDriveItem* drvItem = iDriveResolver.DriveFromPath( *iSearchFolder );
-    if ( !drvItem )
-        {
-        return;
-        }
-    if ( !iSearchFolderWild )
-        {
-#if 0
-        if ( iDriveResolver.IsRemoteDrive( *iSearchFolder ) )
-            {
-            // Some remote drives are case sensitive with wild cards. 
-            // Therefore, wild cards cannot be used for remote drives, 
-            // because then it is not possible to do case 
-            // insensitive comparison like it is done for local drives. 
-            iSearchFolderWild = iSearchFolder->AllocL();
-            }
-        else
-            {
-            // Do search using the folder with wild string for better performance.
-            // It is faster to let file server do the wild matching instead of 
-            // reading all subitems under search folder to be matched here.
-
-            // Prepare search folder with wild search string
-            iSearchFolderWild = MakeWildPathL(
-                *iSearchFolder, *iSearchStringWild );
-            }
-#else
-        // Because of problems with localized folder names, 
-        // wild card folder string cannot be given to file server since 
-        // file server is not aware of localized names. 
-        // This search operation is slower because all items are transferred 
-        // here for comparison. 
-        iSearchFolderWild = iSearchFolder->AllocL();
-#endif
-        }
-
-    INFO_LOG1( "CGflmFileFinder::DoSearchL-CDirScan::NewLC-%S",
-        iSearchFolderWild )
-    CDirScan* dirScan = CDirScan::NewLC( iFss );
-
-    INFO_LOG( "CGflmFileFinder::DoSearchL-CDirScan::SetScanDataL" )
-    dirScan->SetScanDataL( *iSearchFolderWild, KEntryAttDir, ESortNone );
-
-    INFO_LOG( "CGflmFileFinder::DoSearchL-CDirScan::NextL" )
-    CDir* dir = NULL;
-    dirScan->NextL( dir );
-
-    while( dir )
-        {
-        CleanupStack::PushL( dir );
-        if ( iCancelIndicator )
-            {
-            User::Leave( KErrCancel );
-            }
-        TPtrC basePath( dirScan->FullPath() );
-        INFO_LOG1( "CGflmFileFinder::DoSearchL-Search-%S", &basePath )
-
-        TInt count( dir->Count() );
-        for ( TInt i( 0 ); i < count; ++i )
-            {
-            if ( iCancelIndicator )
-                {
-                User::Leave( KErrCancel );
-                }
-            const TEntry& entry( ( *dir )[ i ] );
-            TPtrC name( entry.iName );
-            TBool isLocalized( EFalse );
-            TBool isDir( entry.IsDir() );
-            if( isDir )
-                {
-                // Handle localized name
-                GflmUtils::GetFullPath( basePath, entry, iFullPath );
-                TPtrC localizedName(
-                    iItemLocalizer.LocalizeFromWorkThread( iFullPath ) );
-                if ( localizedName.Length() )
-                    {
-                    name.Set( localizedName );
-                    isLocalized = ETrue;
-                    }
-                }
-            // Append matching items
-            if( name.MatchC( *iSearchStringWild ) != KErrNotFound )
-                {
-                CGflmFileFinderItem* finderItem = CGflmFileFinderItem::NewLC(
-                    entry, basePath );
-                if ( isLocalized )
-                    {
-                    finderItem->SetLocalizedNameL( name );
-                    }
-                // Filter out unwanted items
-                if ( !aFilter ||
-                     ( aFilter && aFilter->FilterItemL(
-                        finderItem,
-                        isDir ? CGflmGroupItem::EDirectory : CGflmGroupItem::EFile,
-                        drvItem ) ) )
-                    {
-                    finderItem->PrepareSort( *iSearchString );
-                    finderItem->SetGroup( this );
-                    iSearchResults.AppendL( finderItem );
-                    CleanupStack::Pop( finderItem );
-                    }
-                else
-                    {
-                    CleanupStack::PopAndDestroy( finderItem );
-                    }
-                }
-            }
-        CleanupStack::PopAndDestroy( dir );
-
-        INFO_LOG( "CGflmFileFinder::DoSearchL-CDirScan::NextL" )
-        dirScan->NextL( dir );
-        }
-    CleanupStack::PopAndDestroy( dirScan );
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::ItemCount
-// -----------------------------------------------------------------------------
-// 
-TInt CGflmFileFinder::ItemCount() const
-    {
-    return iSearchResults.Count();
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::Item
-// -----------------------------------------------------------------------------
-// 
-CGflmGroupItem* CGflmFileFinder::Item( TInt aIndex )
-    {
-    return iSearchResults[ aIndex ];
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::Id
-// -----------------------------------------------------------------------------
-// 
-TInt CGflmFileFinder::Id() const
-    {
-    return KErrNotFound;
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::AddSourceL
-// -----------------------------------------------------------------------------
-// 
-void CGflmFileFinder::AddSourceL( const TDesC& /*aDirectory*/ )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::ResetSources
-// -----------------------------------------------------------------------------
-// 
-void CGflmFileFinder::ResetSources()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::AddActionItemL
-// -----------------------------------------------------------------------------
-// 
-void CGflmFileFinder::AddActionItemL( TInt /*aId*/, const TDesC& /*aCaption*/ )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::SetInclusion
-// -----------------------------------------------------------------------------
-// 
-void CGflmFileFinder::SetInclusion( TUint /*aInclusion*/ )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmFileFinder::CollationMethod
-// -----------------------------------------------------------------------------
-// 
-const TCollationMethod* CGflmFileFinder::CollationMethod()
-    {
-    return &iSortCollationMethod;
-    }
-
-// End of File