hwrmhaptics/examples/hapticstestapp/src/hapticstestappview.cpp
author hgs
Fri, 08 Oct 2010 14:33:25 +0300
changeset 76 cb32bcc88bad
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
76
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Symbian Foundation License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  AppView class implementation.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include <coemain.h>
hgs
parents:
diff changeset
    20
#include <eikenv.h>
hgs
parents:
diff changeset
    21
#include <eikrted.h>
hgs
parents:
diff changeset
    22
#include <txtrich.h>
hgs
parents:
diff changeset
    23
#include <hapticstest.rsg>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include "hapticstestappview.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
const TInt KTestSmallerFontTwips = 65;
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
// ---------------------------------------------------------
hgs
parents:
diff changeset
    30
// Standard construction sequence
hgs
parents:
diff changeset
    31
// ---------------------------------------------------------
hgs
parents:
diff changeset
    32
//
hgs
parents:
diff changeset
    33
CHapticsTestAppView* CHapticsTestAppView::NewL(const TRect& aRect)
hgs
parents:
diff changeset
    34
    {
hgs
parents:
diff changeset
    35
    CHapticsTestAppView* self = CHapticsTestAppView::NewLC(aRect);
hgs
parents:
diff changeset
    36
    CleanupStack::Pop(self);
hgs
parents:
diff changeset
    37
    return self;
hgs
parents:
diff changeset
    38
    }
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
// ---------------------------------------------------------
hgs
parents:
diff changeset
    41
// Static constructor. Leaves the created instance onto the
hgs
parents:
diff changeset
    42
// cleanup stack.
hgs
parents:
diff changeset
    43
// ---------------------------------------------------------
hgs
parents:
diff changeset
    44
//
hgs
parents:
diff changeset
    45
CHapticsTestAppView* CHapticsTestAppView::NewLC(const TRect& aRect)
hgs
parents:
diff changeset
    46
    {
hgs
parents:
diff changeset
    47
    CHapticsTestAppView* self = new (ELeave) CHapticsTestAppView;
hgs
parents:
diff changeset
    48
    CleanupStack::PushL(self);
hgs
parents:
diff changeset
    49
    self->ConstructL(aRect);
hgs
parents:
diff changeset
    50
    return self;
hgs
parents:
diff changeset
    51
    }
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
// ---------------------------------------------------------
hgs
parents:
diff changeset
    54
// Constructor.
hgs
parents:
diff changeset
    55
// ---------------------------------------------------------
hgs
parents:
diff changeset
    56
//
hgs
parents:
diff changeset
    57
CHapticsTestAppView::CHapticsTestAppView()
hgs
parents:
diff changeset
    58
    {
hgs
parents:
diff changeset
    59
    // no implementation required
hgs
parents:
diff changeset
    60
    }
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
// ---------------------------------------------------------
hgs
parents:
diff changeset
    63
// Destructor.
hgs
parents:
diff changeset
    64
// ---------------------------------------------------------
hgs
parents:
diff changeset
    65
//
hgs
parents:
diff changeset
    66
CHapticsTestAppView::~CHapticsTestAppView()
hgs
parents:
diff changeset
    67
    {
hgs
parents:
diff changeset
    68
    delete iParaFormat;
hgs
parents:
diff changeset
    69
    iParaFormat = NULL;
hgs
parents:
diff changeset
    70
    
hgs
parents:
diff changeset
    71
    delete iCharFormat;
hgs
parents:
diff changeset
    72
    iCharFormat = NULL;
hgs
parents:
diff changeset
    73
    
hgs
parents:
diff changeset
    74
    delete iOutputWindow;
hgs
parents:
diff changeset
    75
    iOutputWindow = NULL;
hgs
parents:
diff changeset
    76
    
hgs
parents:
diff changeset
    77
    delete iRichText;
hgs
parents:
diff changeset
    78
    iRichText = NULL;
hgs
parents:
diff changeset
    79
    }
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
// ---------------------------------------------------------
hgs
parents:
diff changeset
    82
// Construct the view using a rich text editor.
hgs
parents:
diff changeset
    83
// ---------------------------------------------------------
hgs
parents:
diff changeset
    84
//
hgs
parents:
diff changeset
    85
