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

Symbian

开发平台:

C/C++

  1. // Copyright (c) 2006 Nokia Corporation.
  2. #include "AOLabTextFlashContainer.h"
  3. #include "ActiveTimer.h"
  4. #include <eiklabel.h>
  5. _LIT(KHelloText, "Hello");
  6. _LIT(KWorldText, "World");
  7. const TInt KTimeoutValue = 2000000;
  8. // Constructs a container for this application
  9. CAOLabTextFlashContainer* CAOLabTextFlashContainer::NewL(const TRect& aRect)
  10. {
  11. CAOLabTextFlashContainer* self = new ( ELeave ) CAOLabTextFlashContainer();
  12.     CleanupStack::PushL(self);
  13.     self->ConstructL(aRect);
  14.     CleanupStack::Pop(self);
  15.     
  16.     return self;
  17. }
  18. // Symbian 2nd phase constructor
  19. void CAOLabTextFlashContainer::ConstructL(const TRect& aRect)
  20.     {
  21.     CreateWindowL();
  22.     iTopLabel = new (ELeave) CEikLabel;
  23.     iTopLabel->SetContainerWindowL(*this);
  24.     iTopLabel->SetTextL(KHelloText);
  25.     iBottomLabel = new (ELeave) CEikLabel;
  26.     iBottomLabel->SetContainerWindowL(*this);
  27.     iBottomLabel->SetTextL(KWorldText);
  28.     iIsVisible = ETrue;
  29.     SetRect(aRect);
  30.     ActivateL();
  31.     }
  32. // C++ Destructor
  33. CAOLabTextFlashContainer::~CAOLabTextFlashContainer()
  34.     {
  35.     delete iTopLabel;
  36.     delete iBottomLabel;
  37.     }
  38. // Called by framework when the view size is changed
  39. void CAOLabTextFlashContainer::SizeChanged()
  40.     {
  41.     iTopLabel->SetExtent( TPoint(0,0), TSize(Rect().Width(), Rect().Height()/2));
  42.     iBottomLabel->SetExtent( TPoint(0,Rect().Height()/2), TSize(Rect().Width(),Rect().Height()/2));
  43.     }
  44. // Returns the number of controls inside this container
  45. TInt CAOLabTextFlashContainer::CountComponentControls() const
  46.     {
  47.     return 2;
  48.     }
  49. // Gets an indexed component of this compound control
  50. CCoeControl* CAOLabTextFlashContainer::ComponentControl(TInt aIndex) const
  51.     {
  52.     switch ( aIndex )
  53.         {
  54.         case 0:
  55.             return iTopLabel;
  56.         case 1:
  57.             return iBottomLabel;
  58.         default:
  59.             return NULL;
  60.         }
  61.     }
  62. // Draw a grey rectangle that fills the client area of the screen
  63. void CAOLabTextFlashContainer::Draw(const TRect& aRect) const
  64.     {
  65.     CWindowGc& gc = SystemGc();
  66.     
  67.     gc.SetPenStyle(CGraphicsContext::ENullPen);
  68.     gc.SetBrushColor(KRgbGray);
  69.     gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
  70.     gc.DrawRect(aRect);
  71.     }
  72.       
  73.       
  74. // Starts the text flashing
  75. void CAOLabTextFlashContainer::FlashingText()
  76.     {
  77.     iTopLabel->SetTextL(KHelloText);
  78.     iBottomLabel->SetTextL(KWorldText);
  79.     DrawNow();
  80.         
  81.     if (!iIsFlashing)
  82.         {
  83.         iIsVisible = ETrue;
  84.         iIsFlashing = ETrue;
  85.         }
  86.     }
  87. // Stops the text flashing
  88. void CAOLabTextFlashContainer::StopFlashing()
  89.     {
  90.     if (iIsFlashing)
  91.         {
  92.         iIsFlashing = EFalse;
  93.         }
  94.         
  95.     iTopLabel->MakeVisible(ETrue);
  96.     iBottomLabel->MakeVisible(ETrue);
  97.     }
  98. // Callback function when the active object timer completes 
  99. void CAOLabTextFlashContainer::TimerComplete(TInt aError)
  100.     {
  101.     if (KErrNone == aError)
  102.         {
  103.         iIsVisible = !iIsVisible;
  104.         }
  105.     else
  106.         {
  107.         iIsVisible = ETrue;
  108.         iIsFlashing = EFalse;
  109.         }
  110.         
  111.     iTopLabel->MakeVisible(iIsVisible);
  112.     iBottomLabel->MakeVisible(iIsVisible);
  113.     }
  114. // End of File