--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/App/src/CFileManagerMemoryStoreView.cpp Wed Sep 01 12:31:07 2010 +0100
@@ -0,0 +1,349 @@
+/*
+* Copyright (c) 2006-2008 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: Memory store view
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <StringLoader.h>
+#include <aknlists.h>
+#include <akntitle.h>
+#include <CFileManagerEngine.h>
+#include <filemanager.rsg>
+#include <csxhelp/fmgr.hlp.hrh>
+#include <FileManagerDebug.h>
+#include "CFileManagerMemoryStoreView.h"
+#include "CFileManagerFileListContainer.h"
+#include "CFileManagerAppUi.h"
+#include "CFileManagerDocument.h"
+#include "FileManager.hrh"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::CFileManagerMemoryStoreView
+// ----------------------------------------------------------------------------
+//
+CFileManagerMemoryStoreView::CFileManagerMemoryStoreView()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::NewLC
+// ----------------------------------------------------------------------------
+//
+CFileManagerMemoryStoreView* CFileManagerMemoryStoreView::NewLC()
+ {
+ CFileManagerMemoryStoreView* self =
+ new( ELeave ) CFileManagerMemoryStoreView();
+
+ CleanupStack::PushL( self );
+ self->ConstructL( R_FILEMANAGER_FOLDERS_VIEW );
+
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::~CFileManagerMemoryStoreView
+// ----------------------------------------------------------------------------
+//
+CFileManagerMemoryStoreView::~CFileManagerMemoryStoreView()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::DoActivateL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerMemoryStoreView::DoActivateL(
+ const TVwsViewId& aPrevViewId,
+ TUid aCustomMessageId,
+ const TDesC8& aCustomMessage )
+ {
+ FUNC_LOG
+
+ // Check embedded app exit first
+ CFileManagerAppUi* appUi =
+ static_cast< CFileManagerAppUi* >( AppUi() );
+ appUi->ExitEmbeddedAppIfNeededL();
+
+ CFileManagerViewBase::DoActivateL(
+ aPrevViewId, aCustomMessageId, aCustomMessage );
+
+ TBool showRemoteNotConnected( EFalse );
+ // Ensure that root directory is defined
+ TInt count( iEngine.NavigationLevel() );
+ if ( count > 0 )
+ {
+ iIndex = 0;
+ for ( TInt i( 0 ); i < count; i++ )
+ {
+ TRAP_IGNORE( iEngine.BackstepL() );
+ }
+ showRemoteNotConnected = ETrue;
+ }
+
+ TRAP_IGNORE ( RefreshDriveInfoL() );
+ RefreshTitleL();
+ iEngine.SetState( CFileManagerEngine::ENavigation );
+ iEngine.SetObserver( this );
+ if ( DriveAvailableL( showRemoteNotConnected ) )
+ {
+ iEngine.RefreshDirectory();
+ }
+ else
+ {
+ UpdateCbaL();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::DoDeactivate
+// ----------------------------------------------------------------------------
+//
+void CFileManagerMemoryStoreView::DoDeactivate()
+ {
+ FUNC_LOG
+
+ CFileManagerViewBase::DoDeactivate();
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::DirectoryChangedL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerMemoryStoreView::DirectoryChangedL()
+ {
+ FUNC_LOG
+
+ TBool drvAvailable( DriveAvailableL( ETrue ) );
+
+ if ( iContainer )
+ {
+ if ( drvAvailable )
+ {
+ TInt index = iEngine.CurrentIndex();
+ if ( index != KErrNotFound )
+ {
+ iIndex = index;
+ }
+ iContainer->RefreshListL( iIndex );
+ }
+ else
+ {
+ iIndex = 0;
+ }
+ RefreshTitleL();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::Id
+// ----------------------------------------------------------------------------
+//
+TUid CFileManagerMemoryStoreView::Id() const
+ {
+ return CFileManagerAppUi::KFileManagerMemoryStoreViewId;
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::CreateContainerL
+// ----------------------------------------------------------------------------
+//
+CFileManagerContainerBase* CFileManagerMemoryStoreView::CreateContainerL()
+ {
+ return CFileManagerFileListContainer::NewL(
+ ClientRect(),
+ iIndex,
+ CFileManagerFileListContainer::EListMemoryStore,
+ R_QTN_SELEC_EMPTY_LIST,
+ KFMGR_HLP_MEM_STORE_VIEW );
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::HandleCommandL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerMemoryStoreView::HandleCommandL( TInt aCommand )
+ {
+ switch( aCommand )
+ {
+ case EFileManagerOpen:
+ {
+ CmdOpenL();
+ break;
+ }
+ case EAknSoftkeyBack:
+ {
+ CmdBackL();
+ break;
+ }
+ default:
+ {
+ CFileManagerViewBase::HandleCommandL( aCommand );
+ break;
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::DriveAvailableL
+// ----------------------------------------------------------------------------
+//
+TBool CFileManagerMemoryStoreView::DriveAvailableL(
+ TBool aShowRemoteNotConnected )
+ {
+ HBufC* error = NULL;
+ TFileManagerDriveInfo& drvInfo( DriveInfo() );
+ if ( drvInfo.iState & (
+ TFileManagerDriveInfo::EDriveRemovable |
+ TFileManagerDriveInfo::EDriveRemote ) )
+ {
+ TRAP_IGNORE( RefreshDriveInfoL() );
+ }
+
+ TInt drvNum = drvInfo.iDrive;
+ iEngine.GetDriveInfoL(drvNum,drvInfo);
+
+ INFO_LOG1( "CFileManagerMemoryStoreView::DriveAvailableL-drvState=%d",
+ drvInfo.iState )
+
+ if ( drvInfo.iState & TFileManagerDriveInfo::EDriveRemote )
+ {
+ iEngine.SetMemoryL( EFmRemoteDrive );
+ }
+#ifdef RD_MULTIPLE_DRIVE
+ else if ( drvInfo.iState & TFileManagerDriveInfo::EDriveMassStorage )
+ {
+ iEngine.SetMemoryL( EFmMassStorage );
+ }
+#endif // RD_MULTIPLE_DRIVE
+ else if ( drvInfo.iState & TFileManagerDriveInfo::EDriveRemovable )
+ {
+ iEngine.SetMemoryL( EFmMemoryCard );
+ }
+ else if ( drvInfo.iState & TFileManagerDriveInfo::EDriveUsbMemory )
+ {
+ iEngine.SetMemoryL( EFmUsbMemory );
+ }
+ else
+ {
+ iEngine.SetMemoryL( EFmPhoneMemory );
+ }
+
+#ifdef RD_MULTIPLE_DRIVE
+ if ( drvInfo.iState & TFileManagerDriveInfo::EDriveMassStorage )
+ {
+ // Handle mass storage states
+ if ( !( drvInfo.iState & TFileManagerDriveInfo::EDrivePresent ) ||
+ ( drvInfo.iState & TFileManagerDriveInfo::EDriveInUse ) )
+ {
+ error = StringLoader::LoadLC( R_QTN_MEMC_MASS_STORAGE_IN_USE );
+ }
+ else if ( drvInfo.iState & TFileManagerDriveInfo::EDriveCorrupted )
+ {
+ error = StringLoader::LoadLC( R_QTN_MEMC_MASS_STORAGE_CORRUPTED );
+ }
+ }
+ else
+ {
+ // Handle other drives
+#endif // RD_MULTIPLE_DRIVE
+ if ( drvInfo.iState & TFileManagerDriveInfo::EDriveInUse )
+ {
+ error = StringLoader::LoadLC( R_QTN_MEMC_MAINPAGE_ERROR4 );
+ }
+ else if ( drvInfo.iState & TFileManagerDriveInfo::EDriveLocked )
+ {
+ error = StringLoader::LoadLC( R_QTN_MEMC_MAINPAGE_ERROR2 );
+ }
+ else if ( drvInfo.iState & TFileManagerDriveInfo::EDriveCorrupted )
+ {
+ error = StringLoader::LoadLC( R_QTN_MEMC_MAINPAGE_ERROR3 );
+ }
+ else if ( !( drvInfo.iState & TFileManagerDriveInfo::EDrivePresent ) )
+ {
+ error = StringLoader::LoadLC( R_QTN_MEMC_NOT_AVAILABLE );
+ }
+ else if ( aShowRemoteNotConnected &&
+ ( drvInfo.iState & TFileManagerDriveInfo::EDriveRemote ) &&
+ ! ( drvInfo.iState & TFileManagerDriveInfo::EDriveConnected ) )
+ {
+ error = StringLoader::LoadLC( R_QTN_FMGR_EMPTY_REMOTE_DRIVE );
+ }
+#ifdef RD_MULTIPLE_DRIVE
+ }
+#endif // RD_MULTIPLE_DRIVE
+ if ( error )
+ {
+ if ( iContainer )
+ {
+ iContainer->ListBoxSetTextL( *error );
+ }
+ CleanupStack::PopAndDestroy( error );
+ return EFalse;
+ }
+ return ETrue;
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::RefreshTitleL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerMemoryStoreView::RefreshTitleL()
+ {
+ static_cast< CFileManagerAppUi* >( AppUi() )->SetTitleL(
+ iEngine.CurrentDriveName() );
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::CmdOpenL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerMemoryStoreView::CmdOpenL()
+ {
+ StoreIndex();
+ CFileManagerViewBase::CmdOpenL();
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::CmdBackL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerMemoryStoreView::CmdBackL()
+ {
+ if ( iActiveProcess != ENoProcess )
+ {
+ return; // Ignore to avoid container mess up
+ }
+ CFileManagerAppUi* appUi =
+ static_cast< CFileManagerAppUi* >( AppUi() );
+ iEngine.BackstepL();
+ iIndex = 0;
+ appUi->CloseMemoryStoreViewL();
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerMemoryStoreView::UpdateCbaL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerMemoryStoreView::UpdateCbaL()
+ {
+ UpdateCommonCbaL();
+ }
+
+// End of File