--- a/customization/ThemesAdapter/src/ThemesList.cpp Tue Feb 02 00:03:17 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,803 +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 Themes List
-*
-*/
-
-
-#include "ThemesList.h"
-
-#include <badesca.h>
-#include <implementationproxy.h> // For TImplementationProxy definition
-#include <e32def.h>
-#include <centralrepository.h>
-#include <AknSkinsInternalCRKeys.h>
-#include <sisregistrysession.h>
-#include <sisregistrypackage.h>
-
-#include "FileCoderB64.h"
-#include "aminstalloptions.h"
-#include "debug.h"
-
-#ifdef RD_MULTIPLE_DRIVE
-#include <driveinfo.h>
-#endif //RD_MULTIPLE_DRIVEs
-
-_LIT8( KSlash, "/" );
-_LIT8(KCol,":");
-const TInt KPostTimeOut = 10000000; // 10 seconds
-
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList* CThemesList::NewL( )
-// ------------------------------------------------------------------------------------------------
-CThemesList* CThemesList::NewL( ) //sf-MSmlDmCallback* aDmCallback )
- {
- RDEBUG("CThemesList::NewL(): begin");
-
- CThemesList* self = NewLC();
- CleanupStack::Pop();
- return self;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList* CThemesList::NewLC( )
-// ------------------------------------------------------------------------------------------------
-CThemesList* CThemesList::NewLC( ) //sf-MSmlDmCallback* aDmCallback )
- {
- CThemesList* self = new( ELeave ) CThemesList();
- CleanupStack::PushL( self );
- self->ConstructL( );
- return self;
- }
-
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::CThemesList()
-// ------------------------------------------------------------------------------------------------
-CThemesList::CThemesList( ) //sf-MSmlDmCallback* aDmCallback )
-//sf- : iCallBack( aDmCallback )
- : iDirty( ETrue )
- , iAknsSrv( )
- , iSkins( 0 )
- , iInstallOptions()
- {
- GetDefaultInstallOptions( iInstallOptions );
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::ConstructL()
-// ------------------------------------------------------------------------------------------------
-void CThemesList::ConstructL( )
- {
- User::LeaveIfError( iAknsSrv.Connect() );
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::~CThemesList()
-// ------------------------------------------------------------------------------------------------
-CThemesList::~CThemesList()
- {
- if (iSkins)
- {
- iSkins->ResetAndDestroy();
- delete iSkins;
- }
- iAknsSrv.Close();
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::GetInstalledPIDListL()
-// ------------------------------------------------------------------------------------------------
-
-MSmlDmAdapter::TError CThemesList::GetInstalledPIDListL( const CArrayFix<TSmlDmMappingInfo>& aPreviousList, CDesC8ArrayFlat& themes, CDesC8Array& aNewThemes )
- {
- TInt i = 0;
- TInt pos = 0;
-
- CheckUpdatesL();
-
- CDesC8ArrayFlat* luids = new (ELeave) CDesC8ArrayFlat( 32 );
- CleanupStack::PushL( luids );
-
- // Create list of existing themes
- for (i = 0 ; i < aPreviousList.Count() ; i++)
- {
- themes.AppendL( aPreviousList[i].iURISeg );
- luids->AppendL( aPreviousList[i].iURISegLUID );
- }
-
- // Find and add missing themes
-
- for (i = 0 ; i < iSkins->Count() ; i++)
- {
- TAknsPkgIDBuf pidBuf;
- TBuf8<KSmlMaxURISegLen> name;
-
- TAknsPkgID pid = (*iSkins)[i]->PID();
- pid.CopyToDes( pidBuf );
- name.Copy( pidBuf );
-
- if (luids->Find( name, pos ) != 0)
- {
- // not found
- // Check that current "name" is not in use
- if (themes.Find( name, pos ) != 0)
- {
- // not found
- // add it to both current and new themes
- // themes->AppendL( name );
- aNewThemes.AppendL( name );
- }
- }
- }
-
- // Fill result
-#if 0
- for (i = 0 ; i < themes->Count() ; i++)
- {
- if (i > 0)
- {
- aList.InsertL( aList.Size(), KSlash );
- }
- aList.InsertL( aList.Size(), (*themes)[i] );
- }
-
-#endif
- // Cleanup
- CleanupStack::PopAndDestroy( luids );
- //CleanupStack::PopAndDestroy( themes );
-
- return MSmlDmAdapter::EOk;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::GetThemeIdL()
-// ------------------------------------------------------------------------------------------------
-MSmlDmAdapter::TError CThemesList::GetThemeIdL( const TDesC8& aPID, CBufBase& aResult )
- {
- MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound;
-
- CAknsSrvSkinInformationPkg* theme = FindThemeL( aPID );
- if (theme != 0)
- {
- TAknsPkgIDBuf pid;
- theme->PID().CopyToDes( pid );
- TBuf8<KAknsPkgIDDesSize> pid8;
- pid8.Copy( pid );
- aResult.InsertL( aResult.Size(), pid8 );
- ret = MSmlDmAdapter::EOk;
- }
-
- return ret;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::GetThemeNameL()
-// ------------------------------------------------------------------------------------------------
-MSmlDmAdapter::TError CThemesList::GetThemeNameL( const TDesC8& aPID, CBufBase& aResult )
- {
- MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound;
-
- CAknsSrvSkinInformationPkg* theme = FindThemeL( aPID );
- if (theme != 0)
- {
- TDesC& name = theme->Name();
- HBufC8* buf = HBufC8::NewLC( name.Length() );
- buf->Des().Copy( name );
- aResult.InsertL( aResult.Size(), *buf );
- CleanupStack::PopAndDestroy( buf );
- ret = MSmlDmAdapter::EOk;
- }
-
- return ret;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::GetThemeVersionL()
-// ------------------------------------------------------------------------------------------------
-MSmlDmAdapter::TError CThemesList::GetThemeVersionL( const TDesC8& aPID, CBufBase& /*aResult*/ )
- {
- MSmlDmAdapter::TError ret = MSmlDmAdapter::ENotFound;
-
- CAknsSrvSkinInformationPkg* theme = FindThemeL( aPID );
- if (theme != 0)
- {
- // Empty version, not supported (yet?)
- ret = MSmlDmAdapter::EOk;
- }
-
- return ret;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::GetActiveThemeL()
-// ------------------------------------------------------------------------------------------------
-MSmlDmAdapter::TError CThemesList::GetActiveThemeL( CBufBase& aResult )
- {
- MSmlDmAdapter::TError ret = MSmlDmAdapter::EOk;
- TInt errCode = KErrNone;
- TAknsPkgID pid = KAknsNullPkgID;
- TAknsPkgIDBuf buf;
-
- CRepository* skinsRepository = CRepository::NewLC( KCRUidPersonalisation );
-
- errCode = skinsRepository->Get( KPslnActiveSkinUid, buf );
- if( errCode == KErrNone )
- {
- TRAP( errCode, pid.SetFromDesL( buf ) );
- }
- if( errCode != KErrNone )
- {
-//sf- pid.Set( KAknsPIDDefaultSystemSkin );
-//sf- changes to KAknsPIDS60DefaltSystemSkin and
-//sf- to KAknsPIDProductDefaultSystemSkin
-//sf- and the product default should be used (because variation might be done).
-//sf- Starting from S60 3.1 wk50 or wk52
-//sf- But: CenRep key should always hold a value so this code is not necessary.
- }
-
- pid.CopyToDes( buf );
-
- CleanupStack::PopAndDestroy( skinsRepository );
- skinsRepository = 0;
-
- TBuf8<KAknsPkgIDDesSize> buf8;
- buf8.Copy( buf );
-
- aResult.InsertL( aResult.Size(), buf8 );
-
- return ret;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::SetActiveThemeL()
-// ------------------------------------------------------------------------------------------------
-MSmlDmAdapter::TError CThemesList::SetActiveThemeL( const TDesC8& aPID )
- {
- MSmlDmAdapter::TError ret = MSmlDmAdapter::EOk;
- TInt errCode = KErrNone;
-
- CAknsSrvSkinInformationPkg* theme = FindThemeL( aPID );
- if (theme == 0)
- {
- errCode = KErrNotFound;
- }
- if (errCode == KErrNone)
- {
- errCode = iAknsSrv.SetAllDefinitionSets( theme->PID() );
- }
- if (errCode == KErrNone)
- {
- // Save settings to repository
- TAknsPkgIDBuf pidBuf;
- theme->PID().CopyToDes( pidBuf );
-
- TAknSkinSrvSkinPackageLocation location =
- LocationFromPath( theme->IniFileDirectory() );
-
- CRepository* skinsRepository = CRepository::NewLC( KCRUidPersonalisation );
-
- errCode = skinsRepository->Set( KPslnActiveSkinUid, pidBuf );
- errCode = skinsRepository->Set( KPslnActiveSkinLocation, location );
-
- CleanupStack::PopAndDestroy( skinsRepository );
- }
-
- if (errCode != KErrNone)
- {
- ret = MSmlDmAdapter::EError;
- }
-
- return ret;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::SetInstallOptionsL()
-// ------------------------------------------------------------------------------------------------
-MSmlDmAdapter::TError CThemesList::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;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::InstallThemeL()
-// ------------------------------------------------------------------------------------------------
-MSmlDmAdapter::TError CThemesList::InstallThemeL( const TDesC& aFileName, TDes8& aSisPkgUid, TDes8& aThemePkgId )
- {
- MSmlDmAdapter::TError ret = MSmlDmAdapter::EOk;
- TInt errCode = KErrNone;
-
- CDesC8Array* pkgUidsOrg = InstalledPackagesL( );
- CleanupStack::PushL( pkgUidsOrg );
- CDesC8Array* thmPidsOrg = InstalledThemesL( );
- CleanupStack::PushL( thmPidsOrg );
-
- // 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 );
-
- // Retrieve new list of installed packages and themes
- CDesC8Array* pkgUidsNew = InstalledPackagesL( );
- CleanupStack::PushL( pkgUidsNew );
- CDesC8Array* thmPidsNew = InstalledThemesL( );
- CleanupStack::PushL( thmPidsNew );
-
- // Try to find sis package uid and theme package id
- CDesC8Array* pkgUidsDif = FindNewItemsL( *pkgUidsOrg, *pkgUidsNew );
- CleanupStack::PushL( pkgUidsDif );
-
- CDesC8Array* thmPidsDif = FindNewItemsL( *thmPidsOrg, *thmPidsNew );
- CleanupStack::PushL( thmPidsDif );
-
- if (pkgUidsDif->Count() == 1)
- {
- aSisPkgUid = (*pkgUidsDif)[0];
- }
- if (thmPidsDif->Count() > 0)
- {
- aThemePkgId = (*thmPidsDif)[0];
- }
- RDEBUG_2( " CThemesList::InstallThemeL : SISPKGUID %X", &(aSisPkgUid) );
- RDEBUG_2( " CThemesList::InstallThemeL : THEMEPKGUID %X", &(aThemePkgId) );
-
- // Cleanup
- CleanupStack::PopAndDestroy( thmPidsDif );
- CleanupStack::PopAndDestroy( pkgUidsDif );
- CleanupStack::PopAndDestroy( thmPidsNew );
- CleanupStack::PopAndDestroy( pkgUidsNew );
- CleanupStack::PopAndDestroy( thmPidsOrg );
- CleanupStack::PopAndDestroy( pkgUidsOrg );
-
- // Convert error code
- if (errCode != KErrNone)
- {
- ret = MSmlDmAdapter::EError;
- }
-
- return ret;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::DeleteThemeL()
-// ------------------------------------------------------------------------------------------------
-MSmlDmAdapter::TError CThemesList::DeleteThemeL( const TDesC8& aThemeId, const TUid& aPkgUid,HBufC8* aLuid)
- {
- MSmlDmAdapter::TError ret = MSmlDmAdapter::EOk;
- TInt errCode = KErrNone;
-
- CAknsSrvSkinInformationPkg* theme = FindThemeL( aThemeId );
- if (theme != NULL)
- {
- // Save settings to repository
- TAknsPkgIDBuf pidBuf;
- TAknsPkgID themepid = theme->PID();
- themepid.CopyToDes(pidBuf);
-
- CRepository* skinsRepository = CRepository::NewLC(
- KCRUidPersonalisation);
-
- TAknsPkgIDBuf repBuf;
- errCode = skinsRepository->Get(KPslnActiveSkinUid, repBuf);
- if (errCode == KErrNone)
- {
- TAknsPkgID activepid = KAknsNullPkgID;
- activepid.SetFromDesL(repBuf);
-
- //Comparing the UIds of the active theme and the theme to be deleted
- if (themepid.Uid() == activepid.Uid())
- {
- // deleted theme is active theme, deactive it first
- TInt count = iSkins->Count();
- if (count > 1)
- {
- pidBuf.Zero();
- CAknsSrvSkinInformationPkg* defaultTheme = (*iSkins)[0];
- defaultTheme->PID().CopyToDes(pidBuf);
- TBuf8<KAknsPkgIDDesSize> pidBuf8;
- pidBuf8.Copy(pidBuf);
- errCode = SetActiveThemeL(pidBuf8);
-
- if (errCode == KErrNone)
- {
- 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);
- }
- }
- else
- {
- errCode = KErrGeneral;
- }
- }
-
- CleanupStack::PopAndDestroy(skinsRepository);
- }
-
- }
- else
- {
- errCode = KErrNotFound;
- }
-
-
- if( errCode == KErrNone )
- {
- iDirty = ETrue;
-
- // Uninstall silent
- SwiUI::RSWInstLauncher installer;
- User::LeaveIfError( installer.Connect() );
- CleanupClosePushL( installer );
-
- //Silent uninstall not working because of getting wrong package name
- //So we used SilentCustomUninstall which uses index and pkgUid to get correct package name
-
- TInt idx( KErrNotFound );
- SwiUI::TOpUninstallIndexParam params;
- params.iUid = aPkgUid;
- TPtrC8 ptr1 = aLuid->Des();
- idx= ptr1.Find(KCol);
- if(idx != KErrNotFound)
- {
- TPtrC8 ptr = ptr1.Right((ptr1.Length()-idx)-1);
- TLex8 lex(ptr);
- lex.Val(params.iIndex);
- }
- else
- {
- ret = MSmlDmAdapter::ENotFound;
- }
-
- SwiUI::TOpUninstallIndexParamPckg pckg( params );
- SwiUI::TOperation operation( SwiUI::EOperationUninstallIndex );
-
- SwiUI::TUninstallOptions uninstallOptions;
- SwiUI::TUninstallOptionsPckg optPckg( uninstallOptions );
-
- errCode = installer.SilentCustomUninstall( operation, optPckg, pckg,SwiUI::KSisxMimeType() );
- RDEBUG_2("CThemesList::DeleteThemeL Uninstall silent : errCode %X",errCode );
-
- CleanupStack::PopAndDestroy( &installer );
- }
-
- if (errCode == KErrNotFound)
- {
- ret = MSmlDmAdapter::ENotFound;
- }
- else if (errCode != KErrNone)
- {
- ret = MSmlDmAdapter::EError;
- }
-
- return ret;
- }
-
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// Internal methods
-//
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::CheckUpdatesL()
-// ------------------------------------------------------------------------------------------------
-void CThemesList::CheckUpdatesL()
- {
- if (iDirty)
- {
- LoadSkinsL();
- iDirty = EFalse;
- }
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::LoadSkinsL()
-// ------------------------------------------------------------------------------------------------
-void CThemesList::LoadSkinsL()
- {
- // Cleanup old list
- if (iSkins)
- {
- iSkins->ResetAndDestroy();
- delete iSkins;
- iSkins = 0;
- }
-
- // Drives z and c case EAknsSrvPhone:
- // drive e case EAknsSrvMMC:
- // all drives case EAknsSrvAll:
- iSkins = iAknsSrv.EnumerateSkinPackagesL( EAknsSrvAll );
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::
-// ------------------------------------------------------------------------------------------------
-CAknsSrvSkinInformationPkg* CThemesList::FindThemeL( const TDesC8& aPID )
- {
- CheckUpdatesL();
-
- CAknsSrvSkinInformationPkg* theme = 0;
- TInt i = 0;
- TAknsPkgID pid = KAknsNullPkgID;
-
- TAknsPkgIDBuf pidBuf;
- pidBuf.Copy( aPID );
-
- TRAPD( err, pid.SetFromDesL( pidBuf ) );
-
- if (err == KErrNone)
- {
- for (i = 0 ; i < iSkins->Count() ; i++)
- {
- if ((*iSkins)[i]->PID() == pid)
- {
- theme = (*iSkins)[i];
- break;
- }
- }
- }
-
- return theme;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::GetDefaultInstallOptions()
-// ------------------------------------------------------------------------------------------------
-void CThemesList::GetDefaultInstallOptions( SwiUI::TInstallOptions &aOptions )
- {
- SwiUI::TInstallOptions defaultOptions;
-
- // Return options
- aOptions = defaultOptions;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::
-// ------------------------------------------------------------------------------------------------
-TAknSkinSrvSkinPackageLocation CThemesList::LocationFromPath( const TDesC& aPath )
- {
-#ifndef RD_MULTIPLE_DRIVE
- TBuf<1> driveLetterBuf;
- driveLetterBuf.CopyUC( aPath.Left(1) );
- if( driveLetterBuf.Compare( _L("E") ) == 0 )
- {
- return EAknsSrvMMC;
- }
- return EAknsSrvPhone;
-#else
- RFs fs;
- User::LeaveIfError(fs.Connect());
- CleanupClosePushL(fs);
-
- TInt drive = EDriveC;
- TUint driveStatus = 0;
- TInt err = RFs::CharToDrive( aPath[0], drive );
- err = DriveInfo::GetDriveStatus( fs, drive, driveStatus );
- CleanupStack::PopAndDestroy(); // fs
- if ( driveStatus & DriveInfo::EDriveExternallyMountable )
- {
- RDEBUG("CThemesList::LocationFromPath(): from MMC");
- return EAknsSrvMMC;
- }
-
-
- RDEBUG("CThemesList::LocationFromPath(): from Phone");
- return EAknsSrvPhone;
-
-#endif //RD_MULTIPLE_DRIVE
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::
-// ------------------------------------------------------------------------------------------------
-CDesC8Array* CThemesList::InstalledPackagesL( )
- {
- CDesC8ArrayFlat* packages = new (ELeave) CDesC8ArrayFlat( 32 );
- CleanupStack::PushL( packages );
-
- RArray< TUid > uids;
- CleanupClosePushL( uids );
-
- RPointerArray< Swi::CSisRegistryPackage > pkgs;
- CleanupClosePushL( pkgs );
-
- Swi::RSisRegistrySession reg;
- User::LeaveIfError( reg.Connect() );
- CleanupClosePushL( reg );
-
- reg.InstalledUidsL( uids );
- reg.InstalledPackagesL( pkgs );
-
- TInt i = 0;
- TInt count = uids.Count();
- for (i = 0 ; i < count ; i++)
- {
- TBuf8<KMaxUidName> uidBuf8;
- uidBuf8.Copy( uids[i].Name() );
-
- RDEBUG8_3( "uid[%d]=%S", i, &uidBuf8 );
- }
-
- count = pkgs.Count();
- for (i = 0 ; i < count ; i++)
- {
- TPtrC uidName = pkgs[i]->Uid().Name();
- TPtrC name = pkgs[i]->Name();
- TPtrC vendor = pkgs[i]->Vendor();
-
- RDEBUG_5( "pkg[%d]: uid=%S, idx=%d, name=%S", i,
- &uidName,
- pkgs[i]->Index(),
- &name );
-
-
- TBuf<KMaxUidName+20> uidBuf;
- uidBuf = pkgs[i]->Uid().Name();
- uidBuf.Append( _L(":") );
- uidBuf.AppendNum( pkgs[i]->Index() );
-
- TBuf8<KMaxUidName+20> uidBuf8;
- uidBuf8.Copy( uidBuf );
-
- packages->AppendL( uidBuf8 );
- }
-
- CleanupStack::PopAndDestroy( ® );
-
- pkgs.ResetAndDestroy();
- CleanupStack::PopAndDestroy( &pkgs );
- CleanupStack::PopAndDestroy( &uids );
-
- CleanupStack::Pop( packages );
- return packages;
- }
-
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::
-// ------------------------------------------------------------------------------------------------
-CDesC8Array* CThemesList::InstalledThemesL( )
- {
- LoadSkinsL();
-
- CDesC8ArrayFlat* themes = new (ELeave) CDesC8ArrayFlat( 32 );
- CleanupStack::PushL( themes );
-
- TInt i = 0;
- TInt count = iSkins->Count();
-
- for (i = 0 ; i < count ; i++)
- {
- TAknsPkgIDBuf pidBuf;
- TBuf8<KAknsPkgIDDesSize> pidBuf8;
-
- TAknsPkgID pid = (*iSkins)[i]->PID();
- pid.CopyToDes( pidBuf );
- pidBuf8.Copy( pidBuf );
-
- themes->AppendL( pidBuf8 );
-
- TPtrC directory = (*iSkins)[i]->Directory();
- TPtrC iniFileDirectory = (*iSkins)[i]->IniFileDirectory();
- TPtrC name = (*iSkins)[i]->Name();
- TPtrC idleStateWallPaperImageFileName = (*iSkins)[i]->IdleStateWallPaperImageFileName();
- TPtrC pinboarWallPaperImageFileName = (*iSkins)[i]->PinboarWallPaperImageFileName();
- TInt idleStateWallPaperImageIndex = (*iSkins)[i]->IdleStateWallPaperImageIndex();
- TInt pinboardWallPaperImageIndex = (*iSkins)[i]->PinboardWallPaperImageIndex();
- TBool isDeletable = (*iSkins)[i]->IsDeletable();
- TBool isCopyable = (*iSkins)[i]->IsCopyable();
- TAknsPkgID colorSchemePID = (*iSkins)[i]->ColorSchemePID();
- TBool hasIconset = (*iSkins)[i]->HasIconset();
- TAknsSkinSrvSkinProtectionType protectionType = (*iSkins)[i]->ProtectionType();
- TBool isCorrupted = (*iSkins)[i]->IsCorrupted();
- TDesC& fullName = (*iSkins)[i]->FullName();
-
-
- TAknsPkgIDBuf colorSchemeBuf;
- colorSchemePID.CopyToDes( colorSchemeBuf );
-
- RDEBUG_4( "skin[%d]: pid=%S, name=%S", i, &pidBuf, &name );
- RDEBUG_2( " directory=%S", &directory );
- RDEBUG_2( " iniFileDirectory=%S", &iniFileDirectory );
- RDEBUG_2( " name=%S", &name );
- RDEBUG_2( " idleStateWallPaperImageFileName=%S", &idleStateWallPaperImageFileName );
- RDEBUG_2( " pinboarWallPaperImageFileName=%S", &pinboarWallPaperImageFileName );
- RDEBUG_2( " idleStateWallPaperImageIndex=%d", idleStateWallPaperImageIndex );
- RDEBUG_2( " pinboardWallPaperImageIndex=%d", pinboardWallPaperImageIndex );
- RDEBUG_2( " isDeletable=%d", isDeletable );
- RDEBUG_2( " isCopyable=%d", isCopyable );
- RDEBUG_2( " colorSchemePID=%S", &colorSchemeBuf );
- RDEBUG_2( " hasIconset=%d", hasIconset );
- RDEBUG_2( " protectionType=%d", protectionType );
- RDEBUG_2( " isCorrupted=%d", isCorrupted );
- RDEBUG_2( " fullName=%S", &fullName );
- }
-
- themes->Sort();
-
- CleanupStack::Pop( themes );
- return themes;
- }
-
-// ------------------------------------------------------------------------------------------------
-// CThemesList::
-// ------------------------------------------------------------------------------------------------
-CDesC8Array* CThemesList::FindNewItemsL( const CDesC8Array& aItemsOrg, const CDesC8Array& aItemsNew )
- {
- CDesC8Array* result = new (ELeave) CDesC8ArrayFlat( 16 );
- CleanupStack::PushL( result );
-
- TInt i = 0;
- TInt count = aItemsNew.Count();
- for (i = 0 ; i < count ; i++)
- {
- result->AppendL( aItemsNew[ i ] );
- }
-
- result->Sort();
-
- count = aItemsOrg.Count();
- for (i = 0 ; i < count ; i++)
- {
- TInt idx = -1;
- if (result->FindIsq( aItemsOrg[ i ], idx, ECmpNormal ) == 0)
- {
- result->Delete( idx );
- }
- }
-
- result->Compress( );
-
- CleanupStack::Pop( result );
- return result;
- }
-
-// ------------------------------------------------------------------------------------------------
-// EOF
-// ------------------------------------------------------------------------------------------------