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 |