--- a/filemanager/Engine/src/CFileManagerBackupSettingsFull.cpp Tue Feb 02 00:03:31 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,679 +0,0 @@
-/*
-* 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: Backup settings
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <avkon.rsg>
-#include <FileManagerEngine.rsg>
-#include <StringLoader.h>
-#include <centralrepository.h>
-#ifdef RD_MULTIPLE_DRIVE
-#include <driveinfo.h>
-#endif // RD_MULTIPLE_DRIVE
-#include <AknUtils.h>
-#include "FileManagerDebug.h"
-#include "CFileManagerEngine.h"
-#include "FileManagerPrivateCRKeys.h"
-#include "CFileManagerBackupSettings.h"
-#include "CFileManagerCommonDefinitions.h"
-
-// CONSTANTS
-_LIT( KSeparator, "\t" );
-const TInt KSeparatorSpace = 3;
-_LIT( KTimeFormatBefore, " %-B %J:%T" );
-_LIT( KTimeFormatAfter, " %J:%T %+B" );
-const TInt KTimeStrMax = 20;
-
-const TInt KSchedulingTextLookup[] = {
- R_QTN_FMGR_BACKUP_NO_SCHEDULING, // CFileManagerBackupSettings::ENoScheduling
- R_QTN_FMGR_BACKUP_DAILY, // CFileManagerBackupSettings::EDaily
- R_QTN_FMGR_BACKUP_WEEKLY // CFileManagerBackupSettings::EWeekly
-};
-
-const TInt KMinToMicroSecMultiplier = 60000000;
-const TInt KTargetDriveStrMax = 4;
-_LIT( KTimeSeparatorPlaceHolder, ":" );
-const TInt KHourMinSeparator = 1;
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::CFileManagerBackupSettings
-// ----------------------------------------------------------------------------
-//
-CFileManagerBackupSettings::CFileManagerBackupSettings(
- CFileManagerEngine& aEngine ) :
- iEngine( aEngine )
- {
- FUNC_LOG
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::~CFileManagerBackupSettings
-// ----------------------------------------------------------------------------
-//
-CFileManagerBackupSettings::~CFileManagerBackupSettings()
- {
- FUNC_LOG
- delete iCenRep;
- iList.ResetAndDestroy();
- iList.Close();
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::NewL
-// ----------------------------------------------------------------------------
-//
-CFileManagerBackupSettings* CFileManagerBackupSettings::NewL(
- CFileManagerEngine& aEngine )
- {
- CFileManagerBackupSettings* self =
- new ( ELeave ) CFileManagerBackupSettings(
- aEngine );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::ConstructL
-// ----------------------------------------------------------------------------
-//
-void CFileManagerBackupSettings::ConstructL()
- {
- FUNC_LOG
-
- iCenRep = CRepository::NewL( KCRUidFileManagerSettings );
-
- RefreshL();
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::SetContent
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CFileManagerBackupSettings::SetContent(
- const TUint32 aContent )
- {
- iContent = aContent;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::SetScheduling
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CFileManagerBackupSettings::SetScheduling(
- const TInt aScheduling )
- {
- iScheduling = aScheduling;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::SetDay
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CFileManagerBackupSettings::SetDay( const TInt aDay )
- {
- iDay = aDay;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::SetTime
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CFileManagerBackupSettings::SetTime( const TTime& aTime )
- {
- iTime = aTime;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::SetTargetDrive
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CFileManagerBackupSettings::SetTargetDrive( const TInt aDrive )
- {
- iTargetDrive = aDrive;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::Content
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 CFileManagerBackupSettings::Content() const
- {
- return iContent;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::Scheduling
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TInt CFileManagerBackupSettings::Scheduling() const
- {
- return iScheduling;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::Day
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TInt CFileManagerBackupSettings::Day() const
- {
- return iDay;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::Time
-// ----------------------------------------------------------------------------
-//
-EXPORT_C const TTime& CFileManagerBackupSettings::Time() const
- {
- return iTime;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::TargetDrive
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TInt CFileManagerBackupSettings::TargetDrive() const
- {
- return iTargetDrive;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::ContentCount
-// ----------------------------------------------------------------------------
-//
-TInt CFileManagerBackupSettings::ContentsSelected() const
- {
- TInt ret( 0 );
- // Count selected only
- TUint32 mask( iContent );
- while ( mask )
- {
- if ( mask & 1 )
- {
- ++ret;
- }
- mask >>= 1;
- }
- return ret;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::SaveL
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CFileManagerBackupSettings::SaveL()
- {
- FUNC_LOG
-
- TInt err( KErrNone );
-
- err = iCenRep->Set(
- KFileManagerBackupContent, static_cast< TInt >( iContent ) );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::SaveL-Content-err%d",
- err )
-
- err = iCenRep->Set(
- KFileManagerBackupScheduling, static_cast< TInt >( iScheduling ) );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::SaveL-Scheduling-err%d",
- err )
-
- err = iCenRep->Set(
- KFileManagerBackupDay, static_cast< TInt >( iDay ) );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::SaveL-Day-err%d",
- err )
-
- // Convert micro secs to minutes
- TInt minutes( iTime.Int64() / KMinToMicroSecMultiplier );
- err = iCenRep->Set( KFileManagerBackupTime, minutes );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::SaveL-Time-err%d",
- err )
-
- TChar ch;
- User::LeaveIfError( RFs::DriveToChar( iTargetDrive, ch ) );
- TBuf< KTargetDriveStrMax > drive;
- drive.Append( ch );
- err = iCenRep->Set( KFileManagerBackupTargetPath, drive );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::SaveL-Target-err%d",
- err )
-
- RefreshListL();
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::LoadL
-// ----------------------------------------------------------------------------
-//
-void CFileManagerBackupSettings::LoadL()
- {
- FUNC_LOG
-
- TInt buffer( 0 );
- TInt err( KErrNone );
- err = iCenRep->Get( KFileManagerBackupContent, buffer );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::LoadL-Content-err%d",
- err )
-
- iContent = buffer;
- if ( !iContent )
- {
- iContent |= EFileManagerBackupContentAll;
- }
-
- buffer = 0;
- err = iCenRep->Get( KFileManagerBackupScheduling, buffer );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::LoadL-Scheduling-err%d",
- err )
-
- iScheduling = buffer;
-
- buffer = 0;
- err = iCenRep->Get( KFileManagerBackupDay, buffer );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::LoadL-Day-err%d",
- err )
-
- iDay = buffer;
- if ( iDay == KErrNotFound )
- {
- TLocale locale;
- iDay = locale.StartOfWeek();
- }
- // Convert minutes to micro secs
- buffer = 0;
- err = iCenRep->Get( KFileManagerBackupTime, buffer );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::LoadL-Time-err%d",
- err )
-
- TInt64 microSecs( buffer );
- microSecs *= KMinToMicroSecMultiplier;
- iTime = microSecs;
-
- HBufC* path = HBufC::NewLC( KMaxPath );
- TPtr ptr( path->Des() );
- err = iCenRep->Get( KFileManagerBackupTargetPath, ptr );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::LoadL-Target-err%d",
- err )
-
- if ( !ptr.Length() )
- {
- User::Leave( KErrNotFound );
- }
-
- _LIT( KDefault, "?" );
- if ( ptr[ 0 ] == KDefault()[ 0 ] )
- {
-#ifdef RD_MULTIPLE_DRIVE
- err = DriveInfo::GetDefaultDrive(
- DriveInfo::EDefaultRemovableMassStorage, iTargetDrive );
- LOG_IF_ERROR1( err, "CFileManagerBackupSettings::LoadL-GetDefaultDrive-err%d",
- err )
- User::LeaveIfError( err );
-#else // RD_MULTIPLE_DRIVE
- iTargetDrive = KFmgrMemoryCardDrive;
-#endif // RD_MULTIPLE_DRIVE
- }
- else
- {
- User::LeaveIfError( RFs::CharToDrive( ptr[ 0 ], iTargetDrive ) );
- }
- CleanupStack::PopAndDestroy( path );
-
- // Get allowed drive mask
- err = iCenRep->Get( KFileManagerFeatures, iFileManagerFeatures );
- if ( err != KErrNone )
- {
- ERROR_LOG1( "CFileManagerBackupSettings::LoadL-Features-err%d",
- err )
- iFileManagerFeatures = 0;
- }
- INFO_LOG1(
- "CFileManagerBackupSettings::LoadL-iFileManagerFeatures=0x%x",
- iFileManagerFeatures )
- if ( iFileManagerFeatures & EFileManagerFeatureBackupAllowAllDrives )
- {
- iAllowedDriveMatchMask = KDriveAttRemovable | KDriveAttRemote;
- }
- else
- {
- iAllowedDriveMatchMask = KDriveAttRemovable;
- }
-
- RefreshListL();
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::SettingAt
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TInt CFileManagerBackupSettings::SettingAt( const TInt aIndex )
- {
- TInt type( ENone );
- if ( aIndex >= 0 && aIndex < iList.Count() )
- {
- type = iList[ aIndex ]->iType;
- }
- return type;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::MdcaCount
-// ----------------------------------------------------------------------------
-//
-TInt CFileManagerBackupSettings::MdcaCount() const
- {
- return iList.Count();
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::MdcaPoint
-// ----------------------------------------------------------------------------
-//
-TPtrC CFileManagerBackupSettings::MdcaPoint( TInt aIndex ) const
- {
- return TPtrC( *( iList[ aIndex ]->iText ) );
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::CEntry::~CEntry
-// ----------------------------------------------------------------------------
-//
-CFileManagerBackupSettings::CEntry::~CEntry()
- {
- delete iText;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::CreateEntryLC
-// ----------------------------------------------------------------------------
-//
-CFileManagerBackupSettings::CEntry* CFileManagerBackupSettings::CreateEntryLC(
- const TSettingType aType,
- const TInt aTitleId,
- const TInt aTextId,
- const TInt aValue )
- {
- HBufC* value = NULL;
- if ( aValue )
- {
- value = StringLoader::LoadLC( aTextId, aValue );
- }
- else
- {
- value = StringLoader::LoadLC( aTextId );
- }
-
- CEntry* entry = CreateEntryLC( aType, aTitleId, *value );
- CleanupStack::Pop( entry );
- CleanupStack::PopAndDestroy( value );
- CleanupStack::PushL( entry );
- return entry;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::CreateEntryLC
-// ----------------------------------------------------------------------------
-//
-CFileManagerBackupSettings::CEntry* CFileManagerBackupSettings::CreateEntryLC(
- const TSettingType aType,
- const TInt aTitleId,
- const TDesC& aText )
- {
- CEntry* entry = new ( ELeave ) CEntry;
- CleanupStack::PushL( entry );
-
- HBufC* title = StringLoader::LoadLC( aTitleId );
- entry->iText = HBufC::NewL(
- title->Length() + aText.Length() + KSeparatorSpace );
-
- // "\tFirstLabel\t\tValueText"
- TPtr ptr( entry->iText->Des() );
- ptr.Append( KSeparator );
- ptr.Append( *title );
- ptr.Append( KSeparator );
- ptr.Append( KSeparator );
- ptr.Append( aText );
-
- entry->iType = aType;
-
- CleanupStack::PopAndDestroy( title );
- return entry;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::CreateContentsEntryLC
-// ----------------------------------------------------------------------------
-//
-CFileManagerBackupSettings::CEntry*
- CFileManagerBackupSettings::CreateContentsEntryLC()
- {
- TInt selected( ContentsSelected() );
- if ( !( iContent & EFileManagerBackupContentAll ) && selected > 1 )
- {
- return CreateEntryLC(
- EContents,
- R_QTN_FMGR_BACKUP_CONTENTS,
- R_QTN_FMGR_BACKUP_CONTENT_SELECTED,
- selected );
- }
- TInt textId( ContentToTextId( iContent ) );
- return CreateEntryLC( EContents, R_QTN_FMGR_BACKUP_CONTENTS, textId );
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::CreateTimeEntryLC
-// ----------------------------------------------------------------------------
-//
-CFileManagerBackupSettings::CEntry*
- CFileManagerBackupSettings::CreateTimeEntryLC()
- {
- TBuf< KTimeStrMax > timeFormatStr;
- TLocale local;
- if ( local.AmPmSymbolPosition() == ELocaleBefore )
- {
- timeFormatStr.Copy( KTimeFormatBefore );
- }
- else
- {
- timeFormatStr.Copy( KTimeFormatAfter );
- }
- TChar timeSeparator( local.TimeSeparator( KHourMinSeparator ) );
- AknTextUtils::ReplaceCharacters(
- timeFormatStr, KTimeSeparatorPlaceHolder, timeSeparator );
- TBuf< KTimeStrMax > timeStr;
- iTime.FormatL( timeStr, timeFormatStr );
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( timeStr );
- return CreateEntryLC( ETime, R_QTN_FMGR_BACKUP_TIME, timeStr );
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::RefreshListL
-// ----------------------------------------------------------------------------
-//
-void CFileManagerBackupSettings::RefreshListL()
- {
- iList.ResetAndDestroy();
-
- // Contents
- CEntry* entry = CreateContentsEntryLC();
- iList.AppendL( entry );
- CleanupStack::Pop( entry );
-
- if ( !( iFileManagerFeatures & EFileManagerFeatureScheduledBackupDisabled ) )
- {
- // Scheduling
- entry = CreateEntryLC(
- EScheduling,
- R_QTN_FMGR_BACKUP_SCHEDULING,
- KSchedulingTextLookup[ iScheduling ] );
- iList.AppendL( entry );
- CleanupStack::Pop( entry );
-
- // Weekday
- if ( iScheduling == EFileManagerBackupScheduleWeekly )
- {
- TDayName dayName( static_cast< TDay >( iDay ) );
- entry = CreateEntryLC(
- EWeekday,
- R_QTN_FMGR_BACKUP_WEEKDAY,
- dayName );
- iList.AppendL( entry );
- CleanupStack::Pop( entry );
- }
-
- // Time
- if ( iScheduling == EFileManagerBackupScheduleWeekly ||
- iScheduling == EFileManagerBackupScheduleDaily )
- {
- entry = CreateTimeEntryLC();
- iList.AppendL( entry );
- CleanupStack::Pop( entry );
- }
- }
-
- // Target drive
- if ( HasMultipleBackupTargets() )
- {
- entry = CreateTargetDriveEntryLC();
- iList.AppendL( entry );
- CleanupStack::Pop( entry );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::ContentToTextId
-// ----------------------------------------------------------------------------
-//
-TInt CFileManagerBackupSettings::ContentToTextId( const TUint32 aContent )
- {
- TInt ret( R_QTN_FMGR_BACKUP_CONTENT_ALL );
-
- if ( aContent & EFileManagerBackupContentAll )
- {
- ret = R_QTN_FMGR_BACKUP_CONTENT_ALL;
- }
- else if ( aContent & EFileManagerBackupContentSettings )
- {
- ret = R_QTN_FMGR_BACKUP_CONTENT_SETTINGS;
- }
- else if ( aContent & EFileManagerBackupContentMessages )
- {
- ret = R_QTN_FMGR_BACKUP_CONTENT_MESSAGES;
- }
- else if ( aContent & EFileManagerBackupContentContacts )
- {
- ret = R_QTN_FMGR_BACKUP_CONTENT_CONTACTS;
- }
- else if ( aContent & EFileManagerBackupContentCalendar )
- {
- ret = R_QTN_FMGR_BACKUP_CONTENT_CALENDAR;
- }
- else if ( aContent & EFileManagerBackupContentBookmarks )
- {
- ret = R_QTN_FMGR_BACKUP_CONTENT_BOOKMARKS;
- }
- else if ( aContent & EFileManagerBackupContentUserFiles )
- {
- ret = R_QTN_FMGR_BACKUP_CONTENT_USERFILES;
- }
- return ret;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::RefreshL
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CFileManagerBackupSettings::RefreshL()
- {
- LoadL();
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::CreateTargetDriveEntryLC
-// ----------------------------------------------------------------------------
-//
-CFileManagerBackupSettings::CEntry*
- CFileManagerBackupSettings::CreateTargetDriveEntryLC()
- {
- TPtrC driveName( iEngine.DriveName( iTargetDrive ) );
-
- if ( driveName.Length() )
- {
- return CreateEntryLC(
- ETarget, R_QTN_FMGR_BACKUP_DESTINATION, driveName );
- }
-
- TChar ch;
- User::LeaveIfError( RFs::DriveToChar( iTargetDrive, ch ) );
- TBuf< KTargetDriveStrMax > drive;
- drive.Append( ch );
- return CreateEntryLC( ETarget, R_QTN_FMGR_BACKUP_DESTINATION, drive );
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::AllowedDriveAttMatchMask
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 CFileManagerBackupSettings::AllowedDriveAttMatchMask() const
- {
- return iAllowedDriveMatchMask;
- }
-
-// ----------------------------------------------------------------------------
-// CFileManagerBackupSettings::HasMultipleBackupTargets
-// ----------------------------------------------------------------------------
-//
-TBool CFileManagerBackupSettings::HasMultipleBackupTargets()
- {
-#ifdef RD_MULTIPLE_DRIVE
- TBool count( 0 );
- TUint32 driveAttMask( AllowedDriveAttMatchMask() );
- RFs& fs( iEngine.Fs() );
-
- for ( TInt i( 0 ); i < KMaxDrives; ++i )
- {
- TDriveInfo driveInfo;
- if ( fs.Drive( driveInfo, i ) == KErrNone )
- {
- // Do not allow backup for internal drives
- TUint driveStatus( 0 );
- DriveInfo::GetDriveStatus( fs, i, driveStatus );
- if ( driveStatus & DriveInfo::EDriveInternal )
- {
- continue;
- }
- if ( driveInfo.iDriveAtt & driveAttMask )
- {
- ++count;
- }
- }
- if ( count > 1 )
- {
- break;
- }
- }
- return count > 1;
-#else // RD_MULTIPLE_DRIVE
- return EFalse;
-#endif // RD_MULTIPLE_DRIVE
- }
-
-// End of File