37 /** |
37 /** |
38 * Destructor. |
38 * Destructor. |
39 */ |
39 */ |
40 CAfThumbnailTask::~CAfThumbnailTask() |
40 CAfThumbnailTask::~CAfThumbnailTask() |
41 { |
41 { |
42 delete mService; |
42 delete mBitmap; |
43 } |
43 } |
44 |
44 |
45 // ----------------------------------------------------------------------------- |
45 // ----------------------------------------------------------------------------- |
46 // |
46 // |
47 // ----------------------------------------------------------------------------- |
47 // ----------------------------------------------------------------------------- |
48 // |
48 // |
49 void CAfThumbnailTask::ExecuteLD(MAfTaskStorage& taskStorage, |
49 void CAfThumbnailTask::ExecuteLD(MAfTaskStorage& taskStorage, |
50 const RMessage2& message) |
50 const RMessage2& message) |
51 { |
51 { |
52 CAfThumbnailTask *self = new (ELeave)CAfThumbnailTask(taskStorage, |
52 CAfThumbnailTask *self = new (ELeave)CAfThumbnailTask(taskStorage, message); |
53 message); |
|
54 CleanupStack::PushL(self); |
53 CleanupStack::PushL(self); |
55 self->ConstructL(); |
54 self->ConstructL(); |
56 taskStorage.PushL(self); |
55 taskStorage.PushL(self); |
57 CleanupStack::Pop(self); |
56 CleanupStack::Pop(self); |
|
57 message.Complete(KErrNone); |
58 } |
58 } |
59 |
59 |
60 // ----------------------------------------------------------------------------- |
60 // ----------------------------------------------------------------------------- |
61 /** |
61 /** |
62 * EPOC default constructor for performing 2nd stage construction |
62 * EPOC default constructor for performing 2nd stage construction |
63 */ |
63 */ |
64 void CAfThumbnailTask::ConstructL() |
64 void CAfThumbnailTask::ConstructL() |
65 { |
65 { |
66 TPckgBuf<int> width(0), height(0); |
|
67 RBuf path; |
66 RBuf path; |
68 CleanupClosePushL(path); |
67 CleanupClosePushL(path); |
69 mMsg.ReadL(0, width); |
|
70 mMsg.ReadL(1, height); |
|
71 path.CreateL(mMsg.GetDesLengthL(2)); |
68 path.CreateL(mMsg.GetDesLengthL(2)); |
72 mMsg.ReadL(2, path); |
69 mMsg.ReadL(2, path); |
73 |
70 |
74 CFbsBitmap *bitmap = new (ELeave) CFbsBitmap(); |
71 mBitmap = new (ELeave) CFbsBitmap; |
75 CleanupStack::PushL(bitmap); |
72 User::LeaveIfError(mBitmap->Load(path)); |
76 User::LeaveIfError(bitmap->Load(path)); |
73 |
77 mService = CTsGraphicFileScalingHandler::NewL(*this, |
|
78 *bitmap, |
|
79 TSize(width(), height()), |
|
80 CTsGraphicFileScalingHandler::EKeepAspectRatioByExpanding); |
|
81 CleanupStack::PopAndDestroy(bitmap); |
|
82 CleanupStack::PopAndDestroy(&path); |
74 CleanupStack::PopAndDestroy(&path); |
83 } |
|
84 |
75 |
85 // ----------------------------------------------------------------------------- |
76 |
86 // |
77 mMsg.Write(0, TPckgBuf<int>(mBitmap->Handle())); |
87 // ----------------------------------------------------------------------------- |
78 mMsg.Write(1, TPckgBuf<void *>(this)); |
88 // |
79 |
89 void CAfThumbnailTask::ImageReadyCallBack(TInt error,const CFbsBitmap *bitmap) |
|
90 { |
|
91 if (EFalse == mMsg.IsNull() && |
|
92 KErrNone == error) { |
|
93 mMsg.Write(0, TPckgBuf<int>(const_cast<CFbsBitmap*>(bitmap)->Handle())); |
|
94 mMsg.Write(1, TPckgBuf<void *>(this)); |
|
95 mMsg.Complete(error); |
|
96 } else { |
|
97 if (EFalse == mMsg.IsNull()) { |
|
98 mMsg.Complete(error); |
|
99 } |
|
100 mStorage.Pop(this); |
|
101 delete this; |
|
102 } |
|
103 } |
80 } |
104 |
81 |
105 // ----------------------------------------------------------------------------- |
82 // ----------------------------------------------------------------------------- |
106 // |
83 // |
107 // ----------------------------------------------------------------------------- |
84 // ----------------------------------------------------------------------------- |