skins/AknSkins/wpusrc/AknsWallpaperUtils.cpp
branchRCL_3
changeset 106 e4e3998ddda2
parent 58 a2f9480e2280
child 107 9f95a5546443
equal deleted inserted replaced
100:9dbe1b043bea 106:e4e3998ddda2
    28 #include <StringLoader.h>
    28 #include <StringLoader.h>
    29 #include <AknWaitDialog.h>
    29 #include <AknWaitDialog.h>
    30 #include <AknWaitNoteWrapper.h>
    30 #include <AknWaitNoteWrapper.h>
    31 #include <babitflags.h>
    31 #include <babitflags.h>
    32 
    32 
       
    33 // CONSTANTS
       
    34 #if defined(RD_SLIDESHOW_WALLPAPER)
       
    35 // No wallpaper defined.
       
    36 const TInt KAknsWpNone = 0;
       
    37 // Image type wallpaper defined.
       
    38 const TInt KAknsWpImage = 1;
       
    39 #endif //RD_SLIDESHOW_WALLPAPER
       
    40 
    33 
    41 
    34 _LIT( KAknsSkinSrvSvgFileExt, ".svg" );
    42 _LIT( KAknsSkinSrvSvgFileExt, ".svg" );
    35 
    43 
    36 
    44 
    37 // Background process class.
    45 // Background process class.
    38 class CAknsWPUTask : public CBase, public MAknBackgroundProcess
    46 class CAknsWPUTask : public CBase, public MAknBackgroundProcess
    39     {
    47     {
    40     public: // Construction
    48     public: // Construction
    41         CAknsWPUTask(RAknsSrvSession* aSkinSrvSession,
    49         CAknsWPUTask(RAknsSrvSession* aSkinSrvSession,
       
    50                      CRepository* aSkinsRepository,
    42                      const TDesC& aFilename)
    51                      const TDesC& aFilename)
    43             : iSkinSrvSession(aSkinSrvSession),
    52             : iSkinSrvSession(aSkinSrvSession),
       
    53             iSkinsRepository(aSkinsRepository),
    44             iWPUErr( KErrNone )
    54             iWPUErr( KErrNone )
    45             {
    55             {
    46             iInternalState.ClearAll();
    56             iInternalState.ClearAll();
    47             iFilename = aFilename;
    57             iFilename = aFilename;
    48             }
    58             }
    71                 iInternalState.Set( EAknsWpuTestDecode );
    81                 iInternalState.Set( EAknsWpuTestDecode );
    72                 }
    82                 }
    73             else if ( iInternalState.IsClear( EAknsWpuSetWallpaper ) )
    83             else if ( iInternalState.IsClear( EAknsWpuSetWallpaper ) )
    74                 {
    84                 {
    75                 iWPUErr = iSkinSrvSession->SetIdleWallpaper(iFilename);
    85                 iWPUErr = iSkinSrvSession->SetIdleWallpaper(iFilename);
       
    86                 if (!iWPUErr)
       
    87                     {
       
    88                     iWPUErr = iSkinsRepository->Set(KPslnIdleBackgroundImagePath, iFilename);
       
    89 #if defined(RD_SLIDESHOW_WALLPAPER)
       
    90                     if (iFilename.Length() > 0)
       
    91                         {
       
    92                         iWPUErr = iSkinsRepository->Set(KPslnWallpaperType, KAknsWpImage );
       
    93                         }
       
    94                     else
       
    95                         {
       
    96                         iWPUErr = iSkinsRepository->Set(KPslnWallpaperType, KAknsWpNone );
       
    97                         }
       
    98 #endif //RD_SLIDESHOW_WALLPAPER
       
    99                     }
    76                 iInternalState.Set( EAknsWpuSetWallpaper );
   100                 iInternalState.Set( EAknsWpuSetWallpaper );
    77                 }
   101                 }
    78             }
   102             }
    79         void DialogDismissedL(TInt aButtonId )
   103         void DialogDismissedL(TInt aButtonId )
    80             {
   104             {
   122         // Filename for wallpaper.
   146         // Filename for wallpaper.
   123         TFileName iFilename;
   147         TFileName iFilename;
   124 
   148 
   125         // Skin server session.
   149         // Skin server session.
   126         RAknsSrvSession* iSkinSrvSession;
   150         RAknsSrvSession* iSkinSrvSession;
       
   151 
       
   152         // Repository where to store wallpaper settings.
       
   153         CRepository* iSkinsRepository;
   127 
   154 
   128     public: // Public data
   155     public: // Public data
   129 
   156 
   130         // Error code, if any.
   157         // Error code, if any.
   131         TInt iWPUErr;
   158         TInt iWPUErr;
   268 
   295 
   269         
   296         
   270     RAknsSrvSession skinsrv;
   297     RAknsSrvSession skinsrv;
   271     User::LeaveIfError(skinsrv.Connect());
   298     User::LeaveIfError(skinsrv.Connect());
   272     CleanupClosePushL(skinsrv);
   299     CleanupClosePushL(skinsrv);
   273     
   300     CRepository* skinsrep = CRepository::NewL(KCRUidPersonalisation);
       
   301     CleanupStack::PushL(skinsrep);
   274     if (aFilename.Length()>0 && IsDRMProtectedL(aFilename))
   302     if (aFilename.Length()>0 && IsDRMProtectedL(aFilename))
   275         {
   303         {
   276         if (!QueryAndSetAutomatedL(aFilename, aCoeEnv))
   304         if (!QueryAndSetAutomatedL(aFilename, aCoeEnv))
   277             {
   305             {
       
   306             CleanupStack::PopAndDestroy(2);
   278             User::Leave(KErrCancel);
   307             User::Leave(KErrCancel);
   279             }
   308             }
   280         }
   309         }
   281     if (aCoeEnv && (aWaitNoteTextResourceID && aWaitNoteResourceID))
   310     if (aCoeEnv && (aWaitNoteTextResourceID && aWaitNoteResourceID))
   282         {
   311         {
   283         HBufC* noteText = StringLoader::LoadLC( aWaitNoteTextResourceID);
   312         HBufC* noteText = StringLoader::LoadLC( aWaitNoteTextResourceID);
   284         CAknsWPUTask* wputask = new (ELeave) CAknsWPUTask(&skinsrv, aFilename);
   313         CAknsWPUTask* wputask = new (ELeave) CAknsWPUTask(&skinsrv, skinsrep, aFilename);
   285         CleanupStack::PushL(wputask);
   314         CleanupStack::PushL(wputask);
   286         CAknWaitNoteWrapper* wrapper = CAknWaitNoteWrapper::NewL();
   315         CAknWaitNoteWrapper* wrapper = CAknWaitNoteWrapper::NewL();
   287         CleanupDeletePushL(wrapper);
   316         CleanupDeletePushL(wrapper);
   288 
   317 
   289         TRAPD( executeErr,
   318         TRAPD( executeErr,
   297         }
   326         }
   298     else
   327     else
   299         {
   328         {
   300         // no "opening" note as no coeenv is given
   329         // no "opening" note as no coeenv is given
   301         User::LeaveIfError(skinsrv.SetIdleWallpaper(aFilename));
   330         User::LeaveIfError(skinsrv.SetIdleWallpaper(aFilename));
   302         }
   331         User::LeaveIfError(skinsrep->Set(KPslnIdleBackgroundImagePath, aFilename));
   303 
   332 #if defined(RD_SLIDESHOW_WALLPAPER)
   304     CleanupStack::PopAndDestroy(); // skinsrv
   333         if (aFilename.Length() > 0)
       
   334             {
       
   335             User::LeaveIfError(skinsrep->Set(KPslnWallpaperType, KAknsWpImage));
       
   336             }
       
   337         else
       
   338             {
       
   339             User::LeaveIfError(skinsrep->Set(KPslnWallpaperType, KAknsWpNone));
       
   340             }
       
   341 #endif // RD_SLIDESHOW_WALLPAPER
       
   342         }
       
   343 
       
   344     CleanupStack::PopAndDestroy(2); // skinsrv, skinsrep
   305     }
   345     }
   306 
   346 
   307 // -----------------------------------------------------------------------------
   347 // -----------------------------------------------------------------------------
   308 // Public API for setting image as wallpaper.
   348 // Public API for setting image as wallpaper.
   309 // -----------------------------------------------------------------------------
   349 // -----------------------------------------------------------------------------
   342     ValidateEntriesL( aSelectedFiles , aCoeEnv );
   382     ValidateEntriesL( aSelectedFiles , aCoeEnv );
   343 
   383 
   344     RAknsSrvSession skinsrv;
   384     RAknsSrvSession skinsrv;
   345     User::LeaveIfError(skinsrv.Connect());
   385     User::LeaveIfError(skinsrv.Connect());
   346     CleanupClosePushL(skinsrv);
   386     CleanupClosePushL(skinsrv);
       
   387     CRepository* skinsrep = CRepository::NewL(KCRUidPersonalisation);
       
   388     CleanupStack::PushL(skinsrep);
   347     User::LeaveIfError(skinsrv.SetSlideSetWallpaper(aSelectedFiles));
   389     User::LeaveIfError(skinsrv.SetSlideSetWallpaper(aSelectedFiles));
   348     CleanupStack::PopAndDestroy();
   390     if (count != 1)
       
   391         {
       
   392         User::LeaveIfError(skinsrep->Set(KPslnWallpaperType, 2));
       
   393         }
       
   394     CleanupStack::PopAndDestroy(2); // skinsrep, skinsrv
   349 
   395 
   350     }
   396     }
   351 #endif //RD_SLIDESHOW_WALLPAPER
   397 #endif //RD_SLIDESHOW_WALLPAPER
   352 
   398 
   353 // -----------------------------------------------------------------------------
   399 // -----------------------------------------------------------------------------
   354 // Public API for setting slide set wallpaper.
   400 // Public API for setting slide set wallpaper.
   355 // -----------------------------------------------------------------------------
   401 // -----------------------------------------------------------------------------
   356 //
   402 //
   357 EXPORT_C TInt AknsWallpaperUtils::SetSlidesetWallpaper(CDesCArray& /*aSelectedFiles*/, CCoeEnv* /*aCoeEnv*/, TInt /*aWaitNoteTextResourceID*/, TInt /*aWaitNoteResourceID*/)
   403 EXPORT_C TInt AknsWallpaperUtils::SetSlidesetWallpaper(CDesCArray& aSelectedFiles, CCoeEnv* aCoeEnv, TInt aWaitNoteTextResourceID, TInt aWaitNoteResourceID)
   358     {
   404     {
   359     //deprecated for 9.2 page specific wallpaper
   405 #if !defined(RD_SLIDESHOW_WALLPAPER)
   360     return KErrNotSupported;
   406     return KErrNotSupported;
       
   407 #else
       
   408     TInt err(KErrNone);
       
   409     TRAP(err, DoSetSlidesetWallpaperL(aSelectedFiles, aCoeEnv, aWaitNoteTextResourceID, aWaitNoteResourceID));
       
   410     return err;
       
   411 #endif //RD_SLIDESHOW_WALLPAPER
   361     }
   412     }
   362     
   413     
   363 // End of file
   414 // End of file
   364 
   415