mmsharing/mmshui/inc/musuiclipsharingcontroller.h
branchRCL_3
changeset 33 bc78a40cd63c
equal deleted inserted replaced
32:73a1feb507fb 33:bc78a40cd63c
       
     1 /*
       
     2 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef MUSUICLIPSHARINGCONTROLLER_H
       
    20 #define MUSUICLIPSHARINGCONTROLLER_H
       
    21 
       
    22 #include "musuisendcontroller.h"
       
    23 #include "musengclipsessionobserver.h"
       
    24 #include "musunittesting.h"
       
    25 #include "musuiactivetimerobserver.h"
       
    26 
       
    27 #include <e32base.h>
       
    28 #include <badesca.h>
       
    29 
       
    30 class MMusUiClipSharingObserver;
       
    31 class CMusEngClipSession;
       
    32 class CMusUiActiveTimer;
       
    33 
       
    34 /**
       
    35  *
       
    36  *
       
    37  * @lib musui.exe
       
    38  */
       
    39 class CMusUiClipSharingController : public CMusUiSendController,
       
    40                                     public MMusEngClipSessionObserver,
       
    41                                     public MMusUiActiveTimerObserver
       
    42     {
       
    43 
       
    44     MUS_UNITTEST( UT_CMusUiClipSharingController )
       
    45 
       
    46 public:
       
    47 
       
    48     static CMusUiClipSharingController* NewL(
       
    49                             MMusUiEventObserver& aEventObserver,
       
    50                             MMusUiSharingObserver& aSharingObserver,
       
    51 	                        MMusUiSendObserver& aSendObserver,
       
    52                             MMusUiClipSharingObserver& aClipObserver,
       
    53                             const TRect& aRect );
       
    54 
       
    55     virtual ~CMusUiClipSharingController();
       
    56 
       
    57 
       
    58 private:
       
    59 
       
    60     CMusUiClipSharingController( MMusUiEventObserver& aEventObserver,
       
    61                                  MMusUiSharingObserver& aSharingObserver,
       
    62 	                             MMusUiSendObserver& aSendObserver,
       
    63 	                             MMusUiClipSharingObserver& aClipObserver );
       
    64 
       
    65     void ConstructL( const TRect& aRect );
       
    66 
       
    67 
       
    68 public: // From CMusUiEventController:
       
    69 
       
    70     virtual void OfferToolbarEventL( TInt aCommand );
       
    71 
       
    72     virtual void HandleCommandL( TInt aCommand );
       
    73 
       
    74     virtual void HandleAsyncEventL( TMusUiAsyncEvent aEventId );
       
    75 
       
    76     virtual void DeleteEngineSession();
       
    77     
       
    78 
       
    79 public: // from CMusUiSendController
       
    80 
       
    81     virtual CMusEngMceOutSession* EngineOutSession();
       
    82     
       
    83     /**
       
    84     * Handles status changes specific to sending side sharing types.
       
    85     * To be overridden in sibling classes for sharing type specific 
       
    86     * status changes. Calls base class version if status change is not
       
    87     * sending side specific.
       
    88     */
       
    89     virtual void HandleChangedStatusL( TMusAvailabilityStatus aStatus );
       
    90 
       
    91     virtual void InviteL( const TDesC& aRecipient );
       
    92     
       
    93     virtual void HandleSliderValueChangeL( TInt aNewLevel );
       
    94     
       
    95  
       
    96 public: // new functions:    
       
    97   
       
    98     void SetFileNameL( const TDesC& aFileName );
       
    99 
       
   100     TBool ClipEnded();
       
   101     
       
   102     TBool ClipMutedL();
       
   103     
       
   104     TBool ClipContainsAudioL();
       
   105     
       
   106     void CancelTranscodingL();
       
   107 
       
   108     void StopWindingL();
       
   109 
       
   110     TBool ToolbarFFRevSelected();
       
   111 
       
   112 
       
   113 private:    // new functions:
       
   114 
       
   115     void TranscodingProgressedL( TInt aPercentage );
       
   116 
       
   117     void TranscodingCompletedInitL();
       
   118     
       
   119     void TranscodingCompletedFinalizeL();
       
   120     
       
   121     const TDesC& FormattedDurationString( 
       
   122                             const TTimeIntervalSeconds& aDurationSeconds,
       
   123                             const TTimeIntervalSeconds& aPositionSeconds );
       
   124     
       
   125 
       
   126 public: // From MMusEngClipSessionObserver
       
   127 
       
   128     virtual void EndOfClip();
       
   129 
       
   130     virtual void TranscodingNeeded(TBool aDueUnknownRemoteCapabilities);
       
   131         
       
   132     virtual void TranscodingProgressed( TInt aPercentage );
       
   133     
       
   134     virtual void TranscodingCompletedInit();
       
   135     
       
   136     virtual void TranscodingCompletedFinalize();
       
   137     
       
   138     virtual void TranscodingFailed();
       
   139     
       
   140     virtual void RewindFromEndL();
       
   141     
       
   142 
       
   143 public: // from MMusEngOutSessionObserver
       
   144 
       
   145     virtual void SessionRecipientNotFound();            // 404
       
   146 
       
   147 
       
   148 public: // from MMusEngSessionObserver
       
   149 
       
   150     virtual void SessionEstablished();
       
   151 
       
   152     virtual void SessionTerminated();
       
   153 
       
   154     virtual void SessionConnectionLost();
       
   155 
       
   156     virtual void SessionFailed();
       
   157 
       
   158     virtual void StreamIdle();
       
   159 
       
   160     virtual void StreamStreaming();
       
   161 
       
   162     virtual void SessionTimeChanged( const TTimeIntervalSeconds& aSeconds );
       
   163 
       
   164     virtual void InactivityTimeout();
       
   165    
       
   166     
       
   167 public: // from MMusUiActiveTimerObserver
       
   168 
       
   169     void TimerComplete( CMusUiActiveTimer* aTimer );
       
   170 
       
   171 
       
   172 private:    // new functions:
       
   173 
       
   174     void StreamStreamingL();
       
   175     
       
   176     void StreamIdleL();
       
   177 
       
   178     void SessionTimeChangedL( const TTimeIntervalSeconds& aSeconds );
       
   179     
       
   180     TBool DoFastForwardingL( TBool aUseWinding );
       
   181     
       
   182     TBool DoFastRewindingL( TBool aUseWinding );
       
   183     
       
   184     TBool DoInviteL();
       
   185 
       
   186 
       
   187 private:
       
   188 
       
   189     MMusUiClipSharingObserver& iClipObserver;
       
   190 
       
   191     CMusEngClipSession* iSession;
       
   192 
       
   193     HBufC* iFileName;
       
   194 
       
   195     TRect iRect;
       
   196 
       
   197     TBool iClipEnded;
       
   198 
       
   199     TBool iTranscode;
       
   200     
       
   201     TBool iTranscodeDueUnknownRemoteCapas;
       
   202     
       
   203     TBool iTranscodingGoing;
       
   204     
       
   205     TBool iToolbarFFRevSelected;
       
   206 
       
   207     TBuf<11> iDurationStringBuffer;
       
   208 
       
   209     TBool iFastForward;
       
   210 
       
   211     TBool iFastRewind;
       
   212     
       
   213     TBool iFileFetchingOngoing;
       
   214     
       
   215     // timer initiating session close on expiring
       
   216     CMusUiActiveTimer* iCloseTimer;
       
   217     
       
   218     TBool iWasPlayingBeforeWinding;
       
   219     
       
   220     };
       
   221 
       
   222 #endif // MUSUICLIPSHARINGCONTROLLER_H
       
   223 
       
   224 // end of file