gstreamer_test_apps/gstplayer/src/GSTPlayerappview.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        : GSTPlayerappview.cpp
hgs
parents:
diff changeset
    25
*  Part of     : GSTPlayer
hgs
parents:
diff changeset
    26
*  Interface   : 
hgs
parents:
diff changeset
    27
*  Description : 
hgs
parents:
diff changeset
    28
*  Version     : 
hgs
parents:
diff changeset
    29
*
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
* ==============================================================================
hgs
parents:
diff changeset
    32
*/
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// INCLUDE FILES
hgs
parents:
diff changeset
    35
#include <coemain.h>
hgs
parents:
diff changeset
    36
#include <stdlib.h>
hgs
parents:
diff changeset
    37
#include <gst/gst.h>
26
hgs
parents: 18
diff changeset
    38
#include "gstplayerappview.h"
18
hgs
parents:
diff changeset
    39
#include "GlibEventHandler.h"
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    44
// CGSTPlayerAppView::NewL()
hgs
parents:
diff changeset
    45
// Two-phased constructor.
hgs
parents:
diff changeset
    46
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    47
//
hgs
parents:
diff changeset
    48
CGSTPlayerAppView* CGSTPlayerAppView::NewL( const TRect& aRect )
hgs
parents:
diff changeset
    49
    {
hgs
parents:
diff changeset
    50
    CGSTPlayerAppView* self = CGSTPlayerAppView::NewLC( aRect );
hgs
parents:
diff changeset
    51
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
    52
    return self;
hgs
parents:
diff changeset
    53
    }
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    56
// CGSTPlayerAppView::NewLC()
hgs
parents:
diff changeset
    57
// Two-phased constructor.
hgs
parents:
diff changeset
    58
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    59
//
hgs
parents:
diff changeset
    60
CGSTPlayerAppView* CGSTPlayerAppView::NewLC( const TRect& aRect )
hgs
parents:
diff changeset
    61
    {
hgs
parents:
diff changeset
    62
    CGSTPlayerAppView* self = new ( ELeave ) CGSTPlayerAppView;
hgs
parents:
diff changeset
    63
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    64
    self->ConstructL( aRect );
hgs
parents:
diff changeset
    65
    return self;
hgs
parents:
diff changeset
    66
    }
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    69
// CGSTPlayerAppView::ConstructL()
hgs
parents:
diff changeset
    70
// Symbian 2nd phase constructor can leave.
hgs
parents:
diff changeset
    71
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    72
//
hgs
parents:
diff changeset
    73
void CGSTPlayerAppView::ConstructL( const TRect& aRect )
hgs
parents:
diff changeset
    74
    {
hgs
parents:
diff changeset
    75
    // Create a window for this application view
hgs
parents:
diff changeset
    76
    CreateWindowL();
hgs
parents:
diff changeset
    77
    iRte = CRichTextEditorRTE::NewL(*this);
hgs
parents:
diff changeset
    78
    // Set the windows size
hgs
parents:
diff changeset
    79
    SetRect( aRect );    
hgs
parents:
diff changeset
    80
    // Activate the window, which makes it ready to be drawn
hgs
parents:
diff changeset
    81
    ActivateL();   
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
    }
hgs
parents:
diff changeset
    84
 
hgs
parents:
diff changeset
    85
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    86
// CGSTPlayerAppView::CGSTPlayerAppView()
hgs
parents:
diff changeset
    87
// C++ default constructor can NOT contain any code, that might leave.
hgs
parents:
diff changeset
    88
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    89
//
hgs
parents:
diff changeset
    90
CGSTPlayerAppView::CGSTPlayerAppView()
hgs
parents:
diff changeset
    91
    {
hgs
parents:
diff changeset
    92
    // No implementation required
hgs
parents:
diff changeset
    93
  	gst_init(NULL,NULL);  
hgs
parents:
diff changeset
    94
  	
hgs
parents:
diff changeset
    95
    iCGlibEventHandler = CGlibEventHandler::NewL();
hgs
parents:
diff changeset
    96
	iCGlibEventHandler->Start();
hgs
parents:
diff changeset
    97
    }
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   101
// CGSTPlayerAppView::~CGSTPlayerAppView()
hgs
parents:
diff changeset
   102
