28 |
28 |
29 // USER INCLUDE FILES |
29 // USER INCLUDE FILES |
30 #include "xnnodepluginif.h" |
30 #include "xnnodepluginif.h" |
31 #include "xnclockadapter.h" |
31 #include "xnclockadapter.h" |
32 #include "xntext.h" |
32 #include "xntext.h" |
|
33 #include "xnproperty.h" |
|
34 #include "xndomproperty.h" |
|
35 #include "xndomlist.h" |
33 |
36 |
34 #include "xnclockface.h" |
37 #include "xnclockface.h" |
35 |
38 |
36 |
39 |
37 // LOCAL CONSTANTS AND MACROS |
40 // LOCAL CONSTANTS AND MACROS |
38 _LIT( KAmPmFormat, "%B" ); |
41 _LIT( KAmPmFormat, "%B" ); |
39 _LIT( KTimeFormat, "%J%:1%T" ); |
42 _LIT( KTimeFormat, "%J%:1%T" ); |
40 |
43 |
41 _LIT( KClockFont, "EAknLogicalFontSecondaryFont" ); |
44 const TInt KDefaultFaceAdjustmentValue = 0; |
42 _LIT( KAmpmFont, "EAknLogicalFontSecondaryFont" ); |
|
43 |
45 |
44 // ============================ MEMBER FUNCTIONS =============================== |
46 // ============================ MEMBER FUNCTIONS =============================== |
45 |
47 |
46 // ----------------------------------------------------------------------------- |
48 // ----------------------------------------------------------------------------- |
47 // CXnClockFaceDigital::CXnClockFaceDigital |
49 // CXnClockFaceDigital::CXnClockFaceDigital |
165 { |
167 { |
166 if ( aFontType == EClock ) |
168 if ( aFontType == EClock ) |
167 { |
169 { |
168 if ( !iClockFont ) |
170 if ( !iClockFont ) |
169 { |
171 { |
170 aAdapter.CreateFontL( aNode, KClockFont, iClockFont ); |
172 aAdapter.CreateFontL( aNode, iClockFont ); |
171 } |
173 } |
172 return CAknLayoutFont::AsCAknLayoutFontOrNull( iClockFont ); |
174 return CAknLayoutFont::AsCAknLayoutFontOrNull( iClockFont ); |
173 } |
175 } |
174 else |
176 else |
175 { |
177 { |
176 if ( !iAmpmFont ) |
178 if ( !iAmpmFont ) |
177 { |
179 { |
178 aAdapter.CreateFontL( aNode, KAmpmFont, iAmpmFont ); |
180 aAdapter.CreateFontL( aNode, iAmpmFont ); |
179 } |
181 } |
180 return CAknLayoutFont::AsCAknLayoutFontOrNull( iAmpmFont ); |
182 return CAknLayoutFont::AsCAknLayoutFontOrNull( iAmpmFont ); |
181 } |
183 } |
182 } |
184 } |
183 |
185 |
226 // C++ default constructor can NOT contain any code, that |
228 // C++ default constructor can NOT contain any code, that |
227 // might leave. |
229 // might leave. |
228 // ----------------------------------------------------------------------------- |
230 // ----------------------------------------------------------------------------- |
229 // |
231 // |
230 CXnClockFaceAnalog::CXnClockFaceAnalog() |
232 CXnClockFaceAnalog::CXnClockFaceAnalog() |
|
233 : iFaceAdjustmentValue( KErrNotFound ) |
231 { |
234 { |
232 } |
235 } |
233 |
236 |
234 // ----------------------------------------------------------------------------- |
237 // ----------------------------------------------------------------------------- |
235 // CXnClockFaceAnalog::ConstructL |
238 // CXnClockFaceAnalog::ConstructL |
270 // ----------------------------------------------------------------------------- |
273 // ----------------------------------------------------------------------------- |
271 // |
274 // |
272 void CXnClockFaceAnalog::DrawL( CXnClockAdapter& /*aAdapter*/, CWindowGc& aGc, |
275 void CXnClockFaceAnalog::DrawL( CXnClockAdapter& /*aAdapter*/, CWindowGc& aGc, |
273 CXnNodePluginIf& aNode, const TTime& aTime, CXnNodePluginIf* /*aAmpm*/ ) |
276 CXnNodePluginIf& aNode, const TTime& aTime, CXnNodePluginIf* /*aAmpm*/ ) |
274 { |
277 { |
275 TSize faceSize( aNode.Rect().Size() ); |
278 TRect faceRect( aNode.Rect() ); |
276 |
279 |
277 TDateTime dateTime( aTime.DateTime() ); |
280 TDateTime dateTime( aTime.DateTime() ); |
278 |
281 |
279 MAknsSkinInstance* skin( AknsUtils::SkinInstance() ); |
282 MAknsSkinInstance* skin( AknsUtils::SkinInstance() ); |
280 |
283 |
290 // If there is no bitmap, don't draw |
293 // If there is no bitmap, don't draw |
291 if( !skinBmp ) |
294 if( !skinBmp ) |
292 { |
295 { |
293 return; |
296 return; |
294 } |
297 } |
295 |
298 |
296 User::LeaveIfError( AknIconUtils::SetSize( skinBmp, faceSize ) ); |
299 TInt value( FaceAdjustmentValueL( aNode ) ); |
|
300 |
|
301 TSize growthSize( value, 0 ); |
|
302 faceRect.Grow( growthSize ); |
|
303 |
|
304 User::LeaveIfError( AknIconUtils::SetSize( skinBmp, faceRect.Size() ) ); |
297 |
305 |
298 if( skinMask ) |
306 if( skinMask ) |
299 { |
307 { |
300 User::LeaveIfError( AknIconUtils::SetSize( skinMask, faceSize ) ); |
308 User::LeaveIfError( AknIconUtils::SetSize( skinMask, faceRect.Size() ) ); |
301 |
309 |
302 aGc.BitBltMasked( aNode.Rect().iTl, |
310 aGc.BitBltMasked( faceRect.iTl, |
303 skinBmp, |
311 skinBmp, |
304 TRect( TPoint( 0, 0 ), skinBmp->SizeInPixels() ), |
312 TRect( TPoint( 0, 0 ), skinBmp->SizeInPixels() ), |
305 skinMask, |
313 skinMask, |
306 ETrue ); |
314 ETrue ); |
307 } |
315 } |
308 else |
316 else |
309 { |
317 { |
310 aGc.BitBlt( aNode.Rect().iTl, skinBmp ); |
318 aGc.BitBlt( faceRect.iTl, skinBmp ); |
311 } |
319 } |
312 |
320 |
313 aGc.SetBrushStyle( CGraphicsContext::ENullBrush ); |
321 aGc.SetBrushStyle( CGraphicsContext::ENullBrush ); |
314 aGc.SetPenStyle( CGraphicsContext::ESolidPen ); |
322 aGc.SetPenStyle( CGraphicsContext::ESolidPen ); |
315 |
323 |
367 minmask, |
375 minmask, |
368 EFalse ); |
376 EFalse ); |
369 } |
377 } |
370 |
378 |
371 // ----------------------------------------------------------------------------- |
379 // ----------------------------------------------------------------------------- |
|
380 // CXnClockFaceAnalog::FaceAdjustmentValueL |
|
381 // ----------------------------------------------------------------------------- |
|
382 // |
|
383 TInt CXnClockFaceAnalog::FaceAdjustmentValueL( CXnNodePluginIf& aNode ) |
|
384 { |
|
385 if( iFaceAdjustmentValue == KErrNotFound ) |
|
386 { |
|
387 CXnProperty* prop( aNode.GetPropertyL( XnPropertyNames::clock::KFaceAdjustmentValue ) ); |
|
388 |
|
389 if( prop ) |
|
390 { |
|
391 TInt value = static_cast<TInt>( prop->FloatValueL() ); |
|
392 |
|
393 if( value > KErrNotFound ) |
|
394 { |
|
395 iFaceAdjustmentValue = value; |
|
396 } |
|
397 } |
|
398 |
|
399 if( iFaceAdjustmentValue <= KErrNotFound ) |
|
400 { |
|
401 iFaceAdjustmentValue = KDefaultFaceAdjustmentValue; |
|
402 } |
|
403 } |
|
404 |
|
405 return iFaceAdjustmentValue; |
|
406 } |
|
407 |
372 // CXnClockFaceAnalog::ResetFont |
408 // CXnClockFaceAnalog::ResetFont |
373 // ----------------------------------------------------------------------------- |
409 // ----------------------------------------------------------------------------- |
374 // |
410 // |
375 void CXnClockFaceAnalog::ResetFont() |
411 void CXnClockFaceAnalog::ResetFont() |
376 { |
412 { |