void CHapticsTestAppView::ConstructL(const TRect& aRect)
hgs
parents:
diff changeset
    86
    {
hgs
parents:
diff changeset
    87
    // Create a window for this application view
hgs
parents:
diff changeset
    88
    CreateWindowL();
hgs
parents:
diff changeset
    89
    
hgs
parents:
diff changeset
    90
    // get normal font
hgs
parents:
diff changeset
    91
    const CFont* font = CEikonEnv::Static()->NormalFont();
hgs
parents:
diff changeset
    92
    TFontSpec fontspec = font->FontSpecInTwips();
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
    TCharFormat defaultCharFormat( fontspec.iTypeface.iName, 
hgs
parents:
diff changeset
    95
                                   fontspec.iHeight - KTestSmallerFontTwips );
hgs
parents:
diff changeset
    96
    TCharFormatMask defaultCharFormatMask;
hgs
parents:
diff changeset
    97
    defaultCharFormatMask.SetAttrib( EAttFontTypeface );
hgs
parents:
diff changeset
    98
    defaultCharFormatMask.SetAttrib( EAttFontHeight );
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
    // paragraph and char format layers
hgs
parents:
diff changeset
   101
    iParaFormat = CParaFormatLayer::NewL();
hgs
parents:
diff changeset
   102
    iCharFormat = CCharFormatLayer::NewL( defaultCharFormat,
hgs
parents:
diff changeset
   103
                                          defaultCharFormatMask );
hgs
parents:
diff changeset
   104
    
hgs
parents:
diff changeset
   105
    iRichText = CRichText::NewL( iParaFormat, iCharFormat );
hgs
parents:
diff changeset
   106
    
hgs
parents:
diff changeset
   107
    //Create bordered edit windows.
hgs
parents:
diff changeset
   108
    iOutputWindow = new (ELeave) CEikRichTextEditor( TGulBorder( TGulBorder::EShallowRaised ) );
hgs
parents:
diff changeset
   109
    iOutputWindow->SetContainerWindowL( *this );
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
    // Create scrollbar
hgs
parents:
diff changeset
   112
    iOutputWindow->CreateScrollBarFrameL();
hgs
parents:
diff changeset
   113
    iOutputWindow->ScrollBarFrame()->SetScrollBarVisibilityL(
hgs
parents:
diff changeset
   114
            CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
hgs
parents:
diff changeset
   115
    
hgs
parents:
diff changeset
   116
    iOutputWindow->ConstructL( this, 0, 0, 
hgs
parents:
diff changeset
   117
        EEikEdwinOwnsWindow|EEikEdwinInclusiveSizeFixed|
hgs
parents:
diff changeset
   118
        EEikEdwinKeepDocument|EEikEdwinUserSuppliedText|
hgs
parents:
diff changeset
   119
        EEikEdwinLineCursor|EEikEdwinAlwaysShowSelection );
hgs
parents:
diff changeset
   120
    
hgs
parents:
diff changeset
   121
    TRect outputRect( Rect() );
hgs
parents:
diff changeset
   122
    TInt outputWidthOffset = iOutputWindow->ScrollBarFrame()->ScrollBarBreadth( CEikScrollBar::EVertical );
hgs
parents:
diff changeset
   123
    outputRect.iBr.iX -= outputWidthOffset;
hgs
parents:
diff changeset
   124
    
hgs
parents:
diff changeset
   125
    iOutputWindow->SetDocumentContentL( *iRichText, CEikEdwin::EUseText );
hgs
parents:
diff changeset
   126
    iOutputWindow->SetRect( outputRect );
hgs
parents:
diff changeset
   127
    iOutputWindow->ActivateL();
hgs
parents:
diff changeset
   128
    iOutputWindow->SetFocus( ETrue );
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
    // Set the windows size
hgs
parents:
diff changeset
   131
    SetRect( aRect );
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
    // Activate the window, which makes it ready to be drawn
hgs
parents:
diff changeset
   134
    ActivateL();
hgs
parents:
diff changeset
   135
    }
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
// ---------------------------------------------------------
hgs
parents:
diff changeset
   138
// Insert the given text to the end of the outputted text.
hgs
parents:
diff changeset
   139
// Adds line break to the end of the text.
hgs
parents:
diff changeset
   140
// ---------------------------------------------------------
hgs
parents:
diff changeset
   141
//
hgs
parents:
diff changeset
   142
void CHapticsTestAppView::InsertOutput( const TDesC& aOutputLine,
hgs
parents:
diff changeset
   143
                                        TBool aLineBreak ) const
hgs
parents:
diff changeset
   144
    {
hgs
parents:
diff changeset
   145
    TRAPD( err, iRichText->InsertL( iOutputWindow->TextLength(), 
hgs
parents:
diff changeset
   146
                                    aOutputLine ) );
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
    // insert line break if requested
hgs
parents:
diff changeset
   149
    if ( aLineBreak )
hgs
parents:
diff changeset
   150
        {
hgs
parents:
diff changeset
   151
        TRAP( err, iRichText->InsertL( iOutputWindow->TextLength(), 
hgs
parents:
diff changeset
   152
                                      (TChar)CEditableText::ELineBreak ) );
hgs
parents:
diff changeset
   153
        }
hgs
parents:
diff changeset
   154
    
hgs
parents:
diff changeset
   155
    TRAP( err, iOutputWindow->ForceScrollBarUpdateL() );
hgs
parents:
diff changeset
   156
    TRAP( err, iOutputWindow->SetCursorPosL( iOutputWindow->TextLength(),
hgs
parents:
diff changeset
   157
                                             EFalse) );
hgs
parents:
diff changeset
   158
    }
hgs
parents:
diff changeset
   159
hgs
parents:
diff changeset
   160
// ---------------------------------------------------------
hgs
parents:
diff changeset
   161
// Clears the output view.
hgs
parents:
diff changeset
   162
// ---------------------------------------------------------
hgs
parents:
diff changeset
   163
//
hgs
parents:
diff changeset
   164
void CHapticsTestAppView::ClearOutput() const
hgs
parents:
diff changeset
   165
    {
hgs
parents:
diff changeset
   166
    iRichText->Reset();
hgs
parents:
diff changeset
   167
    TRAPD( err, iOutputWindow->HandleTextChangedL());
hgs
parents:
diff changeset
   168
    err = err; // just to escape warning message for ARM
hgs
parents:
diff changeset
   169
    iOutputWindow->SetCursorPosL( 0, EFalse );
hgs
parents:
diff changeset
   170
    }
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
// ---------------------------------------------------------
hgs
parents:
diff changeset
   173
// Draw this application's view to the screen
hgs
parents:
diff changeset
   174
// ---------------------------------------------------------
hgs
parents:
diff changeset
   175
//
hgs
parents:
diff changeset
   176
void CHapticsTestAppView::Draw( const TRect& /*aRect*/ ) const
hgs
parents:
diff changeset
   177
    {
hgs
parents:
diff changeset
   178
    // Get the standard graphics context 
hgs
parents:
diff changeset
   179
    CWindowGc& gc = SystemGc();
hgs
parents:
diff changeset
   180
    
hgs
parents:
diff changeset
   181
    // Gets the control's extent
hgs
parents:
diff changeset
   182
    TRect rect = Rect();
hgs
parents:
diff changeset
   183
    
hgs
parents:
diff changeset
   184
    // Clears the screen
hgs
parents:
diff changeset
   185
    gc.Clear( rect );
hgs
parents:
diff changeset
   186
    }
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
// ---------------------------------------------------------
hgs
parents:
diff changeset
   189
// Called by framework when the view size is changed
hgs
parents:
diff changeset
   190
// ---------------------------------------------------------
hgs
parents:
diff changeset
   191
//
hgs
parents:
diff changeset
   192
void CHapticsTestAppView::SizeChanged()
hgs
parents:
diff changeset
   193
    {
hgs
parents:
diff changeset
   194
    // decrease the width of the scrollbar from the width of the editor rect
hgs
parents:
diff changeset
   195
    TInt outputWidthOffset = iOutputWindow->ScrollBarFrame()->ScrollBarBreadth( CEikScrollBar::EVertical );
hgs
parents:
diff changeset
   196
    TRect outputRect( Rect() );
hgs
parents:
diff changeset
   197
    outputRect.iBr.iX -= outputWidthOffset;
hgs
parents:
diff changeset
   198
    iOutputWindow->SetRect( outputRect );
hgs
parents:
diff changeset
   199
    iOutputWindow->SetFocus( ETrue );
hgs
parents:
diff changeset
   200
    }
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202