filemanager/Engine/src/CFileManagerItemProperties.cpp
changeset 14 1957042d8c7e
parent 1 d1daf54a55b5
child 16 ada7962b4308
--- a/filemanager/Engine/src/CFileManagerItemProperties.cpp	Tue Feb 02 00:03:31 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,602 +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:  Holds item information
-*
-*/
-
-
-// INCLUDES
-#include <e32base.h>
-#include <f32file.h>
-#include <tz.h>
-#include "CFileManagerItemProperties.h"
-#include "CFileManagerUtils.h"
-#include "CFilemanagerMimeIconArray.h"
-#include "Cfilemanagerfolderarray.h"
-#include "Cfilemanageractivesize.h"
-#include "CFilemanagerActiveCount.h"
-#include "CFileManagerEngine.h" 
-#include "CGflmGroupItem.h"
-#include "CGflmFileSystemItem.h"
-#include "CGflmDriveItem.h"
-#include "CGflmGlobalActionItem.h"
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::CFileManagerItemProperties
-// 
-// -----------------------------------------------------------------------------
-// 
-CFileManagerItemProperties::CFileManagerItemProperties( 
-        CFileManagerUtils& aUtils,
-        CFileManagerEngine& aEngine ) :
-            iSize( KErrNotFound ),
-            iFilesContained( KErrNotFound ),
-            iFoldersContained( KErrNotFound ),
-            iOpenFiles( KErrNotFound ),
-            iUtils( aUtils ),
-            iEngine( aEngine )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::NewL
-// 
-// -----------------------------------------------------------------------------
-// 
-CFileManagerItemProperties* CFileManagerItemProperties::NewL( 
-        const TDesC& aFullPath,
-        CFileManagerUtils& aUtils,
-        CFileManagerEngine& aEngine )
-    {
-    CFileManagerItemProperties* self =
-        new (ELeave) CFileManagerItemProperties( aUtils, aEngine );
-    CleanupStack::PushL( self );
-    self->ConstructL( aFullPath );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::NewL
-// 
-// -----------------------------------------------------------------------------
-// 
-CFileManagerItemProperties* CFileManagerItemProperties::NewL(
-        const CGflmGroupItem& aItem,
-        CFileManagerUtils& aUtils,
-        CFileManagerEngine& aEngine )
-    {
-    CFileManagerItemProperties* self =
-        new (ELeave) CFileManagerItemProperties( aUtils, aEngine );
-    CleanupStack::PushL( self );
-    self->ConstructL( aItem );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::ConstructL
-// 
-// -----------------------------------------------------------------------------
-// 
-void CFileManagerItemProperties::ConstructL( const TDesC& aFullPath )
-    {
-    iFullPath = aFullPath.AllocL();
-
-    // Setup the rest of entry data when needed first time
-    if ( CFileManagerUtils::HasFinalBackslash( aFullPath ) )
-        {
-        iState |= EItemDirectory;
-        }
-    else
-        {
-        iState |= EItemFile;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::ConstructL
-// 
-// -----------------------------------------------------------------------------
-// 
-void CFileManagerItemProperties::ConstructL(
-        const TDesC& aFullPath, const TEntry& aEntry )
-    {
-    iFullPath = aFullPath.AllocL();
-
-    // Setup all entry data now
-    SetEntryData( aEntry );
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::ConstructL
-// 
-// -----------------------------------------------------------------------------
-// 
-void CFileManagerItemProperties::ConstructL( const CGflmGroupItem& aItem )
-    {
-    switch ( aItem.Type() )
-        {
-        case CGflmGroupItem::EFile:
-        case CGflmGroupItem::EDirectory:
-            {
-            const CGflmFileSystemItem& fsItem =
-                static_cast< const CGflmFileSystemItem& >( aItem );
-            HBufC* fullPath = fsItem.FullPathLC();
-            ConstructL( *fullPath, fsItem.Entry() );
-            if ( iUtils.IsRemoteDrive( *fullPath ) )
-                {
-                iState |= EItemRemoteDrive;
-                }
-            CleanupStack::PopAndDestroy( fullPath );
-            break;
-            }
-        case CGflmGroupItem::EDrive:
-            {
-            const CGflmDriveItem& drvItem =
-                static_cast< const CGflmDriveItem& >( aItem );
-            iFullPath = drvItem.RootDirectory().AllocL();
-#ifdef RD_MULTIPLE_DRIVE
-            iName = iUtils.GetDriveNameL(
-                drvItem.Drive(),
-                CFileManagerUtils::EMainLayout );
-#else // RD_MULTIPLE_DRIVE
-            iName = drvItem.Name().AllocL();
-#endif // RD_MULTIPLE_DRIVE
-            iState |= EItemDrive;
-            if ( iUtils.IsRemoteDrive( *iFullPath ) )
-                {
-                iState |= EItemRemoteDrive;
-                }
-            break;
-            }
-        case CGflmGroupItem::EGlobalActionItem:
-            {
-            const CGflmGlobalActionItem& actItem = 
-                static_cast< const CGflmGlobalActionItem& >( aItem );
-            if ( actItem.Id() == EFileManagerBackupAction )
-                {
-                // Ignore error
-                iEngine.LatestBackupTime( iModified );
-                }
-            iName = aItem.Name().AllocL();
-            // Action items do not have entry data, so mark it as fetched
-            iState |= EItemAction | EItemEntryDataFetched;
-            break;
-            }
-        default:
-            {
-            User::Leave( KErrNotFound );
-            break;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::~CFileManagerItemProperties
-// 
-// -----------------------------------------------------------------------------
-// 
-CFileManagerItemProperties::~CFileManagerItemProperties()
-    {
-    delete iFullPath;
-    delete iActiveSize;
-    delete iActiveCount;
-    delete iName;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::Name() const
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TPtrC CFileManagerItemProperties::Name() const
-    {
-    if ( iState & EItemNotFileOrDir )
-        {
-        return iName->Des();
-        }
-    TParsePtrC parse( CFileManagerUtils::StripFinalBackslash( *iFullPath ) );
-    return parse.Name();
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::ModifiedDate() const
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TTime CFileManagerItemProperties::ModifiedDate() const
-    {
-    EnsureEntryDataFetched();
-    return iModified;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::SizeL()
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt64 CFileManagerItemProperties::SizeL()
-    {
-    if ( iState & EItemNotFileOrDir )
-        {
-        return 0;
-        }
-    if( iSize == KErrNotFound )
-        {
-        if ( iState & EItemFile )
-            {
-            EnsureEntryDataFetched();
-            }
-        else
-            {
-            iSize = FolderSizeL( *iFullPath );
-            }
-        }
-    return iSize;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::FilesContainedL()
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CFileManagerItemProperties::FilesContainedL()
-    {
-    if( iFilesContained == KErrNotFound )
-        {
-        CountItemsL( CFileManagerItemProperties::EFile );
-        }
-    return iFilesContained;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::FoldersContainedL()
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CFileManagerItemProperties::FoldersContainedL()
-    {
-    if( iFoldersContained == KErrNotFound )
-        {
-        CountItemsL( CFileManagerItemProperties::EFolder );
-        }
-    return iFoldersContained;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::OpenFilesL()
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CFileManagerItemProperties::OpenFilesL()
-    {
-    if( iOpenFiles == KErrNotFound )
-        {
-        CountItemsL( CFileManagerItemProperties::EOpen );
-        }
-    return iOpenFiles;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::TypeL()
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 CFileManagerItemProperties::TypeL()
-    {
-    if( iType == CFileManagerItemProperties::ENotDefined )
-        {
-        iType = iUtils.FileTypeL( *iFullPath );
-        }
-    return iType;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::Ext() const
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TPtrC CFileManagerItemProperties::Ext() const
-    {
-    if ( iState & EItemNotFileOrDir )
-        {
-        return TPtrC( KNullDesC );
-        }
-    TParsePtrC parse( *iFullPath );
-    TPtrC ext( parse.Ext() );
-    return ext;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::CountItemsL
-// -----------------------------------------------------------------------------
-//
-TInt CFileManagerItemProperties::CountItemsL(
-        const TFileManagerFileType& aType )
-    {
-    if ( !( iState & ( EItemDirectory | EItemDrive ) ) )
-        {
-        // It's not a folder
-        return KErrNotFound;
-        }
-
-    delete iActiveCount;
-    iActiveCount = NULL;
-
-    iActiveCount = CFileManagerActiveCount::NewL(
-        iEngine.Fs(), *iFullPath, aType );
-
-    if ( !iActiveCount->IsProcessDone() )
-        {
-        iEngine.ShowWaitDialogL( *iActiveCount );
-        }
-
-    if ( iFilesContained == KErrNotFound )
-        {
-        iFilesContained = iActiveCount->FileCount();
-        }
-
-    if ( iFoldersContained == KErrNotFound )
-        {
-        iFoldersContained = iActiveCount->FolderCount();
-        }
-
-    if ( iOpenFiles == KErrNotFound )
-        {
-        iOpenFiles = iActiveCount->OpenFiles();
-        }
-
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::FolderSizeL
-// -----------------------------------------------------------------------------
-//
-TInt64 CFileManagerItemProperties::FolderSizeL( const TDesC& aFullPath )
-    {
-    if ( !( iState & EItemDirectory ) )
-        {
-        // It's not a folder
-        return KErrNotFound;
-        }
-
-    delete iActiveSize;
-    iActiveSize = NULL;
-    iActiveSize = CFileManagerActiveSize::NewL( iEngine.Fs(), aFullPath );
-    iEngine.ShowWaitDialogL( *iActiveSize );
-    return iActiveSize->GetFolderSize();
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::FullPath() const
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TPtrC CFileManagerItemProperties::FullPath() const
-    {
-    if ( iFullPath )
-        {
-        return iFullPath->Des();
-        }
-    return TPtrC( KNullDesC );
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::NameAndExt() const
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TPtrC CFileManagerItemProperties::NameAndExt() const
-    {
-    if ( iState & EItemNotFileOrDir )
-        {
-        return iName->Des();
-        }
-    TParsePtrC parse( CFileManagerUtils::StripFinalBackslash( *iFullPath ) );
-    return parse.NameAndExt();
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::LocalizedName() const
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TPtrC CFileManagerItemProperties::LocalizedName() const
-    {
-    if (iState & EItemDirectory )
-        {
-        TPtrC ptr( iUtils.LocalizedName( *iFullPath ) );
-        if ( ptr.Length() )
-            {
-            return ptr;
-            }
-        }
-    return NameAndExt();
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::ModifiedLocalDate() const
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CFileManagerItemProperties::ModifiedLocalDate(
-        TTime& aTime ) const
-    {
-    aTime = ModifiedDate(); // convert from universal time
-    RTz tz;
-    TInt err( tz.Connect() );
-    if ( err == KErrNone )
-        {
-        err = tz.ConvertToLocalTime( aTime );
-        if ( err != KErrNone )
-            {
-            aTime = ModifiedDate(); // use universal time
-            }
-        tz.Close();
-        }
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::ContainsAnyFilesOrFolders()
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CFileManagerItemProperties::ContainsAnyFilesOrFolders()
-    {
-    if ( !( iState & EItemDirectory ) ||
-         ( iState & EItemHasNoFilesOrFolders ) )
-        {
-        return EFalse;
-        }
-    if ( iState & EItemHasFilesOrFolders )
-        {
-        return ETrue;
-        }
-    TBool ret( CFileManagerUtils::HasAny(
-        iEngine.Fs(),
-        *iFullPath,
-        KEntryAttNormal | KEntryAttDir | KEntryAttHidden | KEntryAttSystem ) );
-    if ( ret )
-        {
-        iState |= EItemHasFilesOrFolders;
-        }
-    else
-        {
-        iState |= EItemHasNoFilesOrFolders;
-        }
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::MimeTypeL()
-//
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C TPtrC CFileManagerItemProperties::MimeTypeL()
-    {
-    if ( iState & EItemNotFileOrDir )
-        {
-        return TPtrC( KNullDesC );
-        }
-    return iUtils.MimeTypeL( *iFullPath );
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::IsDrive()
-//
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C TBool CFileManagerItemProperties::IsDrive() const
-    {
-    if ( iState & EItemDrive )
-        {
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::DriveName()
-//
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C TPtrC CFileManagerItemProperties::DriveName() const
-    {
-    if ( iState & EItemDrive )
-        {
-        return Name();
-        }
-    return iEngine.CurrentDriveName();
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::IsRemoteDrive()
-//
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C TBool CFileManagerItemProperties::IsRemoteDrive() const
-    {
-    if ( iState & EItemRemoteDrive )
-        {
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::EnsureEntryDataFetched
-// 
-// -----------------------------------------------------------------------------
-// 
-void CFileManagerItemProperties::EnsureEntryDataFetched() const
-    {
-    if ( iState & EItemEntryDataFetched )
-        {
-        return;
-        }
-
-    iState |= EItemEntryDataFetched; // Do not try fetch more than once
-
-    TEntry entry;
-    if ( iEngine.Fs().Entry( *iFullPath, entry ) != KErrNone )
-        {
-        return;
-        }
-
-    SetEntryData( entry );
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::SetEntryData
-// 
-// -----------------------------------------------------------------------------
-// 
-void CFileManagerItemProperties::SetEntryData( const TEntry& aEntry ) const
-    {
-    iState |= EItemEntryDataFetched;
-
-    iModified = aEntry.iModified;
-
-    if ( aEntry.IsDir() )
-        {
-        iState |= EItemDirectory;
-        }
-    else
-        {
-        iState |= EItemFile;
-        iSize = (TUint) aEntry.iSize;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CFileManagerItemProperties::DriveId
-// 
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C TInt CFileManagerItemProperties::DriveId() const
-    {
-    TInt ret( KErrNotFound );
-    if ( iFullPath )
-        {
-        ret = TDriveUnit( *iFullPath );
-        }
-    return ret;
-    }
-
-// End of File