gstreamer_test_apps/gstplayer/src/RichTextEditor.cpp
author hgs
Fri, 06 Aug 2010 16:36:50 -0500
changeset 26 69c7080681bf
parent 18 5824eee55f42
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
hgs
parents:
diff changeset
     3
*
hgs
parents:
diff changeset
     4
* This library is free software; you can redistribute it and/or
hgs
parents:
diff changeset
     5
* modify it under the terms of the GNU Lesser General Public
hgs
parents:
diff changeset
     6
* License as published by the Free Software Foundation; either
hgs
parents:
diff changeset
     7
* version 2 of the License, or (at your option) any later version.
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* This library is distributed in the hope that it will be useful,
hgs
parents:
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
hgs
parents:
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
hgs
parents:
diff changeset
    12
* Lesser General Public License for more details.
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* You should have received a copy of the GNU Lesser General Public
hgs
parents:
diff changeset
    15
* License along with this library; if not, write to the
hgs
parents:
diff changeset
    16
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
hgs
parents:
diff changeset
    17
* Boston, MA 02111-1307, USA.
hgs
parents:
diff changeset
    18
*
hgs
parents:
diff changeset
    19
* Description:
hgs
parents:
diff changeset
    20
*
hgs
parents:
diff changeset
    21
*/
hgs
parents:
diff changeset
    22
/*
hgs
parents:
diff changeset
    23
* ============================================================================
hgs
parents:
diff changeset
    24
*  Name        : RichTextEditorRTE.cpp
hgs
parents:
diff changeset
    25
*  Part of     : VoIP test application.
hgs
parents:
diff changeset
    26
*  Description : Utility for outputting formatted text to the display.
26
hgs
parents: 18
diff changeset
    27
*  Version     : %version: 2 %
18
hgs
parents:
diff changeset
    28
* ============================================================================
hgs
parents:
diff changeset
    29
*/
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// INCLUDES
hgs
parents:
diff changeset
    32
#include <barsread.h>   // TResourceReader
hgs
parents:
diff changeset
    33
#include <eikrted.h>    // CEikRichTextEditor
hgs
parents:
diff changeset
    34
#include <txtrich.h>    // CRichText
26
hgs
parents: 18
diff changeset
    35
#include <gstplayer.rsg>
18
hgs
parents:
diff changeset
    36
#include "RichTextEditor.h"
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    40
// CRichTextEditorRTE::NewL
hgs
parents:
diff changeset
    41
// Symbian constructor.
hgs
parents:
diff changeset
    42
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    43
//
hgs
parents:
diff changeset
    44
CRichTextEditorRTE* CRichTextEditorRTE::NewL(const CCoeControl& aView)
hgs
parents:
diff changeset
    45
    {
hgs
parents:
diff changeset
    46
    CRichTextEditorRTE* self = CRichTextEditorRTE::NewLC(aView);
hgs
parents:
diff changeset
    47
    CleanupStack::Pop(self);
hgs
parents:
diff changeset
    48
    return self;
hgs
parents:
diff changeset
    49
    }
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    52
// CRichTextEditorRTE::NewLC
hgs
parents:
diff changeset
    53
// Symbian constructor with self pointer pushed into cleanup stack.
hgs
parents:
diff changeset
    54
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    55
//
hgs
parents:
diff changeset
    56
CRichTextEditorRTE* CRichTextEditorRTE::NewLC(const CCoeControl& aView)
hgs
parents:
diff changeset
    57
    {
hgs
parents:
diff changeset
    58
    CRichTextEditorRTE* self = new (ELeave) CRichTextEditorRTE;
hgs
parents:
diff changeset
    59
    CleanupStack::PushL(self);
hgs
parents:
diff changeset
    60
    self->ConstructL(aView);
hgs
parents:
diff changeset
    61
    return self;
hgs
parents:
diff changeset
    62
    }
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    65
// CRichTextEditorRTE::ConstructL
hgs
parents:
diff changeset
    66
// Standard EPOC 2nd phase constructor
hgs
parents:
diff changeset
    67
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    68
//
hgs
parents:
diff changeset
    69
void CRichTextEditorRTE::ConstructL(const CCoeControl& aView)
hgs
parents:
diff changeset
    70
    {
hgs
parents:
diff changeset
    71
    TResourceReader reader;
hgs
parents:
diff changeset
    72
    // Construct RichTextEditor from resource
hgs
parents:
diff changeset
    73
    iCoeEnv->CreateResourceReaderLC(reader, R_RICHTEXTEDITOR_RICH_TEXT_EDITOR);
hgs
parents:
diff changeset
    74
    SetContainerWindowL(aView);
hgs
parents:
diff changeset
    75
    ConstructFromResourceL(reader);
hgs
parents:
diff changeset
    76
    CleanupStack::PopAndDestroy(); //reader
hgs
parents:
diff changeset
    77
    // Sets that the control has keyboard focus
hgs
parents:
diff changeset
    78
    SetFocus(ETrue);
hgs
parents:
diff changeset
    79
    }
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    82
// CRichTextEditorRTE::CRichTextEditorRTE
hgs
parents:
diff changeset
    83
