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

Symbian

开发平台:

C/C++

  1. // Copyright (c) 2006 Nokia Corporation.
  2. #include "AOLabBubbleSortContainer.h"
  3. #include "ActiveBubbleSorter.h"
  4. #include <eiklabel.h>
  5. _LIT(KStartActionText, "Select menu itemnto begin sorting...");
  6. _LIT(KCancelActionText, "Select menu itemnto cancel sorting...");
  7. _LIT(KSortingText, "Sorting...");
  8. _LIT(KSortingComplete, "Sorting Complete.");
  9. _LIT(KSortingError, "Sorting Error: %d");
  10. _LIT(KSortingCancelled, "Sorting cancelled.");
  11. // Constructs a container for this application
  12. CAOLabBubbleSortContainer* CAOLabBubbleSortContainer::NewL(const TRect& aRect)
  13. {
  14. CAOLabBubbleSortContainer* self = new (ELeave) CAOLabBubbleSortContainer();
  15.     CleanupStack::PushL(self);
  16.     self->ConstructL(aRect);
  17.     CleanupStack::Pop(self);
  18.     
  19.     return self;
  20. }
  21. // EPOC two phased constructor
  22. void CAOLabBubbleSortContainer::ConstructL(const TRect& aRect)
  23.     {
  24.     CreateWindowL();
  25.     iTopLabel = new (ELeave) CEikLabel;
  26.     iTopLabel->SetContainerWindowL( *this );
  27.     iTopLabel->SetTextL(KStartActionText);
  28. iBottomLabel = new (ELeave) CEikLabel;
  29.     iBottomLabel->SetContainerWindowL( *this );
  30.     iBottomLabel->SetTextL(KNullDesC);
  31.     
  32.     SetRect(aRect);
  33.     ActivateL();
  34.     }
  35. // Destructor
  36. CAOLabBubbleSortContainer::~CAOLabBubbleSortContainer()
  37.     {
  38.     delete iBottomLabel;
  39. delete iTopLabel;
  40.     }
  41. // Called by framework when the view size is changed
  42. void CAOLabBubbleSortContainer::SizeChanged()
  43.     {
  44.     iTopLabel->SetExtent( TPoint(0,0), TSize(Rect().Width(), Rect().Height()/2));
  45.     iBottomLabel->SetExtent( TPoint(0,Rect().Height()/2), TSize(Rect().Width(),Rect().Height()/2));
  46.     }
  47. // Returns the number of controls inside this container
  48. TInt CAOLabBubbleSortContainer::CountComponentControls() const
  49.     {
  50.     return 2; // return nbr of controls inside this container
  51.     }
  52. // Gets an indexed component of this compound control
  53. CCoeControl* CAOLabBubbleSortContainer::ComponentControl(TInt aIndex) const
  54.     {
  55.     switch ( aIndex )
  56.         {
  57.         case 0:
  58.             return iTopLabel;
  59.         case 1:
  60.             return iBottomLabel;
  61.         default:
  62.             return NULL;
  63.         }
  64.     }
  65. // Draw a grey rectangle that fills the client area of the screen
  66. void CAOLabBubbleSortContainer::Draw(const TRect& aRect) const
  67.     {
  68.     CWindowGc& gc = SystemGc();
  69.     
  70.     gc.SetPenStyle(CGraphicsContext::ENullPen);
  71.     gc.SetBrushColor(KRgbGray);
  72.     gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
  73.     gc.DrawRect(aRect);
  74.     }
  75. // Starts sorting
  76. void CAOLabBubbleSortContainer::SortL()
  77.     {
  78. iIsSorting = ETrue;
  79.     iTopLabel->SetTextL(KCancelActionText);
  80.     iBottomLabel->SetTextL(KSortingText);
  81.     DrawNow();
  82.     }
  83. // Callback function called when sorting has been completed
  84. void CAOLabBubbleSortContainer::SortComplete(TInt aError)
  85.     {
  86.     iIsSorting = EFalse;
  87.     
  88.     TBuf<20> buf;
  89.     if (aError == KErrNone)
  90.      {
  91.      buf.Format(KSortingComplete);
  92.      }
  93.     else
  94.      {
  95.      buf.Format(KSortingError, aError);
  96.      }
  97.     
  98.     iTopLabel->SetTextL(KStartActionText);
  99.     iBottomLabel->SetTextL(buf);
  100.     DrawNow();
  101.     }
  102. // Cancels the sort
  103. void CAOLabBubbleSortContainer::CancelSortL()
  104. {
  105. iIsSorting = EFalse;
  106. iTopLabel->SetTextL(KStartActionText);
  107.     iBottomLabel->SetTextL(KSortingCancelled);
  108.     DrawNow();
  109. }
  110. // End of File