skins/AknSkins/wpusrc/AknsWallpaperUtils.cpp
branchRCL_3
changeset 106 e4e3998ddda2
parent 58 a2f9480e2280
child 107 9f95a5546443
--- 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 <AknWaitNoteWrapper.h>
 #include <babitflags.h>
 
+// 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