// Destructor.
hgs
parents:
diff changeset
   103
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   104
//
hgs
parents:
diff changeset
   105
CGSTPlayerAppView::~CGSTPlayerAppView()
hgs
parents:
diff changeset
   106
    {
hgs
parents:
diff changeset
   107
    // No implementation required
hgs
parents:
diff changeset
   108
    
hgs
parents:
diff changeset
   109
    delete iRte;
hgs
parents:
diff changeset
   110
    
hgs
parents:
diff changeset
   111
    if(iCGlibEventHandler)
hgs
parents:
diff changeset
   112
    {
hgs
parents:
diff changeset
   113
    	iCGlibEventHandler->Stop();
hgs
parents:
diff changeset
   114
        	delete iCGlibEventHandler;
hgs
parents:
diff changeset
   115
    }
hgs
parents:
diff changeset
   116
    }
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   120
// CGSTPlayerAppView::Draw()
hgs
parents:
diff changeset
   121
// Draws the display.
hgs
parents:
diff changeset
   122
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   123
//
hgs
parents:
diff changeset
   124
void CGSTPlayerAppView::Draw( const TRect& /*aRect*/ ) const
hgs
parents:
diff changeset
   125
    {
hgs
parents:
diff changeset
   126
    // Get the standard graphics context
hgs
parents:
diff changeset
   127
    CWindowGc& gc = SystemGc();
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
    // Gets the control's extent
hgs
parents:
diff changeset
   130
    TRect drawRect( Rect());
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
    // Clears the screen
hgs
parents:
diff changeset
   133
    gc.Clear( drawRect );
hgs
parents:
diff changeset
   134
    
hgs
parents:
diff changeset
   135
  	}
hgs
parents:
diff changeset
   136
void CGSTPlayerAppView::DrawText(const TDesC& aText, const TRgb aRgb)
hgs
parents:
diff changeset
   137
    {
hgs
parents:
diff changeset
   138
    TRAPD(err, iRte->AddTextL(aText, aRgb));
hgs
parents:
diff changeset
   139
    if (err != KErrNone)
hgs
parents:
diff changeset
   140
        {
hgs
parents:
diff changeset
   141
        ; // don't care but makes compiler happy
hgs
parents:
diff changeset
   142
        }
hgs
parents:
diff changeset
   143
    }
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   147
// CGSTPlayerAppView::SizeChanged()
hgs
parents:
diff changeset
   148
// Called by framework when the view size is changed.
hgs
parents:
diff changeset
   149
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   150
//
hgs
parents:
diff changeset
   151
void CGSTPlayerAppView::SizeChanged()
hgs
parents:
diff changeset
   152
    {  
hgs
parents:
diff changeset
   153
    iRte->SetExtent(TPoint(0,0), Window().Size());
hgs
parents:
diff changeset
   154
   DrawNow();
hgs
parents:
diff changeset
   155
    }
hgs
parents:
diff changeset
   156
// End of File
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   159
// CGSTPlayerAppView::CountComponentControls
hgs
parents:
diff changeset
   160
// Called by the framework in compound controls
hgs
parents:
diff changeset
   161
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   162
TInt CGSTPlayerAppView::CountComponentControls() const
hgs
parents:
diff changeset
   163
    {
hgs
parents:
diff changeset
   164
    return 1; // return number of controls inside this container
hgs
parents:
diff changeset
   165
    }
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   169
// CGSTPlayerAppView::ComponentControl
hgs
parents:
diff changeset
   170
// Called by the framework in compound controls
hgs
parents:
diff changeset
   171
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   172
CCoeControl* CGSTPlayerAppView::ComponentControl(TInt aIndex) const
hgs
parents:
diff changeset
   173
    {
hgs
parents:
diff changeset
   174
    switch (aIndex)
hgs
parents:
diff changeset
   175
        {
hgs
parents:
diff changeset
   176
    case 0:
hgs
parents:
diff changeset
   177
        return iRte;
hgs
parents:
diff changeset
   178
    default:
hgs
parents:
diff changeset
   179
        return NULL;
hgs
parents:
diff changeset
   180
        }
hgs
parents:
diff changeset
   181
    }
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183