mmsharing/mmshui/inc/musuiclipsharingcontroller.h
branchRCL_3
changeset 23 bc78a40cd63c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshui/inc/musuiclipsharingcontroller.h	Wed Sep 01 12:31:01 2010 +0100
@@ -0,0 +1,224 @@
+/*
+* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef MUSUICLIPSHARINGCONTROLLER_H
+#define MUSUICLIPSHARINGCONTROLLER_H
+
+#include "musuisendcontroller.h"
+#include "musengclipsessionobserver.h"
+#include "musunittesting.h"
+#include "musuiactivetimerobserver.h"
+
+#include <e32base.h>
+#include <badesca.h>
+
+class MMusUiClipSharingObserver;
+class CMusEngClipSession;
+class CMusUiActiveTimer;
+
+/**
+ *
+ *
+ * @lib musui.exe
+ */
+class CMusUiClipSharingController : public CMusUiSendController,
+                                    public MMusEngClipSessionObserver,
+                                    public MMusUiActiveTimerObserver
+    {
+
+    MUS_UNITTEST( UT_CMusUiClipSharingController )
+
+public:
+
+    static CMusUiClipSharingController* NewL(
+                            MMusUiEventObserver& aEventObserver,
+                            MMusUiSharingObserver& aSharingObserver,
+	                        MMusUiSendObserver& aSendObserver,
+                            MMusUiClipSharingObserver& aClipObserver,
+                            const TRect& aRect );
+
+    virtual ~CMusUiClipSharingController();
+
+
+private:
+
+    CMusUiClipSharingController( MMusUiEventObserver& aEventObserver,
+                                 MMusUiSharingObserver& aSharingObserver,
+	                             MMusUiSendObserver& aSendObserver,
+	                             MMusUiClipSharingObserver& aClipObserver );
+
+    void ConstructL( const TRect& aRect );
+
+
+public: // From CMusUiEventController:
+
+    virtual void OfferToolbarEventL( TInt aCommand );
+
+    virtual void HandleCommandL( TInt aCommand );
+
+    virtual void HandleAsyncEventL( TMusUiAsyncEvent aEventId );
+
+    virtual void DeleteEngineSession();
+    
+
+public: // from CMusUiSendController
+
+    virtual CMusEngMceOutSession* EngineOutSession();
+    
+    /**
+    * Handles status changes specific to sending side sharing types.
+    * To be overridden in sibling classes for sharing type specific 
+    * status changes. Calls base class version if status change is not
+    * sending side specific.
+    */
+    virtual void HandleChangedStatusL( TMusAvailabilityStatus aStatus );
+
+    virtual void InviteL( const TDesC& aRecipient );
+    
+    virtual void HandleSliderValueChangeL( TInt aNewLevel );
+    
+ 
+public: // new functions:    
+  
+    void SetFileNameL( const TDesC& aFileName );
+
+    TBool ClipEnded();
+    
+    TBool ClipMutedL();
+    
+    TBool ClipContainsAudioL();
+    
+    void CancelTranscodingL();
+
+    void StopWindingL();
+
+    TBool ToolbarFFRevSelected();
+
+
+private:    // new functions:
+
+    void TranscodingProgressedL( TInt aPercentage );
+
+    void TranscodingCompletedInitL();
+    
+    void TranscodingCompletedFinalizeL();
+    
+    const TDesC& FormattedDurationString( 
+                            const TTimeIntervalSeconds& aDurationSeconds,
+                            const TTimeIntervalSeconds& aPositionSeconds );
+    
+
+public: // From MMusEngClipSessionObserver
+
+    virtual void EndOfClip();
+
+    virtual void TranscodingNeeded(TBool aDueUnknownRemoteCapabilities);
+        
+    virtual void TranscodingProgressed( TInt aPercentage );
+    
+    virtual void TranscodingCompletedInit();
+    
+    virtual void TranscodingCompletedFinalize();
+    
+    virtual void TranscodingFailed();
+    
+    virtual void RewindFromEndL();
+    
+
+public: // from MMusEngOutSessionObserver
+
+    virtual void SessionRecipientNotFound();            // 404
+
+
+public: // from MMusEngSessionObserver
+
+    virtual void SessionEstablished();
+
+    virtual void SessionTerminated();
+
+    virtual void SessionConnectionLost();
+
+    virtual void SessionFailed();
+
+    virtual void StreamIdle();
+
+    virtual void StreamStreaming();
+
+    virtual void SessionTimeChanged( const TTimeIntervalSeconds& aSeconds );
+
+    virtual void InactivityTimeout();
+   
+    
+public: // from MMusUiActiveTimerObserver
+
+    void TimerComplete( CMusUiActiveTimer* aTimer );
+
+
+private:    // new functions:
+
+    void StreamStreamingL();
+    
+    void StreamIdleL();
+
+    void SessionTimeChangedL( const TTimeIntervalSeconds& aSeconds );
+    
+    TBool DoFastForwardingL( TBool aUseWinding );
+    
+    TBool DoFastRewindingL( TBool aUseWinding );
+    
+    TBool DoInviteL();
+
+
+private:
+
+    MMusUiClipSharingObserver& iClipObserver;
+
+    CMusEngClipSession* iSession;
+
+    HBufC* iFileName;
+
+    TRect iRect;
+
+    TBool iClipEnded;
+
+    TBool iTranscode;
+    
+    TBool iTranscodeDueUnknownRemoteCapas;
+    
+    TBool iTranscodingGoing;
+    
+    TBool iToolbarFFRevSelected;
+
+    TBuf<11> iDurationStringBuffer;
+
+    TBool iFastForward;
+
+    TBool iFastRewind;
+    
+    TBool iFileFetchingOngoing;
+    
+    // timer initiating session close on expiring
+    CMusUiActiveTimer* iCloseTimer;
+    
+    TBool iWasPlayingBeforeWinding;
+    
+    };
+
+#endif // MUSUICLIPSHARINGCONTROLLER_H
+
+// end of file