--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/App/src/CFileManagerRestoreView.cpp Wed Sep 01 12:31:07 2010 +0100
@@ -0,0 +1,435 @@
+/*
+* 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: View for restore settings
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <StringLoader.h>
+#include <aknlists.h>
+#include <akntitle.h>
+#include <CFileManagerEngine.h>
+#include <filemanager.rsg>
+#include <FileManagerDlgUtils.h>
+#include <CFileManagerRestoreSettings.h>
+#include <FileManagerDebug.h>
+#include "CFileManagerRestoreView.h"
+#include "CFileManagerSettingListContainer.h"
+#include "CFileManagerDocument.h"
+#include "CFileManagerAppUi.h"
+#include "FileManager.hrh"
+
+// CONSTANTS
+const TUid CFileManagerRestoreView::KDeleteBackups = { EDeleteBackups };
+const TInt KMaxSelection = 64;
+
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::CFileManagerRestoreView
+// ----------------------------------------------------------------------------
+//
+CFileManagerRestoreView::CFileManagerRestoreView()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::NewLC
+// ----------------------------------------------------------------------------
+//
+CFileManagerRestoreView* CFileManagerRestoreView::NewLC()
+ {
+ CFileManagerRestoreView* self = new( ELeave ) CFileManagerRestoreView();
+ CleanupStack::PushL( self );
+ self->ConstructL( R_FILEMANAGER_RESTORE_VIEW );
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::~CFileManagerRestoreView
+// ----------------------------------------------------------------------------
+//
+CFileManagerRestoreView::~CFileManagerRestoreView()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::DoActivateL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::DoActivateL(
+ const TVwsViewId& aPrevViewId,
+ TUid aCustomMessageId,
+ const TDesC8& aCustomMessage )
+ {
+ FUNC_LOG
+
+ iSelection = 0; // Reset stored list selection
+ iDeleteBackups = ( aCustomMessageId == KDeleteBackups );
+
+ CFileManagerViewBase::DoActivateL(
+ aPrevViewId, aCustomMessageId, aCustomMessage );
+
+ static_cast< CFileManagerAppUi* >( AppUi() )->SetTitleL(
+ iDeleteBackups ?
+ R_QTN_FMGR_DELETE_BACKUP_TITLE : R_QTN_FMGR_RESTORE_TITLE );
+
+ CFileManagerRestoreSettings& settings( iEngine.RestoreSettingsL() );
+ settings.RefreshL();
+
+ iContainer->RefreshListL( iIndex );
+
+ CEikButtonGroupContainer* cba = Cba();
+ cba->SetCommandSetL(R_AVKON_SOFTKEYS_OK_CANCEL__MARK );
+ cba->MakeCommandVisible( EAknSoftkeyOk, EFalse );
+ cba->MakeCommandVisible( EAknSoftkeyMark, ETrue );
+
+ if ( !iContainer->ListBoxNumberOfItems() )
+ {
+ cba->MakeCommandVisible( EAknSoftkeyMark, EFalse );
+ }
+ cba->DrawDeferred();
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::DoDeactivate
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::DoDeactivate()
+ {
+ FUNC_LOG
+
+ CFileManagerViewBase::DoDeactivate();
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::DirectoryChangedL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::DirectoryChangedL()
+ {
+ FUNC_LOG
+
+ if ( iContainer )
+ {
+ CFileManagerRestoreSettings& settings( iEngine.RestoreSettingsL() );
+ settings.RefreshL();
+ iContainer->RefreshListL( iIndex );
+ RestoreSelectionL();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::Id
+// ----------------------------------------------------------------------------
+//
+TUid CFileManagerRestoreView::Id() const
+ {
+ return CFileManagerAppUi::KFileManagerRestoreViewId;
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::CreateContainerL
+// ----------------------------------------------------------------------------
+//
+CFileManagerContainerBase* CFileManagerRestoreView::CreateContainerL()
+ {
+ CFileManagerRestoreSettings& settings( iEngine.RestoreSettingsL() );
+ CFileManagerContainerBase* container =
+ CFileManagerSettingListContainer::NewL(
+ ClientRect(),
+ iIndex,
+ CFileManagerSettingListContainer::EListRestore,
+ &settings );
+ container->SetEmptyTextL( R_QTN_FMGR_RESTORE_NO_BACKUPS );
+ return container;
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::HandleCommandL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::HandleCommandL( TInt aCommand )
+ {
+ switch( aCommand )
+ {
+ case EAknSoftkeySelect: // FALLTHROUGH
+ case EAknSoftkeyMark: // FALLTHROUGH
+ case EAknSoftkeyUnmark: // FALLTHROUGH
+ case EFileManagerSelectionKey: // FALLTHROUGH
+ case EFileManagerToggleMark: // FALLTHROUGH
+ case EFileManagerOpen:
+ {
+ CmdSelectL();
+ break;
+ }
+ case EAknSoftkeyOk:
+ {
+ CmdOkL();
+ break;
+ }
+ case EAknSoftkeyCancel: // FALLTHROUGH
+ case EAknSoftkeyBack:
+ {
+ CmdCancelL();
+ break;
+ }
+ case EFileManagerCheckMark:
+ {
+ CmdCheckMarkL();
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::CmdOkL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::CmdOkL()
+ {
+ if ( !iContainer )
+ {
+ return;
+ }
+
+ TBool isSystemStateNormal = static_cast< CFileManagerAppUi* >( AppUi() )->IsSystemStateNormal();
+ if ( !isSystemStateNormal )
+ {
+ FileManagerDlgUtils::ShowErrorNoteL( R_QTN_FMGR_SYSTEM_NOT_READY );
+ return;
+ }
+
+ const CArrayFix< TInt >* items = iContainer->ListBoxSelectionIndexes();
+
+ TInt count( items->Count() );
+
+ if ( count )
+ {
+ if( FileManagerDlgUtils::ShowConfirmQueryWithYesNoL(
+ iDeleteBackups ?
+ R_QTN_FMGR_DELETE_BACKUP_QUERY : R_QTN_FMGR_RESTORE_QUERY ) )
+ {
+ if ( !CheckPhoneState() )
+ {
+ FileManagerDlgUtils::ShowErrorNoteL( R_QTN_CRITICAL_ERROR );
+ }
+ else
+ {
+ TUint64 selection( 0 );
+ for ( TInt i( 0 ); i < count; ++i )
+ {
+ selection |= ( ( TUint64 ) 1 ) << ( ( *items )[ i ] );
+ }
+
+ CFileManagerRestoreSettings& settings(
+ iEngine.RestoreSettingsL() );
+ settings.SetSelection( selection );
+
+ if ( iDeleteBackups )
+ {
+ // Delete selected backups and close this view
+ iEngine.DeleteBackupsL();
+ iIndex = 0;
+ static_cast< CFileManagerAppUi* >(
+ AppUi() )->CloseRestoreViewL();
+ }
+ else
+ {
+ // Start restoring selected backups
+ TRAPD( err, StartProcessL( ERestoreProcess ) );
+ if ( err == KErrCorrupt )
+ {
+ FileManagerDlgUtils::ShowErrorNoteL(
+ R_QTN_FMGR_ERROR_CORRUPTED_BACKUP_FILE );
+ }
+ else
+ {
+ User::LeaveIfError( err );
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ CmdCancelL();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::CmdCancelL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::CmdCancelL()
+ {
+ iIndex = 0;
+ static_cast< CFileManagerAppUi* >( AppUi() )->CloseRestoreViewL();
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::CmdSelectL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::CmdSelectL()
+ {
+ if ( !iContainer )
+ {
+ return;
+ }
+ if ( !iContainer->ListBoxNumberOfItems() )
+ {
+ return;
+ }
+ TInt index( iContainer->ListBoxCurrentItemIndex() );
+ iContainer->ListBoxToggleItemL( index );
+ iSelection ^= ( ( TUint64 ) 1 ) << index; // Toggle stored list selection
+ UpdateCbaFromSelectionL();
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::CmdCheckMarkL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::CmdCheckMarkL()
+ {
+ if ( !iContainer )
+ {
+ return;
+ }
+ TInt mskTextId( R_QTN_MSK_MARK );
+ if ( iContainer->ListBoxIsItemSelected(
+ iContainer->ListBoxCurrentItemIndex() ) )
+ {
+ mskTextId = R_QTN_MSK_UNMARK;
+ }
+
+ SetCbaMskTextL( mskTextId );
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::ProcessFinishedL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::ProcessFinishedL(
+ TInt aError, const TDesC& aName )
+ {
+ TBool isRestore( iActiveProcess == ERestoreProcess );
+
+ CFileManagerViewBase::ProcessFinishedL( aError, aName );
+
+ // Exit when restore finished
+ if ( isRestore )
+ {
+ CmdCancelL();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::NotifyForegroundStatusChange
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::NotifyForegroundStatusChange(
+ TBool aForeground )
+ {
+ FUNC_LOG
+
+ if ( aForeground )
+ {
+ TRAP_IGNORE( RefreshSettingsL() );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::RefreshSettingsL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::RefreshSettingsL()
+ {
+ FUNC_LOG
+
+ DirectoryChangedL();
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::RestoreSelectionL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::RestoreSelectionL()
+ {
+ if ( !iContainer )
+ {
+ return;
+ }
+ const CArrayFix< TInt >* items = iContainer->ListBoxSelectionIndexes();
+ for ( TInt i( 0 ); i < KMaxSelection; ++i )
+ {
+ if ( iSelection & ( ( ( TUint64 ) 1 ) << i ) )
+ {
+ iContainer->ListBoxSelectItemL( i );
+ }
+ else
+ {
+ iContainer->ListBoxDeselectItem( i );
+ }
+ }
+ UpdateCbaFromSelectionL();
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::UpdateCbaFromSelectionL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::UpdateCbaFromSelectionL()
+ {
+ if ( !iContainer )
+ {
+ return;
+ }
+ CmdCheckMarkL();
+ CEikButtonGroupContainer* cba = Cba();
+ TBool hasItem(iContainer->ListBoxNumberOfItems());
+ const CArrayFix< TInt >* items = iContainer->ListBoxSelectionIndexes();
+ if ( hasItem && items->Count() )
+ {
+ cba->MakeCommandVisible( EAknSoftkeyOk, ETrue );
+ }
+ else
+ {
+ cba->MakeCommandVisible( EAknSoftkeyOk, EFalse );
+ }
+ cba->DrawDeferred();
+ }
+
+// ----------------------------------------------------------------------------
+// CFileManagerRestoreView::UpdateCbaL
+// ----------------------------------------------------------------------------
+//
+void CFileManagerRestoreView::UpdateCbaL()
+ {
+ CEikButtonGroupContainer* cba = Cba();
+ TBool hasItem(iContainer->ListBoxNumberOfItems());
+ cba->MakeCommandVisible( EAknSoftkeyMark, hasItem );
+ TBool hasSelecttionItem( hasItem && ( iContainer->ListBoxSelectionIndexesCount() ) );
+ cba->MakeCommandVisible( EAknSoftkeyOk, hasSelecttionItem );
+ cba->DrawDeferred();
+ }
+
+// End of File