diff -r 9dbe1b043bea -r e4e3998ddda2 skins/AknSkins/wpusrc/AknsWallpaperUtils.cpp --- a/skins/AknSkins/wpusrc/AknsWallpaperUtils.cpp Thu Aug 19 10:53:51 2010 +0300 +++ b/skins/AknSkins/wpusrc/AknsWallpaperUtils.cpp Tue Aug 31 16:13:36 2010 +0300 @@ -30,6 +30,14 @@ #include #include +// CONSTANTS +#if defined(RD_SLIDESHOW_WALLPAPER) +// No wallpaper defined. +const TInt KAknsWpNone = 0; +// Image type wallpaper defined. +const TInt KAknsWpImage = 1; +#endif //RD_SLIDESHOW_WALLPAPER + _LIT( KAknsSkinSrvSvgFileExt, ".svg" ); @@ -39,8 +47,10 @@ { public: // Construction CAknsWPUTask(RAknsSrvSession* aSkinSrvSession, + CRepository* aSkinsRepository, const TDesC& aFilename) : iSkinSrvSession(aSkinSrvSession), + iSkinsRepository(aSkinsRepository), iWPUErr( KErrNone ) { iInternalState.ClearAll(); @@ -73,6 +83,20 @@ else if ( iInternalState.IsClear( EAknsWpuSetWallpaper ) ) { iWPUErr = iSkinSrvSession->SetIdleWallpaper(iFilename); + if (!iWPUErr) + { + iWPUErr = iSkinsRepository->Set(KPslnIdleBackgroundImagePath, iFilename); +#if defined(RD_SLIDESHOW_WALLPAPER) + if (iFilename.Length() > 0) + { + iWPUErr = iSkinsRepository->Set(KPslnWallpaperType, KAknsWpImage ); + } + else + { + iWPUErr = iSkinsRepository->Set(KPslnWallpaperType, KAknsWpNone ); + } +#endif //RD_SLIDESHOW_WALLPAPER + } iInternalState.Set( EAknsWpuSetWallpaper ); } } @@ -125,6 +149,9 @@ // Skin server session. RAknsSrvSession* iSkinSrvSession; + // Repository where to store wallpaper settings. + CRepository* iSkinsRepository; + public: // Public data // Error code, if any. @@ -270,18 +297,20 @@ RAknsSrvSession skinsrv; User::LeaveIfError(skinsrv.Connect()); CleanupClosePushL(skinsrv); - + CRepository* skinsrep = CRepository::NewL(KCRUidPersonalisation); + CleanupStack::PushL(skinsrep); if (aFilename.Length()>0 && IsDRMProtectedL(aFilename)) { if (!QueryAndSetAutomatedL(aFilename, aCoeEnv)) { + CleanupStack::PopAndDestroy(2); User::Leave(KErrCancel); } } if (aCoeEnv && (aWaitNoteTextResourceID && aWaitNoteResourceID)) { HBufC* noteText = StringLoader::LoadLC( aWaitNoteTextResourceID); - CAknsWPUTask* wputask = new (ELeave) CAknsWPUTask(&skinsrv, aFilename); + CAknsWPUTask* wputask = new (ELeave) CAknsWPUTask(&skinsrv, skinsrep, aFilename); CleanupStack::PushL(wputask); CAknWaitNoteWrapper* wrapper = CAknWaitNoteWrapper::NewL(); CleanupDeletePushL(wrapper); @@ -299,9 +328,20 @@ { // no "opening" note as no coeenv is given User::LeaveIfError(skinsrv.SetIdleWallpaper(aFilename)); + User::LeaveIfError(skinsrep->Set(KPslnIdleBackgroundImagePath, aFilename)); +#if defined(RD_SLIDESHOW_WALLPAPER) + if (aFilename.Length() > 0) + { + User::LeaveIfError(skinsrep->Set(KPslnWallpaperType, KAknsWpImage)); + } + else + { + User::LeaveIfError(skinsrep->Set(KPslnWallpaperType, KAknsWpNone)); + } +#endif // RD_SLIDESHOW_WALLPAPER } - CleanupStack::PopAndDestroy(); // skinsrv + CleanupStack::PopAndDestroy(2); // skinsrv, skinsrep } // ----------------------------------------------------------------------------- @@ -344,8 +384,14 @@ RAknsSrvSession skinsrv; User::LeaveIfError(skinsrv.Connect()); CleanupClosePushL(skinsrv); + CRepository* skinsrep = CRepository::NewL(KCRUidPersonalisation); + CleanupStack::PushL(skinsrep); User::LeaveIfError(skinsrv.SetSlideSetWallpaper(aSelectedFiles)); - CleanupStack::PopAndDestroy(); + if (count != 1) + { + User::LeaveIfError(skinsrep->Set(KPslnWallpaperType, 2)); + } + CleanupStack::PopAndDestroy(2); // skinsrep, skinsrv } #endif //RD_SLIDESHOW_WALLPAPER @@ -354,10 +400,15 @@ // Public API for setting slide set wallpaper. // ----------------------------------------------------------------------------- // -EXPORT_C TInt AknsWallpaperUtils::SetSlidesetWallpaper(CDesCArray& /*aSelectedFiles*/, CCoeEnv* /*aCoeEnv*/, TInt /*aWaitNoteTextResourceID*/, TInt /*aWaitNoteResourceID*/) +EXPORT_C TInt AknsWallpaperUtils::SetSlidesetWallpaper(CDesCArray& aSelectedFiles, CCoeEnv* aCoeEnv, TInt aWaitNoteTextResourceID, TInt aWaitNoteResourceID) { - //deprecated for 9.2 page specific wallpaper +#if !defined(RD_SLIDESHOW_WALLPAPER) return KErrNotSupported; +#else + TInt err(KErrNone); + TRAP(err, DoSetSlidesetWallpaperL(aSelectedFiles, aCoeEnv, aWaitNoteTextResourceID, aWaitNoteResourceID)); + return err; +#endif //RD_SLIDESHOW_WALLPAPER } // End of file