diff -r 73a1feb507fb -r bc78a40cd63c mmsharing/mmshui/inc/musuisendcontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshui/inc/musuisendcontroller.h Wed Sep 01 12:31:01 2010 +0100 @@ -0,0 +1,258 @@ +/* +* Copyright (c) 2007 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 MUSUISENDCONTROLLER_H +#define MUSUISENDCONTROLLER_H + +#include "musuieventcontroller.h" +#include "musengoutsessionobserver.h" +#include "musunittesting.h" + +#include "musengoutsessionobserver.h" +#include + +class MMusUiSendObserver; +class CMusEngMceOutSession; +class CDirectoryLocalizer; + +/** + * + * + * @lib musui.exe + */ +class CMusUiSendController : public CMusUiEventController, + public MMusEngOutSessionObserver + { + +public: + + virtual ~CMusUiSendController(); + + +public: // From CMusUiEventController: + + /** + * Returns a pointer to engine side session. + */ + virtual CMusEngMceSession* EngineSession(); + + /** + * + */ + virtual const TDesC& TypedAddress() const; + + /** + * + */ + virtual TBool ManualAddressTyped() const; + + /** + * Makes out session specific preparations for engine session deletion. + */ + virtual void DeleteEngineSession(); + + +public: // From MMusUiPropertyObserver + + virtual void HandlePropertyError( const TInt aReason ); + + +public: // From MMusUiCallbackObserver + + /** + * Handles async events common to outgoing session types. + * Should be called if child classes are not able to handle the call. + */ + virtual void HandleAsyncEventL( TMusUiAsyncEvent aEventId ); + + +public: // new functions: + + /** + * Returns a pointer to engine side session. + */ + virtual CMusEngMceOutSession* EngineOutSession() = 0; + + virtual void InviteL( const TDesC& aRecipient ) = 0; + + virtual void HandleSliderValueChangeL( TInt aNewLevel ) = 0; + + void StartInvitationL(); + + void InviteL(); + + void CancelInvitationL(); + + virtual void HandleForegroundEventL( TBool aForeground ); + + virtual void PlayL(); + + virtual void PauseL(); + + TBool IsPlayingL(); + + +public: // from MMusEngSessionObserver + + virtual void SessionEstablished(); + + +public: // from MMusEngOutSessionObserver + + virtual void SessionRejected(); // e.g. 603 DECLINE + + virtual void SessionBadRequest(); // 400 + + virtual void SessionUnauthorized(); // 401 + + virtual void SessionPaymentRequired(); // 402 + + virtual void SessionRecipientNotFound(); // 404 + + virtual void SessionProxyAuthenticationRequired(); // 407 + + virtual void SessionRequestTimeOut(); // 408 + + virtual void SessionUnsupportedMediaType(); // 415 + + virtual void SessionBusyHere(); // 486 + + virtual void SessionRequestCancelled(); // 487 + + virtual void SessionTemporarilyNotAvailable(); // 480 + + +protected: // Contructors + + void ConstructL(); + + CMusUiSendController( MMusUiEventObserver& aEventObserver, + MMusUiSharingObserver& aSharingObserver, + MMusUiSendObserver& aSendObserver ); + + +protected: // from MusUiEventController + + /** + * Send specific functionality of exit procedure + */ + virtual void ExitProcedureL( TBool aUserAcceptance ); + + /** + * 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 ); + + +protected: + + /** + * + */ + const TDesC& VideoFileNameL(); + + void ShowInvitingWaitDialogL(); + + void DismissWaitDialog(); + + +private: // Helpers + + void SplitL( const TDesC& aDes, const TDesC& aChar, CDesCArray* aArray ); + + void SetVideoPathValueL(); + + void ShowVideoSavedDialogL(); + + void DeleteVideoL(); + + void DeleteFileL(); + +protected: // Data + + /* + * Interface for outgoing session specific callbacks + */ + MMusUiSendObserver& iSendObserver; + + HBufC* iAddress; + + TBool iVideoToBeSaved; + + TBool iManualAddressTyped; + + TInt iTriedInvitations; + + /** + * + */ + TBool iSipRegistrationPending; + + /** + * + */ + HBufC* iRemoteSipAddress; + + /** + * + */ + HBufC* iRemoteSipAddressProposal; + + +private: // Data + + /** + * If this variable is ETrue, playback should be continued + * when gaining focus. ETrue by default. + */ + TBool iContinuePlayingWhenForeground; + + /** + * + */ + HBufC* iVideoFileName; + + CDirectoryLocalizer* iLocalizer; + +protected: + /** + * The class is used as a call back service of the wait dialog + */ + class TWaitDialogCallback : public MProgressDialogCallback + { + public: + TWaitDialogCallback( CMusUiSendController& aController ); + void DialogDismissedL( TInt /*aButtonId*/ ); + + private: + CMusUiSendController& iController; + + }iWaitDialogCallback; + + /** + * If this variable is ETrue, playback should be continued + * when gaining focus. ETrue by default. + */ + }; + +#endif // MUSUISENDCONTROLLER_H + +// end of file