videoplayerapp/videoplayerengine/inc/mpxvideoplayerappuiengine.h
author hgs
Thu, 01 Apr 2010 23:22:15 +0300
changeset 34 bbb98528c666
child 35 3738fe97f027
permissions -rw-r--r--
201009
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 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 "Eclipse Public 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.eclipse.org/legal/epl-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:  CMpxVideoPlayerAppUiEngine
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// Version : %version:  3 %
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#ifndef CMPXVIDEOPLAYERAPPUIENGINE_H
hgs
parents:
diff changeset
    23
#define CMPXVIDEOPLAYERAPPUIENGINE_H
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include <e32base.h>
hgs
parents:
diff changeset
    26
#include <mpxplaybackutility.h>
hgs
parents:
diff changeset
    27
#include <mpxviewutility.h>
hgs
parents:
diff changeset
    28
#include <mpxcollectionutility.h>
hgs
parents:
diff changeset
    29
#include <mpxmessage2.h>
hgs
parents:
diff changeset
    30
#include <mpxcollectionplaylist.h>
hgs
parents:
diff changeset
    31
#include <mediarecognizer.h>
hgs
parents:
diff changeset
    32
#include <mpxplaybackobserver.h>
hgs
parents:
diff changeset
    33
#include <mpxviewactivationobserver.h>
hgs
parents:
diff changeset
    34
#include <mpxcollectionobserver.h>
hgs
parents:
diff changeset
    35
#include <mpxcollectionuihelperobserver.h>
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
class CMpxVideoEmbeddedPdlHandler;
hgs
parents:
diff changeset
    38
class CMPXCommonUiHelper;
hgs
parents:
diff changeset
    39
class MMPXCollectionUiHelper;
hgs
parents:
diff changeset
    40
class CAiwGenericParamList;
hgs
parents:
diff changeset
    41
class CVideoPlaylistUtility;
hgs
parents:
diff changeset
    42
class QMpxVideoPlaybackWrapper;
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
/**
hgs
parents:
diff changeset
    45
*  Application UI class.
hgs
parents:
diff changeset
    46
*
hgs
parents:
diff changeset
    47
*  @lib mpxvideoplayer.exe
hgs
parents:
diff changeset
    48
*  @since MpxVideoPlayer 0.1
hgs
parents:
diff changeset
    49
*/
hgs
parents:
diff changeset
    50
class CMpxVideoPlayerAppUiEngine : public CBase,
hgs
parents:
diff changeset
    51
                                   public MMPXPlaybackObserver,
hgs
parents:
diff changeset
    52
                                   public MMPXViewActivationObserver,
hgs
parents:
diff changeset
    53
                                   public MMPXCollectionObserver ,
hgs
parents:
diff changeset
    54
                                   public MMPXCHelperEmbeddedOpenObserver
