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.     iActiveTimer = CActiveTimer::NewL(*this);
  29.     iIsVisible = ETrue;
  30.     SetRect(aRect);
  31.     ActivateL();
  32.     }
  33. // C++ Destructor
  34. CAOLabTextFlashContainer::~CAOLabTextFlashContainer()
  35.     {
  36.     delete iActiveTimer;
  37.     delete iTopLabel;
  38.     delete iBottomLabel;
  39.     }
  40. // Called by framework when the view size is changed
  41. void CAOLabTextFlashContainer::SizeChanged()
  42.     {
  43.     iTopLabel->SetExtent( TPoint(0,0), TSize(Rect().Width(), Rect().Height()/2));
  44.     iBottomLabel->SetExtent( TPoint(0,Rect().Height()/2), TSize(Rect().Width(),Rect().Height()/2));
  45.     }
  46. // Returns the number of controls inside this container
  47. TInt CAOLabTextFlashContainer::CountComponentControls() const
  48.     {
  49.     return 2;
  50.     }
  51. // Gets an indexed component of this compound control
  52. CCoeControl* CAOLabTextFlashContainer::ComponentControl(TInt aIndex) const
  53.     {
  54.     switch ( aIndex )
  55.         {
  56.         case 0:
  57.             return iTopLabel;
  58.         case 1:
  59.             return iBottomLabel;
  60.         default:
  61.             return NULL;
  62.         }
  63.     }
  64. // Draw a grey rectangle that fills the client area of the screen
  65. void CAOLabTextFlashContainer::Draw(const TRect& aRect) const
  66.     {
  67.     CWindowGc& gc = SystemGc();
  68.     
  69.     gc.SetPenStyle(CGraphicsContext::ENullPen);
  70.     gc.SetBrushColor(KRgbGray);
  71.     gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
  72.     gc.DrawRect(aRect);
  73.     }
  74.       
  75.       
  76. // Starts the text flashing
  77. void CAOLabTextFlashContainer::FlashingText()
  78.     {
  79.     iTopLabel->SetTextL(KHelloText);
  80.     iBottomLabel->SetTextL(KWorldText);
  81.     DrawNow();
  82.         
  83.     if (!iIsFlashing)
  84.         {
  85.         iIsVisible = ETrue;
  86.         iIsFlashing = ETrue;
  87.         iActiveTimer->After(KTimeoutValue);
  88.         }
  89.     }
  90. // Stops the text flashing
  91. void CAOLabTextFlashContainer::StopFlashing()
  92.     {
  93.     if (iIsFlashing)
  94.         {
  95.         iIsFlashing = EFalse;
  96.         iActiveTimer->Cancel();
  97.         }
  98.         
  99.     iTopLabel->MakeVisible(ETrue);
  100.     iBottomLabel->MakeVisible(ETrue);
  101.     }
  102. // Callback function when the active object timer completes 
  103. void CAOLabTextFlashContainer::TimerComplete(TInt aError)
  104.     {
  105.     if (KErrNone == aError)
  106.         {
  107.         iIsVisible = !iIsVisible;
  108.         iActiveTimer->After(KTimeoutValue);
  109.         }
  110.     else
  111.         {
  112.         iIsVisible = ETrue;
  113.         iIsFlashing = EFalse;
  114.         }
  115.         
  116.     iTopLabel->MakeVisible(iIsVisible);
  117.     iBottomLabel->MakeVisible(iIsVisible);
  118.     }
  119. // End of File