// constructor
hgs
parents:
diff changeset
    84
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    85
//
hgs
parents:
diff changeset
    86
CRichTextEditorRTE::CRichTextEditorRTE(void)
hgs
parents:
diff changeset
    87
    {
hgs
parents:
diff changeset
    88
    }
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    91
// CRichTextEditorRTE::AddCarriageReturnL
hgs
parents:
diff changeset
    92
// Insert one line break at the end of the text.
hgs
parents:
diff changeset
    93
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    94
//
hgs
parents:
diff changeset
    95
void CRichTextEditorRTE::AddCarriageReturnL()
hgs
parents:
diff changeset
    96
    {
hgs
parents:
diff changeset
    97
    CRichText* text = RichText();
hgs
parents:
diff changeset
    98
    TInt len = text->DocumentLength();
hgs
parents:
diff changeset
    99
    text->InsertL(len, CEditableText::ELineBreak);
hgs
parents:
diff changeset
   100
    }
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   103
// CRichTextEditorRTE::AddTextL
hgs
parents:
diff changeset
   104
// Draws text using selected color.
hgs
parents:
diff changeset
   105
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   106
//
hgs
parents:
diff changeset
   107
void CRichTextEditorRTE::AddTextL(const TDesC& aText, TRgb aRgb)
hgs
parents:
diff changeset
   108
    {
hgs
parents:
diff changeset
   109
    CRichText* text = RichText();
hgs
parents:
diff changeset
   110
    TInt len = text->DocumentLength();
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
    // Interested in color
hgs
parents:
diff changeset
   113
    iCharacterFormatMask.SetAttrib(EAttColor);
hgs
parents:
diff changeset
   114
    // Set it to Black
hgs
parents:
diff changeset
   115
    iCharacterFormat.iFontPresentation.iTextColor = aRgb;
hgs
parents:
diff changeset
   116
    text->InsertL(len, aText);
hgs
parents:
diff changeset
   117
    // Apply formatting
hgs
parents:
diff changeset
   118
    text->ApplyCharFormatL(iCharacterFormat,
hgs
parents:
diff changeset
   119
                           iCharacterFormatMask,
hgs
parents:
diff changeset
   120
                           len,
hgs
parents:
diff changeset
   121
                           aText.Length());
hgs
parents:
diff changeset
   122
    AddCarriageReturnL();
hgs
parents:
diff changeset
   123
    HandleTextChangedL();
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
    // Scroll pages to always display at the bottom of the screen
hgs
parents:
diff changeset
   126
    for (TInt i = len + aText.Length(); (i / 50) > 1; i -= 50)
hgs
parents:
diff changeset
   127
        {
hgs
parents:
diff changeset
   128
        MoveCursorL(TCursorPosition::EFPageDown, EFalse);
hgs
parents:
diff changeset
   129
        }
hgs
parents:
diff changeset
   130
    }
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   133
// TKeyResponse CRichTextEditorRTE::OfferKeyEventL(const TKeyEvent& aKeyEvent,
hgs
parents:
diff changeset
   134
//      TEventCode aType)
hgs
parents:
diff changeset
   135
//
hgs
parents:
diff changeset
   136
// Called by the framework whenever a key event occurs. Handles scrolling
hgs
parents:
diff changeset
   137
// events.
hgs
parents:
diff changeset
   138
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   139
TKeyResponse CRichTextEditorRTE::OfferKeyEventL(const TKeyEvent& aKeyEvent,
hgs
parents:
diff changeset
   140
                                                TEventCode aType)
hgs
parents:
diff changeset
   141
    {
hgs
parents:
diff changeset
   142
    if (aType == EEventKey)
hgs
parents:
diff changeset
   143
        {
hgs
parents:
diff changeset
   144
        if (aKeyEvent.iCode == EKeyDownArrow)
hgs
parents:
diff changeset
   145
            {
hgs
parents:
diff changeset
   146
            MoveCursorL (TCursorPosition::EFPageDown, EFalse);
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
            return EKeyWasConsumed;
hgs
parents:
diff changeset
   149
            }
hgs
parents:
diff changeset
   150
        else if (aKeyEvent.iCode == EKeyUpArrow)
hgs
parents:
diff changeset
   151
            {
hgs
parents:
diff changeset
   152
            MoveCursorL (TCursorPosition::EFPageUp, EFalse);
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
            return EKeyWasConsumed;
hgs
parents:
diff changeset
   155
            }
hgs
parents:
diff changeset
   156
        else
hgs
parents:
diff changeset
   157
            {
hgs
parents:
diff changeset
   158
            return CEikRichTextEditor::OfferKeyEventL(aKeyEvent, aType);
hgs
parents:
diff changeset
   159
            }
hgs
parents:
diff changeset
   160
        }
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
    return EKeyWasNotConsumed;
hgs
parents:
diff changeset
   163
    }
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
// End of file