|
1 /* |
|
2 * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: This class handles all bitmaps |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 |
|
20 #ifndef BUBBLEIMAGEMANAGER_H |
|
21 #define BUBBLEIMAGEMANAGER_H |
|
22 |
|
23 // INCLUDES |
|
24 |
|
25 #include <e32base.h> |
|
26 #include <bldvariant.hrh> |
|
27 #include <AknsItemID.h> |
|
28 #include <AknsConstants.h> |
|
29 #include <AknsItemData.h> |
|
30 |
|
31 // CONSTANTS |
|
32 const TInt KBMMaxFileNameLength = 100; |
|
33 |
|
34 // FORWARD DECLARATIONS |
|
35 class CBubbleSkinBitmap; |
|
36 class CEikImage; |
|
37 class CFbsBitmap; |
|
38 |
|
39 // DATA TYPES |
|
40 |
|
41 // Do NOT change order or numbering!! |
|
42 enum TBMIcons |
|
43 { |
|
44 /////////////////////////////////////////////////////////////////////////// |
|
45 // Cached icons |
|
46 /////////////////////////////////////////////////////////////////////////// |
|
47 EQgn_indi_call_active = 0, |
|
48 EQgn_indi_call_active_mask, |
|
49 EQgn_indi_call_active_2, |
|
50 EQgn_indi_call_active_2_mask, |
|
51 EQgn_indi_call_disconn, |
|
52 EQgn_indi_call_disconn_mask, |
|
53 EQgn_indi_call_held, |
|
54 EQgn_indi_call_held_mask, |
|
55 EQgn_indi_call_video_callsta_1, |
|
56 EQgn_indi_call_video_callsta_1_mask, |
|
57 EQgn_indi_call_video_callsta_2, |
|
58 EQgn_indi_call_video_callsta_2_mask, |
|
59 EQgn_indi_call_video_callsta_disconn, |
|
60 EQgn_indi_call_video_callsta_disconn_mask, |
|
61 EQgn_indi_call_voip_active, |
|
62 EQgn_indi_call_voip_active_mask, |
|
63 EQgn_indi_call_voip_active_2, |
|
64 EQgn_indi_call_voip_active_2_mask, |
|
65 EQgn_indi_call_voip_held, |
|
66 EQgn_indi_call_voip_held_mask, |
|
67 EQgn_indi_call_voip_callsta_disconn, |
|
68 EQgn_indi_call_voip_callsta_disconn_mask, |
|
69 // Animated call icons |
|
70 EQgn_indi_call_waiting_1, |
|
71 EQgn_indi_call_waiting_1_mask, |
|
72 EQgn_indi_call_waiting_2, |
|
73 EQgn_indi_call_waiting_2_mask, |
|
74 EQgn_indi_call_waiting_disconn, |
|
75 EQgn_indi_call_waiting_disconn_mask, |
|
76 EQgn_indi_call_video_1, |
|
77 EQgn_indi_call_video_1_mask, |
|
78 EQgn_indi_call_video_2, |
|
79 EQgn_indi_call_video_2_mask, |
|
80 EQgn_indi_call_video_disconn, |
|
81 EQgn_indi_call_video_disconn_mask, |
|
82 EQgn_indi_call_voip_waiting_1, |
|
83 EQgn_indi_call_voip_waiting_1_mask, |
|
84 EQgn_indi_call_voip_waiting_2, |
|
85 EQgn_indi_call_voip_waiting_2_mask, |
|
86 EQgn_indi_call_voip_disconn, |
|
87 EQgn_indi_call_voip_disconn_mask, |
|
88 // Background for NE + single call (not cached, if frame icons in use) |
|
89 EQgn_graf_call_rec_big, |
|
90 EQgn_graf_call_rec_big_mask, |
|
91 EQgn_graf_call_rec_big_disconn, |
|
92 EQgn_graf_call_rec_big_disconn_mask, |
|
93 EQgn_graf_call_first_one_active, |
|
94 EQgn_graf_call_first_one_active_mask, |
|
95 EQgn_graf_call_first_one_disconn, |
|
96 EQgn_graf_call_first_one_disconn_mask, |
|
97 /////////////////////////////////////////////////////////////////////////// |
|
98 // Non-cached icons |
|
99 /////////////////////////////////////////////////////////////////////////// |
|
100 EQgn_graf_call_first_one_held, |
|
101 EQgn_graf_call_first_one_held_mask, |
|
102 EQgn_indi_call_active_cyph_off, |
|
103 EQgn_indi_call_active_cyph_off_mask, |
|
104 EQgn_indi_call_disconn_cyph_off, |
|
105 EQgn_indi_call_disconn_cyph_off_mask, |
|
106 EQgn_indi_call_held_cyph_off, |
|
107 EQgn_indi_call_held_cyph_off_mask, |
|
108 EQgn_indi_call_cyphering_off, |
|
109 EQgn_indi_call_cyphering_off_mask, |
|
110 EQgn_indi_call_line2, |
|
111 EQgn_indi_call_line2_mask, |
|
112 EQgn_indi_call_active_emergency, |
|
113 EQgn_indi_call_active_emergency_mask, |
|
114 EQgn_indi_call_waiting_cyph_off_1, |
|
115 EQgn_indi_call_waiting_cyph_off_1_mask, |
|
116 EQgn_indi_call_waiting_disconn_cyph_off, |
|
117 EQgn_indi_call_waiting_disconn_cyph_off_mask, |
|
118 EQgn_graf_call_first_one_active_emergency, |
|
119 EQgn_graf_call_first_one_active_emergency_mask, |
|
120 EQgn_graf_call_two_active_emergency, |
|
121 EQgn_graf_call_two_active_emergency_mask, |
|
122 EQgn_graf_call_rec_big_right, |
|
123 EQgn_graf_call_rec_big_right_mask, |
|
124 EQgn_graf_call_rec_big_right_disconn, |
|
125 EQgn_graf_call_rec_big_right_disconn_mask, |
|
126 EQgn_graf_call_conf_five, |
|
127 EQgn_graf_call_conf_five_mask, |
|
128 EQgn_graf_call_conf_four, |
|
129 EQgn_graf_call_conf_four_mask, |
|
130 EQgn_graf_call_conf_three, |
|
131 EQgn_graf_call_conf_three_mask, |
|
132 EQgn_graf_call_conf_two, |
|
133 EQgn_graf_call_conf_two_mask, |
|
134 EQgn_graf_call_first_three_active, |
|
135 EQgn_graf_call_first_three_active_mask, |
|
136 EQgn_graf_call_first_three_disconn, |
|
137 EQgn_graf_call_first_three_disconn_mask, |
|
138 EQgn_graf_call_first_three_held, |
|
139 EQgn_graf_call_first_three_held_mask, |
|
140 EQgn_graf_call_first_two_active, |
|
141 EQgn_graf_call_first_two_active_mask, |
|
142 EQgn_graf_call_first_two_disconn, |
|
143 EQgn_graf_call_first_two_disconn_mask, |
|
144 EQgn_graf_call_first_two_held, |
|
145 EQgn_graf_call_first_two_held_mask, |
|
146 EQgn_graf_call_first_wait_active, |
|
147 EQgn_graf_call_first_wait_active_mask, |
|
148 EQgn_graf_call_first_wait_disconn, |
|
149 EQgn_graf_call_first_wait_disconn_mask, |
|
150 EQgn_graf_call_hidden_held, |
|
151 EQgn_graf_call_hidden_held_mask, |
|
152 EQgn_graf_call_rec_big_left, |
|
153 EQgn_graf_call_rec_big_left_mask, |
|
154 EQgn_graf_call_rec_big_left_disconn, |
|
155 EQgn_graf_call_rec_big_left_disconn_mask, |
|
156 EQgn_graf_call_rec_small_left, |
|
157 EQgn_graf_call_rec_small_left_mask, |
|
158 EQgn_graf_call_rec_small_right, |
|
159 EQgn_graf_call_rec_small_right_mask, |
|
160 EQgn_graf_call_rec_small_right_disconn, |
|
161 EQgn_graf_call_rec_small_right_disconn_mask, |
|
162 EQgn_graf_call_rec_bigger, |
|
163 EQgn_graf_call_rec_bigger_mask, |
|
164 EQgn_graf_call_second_three_active, |
|
165 EQgn_graf_call_second_three_active_mask, |
|
166 EQgn_graf_call_second_three_disconn, |
|
167 EQgn_graf_call_second_three_disconn_mask, |
|
168 EQgn_graf_call_second_three_held, |
|
169 EQgn_graf_call_second_three_held_mask, |
|
170 EQgn_graf_call_second_two_active, |
|
171 EQgn_graf_call_second_two_active_mask, |
|
172 EQgn_graf_call_second_two_disconn, |
|
173 EQgn_graf_call_second_two_disconn_mask, |
|
174 EQgn_graf_call_second_two_held, |
|
175 EQgn_graf_call_second_two_held_mask, |
|
176 EQgn_indi_call_active_conf, |
|
177 EQgn_indi_call_active_conf_mask, |
|
178 EQgn_indi_call_disconn_conf, |
|
179 EQgn_indi_call_disconn_conf_mask, |
|
180 EQgn_indi_call_diverted, |
|
181 EQgn_indi_call_diverted_mask, |
|
182 EQgn_indi_call_held_conf, |
|
183 EQgn_indi_call_held_conf_mask, |
|
184 EQgn_indi_call_muted, |
|
185 EQgn_indi_call_muted_mask, |
|
186 EQgn_prop_nrtyp_mobile_div, |
|
187 EQgn_prop_nrtyp_mobile_div_mask, |
|
188 EQgn_prop_nrtyp_phone_div, |
|
189 EQgn_prop_nrtyp_phone_div_mask, |
|
190 EQgn_indi_call_active_conf_cyph_off, |
|
191 EQgn_indi_call_active_conf_cyph_off_mask, |
|
192 EQgn_indi_call_active_cyph_off_2, |
|
193 EQgn_indi_call_active_cyph_off_2_mask, |
|
194 EQgn_indi_call_disconn_conf_cyph_off, |
|
195 EQgn_indi_call_disconn_conf_cyph_off_mask, |
|
196 EQgn_indi_call_held_conf_cyph_off, |
|
197 EQgn_indi_call_held_conf_cyph_off_mask, |
|
198 EQgn_indi_call_waiting_cyph_off_2, |
|
199 EQgn_indi_call_waiting_cyph_off_2_mask, |
|
200 EQgn_prop_nrtyp_home_div, |
|
201 EQgn_prop_nrtyp_home_div_mask, |
|
202 EQgn_prop_nrtyp_work_div, |
|
203 EQgn_prop_nrtyp_work_div_mask, |
|
204 EQgn_graf_call_image_1, |
|
205 EQgn_graf_call_image_1_mask, |
|
206 EQgn_indi_call4_image_mask_prt, |
|
207 EQgn_indi_call4_image_mask_lsc, |
|
208 // From avkon.mbm |
|
209 EQgn_prop_nrtyp_fax, |
|
210 EQgn_prop_nrtyp_fax_mask, |
|
211 EQgn_prop_nrtyp_home, |
|
212 EQgn_prop_nrtyp_home_mask, |
|
213 EQgn_prop_nrtyp_mobile, |
|
214 EQgn_prop_nrtyp_mobile_mask, |
|
215 EQgn_prop_nrtyp_pager, |
|
216 EQgn_prop_nrtyp_pager_mask, |
|
217 EQgn_prop_nrtyp_phone, |
|
218 EQgn_prop_nrtyp_phone_mask, |
|
219 EQgn_prop_nrtyp_work, |
|
220 EQgn_prop_nrtyp_work_mask, |
|
221 EQgn_prop_nrtyp_voip, |
|
222 EQgn_prop_nrtyp_voip_mask, |
|
223 EQgn_prop_nrtyp_car, |
|
224 EQgn_prop_nrtyp_car_mask, |
|
225 EQgn_prop_nrtyp_assistant, |
|
226 EQgn_prop_nrtyp_assistant_mask |
|
227 }; |
|
228 |
|
229 |
|
230 |
|
231 // CLASS DECLARATION |
|
232 |
|
233 /** |
|
234 * CBubbleImageManager class |
|
235 * This class handles all bitmaps |
|
236 * |
|
237 * @lib bubblemanager |
|
238 * @since Series60_1.0 |
|
239 */ |
|
240 class CBubbleImageManager : public CBase |
|
241 { |
|
242 |
|
243 public: // Constructors and destructor |
|
244 |
|
245 /** |
|
246 * Two phase constructor |
|
247 * @param aFrameIcons ETrue if 9-piece bubbles are used. |
|
248 * @return New instance |
|
249 */ |
|
250 static CBubbleImageManager* NewL( TBool aFrameIcons ); |
|
251 |
|
252 /** |
|
253 * Destructor. |
|
254 */ |
|
255 ~CBubbleImageManager(); |
|
256 |
|
257 public: // New functions |
|
258 |
|
259 /** |
|
260 * Set given bitmap to CEikImage object. |
|
261 * @param aImage Image which the bitmap is set to. |
|
262 * @param aPicture Bitmap enum. |
|
263 */ |
|
264 void SetBitmapToImage( CEikImage*& aImage , |
|
265 const TBMIcons& aPicture ); |
|
266 |
|
267 /** |
|
268 * Set given bitmap to CEikImage object. |
|
269 * @param aImage Image which the bitmap is set to. |
|
270 * @param aPicture Bitmap enum. |
|
271 * @param aPictureMask Bitmap mask enum. |
|
272 */ |
|
273 void SetBitmapToImage( CEikImage*& aImage , |
|
274 const TBMIcons& aPicture, |
|
275 const TBMIcons& aPictureMask ); |
|
276 |
|
277 /** |
|
278 * Clears skinned bitmaps. Call only between StartChanges() and |
|
279 * EndChanges()!!! |
|
280 * @since 2.0 |
|
281 */ |
|
282 void ClearSkinsCache(); |
|
283 |
|
284 /** |
|
285 * This method prepares cached bitmaps. SVG icons cannot be |
|
286 * used before they are initialized. Using this method ensures |
|
287 * validity of most essentials icons in OOM situation. |
|
288 * @since 3.1 |
|
289 */ |
|
290 void PrepareCachedBitmaps(); |
|
291 |
|
292 protected: |
|
293 /** |
|
294 * Constructor. |
|
295 */ |
|
296 CBubbleImageManager( TBool aFrameIcons ); |
|
297 |
|
298 // From CTimer |
|
299 void RunL(); |
|
300 |
|
301 // Set bitmap+mask to given image |
|
302 void SetBitmapToImage( CEikImage& aImage , |
|
303 const TBMIcons& aPicture, |
|
304 const TBMIcons& aPictureMask ); |
|
305 |
|
306 // Maps enumeration to mbm file |
|
307 void MapEnumToMbmFile( const TBMIcons aBmIcon, |
|
308 TInt& aMbm, |
|
309 TDes& aFileName ) const; |
|
310 |
|
311 // Maps emumeration to skin id |
|
312 void MapEnumToSkin( const TBMIcons aBmIcon, |
|
313 TAknsItemID& aItemId, |
|
314 TInt& aColorGroupId ) const; |
|
315 |
|
316 // Finds skin for given enumeration |
|
317 TBool GetSkin( CEikImage& aImage, |
|
318 const TBMIcons aBmIcon, |
|
319 const TBMIcons aBmIconMask ); |
|
320 |
|
321 // Loads new skin image into cache |
|
322 void LoadAndAppendSkinL( const TBMIcons aBmIcon, |
|
323 const TBMIcons aBmIconMask, |
|
324 CFbsBitmap*& aBitmap, |
|
325 CFbsBitmap*& aMask ); |
|
326 |
|
327 // Initialize bitmaps |
|
328 TBool DoInitializeBitmaps(); |
|
329 |
|
330 // Callback function for CIdle |
|
331 static TInt InitializeBitmaps( TAny* aThis ); |
|
332 |
|
333 // Load cached bitmaps |
|
334 void LoadCachedBitmapsL(); |
|
335 |
|
336 private: |
|
337 // Returns id for last icon kept in cache |
|
338 inline TInt LastCachedIcon(); |
|
339 |
|
340 private: // private functions |
|
341 /** |
|
342 * Symbian OS 2nd phase constructor. |
|
343 */ |
|
344 void ConstructL(); |
|
345 |
|
346 private: //data |
|
347 |
|
348 // MBM file name |
|
349 TBuf<KBMMaxFileNameLength> iMbmFileBuffer; |
|
350 |
|
351 // Cached skin bitmaps |
|
352 RPointerArray<CBubbleSkinBitmap> iSkinnedBitmaps; |
|
353 // Ordering function pointer. |
|
354 TLinearOrder<CBubbleSkinBitmap> iOrder; |
|
355 |
|
356 // Compares two different skin images |
|
357 static TInt CompareSkinnedData( |
|
358 const CBubbleSkinBitmap& aSkinnedBitmap1, |
|
359 const CBubbleSkinBitmap& aSkinnedBitmap2 ); |
|
360 |
|
361 // Bitmap initialization |
|
362 CIdle* iBitmapInitializer; |
|
363 TInt iBitmapInitIndex; |
|
364 |
|
365 // 9-piece background icons used |
|
366 TBool iFrameIcons; |
|
367 |
|
368 private: |
|
369 friend class CT_CBubbleImageManager; |
|
370 }; |
|
371 |
|
372 #endif //BUBBLEIMAGEMANAGER_H |
|
373 |
|
374 // End of File |