filemanager/GFLM/src/CGflmItemGroupImpl.cpp
branchRCL_3
changeset 20 491b3ed49290
parent 19 95243422089a
child 21 65326cf895ed
--- a/filemanager/GFLM/src/CGflmItemGroupImpl.cpp	Thu Aug 19 09:42:45 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,374 +0,0 @@
-/*
-* Copyright (c) 2002-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:  Concrete implementation of MGflmItemGroup interface
-*
-*/
-
-
-
-// INCLUDE FILES
-#include "CGflmItemGroupImpl.h"
-#include "MGflmItemFilter.h"
-#include "CGflmItemLocalizer.h"
-#include "CGflmDriveResolver.h"
-#include "CGflmFileRecognizer.h"
-#include "CGflmDirectoryListingCache.h"
-#include "CGflmGlobalActionItem.h"
-#include "CGflmFileSystemItem.h"
-#include "CGflmDriveItem.h"
-#include "GFLMConsts.h"
-#include "GFLM.hrh"
-#include "GflmUtils.h"
-#include <f32file.h>
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::CGflmItemGroupImpl
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CGflmItemGroupImpl::CGflmItemGroupImpl(
-        const TInt aId,
-        RFs& aFss,
-        CGflmDirectoryListingCache& aCache,
-        CGflmItemLocalizer& aLocalizer,
-        CGflmDriveResolver& aResolver ) :
-    iId( aId ),
-    iFss( aFss ),
-    iListingCache( aCache ),
-    iItemLocalizer( aLocalizer ),
-    iDriveResolver( aResolver )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::~CGflmItemGroupImpl
-//
-// -----------------------------------------------------------------------------
-//
-CGflmItemGroupImpl::~CGflmItemGroupImpl()
-    {
-    iVolatileItems.ResetAndDestroy();
-    iVolatileItems.Close();
-
-    iStaticItems.ResetAndDestroy();
-    iStaticItems.Close();
-
-    iItemReferences.Close();
-
-    delete iDirectory;
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CGflmItemGroupImpl* CGflmItemGroupImpl::NewLC(
-        const TInt aId,
-        RFs& aFss,
-        CGflmDirectoryListingCache& aCache,
-        CGflmItemLocalizer& aLocalizer,
-        CGflmDriveResolver& aResolver )
-    {
-    CGflmItemGroupImpl* self = new( ELeave ) CGflmItemGroupImpl(
-        aId, aFss, aCache, aLocalizer, aResolver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::ContructL
-// -----------------------------------------------------------------------------
-//
-void CGflmItemGroupImpl::ConstructL()
-    {
-    iSortCollationMethod = *Mem::CollationMethodByIndex( 0 );
-    iSortCollationMethod.iFlags |=
-        TCollationMethod::EIgnoreNone | TCollationMethod::EFoldCase;
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::RefreshL()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CGflmItemGroupImpl::RefreshL(
-        MGflmItemFilter* aFilter,
-        TGflmSortMethod aSortMethod,
-        TGflmRefreshMode aRefreshMode )
-    {
-    FUNC_LOG
-
-    INFO_LOG2(
-        "CGflmItemGroupImpl::RefreshL-aRefreshMode=%d, aSortMethod=%d",
-        aRefreshMode, aSortMethod )
-
-    if ( aRefreshMode == ERefreshItems )
-        {
-        // Reset reference list
-        iItemReferences.Reset();
-
-        // Destroy old filesystem items
-        iVolatileItems.ResetAndDestroy();
-
-        // Re-read contents of the assigned directories, filter out unwanted
-        // items and add rest to the item list
-        TIMESTAMP( "GFLM reading and filtering directories started: " )
-        PopulateReferenceListL( aFilter );
-        TIMESTAMP( "GFLM reading and filtering directories ended: " )
-        }
-
-    if ( aRefreshMode == ERefreshItems || aRefreshMode == ERefreshSort )
-        {
-        if ( !( iInclusion & EDrives ) )
-            {
-            TIMESTAMP( "GFLM group sorting started: " )
-            iItemReferences.Sort( CGflmGroupItem::GetSortL( aSortMethod ) );
-            TIMESTAMP( "GFLM group sorting ended: " )
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::PopulateReferenceListL()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CGflmItemGroupImpl::PopulateReferenceListL( MGflmItemFilter* aFilter )
-    {
-    CGflmGroupItem* item = NULL;
-    TInt i( 0 );
-
-    // Add drive items to the reference list
-    if ( iInclusion & EDrives )
-        {
-        if ( iDirectory )
-            {
-            // Hide drive selection when location inside folder.
-            return;
-            }
-
-        TInt count( iDriveResolver.DriveCount() );
-        for ( i = 0; i < count; i++ )
-            {
-            // Add directly, items are filtered from drive resolver
-            CGflmDriveItem* drvItem = iDriveResolver.DriveAt( i );
-            iItemReferences.AppendL( drvItem );
-            drvItem->SetGroup( this );
-            }
-        }
-
-    // Add pointers to the static items (action items) to the
-    // reference list
-    TInt staticCount( iStaticItems.Count() );
-
-    for ( i = 0; i < staticCount; i++ )
-        {
-        item = iStaticItems[ i ];
-        if ( !aFilter ||
-            ( aFilter && aFilter->FilterItemL( item, iId, NULL ) ) )
-            {
-            iItemReferences.AppendL( item );
-            item->SetGroup( this );
-            }
-        }
-
-    if ( iInclusion & ( EFiles | EDirectories ) )
-        {
-        if ( iDirectory )
-            {
-            // Check directory name length validity
-            TPtrC directory( iDirectory->Des() );
-            TInt dirLen( directory.Length() );
-            if ( !dirLen || dirLen > KMaxFileName )
-                {
-                return;
-                }
-
-            // Get the drive where items are located
-            CGflmDriveItem* drvItem = iDriveResolver.DriveFromPath(
-                directory );
-
-            const CGflmDirectoryListingCache::CEntryArray* dir =
-                iListingCache.ListingL( directory );
-            TInt entryCount( dir->Count() );
-
-            // Reserve room for all entries at once to avoid overhead
-            iVolatileItems.ReserveL( entryCount );
-            iItemReferences.ReserveL( iItemReferences.Count() + entryCount );
-
-            // Create buffer for filenames
-            HBufC* buffer = HBufC::NewLC( KMaxFileName );
-            TPtr filename( buffer->Des() );
-
-            TIMESTAMP( "GFLM files and folders list genaration started: " )
-
-            TInt bsLen( KGFLMBackslash().Length() );
-
-            // For all items in a directory listing
-            for( i = 0; i < entryCount; i++ )
-                {
-                const TEntry& entry( ( *dir )[ i ] );
-                TBool isDir( entry.IsDir() );
-                TInt extLen( isDir ? bsLen : 0 ); // Handle final backslash
-                if ( dirLen + entry.iName.Length() + extLen > KMaxFileName )
-                    {
-                    continue; // Too long name
-                    }
-                if ( isDir && !( iInclusion & EDirectories ) )
-                    {
-                    continue; // No directories allowed
-                    }
-                if ( !isDir && !( iInclusion & EFiles ) )
-                    {
-                    continue; // No files allowed
-                    }
-
-                // Create a new filesystem item
-                CGflmFileSystemItem* fsItem = CGflmFileSystemItem::NewLC(
-                    entry, directory );
-
-                // Filter out unwanted items
-                if ( !aFilter ||
-                    ( aFilter && aFilter->FilterItemL( fsItem, iId, drvItem ) ) )
-                    {
-                    // Only directory items can be localized
-                    if ( isDir )
-                        {
-                        // Get localized name for the item, if it has one
-                        GflmUtils::GetFullPath( directory, entry, filename );
-                        TPtrC localizedName(
-                            iItemLocalizer.LocalizeFromWorkThread( filename ) );
-                        if ( localizedName.Length() )
-                            {
-                            fsItem->SetLocalizedNameL( localizedName );
-                            }
-                        }
-                    iVolatileItems.AppendL( fsItem );
-                    CleanupStack::Pop( fsItem );
-                    iItemReferences.AppendL( fsItem );
-                    fsItem->SetGroup( this );
-                    }
-                else
-                    {
-                    CleanupStack::PopAndDestroy( fsItem );
-                    }
-                }
-
-            CleanupStack::PopAndDestroy( buffer );
-
-            TIMESTAMP( "GFLM files and folders list genaration ended: " )
-
-            }
-        }
-
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::ItemCount()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CGflmItemGroupImpl::ItemCount() const
-    {
-    return iItemReferences.Count();
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::Item()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-CGflmGroupItem* CGflmItemGroupImpl::Item( TInt aIndex )
-    {
-    return iItemReferences[ aIndex ];
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::Id()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CGflmItemGroupImpl::Id() const
-    {
-    return iId;
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::SetInclusion()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CGflmItemGroupImpl::SetInclusion( TUint aInclusion )
-    {
-    iInclusion = aInclusion;
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::AddSourceL()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CGflmItemGroupImpl::AddSourceL( const TDesC& aDirectory )
-    {
-    HBufC* temp = aDirectory.AllocL();
-    delete iDirectory;
-    iDirectory = temp;
-    // Reset reference list to cleanup all references to deleted directory
-    iItemReferences.Reset();
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::ResetSources()
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CGflmItemGroupImpl::ResetSources()
-    {
-    delete iDirectory;
-    iDirectory = NULL;
-    // Reset reference list to cleanup all references to deleted directory
-    iItemReferences.Reset();
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::AddActionItemL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CGflmItemGroupImpl::AddActionItemL( TInt aId, const TDesC& aCaption )
-    {
-    CGflmGlobalActionItem* actionItem =
-        CGflmGlobalActionItem::NewLC( aId, aCaption );
-    iStaticItems.AppendL( actionItem );
-    CleanupStack::Pop( actionItem );
-    }
-
-// -----------------------------------------------------------------------------
-// CGflmItemGroupImpl::CollationMethod
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-const TCollationMethod* CGflmItemGroupImpl::CollationMethod()
-    {
-    return &iSortCollationMethod;
-    }
-
-//  End of File