diff -r 75a71fdb4c92 -r 7d11f9a6646f customization/ScreenSaverAdapter/src/ScreenSaverList.cpp --- a/customization/ScreenSaverAdapter/src/ScreenSaverList.cpp Tue Feb 02 00:03:17 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,943 +0,0 @@ -/* -* Copyright (c) 2002 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: DM ScreenSaver List -* -*/ - - -#include "ScreenSaverList.h" - -#include // For TImplementationProxy definition -#include -#include -#include -#include // For CleanupResetAndDestroyPushL -#include "aminstalloptions.h" -#include -#include -#include "debug.h" -#include "ScreenSaverClient.h" -#include -_LIT8( KSlash, "/" ); -#include -_LIT( KPslnScreenSaverTypeDateTime, "DateTime" ); -_LIT( KPslnScreenSaverTypeText, "Text" ); - -const TInt KPslnMaxNumberOfScreenSaverText = 15; -const TInt KPostTimeOut = 10000000; // 10 seconds - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList* CScreenSaverList::NewL( ) -// ------------------------------------------------------------------------------------------------ -CScreenSaverList* CScreenSaverList::NewL( ) - { - RDEBUG("CScreenSaverList::NewL(): begin"); - - CScreenSaverList* self = NewLC( ); - CleanupStack::Pop(); - return self; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList* CScreenSaverList::NewLC( ) -// ------------------------------------------------------------------------------------------------ -CScreenSaverList* CScreenSaverList::NewLC( ) - { - CScreenSaverList* self = new( ELeave ) CScreenSaverList( ); - CleanupStack::PushL( self ); - self->ConstructL( ); - return self; - } - - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::CScreenSaverList() -// ------------------------------------------------------------------------------------------------ -CScreenSaverList::CScreenSaverList( ) - : iDirty( ETrue ) - , iScreenSavers( 0 ) - , iInstallOptions() - { - GetDefaultInstallOptions( iInstallOptions ); - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::ConstructL() -// ------------------------------------------------------------------------------------------------ -void CScreenSaverList::ConstructL( ) - { - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::~CScreenSaverList() -// ------------------------------------------------------------------------------------------------ -CScreenSaverList::~CScreenSaverList() - { - if (iScreenSavers) - { - iScreenSavers->ResetAndDestroy(); - delete iScreenSavers; - } - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::GetScreenSaverListL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::GetScreenSaverListL( const CArrayFix& aPreviousList, CBufBase& aList ) - { - CheckUpdatesL(); - - CDesC8ArrayFlat* names = new (ELeave) CDesC8ArrayFlat( 32 ); - CleanupStack::PushL( names ); - - CDesC8ArrayFlat* luids = new (ELeave) CDesC8ArrayFlat( 32 ); - CleanupStack::PushL( luids ); - - TInt i = 0; - - // Create list of previous screen savers - for (i = 0 ; i < aPreviousList.Count() ; i++) - { - TPtrC8 screenSaverId = ScreenSaverIdFromLUID( aPreviousList[i].iURISegLUID ); - - names->AppendL( aPreviousList[i].iURISeg ); - luids->AppendL( screenSaverId ); - } - - // Find and add missing screen savers - for (i = 0 ; i < iScreenSavers->Count() ; i++) - { - TInt idx = 0; - TPtrC8 name = (*iScreenSavers)[i]->Id(); - if (luids->Find( name, idx ) != 0) - { - // not found - // Check that current "name" is not in use - if (names->Find( name, idx ) != 0) - { - // not found, add it - names->AppendL( name ); - } - } - } - - - // Fill result - for (i = 0 ; i < names->Count() ; i++) - { - if (i > 0) - { - aList.InsertL( aList.Size(), KSlash ); - } - aList.InsertL( aList.Size(), (*names)[i] ); - } - - // Cleanup - CleanupStack::PopAndDestroy( luids ); - CleanupStack::PopAndDestroy( names ); - - return MSmlDmAdapter::EOk; - -//sf- TInt i = 0; -//sf- for (i = 0 ; i < iScreenSavers->Count() ; i++) -//sf- { -//sf- if (i > 0) -//sf- { -//sf- aList.InsertL( aList.Size(), KSlash ); -//sf- } -//sf- -//sf- CScreenSaverInfo *info = (*iScreenSavers)[i]; -//sf- aList.InsertL( aList.Size(), info->Id() ); -//sf- } -//sf- -//sf- -//sf- return MSmlDmAdapter::EOk; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::GetIdL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::GetIdL( const TDesC8& aId, CBufBase& aResult ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aId ); - if (screenSaverInfo != 0) - { - aResult.InsertL( aResult.Size(), screenSaverInfo->Id() ); - ret = MSmlDmAdapter::EOk; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::GetNameL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::GetNameL( const TDesC8& aId, CBufBase& aResult ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aId ); - if (screenSaverInfo != 0) - { - aResult.InsertL( aResult.Size(), screenSaverInfo->Name() ); - ret = MSmlDmAdapter::EOk; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::SetNameL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::SetNameL( const TDesC8& aId, const TDesC8& aData ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aId ); - if (screenSaverInfo != 0) - { - screenSaverInfo->SetNameL( aData ); - ret = MSmlDmAdapter::EOk; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::GetDescriptionL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::GetDescriptionL( const TDesC8& aId, CBufBase& aResult ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aId ); - if (screenSaverInfo != 0) - { - aResult.InsertL( aResult.Size(), screenSaverInfo->Description() ); - ret = MSmlDmAdapter::EOk; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::SetDescriptionL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::SetDescriptionL( const TDesC8& aId, const TDesC8& aData ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aId ); - if (screenSaverInfo != 0) - { - screenSaverInfo->SetDescriptionL( aData ); - ret = MSmlDmAdapter::EOk; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::GetCustomPropertyL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::GetCustomPropertyL( const TDesC8& aId, CBufBase& aResult ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aId ); - if (screenSaverInfo != 0) - { - aResult.InsertL( aResult.Size(), screenSaverInfo->CustomProperty() ); - ret = MSmlDmAdapter::EOk; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::SetCustomPropertyL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::SetCustomPropertyL( const TDesC8& aId, const TDesC8& aData ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aId ); - if (screenSaverInfo != 0) - { - screenSaverInfo->SetCustomPropertyL( aData ); - ret = MSmlDmAdapter::EOk; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::GetVersionL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::GetVersionL( const TDesC8& aId, CBufBase& aResult ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aId ); - if (screenSaverInfo != 0) - { - aResult.InsertL( aResult.Size(), screenSaverInfo->Version() ); - ret = MSmlDmAdapter::EOk; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::SetVersionL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::SetVersionL( const TDesC8& aId, const TDesC8& aVersion ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aId ); - if (screenSaverInfo != 0) - { - screenSaverInfo->SetVersionL( aVersion ); - ret = MSmlDmAdapter::EOk; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::GetActiveL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::GetActiveL( CBufBase& aResult ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::EOk; - - TInt screenSaverTypeId = 0; // Text - TFileName screenSaverFileName; - - CRepository* repository = CRepository::NewLC( KCRUidScreenSaver ); - TInt error = repository->Get( KScreenSaverObject, screenSaverTypeId ); - - if( error == KErrNone ) - { - if( screenSaverTypeId == 0 ) // Text - { - screenSaverFileName = KPslnScreenSaverTypeText; - } - else if( screenSaverTypeId == 1 ) // Date&time - { - screenSaverFileName = KPslnScreenSaverTypeDateTime; - } - else if( screenSaverTypeId == 3 )// Object - { - error = repository->Get( KScreenSaverPluginName, screenSaverFileName ); - } - else - { - error = KErrUnknown; - } - } - - CleanupStack::PopAndDestroy( repository ); - - if( error == KErrNone ) - { - TBuf8 screenSaverFileName8; - screenSaverFileName8.Copy( screenSaverFileName ); - - aResult.InsertL( aResult.Size(), screenSaverFileName8 ); - } - else - { - ret = MSmlDmAdapter::EError; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::SetActiveL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::SetActiveL( const TDesC8& aId ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::EOk; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aId ); - if (screenSaverInfo != 0) - { - screenSaverInfo->ActivateL(); - } - else - { - ret = MSmlDmAdapter::EError; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::SetInstallOptionsL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::SetInstallOptionsL( const TDesC8& aOptions ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::EOk; - TInt errCode = KErrNone; - - GetDefaultInstallOptions( iInstallOptions ); - - if (aOptions.Length() > 0) - { - TRAP( errCode, InstallOptionsParser::ParseOptionsL( aOptions, iInstallOptions ) ); - } - if (errCode != KErrNone) - { - ret = MSmlDmAdapter::EError; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::InstallL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::InstallL( const TDesC& aFileName ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::EOk; - TInt errCode = KErrNone; - - iDirty = ETrue; - - // Install using options if given and otherwise with default options - SwiUI::RSWInstLauncher installer; - User::LeaveIfError( installer.Connect() ); - CleanupClosePushL( installer ); - - SwiUI::TInstallOptionsPckg optPckg( iInstallOptions ); - errCode = installer.SilentInstall( aFileName, optPckg ); - CleanupStack::PopAndDestroy( &installer ); - - if (errCode != KErrNone) - { - ret = MSmlDmAdapter::EError; - } - - return ret; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::DeleteL() -// ------------------------------------------------------------------------------------------------ -MSmlDmAdapter::TError CScreenSaverList::DeleteL( const TDesC8& aLUID ) - { - MSmlDmAdapter::TError ret = MSmlDmAdapter::EOk; - TInt errCode = KErrNone; - - CScreenSaverInfo* screenSaverInfo = FindByIdL( aLUID ); - if( screenSaverInfo != NULL ) - { - CRepository* repository = CRepository::NewLC( KCRUidScreenSaver ); - - if( screenSaverInfo->TypeId() == CScreenSaverInfo::EObject ) - { - TFileName screenSaverFileName; - screenSaverFileName.Copy( screenSaverInfo->FileName() ); - - TFileName repFileName; - repository->Get( KScreenSaverPluginName, repFileName ); - if( repFileName == screenSaverFileName ) - { - TBuf screenText; - screenText.Copy( screenSaverInfo->CustomProperty() ); - errCode = repository->Set( KScreenSaverText, screenText ); - errCode = repository->Set( KScreenSaverObject, CScreenSaverInfo::EText ); - - TRequestStatus timeoutStatus /*= KRequestPending*/; - RTimer timeout; - User::LeaveIfError( timeout.CreateLocal() ); - CleanupClosePushL( timeout ); - timeout.After( timeoutStatus, KPostTimeOut ); - - User::WaitForRequest( timeoutStatus ); - - if( timeoutStatus.Int() == KRequestPending) - { - timeout.Cancel(); - User::WaitForRequest( timeoutStatus ); - } - CleanupStack::PopAndDestroy( &timeout ); - - } - } - CleanupStack::PopAndDestroy( repository ); - - } - else - { - errCode = KErrNotFound; - } - - if( errCode == KErrNone ) - { - iDirty = ETrue; - - TUint pkgUid = 0; - TLex8 parser( aLUID ); - if ((parser.Get() == '[') && - (parser.Val( pkgUid, EHex ) == KErrNone) && - (parser.Get() == ']')) - { - // Uninstall silent - SwiUI::RSWInstLauncher installer; - User::LeaveIfError( installer.Connect() ); - CleanupClosePushL( installer ); - - SwiUI::TUninstallOptions uninstallOptions; - SwiUI::TUninstallOptionsPckg optPckg( uninstallOptions ); - - errCode = installer.SilentUninstall( TUid::Uid( pkgUid ), optPckg, SwiUI::KSisxMimeType() ); - - CleanupStack::PopAndDestroy( &installer ); - } - } - - if (errCode == KErrNotFound) - { - ret = MSmlDmAdapter::ENotFound; - } - else if (errCode != KErrNone) - { - ret = MSmlDmAdapter::EError; - } - - return ret; - } - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// -// Internal methods -// -/////////////////////////////////////////////////////////////////////////////////////////////////// - - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::CheckUpdatesL() -// ------------------------------------------------------------------------------------------------ -void CScreenSaverList::CheckUpdatesL() - { - if (iDirty) - { - LoadL(); - iDirty = EFalse; - } - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::LoadL() -// ------------------------------------------------------------------------------------------------ -void CScreenSaverList::LoadL() - { - CScreenSaverInfo* entry = 0; - // Add descriptors for system screensavers - delete iScreenSavers; - iScreenSavers = 0; - iScreenSavers = new (ELeave) CArrayPtrFlat< CScreenSaverInfo >( 8 ); - - entry = CScreenSaverInfo::NewLC( KPslnScreenSaverTypeDateTime ); - iScreenSavers->AppendL( entry ); - CleanupStack::Pop( entry ); - - entry = CScreenSaverInfo::NewLC( KPslnScreenSaverTypeText ); - iScreenSavers->AppendL( entry ); - CleanupStack::Pop( entry ); - - // The path variable is not used - // The signature of this function could be changed in later releases - LoadPluginsL( KNullDesC ); -//sf- LoadPluginsL( KPslnScreensaverPathROM ); -//sf- LoadPluginsL( KPslnScreensaverPathLFFS ); -//sf- LoadPluginsL( KPslnScreensaverPathMMC ); - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::LoadPluginsL() -// ------------------------------------------------------------------------------------------------ -TBool CScreenSaverList::LoadPluginsL( const TDesC& /*aPath*/ ) - { - RDEBUG(" CScreenSaverList: LoadPluginsL ... <"); - TBool found = EFalse; - - RScreenSaverClient ssClient; - - User::LeaveIfError( ssClient.Connect() ); - CleanupClosePushL( ssClient ); - - RSSListInfoPtrArray sslistinfo; - CleanupResetAndDestroyPushL( sslistinfo ); - - ssClient.GetScreenSaverListInfoL(sslistinfo ); - const TInt count = sslistinfo.Count(); - RDEBUG_2(" CScreenSaverList: LoadPluginsL : SScount is :%d",count); - - for( TInt i = 0 ; i < count ; i++ ) - { - CScreenSaverListInfo* implInfo = sslistinfo[i]; - - CScreenSaverInfo* entry = CScreenSaverInfo::NewLC( - implInfo->ImplementationUid().Name() ); - entry->SetNameL( implInfo->DisplayName() ); - - TBuf8<20> version; - version.Num( implInfo->Version() ); - entry->SetVersionL( version ); - entry->SetCustomPropertyL( implInfo->OpaqueData() ); - - iScreenSavers->AppendL( entry ); - CleanupStack::Pop( entry ); - - found = ETrue; - } - - CleanupStack::PopAndDestroy( &sslistinfo ); - CleanupStack::PopAndDestroy( &ssClient ); - RDEBUG(" CScreenSaverList: LoadPluginsL ... >"); - return found; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList:: -// ------------------------------------------------------------------------------------------------ -CScreenSaverInfo* CScreenSaverList::FindByIdL( const TDesC8& aId ) - { - CheckUpdatesL(); - - CScreenSaverInfo* entry = 0; - TInt i = 0; - TPtrC8 id = ScreenSaverIdFromLUID( aId ); - if (id.Length() == 0) - { - id.Set( aId ); - } - - for (i = 0 ; i < iScreenSavers->Count() ; i++) - { - if (id == (*iScreenSavers)[i]->Id()) - { - entry = (*iScreenSavers)[i]; - break; - } - } - - return entry; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::ScreenSaverIdFromLUID() -// ------------------------------------------------------------------------------------------------ -TPtrC8 CScreenSaverList::ScreenSaverIdFromLUID( const TDesC8& aLUID ) - { - TInt pos = aLUID.Locate( KPkgId_ScrId_Separator ); - if (pos == KErrNotFound) - { - pos = aLUID.Length() - 1; - } - return aLUID.Mid( pos + 1 ); - } - - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList::GetDefaultInstallOptions() -// ------------------------------------------------------------------------------------------------ -void CScreenSaverList::GetDefaultInstallOptions( SwiUI::TInstallOptions &aOptions ) - { - SwiUI::TInstallOptions defaultOptions; - - // Return options - aOptions = defaultOptions; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverList:: -// ------------------------------------------------------------------------------------------------ - -//================================================================================================= -//================================================================================================= -//==== -//==== CScreenSaverInfo -//==== -//================================================================================================= -//================================================================================================= - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo::NewL() -// ------------------------------------------------------------------------------------------------ -CScreenSaverInfo* CScreenSaverInfo::NewL( const TDesC& aId ) - { - RDEBUG("CScreenSaverInfo::NewL(): begin"); - - CScreenSaverInfo* self = NewLC( aId ); - CleanupStack::Pop(); - return self; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo* CScreenSaverInfo::NewLC() -// ------------------------------------------------------------------------------------------------ -CScreenSaverInfo* CScreenSaverInfo::NewLC( const TDesC& aId ) - { - CScreenSaverInfo* self = new( ELeave ) CScreenSaverInfo( ); - CleanupStack::PushL( self ); - self->ConstructL( aId ); - return self; - } - - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -CScreenSaverInfo::CScreenSaverInfo() - : iId( 0 ) - , iName( 0 ) - , iDescription( 0 ) - , iCustomProperty( 0 ) - , iVersion( 0 ) - { - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -void CScreenSaverInfo::ConstructL( const TDesC& aId ) - { - iId = HBufC8::NewL( aId.Length() ); - iId->Des().Copy( aId ); - iName = KNullDesC8().AllocL(); - iDescription = KNullDesC8().AllocL(); - iCustomProperty = KNullDesC8().AllocL(); - iVersion = KNullDesC8().AllocL(); - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -CScreenSaverInfo::~CScreenSaverInfo() - { - delete iId; - delete iName; - delete iDescription; - delete iCustomProperty; - delete iVersion; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -const TDesC8& CScreenSaverInfo::Id() - { - return *iId; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -const TDesC8& CScreenSaverInfo::Name() - { - return *iName; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -void CScreenSaverInfo::SetNameL( const TDesC8& aName ) - { - delete iName; - iName = 0; - iName = aName.AllocL(); - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -void CScreenSaverInfo::SetNameL( const TDesC& aName ) - { - delete iName; - iName = 0; - iName = HBufC8::NewL( aName.Length() ); - iName->Des().Copy( aName ); - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -const TDesC8& CScreenSaverInfo::Description() - { - return *iDescription; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -void CScreenSaverInfo::SetDescriptionL( const TDesC8& aDescription ) - { - delete iDescription; - iDescription = 0; - iDescription = aDescription.AllocL(); - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -const TDesC8& CScreenSaverInfo::CustomProperty() - { - return *iCustomProperty; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -void CScreenSaverInfo::SetCustomPropertyL( const TDesC8& aCustomProperty ) - { - delete iCustomProperty; - iCustomProperty = 0; - iCustomProperty = aCustomProperty.AllocL(); - // Update settings if needed - if (IsActivatedL() && TypeId() == EText) - { - ActivateL(); - } - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -const TDesC8& CScreenSaverInfo::Version() - { - return *iVersion; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -void CScreenSaverInfo::SetVersionL( const TDesC8& aVersion ) - { - delete iVersion; - iVersion = 0; - iVersion = aVersion.AllocL(); - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -CScreenSaverInfo::TScreenSaverType CScreenSaverInfo::TypeId() - { - TScreenSaverType screenSaverTypeId = EText; - TFileName fileName; - fileName.Copy( FileName() ); - - if( fileName.CompareF( KPslnScreenSaverTypeText ) == 0 ) - { - screenSaverTypeId = EText; // 0=Text - } - else if( fileName.CompareF( KPslnScreenSaverTypeDateTime ) == 0 ) - { - screenSaverTypeId = EDateTime; // 1=Date&time - } - else - { - screenSaverTypeId = EObject; // 3=Object - } - - return screenSaverTypeId; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -TBool CScreenSaverInfo::IsActivatedL() - { - TBool activated = EFalse; - - TInt screenSaverTypeId = 0; // Text - TFileName screenSaverFileName; - - CRepository* repository = CRepository::NewLC( KCRUidScreenSaver ); - - TInt error = repository->Get( KScreenSaverObject, screenSaverTypeId ); - if( screenSaverTypeId == 3 ) - { - repository->Get( KScreenSaverPluginName, screenSaverFileName ); - } - CleanupStack::PopAndDestroy( repository ); - - if( screenSaverTypeId == 0 && TypeId() == EText ) // Text - { - activated = ETrue; - } - else if( screenSaverTypeId == 1 && TypeId() == EDateTime ) // Date&time - { - activated = ETrue; - } - else if( screenSaverTypeId == 3 && TypeId() == EObject )// Object - { - TFileName fileName; - fileName.Copy( FileName() ); - activated = ( fileName.CompareF( screenSaverFileName ) == 0 ); - } - - return activated; - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -void CScreenSaverInfo::ActivateL() - { - CRepository* repository = CRepository::NewLC( KCRUidScreenSaver ); - - - if( TypeId() == EText ) - { - TBuf screenText; - screenText.Copy( CustomProperty() ); - repository->Set( KScreenSaverText, screenText ); - } - else if( TypeId() == EDateTime ) - { -//sf- TBuf screenText; -//sf- screenText.Copy( CustomProperty() ); -//sf- error = repository->Set( KScreenSaverText, screenText ); - } - else if( TypeId() == EObject ) - { - TFileName screenSaverFileName; - screenSaverFileName.Copy( FileName() ); - repository->Set( KScreenSaverPluginName, screenSaverFileName ); - } - repository->Set( KScreenSaverObject, TypeId() ); - CleanupStack::PopAndDestroy( repository ); - } - -// ------------------------------------------------------------------------------------------------ -// CScreenSaverInfo:: -// ------------------------------------------------------------------------------------------------ -const TDesC8& CScreenSaverInfo::FileName() - { - return *iId; - } - -// ------------------------------------------------------------------------------------------------ -// EOF -// ------------------------------------------------------------------------------------------------