# examples/ForumNokia/AudioStreamExample/src/AudioStreamView.cpp

    00001 /*
    00002  * Copyright © 2008 Nokia Corporation.
    00003  */
    00004
    00005 // INCLUDE FILES
    00006 #include <aknutils.h>       // Fonts
    00007 #include <w32std.h>         // key codes and events
    00008 #include "AudioStreamView.h"
    00009
    00010 #include <TXTRICH.H>
    00011
    00012
    00013 const TUint KNumberOfLines = 0;
    00014 const TUint KTextLimit = 0;
    00015
    00016
    00017 CAudioStreamView* CAudioStreamView::NewL(const TRect & aRect,
    00018                                          CAudioStreamEngine* aEngine)
    00019     {
    00020     CAudioStreamView* self = NewLC(aRect, aEngine);
    00021     CleanupStack::Pop(self);
    00022     return self;
    00023     }
    00024
    00025 CAudioStreamView* CAudioStreamView::NewLC(const TRect & aRect,
    00026                                           CAudioStreamEngine* aEngine)
    00027     {
    00028     CAudioStreamView* self = new (ELeave) CAudioStreamView();
    00029     CleanupStack::PushL(self);
    00030     self->ConstructL(aRect, aEngine);
    00031     return self;
    00032     }
    00033
    00034 // ----------------------------------------------------------------------------
    00035 // CAudioStreamView::ConstructL(const TRect& aRect,
    00036 //                                CAudioStreamEngine* aEngine)
    00037 //
    00038 // Standard EPOC 2nd phase constructor
    00039 // ----------------------------------------------------------------------------
    00040 void CAudioStreamView::ConstructL(const TRect& aRect,
    00041                                   CAudioStreamEngine* aEngine)
    00042     {
    00043     iEngine = aEngine;
    00044     // create new window,
    00045     CreateWindowL();
    00046
    00047     // Create a rich text editor into which information can be logged
    00048     iLogComponent = new(ELeave) CEikRichTextEditor;
    00049     iLogComponent->ConstructL(this, KNumberOfLines, KTextLimit,
    00050             CEikEdwin::EReadOnly | CEikEdwin::EAvkonDisableCursor);
    00051     iLogComponent->CreateScrollBarFrameL()->SetScrollBarVisibilityL(
    00052             CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOn);
    00053
    00054     // Set font
    00055     #ifdef __WINS__
    00056     _LIT(KFontArial,"Arial");
    00057     TFontSpec MyeFontSpec (KFontArial, 8*10);
    00058     MyeFontSpec.iTypeface.SetIsProportional(ETrue);
    00059     // Set font height
    00060     TCharFormatMask charFormatMask;
    00061     charFormatMask.SetAttrib(EAttFontHeight);
    00062     TCharFormat charFormat(MyeFontSpec.iTypeface.iName, MyeFontSpec.iHeight);
    00063     charFormat.iFontPresentation.iTextColor=KRgbBlack;
    00064     charFormat.iFontSpec.iHeight=100;
    00065     // apply formatting
    00066     CRichText* text = iLogComponent->RichText();
    00067     text->ApplyCharFormatL(charFormat,charFormatMask,0,1);
    00068     #endif
    00069
    00070     SetRect(aRect);
    00071     _LIT(KInfo, "Audio streaming example");
    00072     ShowMessageL(KInfo);
    00073
    00074     // activate window
    00075     ActivateL();
    00076
    00077     // SetRect() is called again after ActivateL() to that ScrollBarFrame widht
    00078     // can be readed in SizeChanged()
    00079     SetRect(aRect);
    00080     }
    00081
    00082 // ----------------------------------------------------------------------------
    00083 // CAudioStreamView::CAudioStreamView()
    00084 //
    00085 // constructor
    00086 // ----------------------------------------------------------------------------
    00087 CAudioStreamView::CAudioStreamView()
    00088     {
    00089     }
    00090
    00091 // ----------------------------------------------------------------------------
    00092 // CAudioStreamView::~CAudioStreamView()
    00093 //
    00094 // destructor
    00095 // ----------------------------------------------------------------------------
    00096 CAudioStreamView::~CAudioStreamView()
    00097     {
    00098     delete iLogComponent;
    00099     }
    00100
    00101 // ----------------------------------------------------------------------------
    00102 // CAudioStreamView::SizeChanged()
    00103 //
    00104 // called by framework when the view size is changed
    00105 // ----------------------------------------------------------------------------
    00106 void CAudioStreamView::SizeChanged()
    00107     {
    00108     TRect rect = Rect();
    00109
    00110     TInt scrollbarWidth = iLogComponent->ScrollBarFrame()->ScrollBarBreadth(CEikScrollBar::EVertical);
    00111     // If scrollbars are not drawn yet, the width remains zero. In this
    00112     // case, an intentionally magical number is returned.
    00113     if (scrollbarWidth == 0)
    00114         {
    00115         scrollbarWidth = 8;
    00116         }
    00117     iLogComponent->SetExtent(TPoint(0, 0),
    00118             TSize(rect.Width() - scrollbarWidth, rect.Height()));
    00119     DrawNow();
    00120     }
    00121
    00122 // ---------------------------------------------------------
    00123 // CAudioStreamView::HandleResourceChange()
    00124 // Called by framework when resource is changed.
    00125 // ---------------------------------------------------------
    00126 //
    00127 void CAudioStreamView::HandleResourceChange(TInt aType)
    00128     {
    00129     CCoeControl::HandleResourceChange(aType);
    00130     if ( aType==KEikDynamicLayoutVariantSwitch )
    00131         {
    00132         TRect rect;
    00133         AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect);
    00134         SetRect(rect);
    00135         }
    00136     }
    00137
    00138
    00139 // ----------------------------------------------------------------------------
    00140 // CAudioStreamView::CountComponentControls() const
    00141 // ----------------------------------------------------------------------------
    00142 TInt CAudioStreamView::CountComponentControls() const
    00143     {
    00144     return 1;   // return number of controls inside this container
    00145     }
    00146
    00147 // ----------------------------------------------------------------------------
    00148 // CAudioStreamView::ComponentControl(TInt aIndex) const
    00149 // ----------------------------------------------------------------------------
    00150 CCoeControl* CAudioStreamView::ComponentControl(TInt aIndex) const
    00151     {
    00152     switch ( aIndex )
    00153         {
    00154         case 0:
    00155             return iLogComponent;
    00156         default:
    00157             return NULL;
    00158         }
    00159     }
    00160
    00161
    00162 // ----------------------------------------------------------------------------
    00163 // CAudioStreamView::Draw(const TRect& aRect) const
    00164 // ----------------------------------------------------------------------------
    00165 void CAudioStreamView::Draw( const TRect& aRect ) const
    00166     {
    00167     CWindowGc& gc = SystemGc();
    00168     gc.SetPenStyle( CGraphicsContext::ENullPen );
    00169     gc.SetBrushColor( KRgbWhite );
    00170     gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
    00171     gc.DrawRect( aRect );
    00172     }
    00173
    00174 // ----------------------------------------------------------------------------
    00175 // CAudioStreamView::ShowMessageL(const TDesC& aMsg)
    00176 //
    00177 // displays status messages to user
    00178 // ----------------------------------------------------------------------------
    00179 void CAudioStreamView::ShowMessageL(const TDesC& aMsg)
    00180     {
    00181     CPlainText* text = iLogComponent->Text();
    00182     text->InsertL(text->DocumentLength(), aMsg);
    00183     text->InsertL(text->DocumentLength(), CEditableText::ELineBreak);
    00184     iLogComponent->HandleTextChangedL();
    00185     // Keep displaying the bottom of the screen
    00186     iLogComponent->MoveCursorL(TCursorPosition::EFPageDown, EFalse);
    00187     DrawNow();
    00188     }
    00189
    00190
    00191 // End of File
    00192
    00193