hgs
parents:
diff changeset
    55
{
hgs
parents:
diff changeset
    56
    public:        // Constructors and destructor
hgs
parents:
diff changeset
    57
        static CMpxVideoPlayerAppUiEngine* NewL( QMpxVideoPlaybackWrapper* aWrapper );
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
        /**
hgs
parents:
diff changeset
    60
        * Destructor.
hgs
parents:
diff changeset
    61
        */
hgs
parents:
diff changeset
    62
        virtual ~CMpxVideoPlayerAppUiEngine();
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
    public:
hgs
parents:
diff changeset
    65
        /*
hgs
parents:
diff changeset
    66
         *  Retrieve the playback utility pointer
hgs
parents:
diff changeset
    67
         */
hgs
parents:
diff changeset
    68
        inline MMPXPlaybackUtility* PlaybackUtility();
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
        /**
hgs
parents:
diff changeset
    71
         * Opens the specified file in response to a corresponding message.
hgs
parents:
diff changeset
    72
         *
hgs
parents:
diff changeset
    73
         * @param aFile File to be opened.
hgs
parents:
diff changeset
    74
         * @param aParams aiw generic parameters for the file
hgs
parents:
diff changeset
    75
         */
hgs
parents:
diff changeset
    76
        void OpenFileL( RFile& aFile, const CAiwGenericParamList* aParams );
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
        /**
hgs
parents:
diff changeset
    79
         * Opens the specified file in response to a corresponding message.
hgs
parents:
diff changeset
    80
         *
hgs
parents:
diff changeset
    81
         * @param aFile File to be opened.
hgs
parents:
diff changeset
    82
         */
hgs
parents:
diff changeset
    83
        void OpenFileL( const TDesC& aFileName );
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
        /**
hgs
parents:
diff changeset
    86
         * Opens the specified mpx media object.
hgs
parents:
diff changeset
    87
         *
hgs
parents:
diff changeset
    88
         * @param aMedia Media to be opened.
hgs
parents:
diff changeset
    89
         */
hgs
parents:
diff changeset
    90
        void OpenMediaL( const CMPXMedia& aMedia );
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
        /**
hgs
parents:
diff changeset
    93
         * Handle playback message
hgs
parents:
diff changeset
    94
         *
hgs
parents:
diff changeset
    95
         * @param aMessage playback message
hgs
parents:
diff changeset
    96
         */
hgs
parents:
diff changeset
    97
        void DoHandlePlaybackMessageL( const CMPXMessage& aMessage );
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
        /**
hgs
parents:
diff changeset
   100
         * Handle Player Changed Playback Message
hgs
parents:
diff changeset
   101
         */
hgs
parents:
diff changeset
   102
        void HandlePlaybackPlayerChangedL();
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
        /**
hgs
parents:
diff changeset
   105
         * Sets mpx components ready for application shutdown
hgs
parents:
diff changeset
   106
         */
hgs
parents:
diff changeset
   107
        void PrepareCloseMpxL();
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
        /**
hgs
parents:
diff changeset
   110
         * Sets AppUiEngine in stand alone "mode"
hgs
parents:
diff changeset
   111
         */
hgs
parents:
diff changeset
   112
        void StartStandAloneL();
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
        /**
hgs
parents:
diff changeset
   115
         * Handle media properties.
hgs
parents:
diff changeset
   116
         */
hgs
parents:
diff changeset
   117
        void DoHandelCollectionMediaL( const CMPXMedia& aMedia );
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
        /**
hgs
parents:
diff changeset
   120
         * Steps one level up in collection path
hgs
parents:
diff changeset
   121
         */
hgs
parents:
diff changeset
   122
        void StepBackCollectionPathL();
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
        /**
hgs
parents:
diff changeset
   125
         * Initialize the playback engine with a collection path
hgs
parents:
diff changeset
   126
         * @param aPath The collection path to create the playlist from
hgs
parents:
diff changeset
   127
         */
hgs
parents:
diff changeset
   128
        void InitPlaybackEngineL( CMPXCollectionPath& aPath );
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
        /**
hgs
parents:
diff changeset
   131
         * Process activation message.
hgs
parents:
diff changeset
   132
         * @param aMsg reference to activation message
hgs
parents:
diff changeset
   133
         */
hgs
parents:
diff changeset
   134
        void ProcessActivationMessageL( const TDesC8 &aMsg );
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
        /*
hgs
parents:
diff changeset
   137
         * Handle embedded playback message
hgs
parents:
diff changeset
   138
         * @param aMessageUid message identification uid
hgs
parents:
diff changeset
   139
         * @param aMessageParameters  aiw generic parameters
hgs
parents:
diff changeset
   140
         */
hgs
parents:
diff changeset
   141
        TBool HandleMessageL( TUid aMessageUid,
hgs
parents:
diff changeset
   142
                              const TDesC8& aMessageParameters );
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
        /**
hgs
parents:
diff changeset
   145
         * From MMPXPlaybackObserver
hgs
parents:
diff changeset
   146
         * Handle playback message
hgs
parents:
diff changeset
   147
         *
hgs
parents:
diff changeset
   148
         * @since 3.1
hgs
parents:
diff changeset
   149
         * @param aMessage playback message
hgs
parents:
diff changeset
   150
         * @param aErr system error code.
hgs
parents:
diff changeset
   151
         */
hgs
parents:
diff changeset
   152
        void HandlePlaybackMessage( CMPXMessage* aMessage, TInt aError );
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
        /**
hgs
parents:
diff changeset
   155
         * From MMPXViewActivationObserver
hgs
parents:
diff changeset
   156
         * Handle view activation.
hgs
parents:
diff changeset
   157
         *
hgs
parents:
diff changeset
   158
         * @since 3.1
hgs
parents:
diff changeset
   159
         * @param aCurrentViewType Current view type Uid.
hgs
parents:
diff changeset
   160
         * @param aPreviousViewType Previous view type Uid.
hgs
parents:
diff changeset
   161
         */
hgs
parents:
diff changeset
   162
        void HandleViewActivation( const TUid& aCurrentViewType, const TUid& aPreviousViewType );
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
        /**
hgs
parents:
diff changeset
   166
         *  From MPXCollectionObserver
hgs
parents:
diff changeset
   167
         *  @since S60 3.2.3
hgs
parents:
diff changeset
   168
         *  @param aMessage collection message, ownership not transferred.
hgs
parents:
diff changeset
   169
         *         Please check aMsg is not NULL before using it. If aErr is not
hgs
parents:
diff changeset
   170
         *         KErrNone, plugin might still call back with more info in the aMsg.
hgs
parents:
diff changeset
   171
         *  @param aErr system error code
hgs
parents:
diff changeset
   172
         */
hgs
parents:
diff changeset
   173
        void HandleCollectionMessage( CMPXMessage* aMsg, TInt /*aErr*/ );
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
        /**
hgs
parents:
diff changeset
   176
         * From MMPXCollectionObserver
hgs
parents:
diff changeset
   177
         * Handle media properties.
hgs
parents:
diff changeset
   178
         *
hgs
parents:
diff changeset
   179
         * @since 3.1
hgs
parents:
diff changeset
   180
         * @param aMedia  media properties.
hgs
parents:
diff changeset
   181
         * @param aError Error code.
hgs
parents:
diff changeset
   182
         */
hgs
parents:
diff changeset
   183
        void HandleCollectionMediaL( const CMPXMedia& aMedia, TInt aError );
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
         /**
hgs
parents:
diff changeset
   186
         * From MMPXCollectionObserver
hgs
parents:
diff changeset
   187
         * Handles the collection entries being opened.
hgs
parents:
diff changeset
   188
         *
hgs
parents:
diff changeset
   189
         * @since 3.1
hgs
parents:
diff changeset
   190
         * @param aEntries Collection entries opened.
hgs
parents:
diff changeset
   191
         * @param aIndex Focused entry.
hgs
parents:
diff changeset
   192
         * @param aComplete ETrue no more entries. EFalse more entries
hgs
parents:
diff changeset
   193
         *                  expected.
hgs
parents:
diff changeset
   194
         * @param aError Error code.
hgs
parents:
diff changeset
   195
         */
hgs
parents:
diff changeset
   196
        void HandleOpenL( const CMPXMedia& aEntries,
hgs
parents:
diff changeset
   197
                          TInt aIndex,
hgs
parents:
diff changeset
   198
                          TBool aComplete,
hgs
parents:
diff changeset
   199
                          TInt aError );
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
        /**
hgs
parents:
diff changeset
   202
         * From MMPXCollectionObserver
hgs
parents:
diff changeset
   203
         * Handles the item being opened.
hgs
parents:
diff changeset
   204
         *
hgs
parents:
diff changeset
   205
         * @since 3.1
hgs
parents:
diff changeset
   206
         * @param aPlaylist Collection playlist, owner ship is transfered.
hgs
parents:
diff changeset
   207
         * @param aError Error code.
hgs
parents:
diff changeset
   208
         */
hgs
parents:
diff changeset
   209
        void HandleOpenL( const CMPXCollectionPlaylist& aPlaylist, TInt aError);
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
        // from base class MMPXCHelperEmbeddedOpenObserver
hgs
parents:
diff changeset
   212
            /**
hgs
parents:
diff changeset
   213
            * From MMPXCHelperEmbeddedOpenObserver
hgs
parents:
diff changeset
   214
            * Handles errors from opening in embedded mode
hgs
parents:
diff changeset
   215
            *
hgs
parents:
diff changeset
   216
            * @since 3.1
hgs
parents:
diff changeset
   217
            * @param aErr Error code
hgs
parents:
diff changeset
   218
            * @param aCategory Type of item to be opened.
hgs
parents:
diff changeset
   219
            */
hgs
parents:
diff changeset
   220
        void HandleEmbeddedOpenL( TInt aErr, TMPXGeneralCategory aCategory  );
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
        void CreateEmbeddedPdlPlaybackUtilityMemberVariablesL();
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
        /*
hgs
parents:
diff changeset
   225
         * Handles the "back" button.
hgs
parents:
diff changeset
   226
         */
hgs
parents:
diff changeset
   227
        void HandleSoftKeyBackL();
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
        /*
hgs
parents:
diff changeset
   230
         *  Processes shell commands.
hgs
parents:
diff changeset
   231
         *  @param aCommand
hgs
parents:
diff changeset
   232
         *  @param aDocumentName
hgs
parents:
diff changeset
   233
         *  @param aTail
hgs
parents:
diff changeset
   234
         *  @return  ETrue if document name exists
hgs
parents:
diff changeset
   235
         */
hgs
parents:
diff changeset
   236
        TBool ProcessCommandParametersL( TApaCommand aCommand,
hgs
parents:
diff changeset
   237
                                         TFileName& aDocumentName,
hgs
parents:
diff changeset
   238
                                         const TDesC8& aTail );
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
        /*
hgs
parents:
diff changeset
   241
         *  Provides the static function for the callback to exit the application
hgs
parents:
diff changeset
   242
         *  Called by CIdle iIdle
hgs
parents:
diff changeset
   243
         *  @since 9.2
hgs
parents:
diff changeset
   244
         *  @param aPtr Pointer to callback class
hgs
parents:
diff changeset
   245
         *  @return KErrNone
hgs
parents:
diff changeset
   246
         */
hgs
parents:
diff changeset
   247
        static TInt ExitApplicationL( TAny* aPtr );
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
    private:
hgs
parents:
diff changeset
   250
        /**
hgs
parents:
diff changeset
   251
         * Constructor
hgs
parents:
diff changeset
   252
         */
hgs
parents:
diff changeset
   253
        CMpxVideoPlayerAppUiEngine( QMpxVideoPlaybackWrapper* aWrapper );
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
        /**
hgs
parents:
diff changeset
   256
         * By default Symbian 2nd phase constructor is private.
hgs
parents:
diff changeset
   257
         */
hgs
parents:
diff changeset
   258
        void ConstructL();
hgs
parents:
diff changeset
   259
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
        void HandleMultiLinksFileL( const TDesC& aFileName,
hgs
parents:
diff changeset
   262
                                    CMediaRecognizer::TMediaType aMediaType );
hgs
parents:
diff changeset
   263
hgs
parents:
diff changeset
   264
        void HandleMultiLinksFileL( RFile& aFile,
hgs
parents:
diff changeset
   265
                                    CMediaRecognizer::TMediaType aMediaType );
hgs
parents:
diff changeset
   266
hgs
parents:
diff changeset
   267
        void DoHandleMultiLinksFileL( CVideoPlaylistUtility* aPlaylistUtil,
hgs
parents:
diff changeset
   268
                                      TBool aSingleLink,
hgs
parents:
diff changeset
   269
                                      TBool aLocalFile );
hgs
parents:
diff changeset
   270
hgs
parents:
diff changeset
   271
        /**
hgs
parents:
diff changeset
   272
         *  Handles the Url descriptor
hgs
parents:
diff changeset
   273
         *
hgs
parents:
diff changeset
   274
         *  @param aUrl - the ulr to be handled
hgs
parents:
diff changeset
   275
         */
hgs
parents:
diff changeset
   276
        void HandleUrlDesL(const TDesC& aUrl);
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
        TPtrC GetLinkLC( const TDesC& aFileName,
hgs
parents:
diff changeset
   279
                         CMediaRecognizer::TMediaType aMediaType,
hgs
parents:
diff changeset
   280
                         TBool aUseFileHandle = EFalse );
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
        TInt HandleAiwGenericParamListL( const CAiwGenericParamList* aParams );
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
        /**
hgs
parents:
diff changeset
   285
        * Handle collection message
hgs
parents:
diff changeset
   286
        *
hgs
parents:
diff changeset
   287
        * @param aMessage collection message
hgs
parents:
diff changeset
   288
        */
hgs
parents:
diff changeset
   289
       void DoHandleCollectionMessageL( CMPXMessage* aMessage );
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
       void CreatePlaybackUtilityMemberVariablesL();
hgs
parents:
diff changeset
   292
hgs
parents:
diff changeset
   293
       void CreateCollectionUtilityMemberVariablesL();
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
       void CreateRemoteControlListenerL();
hgs
parents:
diff changeset
   296
hgs
parents:
diff changeset
   297
       /*
hgs
parents:
diff changeset
   298
        *  Activates an active object to exit the application
hgs
parents:
diff changeset
   299
        *  @since 5.0
hgs
parents:
diff changeset
   300
        */
hgs
parents:
diff changeset
   301
       void ActivateExitActiveObject();
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
       /*
hgs
parents:
diff changeset
   304
        *  Called to stop and exit the application
hgs
parents:
diff changeset
   305
        *  @since 9.2
hgs
parents:
diff changeset
   306
        *  @return void
hgs
parents:
diff changeset
   307
        */
hgs
parents:
diff changeset
   308
       virtual void DoExitApplicationL();
hgs
parents:
diff changeset
   309
       
hgs
parents:
diff changeset
   310
	   /*
hgs
parents:
diff changeset
   311
	   * used to send media info to plugin
hgs
parents:
diff changeset
   312
	   */
hgs
parents:
diff changeset
   313
       void UpdatePbPluginMediaL();
hgs
parents:
diff changeset
   314
hgs
parents:
diff changeset
   315
       void ActivateVideoPlaybackView();
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
    private:       // data
hgs
parents:
diff changeset
   318
hgs
parents:
diff changeset
   319
        //
hgs
parents:
diff changeset
   320
        //  Owned Utilities
hgs
parents:
diff changeset
   321
        //
hgs
parents:
diff changeset
   322
        MMPXPlaybackUtility*     iPlaybackUtility;
hgs
parents:
diff changeset
   323
        //Do we need this?  MMPXViewUtility*         iViewUtility;
hgs
parents:
diff changeset
   324
        MMPXCollectionUtility*   iCollectionUtility;
hgs
parents:
diff changeset
   325
        MMPXCollectionUiHelper*  iCollectionUiHelper;  // own
hgs
parents:
diff changeset
   326
hgs
parents:
diff changeset
   327
        TUid iVideoCollectionId;
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
        CIdle*                        iExitAo;
hgs
parents:
diff changeset
   330
        CMediaRecognizer*             iRecognizer;       // own
hgs
parents:
diff changeset
   331
        CMpxVideoEmbeddedPdlHandler*  iPdlHandler;       // own
hgs
parents:
diff changeset
   332
hgs
parents:
diff changeset
   333
        TInt                     iAccessPointId;
hgs
parents:
diff changeset
   334
        TBool                    iMultilinkPlaylist;
hgs
parents:
diff changeset
   335
        TBool                    iSeekable;
hgs
parents:
diff changeset
   336
        TBool                    iUpdateSeekInfo;
hgs
parents:
diff changeset
   337
hgs
parents:
diff changeset
   338
        QMpxVideoPlaybackWrapper* iPlaybackWrapper;
hgs
parents:
diff changeset
   339
};
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
//
hgs
parents:
diff changeset
   342
//  Inline methods
hgs
parents:
diff changeset
   343
//
hgs
parents:
diff changeset
   344
inline
hgs
parents:
diff changeset
   345
MMPXPlaybackUtility* CMpxVideoPlayerAppUiEngine::PlaybackUtility()
hgs
parents:
diff changeset
   346
{
hgs
parents:
diff changeset
   347
    return iPlaybackUtility;
hgs
parents:
diff changeset
   348
}
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
#endif             // CMPXVIDEOPLAYERAPPUIENGINE_H