S60MMFLabContainer.cpp
上传用户:laixiong
上传日期:2007-03-11
资源大小:2994k
文件大小:4k
源码类别:

Symbian

开发平台:

C/C++

  1. // Copyright (c) 2006 Nokia Corporation.
  2. // INCLUDE FILES
  3. #include "S60MMFLabContainer.h"
  4. #include <aknsdrawutils.h>
  5. #include <eiklabel.h>  // for example label control
  6. #include <aknsbasicbackgroundcontrolcontext.h>
  7. #include <aknutils.h>
  8. // ================= MEMBER FUNCTIONS =======================
  9. // ---------------------------------------------------------
  10. // CS60MMFLabContainer::ConstructL(const TRect& aRect)
  11. // EPOC two phased constructor
  12. // ---------------------------------------------------------
  13. //
  14. void CS60MMFLabContainer::ConstructL(const TRect& aRect, const TDesC& aLabel)
  15.     {
  16.     CreateWindowL();
  17. iBgContext = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain,aRect,ETrue);
  18.     iLabel = new (ELeave) CEikLabel;
  19.     iLabel->SetContainerWindowL( *this );
  20.     iLabel->SetTextL( aLabel );
  21.     
  22.     SetRect(aRect);
  23.     ActivateL();
  24.     }
  25. // Destructor
  26. CS60MMFLabContainer::~CS60MMFLabContainer()
  27.     {
  28.     delete iLabel;
  29.     delete iBgContext;
  30.     }
  31. // ---------------------------------------------------------
  32. // CS60MMFLabContainer::SizeChanged()
  33. // Called by framework when the view size is changed
  34. // ---------------------------------------------------------
  35. //
  36. void CS60MMFLabContainer::SizeChanged()
  37.     {
  38.     TRect rect;
  39.     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect);
  40.     iBgContext->SetRect(rect);
  41.     SetLabelL(*iLabel->Text());
  42.     }
  43. // ---------------------------------------------------------
  44. // CS60MMFLabContainer::CountComponentControls() const
  45. // ---------------------------------------------------------
  46. //
  47. TInt CS60MMFLabContainer::CountComponentControls() const
  48.     {
  49.     return 1; // return nbr of controls inside this container
  50.     }
  51. // ---------------------------------------------------------
  52. // CS60MMFLabContainer::ComponentControl(TInt aIndex) const
  53. // ---------------------------------------------------------
  54. //
  55. CCoeControl* CS60MMFLabContainer::ComponentControl(TInt aIndex) const
  56.     {
  57.     switch ( aIndex )
  58.         {
  59.         case 0:
  60.             return iLabel;
  61.         default:
  62.             return NULL;
  63.         }
  64.     }
  65. // ---------------------------------------------------------
  66. // CS60MMFLabContainer::Draw(const TRect& aRect) const
  67. // ---------------------------------------------------------
  68. //
  69. void CS60MMFLabContainer::Draw(const TRect& aRect) const
  70.     {
  71.     CWindowGc& gc = SystemGc();
  72.     
  73.     // Redraw the background using the default skin
  74. MAknsSkinInstance* skin = AknsUtils::SkinInstance();
  75. MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
  76. AknsDrawUtils::Background( skin, cc, this, gc, aRect );
  77.     }
  78. // ---------------------------------------------------------
  79. // CS60MMFLabContainer::HandleControlEventL(
  80. //     CCoeControl* aControl,TCoeEvent aEventType)
  81. // ---------------------------------------------------------
  82. //
  83. void CS60MMFLabContainer::HandleControlEventL(
  84.     CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
  85.     {
  86.     // TODO: Add your control event handler code here
  87.     }
  88. void CS60MMFLabContainer::SetLabelL(const TDesC& aLabel)
  89. {
  90. TPtrC text = aLabel;
  91. TSize minSize = iLabel->CalcMinimumSize(text);
  92. TInt minHeight = minSize.iHeight;
  93. minSize.iHeight = 2*minHeight;
  94. iLabel->SetTextL(aLabel);
  95. iLabel->SetExtent( TPoint(minHeight, minHeight), minSize );
  96. }
  97. TTypeUid::Ptr CS60MMFLabContainer::MopSupplyObject(TTypeUid aId)
  98.     {
  99.     if (iBgContext )
  100.         {
  101.         return MAknsControlContext::SupplyMopObject( aId, iBgContext );
  102.         }
  103.         
  104.     return CCoeControl::MopSupplyObject(aId);
  105.     }
  106. // End of File