--- a/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* 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: This file provides the information required for building the
-* ipappservices
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-../rom/multimediasharing.iby CORE_APP_LAYER_IBY_EXPORT_PATH(multimediasharing.iby)
-../rom/multimediasharingresources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(multimediasharingresources.iby)
-
-// Export stub sis file making possible eclipsing files in the rom image
-../rom/multimediasharing_stub.SIS /epoc32/data/z/system/install/multimediasharing_stub.sis
-
-PRJ_MMPFILES
-#include "../mmsharinguis_plat/group/bld.inf"
-#include "../mmsharing/group/bld.inf"
-#include "../mmshplugins/group/bld.inf"
-#include "../mmsharing/mmshui/help/group/bld.inf"
\ No newline at end of file
--- a/inc/musavasettings.h Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/musavasettings.h Tue Aug 31 15:12:07 2010 +0300
@@ -24,6 +24,7 @@
#include <badesca.h>
#include <e32base.h>
#include <e32std.h>
+#include <mussettingskeys.h>
class MMusAvaSettingsObserver;
@@ -49,10 +50,18 @@
};
public:
- /**
- * Returns the manual activation
- *
- */
+ /**
+ * Returns the fast mode value
+ *
+ * @return The fast mode value.
+ */
+ virtual MusSettingsKeys::TFastMode FastMode() const;
+
+
+ /**
+ * Returns the manual activation
+ *
+ */
virtual TManualActivation ManualActivation();
/**
@@ -117,20 +126,17 @@
*/
virtual void SetObserver( MMusAvaSettingsObserver& aObserver );
+ /*
+ * Gets the settings observer pointer
+ *
+ */
+ MMusAvaSettingsObserver* Observer();
+
/**
* Sets the for the manual activation
*
*/
virtual void SetManualActivation( TManualActivation aManualActivation );
-
- /**
- * Returns the direction of the mobile call.
- *
- * @return 0, if the direction of the call is unknown.
- * 1, call is from public number.
- * 2, call is from private number
- */
- virtual TInt CallPrivacy();
};
--- a/inc/musavasettings.inl Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/musavasettings.inl Tue Aug 31 15:12:07 2010 +0300
@@ -11,12 +11,11 @@
*
* Contributors:
*
-* Description: ECOM interface default implementation.
+* Description: ECOM interface default implementation.
*
*/
-
#ifndef MUSAVASETTING_INL
#define MUSAVASETTING_INL
@@ -26,6 +25,16 @@
//
// -----------------------------------------------------------------------------
//
+inline MusSettingsKeys::TFastMode MMusAvaSettings::FastMode() const
+ {
+ User::Leave( KErrNotSupported );
+ return MusSettingsKeys::EFastModeOff;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
inline MMusAvaSettings::TManualActivation MMusAvaSettings::ManualActivation()
{
User::Leave( KErrNotSupported );
@@ -143,19 +152,19 @@
//
// -----------------------------------------------------------------------------
//
-inline void MMusAvaSettings::SetManualActivation( TManualActivation /*aManualActivation*/ )
+inline MMusAvaSettingsObserver* MMusAvaSettings::Observer()
{
- User::Leave( KErrNotSupported );
+ return NULL;
}
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-inline TInt MMusAvaSettings::CallPrivacy()
- {
+inline void MMusAvaSettings::SetManualActivation( TManualActivation /*aManualActivation*/ )
+ {
User::Leave( KErrNotSupported );
- return 0; // To avoid "return value expected" warning
}
+
#endif // MUSAVASETTING_INL
--- a/inc/muscallmonitorobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/muscallmonitorobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -16,12 +16,11 @@
*/
-
#ifndef MUSCALLMONITOROBSERVER_H
#define MUSCALLMONITOROBSERVER_H
#include <e32cmn.h>
-#include <CPbkContactItem.h>
+#include <badesca.h>
/**
* Observer for the monitor
@@ -33,22 +32,19 @@
public: // type definitions
- virtual void CallConnectedL( const TDesC& aTelNumber ) = 0;
+ virtual void CallConnectedL( const TDesC& aTelNumber, TBool aIsSipUri ) = 0;
- virtual void CallHoldL( const TDesC& aTelNumber ) = 0;
+ virtual void CallHoldL( const TDesC& aTelNumber, TBool aIsSipUri ) = 0;
virtual void ConferenceCallL() = 0;
virtual void NoActiveCallL() = 0;
-
- virtual void ConferenceCallLTerminated() = 0;
/**
*
*/
- virtual TBool ResolveAddressesL( CPbkContactItem& /*aPbkItem*/,
- CDesCArrayFlat*& /*aContactsArray*/,
- TPbkFieldId /*aTPbkFieldId*/ )
+ virtual TBool ResolveAddressesL( const TDesC& /*aContactId*/,
+ CDesCArrayFlat*& /*aContactsArray*/)
{
return EFalse;
}
--- a/inc/muscommon.h Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/muscommon.h Tue Aug 31 15:12:07 2010 +0300
@@ -53,6 +53,12 @@
ESipOptionsFailed // sip options revealed that the remote host is
// not capable of video sharing -> error
};
+
+ // values for application startup behavior (have same effect as command
+ // enumerations of CApaCommandLine)
+ const TUint KMusCommandLetterRun = 'R';
+ const TUint KMusCommandLetterBackground = 'B';
+
}
#endif // MUSMANAGERCOMMON_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/musfactorysettings.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2005-2006 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: This interface is used by
+* clients to get and availability setting for Video Charging
+*
+*/
+
+
+#ifndef __MUSFACTORYSETTINGS_H__
+#define __MUSFACTORYSETTINGS_H__
+
+// INCLUDES
+#include <badesca.h>
+#include <e32base.h>
+#include <etelmm.h>
+#include <ctsydomainpskeys.h>
+
+class MMusAvaSettingsObserver;
+
+/**
+ * Utility function to check the factory configurations.
+ * @lib musaoplugin.lib
+ */
+
+class MusFactorySettings
+ {
+public:
+ /**
+ * Checks from the factory settings whether call type is supported.
+ * @aCallType : Type of the call retrived from Tsy apis.
+ *
+ * @return ETrue if supported else EFalse.
+ * Leaves when cenrep key is not found or cenrep related error happens.
+ */
+ static TBool IsSupportedL(const TPSCTsyCallType& aCallType);
+
+ /**
+ * Checks from the factory settings whether network type is supported.
+ * @aNetworkType : Type of the network
+ *
+ * @return ETrue if supported else EFalse.
+ * Leaves when cenrep key is not found or cenrep related error happens.
+ */
+ static TBool IsSupportedL(const RMobilePhone::TMobilePhoneNetworkMode& aNetworkType);
+
+ };
+
+#include "musfactorysettings.inl"
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/musfactorysettings.inl Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,108 @@
+/*
+* Copyright (c) 2006 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 MUSFACTROYSETTINGS_INL
+#define MUSFACTORYSETTINGS_INL
+
+
+#include "musfactorysettings.h"
+#include "mussettingskeys.h"
+#include "mussettings.h"
+#include "muslogger.h"
+
+// -----------------------------------------------------------------------------
+// Checks from the factory settings ( central repository )
+// whether call type is supported.
+// -----------------------------------------------------------------------------
+//
+inline TBool MusFactorySettings::IsSupportedL(
+ const TPSCTsyCallType& aCallType)
+ {
+ MusSettingsKeys::TAllowedCSOnly allowedCallType =
+ MultimediaSharingSettings::AllowedCSOnlySettingL();
+ if( allowedCallType == MusSettingsKeys::EAllowedCSOnly &&
+ aCallType != EPSCTsyCallTypeCSVoice )
+ {
+ MUS_LOG( "mus: [MUSAO] <-> MusFactorySettings::IsSupportedL Call : EFalse" )
+ return EFalse;
+ }
+ MUS_LOG( "mus: [MUSAO] <-> MusFactorySettings::IsSupportedL Call : ETrue" )
+ return ETrue;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Checks from the factory settings ( central repository )
+// whether network type is supported.
+// -----------------------------------------------------------------------------
+//
+inline TBool MusFactorySettings::IsSupportedL(
+ const RMobilePhone::TMobilePhoneNetworkMode& aNetworkType)
+ {
+ MUS_LOG1( "mus: [MUSAO] -> MusFactorySettings::IsSupportedL Network :%d", aNetworkType )
+
+ TBool networkSupported = EFalse;
+ TInt onlyIn3GNetwork = MusSettingsKeys::EAllowedAllBearers;
+ // Check from Central Repository that do we Only support in 3G or All Networks.
+ // if key is not found then behave like default ie AllowedAllBearers.
+ TRAP_IGNORE( onlyIn3GNetwork = MultimediaSharingSettings::Allowed3GOnlySettingL() );
+ if( onlyIn3GNetwork == MusSettingsKeys::EAllowedAllBearers )
+ {
+ networkSupported = ETrue;
+ }
+ else
+ {
+ switch( aNetworkType )
+ {
+ case RMobilePhone::ENetworkModeWcdma:
+ case RMobilePhone::ENetworkModeTdcdma:
+ case RMobilePhone::ENetworkModeCdma95:
+ case RMobilePhone::ENetworkModeCdma2000:
+ {
+ networkSupported = ETrue;
+ break;
+ }
+
+ case RMobilePhone::ENetworkModeGsm:
+ {
+ TInt edgeDtmSupport = KErrNone;
+
+ // We Will throw an Activation Error for the Mandatory Settings if
+ // they are not found.
+
+ edgeDtmSupport = MultimediaSharingSettings::EdgeDtmSupportSettingL();
+
+ if( edgeDtmSupport == MusSettingsKeys::EDtmModeAllowed )
+ {
+ networkSupported = ETrue;
+ }
+ else
+ {
+ networkSupported = EFalse;
+ }
+ break;
+ }
+ }
+ }
+ MUS_LOG1( "mus: [MUSAO] <- MusFactorySettings::IsSupportedL (%d)", networkSupported )
+
+ return networkSupported;
+ }
+
+
+#endif // MUSFACTROYSETTINGS_INL
--- a/inc/musindicatorapi.h Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/musindicatorapi.h Tue Aug 31 15:12:07 2010 +0300
@@ -29,14 +29,28 @@
#include <e32property.h>
-
+class CMusIndicatorDsa;
class CAknGlobalMsgQuery;
class CMusSoundPlayer;
/**
- * MusIndicatorApi provides means to indicate availability
+ * MusIndicatorApi provides means to show notes and indicate availability
* of videosharing to user.
+ *
+ * @code
+ * // Shows roaming activation query
+ * if ( MusIndicatorApi::ConfirmationQueryL(
+ * MusIndicatorApi::EVsRoamingActivationQuery ) )
+ * {
+ * // respond to user response "yes"
+ * }
+ * else
+ * {
+ * // respond to user response "no"
+ * }
+ * @endcode
+ *
* @lib musindicator.lib
*/
class CMusIndicatorApi : public CActive, MMusSoundPlayerObserver
@@ -85,6 +99,14 @@
~CMusIndicatorApi();
/**
+ * Shows a global query to user.
+ *
+ * @param aQuery Identifies displayed query.
+ * @return Boolean value indicating if user accepted the query.
+ */
+ IMPORT_C static TBool ConfirmationQueryL( TVsPopupQuery aQuery );
+
+ /**
* Indicates availability of video sharing.
*/
IMPORT_C void IndicateAvailabilityL();
@@ -141,11 +163,39 @@
*/
void PlayToneL();
+ /**
+ * Returns text from a resource file for a specified note/query.
+ *
+ * @param aQuery Identifies displayed query.
+ * @return Text associated with specified query. Ownership is transferred.
+ */
+ static HBufC* NoteTextLC( TVsPopupQuery aQuery );
+
+ /**
+ * Asynchronous query. Result returned via observer interface.
+ */
+ void ShowLiveSharingQueryL( TBool aPlayTone );
+
+ static TInt LiveSharingQueryTimeout( TAny* aThis );
+
void StartLiveSharingL();
+ void ToggleIndicatorL();
+ TBool IsSubscriber() const;
private: // data
+ /**
+ * Pointer to indicator window
+ * Own.
+ */
+ CMusIndicatorDsa* iIndicatorWindow;
+
+ /**
+ * Pointer to global msg query.
+ * Own.
+ */
+ CAknGlobalMsgQuery* iQuery;
/**
* Sound player.
@@ -158,6 +208,8 @@
* Own.
*/
MMusIndicatorObserver* iObserver;
+
+ CPeriodic* iLiveSharingQueryTimeout;
RProperty iProperty;
--- a/inc/musresourcefinderutil.inl Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/musresourcefinderutil.inl Tue Aug 31 15:12:07 2010 +0300
@@ -59,7 +59,6 @@
BaflUtils::NearestLanguageFile(fs ,fName );
CleanupStack::PopAndDestroy( fileName ); // fileName
fileName = fName.AllocLC();
- fileNamePtr.Set(fileName->Des());
}
if ( BaflUtils::FileExists( fs, *fileName ) )
{
--- a/inc/mussesseioninformationapi.h Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/mussesseioninformationapi.h Tue Aug 31 15:12:07 2010 +0300
@@ -51,8 +51,7 @@
ENoCall,
ECallConnected,
ECallHold,
- EConferenceCall,
- EConferenceTerminated
+ EConferenceCall
};
/** Contains the call direction */
@@ -74,25 +73,11 @@
EMUSAllowed = 1,
EMUSForbidden
};
-
- /** Contains the call privacy */
- const TInt KMUSPrivacy( 0x102823A4 );
- /** Contains the possible values for call privacy*/
- enum TMusCallPrivacy
- {
- EPrivacyOn = 1,
- EPrivacyOff
- };
-
- /** Phone's CLIR setting. This is used in MO case to determine if the
- * caller's phone number/id is sent to remote party */
- const TInt KMusClirSetting( 0x102823A5 );
- /** Possible values for KMusClirSetting */
- enum TMusClirSetting
- {
- ESendOwnNumber,
- EDoNotSendOwnNumber
- };
+ /** Contains the call provider information. ( For example Skype )
+ * This string will be used to parse the corresponding ecom plugin
+ * which implements the livecomms engine api
+ */
+ const TInt KMUSCallProvider( 0x102823A4 );
}
#endif // MUSRESOURCEPROPERTIES_H
--- a/inc/mussessionproperties.h Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/mussessionproperties.h Tue Aug 31 15:12:07 2010 +0300
@@ -60,8 +60,8 @@
const TInt KSipProfileId( 0x1A );
const TInt KContactName( 0x1B );
- const TInt KPrivacyStatus( 0x1C );
const TInt KMusIndicatorStatus( KMusIndicator );
+ const TInt KFastMode( 0x1D );
}
#endif // MUSPSKEYS_H
--- a/inc/mussettings.h Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/mussettings.h Tue Aug 31 15:12:07 2010 +0300
@@ -14,7 +14,7 @@
* Description: ?Description
* Name : mussettingskeys.h
-* Version : %version: 9 % << Don't touch! Updated by Synergy at check-out.
+* Version : %version: 10 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -30,6 +30,51 @@
class MultimediaSharingSettings
{
public:
+
+ /**
+ * Returns the cenrep configured value for KFastStartupMode key.
+ *
+ * @return Current KVideoDirection Key value from cenrep.
+ */
+ static MusSettingsKeys::TFastMode FastStartupModeL();
+
+
+ /**
+ * Returns the cenrep configured value for KVideoBandwidth key.
+ *
+ * @return Current KVideoBandwidth Key value from cenrep.
+ */
+ static TInt VideoBandwidthSettingL();
+
+ /**
+ * Returns the cenrep configured value for KVideoDirection key.
+ *
+ * @return Current KVideoDirection Key value from cenrep.
+ */
+ static MusSettingsKeys::TVideoDirection VideoDirectionL();
+
+
+ /**
+ * Returns the cenrep configured value for KCameraUsage key.
+ *
+ * @return Current KCameraUsage Key value from cenrep.
+ */
+ static MusSettingsKeys::TUseCamera CameraUsageL();
+
+ /**
+ * Returns the cenrep configured value for AllowedCSOnly key.
+ *
+ * @return Current AllowedCSOnly Key value from cenrep.
+ */
+ static MusSettingsKeys::TAllowedCSOnly AllowedCSOnlySettingL();
+
+ /**
+ * Returns the cenrep configured value for Allowed3GOnly key.
+ *
+ * @return Current Allowed3GOnly Key value from cenrep.
+ */
+ static MusSettingsKeys::TAllowed3GOnly Allowed3GOnlySettingL();
+
/**
* Returns current MS activation setting.
*
@@ -80,6 +125,36 @@
*
* @return
*/
+ static MusSettingsKeys::TPopupNotification PopupNotificationSettingL();
+
+ /**
+ * Sets
+ *
+ * @param
+ */
+ static void SetPopupNotificationSettingL(
+ MusSettingsKeys::TPopupNotification aNotificationSetting );
+
+ /**
+ * Returns
+ *
+ * @return
+ */
+ static MusSettingsKeys::TPopupNotificationType PopupNotificationTypeSettingL();
+
+ /**
+ * Sets
+ *
+ * @param
+ */
+ static void SetPopupNotificationTypeSettingL(
+ MusSettingsKeys::TPopupNotificationType aNotificationSetting );
+
+ /**
+ * Returns
+ *
+ * @return
+ */
static MusSettingsKeys::TEdgeDtmSupport EdgeDtmSupportSettingL();
/**
@@ -235,9 +310,7 @@
* @param
* @param
*/
- static void MultimediaSharingSettings::SetPropertyValueL(
- TUint32 aKey,
- const TDesC& aValue );
+ static void SetPropertyValueL( TUint32 aKey, const TDesC& aValue );
/**
* For internal usage only. Use direct getters/setters for each setting.
@@ -246,22 +319,15 @@
* @param
*/
static void SetPropertyValueL( TUint32 aKey, TInt aValue );
-
+
/**
* If Encoding device set to KMusDisableAVC (0x0fffffff) returns ETrue
* else otherwise.
* Means AVC will be disabled when encoding device cenrep configuration
* set to 0x0fffffff.
*/
- static TBool MultimediaSharingSettings::IsAvcDisabled();
-
-
- /**
- * @return ETrue if privacy is requested
- * EFalse otherwise, or if an error occurred reading cenrep
- */
- static TBool PrivacySetting();
-
+ static TBool IsAvcDisabled();
+
};
#include "mussettings.inl"
--- a/inc/mussettings.inl Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/mussettings.inl Tue Aug 31 15:12:07 2010 +0300
@@ -12,7 +12,7 @@
* Contributors:
*
* Description: ?Description
-* Version : %version: 19 % << Don't touch! Updated by Synergy at check-out.
+* Version : %version: 20 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -191,6 +191,66 @@
//
// -----------------------------------------------------------------------------
//
+inline MusSettingsKeys::TPopupNotification
+ MultimediaSharingSettings::PopupNotificationSettingL()
+ {
+ MUS_LOG( "mus: [MUSSET] -> MultimediaSharingSettings::PopupNotificationSettingL()" )
+ TInt value = GetPropertyValueL( MusSettingsKeys::KPopupNotification );
+ MUS_LOG1( "mus: [MUSSET] <- MultimediaSharingSettings::PopupNotificationSettingL( %d )",
+ value )
+ return ( MusSettingsKeys::TPopupNotification ) value;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+inline void MultimediaSharingSettings::SetPopupNotificationSettingL(
+ MusSettingsKeys::TPopupNotification aNotificationSetting )
+ {
+ MUS_LOG1( "mus: [MUSSET] -> MultimediaSharingSettings::SetPopupNotificationSettingL( %d )",
+ ( TInt ) aNotificationSetting )
+ SetPropertyValueL( MusSettingsKeys::KPopupNotification,
+ ( TInt ) aNotificationSetting );
+ MUS_LOG( "mus: [MUSSET] <- MultimediaSharingSettings::SetPopupNotificationSettingL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+inline MusSettingsKeys::TPopupNotificationType
+ MultimediaSharingSettings::PopupNotificationTypeSettingL()
+ {
+ MUS_LOG( "mus: [MUSSET] -> MultimediaSharingSettings::PopupNotificationTypeSettingL()" )
+ TInt value = GetPropertyValueL( MusSettingsKeys::KPopupNotificationType );
+ MUS_LOG1( "mus: [MUSSET] <- MultimediaSharingSettings::PopupNotificationTypeSettingL( %d )",
+ value )
+ return ( MusSettingsKeys::TPopupNotificationType ) value;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+inline void MultimediaSharingSettings::SetPopupNotificationTypeSettingL(
+ MusSettingsKeys::TPopupNotificationType aNotificationSetting )
+ {
+ MUS_LOG1( "mus: [MUSSET] -> MultimediaSharingSettings::SetActivationSettingL( %d )",
+ ( TInt ) aNotificationSetting )
+ SetPropertyValueL( MusSettingsKeys::KPopupNotificationType, ( TInt ) aNotificationSetting );
+ MUS_LOG( "mus: [MUSSET] <- MultimediaSharingSettings::SetActivationSettingL()" )
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
inline MusSettingsKeys::TEdgeDtmSupport
MultimediaSharingSettings::EdgeDtmSupportSettingL()
{
@@ -524,6 +584,88 @@
}
// -----------------------------------------------------------------------------
+// Returns the cenrep configured value for KAllowOnlyWithActiveCSCall key.
+// -----------------------------------------------------------------------------
+//
+inline MusSettingsKeys::TAllowedCSOnly
+ MultimediaSharingSettings::AllowedCSOnlySettingL()
+ {
+ MUS_LOG( "mus: [MUSSET] -> MultimediaSharingSettings::AllowedCSOnlySettingL()" )
+ TInt value = GetPropertyValueL( MusSettingsKeys::KAllowOnlyWithActiveCSCall );
+ MUS_LOG1( "mus: [MUSSET] <- MultimediaSharingSettings::AllowedCSOnlySettingL( %d )",
+ value )
+ return ( MusSettingsKeys::TAllowedCSOnly ) value;
+ }
+
+// -----------------------------------------------------------------------------
+// Returns the cenrep configured value for KAllowOnlyIn3GNetwork key.
+// -----------------------------------------------------------------------------
+//
+inline MusSettingsKeys::TAllowed3GOnly
+ MultimediaSharingSettings::Allowed3GOnlySettingL()
+ {
+ MUS_LOG( "mus: [MUSSET] -> MultimediaSharingSettings::Allowed3GOnlySettingL()" )
+ TInt value = GetPropertyValueL( MusSettingsKeys::KAllowOnlyIn3GNetwork );
+ MUS_LOG1( "mus: [MUSSET] <- MultimediaSharingSettings::Allowed3GOnlySettingL( %d )",
+ value )
+ return ( MusSettingsKeys::TAllowed3GOnly ) value;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Returns the cenrep configured value for KCameraUsage key.
+// -----------------------------------------------------------------------------
+//
+inline MusSettingsKeys::TUseCamera
+ MultimediaSharingSettings::CameraUsageL()
+ {
+ MUS_LOG( "mus: [MUSSET] -> MultimediaSharingSettings::CameraUsageL()" )
+ TInt value = GetPropertyValueL( MusSettingsKeys::KCameraUsage );
+ MUS_LOG1( "mus: [MUSSET] <- MultimediaSharingSettings::CameraUsageL( %d )",
+ value )
+ return ( MusSettingsKeys::TUseCamera ) value;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Returns the cenrep configured value for KVideoDirection key.
+// -----------------------------------------------------------------------------
+inline MusSettingsKeys::TVideoDirection
+ MultimediaSharingSettings::VideoDirectionL()
+ {
+ MUS_LOG( "mus: [MUSSET] -> MultimediaSharingSettings::VideoDirectionL()" )
+ TInt value = GetPropertyValueL( MusSettingsKeys::KVideoDirection );
+ MUS_LOG1( "mus: [MUSSET] <- MultimediaSharingSettings::VideoDirectionL( %d )",
+ value )
+ return ( MusSettingsKeys::TVideoDirection ) value;
+ }
+
+// -----------------------------------------------------------------------------
+// Returns the cenrep configured value for KVideoBandwidth key.
+// -----------------------------------------------------------------------------
+inline TInt MultimediaSharingSettings::VideoBandwidthSettingL()
+ {
+ MUS_LOG( "mus: [MUSSET] -> MultimediaSharingSettings::VideoBandwidthSettingL()" )
+ TInt value = GetPropertyValueL( MusSettingsKeys::KVideoBandwidth );
+ MUS_LOG1( "mus: [MUSSET] <- MultimediaSharingSettings::VideoBandwidthSettingL( %d )",
+ value )
+ return value;
+ }
+
+// -----------------------------------------------------------------------------
+// Returns the cenrep configured value for KFastStartupMode key.
+// -----------------------------------------------------------------------------
+inline MusSettingsKeys::TFastMode
+ MultimediaSharingSettings::FastStartupModeL()
+ {
+ MUS_LOG( "mus: [MUSSET] -> MultimediaSharingSettings::FastStartupModeL()" )
+ TInt value = GetPropertyValueL( MusSettingsKeys::KFastStartupMode );
+ MUS_LOG1( "mus: [MUSSET] <- MultimediaSharingSettings::FastStartupModeL( %d )",
+ value )
+ return ( MusSettingsKeys::TFastMode ) value;
+ }
+
+// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
@@ -541,18 +683,4 @@
return EFalse;
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-inline TBool MultimediaSharingSettings::PrivacySetting()
- {
- MUS_LOG( "mus: [MUSSET] -> MultimediaSharingSettings::PrivacySetting()" )
-
- TInt value(0);
- TRAPD( err, value = GetPropertyValueL( MusSettingsKeys::KPrivacyExchange ) );
- MUS_LOG2( "mus: [MUSSET] <- MultimediaSharingSettings::PrivacySetting() err=%d value=%d",
- err, value )
- return ( err == KErrNone && value == MusSettingsKeys::EPrivacy );
- }
#endif // MUSSETTINGS_INL
--- a/inc/musuid.hrh Thu Aug 19 09:51:39 2010 +0300
+++ b/inc/musuid.hrh Tue Aug 31 15:12:07 2010 +0300
@@ -38,3 +38,5 @@
#define KMusAvaPluginInterfaceUid 0x10282393
#endif
+
+//end of file
--- a/layers.sysdef.xml Thu Aug 19 09:51:39 2010 +0300
+++ b/layers.sysdef.xml Tue Aug 31 15:12:07 2010 +0300
@@ -1,20 +1,19 @@
<?xml version="1.0"?>
-<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" [
<!ENTITY layer_real_source_path "sf/app/mmsharinguis" >
]>
-<SystemDefinition name="mmsharinguis" schema="1.4.0">
+<SystemDefinition name="mmsharinguis" schema="1.5.1">
<systemModel>
<layer name="app_layer">
<module name="mmsharinguis">
- <unit unitID="msdo.mmsharinguis" name="mmsharinguis" bldFile="&layer_real_source_path;/group" mrp=""/>
+ <unit name="mmsharinguis" unitID="msdo.mmsharinguis" bldFile="&layer_real_source_path;" mrp="" proFile="mmsharinguis.pro" />
</module>
</layer>
-
<layer name="api_test_layer">
<module name="mmsharinguis_api_test">
- <unit unitID="msdo.mmsharinguis_api_test" mrp="" bldFile="&layer_real_source_path;/mmsharinguis_plat/multimedia_sharing_manager_api/tsrc/group" name="mmsharinguis_api_test" />
+ <unit unitID="msdo.mmsharinguis_api_test" mrp="" bldFile="\sf\app\mmsharinguis\mmsharinguis_plat\multimedia_sharing_manager_api\tsrc\group" name="mmsharinguis_api_test" />
</module>
</layer>
</systemModel>
-</SystemDefinition>
+</SystemDefinition>
\ No newline at end of file
Binary file mmsharing/Conf/multimediasharing.confml has changed
Binary file mmsharing/Conf/multimediasharing_1028238B.crml has changed
Binary file mmsharing/cenrep/1028238b.txt has changed
Binary file mmsharing/cenrep/keys_multimediasharing.xls has changed
--- a/mmsharing/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: project specification
-*
-*/
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-../mmshshared/loc/mus.loc APP_LAYER_LOC_EXPORT_PATH(mus.loc)
-../mmshshared/loc/musoperator.loc APP_LAYER_LOC_EXPORT_PATH(musoperator.loc)
-
-// Generic configuration interface for multimediasharing cenrep settings
-// component_1028238b implementation specifics for cenrep data
-// component_1028238b implementation specifics for genconf ml data
-../Conf/multimediasharing.confml APP_LAYER_CONFML(multimediasharing.confml)
-../Conf/multimediasharing_1028238B.crml APP_LAYER_CRML(multimediasharing_1028238B.crml)
-
-// Export backup registration xml file to register multimediasharing settings
-// to be securely backed up as part of symbian secure backup restore operation.
-// Here data owner will be musmanager server process but the real data stored
-// in central repository. Hence central repository uid should be specified as proxy data owner.
-../cenrep/backup_registration.xml /epoc32/data/z/private/1028238d/backup_registration.xml
-
-PRJ_MMPFILES
-#include "../mmshavailability/group/bld.inf"
-#include "../mmshindicator/group/bld.inf"
-#include "../mmshmanagercli/group/bld.inf"
-#include "../mmshmanagersrv/group/bld.inf"
-#include "../mmshengine/group/bld.inf"
-#include "../mmshui/group/bld.inf"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/group/group.pro Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 2009 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:
+#
+#
+
+TEMPLATE = subdirs
+CONFIG += ordered
+
+symbian: {
+ :BLD_INF_RULES.prj_exports += "../mmshshared/loc/mus.loc APP_LAYER_LOC_EXPORT_PATH(mus.loc)"
+ :BLD_INF_RULES.prj_exports += "../mmshshared/loc/musoperator.loc APP_LAYER_LOC_EXPORT_PATH(musoperator.loc)"
+ :BLD_INF_RULES.prj_exports += "../Conf/multimediasharing.confml APP_LAYER_CONFML(multimediasharing.confml)"
+ :BLD_INF_RULES.prj_exports += "../Conf/multimediasharing_1028238B.crml APP_LAYER_CRML(multimediasharing_1028238B.crml)"
+ :BLD_INF_RULES.prj_exports += "../cenrep/backup_registration.xml /epoc32/data/z/private/1028238D/backup_registration.xml"
+
+ :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"../mmshavailability/group/bld.inf\""
+ :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"../mmshindicator/group/bld.inf\""
+ :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"../mmshmanagercli/group/bld.inf\""
+ :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"../mmshmanagersrv/group/bld.inf\""
+ :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"../mmshengine/group/bld.inf\""
+}
+
+SUBDIRS += ../livecommsui
+SUBDIRS += ../mmshapp
--- a/mmsharing/inc/musavainterface.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/inc/musavainterface.h Tue Aug 31 15:12:07 2010 +0300
@@ -126,6 +126,7 @@
virtual TBool ExtensionAvailability() = 0;
virtual TBool Available( MMusAvaObserver::TAvailabilityName aAvailability ) = 0;
virtual MMusAvaObserver::TAvailabilityStatus AvailabilityState( MMusAvaObserver::TAvailabilityName aAvailability ) = 0;
+ virtual void PrepareForReceivedInviteL() = 0;
private: //Data
--- a/mmsharing/inc/musavaobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/inc/musavaobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -159,8 +159,6 @@
virtual void AvailabilityError(
TAvailabilityName aName,
TAvailabilityStatus aStatus ) = 0;
-
- virtual void AvailabilitiesAbleToShowIndicator() = 0;
};
--- a/mmsharing/inc/musavasettingsobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/inc/musavasettingsobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -24,6 +24,8 @@
#include <badesca.h>
#include <e32base.h>
+#include "musmanagercommon.h"
+
/**
* Defines setting interface for the MusAvailability Plug-in
*
@@ -48,6 +50,8 @@
virtual TApplicationState ApplicationState() = 0;
virtual TBool OptionAllowed() = 0;
+
+ virtual void StartApplicationL( MultimediaSharing::TMusUseCase aUseCase ) = 0;
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/bwins/livecommsuiu.def Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,5 @@
+EXPORTS
+ ?terminateSession@LcViewManager@@QAEXXZ @ 1 NONAME ; void LcViewManager::terminateSession(void)
+ ??1LcViewManager@@UAE@XZ @ 2 NONAME ; LcViewManager::~LcViewManager(void)
+ ??0LcViewManager@@QAE@ABVQString@@0@Z @ 3 NONAME ; LcViewManager::LcViewManager(class QString const &, class QString const &)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/eabi/livecommsuiu.def Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,8 @@
+EXPORTS
+ _ZN13LcViewManager16terminateSessionEv @ 1 NONAME
+ _ZN13LcViewManagerC1ERK7QStringS2_ @ 2 NONAME
+ _ZN13LcViewManagerC2ERK7QStringS2_ @ 3 NONAME
+ _ZN13LcViewManagerD0Ev @ 4 NONAME
+ _ZN13LcViewManagerD1Ev @ 5 NONAME
+ _ZN13LcViewManagerD2Ev @ 6 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/inc/lceffecthandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2009 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 LCEFFECTHANDLER_H
+#define LCEFFECTHANDLER_H
+
+#include <QObject>
+#include <hbeffect.h>
+
+class HbWidget;
+class LcUiEngine;
+
+/**
+ *
+ */
+class LcEffectHandler : public QObject
+{
+ Q_OBJECT
+ friend class UT_LcEffectHandler;
+ friend class UT_LcView;
+
+public:
+
+ enum DissapperEffect{
+ NormalDissappear,
+ DissappearToFlip
+ };
+
+ explicit LcEffectHandler(LcUiEngine& engine,
+ HbWidget* sharedVideo,
+ HbWidget* sharedVideoOverlay,
+ HbWidget* receivedVideo,
+ HbWidget* receivedVideoOverlay);
+ ~LcEffectHandler();
+
+ void setVisibility(HbWidget* widget, bool visible);
+
+ void setDissappearEffect( LcEffectHandler::DissapperEffect aEffectType );
+
+ bool isSwapInProgress();
+
+ void startEffects();
+
+signals:
+ void swapCompleted();
+ void loadSwapLayout();
+
+public slots:
+
+ void showSendWindow();
+ void showReceiveWindow();
+ void hideSendWindow();
+ void hideReceiveWindow();
+ void windowAppearComplete( HbEffect::EffectStatus status );
+ void windowDisappearComplete( HbEffect::EffectStatus status );
+ void windowDisappearToFlipComplete( HbEffect::EffectStatus status );
+ void windowFlipComplete( HbEffect::EffectStatus status );
+ void windowSwapSharedComplete( HbEffect::EffectStatus status );
+ void windowSwapReceivedComplete( HbEffect::EffectStatus status );
+ void swap();
+
+private:
+ void startEffect( HbWidget* widget, const char *effectId, const char *callBack = "" );
+ bool isSharedVideoAtTop() const;
+ bool videosSideBySide() const;
+ void handleSwapCompletion();
+ void initializeSwap();
+
+private: //data
+
+ LcUiEngine& mEngine;
+ HbWidget* mSharedVideo;
+ HbWidget* mSharedVideoOverlay;
+ HbWidget* mReceivedVideo;
+ HbWidget* mReceivedVideoOverlay;
+
+ QString mEffectCallBack;
+ bool mSwapSharedCompleted;
+ bool mSwapReceivedCompleted;
+ bool mSwapInProgress;
+};
+
+#endif // LCEFFECTHANDLER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/inc/lcexport.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2009 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 LCEXPORT_H
+#define LCEXPORT_H
+
+#include <qglobal.h>
+
+#if !defined(UNIT_TESTING)
+#if !defined(LIVECOMMS_EXPORT)
+#if defined(LIVECOMMSUI_LIB)
+#define LIVECOMMS_EXPORT Q_DECL_EXPORT
+#else
+#define LIVECOMMS_EXPORT Q_DECL_IMPORT
+#endif
+#endif
+#else
+#define LIVECOMMS_EXPORT
+#endif
+#endif // LCEXPORT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/inc/lclogger.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2006 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: ?Description
+*
+*/
+
+
+#ifndef LCLOGGER_H
+#define LCLOGGER_H
+
+#include <QDebug>
+
+
+// Disabled PC_lint warning for "Undefined preprocessor variable 'UNIT_TESTING'"
+//lint -e553
+#if ( !defined(_DEBUG) || defined(QT_NO_DEBUG_OUTPUT) ) // release or unit test build; no logs
+
+#define LC_QDEBUG( a )
+#define LC_QDEBUG_2( a, b)
+#define LC_QDEBUG_3( a, b, c)
+#define LC_QDEBUG_4( a, b, c, d)
+#define LC_QWARNING( a )
+#define LC_QWARNING_2( a, b )
+#define LC_QCRITICAL( a )
+#define LC_QCRITICAL_2( a, b )
+#define LC_QCRITICAL_3( a, b, c)
+
+#else // debug build; logs
+
+
+const char lcDebugPrefix[] = "Debug: ";
+const char lcWarningPrefix[] = "Warning: ";
+const char lcCriticalPrefix[] = "Critical: ";
+const char lcFatalPrefix[] = "Fatal: ";
+
+#include <e32debug.h> // RDebug
+#include <QFile>
+#include <QTextStream>
+#include <qapplication.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+const char lcLogFile[] = "C:/logs/mus/musdebug.txt";// MultimediaSharing logging file.
+
+
+#define LC_QDEBUG( a )\
+ qDebug() << a;
+
+#define LC_QDEBUG_2( a, b)\
+ qDebug() << a << b;
+
+#define LC_QDEBUG_3( a, b, c)\
+ qDebug() << a << b << c;
+
+#define LC_QDEBUG_4( a, b, c, d)\
+ qDebug() << a << b << c << d;
+
+#define LC_QWARNING( a )\
+ qWarning() << a;
+
+#define LC_QWARNING_2( a, b )\
+ qWarning() << a << b;
+
+#define LC_QCRITICAL( a )\
+ qCritical() << a;
+
+#define LC_QCRITICAL_2( a, b )\
+ qCritical() << a << b;
+
+#define LC_QCRITICAL_3( a, b, c)\
+ qCritical() << a << b << c;
+
+
+// File logging can be disabled by commenting above definition.
+#define LCUI_FILE_LOGGING_ENABLED
+
+#if ( defined __WINSCW__ ) || ( defined __WINS__ )
+// No sense to have file logging enabled in wins
+#undef LCUI_FILE_LOGGING_ENABLED
+#endif
+
+#ifdef LCUI_FILE_LOGGING_ENABLED
+const bool lcFileLoggingEnabled = ETrue;
+#else
+const bool lcFileLoggingEnabled = EFalse;
+#endif
+
+
+#endif
+
+#endif // LCLOGGER_H
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/inc/lcuicomponentrepository.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,107 @@
+/*
+* Copyright (c) 2009 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 LCUICOMPONENTREPOSITORY_H
+#define LCUICOMPONENTREPOSITORY_H
+
+#include <hbdocumentloader.h>
+#include <QString>
+#include <QHash>
+#include <hbtransparentwindow.h>
+
+class LcView;
+class QAction;
+class HbProgressDialog;
+class HbDialog;
+class LcUiEngine;
+class HbMenu;
+class HbMessageBox;
+
+class LcUiComponentRepository : public HbDocumentLoader
+{
+ friend class UT_LcUiComponentRepository;
+
+public:
+
+ explicit LcUiComponentRepository(LcUiEngine& engine);
+ ~LcUiComponentRepository();
+
+public:
+
+ LcView* idleView();
+ LcView* receiveView();
+ LcView* receiveOnlyView();
+ LcView* twowayView();
+ LcView* sendView();
+ LcView* allInOneView();
+
+ HbDialog* acceptQuery();
+ HbProgressDialog* invitingNote();
+ HbProgressDialog* waitingNote();
+ HbDialog* recipientQuery();
+ HbDialog* shareOwnVideoQuery();
+ void sharedVideoContextMenuActions( HbMenu* menu, LcView& view );
+ bool loadLayout( const QString& layoutName );
+ // returns the currently loaded layout name
+ QString layout()const;
+ // returns the previously loaded layout name
+ QString previousLayout()const;
+
+private: //from HbDocumentLoader
+
+ QObject *createObject(const QString& type, const QString &name);
+
+private:
+
+ LcView* loadView( QObjectList& components,
+ const QString& viewId,
+ const QString& xmlFile );
+ void connectActions( LcView& view ) const;
+ bool connect( QAction& hbAction, LcView& view ) const;
+
+private:
+
+ QString mLastLoadedView;
+
+ LcUiEngine& mEngine;
+
+ QObjectList mIdleViewComponents;
+ QObjectList mReceiveViewComponents;
+ QObjectList mSendViewComponents;
+ QObjectList mTwowayViewComponents;
+ QObjectList mAllInOneViewComponents;
+ QObjectList mReceiveOnlyViewComponents;
+
+ QHash<QString,const char*>* mSlots;
+
+ LcView* mIdleView;
+ LcView* mReceiveView;
+ LcView* mSendView;
+ LcView* mTwowayView;
+ LcView* mAllInOneView;
+ LcView* mReceiveOnlyView;
+
+ HbDialog* mAcceptQuery;
+ HbProgressDialog* mInvitingNote;
+ HbProgressDialog* mWaitingNote;
+ HbDialog* mRecipientQuery;
+ HbMessageBox* mShareOwnVideoQuery;
+
+ QString mLayout;
+ QString mPreviousLayout;
+};
+
+#endif // LCUICOMPONENTREPOSITORY_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/inc/lcuidefs.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,161 @@
+/*
+* Copyright (c) 2009 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 LCUIDEFS_H_
+#define LCUIDEFS_H_
+
+#include <QObject>
+
+class LcUtil {
+
+public:
+
+ inline static void asyncSlotCall( QObject* instance, const char* slot )
+ {
+ QMetaObject::invokeMethod(instance, slot, Qt::QueuedConnection );
+ }
+
+ inline static void asyncSlotCall( QObject* instance, const char* slot, QGenericArgument arg )
+ {
+ QMetaObject::invokeMethod(instance, slot, Qt::QueuedConnection, arg );
+ }
+};
+
+// Panic the current thread
+#if ( defined __WINSCW__ ) || ( defined __WINS__ ) || ( defined __ARMV5__ )
+#include <e32std.h>
+#define LC_PANIC() User::Invariant()
+#else
+#define LC_PANIC()
+#endif
+
+#define LC_MCC_WINDOW_FACTOR 50
+
+#define LC_NOTE_ON_TOP 20
+
+#define LC_NOTE_TIMEOUT 3000
+
+#define DESC_TO_QSTRING( desc )\
+ QString::fromRawData( reinterpret_cast<const QChar*>(desc.Ptr()), desc.Length());
+
+#define LC_INVITING "Inviting..."
+#define LC_WAITING_VIDEO "Waiting for shared video..."
+#define LC_OK "OK"
+#define LC_CANCEL "Cancel"
+#define LC_ACCEPT_SESSION "Accept incoming session from"
+#define LC_RECIPIENT_QUERY "Enter recipient address:"
+
+#ifndef QT_TESTLIB_LIB
+const char lcIdleViewFile[] = ":/xml/lcidleview.docml";
+const char lcReceiveViewFile[] = ":/xml/lcreceiveview.docml";
+const char lcReceiveOnlyViewFile[] = ":/xml/lcreceiveonlyview.docml";
+const char lcSendViewFile[] = ":/xml/lcsendview.docml";
+const char lcTwowayViewFile[] = ":/xml/lctwowayview.docml";
+const char lcAllInOneViewFile[] = ":/xml/lcvtview.docml";
+#else
+const char lcIdleViewFile[] = "c:/lcidleview.docml";
+const char lcReceiveViewFile[] = "C:/lcreceiveview.docml";
+const char lcReceiveOnlyViewFile[] = "C:/lcreceiveonlyview.docml";
+const char lcSendViewFile[] = "C:/lcsendview.docml";
+const char lcTwowayViewFile[] = "C:/lctwowayview.docml";
+const char lcAllInOneViewFile[] = "C:/lcvtview.docml";
+
+#endif
+
+const char lcLcViewTypeName[] = "LcView";
+
+//view ids
+const char lcViewIdleId[] = "lc_view_idle";
+const char lcViewReceiveId[] = "lc_view_recv";
+const char lcViewReceiveOnlyId[] = "lc_view_recvonly";
+const char lcViewSendId[] = "lc_view_send";
+const char lcViewTwowayId[] = "lc_view_twoway";
+const char lcViewAllInOneId[] = "lc_view_allinone";
+
+//widget ids
+const char lcIconContactId[] = "lc_icon_contact";
+const char lcLabelRecipientId[] = "lc_label_recipient";
+const char lcLabelDurationId[] = "lc_label_duration";
+const char lcWidgetRecvVideoId[] = "lc_widget_recvvideo";
+const char lcWidgetSendVideoId[] = "lc_widget_sendvideo";
+const char lcWidgetRecvVideoId2[] = "lc_widget_recvvideo2";
+const char lcWidgetSendVideoId2[] = "lc_widget_sendvideo2";
+const char lcButtonEndCall[] = "lc_button_endCall";
+const char lcWidgetDialpad[] = "lc_label_dialpad";
+
+//action ids
+const char lcActFullscreenId[] = "lc_act_fullscreen";
+const char lcActVideopreferenceId[] = "lc_act_videopreference";
+const char lcActDialerId[] = "lc_act_dialer";
+const char lcActEndactivecallId[] = "lc_act_endactivecall";
+const char lcActStopSharingId[] = "lc_act_stopsharing";
+const char lcActEnableCameraId[] = "lc_act_enablecamera";
+const char lcActMuteId[] = "lc_act_mute";
+const char lcActGalleryId[] = "lc_act_gallery";
+const char lcActChangeCameraId[] = "lc_act_changecamera";
+const char lcActMenuChangeCameraId[] = "lc_act_menu_changecamera";
+const char lcActAdjustVideoId[] = "lc_act_adjustvideo";
+const char lcActShareImageId[] = "lc_act_shareimage";
+const char lcActSwapViewsId[] = "lc_act_swapviews";
+const char lcActSwitchToVoiceCallId[] = "lc_act_switchtovoicecall";
+const char lcActDisableCameraId[] = "lc_act_disablecamera";
+const char lcActMenuDisableCameraId[] = "lc_act_menu_disablecamera";
+const char lcActSpeakerId[] = "lc_act_speaker";
+const char lcActOpenKeypadId[] = "lc_act_openkeypad";
+
+
+//layouts ids
+const char lcLayoutLandscapeDefaultId[] = "landscape"; //Main window - received content
+const char lcLayoutFullscreenId[] = "fullscreen";
+const char lcLayoutLandscapeSwappedId[] = "lc_layout_landscape_swapped";//Main window - sent content
+const char lcLayoutLandscapeDialpadId[] = "lc_layout_landscape_dialpad"; // Dialpad layout
+
+
+//translations Id
+const char lcTranslationsDirectory[] = ":/translations";
+const char lcTranslationsFileNameDefault[] = "livecommsui_en_GB";
+const char lcTranslationsFileName[] = "livecommsui_";
+
+//icon names
+const char lcIconNameUnmuteMic[] = "qtg_mono_mic_unmute";
+const char lcIconNameMuteMic[] = "qtg_mono_mic_mute";
+const char lcIconNameHandset[] = "qtg_mono_mobile";
+const char lcIconNameLoudspeaker[] = "qtg_mono_speaker";
+const char lcIconNameMainCamera[] = "qtg_mono_change_cam_mode";
+const char lcIconNameSecondaryCamera[] = "qtg_mono_change_cam_mode";
+const char lcIconNameEnableCamera[] = "qtg_mono_camcorder";
+const char lcIconNameDisableCamera[] = "qtg_mono_camcorder_off";
+
+const char lcIconNameBlackWin[] = ":/black_win.bmp";
+
+
+//effects
+const char lcEffectWinAppear[] = ":/win_appear.fxml";
+const char lcEffectWinDisappear[] = ":/win_disappear.fxml";
+const char lcEffectWinFlip[] = ":/win_flip.fxml";
+const char lcEffectWinSwapDown[] = ":/win_swap_down.fxml";
+const char lcEffectWinSwapUp[] = ":/win_swap_up.fxml";
+
+const char lcEffectWinId[] = "vidwindow";
+const char lcEffectWinAppearId[] = "appear";
+const char lcEffectWinDisappearId[] = "disappear";
+const char lcEffectWinFlipId[] = "flip";
+const char lcEffectWinSwapDownId[] = "swapDown";
+const char lcEffectWinSwapUpId[] = "swapUp";
+
+const char lcEffectWinDefaultCallback[] = "windowDisappearComplete";
+
+#endif /* LCUIDEFS_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/inc/lcvideowidget.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2009 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 LCVIDEOWIDGET_H
+#define LCVIDEOWIDGET_H
+
+#include <hbtransparentwindow.h>
+
+
+class LcVideoWidget : public HbTransparentWindow
+{
+ Q_OBJECT
+
+public:
+
+ explicit LcVideoWidget(QGraphicsItem *parent = 0, bool showVideo = true);
+ ~LcVideoWidget();
+ void setShowVideo(bool showVideo);
+ bool isShowingVideo();
+ void setLocalPlayer(bool local){mLocalPlayer = local ;};
+
+public: // From HbTransparentWindow
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
+ QWidget *widget = 0);
+private:
+ bool mShowVideo;
+ bool mLocalPlayer;
+};
+
+#endif // LCVIDEOWIDGET_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/inc/lcview.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,152 @@
+/*
+* Copyright (c) 2009 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 LCVIEW_H
+#define LCVIEW_H
+
+#include <hbview.h>
+
+//temp
+#define LC_UNMUTE_TEXT "Unmute"
+#define LC_MUTE_TEXT "Mute"
+#define LC_HANDSET_TEXT "Handset"
+#define LC_SPEAKER_TEXT "Speaker"
+
+class LcUiEngine;
+class LcUiComponentRepository;
+class HbLabel;
+class HbMessageBox;
+class HbAction;
+class HbPushButton;
+class HbTransparentWindow;
+class HbMenu;
+class LcVideoWidget;
+class LcEffectHandler;
+class Dialpad;
+class DialpadVtKeyHandler;
+
+class LcView : public HbView
+{
+ Q_OBJECT
+ friend class UT_LcView;
+ friend class UT_LcUiComponentRepository;
+
+public:
+
+ explicit LcView(LcUiEngine& engine, LcUiComponentRepository& repository);
+ ~LcView();
+
+public:
+
+ void init();
+ void activated();
+ void deactivated();
+ QString currentLayout();
+
+public slots:
+
+ void endVideoSession();
+ void disableCamera();
+ void mute();
+ void changeCamera();
+ void switchToVoiceCall();
+ void speaker();
+ void updateVideoRects();
+ void swap();
+ void shareImage();
+ void updateSwapLayout();
+ void menuAboutToShow();
+ void back();
+//temp
+ void notSupported();
+
+private slots:
+
+ void setMuteActionToUnmute();
+ void setMuteActionToMute();
+ void setCameraActionToMain();
+ void setCameraActionToSecondary();
+ void setSpeakerActionToHandset();
+ void setSpeakerActionToSpeaker();
+ void setCameraActionToDisable();
+ void setCameraActionToEnable();
+ void disableControls();
+ void enableControls();
+ void watchInactivity();
+ void updateVolumeSlider(int aVolumeLevel);
+
+protected: // From HbView
+
+ void gestureEvent(QGestureEvent *event);
+
+protected slots:
+ void openDialpad();
+ virtual void dialpadOpened();
+ virtual void dialpadClosed();
+ virtual void dialpadEditorTextChanged();
+
+protected:
+ void setDialpadPosition();
+
+private: // fullscreen
+ void timerEvent( QTimerEvent * event );
+ void toFullScreen( bool fullscreen );
+
+private:
+ void createNotSupportedNote();
+ void createContextMenu();
+ QRectF translateRectForOrientation(const QRectF& origRect);
+ QPointF translatePointForOrientation(const QPointF& origPoint);
+ void setVisibility( QGraphicsItem* item, bool visible );
+ void addOptionsMenuActions();
+ void gestureLongPress( QPointF coords );
+ void gestureShortPress();
+ bool isVideoPositionedCorrectly( LcVideoWidget* mVideoWidget );
+ bool isPositioned();
+
+private://not owned
+
+ LcUiEngine& mEngine;
+ LcUiComponentRepository& mRepository;
+ HbLabel* mRecipient;
+ HbLabel* mDuration;
+ HbLabel* mContactIcon;
+ LcVideoWidget* mSharedVideoWidget;
+ LcVideoWidget* mReceivedVideoWidget;
+ HbAction* mChangeCameraAction;
+ HbAction* mMuteAction;
+ HbAction* mSpeakerAction;
+ HbAction* mDisableCameraAction;
+ HbAction* mDisableCameraMenuAction;
+ HbMessageBox* mNotSupportedNote;
+ HbPushButton* mEndCallButton;
+
+ LcVideoWidget* mReceivedVideoEffectOverlay;
+ LcVideoWidget* mSharedVideoEffectOverlay;
+ LcEffectHandler* mEffectHandler;
+
+private:
+
+ HbMenu* mItemContextMenu;
+ bool mIsOptionMenuOpen;
+ Dialpad* mDialpad; // Not owned
+ DialpadVtKeyHandler* mDialpadVtKeyHandler;
+ int timerId;
+ bool isViewReady;
+};
+
+
+#endif // LCVIEW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/inc/lcviewmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2009 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 LCVIEWMANAGER_H
+#define LCVIEWMANAGER_H
+
+#include <QObject>
+#include <lcexport.h>
+
+class LcViewManagerPrivate;
+class HbMainWindow;
+
+/**
+ *
+ */
+class LcViewManager : public QObject
+{
+ Q_OBJECT
+ friend class UT_LcUiViewManager;
+
+public: // The exported API
+
+ LIVECOMMS_EXPORT LcViewManager(
+ const QString &engineName,
+ const QString &applicationDisplayName);
+
+ LIVECOMMS_EXPORT ~LcViewManager();
+
+public slots:
+
+ //terminateSession will close engine session asynchronously
+ //when session is closed application will be also closed
+ LIVECOMMS_EXPORT void terminateSession();
+
+private: //data
+
+ LcViewManagerPrivate* d_ptr;
+};
+
+#endif // LCVIEWMANAGER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/inc/lcviewmanager_p.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* Copyright (c) 2009 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 LCVIEWMANAGER_P_H
+#define LCVIEWMANAGER_P_H
+
+#include <QObject>
+
+class HbMainWindow;
+class LcUiEngine;
+class LcUiComponentRepository;
+class LcView;
+class HbAction;
+
+#include <hbmainwindow.h>
+
+class LcMainWindow : public HbMainWindow
+ {
+ Q_OBJECT
+
+public:
+
+ LcMainWindow();
+ virtual ~LcMainWindow();
+
+protected: // From QObject
+
+ bool eventFilter ( QObject * watched, QEvent * event );
+
+signals:
+
+ void appFocusGained();
+ void appFocusLost();
+
+private:
+ friend class UT_LcUiViewManager;
+ };
+
+class LcViewManagerPrivate : public QObject
+{
+ Q_OBJECT
+ friend class UT_LcUiViewManager;
+
+public:
+
+ explicit LcViewManagerPrivate(const QString &engineName,
+ const QString &applicationDisplayName);
+ ~LcViewManagerPrivate();
+
+ //this will close engine session asynchronously
+ //when session is closed application will be also closed
+ void terminateSession();
+
+public slots:
+ void changeView();
+ //for layout switch
+ void prepareOrientationChange();
+
+private slots:
+ void closeApp();
+ void activateCurrentView(bool startup);
+
+private:
+
+ void startEngine();
+ void setCurrentView(bool startup=false);
+ LcView* currentView();
+
+private: //data
+
+ LcMainWindow mMainWindow;
+ LcUiEngine* mEngine;
+ LcUiComponentRepository* mRepository;
+
+private:
+ friend class UT_LcUiViewManager;
+};
+
+#endif // LCVIEWMANAGER_P_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/livecommsui.qrc Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,21 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource prefix="/">
+ <file alias="hbpushbutton_color.css">resources/hbpushbutton_color.css</file>
+ </qresource>
+ <qresource prefix="/xml" >
+ <file alias="lcidleview.docml">resources/lcviews/lcidleview.docml.bin</file>
+ <file alias="lcreceiveview.docml">resources/lcviews/lcreceiveview.docml.bin</file>
+ <file alias="lcreceiveonlyview.docml">resources/lcviews/lcreceiveonlyview.docml.bin</file>
+ <file alias="lcsendview.docml">resources/lcviews/lcsendview.docml.bin</file>
+ <file alias="lctwowayview.docml">resources/lcviews/lctwowayview.docml.bin</file>
+ <file alias="lcvtview.docml">resources/lcviews/lcvtview.docml.bin</file>
+ </qresource>
+ <qresource prefix="/" >
+ <file alias="win_appear.fxml" >resources/win_appear.fxml</file>
+ <file alias="win_disappear.fxml" >resources/win_disappear.fxml</file>
+ <file alias="win_flip.fxml" >resources/win_flip.fxml</file>
+ <file alias="win_swap_down.fxml" >resources/win_swap_down.fxml</file>
+ <file alias="win_swap_up.fxml" >resources/win_swap_up.fxml</file>
+ </qresource>
+</RCC>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/hbpushbutton_color.css Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,10 @@
+/* For End Call button */
+HbPushButton[state = "normal"]::icon
+{
+ color: var(qtc_callhandling_reject_normal);
+}
+
+HbPushButton[state = "pressed"]::icon
+{
+ color: var(qtc_callhandling_reject_pressed);
+}
Binary file mmsharing/livecommsui/lcui/resources/lcviews.uip has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/lcviews/lcidleview.docml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument context="LcView" version="0.9">
+ <widget name="lc_view_idle" type="HbView">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <widget name="lc_label_duration" type="HbLabel">
+ <real name="z" value="10.0006"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.46269un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="2.08955un"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <real name="z" value="10.0005"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.46269un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="1.9403un"/>
+ <string locid="txt_lcomms_info_phone_number" name="plainText"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <real name="z" value="10.0004"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.76119un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="1.9403un"/>
+ <string locid="txt_lcomms_info_contact" name="plainText"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <icon iconName=":/resources/themes/icons/hbdefault/scalable/note_warning.svg" name="icon"/>
+ <real name="z" value="10.0003"/>
+ <sizehint height="11.9403un" type="PREFERRED" width="8.95522un"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <icon iconName=":/resources/themes/icons/hbdefault/scalable/note_warning.svg" name="icon"/>
+ <real name="z" value="10.0002"/>
+ <sizehint height="11.9403un" type="PREFERRED" width="8.95522un"/>
+ </widget>
+ </widget>
+ <string locid="txt_lcomms_title_idle_view" name="title"/>
+ </widget>
+ <section name="portrait">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_icon_contact" dstEdge="LEFT" spacing="3.58209un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="TOP" spacing="3.73134un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="LEFT" spacing="41.9403un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="TOP" spacing="14.32836un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="TOP" spacing="4.47761un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="TOP" spacing="7.31343un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="TOP" spacing="9.85075un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ </section>
+ <section name="landscape">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_icon_contact" dstEdge="LEFT" spacing="52.53731un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="TOP" spacing="1.19403un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="LEFT" spacing="74.32836un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="TOP" spacing="14.47761un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="TOP" spacing="2.38806un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="TOP" spacing="5.22388un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="TOP" spacing="7.76119un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ </section>
+ <metadata activeUIState="landscape" display="NHD portrait" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ <uistate name="portrait" sections="#common portrait"/>
+ <uistate name="landscape" sections="#common landscape"/>
+ </metadata>
+</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/lcviews/lcreceiveView.docml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument context="LcView" version="0.9">
+ <object name="lc_act_fullscreen" type="HbAction">
+ <string locid="txt_lcomms_opt_full_screen" name="text"/>
+ </object>
+ <object name="lc_act_videopreference" type="HbAction">
+ <string locid="txt_lcomms_opt_video_preference" name="text"/>
+ </object>
+ <object name="lc_act_dialer" type="HbAction">
+ <string locid="txt_lcomms_opt_dialer" name="text"/>
+ </object>
+ <object name="lc_act_endactivecall" type="HbAction">
+ <string locid="txt_lcomms_opt_end_active_call" name="text"/>
+ </object>
+ <object name="lc_act_stopsharing" type="HbAction">
+ <icon iconName=":/stop_sharing.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_stop_sharing" name="toolTip"/>
+ <bool name="visible" value="TRUE"/>
+ </object>
+ <object name="lc_act_enablecamera" type="HbAction">
+ <icon iconName=":/enable_camera.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_enable_camera" name="toolTip"/>
+ </object>
+ <object name="lc_act_mute" type="HbAction">
+ <icon iconName=":/mute_mic.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_mute" name="toolTip"/>
+ </object>
+ <object name="lc_act_gallery" type="HbAction">
+ <icon iconName=":/gallery.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_gallery" name="toolTip"/>
+ </object>
+ <widget name="lc_view_recv" type="HbView">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <widget name="lc_widget_recvvideo" type="HbLabel">
+ <real name="z" value="10.009"/>
+ <sizehint height="43.28358un" type="PREFERRED" width="53.13433un"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <icon iconName=":/resources/themes/icons/hbdefault/scalable/note_warning.svg" name="icon"/>
+ <real name="z" value="10.0002"/>
+ <sizehint height="11.9403un" type="PREFERRED" width="8.95522un"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <icon iconName=":/resources/themes/icons/hbdefault/scalable/note_warning.svg" name="icon"/>
+ <real name="z" value="10.0003"/>
+ <sizehint height="11.9403un" type="PREFERRED" width="8.95522un"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <real name="z" value="10.0004"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.76119un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="1.9403un"/>
+ <string locid="txt_lcomms_info_contact" name="plainText"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <real name="z" value="10.0005"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.46269un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="1.9403un"/>
+ <string locid="txt_lcomms_info_phone_number" name="plainText"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <real name="z" value="10.0006"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.46269un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="2.08955un"/>
+ </widget>
+ </widget>
+ <widget name="lc_menu" role="HbView:menu" type="HbMenu">
+ <ref object="lc_act_fullscreen" role="HbMenu:addAction"/>
+ <ref object="lc_act_videopreference" role="HbMenu:addAction"/>
+ <ref object="lc_act_dialer" role="HbMenu:addAction"/>
+ <ref object="lc_act_endactivecall" role="HbMenu:addAction"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <real name="z" value="3"/>
+ <enums name="orientation" value="Horizontal"/>
+ <ref object="lc_act_stopsharing" role="HbToolBar:addAction"/>
+ <ref object="lc_act_enablecamera" role="HbToolBar:addAction"/>
+ <ref object="lc_act_mute" role="HbToolBar:addAction"/>
+ <ref object="lc_act_gallery" role="HbToolBar:addAction"/>
+ </widget>
+ <string locid="txt_lcomms_title_receive_view" name="title"/>
+ </widget>
+ <section name="portrait">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="0.44776un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="32.38806un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="RIGHT" spacing="-0.44776un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="LEFT" spacing="3.58209un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="TOP" spacing="3.73134un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="LEFT" spacing="41.9403un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="TOP" spacing="14.32836un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="TOP" spacing="4.47761un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="TOP" spacing="7.31343un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="TOP" spacing="9.85075un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ </section>
+ <section name="landscape">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="0.44776un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="0.44776un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="RIGHT" spacing="-48.35821un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="BOTTOM" spacing="-0.44776un" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="LEFT" spacing="52.53731un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="TOP" spacing="1.19403un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="LEFT" spacing="74.32836un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="TOP" spacing="14.47761un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="TOP" spacing="2.38806un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="TOP" spacing="5.22388un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="TOP" spacing="7.76119un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ </section>
+ <section name="fullscreen">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="70" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="-66" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="RIGHT" spacing="-70" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
+ </layout>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ </section>
+ <metadata activeUIState="landscape" display="NHD landscape" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ <uistate name="portrait" sections="#common portrait"/>
+ <uistate name="landscape" sections="#common landscape"/>
+ </metadata>
+</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/lcviews/lcreceiveonlyView.docml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument context="LcView" version="0.9">
+ <object name="lc_act_fullscreen" type="HbAction">
+ <string locid="txt_lcomms_opt_full_screen" name="text"/>
+ </object>
+ <object name="lc_act_videopreference" type="HbAction">
+ <string locid="txt_lcomms_opt_video_preference" name="text"/>
+ </object>
+ <object name="lc_act_dialer" type="HbAction">
+ <string locid="txt_lcomms_opt_dialer" name="text"/>
+ </object>
+ <object name="lc_act_endactivecall" type="HbAction">
+ <string locid="txt_lcomms_opt_end_active_call" name="text"/>
+ </object>
+ <object name="lc_act_stopsharing" type="HbAction">
+ <icon iconName=":/stop_sharing.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_stop_sharing" name="toolTip"/>
+ <bool name="visible" value="TRUE"/>
+ </object>
+ <object name="lc_act_mute" type="HbAction">
+ <icon iconName=":/mute_mic.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_mute" name="toolTip"/>
+ </object>
+ <object name="lc_act_gallery" type="HbAction">
+ <icon iconName=":/gallery.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_gallery" name="toolTip"/>
+ </object>
+ <widget name="lc_view_recvonly" type="HbView">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <widget name="lc_widget_recvvideo" type="HbLabel">
+ <real name="z" value="10.009"/>
+ <sizehint height="43.28358un" type="PREFERRED" width="53.13433un"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <icon iconName=":/resources/themes/icons/hbdefault/scalable/note_warning.svg" name="icon"/>
+ <real name="z" value="10.0002"/>
+ <sizehint height="11.9403un" type="PREFERRED" width="8.95522un"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <icon iconName=":/resources/themes/icons/hbdefault/scalable/note_warning.svg" name="icon"/>
+ <real name="z" value="10.0003"/>
+ <sizehint height="11.9403un" type="PREFERRED" width="8.95522un"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <real name="z" value="10.0004"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.76119un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="1.9403un"/>
+ <string locid="txt_lcomms_info_contact" name="plainText"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <real name="z" value="10.0005"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.46269un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="1.9403un"/>
+ <string locid="txt_lcomms_info_phone_number" name="plainText"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <real name="z" value="10.0006"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.46269un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="2.08955un"/>
+ </widget>
+ </widget>
+ <widget name="lc_menu" role="HbView:menu" type="HbMenu">
+ <ref object="lc_act_fullscreen" role="HbMenu:addAction"/>
+ <ref object="lc_act_videopreference" role="HbMenu:addAction"/>
+ <ref object="lc_act_dialer" role="HbMenu:addAction"/>
+ <ref object="lc_act_endactivecall" role="HbMenu:addAction"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <real name="z" value="3"/>
+ <enums name="orientation" value="Horizontal"/>
+ <ref object="lc_act_stopsharing" role="HbToolBar:addAction"/>
+ <ref object="lc_act_mute" role="HbToolBar:addAction"/>
+ <ref object="lc_act_gallery" role="HbToolBar:addAction"/>
+ </widget>
+ <string locid="txt_lcomms_title_receive_only_view" name="title"/>
+ </widget>
+ <section name="portrait">
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="0.44776un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="32.38806un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="RIGHT" spacing="-0.44776un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="LEFT" spacing="3.58209un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="TOP" spacing="3.73134un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="LEFT" spacing="41.9403un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="TOP" spacing="14.32836un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="TOP" spacing="4.47761un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="TOP" spacing="7.31343un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="TOP" spacing="9.85075un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ </section>
+ <section name="landscape">
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="0.44776un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="0.44776un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="RIGHT" spacing="-48.35821un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="BOTTOM" spacing="-0.44776un" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="LEFT" spacing="52.53731un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="TOP" spacing="1.19403un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="LEFT" spacing="74.32836un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="TOP" spacing="14.47761un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="TOP" spacing="2.38806un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="TOP" spacing="5.22388un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="TOP" spacing="7.76119un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ </section>
+ <section name="fullscreen">
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="70" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="-66" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="RIGHT" spacing="-70" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
+ </layout>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ </section>
+ <metadata activeUIState="landscape" display="NHD landscape" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ <uistate name="portrait" sections="#common portrait"/>
+ <uistate name="landscape" sections="#common landscape"/>
+ </metadata>
+</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/lcviews/lcsendview.docml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument context="LcView" version="0.9">
+ <object name="lc_act_fullscreen" type="HbAction">
+ <string locid="txt_lcomms_opt_full_screen" name="text"/>
+ </object>
+ <object name="lc_act_videopreference" type="HbAction">
+ <string locid="txt_lcomms_opt_video_preference" name="text"/>
+ </object>
+ <object name="lc_act_swapviews" type="HbAction">
+ <string locid="txt_lcomms_opt_swap_views" name="text"/>
+ </object>
+ <object name="lc_act_endactivecall" type="HbAction">
+ <string locid="txt_lcomms_opt_end_active_call" name="text"/>
+ </object>
+ <object name="lc_act_changecamera" type="HbAction">
+ <icon iconName=":/secondary_camera.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_change_camera" name="toolTip"/>
+ </object>
+ <object name="lc_act_gallery" type="HbAction">
+ <icon iconName=":/gallery.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_gallery" name="toolTip"/>
+ </object>
+ <object name="lc_act_mute" type="HbAction">
+ <icon iconName=":/mute_mic.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_mute" name="toolTip"/>
+ </object>
+ <object name="lc_act_adjustvideo" type="HbAction">
+ <string locid="txt_lcomms_opt_adjust_video" name="text"/>
+ </object>
+ <object name="lc_act_disablecamera" type="HbAction">
+ <string locid="txt_lcomms_opt_disable_camera" name="text"/>
+ <string locid="txt_lcomms_tooltip_disable_camera" name="toolTip"/>
+ </object>
+ <object name="lc_act_dialer" type="HbAction">
+ <string locid="txt_lcomms_opt_dialer" name="text"/>
+ </object>
+ <object name="lc_act_stopsharing" type="HbAction">
+ <icon iconName=":/stop_sharing.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_stop_sharing" name="toolTip"/>
+ <bool name="visible" value="TRUE"/>
+ </object>
+ <widget name="lc_view_send" type="HbView">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <widget name="lc_widget_sendvideo" type="HbLabel">
+ <real name="z" value="10.009"/>
+ <sizehint height="43.28358un" type="PREFERRED" width="53.13433un"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <icon iconName=":/resources/themes/icons/hbdefault/scalable/note_warning.svg" name="icon"/>
+ <real name="z" value="10.0002"/>
+ <sizehint height="11.9403un" type="PREFERRED" width="8.95522un"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <icon iconName=":/resources/themes/icons/hbdefault/scalable/note_warning.svg" name="icon"/>
+ <real name="z" value="10.0003"/>
+ <sizehint height="11.9403un" type="PREFERRED" width="8.95522un"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <real name="z" value="10.0004"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.76119un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="1.9403un"/>
+ <string locid="txt_lcomms_info_contact" name="plainText"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <real name="z" value="10.0005"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.46269un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="1.9403un"/>
+ <string locid="txt_lcomms_info_phone_number" name="plainText"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <real name="z" value="10.0006"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.46269un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="2.08955un"/>
+ </widget>
+ </widget>
+ <widget name="lc_menu" role="HbView:menu" type="HbMenu">
+ <ref object="lc_act_fullscreen" role="HbMenu:addAction"/>
+ <ref object="lc_act_adjustvideo" role="HbMenu:addAction"/>
+ <ref object="lc_act_dialer" role="HbMenu:addAction"/>
+ <ref object="lc_act_endactivecall" role="HbMenu:addAction"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <real name="z" value="3"/>
+ <enums name="orientation" value="Horizontal"/>
+ <ref object="lc_act_stopsharing" role="HbToolBar:addAction"/>
+ <ref object="lc_act_changecamera" role="HbToolBar:addAction"/>
+ <ref object="lc_act_mute" role="HbToolBar:addAction"/>
+ <ref object="lc_act_gallery" role="HbToolBar:addAction"/>
+ </widget>
+ <string locid="txt_lcomms_title_send_view" name="title"/>
+ </widget>
+ <section name="portrait">
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="LEFT" spacing="0.44776un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="TOP" spacing="32.38806un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="RIGHT" spacing="-0.44776un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="LEFT" spacing="3.58209un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="TOP" spacing="3.73134un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="LEFT" spacing="41.9403un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="TOP" spacing="14.32836un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="TOP" spacing="4.47761un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="TOP" spacing="7.31343un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="TOP" spacing="9.85075un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ </section>
+ <section name="landscape">
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="LEFT" spacing="0.44776un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="TOP" spacing="0.44776un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="RIGHT" spacing="-48.35821un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="BOTTOM" spacing="-0.44776un" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="LEFT" spacing="52.53731un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="TOP" spacing="1.19403un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="LEFT" spacing="74.32836un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="TOP" spacing="14.47761un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="TOP" spacing="2.38806un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="TOP" spacing="5.22388un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="TOP" spacing="7.76119un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ </section>
+ <section name="fullscreen">
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="LEFT" spacing="70" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="TOP" spacing="-66" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="RIGHT" spacing="-70" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
+ </layout>
+ </widget>
+ </section>
+ <metadata activeUIState="portrait" display="NHD portrait" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ <uistate name="portrait" sections="#common portrait"/>
+ <uistate name="landscape" sections="#common landscape"/>
+ </metadata>
+</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/lcviews/lctwowayview.docml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument context="LcView" version="0.9">
+ <object name="lc_act_fullscreen" type="HbAction">
+ <string locid="txt_lcomms_opt_full_screen" name="text"/>
+ </object>
+ <object name="lc_act_videopreference" type="HbAction">
+ <string locid="txt_lcomms_opt_video_preference" name="text"/>
+ </object>
+ <object name="lc_act_swapviews" type="HbAction">
+ <string locid="txt_lcomms_opt_swap_views" name="text"/>
+ </object>
+ <object name="lc_act_endactivecall" type="HbAction">
+ <string locid="txt_lcomms_opt_end_active_call" name="text"/>
+ </object>
+ <object name="lc_act_changecamera" type="HbAction">
+ <icon iconName=":/secondary_camera.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_change_camera" name="toolTip"/>
+ </object>
+ <object name="lc_act_gallery" type="HbAction">
+ <icon iconName=":/gallery.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_gallery" name="toolTip"/>
+ </object>
+ <object name="lc_act_mute" type="HbAction">
+ <icon iconName=":/mute_mic.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_mute" name="toolTip"/>
+ </object>
+ <object name="lc_act_adjustvideo" type="HbAction">
+ <string locid="txt_lcomms_opt_adjust_video" name="text"/>
+ </object>
+ <object name="lc_act_disablecamera" type="HbAction">
+ <string locid="txt_lcomms_opt_disable_camera" name="text"/>
+ </object>
+ <object name="lc_act_dialer" type="HbAction">
+ <string locid="txt_lcomms_opt_dialer" name="text"/>
+ </object>
+ <object name="lc_act_stopsharing" type="HbAction">
+ <icon iconName=":/stop_sharing.svg" name="icon"/>
+ <string locid="txt_lcomms_tooltip_stop_sharing" name="toolTip"/>
+ <bool name="visible" value="TRUE"/>
+ </object>
+ <widget name="lc_view_twoway" type="HbView">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <widget name="lc_widget_recvvideo" type="HbLabel">
+ <real name="z" value="10.009"/>
+ <sizehint height="33.58209un" type="PREFERRED" width="53.13433un"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <icon iconName=":/resources/themes/icons/hbdefault/scalable/note_warning.svg" name="icon"/>
+ <real name="z" value="10.0002"/>
+ <sizehint height="11.9403un" type="PREFERRED" width="8.95522un"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <icon iconName=":/resources/themes/icons/hbdefault/scalable/note_warning.svg" name="icon"/>
+ <real name="z" value="10.0003"/>
+ <sizehint height="11.9403un" type="PREFERRED" width="8.95522un"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <real name="z" value="10.0004"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.76119un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="1.9403un"/>
+ <string locid="txt_lcomms_info_contact" name="plainText"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <real name="z" value="10.0005"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.46269un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="1.9403un"/>
+ <string locid="txt_lcomms_info_phone_number" name="plainText"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <real name="z" value="10.0006"/>
+ <sizehint height="1.64179un" type="PREFERRED" width="27.46269un"/>
+ <sizehint height="1.64179un" type="MINIMUM" width="2.08955un"/>
+ </widget>
+ <widget name="lc_widget_sendvideo" type="HbLabel">
+ <real name="z" value="10.0008"/>
+ <sizehint height="23.43284un" type="PREFERRED" width="24.17911un"/>
+ </widget>
+ </widget>
+ <widget name="lc_menu" role="HbView:menu" type="HbMenu">
+ <ref object="lc_act_disablecamera" role="HbMenu:addAction"/>
+ <ref object="lc_act_fullscreen" role="HbMenu:addAction"/>
+ <ref object="lc_act_adjustvideo" role="HbMenu:addAction"/>
+ <ref object="lc_act_videopreference" role="HbMenu:addAction"/>
+ <ref object="lc_act_swapviews" role="HbMenu:addAction"/>
+ <ref object="lc_act_dialer" role="HbMenu:addAction"/>
+ <ref object="lc_act_endactivecall" role="HbMenu:addAction"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <real name="z" value="3"/>
+ <enums name="orientation" value="Horizontal"/>
+ <ref object="lc_act_stopsharing" role="HbToolBar:addAction"/>
+ <ref object="lc_act_changecamera" role="HbToolBar:addAction"/>
+ <ref object="lc_act_mute" role="HbToolBar:addAction"/>
+ <ref object="lc_act_gallery" role="HbToolBar:addAction"/>
+ </widget>
+ <string locid="txt_lcomms_title_twoway_view" name="title"/>
+ </widget>
+ <section name="portrait">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="0.44776un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="42.08955un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="RIGHT" spacing="-0.44776un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="LEFT" spacing="3.58209un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="TOP" spacing="3.73134un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="LEFT" spacing="41.9403un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="TOP" spacing="14.32836un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="TOP" spacing="4.47761un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="TOP" spacing="7.31343un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="16.41791un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="TOP" spacing="9.85075un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="LEFT" spacing="0.44776un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="TOP" spacing="17.31343un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="BOTTOM" spacing="40.74627un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ </section>
+ <section name="landscape">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="0.44776un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="0.44776un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="RIGHT" spacing="-48.35821un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="BOTTOM" spacing="-0.44776un" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="LEFT" spacing="52.53731un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_contact" dstEdge="TOP" spacing="1.19403un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="LEFT" spacing="74.32836un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_icon_brand" dstEdge="TOP" spacing="14.47761un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="TOP" spacing="2.38806un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_phonenumber" dstEdge="TOP" spacing="5.22388un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="64.62687un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="TOP" spacing="7.76119un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="LEFT" spacing="48.0597un" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="TOP" spacing="15.67164un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="BOTTOM" spacing="-0.44776un" src="" srcEdge="BOTTOM"/>
+ </layout>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ </section>
+ <section name="fullscreen">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="70" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="-66" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="RIGHT" spacing="-70" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="TOP" spacing="10" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="LEFT" spacing="20" src="" srcEdge="LEFT"/>
+ </layout>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_phonenumber" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_icon_brand" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_icon_contact" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ </section>
+ <metadata activeUIState="landscape" display="NHD landscape" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ <uistate name="portrait" sections="#common portrait"/>
+ <uistate name="landscape" sections="#common landscape"/>
+ </metadata>
+</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/lcviews/lcvtview.docml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument context="LcView" version="1.1">
+ <object name="lc_act_swapviews" type="HbAction">
+ <string locid="txt_vt_opt_swap_views" name="text"/>
+ </object>
+ <object name="lc_act_menu_disablecamera" type="HbAction">
+ <string locid="txt_vt_menu_disable_camera" name="text"/>
+ </object>
+ <object name="lc_act_enablecamera" type="HbAction">
+ <string locid="txt_vt_menu_enable_camera" name="text"/>
+ </object>
+ <object name="lc_act_menu_changecamera" type="HbAction">
+ <string locid="txt_vt_menu_change_camera" name="text"/>
+ </object>
+ <object name="lc_act_disablecamera" type="HbAction">
+ <icon iconName="qtg_mono_camcorder_off" name="icon"/>
+ <bool name="visible" value="TRUE"/>
+ </object>
+ <object name="lc_act_changecamera" type="HbAction">
+ <icon iconName="qtg_mono_change_cam_mode" name="icon"/>
+ </object>
+ <object name="lc_act_mute" type="HbAction">
+ <icon iconName="qtg_mono_mute" name="icon"/>
+ </object>
+ <object name="lc_act_speaker" type="HbAction">
+ <icon iconName="qtg_mono_speaker" name="icon"/>
+ </object>
+ <object name="lc_act_openkeypad" type="HbAction">
+ <string locid="txt_vt_opt_open_keypad" name="text"/>
+ </object>
+ <widget name="lc_view_allinone" type="HbView">
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <widget name="lc_widget_recvvideo" type="HbTransparentWindow">
+ <real name="z" value="10"/>
+ </widget>
+ <widget name="lc_widget_recvvideo2" type="HbTransparentWindow">
+ <real name="z" value="11"/>
+ </widget>
+ <widget name="lc_widget_sendvideo" type="HbTransparentWindow">
+ <real name="z" value="12"/>
+ </widget>
+ <widget name="lc_label_recipient" type="HbLabel">
+ <real name="z" value="10.0004"/>
+ <fontspec name="fontSpec" role="Primary" textheight="4un"/>
+ </widget>
+ <widget name="lc_button_endCall" type="HbPushButton">
+ <icon iconName="qtg_mono_end_call" name="icon"/>
+ <real name="z" value="17"/>
+ <sizehint height="9un" type="PREFERRED" width="18.5un"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <real name="z" value="10.0006"/>
+ <fontspec name="fontSpec" role="Secondary" textheight="4un"/>
+ </widget>
+ <widget name="lc_widget_sendvideo2" type="HbTransparentWindow">
+ <real name="z" value="13"/>
+ </widget>
+ <widget name="lc_label_dialpad" type="HbWidget">
+ <real name="z" value="18"/>
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="44un" type="FIXED" width="44un"/>
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ </widget>
+ <widget name="lc_menu" role="HbView:menu" type="HbMenu">
+ <ref object="lc_act_swapviews" role="HbMenu:addAction"/>
+ <ref object="lc_act_openkeypad" role="HbMenu:addAction"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <real name="z" value="3"/>
+ <enums name="orientation" value="Horizontal"/>
+ <ref object="lc_act_disablecamera" role="HbToolBar:addAction"/>
+ <ref object="lc_act_changecamera" role="HbToolBar:addAction"/>
+ <ref object="lc_act_mute" role="HbToolBar:addAction"/>
+ <ref object="lc_act_speaker" role="HbToolBar:addAction"/>
+ </widget>
+ <string locid="txt_vt_title_video_call" name="title"/>
+ </widget>
+ <section name="landscape">
+ <widget name="lc_view_allinone" type="HbView">
+ <bool name="contentFullScreen" value="TRUE"/>
+ <enums name="HbViewFlags" value="ViewTitleBarTransparent"/>
+ <string locid="txt_vt_title_video_call" name="title"/>
+ </widget>
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_button_endCall" type="HbPushButton">
+ <sizehint height="0un" type="MINIMUM" width="0un"/>
+ <sizehint height="9un" type="MAXIMUM" width="18.5un"/>
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="var(hb-param-margin-gene-screen)" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="5.25un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo2" dstEdge="LEFT" spacing="var(hb-param-margin-gene-screen)" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo2" dstEdge="TOP" spacing="5.25un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="LEFT" spacing="7.5un" src="lc_widget_recvvideo" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="RIGHT" spacing="-7.5un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="TOP" spacing="20.75un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo2" dstEdge="LEFT" spacing="7.5un" src="lc_widget_recvvideo" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_sendvideo2" dstEdge="RIGHT" spacing="-7.5un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_sendvideo2" dstEdge="TOP" spacing="20.75un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="BOTTOM" spacing="0un" src="lc_label_duration" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="lc_widget_recvvideo" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="BOTTOM" spacing="-1.5un" src="lc_widget_sendvideo" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-screen)" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="lc_widget_recvvideo" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_button_endCall" dstEdge="LEFT" spacing="4un" src="lc_widget_sendvideo" srcEdge="LEFT"/>
+ <anchoritem dst="lc_button_endCall" dstEdge="RIGHT" spacing="-4un" src="lc_widget_sendvideo" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_button_endCall" dstEdge="BOTTOM" spacing="-1.5un" src="lc_widget_sendvideo" srcEdge="BOTTOM"/>
+ <anchoritem dst="lc_label_dialpad" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_label_dialpad" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ <widget name="lc_widget_sendvideo2" type="HbTransparentWindow">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="21.49254un" type="FIXED" width="26.26866un"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_widget_recvvideo" type="HbTransparentWindow">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="42.98508un" type="FIXED" width="52.53731un"/>
+ </widget>
+ <widget name="lc_widget_recvvideo2" type="HbTransparentWindow">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="42.98508un" type="FIXED" width="52.53731un"/>
+ </widget>
+ <widget name="lc_widget_sendvideo" type="HbTransparentWindow">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="21.49254un" type="FIXED" width="26.26866un"/>
+ </widget>
+ </section>
+ <section name="lc_layout_landscape_swapped">
+ <widget name="lc_view_allinone" type="HbView">
+ <bool name="contentFullScreen" value="TRUE"/>
+ <enums name="HbViewFlags" value="ViewTitleBarTransparent"/>
+ </widget>
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <widget name="lc_button_endCall" type="HbPushButton">
+ <sizehint height="0un" type="MINIMUM" width="0un"/>
+ <sizehint height="9un" type="MAXIMUM" width="18.5un"/>
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ <layout type="anchor">
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="LEFT" spacing="var(hb-param-margin-gene-screen)" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="TOP" spacing="5.25un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo2" dstEdge="LEFT" spacing="var(hb-param-margin-gene-screen)" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_sendvideo2" dstEdge="TOP" spacing="5.25un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="7.5un" src="lc_widget_sendvideo" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="RIGHT" spacing="-7.5un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="20.75un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo2" dstEdge="LEFT" spacing="7.5un" src="lc_widget_sendvideo" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_recvvideo2" dstEdge="RIGHT" spacing="-7.5un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_recvvideo2" dstEdge="TOP" spacing="20.75un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="BOTTOM" spacing="0un" src="lc_label_duration" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_label_recipient" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="lc_widget_sendvideo" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="BOTTOM" spacing="-1.5un" src="lc_widget_recvvideo" srcEdge="TOP"/>
+ <anchoritem dst="lc_label_duration" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-screen)" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_label_duration" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="lc_widget_sendvideo" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_button_endCall" dstEdge="LEFT" spacing="4un" src="lc_widget_recvvideo" srcEdge="LEFT"/>
+ <anchoritem dst="lc_button_endCall" dstEdge="RIGHT" spacing="-4un" src="lc_widget_recvvideo" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_button_endCall" dstEdge="BOTTOM" spacing="-1.5un" src="lc_widget_recvvideo" srcEdge="BOTTOM"/>
+ <anchoritem dst="lc_label_dialpad" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_label_dialpad" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ <widget name="lc_widget_sendvideo2" type="HbTransparentWindow">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="42.98508un" type="FIXED" width="52.53731un"/>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_widget_recvvideo" type="HbTransparentWindow">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="21.49254un" type="FIXED" width="26.26866un"/>
+ </widget>
+ <widget name="lc_widget_recvvideo2" type="HbTransparentWindow">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="21.49254un" type="FIXED" width="26.26866un"/>
+ </widget>
+ <widget name="lc_widget_sendvideo" type="HbTransparentWindow">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="42.98508un" type="FIXED" width="52.53731un"/>
+ </widget>
+ </section>
+ <section name="lc_layout_landscape_dialpad">
+ <widget name="lc_view_allinone" type="HbView">
+ <bool name="contentFullScreen" value="FALSE"/>
+ </widget>
+ <widget name="lc_content" role="HbView:widget" type="HbWidget">
+ <widget name="lc_label_recipient" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_duration" type="HbLabel">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_button_endCall" type="HbPushButton">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <layout type="anchor">
+ <anchoritem dst="lc_label_dialpad" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_label_dialpad" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="LEFT" spacing="var(hb-param-margin-gene-screen)" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo" dstEdge="TOP" spacing="var(hb-param-margin-gene-screen)" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_recvvideo2" dstEdge="LEFT" spacing="var(hb-param-margin-gene-screen)" src="" srcEdge="LEFT"/>
+ <anchoritem dst="lc_widget_recvvideo2" dstEdge="TOP" spacing="var(hb-param-margin-gene-screen)" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo" dstEdge="TOP" spacing="1un" src="" srcEdge="TOP"/>
+ <anchoritem dst="lc_widget_sendvideo2" dstEdge="LEFT" spacing="1un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_sendvideo2" dstEdge="RIGHT" spacing="1un" src="" srcEdge="RIGHT"/>
+ <anchoritem dst="lc_widget_sendvideo2" dstEdge="TOP" spacing="1un" src="" srcEdge="TOP"/>
+ </layout>
+ </widget>
+ <widget name="lc_toolbar" role="HbView:toolBar" type="HbToolBar">
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_widget_sendvideo" type="HbTransparentWindow">
+ <sizehint height="0un" type="FIXED" width="0un"/>
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_widget_recvvideo" type="HbTransparentWindow">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="39un" type="FIXED" width="47.58un"/>
+ </widget>
+ <widget name="lc_widget_recvvideo2" type="HbTransparentWindow">
+ <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+ <sizehint height="39un" type="FIXED" width="47.58un"/>
+ </widget>
+ <widget name="lc_widget_sendvideo2" type="HbTransparentWindow">
+ <sizehint height="0" type="FIXED" width="0"/>
+ <bool name="visible" value="FALSE"/>
+ </widget>
+ <widget name="lc_label_dialpad" type="HbWidget">
+ <bool name="visible" value="TRUE"/>
+ </widget>
+ </section>
+ <metadata activeUIState="landscape" display="NHD-3.2-inch_landscape" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ <uistate name="landscape" sections="#common landscape"/>
+ </metadata>
+</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/win_appear.fxml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,14 @@
+<!-- This effect file was generated by effectDialog -->
+
+<layers>
+<visual>
+
+<param name="opacity" type="anim">
+<duration>0.6</duration>
+<style>linear</style>
+<keyframe at="0.0">1.0</keyframe>
+<keyframe at="1.0">0.0</keyframe>
+</param>
+
+</visual>
+</layers>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/win_disappear.fxml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,15 @@
+<!-- This effect file was generated by effectDialog -->
+
+<layers>
+<visual>
+
+<param name="opacity" type="anim">
+<duration>0.6</duration>
+<style>linear</style>
+<keyframe at="0.0">0.2</keyframe>
+<keyframe at="1.0">1.0</keyframe>
+</param>
+
+</visual>
+</layers>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/win_flip.fxml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,41 @@
+<!-- This effect file was generated by effectDialog -->
+
+<layers>
+<visual>
+
+<param name="rotation_angle" type="anim">
+<duration>3.0</duration>
+<style>linear</style>
+<keyframe at="0.0">0</keyframe>
+<keyframe at="0.49">-90</keyframe>
+<keyframe at="0.50">90</keyframe>
+<keyframe at="1.0">0</keyframe>
+
+</param>
+<param name="rotation_origin_x" ref="visual.width">
+0.5
+</param>
+<param name="rotation_origin_y" ref="visual.height">
+0.5
+</param>
+<param name="rotation_axis_x" type="anim">
+0
+</param>
+<param name="rotation_axis_y" type="anim">
+1
+</param>
+<param name="rotation_axis_z" type="anim">
+0
+</param>
+<param name="opacity" type="anim">
+<duration>3.0</duration>
+<style>linear</style>
+<keyframe at="0.0">1.0</keyframe>
+<keyframe at="0.49">0.0</keyframe>
+<keyframe at="0.50">0.0</keyframe>
+<keyframe at="1.0">1.0</keyframe>
+</param>
+
+</visual>
+</layers>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/win_swap_down.fxml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,35 @@
+<layers>
+<visual>
+
+ <param name="translation_y" type="anim">
+ <duration>5.0</duration>
+ <style>linear</style>
+ </param>
+ <param name="translation_origin_x" ref="visual.left">
+ </param>
+ <param name="translation_origin_y" ref="visual.top">
+ </param>
+ <param name="translation_endpoint_x" ref="visual.left">
+ </param>
+ <param name="translation_endpoint_y" ref="">
+ 245
+ </param>
+
+ <param name="scale_x" type="anim">
+ <duration>5.0</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="0.2">0.2</keyframe>
+ <keyframe at="0.8">0.2</keyframe>
+ <keyframe at="1.0">2.0</keyframe>
+ </param>
+
+ <param name="scale_y" type="anim">
+ <duration>5.0</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="0.2">0.2</keyframe>
+ <keyframe at="0.8">0.2</keyframe>
+ <keyframe at="1.0">2.0</keyframe>
+ </param>
+
+</visual>
+</layers>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/resources/win_swap_up.fxml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,35 @@
+<layers>
+<visual>
+
+ <param name="translation_y" type="anim">
+ <duration>5.0</duration>
+ <style>linear</style>
+ </param>
+ <param name="translation_origin_x" ref="visual.left">
+ </param>
+ <param name="translation_origin_y" ref="visual.top">
+ </param>
+ <param name="translation_endpoint_x" ref="visual.left">
+ </param>
+ <param name="translation_endpoint_y" ref="">
+ 94
+ </param>
+
+ <param name="scale_x" type="anim">
+ <duration>5.0</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="0.2">0.2</keyframe>
+ <keyframe at="0.8">0.2</keyframe>
+ <keyframe at="1.0">0.5</keyframe>
+ </param>
+
+ <param name="scale_y" type="anim">
+ <duration>5.0</duration>
+ <keyframe at="0.0">1.0</keyframe>
+ <keyframe at="0.2">0.2</keyframe>
+ <keyframe at="0.8">0.2</keyframe>
+ <keyframe at="1.0">0.5</keyframe>
+ </param>
+
+</visual>
+</layers>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/src/lceffecthandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,379 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+//USER
+#include "lceffecthandler.h"
+#include "lclogger.h"
+#include "lcuidefs.h"
+#include "lcuiengine.h"
+
+//SYSTEM
+#include <hbinstance.h>
+#include <hbwidget.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LcEffectHandler::LcEffectHandler(LcUiEngine& engine,
+ HbWidget* sharedVideo,
+ HbWidget* sharedVideoOverlay,
+ HbWidget* receivedVideo,
+ HbWidget* receivedVideoOverlay) :
+ mEngine(engine),
+ mSharedVideo(sharedVideo),
+ mSharedVideoOverlay(sharedVideoOverlay),
+ mReceivedVideo(receivedVideo),
+ mReceivedVideoOverlay(receivedVideoOverlay),
+ mSwapSharedCompleted(false),
+ mSwapReceivedCompleted(false),
+ mSwapInProgress(false)
+{
+ HbEffect::add(lcEffectWinId, lcEffectWinDisappear, lcEffectWinDisappearId );
+ HbEffect::add(lcEffectWinId, lcEffectWinAppear, lcEffectWinAppearId );
+ HbEffect::add(lcEffectWinId, lcEffectWinFlip, lcEffectWinFlipId );
+ HbEffect::add(lcEffectWinId, lcEffectWinSwapDown, lcEffectWinSwapDownId );
+ HbEffect::add(lcEffectWinId, lcEffectWinSwapUp, lcEffectWinSwapUpId );
+
+ mEffectCallBack = lcEffectWinDefaultCallback;
+}
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LcEffectHandler::~LcEffectHandler()
+{
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::setVisibility(HbWidget* widget, bool visible)
+{
+ if ( !HbEffect::effectRunning( widget )) {
+ widget->setVisible( visible );
+ }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::setDissappearEffect(
+ LcEffectHandler::DissapperEffect aEffectType )
+{
+ if ( aEffectType == LcEffectHandler::DissappearToFlip ) {
+ mEffectCallBack = "windowDisappearToFlipComplete";
+ } else if ( aEffectType == LcEffectHandler::NormalDissappear ) {
+ mEffectCallBack = "windowDisappearComplete";
+ } else {
+ mEffectCallBack = lcEffectWinDefaultCallback;
+ }
+}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::showSendWindow()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::showSendWindow()" )
+ if ( mSharedVideo ) {
+ if ( mSwapSharedCompleted || !HbEffect::effectRunning( mSharedVideoOverlay )) {
+ startEffect( mSharedVideoOverlay,
+ lcEffectWinAppearId, "windowAppearComplete" );
+
+ mSharedVideo->show();
+ } else {
+ LC_QDEBUG( "livecomms [UI] LcEffectHandler: postponed due ongoing animation" )
+ }
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::showSendWindow()" )
+}
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::showReceiveWindow()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::showReceiveWindow()" )
+ if ( mReceivedVideo ) {
+ if ( mSwapReceivedCompleted || !HbEffect::effectRunning( mReceivedVideoOverlay )) {
+ startEffect( mReceivedVideoOverlay,
+ lcEffectWinAppearId, "windowAppearComplete" );
+ mReceivedVideo->show();
+ } else {
+ LC_QDEBUG( "livecomms [UI] LcEffectHandler: postponed due ongoing animation" )
+ }
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::showReceiveWindow()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::hideSendWindow()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::hideSendWindow()" )
+ if ( mSharedVideo && mSharedVideo->isVisible() ) {
+ startEffect( mSharedVideoOverlay,
+ lcEffectWinDisappearId, mEffectCallBack.toAscii().data() );
+ mSharedVideo->hide();
+ }
+
+ mEffectCallBack = lcEffectWinDefaultCallback;
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandlerLcEffectHandler::hideSendWindow()" )
+}
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::hideReceiveWindow()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::hideReceiveWindow()" )
+ if ( mReceivedVideo && mReceivedVideo->isVisible() ) {
+ startEffect( mReceivedVideoOverlay,
+ lcEffectWinDisappearId, "windowDisappearComplete" );
+ mReceivedVideo->hide();
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::hideReceiveWindow()" )
+}
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::swap()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::swap()" )
+
+ // Emit the signal which triggers to loading of new swapped section
+ mSwapInProgress = true;
+ emit loadSwapLayout();
+
+ startEffects();
+
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::swap()" )
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::startEffects()
+{
+ if( mSharedVideo && mReceivedVideo ) {
+
+ mSwapSharedCompleted = false;
+ mSwapReceivedCompleted = false;
+
+ startEffect( mSharedVideoOverlay, lcEffectWinDisappearId, "windowSwapSharedComplete" );
+ startEffect( mReceivedVideoOverlay, lcEffectWinDisappearId, "windowSwapReceivedComplete" );
+
+ mSharedVideo->hide();
+ mReceivedVideo->hide();
+ }
+
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::startEffect(
+ HbWidget* widget, const char *effectId, const char *callBack )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::startEffect()" )
+ if( widget ) {
+ widget->setOpacity(1.0); // Previous effect might have set opacity to zero
+ widget->show();
+ LC_QDEBUG_2( "livecomms [UI] window: ", widget->geometry() )
+ LC_QDEBUG_2( "livecomms [UI] effect name: ", QString(effectId) )
+ HbEffect::start( widget, lcEffectWinId, effectId, this, callBack );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::startEffect()" )
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::windowAppearComplete(HbEffect::EffectStatus status)
+{
+ Q_UNUSED(status);
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::windowAppearComplete()" )
+
+ if ( status.item && status.item == mSharedVideoOverlay &&
+ !HbEffect::effectRunning( mSharedVideoOverlay ) ) {
+ mSharedVideoOverlay->hide();
+
+ }
+ if ( status.item && status.item == mReceivedVideoOverlay &&
+ !HbEffect::effectRunning( mReceivedVideoOverlay ) ) {
+ mReceivedVideoOverlay->hide();
+
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::windowAppearComplete()" )
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::windowDisappearComplete(HbEffect::EffectStatus status)
+{
+ Q_UNUSED(status);
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::windowDisappearComplete()" )
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::windowDisappearComplete()" )
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::windowDisappearToFlipComplete(HbEffect::EffectStatus status)
+{
+ Q_UNUSED(status);
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::windowDisappearToFlipComplete()" )
+ if( mSharedVideo ) {
+ mSharedVideo->hide();
+ startEffect( mSharedVideoOverlay, lcEffectWinFlipId, "windowFlipComplete" );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::windowDisappearToFlipComplete()" )
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::windowFlipComplete(HbEffect::EffectStatus status)
+{
+ Q_UNUSED(status);
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::flipHideComplete()" )
+ if( mEngine.isLocalPlayerPlaying() ) {
+ showSendWindow();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::flipHideComplete()" )
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::windowSwapSharedComplete(HbEffect::EffectStatus status)
+{
+ Q_UNUSED(status);
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::windowSwapSharedComplete()" )
+ if( mSharedVideo ) {
+ LC_QDEBUG_2( "livecomms [UI] window: ", mSharedVideo->geometry() )
+ LC_QDEBUG_2( "livecomms [UI] effect window: ", mSharedVideoOverlay->geometry() )
+
+ mSwapSharedCompleted = true;
+
+ handleSwapCompletion();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::windowSwapSharedComplete()" )
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::windowSwapReceivedComplete(HbEffect::EffectStatus status)
+{
+ Q_UNUSED(status);
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::windowSwapReceivedComplete()" )
+ if( mReceivedVideo ) {
+ LC_QDEBUG_2( "livecomms [UI] window: ", mReceivedVideo->geometry() )
+ LC_QDEBUG_2( "livecomms [UI] effect window: ", mReceivedVideoOverlay->geometry() )
+
+ mSwapReceivedCompleted = true;
+
+ handleSwapCompletion();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::windowSwapReceivedComplete()" )
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+bool LcEffectHandler::isSharedVideoAtTop() const
+{
+ return ( mSharedVideo && mReceivedVideo &&
+ mSharedVideo->geometry().top() < mReceivedVideo->geometry().top());
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+bool LcEffectHandler::videosSideBySide() const
+{
+ return ( mSharedVideo && mReceivedVideo &&
+ mSharedVideo->geometry().top() == mReceivedVideo->geometry().top() );
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcEffectHandler::handleSwapCompletion()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcEffectHandler::handleSwapCompletion()" )
+ if ( mSwapSharedCompleted && mSwapReceivedCompleted ){
+ LC_QDEBUG( "livecomms [UI] Both swaps done, complete" )
+
+ emit swapCompleted();
+
+ if( mEngine.isLocalPlayerPlaying() ) {
+ showSendWindow();
+ }
+ if( mEngine.isRemotePlayerPlaying() ) {
+ showReceiveWindow();
+ }
+
+ mSwapInProgress = false;
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcEffectHandler::handleSwapCompletion()" )
+}
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+bool LcEffectHandler::isSwapInProgress()
+{
+ return mSwapInProgress;
+}
+
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/src/lcuicomponentrepository.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,589 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+//USER
+#include "lcuicomponentrepository.h"
+#include "lcview.h"
+#include "lcuidefs.h"
+#include "lclogger.h"
+#include "lcuiengine.h"
+#include "lcvideowidget.h"
+
+//SYSTEM
+#include <hbaction.h>
+#include <hbmenu.h>
+#include <hbtoolbar.h>
+#include <hbmessagebox.h>
+#include <hbdialog.h>
+#include <hbprogressdialog.h>
+#include <hblabel.h>
+#include <hbinstance.h>
+#include <hbdialog.h>
+#include <hbpushbutton.h>
+#include <hbframedrawer.h>
+#include <hbstyleloader.h>
+#include <dialpad.h>
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::LcUiComponentRepository
+// -----------------------------------------------------------------------------
+//
+LcUiComponentRepository::LcUiComponentRepository(LcUiEngine& engine)
+ : HbDocumentLoader(),
+ mEngine(engine),
+ mSlots(0),
+ mIdleView(0),
+ mReceiveView(0),
+ mSendView(0),
+ mTwowayView(0),
+ mAllInOneView(0),
+ mReceiveOnlyView(0),
+ mAcceptQuery(0),
+ mInvitingNote(0),
+ mWaitingNote(0),
+ mRecipientQuery(0),
+ mShareOwnVideoQuery(0)
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::LcUiComponentRepository()" )
+
+ mSlots = new QHash<QString,const char*>;
+ mSlots->insert( lcActFullscreenId, SLOT( notSupported() ) );
+ mSlots->insert( lcActVideopreferenceId, SLOT( notSupported() ) );
+ mSlots->insert( lcActDialerId, SLOT( notSupported() ) );
+ mSlots->insert( lcActEndactivecallId, SLOT( notSupported() ) );
+ mSlots->insert( lcActStopSharingId, SLOT( endVideoSession() ) );
+ mSlots->insert( lcActEnableCameraId, SLOT( disableCamera() ) );
+ mSlots->insert( lcActMuteId, SLOT( mute() ) );
+ mSlots->insert( lcActGalleryId, SLOT( notSupported() ) );
+ mSlots->insert( lcActChangeCameraId, SLOT( changeCamera() ) );
+ mSlots->insert( lcActAdjustVideoId, SLOT( notSupported() ) );
+ mSlots->insert( lcActShareImageId, SLOT( notSupported() ) );
+ mSlots->insert( lcActSwapViewsId, SLOT( swap() ) );
+ mSlots->insert( lcActSwitchToVoiceCallId, SLOT( switchToVoiceCall() ) );
+ mSlots->insert( lcActOpenKeypadId, SLOT( openDialpad() ) );
+ mSlots->insert( lcActDisableCameraId, SLOT( disableCamera() ) );
+ mSlots->insert( lcActSpeakerId, SLOT( speaker() ) );
+
+ mSlots->insert( lcActMenuDisableCameraId, SLOT( disableCamera() ) );
+ mSlots->insert( lcActMenuChangeCameraId, SLOT( changeCamera() ) );
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::LcUiComponentRepository()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::~LcUiComponentRepository
+// -----------------------------------------------------------------------------
+//
+LcUiComponentRepository::~LcUiComponentRepository()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::~LcUiComponentRepository()" )
+
+ delete mSlots;
+
+ mIdleViewComponents.clear();
+ mReceiveViewComponents.clear();
+ mSendViewComponents.clear();
+ mTwowayViewComponents.clear();
+ mAllInOneViewComponents.clear();
+ mReceiveOnlyViewComponents.clear();
+
+ delete mAcceptQuery;
+ delete mInvitingNote;
+ delete mWaitingNote;
+ delete mRecipientQuery;
+ delete mShareOwnVideoQuery;
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::~LcUiComponentRepository()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::createObject
+// -----------------------------------------------------------------------------
+//
+QObject* LcUiComponentRepository::createObject(
+ const QString& type, const QString &name)
+{
+ QObject* object = 0;
+
+ if ( type == lcLcViewTypeName ||
+ name == lcViewIdleId ||
+ name == lcViewReceiveId ||
+ name == lcViewReceiveOnlyId ||
+ name == lcViewAllInOneId ||
+ name == lcViewSendId ||
+ name == lcViewTwowayId ) {
+ LC_QDEBUG_2( "-> LcUiComponentRepository::createObject() ",
+ "- creating LcView -" )
+ object = new LcView( mEngine, *this );
+ }
+ else if ( name == lcWidgetSendVideoId ) {
+ LC_QDEBUG_2( "-> LcUiComponentRepository::createObject() ",
+ "- creating shared video widget -" )
+ object = new LcVideoWidget();
+ static_cast<LcVideoWidget*>(object)->setLocalPlayer(true);
+ }
+ else if ( name == lcWidgetSendVideoId2 ) {
+ LC_QDEBUG_2( "-> LcUiComponentRepository::createObject() ",
+ "- creating shared video widget effect overlay -" )
+ object = new LcVideoWidget(0, false);
+ static_cast<LcVideoWidget*>(object)->setLocalPlayer(true);
+ }
+ else if ( name == lcWidgetRecvVideoId ) {
+ LC_QDEBUG_2( "-> LcUiComponentRepository::createObject() ",
+ "- creating received video widget -" )
+ object = new LcVideoWidget();
+ static_cast<LcVideoWidget*>(object)->setLocalPlayer(false);
+
+ }
+ else if ( name == lcWidgetRecvVideoId2 ) {
+ LC_QDEBUG_2( "-> LcUiComponentRepository::createObject() ",
+ "- creating received video widget effect overlay -" )
+ object = new LcVideoWidget(0, false);
+ static_cast<LcVideoWidget*>(object)->setLocalPlayer(false);
+ }
+ else if ( name == lcButtonEndCall ){
+ object = HbDocumentLoader::createObject( type, name );
+ HbFrameDrawer*frameDrawer = new HbFrameDrawer("qtg_fr_btn_red_normal",HbFrameDrawer::NinePieces);
+ static_cast<HbPushButton*>(object)->setFrameBackground(frameDrawer);
+ HbStyleLoader::registerFilePath(":/hbpushbutton_color.css");
+ }
+ else if ( name == lcWidgetDialpad ){
+ HbMainWindow* pWindow = HbInstance::instance()->allMainWindows().at(0);
+ if( pWindow ){
+ object = new Dialpad( *pWindow );
+ }
+ }
+ else {
+ object = HbDocumentLoader::createObject( type, name );
+ }
+ if (object) {
+ object->setObjectName(name);
+ }
+
+ LC_QDEBUG_2( "livecomms [UI] <- LcUiComponentRepository::createObject(), name=", name )
+
+ return object;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::idleView
+// -----------------------------------------------------------------------------
+//
+LcView* LcUiComponentRepository::idleView()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::idleView()" );
+
+ reset();
+ setObjectTree( mIdleViewComponents );
+
+ if ( !mIdleView ) {
+ mIdleView = loadView(
+ mIdleViewComponents, lcViewIdleId, lcIdleViewFile );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::idleView()" );
+ return mIdleView;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::receiveView
+// -----------------------------------------------------------------------------
+//
+LcView* LcUiComponentRepository::receiveView()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::receiveView()" );
+
+ reset();
+ setObjectTree( mReceiveViewComponents );
+ if ( !mReceiveView ) {
+ mReceiveView = loadView(
+ mReceiveViewComponents, lcViewReceiveId, lcReceiveViewFile );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::receiveView()" );
+ return mReceiveView;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::receiveOnlyView
+// -----------------------------------------------------------------------------
+//
+LcView* LcUiComponentRepository::receiveOnlyView()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::receiveOnlyView()" );
+
+ reset();
+ setObjectTree( mReceiveOnlyViewComponents );
+ if ( !mReceiveOnlyView ) {
+ mReceiveOnlyView = loadView(
+ mReceiveOnlyViewComponents, lcViewReceiveOnlyId, lcReceiveOnlyViewFile );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::receiveOnlyView()" );
+ return mReceiveOnlyView;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::twowayView
+// -----------------------------------------------------------------------------
+//
+LcView* LcUiComponentRepository::twowayView()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::twowayView()" );
+
+ reset();
+ setObjectTree( mTwowayViewComponents );
+ if ( !mTwowayView ) {
+ mTwowayView = loadView(
+ mTwowayViewComponents, lcViewTwowayId, lcTwowayViewFile );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::twowayView()" );
+ return mTwowayView;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::sendView
+// -----------------------------------------------------------------------------
+//
+LcView* LcUiComponentRepository::sendView()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::sendView()" );
+
+ reset();
+ setObjectTree( mSendViewComponents );
+ if ( !mSendView ) {
+ mSendView =
+ loadView( mSendViewComponents, lcViewSendId, lcSendViewFile );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::sendView()" );
+ return mSendView;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::allInOneView
+// -----------------------------------------------------------------------------
+//
+LcView* LcUiComponentRepository::allInOneView()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::allInOneView()" );
+
+ reset();
+ setObjectTree( mAllInOneViewComponents );
+ if ( !mAllInOneView ) {
+ mAllInOneView = loadView(
+ mAllInOneViewComponents, lcViewAllInOneId, lcAllInOneViewFile );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::allInOneView()" );
+ return mAllInOneView;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::acceptQuery
+// -----------------------------------------------------------------------------
+//
+HbDialog* LcUiComponentRepository::acceptQuery()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::acceptQuery()" );
+
+ if ( !mAcceptQuery ) {
+ mAcceptQuery = new HbDialog();
+ HbAction* acceptAction = new HbAction( LC_OK );
+ HbAction* rejectAction = new HbAction( LC_CANCEL );
+ mAcceptQuery->addAction(acceptAction);
+ mAcceptQuery->addAction(rejectAction);
+ mAcceptQuery->setVisible(false);
+ HbLabel* label = new HbLabel( LC_ACCEPT_SESSION );
+ mAcceptQuery->setHeadingWidget(label);
+ HbLabel* label2 = new HbLabel();
+ mAcceptQuery->setContentWidget(label2);
+ mAcceptQuery->setTimeout(0);
+ mAcceptQuery->setDismissPolicy(HbDialog::NoDismiss);
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::acceptQuery()" );
+ return mAcceptQuery;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::invitingNote
+// -----------------------------------------------------------------------------
+//
+HbProgressDialog* LcUiComponentRepository::invitingNote()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::invitingNote()" );
+
+ if ( !mInvitingNote ) {
+ mInvitingNote = new HbProgressDialog();
+ mInvitingNote->setVisible(false);
+ mInvitingNote->setText( LC_INVITING );
+ HbAction* rejectAction = new HbAction( LC_CANCEL );
+ mInvitingNote->addAction(rejectAction);
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::invitingNote()" );
+ return mInvitingNote;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::waitingNote
+// -----------------------------------------------------------------------------
+//
+HbProgressDialog* LcUiComponentRepository::waitingNote()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::waitingNote()" );
+
+ if ( !mWaitingNote ) {
+ mWaitingNote = new HbProgressDialog();
+ mWaitingNote->setVisible(false);
+ HbAction* rejectAction = new HbAction( LC_CANCEL );
+ mWaitingNote->addAction(rejectAction);
+ mWaitingNote->setText( LC_WAITING_VIDEO );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::waitingNote()" );
+ return mWaitingNote;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::recipientQuery
+// -----------------------------------------------------------------------------
+//
+HbDialog* LcUiComponentRepository::recipientQuery()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::recipientQuery()" );
+
+ if ( !mRecipientQuery ) {
+ mRecipientQuery = new HbDialog();
+ HbLabel* label = new HbLabel( LC_RECIPIENT_QUERY );
+ mRecipientQuery->setHeadingWidget(label);
+ mRecipientQuery->setTimeout(HbDialog::NoTimeout);
+ mRecipientQuery->setDismissPolicy(HbDialog::TapOutside);
+ HbAction* acceptAction = new HbAction( LC_OK );
+ HbAction* rejectAction = new HbAction( LC_CANCEL );
+ mRecipientQuery->addAction(acceptAction);
+ mRecipientQuery->addAction(rejectAction);
+ mRecipientQuery->setVisible(false);
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::recipientQuery()" );
+ return mRecipientQuery;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::shareOwnVideoQuery
+// -----------------------------------------------------------------------------
+//
+HbDialog* LcUiComponentRepository::shareOwnVideoQuery()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::shareOwnVideoQuery()" );
+
+ if ( !mShareOwnVideoQuery ) {
+ mShareOwnVideoQuery = new HbMessageBox( HbMessageBox::MessageTypeQuestion );
+ mShareOwnVideoQuery->setStandardButtons( HbMessageBox::Yes | HbMessageBox::No );
+ mShareOwnVideoQuery->setText( hbTrId( "txt_vt_info_allow_own_image_to_be_sent" ));
+ mShareOwnVideoQuery->setZValue(LC_NOTE_ON_TOP);
+ mShareOwnVideoQuery->setTimeout( HbDialog::NoTimeout );
+ mShareOwnVideoQuery->setDismissPolicy( HbDialog::NoDismiss );
+ mShareOwnVideoQuery->setVisible(false);
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::shareOwnVideoQuery()" );
+ return mShareOwnVideoQuery;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::sharedVideoContextMenuActions
+// -----------------------------------------------------------------------------
+//
+void LcUiComponentRepository::sharedVideoContextMenuActions( HbMenu* menu, LcView& view )
+{
+ Q_UNUSED(view)
+ LC_QDEBUG(
+ "livecomms [UI] -> LcUiComponentRepository::sharedVideoContextMenuActions()" );
+
+ menu->actions().clear();
+ //due stubs in unit tests, qobject_cast cannot be used.
+ //Using static_cast instead
+ HbAction* swap = static_cast<HbAction*>( findObject( lcActSwapViewsId ) );
+ HbAction* changeCamera =
+ static_cast<HbAction*>( findObject( lcActMenuChangeCameraId ) );
+
+ HbAction* disableCamera =
+ static_cast<HbAction*>( findObject( lcActMenuDisableCameraId ) );
+ HbAction* enableCamera =
+ static_cast<HbAction*>( findObject( lcActEnableCameraId ) );
+
+ if ( swap ) {
+ LC_QDEBUG_2( "Adding ", swap->text() );
+ menu->addAction( swap );
+ }
+ if ( changeCamera ) {
+ LC_QDEBUG_2( "Adding ", changeCamera->text() );
+ menu->addAction( changeCamera );
+ }
+ if ( mEngine.isLocalPlayerPlaying() ) {
+ if ( disableCamera ) {
+ LC_QDEBUG_2( "Adding ", disableCamera->text() );
+ menu->addAction( disableCamera );
+ }
+ } else {
+ if ( enableCamera ) {
+ LC_QDEBUG_2( "Adding ", enableCamera->text() );
+ menu->addAction( enableCamera );
+ }
+ }
+
+
+ LC_QDEBUG(
+ "livecomms [UI] <- LcUiComponentRepository::sharedVideoContextMenuActions()" );
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::loadView
+// -----------------------------------------------------------------------------
+//
+LcView* LcUiComponentRepository::loadView( QObjectList& components,
+ const QString& viewId,
+ const QString& xmlFile )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::loadView()" );
+
+ LcView* view = 0;
+ bool ok( false );
+ // Load the XML file
+ components = load( xmlFile, &ok );
+
+ if ( !ok ) {
+ LC_QCRITICAL_3( "! loading of XML file ", xmlFile , " failed !" )
+ return 0;
+ }
+
+ mLastLoadedView = xmlFile;
+
+ ok = loadLayout( lcLayoutLandscapeDefaultId );
+ if ( !ok ) {
+ LC_QCRITICAL( "! loading of layout failed !" )
+ return 0;
+ }
+
+ view = qobject_cast<LcView*>( findWidget( viewId ) );
+ if ( view ) {
+ connectActions( *view );
+ view->init();
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::loadView()" );
+ return view;
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::connectActions
+// -----------------------------------------------------------------------------
+//
+void LcUiComponentRepository::connectActions( LcView& view ) const
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::connectActions()" );
+ foreach( QAction* hbAction, view.menu()->actions() ) {
+ connect( *hbAction, view );
+ }
+ foreach( QAction* hbAction, view.toolBar()->actions() ) {
+ connect( *hbAction, view );
+ }
+
+ HbAction* changeCamera =
+ static_cast<HbAction*>( findObject( lcActMenuChangeCameraId ) );
+ HbAction* disableCamera =
+ static_cast<HbAction*>( findObject( lcActMenuDisableCameraId ) );
+ HbAction* enableCamera =
+ static_cast<HbAction*>( findObject( lcActEnableCameraId ) );
+
+ QObject::connect( changeCamera, SIGNAL(triggered()),
+ &view, SLOT(changeCamera()) );
+
+ QObject::connect( disableCamera, SIGNAL(triggered()),
+ &view, SLOT(disableCamera()) );
+
+ QObject::connect( enableCamera, SIGNAL(triggered()),
+ &view, SLOT(disableCamera()) );
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::connectActions()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::connect
+// -----------------------------------------------------------------------------
+//
+bool LcUiComponentRepository::connect( QAction& hbAction, LcView& view ) const
+{
+ LC_QDEBUG_2( "livecomms [UI] -> LcUiComponentRepository::connect() action=",
+ hbAction.objectName() )
+
+ const char* method = mSlots->value( hbAction.objectName() );
+ bool slotFound = ( QString( method ).length() > 0 );
+
+ if ( slotFound ) {
+ QObject::connect( &hbAction, SIGNAL(triggered()), &view, method );
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::connect()" )
+
+ return slotFound;
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::loadLayout
+// -----------------------------------------------------------------------------
+//
+bool LcUiComponentRepository::loadLayout( const QString& layoutName )
+ {
+ LC_QDEBUG( "livecomms [UI] -> LcUiComponentRepository::loadLayout()" )
+ bool ok( false );
+
+ if ( mLastLoadedView.length() > 0) {
+ LC_QDEBUG_4( "layout = ", layoutName, ", view =", mLastLoadedView )
+
+ load( mLastLoadedView, layoutName, &ok );
+ if (!ok) {
+ LC_QCRITICAL( "! loading of XML failed !" )
+ }
+ else{
+ mPreviousLayout = mLayout;
+ mLayout = layoutName;
+ }
+ } else {
+ LC_QCRITICAL( "! not loading layout, since view is not loaded!" )
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiComponentRepository::loadLayout()" )
+ return ok;
+ }
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::layout()const
+// -----------------------------------------------------------------------------
+//
+QString LcUiComponentRepository::layout()const
+ {
+ LC_QDEBUG_2( "livecomms [UI] -> LcUiComponentRepository::layout()",mLayout )
+ return mLayout;
+ }
+
+// -----------------------------------------------------------------------------
+// LcUiComponentRepository::previousLayout()const
+// -----------------------------------------------------------------------------
+//
+QString LcUiComponentRepository::previousLayout()const
+ {
+ LC_QDEBUG_2( "livecomms [UI] -> LcUiComponentRepository::previousLayout()",
+ mPreviousLayout )
+ return mPreviousLayout;
+ }
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/src/lcvideowidget.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+//USER
+#include "lcvideowidget.h"
+
+//SYSTEM
+#include <QPainter>
+
+const qreal lcVideoWidgetCornerRounding = 10.0;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LcVideoWidget::LcVideoWidget(QGraphicsItem *parent, bool showVideo) :
+ HbTransparentWindow(parent),
+ mShowVideo(showVideo)
+{
+ setFlag(QGraphicsItem::ItemUsesExtendedStyleOption, true);
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LcVideoWidget::~LcVideoWidget()
+{
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcVideoWidget::paint(
+ QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+ Q_UNUSED(widget)
+ QPointF initialPosition(0,0);
+
+ //Workaround: widgets positioning takes time, do not paint if they are not
+ //positioned correctly.
+
+ if ( this->pos() != initialPosition ) {
+
+ painter->save();
+ if ( mShowVideo ){
+
+ QPainter::CompositionMode origCompositionMode = painter->compositionMode();
+ painter->setCompositionMode(QPainter::CompositionMode_Source);
+#if ( defined __WINSCW__ ) || ( defined __WINS__ )
+ if( mLocalPlayer ){
+ painter->setBrush(QColor(Qt::darkGreen));
+ }else{
+ painter->setBrush(QColor(Qt::darkRed));
+ }
+#else
+ painter->setBrush(QColor(0,0,0,0));
+#endif
+ painter->drawRoundedRect( option->exposedRect,
+ lcVideoWidgetCornerRounding, lcVideoWidgetCornerRounding);
+
+ painter->setCompositionMode(origCompositionMode); // restore
+ } else {
+ painter->setBrush(QColor(0,0,0,255));
+ painter->drawRoundedRect( option->exposedRect,
+ lcVideoWidgetCornerRounding, lcVideoWidgetCornerRounding);
+ }
+ painter->restore();
+ }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcVideoWidget::setShowVideo(bool showVideo)
+{
+ mShowVideo = showVideo;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+bool LcVideoWidget::isShowingVideo()
+{
+ return mShowVideo;
+}
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/src/lcview.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,1074 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+//USER
+#include "lcview.h"
+#include "lclogger.h"
+#include "lcuiengine.h"
+#include "lcuidefs.h"
+#include "lcuicomponentrepository.h"
+#include "lceffecthandler.h"
+#include "lcvideowidget.h"
+
+//SYSTEM
+#include <hblabel.h>
+#include <hbdialog.h>
+#include <hbtransparentwindow.h>
+#include <hbmessagebox.h>
+#include <hbaction.h>
+#include <hbmenu.h>
+#include <hbpushbutton.h>
+#include <hbtoolbar.h>
+#include <hbinstance.h>
+#include <hbeffect.h>
+#include <qgraphicssceneevent.h>
+#include <qtimer.h>
+#include <hblineedit.h>
+#include <dialpad.h>
+#include <hbtapgesture.h>
+#include <DialpadVtKeyHandler.h>
+
+
+
+#if ( defined __WINSCW__ ) || ( defined __WINS__ )
+const int inActivityTimeout = 5000; //5 secs
+#else
+const int inActivityTimeout = 2000; //2 secs
+#endif
+
+// -----------------------------------------------------------------------------
+// LcView::LcView
+// -----------------------------------------------------------------------------
+//
+LcView::LcView(LcUiEngine& engine, LcUiComponentRepository& repository)
+ : HbView(0),
+ mEngine(engine),
+ mRepository(repository),
+ mRecipient(0),
+ mDuration(0),
+ mContactIcon(0),
+ mSharedVideoWidget(0),
+ mReceivedVideoWidget(0),
+ mChangeCameraAction(0),
+ mMuteAction(0),
+ mSpeakerAction(0),
+ mDisableCameraAction(0),
+ mDisableCameraMenuAction(0),
+ mNotSupportedNote(0),
+ mEndCallButton(0),
+ mReceivedVideoEffectOverlay(0),
+ mSharedVideoEffectOverlay(0),
+ mEffectHandler(0),
+ mItemContextMenu(0),
+ mIsOptionMenuOpen(false),
+ mDialpad(0),
+ mDialpadVtKeyHandler(0),
+ timerId(0),
+ isViewReady(0)
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::LcView()" )
+
+ createNotSupportedNote();
+
+ // For LiveComms views Dock Wiget Item is explicitly hidden.
+ hideItems(Hb::DockWidgetItem);
+
+ //Subscribe to the gesture events.
+ grabGesture(Qt::TapGesture,Qt::DontStartGestureOnChildren);
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::LcView()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcView::~LcView
+// -----------------------------------------------------------------------------
+//
+LcView::~LcView()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::~LcView()" )
+
+ // Un-subscribe to the gesture events.
+ ungrabGesture(Qt::TapGesture);
+
+ delete mEffectHandler;
+ delete mNotSupportedNote;
+ delete mDialpadVtKeyHandler;
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::~LcView()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::init
+// -----------------------------------------------------------------------------
+//
+void LcView::init()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::init()" )
+ //find member widgets from repository
+ //( can be also found by browsing this view itself )
+
+ //due stubs in unit tests, qobject_cast cannot be used. Using static_cast instead
+ mRecipient =
+ static_cast<HbLabel*>( mRepository.findWidget( lcLabelRecipientId ) );
+ mDuration =
+ static_cast<HbLabel*>( mRepository.findWidget( lcLabelDurationId ) );
+ mContactIcon =
+ static_cast<HbLabel*>( mRepository.findWidget( lcIconContactId ) );
+ mSharedVideoWidget =
+ static_cast<LcVideoWidget*>(
+ mRepository.findWidget( lcWidgetSendVideoId ) );
+ mReceivedVideoWidget =
+ static_cast<LcVideoWidget*>(
+ mRepository.findWidget( lcWidgetRecvVideoId ) );
+ mChangeCameraAction =
+ static_cast<HbAction*>( mRepository.findObject( lcActChangeCameraId ) );
+ mMuteAction =
+ static_cast<HbAction*>( mRepository.findObject( lcActMuteId ) );
+ mSpeakerAction =
+ static_cast<HbAction*>( mRepository.findObject( lcActSpeakerId ) );
+ mDisableCameraAction =
+ static_cast<HbAction*>( mRepository.findObject( lcActDisableCameraId ) );
+
+ mDisableCameraMenuAction =
+ static_cast<HbAction*>( mRepository.findObject( lcActMenuDisableCameraId ) );
+
+ mEndCallButton =
+ static_cast<HbPushButton*>( mRepository.findObject( lcButtonEndCall ) );
+
+ if ( mEndCallButton ) {
+ connect( mEndCallButton, SIGNAL(clicked()), this, SLOT(endVideoSession()));
+ }
+
+ if ( mSharedVideoWidget ) {
+ mSharedVideoEffectOverlay = static_cast<LcVideoWidget*>(
+ mRepository.findWidget( lcWidgetSendVideoId2 ) );
+ if ( mSharedVideoEffectOverlay ) {
+ mSharedVideoEffectOverlay->show();
+ }
+ }
+
+ mReceivedVideoEffectOverlay =
+ static_cast<LcVideoWidget*>( mRepository.findWidget( lcWidgetRecvVideoId2 ) );
+
+ if ( mReceivedVideoEffectOverlay ) {
+ mReceivedVideoEffectOverlay->show();
+ }
+
+ // swap
+ mEffectHandler = new LcEffectHandler( mEngine,
+ mSharedVideoWidget, mSharedVideoEffectOverlay,
+ mReceivedVideoWidget, mReceivedVideoEffectOverlay);
+ connect( mEffectHandler, SIGNAL(swapCompleted()), this, SLOT(updateVideoRects()) );
+ connect( mEffectHandler, SIGNAL(loadSwapLayout()), this, SLOT(updateSwapLayout()) );
+
+ // menu
+ if ( menu()) {
+ connect( menu(), SIGNAL(aboutToShow()), this, SLOT(menuAboutToShow()) );
+ connect( menu(), SIGNAL(aboutToHide()), this, SLOT(watchInactivity()) );
+ }
+
+ // Set up navigation action.
+ setNavigationAction(new HbAction(Hb::BackNaviAction, this));
+ connect(navigationAction(), SIGNAL(triggered()), this,
+ SLOT(back()));
+
+ // dialpad
+ mDialpad = static_cast<Dialpad*> ( mRepository.findWidget("lc_label_dialpad") );
+ connect( mDialpad, SIGNAL(aboutToClose()), this, SLOT(dialpadClosed()) );
+ connect( mDialpad, SIGNAL(aboutToOpen()), this, SLOT(dialpadOpened()) );
+ connect( &mDialpad->editor(), SIGNAL( contentsChanged() ), this, SLOT( dialpadEditorTextChanged() ) );
+ HbMainWindow* pWindow = HbInstance::instance()->allMainWindows().at(0);
+ if( pWindow && mDialpad ){
+ mDialpadVtKeyHandler = new DialpadVtKeyHandler( mDialpad,*pWindow );
+ }
+
+ // inactivity
+ connect( this, SIGNAL( contentFullScreenChanged() ), this, SLOT( watchInactivity() ) ) ;
+
+ // deactivate fullscreen and it inturn starts inactivity timeout
+ toFullScreen( false );
+
+ if ( mSharedVideoWidget ) {
+ connect( mSharedVideoWidget, SIGNAL( xChanged() ), this,
+ SLOT( updateVideoRects() ), Qt::QueuedConnection );
+ connect( mSharedVideoWidget, SIGNAL( yChanged() ), this,
+ SLOT( updateVideoRects() ) , Qt::QueuedConnection);
+ }
+ if ( mReceivedVideoWidget ) {
+ connect( mReceivedVideoWidget, SIGNAL( xChanged() ), this,
+ SLOT( updateVideoRects() ), Qt::QueuedConnection );
+ connect( mReceivedVideoWidget, SIGNAL( yChanged() ), this,
+ SLOT( updateVideoRects() ), Qt::QueuedConnection );
+ }
+
+ //Subscribe to the Volume Change Events.
+ connect( &mEngine, SIGNAL(volumeChanged(int)),
+ this, SLOT(updateVolumeSlider(int)) );
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::init()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcView::updateVideoRects
+// -----------------------------------------------------------------------------
+//
+void LcView::updateVideoRects()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::updateVideoRects()" )
+
+ QRectF sharedContentRect;
+ QRectF receivedContentRect;
+
+ //Workaround: widgets positioning takes time, do not inform to the
+ //engine for rendering if co-ordinates of the videos are incorrect.
+
+ if ( isPositioned() ) {
+
+ if ( mSharedVideoWidget ) {
+ sharedContentRect = mSharedVideoWidget->geometry();
+ sharedContentRect.moveTop(
+ sharedContentRect.y() + mapToParent(scenePos()).y());
+ sharedContentRect = translateRectForOrientation(sharedContentRect);
+ mEffectHandler->setVisibility(
+ mSharedVideoWidget, mEngine.isLocalPlayerPlaying());
+ }
+
+ if ( mReceivedVideoWidget ) {
+ receivedContentRect = mReceivedVideoWidget->geometry();
+ receivedContentRect.moveTop(
+ receivedContentRect.y() + mapToParent(scenePos()).y());
+ receivedContentRect = translateRectForOrientation(receivedContentRect);
+ mEffectHandler->setVisibility(
+ mReceivedVideoWidget, mEngine.isRemotePlayerPlaying());
+ }
+
+ mEngine.setContentAreas( sharedContentRect, receivedContentRect );
+ mEngine.setOrientation( HbInstance::instance()->allMainWindows().at(0)->orientation() );
+ mEngine.updateSession();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcView::updateVideoRects()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::swap
+// -----------------------------------------------------------------------------
+//
+void LcView::swap()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::swap()" )
+ if ( mEffectHandler ){
+ mEffectHandler->swap();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcView::swap()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcView::updateSwapLayout
+// -----------------------------------------------------------------------------
+//
+
+void LcView::updateSwapLayout()
+{
+ mRepository.loadLayout( currentLayout() );
+ toFullScreen( true );
+}
+
+// -----------------------------------------------------------------------------
+// LcView::activated
+// -----------------------------------------------------------------------------
+//
+void LcView::activated()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::activated()" )
+
+ updateVideoRects();
+
+ if ( mEngine.mainCamera() ) {
+ setCameraActionToSecondary();
+ } else {
+ setCameraActionToMain();
+ }
+
+ if ( mEngine.isMuted() ) {
+ setMuteActionToUnmute();
+ } else {
+ setMuteActionToMute();
+ }
+
+ if ( mEngine.isSpeakerOn() ) {
+ setSpeakerActionToHandset();
+ } else {
+ setSpeakerActionToSpeaker();
+ }
+
+ if( mEngine.isLocalPlayerPlaying() ){
+ setCameraActionToDisable();
+ } else {
+ setCameraActionToEnable();
+ }
+
+ if ( mChangeCameraAction ) {
+ connect(
+ &mEngine, SIGNAL(cameraChangedToMain()),
+ this, SLOT(setCameraActionToSecondary()) );
+ connect(
+ &mEngine, SIGNAL(cameraChangedToSecondary()),
+ this, SLOT(setCameraActionToMain()));
+ }
+
+ if ( mMuteAction ) {
+ connect(
+ &mEngine, SIGNAL(muted()),
+ this, SLOT(setMuteActionToUnmute()) );
+ connect(
+ &mEngine, SIGNAL(unmuted()),
+ this, SLOT(setMuteActionToMute()));
+ }
+
+ if ( mSpeakerAction ) {
+ connect( &mEngine, SIGNAL(speakerEnabled()),
+ this, SLOT(setSpeakerActionToHandset()) );
+ connect( &mEngine, SIGNAL(speakerDisabled()),
+ this, SLOT(setSpeakerActionToSpeaker()) );
+ }
+
+ if ( mDisableCameraAction ) {
+ connect(
+ &mEngine, SIGNAL(cameraDisabled()),
+ this, SLOT(setCameraActionToEnable()) );
+ connect(
+ &mEngine, SIGNAL(cameraEnabled()),
+ this, SLOT(setCameraActionToDisable()));
+ }
+
+ connect( &mEngine, SIGNAL(blocked()), this, SLOT(disableControls()) );
+ connect( &mEngine, SIGNAL(unblocked()), this, SLOT(enableControls()) );
+
+ if ( mDuration ) {
+ // TODO: clearing is needed for label in order to
+ // get text changed. Seems like bug in orbit side.
+ // This causes that duration is not changed. Workaround
+ // would be to call clear always when duration changes.
+ mDuration->clear();
+ connect(
+ &mEngine, SIGNAL(sessionDurationChanged(const QString &)),
+ mDuration, SLOT(setPlainText(const QString &)) );
+ }
+
+ if ( mRecipient ){
+ mRecipient->clear();
+ mRecipient->setPlainText( mEngine.recipient() );
+ connect(
+ &mEngine, SIGNAL(recipientChanged(const QString &)),
+ mRecipient, SLOT(setPlainText(const QString &)) );
+ }
+
+ if ( mSharedVideoWidget ) {
+ connect( &mEngine, SIGNAL(localPlayerPlaying()),
+ mEffectHandler, SLOT(showSendWindow()) );
+ connect( &mEngine, SIGNAL(localPlayerPaused()),
+ mEffectHandler, SLOT(hideSendWindow()) );
+ connect( &mEngine, SIGNAL(localPlayerPlaying()),
+ this, SLOT(setCameraActionToDisable()));
+ connect( &mEngine, SIGNAL(localPlayerPaused()),
+ this, SLOT(setCameraActionToEnable()));
+ connect( &mEngine, SIGNAL(localPlayerUnavailable()),
+ this, SLOT(setCameraActionToEnable()));
+ connect( &mEngine, SIGNAL(localPlayerPlaying()),
+ this, SLOT(updateVideoRects()));
+ }
+
+ if ( mReceivedVideoWidget ) {
+ connect( &mEngine, SIGNAL(remotePlayerPlaying()),
+ mEffectHandler, SLOT(showReceiveWindow()) );
+ connect( &mEngine, SIGNAL(remotePlayerPaused()),
+ mEffectHandler, SLOT(hideReceiveWindow()) );
+ connect( &mEngine, SIGNAL(remotePlayerPlaying()),
+ this, SLOT(updateVideoRects()) );
+ }
+
+ mEngine.setCurrentView(this);
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::activated()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::deactivated
+// -----------------------------------------------------------------------------
+//
+void LcView::deactivated()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::deactivated()" )
+ QRectF sharedContentRect;//null area
+ QRectF receivedContentRect;//null area
+
+ mEngine.setContentAreas( sharedContentRect, receivedContentRect );
+ disconnect( &mEngine, 0, this, 0 );
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::deactivated()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::notSupported
+// -----------------------------------------------------------------------------
+//
+void LcView::notSupported()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::notSupported()" )
+
+ mNotSupportedNote->show();
+ toFullScreen( false );
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::notSupported()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::shareImage
+// -----------------------------------------------------------------------------
+//
+void LcView::shareImage()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::shareImage()" )
+ const char localImageName[] = "c:\\data\\local.jpg";
+ QString fileName = QString::fromAscii(localImageName);
+ mEngine.shareImage(fileName);
+ LC_QDEBUG( "livecomms [UI] <- LcView::shareImage()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::endVideoSession
+// -----------------------------------------------------------------------------
+//
+void LcView::endVideoSession()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::endVideoSession()" )
+
+ mEngine.stop();
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::endVideoSession()" )
+
+}
+
+// -----------------------------------------------------------------------------
+// LcView::disableCamera
+// -----------------------------------------------------------------------------
+//
+void LcView::disableCamera()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::disableCamera()" )
+
+ mEffectHandler->setDissappearEffect( LcEffectHandler::NormalDissappear );
+ mEngine.toggleDisableCamera();
+ toFullScreen( mEngine.fullScreenMode() );
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::disableCamera()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::mute
+// -----------------------------------------------------------------------------
+//
+void LcView::mute()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::mute()" )
+
+ mEngine.toggleMute();
+ toFullScreen( false );
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::mute()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::changeCamera
+// -----------------------------------------------------------------------------
+//
+void LcView::changeCamera()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::changeCamera()" )
+
+ mEffectHandler->setDissappearEffect( LcEffectHandler::DissappearToFlip );
+ mEngine.toggleCamera();
+ toFullScreen( false );
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::changeCamera()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::switchToVoiceCall
+// -----------------------------------------------------------------------------
+//
+void LcView::switchToVoiceCall()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::switchToVoiceCall()" )
+
+ mEngine.stop();
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::switchToVoiceCall()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::speaker
+// -----------------------------------------------------------------------------
+//
+void LcView::speaker()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::speaker()" )
+
+ mEngine.toggleSpeaker();
+ toFullScreen( false );
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::speaker()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::setCameraActionToMain
+// -----------------------------------------------------------------------------
+//
+void LcView::setCameraActionToMain()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::setCameraActionToMain()" )
+
+ if ( mChangeCameraAction ){
+ mChangeCameraAction->setIcon (HbIcon( lcIconNameMainCamera ));
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcView::setCameraActionToMain()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::setCameraActionToSecondary
+// -----------------------------------------------------------------------------
+//
+void LcView::setCameraActionToSecondary()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::setCameraActionToSecondary()" )
+
+ if ( mChangeCameraAction ){
+ mChangeCameraAction->setIcon (HbIcon( lcIconNameSecondaryCamera ));
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcView::setCameraActionToSecondary()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::setMuteActionToUnmute
+// -----------------------------------------------------------------------------
+//
+void LcView::setMuteActionToUnmute()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::setMuteActionToUnmute()" )
+
+ if ( mMuteAction ){
+ mMuteAction->setIcon (HbIcon( lcIconNameUnmuteMic ));
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcView::setMuteActionToUnmute()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::setMuteActionToMute
+// -----------------------------------------------------------------------------
+//
+void LcView::setMuteActionToMute()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::setMuteActionToMute()" )
+ if ( mMuteAction ){
+ mMuteAction->setIcon (HbIcon( lcIconNameMuteMic ));
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcView::setMuteActionToMute()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::setSpeakerActionToHandset
+// -----------------------------------------------------------------------------
+//
+void LcView::setSpeakerActionToHandset()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::setSpeakerActionToHandset()" )
+ if ( mSpeakerAction ){
+ mSpeakerAction->setIcon (HbIcon( lcIconNameHandset ));
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcView::setSpeakerActionToHandset()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::setSpeakerActionToSpeaker
+// -----------------------------------------------------------------------------
+//
+void LcView::setSpeakerActionToSpeaker()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::setSpeakerActionToSpeaker()" )
+ if ( mSpeakerAction ){
+ mSpeakerAction->setIcon( HbIcon( lcIconNameLoudspeaker ));
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcView::setSpeakerActionToSpeaker()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::setCameraActionToEnable
+// -----------------------------------------------------------------------------
+//
+void LcView::setCameraActionToEnable()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::setCameraActionToEnable()" )
+
+ if ( mDisableCameraAction ){
+ mDisableCameraAction->setIcon( HbIcon( lcIconNameEnableCamera ));
+ }
+ if ( mDisableCameraMenuAction ){
+ // TODO: get text from repository as loc id is not the same for mus
+ mDisableCameraMenuAction->setText( hbTrId( "txt_vt_menu_enable_camera" ));
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::setCameraActionToEnable()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::setCameraActionToDisable
+// -----------------------------------------------------------------------------
+//
+void LcView::setCameraActionToDisable()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::setCameraActionToDisable()" )
+
+ if ( mDisableCameraAction ){
+ mDisableCameraAction->setIcon (HbIcon( lcIconNameDisableCamera ));
+ }
+ if ( mDisableCameraMenuAction ){
+ // TODO: get text from repository as loc id is not the same for mus
+ mDisableCameraMenuAction->setText( hbTrId( "txt_vt_menu_disable_camera" ));
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::setCameraActionToDisable()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::disableControls
+// -----------------------------------------------------------------------------
+//
+void LcView::disableControls()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::disableControls()" )
+ menu()->setEnabled( false );
+ toolBar()->setEnabled( false );
+ LC_QDEBUG( "livecomms [UI] <- LcView::disableControls()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::enableControls
+// -----------------------------------------------------------------------------
+//
+void LcView::enableControls()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::enableControls()" )
+ menu()->setEnabled( true );
+ toolBar()->setEnabled( true );
+ LC_QDEBUG( "livecomms [UI] <- LcView::enableControls()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::gestureEvent
+// -----------------------------------------------------------------------------
+//
+void LcView::gestureEvent(QGestureEvent *event)
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::gestureEvent()" )
+ if( event ){
+ // unsafe typecast but no other way to access tapstylehint from orbit
+ HbTapGesture *tap = static_cast<HbTapGesture *>(event->gesture(Qt::TapGesture));
+ Qt::GestureState tapState = tap->state();
+ HbTapGesture::TapStyleHint hint = tap->tapStyleHint();
+ if ( tapState == Qt::GestureUpdated && hint == HbTapGesture::TapAndHold ) {
+ gestureLongPress(translatePointForOrientation(tap->position()));
+ } else if ( tapState == Qt::GestureFinished && hint == HbTapGesture::Tap ) {
+ gestureShortPress();
+ }
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcView::gestureEvent()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcView::gestureLongPress
+// -----------------------------------------------------------------------------
+//
+void LcView::gestureLongPress(QPointF coords)
+{
+ LC_QDEBUG_2( "livecomms [UI] -> LcView::gestureLongPress(), coords:", coords )
+
+ bool sharedHit = false;
+
+ if ( mSharedVideoWidget && mSharedVideoWidget->windowFrameGeometry().contains(coords) ) {
+ LC_QDEBUG( "livecomms [UI] LcView mapped to mSharedVideoWidget" )
+ sharedHit = true;
+ }
+
+ if ( sharedHit ) {
+ LC_QDEBUG( "livecomms [UI] LcView mapped to mSharedVideoWidget" )
+
+ createContextMenu();
+ mRepository.sharedVideoContextMenuActions( mItemContextMenu, *this );
+
+ if ( mItemContextMenu->actions().count() > 0 ) {
+ mItemContextMenu->open(this);
+ }
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::gestureLongPress()" )
+}
+
+
+
+// -----------------------------------------------------------------------------
+// LcView::gestureShortPress
+// -----------------------------------------------------------------------------
+//
+void LcView::gestureShortPress()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::gestureShortPress()" )
+ toFullScreen( !mEngine.fullScreenMode() );
+ LC_QDEBUG( "livecomms [UI] <- LcView::gestureShortPress()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::createNotSupportedNote
+// -----------------------------------------------------------------------------
+//
+void LcView::createNotSupportedNote()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::createNotSupportedNote()" )
+
+ if ( !mNotSupportedNote ){
+ mNotSupportedNote = new HbMessageBox(QString("Not supported"));
+ mNotSupportedNote->setTimeout(HbDialog::StandardTimeout);
+ mNotSupportedNote->setZValue(LC_NOTE_ON_TOP);
+ mNotSupportedNote->hide();
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::createNotSupportedNote()" )
+}
+
+
+
+// -----------------------------------------------------------------------------
+// LcView::createContextMenu
+// -----------------------------------------------------------------------------
+//
+void LcView::createContextMenu()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::createContextMenu()" )
+
+ // mItemContextMenu is destroyed upon close
+ mItemContextMenu = new HbMenu();
+ mItemContextMenu->setDismissPolicy(HbMenu::TapAnywhere);
+ mItemContextMenu->setTimeout(HbMenu::ContextMenuTimeout);
+ mItemContextMenu->setAttribute(Qt::WA_DeleteOnClose);
+
+ LC_QDEBUG( "livecomms [UI] <- LcView::createContextMenu()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::currentLayout
+// -----------------------------------------------------------------------------
+//
+QString LcView::currentLayout()
+{
+ QString layout( lcLayoutLandscapeDefaultId );
+
+ if ( mEffectHandler->isSwapInProgress() &&
+ mSharedVideoWidget &&
+ mReceivedVideoWidget &&
+ mSharedVideoWidget->geometry().left() > mReceivedVideoWidget->geometry().left() ) {
+
+ layout = lcLayoutLandscapeSwappedId;
+ }
+
+ LC_QDEBUG_2( "livecomms [UI] -> LcView::currentLayout()", layout )
+ return layout;
+}
+
+
+// -----------------------------------------------------------------------------
+// LcView::menuAboutToShow
+// -----------------------------------------------------------------------------
+//
+void LcView::menuAboutToShow()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcView::menuAboutToShow()" )
+ toFullScreen( false );
+ LC_QDEBUG( "livecomms [UI] <- LcView::menuAboutToShow()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcView::translateRectForOrientation
+// Video windows at engine side do not change their coordinate system
+// when orientation at orbit UI changes. Therefore we need to convert video
+// rects from landscape coordinate system to portait coordinate system.
+// NOTE: Landscape orientation has different rotation in emulator than in HW.
+// -----------------------------------------------------------------------------
+//
+QRectF LcView::translateRectForOrientation(const QRectF& origRect)
+{
+ QRectF newRect = origRect;
+ QMatrix m;
+#if ( defined __WINSCW__ ) || ( defined __WINS__ )
+ m.rotate(270);
+ newRect = m.mapRect(newRect);
+ newRect.translate(0,HbInstance::instance()->allMainWindows().at(0)->rect().height());
+#else
+ m.rotate(90);
+ newRect = m.mapRect(newRect);
+ newRect.translate(HbInstance::instance()->allMainWindows().at(0)->rect().width(),0);
+#endif
+ return newRect;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+QPointF LcView::translatePointForOrientation(const QPointF& origPoint)
+{
+ QPointF newPoint = origPoint;
+ QMatrix m;
+#if ( defined __WINSCW__ ) || ( defined __WINS__ )
+ m.translate(HbInstance::instance()->allMainWindows().at(0)->rect().height(),0);
+ m.rotate(90);
+ newPoint = m.map(newPoint);
+#else
+ m.translate(0,HbInstance::instance()->allMainWindows().at(0)->rect().width());
+ m.rotate(270);
+ newPoint = m.map(newPoint);
+#endif
+ return newPoint;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcView::setVisibility( QGraphicsItem* item, bool visible )
+{
+ if ( item ) {
+ item->setVisible(visible);
+ }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcView::addOptionsMenuActions()
+{
+ HbAction* swapAction = static_cast<HbAction*>(
+ mRepository.findObject(lcActSwapViewsId));
+ menu()->addAction(swapAction);
+
+ HbAction* openKeypadAction = static_cast<HbAction*>(
+ mRepository.findObject(lcActOpenKeypadId));
+ menu()->addAction(openKeypadAction);
+}
+
+// -----------------------------------------------------------------------------
+// LcView::openDialpad()
+// -----------------------------------------------------------------------------
+//
+void LcView::openDialpad()
+{
+ LC_QDEBUG("livecomms [UI] -> LcView::openDialpad()")
+ mRepository.loadLayout( lcLayoutLandscapeDialpadId );
+ if ( mEffectHandler )mEffectHandler->startEffects();
+ mDialpad->openDialpad();
+ mDialpad->setCallButtonEnabled(false);
+ menu()->clearActions();
+ LC_QDEBUG("livecomms [UI] <- LcView::openDialpad()")
+}
+
+// -----------------------------------------------------------------------------
+// LcView::dialpadOpened()
+// -----------------------------------------------------------------------------
+//
+void LcView::dialpadOpened()
+{
+ LC_QDEBUG("livecomms [UI] <-> LcView::dialpadOpened()")
+ toolBar()->setVisible( false );
+ setTitleBarVisible( true );
+}
+
+// -----------------------------------------------------------------------------
+// LcView::dialpadClosed()
+// -----------------------------------------------------------------------------
+//
+void LcView::dialpadClosed()
+{
+ LC_QDEBUG("livecomms [UI] -> LcView::dialpadClosed()")
+ mDialpad->editor().setText(QString());
+ addOptionsMenuActions();
+ // switch back to the previous layout
+ QString pLayout = mRepository.previousLayout();
+ QString layout;
+ bool isSwapped = (pLayout == lcLayoutLandscapeDefaultId)
+ ? false : true;
+ layout = (isSwapped) ?
+ lcLayoutLandscapeSwappedId : lcLayoutLandscapeDefaultId;
+
+ mRepository.loadLayout( layout );
+ if ( mEffectHandler ){
+ mEffectHandler->startEffects();
+ }
+ toFullScreen(false);
+ LC_QDEBUG("livecomms [UI] <- LcView::dialpadClosed()")
+}
+
+// -----------------------------------------------------------------------------
+// LcView::dialpadEditorTextChanged()
+// -----------------------------------------------------------------------------
+//
+void LcView::dialpadEditorTextChanged()
+{
+ LC_QDEBUG_2("livecomms [UI] -> Dial Pad Field ", mDialpad->editor().text());
+
+ if ( mDialpad->editor().text().length() > 0 ) {
+ LC_QDEBUG_2("livecomms [UI] -> Last Dialled Charcter ", mDialpad->editor().text().right(1));
+ bool dialPadStatus = mEngine.SendDialTone(mDialpad->editor().text().right(1).at(0));
+ LC_QDEBUG_2("livecomms [UI] -> Dialpad Send Tone Status ",dialPadStatus)
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcView::back
+// -----------------------------------------------------------------------------
+//
+void LcView::back()
+{
+ LC_QDEBUG("livecomms [UI] -> LcView::back()")
+ if ( mDialpad && mDialpad->isOpen()) {
+ LC_QDEBUG("livecomms [UI] - Closing dialpad")
+ mDialpad->closeDialpad();
+ } else {
+ mEngine.minimize();
+ }
+
+ LC_QDEBUG("livecomms [UI] <- LcView::back()")
+}
+
+// -----------------------------------------------------------------------------
+// LcView::timerEvent
+// -----------------------------------------------------------------------------
+//
+void LcView::timerEvent( QTimerEvent * event )
+{
+ if ( event->timerId() == timerId ){
+ LC_QDEBUG("livecomms [UI] -> LcView::timerEvent() inActivity Timeout")
+ killTimer( timerId );
+ toFullScreen(true);
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcView::watchInactivity
+// -----------------------------------------------------------------------------
+//
+void LcView::watchInactivity()
+{
+ if( !mEngine.fullScreenMode() && !( mDialpad && mDialpad->isOpen() ) ){
+ LC_QDEBUG("livecomms [UI] - LcView::watchInactivity() start watching inactivity")
+ killTimer( timerId );
+ timerId = startTimer( inActivityTimeout );
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcView::toFullScreen utility function
+// -----------------------------------------------------------------------------
+//
+void LcView::toFullScreen( bool fullscreen )
+{
+ LC_QDEBUG_2("livecomms [UI] - LcView::toFullScreen(),",fullscreen)
+ if( menu()->isVisible() || ( mDialpad && mDialpad->isOpen() ) ) return;
+ mEngine.setFullScreenMode( fullscreen );
+ setTitleBarVisible( !fullscreen );
+ setStatusBarVisible( !fullscreen );
+ toolBar()->setVisible( !fullscreen );
+ setVisibility( mEndCallButton, !fullscreen );
+ setVisibility( mDuration, !fullscreen );
+ setVisibility( mRecipient, !fullscreen );
+ emit contentFullScreenChanged();
+}
+
+
+// -----------------------------------------------------------------------------
+// LcView::isVideoPositionedCorrectly utility function
+// -----------------------------------------------------------------------------
+//
+bool LcView::isVideoPositionedCorrectly( LcVideoWidget* mVideoWidget )
+{
+ LC_QDEBUG("livecomms [UI] -> LcView::isVideoPositionedCorrectly()")
+ LC_QDEBUG("livecomms [UI] <- LcView::isVideoPositionedCorrectly()")
+ QPointF initialPosition(0,0);
+ return ( !mVideoWidget ||
+ (( mVideoWidget ) && ( mVideoWidget->pos()!= initialPosition )));
+}
+
+// -----------------------------------------------------------------------------
+// LcView::isPositioned utility function
+// hack style since orbit give viewready much earlier and widgets do not have
+// proper co-ordinates.
+// -----------------------------------------------------------------------------
+//
+bool LcView::isPositioned()
+{
+ LC_QDEBUG("livecomms [UI] -> LcView::isPositioned()")
+ // at first time check for video positions if they are not ready
+ // wait for x or y changed event and recheck position.
+ // After firsttime it will work.
+ if( !isViewReady ){
+ isViewReady = isVideoPositionedCorrectly( mSharedVideoWidget ) &&
+ isVideoPositionedCorrectly( mReceivedVideoWidget );
+ if( isViewReady ){
+ if ( mSharedVideoWidget ) {
+ disconnect( mSharedVideoWidget, SIGNAL( xChanged() ), this,
+ SLOT( updateVideoRects() ) );
+ disconnect( mSharedVideoWidget, SIGNAL( yChanged() ), this,
+ SLOT( updateVideoRects() ) );
+ }
+ if ( mReceivedVideoWidget ) {
+ disconnect( mReceivedVideoWidget, SIGNAL( xChanged() ), this,
+ SLOT( updateVideoRects() ) );
+ disconnect( mReceivedVideoWidget, SIGNAL( yChanged() ), this,
+ SLOT( updateVideoRects() ) );
+ }
+ }
+ }
+ LC_QDEBUG_2("livecomms [UI] - LcView::isPositioned(),",isViewReady)
+ return isViewReady;
+}
+
+
+// -----------------------------------------------------------------------------
+// LcView::updateVolumeSlider
+// -----------------------------------------------------------------------------
+//
+void LcView::updateVolumeSlider( int aVolumeLevel )
+{
+ LC_QDEBUG("livecomms [UI] -> LcView::updateVolumeSlider()")
+ //TBD: Show volume slider, with update volume level
+ LC_QDEBUG_2("Volume Level Is,",aVolumeLevel)
+ LC_QDEBUG("livecomms [UI] <- LcView::updateVolumeSlider()")
+}
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/src/lcviewmanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+//USER
+#include "lcviewmanager.h"
+#include "lcviewmanager_p.h"
+#include "lclogger.h"
+
+
+
+// -----------------------------------------------------------------------------
+// LcViewManager::LcViewManager
+// -----------------------------------------------------------------------------
+//
+LcViewManager::LcViewManager( const QString &engineName,
+ const QString &applicationDisplayName)
+{
+
+ d_ptr = new LcViewManagerPrivate( engineName, applicationDisplayName );
+
+}
+
+
+// -----------------------------------------------------------------------------
+// LcViewManager::~LcViewManager
+// -----------------------------------------------------------------------------
+//
+LcViewManager::~LcViewManager()
+{
+ delete d_ptr;
+}
+
+
+// -----------------------------------------------------------------------------
+// LcViewManager::terminateSession
+// -----------------------------------------------------------------------------
+//
+void LcViewManager::terminateSession()
+{
+ d_ptr->terminateSession();
+}
+
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/src/lcviewmanager_p.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,282 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER INCLUDES
+#include "lcviewmanager_p.h"
+#include "lcuicomponentrepository.h"
+#include "lcuidefs.h"
+#include "lcuiengine.h"
+#include "lcview.h"
+#include "lclogger.h"
+
+// SYSTEM INCLUDES
+#include <hbmainwindow.h>
+#include <hbdialog.h>
+#include <hbaction.h>
+#include <qcoreapplication.h>
+#include <hbactivitymanager.h>
+#include <hbapplication.h>
+#include <hbapplication.h>
+
+// CONSTANTS
+#define LC_VIEWMANAGER_SLOT_ACTIVATE_CURRENT_VIEW "activateCurrentView"
+
+
+
+// -----------------------------------------------------------------------------
+// LcMainWindow::LcMainWindow
+// -----------------------------------------------------------------------------
+//
+LcMainWindow::LcMainWindow() :
+ HbMainWindow(0, Hb::WindowFlagFixedHorizontal | Hb::WindowFlagTransparent)
+{
+ // TODO: remove flag WindowFlagFixedHorizontal if portait layout
+ // is going to be supported.
+ qApp->installEventFilter(this);
+}
+
+// -----------------------------------------------------------------------------
+// LcMainWindow::~LcMainWindow
+// -----------------------------------------------------------------------------
+//
+LcMainWindow::~LcMainWindow()
+{
+}
+
+// -----------------------------------------------------------------------------
+// LcMainWindow::eventFilter
+// -----------------------------------------------------------------------------
+//
+bool LcMainWindow::eventFilter ( QObject * watched, QEvent * event )
+{
+ if ( event->type() == QEvent::ApplicationActivate ){
+ LC_QDEBUG( "livecomms [UI] -> LcMainWindow::eventFilter(), ApplicationActivate" )
+ emit appFocusGained();
+ } else if (( event->type() == QEvent::ApplicationDeactivate ) &&
+ ( !this->windowSurface()) ){
+ LC_QDEBUG( "livecomms [UI] -> LcMainWindow::eventFilter(), ApplicationDeactivate" )
+ emit appFocusLost();
+ }
+ return QObject::eventFilter(watched, event);
+}
+
+
+// -----------------------------------------------------------------------------
+// LcViewManagerPrivate::LcViewManagerPrivate
+// -----------------------------------------------------------------------------
+//
+LcViewManagerPrivate::LcViewManagerPrivate(
+ const QString& engineName,
+ const QString& applicationDisplayName) :
+ mEngine( 0 ),
+ mRepository( 0 )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcViewManagerPrivate::LcViewManagerPrivate()" )
+
+ mEngine = new LcUiEngine( engineName, applicationDisplayName );
+ mRepository = new LcUiComponentRepository( *mEngine );
+ setCurrentView( true );
+
+ connect(&mMainWindow, SIGNAL(appFocusGained()), mEngine, SLOT(maximize()));
+ connect(&mMainWindow, SIGNAL(appFocusLost()), mEngine, SLOT(minimize()));
+
+ LC_QDEBUG( "livecomms [UI] <- LcViewManagerPrivate::LcViewManagerPrivate()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcViewManagerPrivate::~LcViewManagerPrivate
+// -----------------------------------------------------------------------------
+//
+LcViewManagerPrivate::~LcViewManagerPrivate()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcViewManagerPrivate::~LcViewManagerPrivate()" )
+
+ delete mEngine;
+ QList<HbView *> views = mMainWindow.views();
+ foreach( HbView* view, views ){
+ mMainWindow.removeView(view);
+ }
+ delete mRepository;
+
+ LC_QDEBUG( "livecomms [UI] <- LcViewManagerPrivate::~LcViewManagerPrivate()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcViewManagerPrivate::terminateSession
+// -----------------------------------------------------------------------------
+//
+void LcViewManagerPrivate::terminateSession()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcViewManagerPrivate::terminateSession" )
+ mEngine->stop();
+ LC_QDEBUG( "livecomms [UI] <- LcViewManagerPrivate::terminateSession" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcViewManagerPrivate::prepareOrientationChange
+// -----------------------------------------------------------------------------
+//
+void LcViewManagerPrivate::prepareOrientationChange()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcViewManagerPrivate::prepareOrientationChange()" )
+ LC_QDEBUG( "livecomms [UI] <- LcViewManagerPrivate::prepareOrientationChange()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcViewManagerPrivate::activateCurrentView
+// -----------------------------------------------------------------------------
+//
+void LcViewManagerPrivate::activateCurrentView(bool startup)
+{
+ LC_QDEBUG( "livecomms [UI] -> LcViewManagerPrivate::activateCurrentView()" )
+ if ( mMainWindow.currentView() ) {
+ static_cast<LcView*>( mMainWindow.currentView() )->activated();
+ }
+
+ if ( startup ){
+ LC_QDEBUG( "livecomms [UI] Start engine" )
+ startEngine();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcViewManagerPrivate::activateCurrentView()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcViewManagerPrivate::startEngine
+// -----------------------------------------------------------------------------
+//
+void LcViewManagerPrivate::startEngine()
+{
+ connect(mEngine, SIGNAL(layoutChanged()), this, SLOT(changeView()),
+ Qt::QueuedConnection );
+ connect(mEngine, SIGNAL(stopped()), this, SLOT(closeApp()),
+ Qt::QueuedConnection );
+
+ mEngine->setUiComponents( mRepository->invitingNote(),
+ mRepository->waitingNote(),
+ mRepository->acceptQuery(),
+ mRepository->recipientQuery(),
+ mRepository->shareOwnVideoQuery() );
+ mEngine->start();
+}
+
+// -----------------------------------------------------------------------------
+// LcViewManagerPrivate::setCurrentView
+// -----------------------------------------------------------------------------
+//
+void LcViewManagerPrivate::setCurrentView(bool startup)
+{
+ LC_QDEBUG( "livecomms [UI] -> LcViewManagerPrivate::setCurrentView()" )
+
+ LcView* currView = currentView();
+
+ bool found(false);
+ foreach ( HbView* view, mMainWindow.views() ){
+ found |= ( view == currView );
+ }
+ if ( !found ){
+ mMainWindow.addView( currView );
+ }
+ mMainWindow.setCurrentView( currView );
+
+ LcUtil::asyncSlotCall(
+ this, LC_VIEWMANAGER_SLOT_ACTIVATE_CURRENT_VIEW, Q_ARG( bool, startup ) );
+
+ LC_QDEBUG( "livecomms [UI] <- LcViewManagerPrivate::setCurrentView()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcViewManagerPrivate::currentView
+// -----------------------------------------------------------------------------
+//
+LcView* LcViewManagerPrivate::currentView()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcViewManagerPrivate::currentView()" )
+
+ LcViewLayoutHint hint = mEngine->viewLayout();
+ LcView* nextView = 0;
+
+ switch ( hint ) {
+ case Lc_ReceivedViewLayout:
+ LC_QDEBUG( "livecomms [UI] - switching to receive view -" )
+ nextView = mRepository->receiveView();
+ break;
+ case Lc_ReceivedOnlyViewLayout:
+ LC_QDEBUG( "livecomms [UI] - switching to receive only view -" )
+ nextView = mRepository->receiveOnlyView();
+ break;
+ case Lc_AllInOneViewLayout:
+ LC_QDEBUG( "livecomms [UI] - switching to allinone view -" )
+ nextView = mRepository->allInOneView();
+ break;
+ case Lc_TwowayViewLayout:
+ LC_QDEBUG( "livecomms [UI] - switching to twoway view -" )
+ nextView = mRepository->twowayView();
+ break;
+ case Lc_SharedViewLayout:
+ LC_QDEBUG( "livecomms [UI] - switching to send view -" )
+ nextView = mRepository->sendView();
+ break;
+ default:
+ LC_QDEBUG( "livecomms [UI] - switching to idle view -" )
+ nextView = mRepository->idleView();
+ break;
+ }
+ if ( !nextView && hint > Lc_IdleViewLayout ) {
+ LC_QDEBUG( "livecomms [UI] ! could not get view !" )
+ LC_QDEBUG( "livecomms [UI] - switching to idle view -" )
+ nextView = mRepository->idleView();
+ }
+
+ if ( !nextView ) {
+ LC_QCRITICAL( "livecomms [UI] ! still could not get view !. ABORT" )
+ LC_PANIC();
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcViewManagerPrivate::currentView()" )
+ return nextView;
+}
+
+// -----------------------------------------------------------------------------
+// LcViewManagerPrivate::changeView
+// -----------------------------------------------------------------------------
+//
+void LcViewManagerPrivate::changeView()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcViewManagerPrivate::changeView()" )
+
+ LcView* currentView = static_cast<LcView*>( mMainWindow.currentView() );
+ currentView->deactivated();
+ setCurrentView();
+
+ LC_QDEBUG( "livecomms [UI] <- LcViewManagerPrivate::changeView()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcViewManagerPrivate::closeApp
+// -----------------------------------------------------------------------------
+//
+void LcViewManagerPrivate::closeApp()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcViewManagerPrivate::closeApp()" )
+
+ qApp->exit(0);
+
+ LC_QDEBUG( "livecomms [UI] <- LcViewManagerPrivate::closeApp()" )
+}
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/data/20021341.rss Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "registryinfov2.rh"
+
+RESOURCE REGISTRY_INFO theInfo
+ {
+ resource_format_version = RESOURCE_FORMAT_VERSION_2;
+ dll_uid = 0x20021341;
+ interfaces =
+ {
+ INTERFACE_INFO
+ {
+ interface_uid = 0x20021340;
+ implementations =
+ {
+ IMPLEMENTATION_INFO
+ {
+ implementation_uid = 0x20021341;
+ version_no = 1;
+ default_data = "MultimediaSharing";
+ }
+ };
+ }
+ };
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_MMPFILES
+dummymusengineplugin.mmp
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/group/dummymusengineplugin.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET musengineplugin.dll
+TARGETTYPE PLUGIN
+UID 0x10009D8D 0x20021341
+VENDORID VID_DEFAULT
+CAPABILITY CAP_ECOM_PLUGIN
+
+SOURCEPATH ../data
+START RESOURCE 20021341.rss
+TARGET musengineplugin.rsc
+END
+
+SOURCEPATH ../src
+SOURCE musenginepluginentry.cpp
+SOURCE musengsessionmanager.cpp
+
+
+SOURCE musengmcesession.cpp
+SOURCE musengtwowaysession.cpp
+SOURCE musengcamerahandler.cpp
+SOURCE musengvideoplayerbase.cpp
+SOURCE musenglocalvideoplayer.cpp
+SOURCE musenglivevideoplayer.cpp
+SOURCE musengremotevideoplayer.cpp
+SOURCE svptimer.cpp
+SOURCE mccdatasender.cpp
+SOURCE mccdatareceiver.cpp musenglivesession.cpp
+
+/*
+SOURCE musengmceoutsession.cpp
+SOURCE musenglivesession.cpp
+SOURCE musengreceivesession.cpp
+SOURCE musengtwowayrecvsession.cpp
+
+SOURCE musengtelephoneutils.cpp
+SOURCE musengsessiondurationtimer.cpp
+SOURCE musengclipsession.cpp
+SOURCE musenguriparser.cpp
+SOURCE musengmceutils.cpp
+SOURCE mussipprofilehandler.cpp
+SOURCE musengclipvideoplayer.cpp
+*/
+
+USERINCLUDE ../inc
+USERINCLUDE ../../../../../../inc
+USERINCLUDE ../../../../../mmshengine/inc
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/ecom
+
+LIBRARY euser.lib
+LIBRARY bafl.lib
+LIBRARY inetprotutil.lib
+LIBRARY phoneclient.lib
+LIBRARY centralrepository.lib
+LIBRARY sipprofilecli.lib
+LIBRARY sipclient.lib
+LIBRARY sipcodec.lib
+LIBRARY mceclient.lib
+LIBRARY drmcommon.lib
+LIBRARY charconv.lib
+LIBRARY telephonyaudiorouting.lib
+LIBRARY cntmodel.lib ecom.lib
+DEBUGLIBRARY flogger.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/mccdatareceiver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2006 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 MCCDATARECEIVER_H
+#define MCCDATARECEIVER_H
+#include <E32Base.h>
+#include <e32msgqueue.h>
+
+#include "mccdatareceiverobserver.h"
+#include "mccdatastructures.h"
+
+
+// CLASS DECLARATION
+
+/**
+* CMccDataReceiver class declaration
+*/
+class CMccDataReceiver : public CActive
+ {
+ public:
+
+ static CMccDataReceiver* NewL( MMccDataReceiverObserver& aObserver );
+
+ ~CMccDataReceiver();
+
+ TDataMessage iInitData;
+
+ public: // From CActive
+
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+ private:
+ CMccDataReceiver( MMccDataReceiverObserver& aObserver );
+ void ConstructL(); // second construction phase
+
+ private:
+
+ RMsgQueue<TDataMessage> iMsgQueue;
+ MMccDataReceiverObserver* iObserver;
+
+ };
+
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/mccdatareceiverobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2006 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 MCCDATARECEIVEROBSERVER_H
+#define MCCDATARECEIVEROBSERVER_H
+
+#include <E32Base.h>
+#include "mccdatastructures.h"
+
+// CLASS DECLARATION
+
+/**
+* CMccDataReceiver class declaration
+*/
+class MMccDataReceiverObserver
+ {
+ public:
+
+ virtual void DataReceived( const TDataMessage& aData ) = 0;
+
+ };
+
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/mccdatasender.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2006 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 MCCDATASENDER_H
+#define MCCDATASENDER_H
+#include <E32Base.h>
+#include <e32msgqueue.h>
+
+#include "mccdatastructures.h"
+
+
+// CLASS DECLARATION
+
+/**
+* CMccPeriodicRunner class declaration
+*/
+class CMccDataSender : public CActive
+ {
+ public:
+
+ static CMccDataSender* NewL();
+
+ ~CMccDataSender();
+
+ public:
+
+ void Send( const TDataMessage& aData );
+
+ public: // From CActive
+
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+ private:
+ CMccDataSender();
+ void ConstructL(); // second construction phase
+
+ private:
+
+ RMsgQueue<TDataMessage> iMsgQueue;
+ TDataMessage iBuffer;
+
+ };
+
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/mccdatastructures.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2006 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 MCCDATASTRUCTURES_H
+#define MCCDATASTRUCTURES_H
+
+#include <E32Base.h>
+
+enum TDataId
+{
+ EUninitialized,
+ EInitComplete,
+ EEstablish,
+ EProceeding,
+ EEstablished,
+ ETerminate,
+ ETerminated
+};
+
+class TDataMessage
+{
+public:
+ TDataId iDataId;
+ TInt iDataIntValue;
+ TBuf<50> iDataBufValue;
+
+};
+
+
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musengcamerahandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,111 @@
+/*
+* 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 MUSHENGCAMERAHANDLER_H
+#define MUSHENGCAMERAHANDLER_H
+
+// USER
+#include "lccameracontrol.h"
+#include "lcbrightnesscontrol.h"
+#include "lczoomcontrol.h"
+
+// SYSTEM
+#include <e32base.h>
+#include <ecam.h>
+
+
+// CLASS
+
+class TMusEngCameraHandler :
+ public MLcCameraControl,
+ public MLcBrightnessControl,
+ public MLcZoomControl
+ {
+
+ public: // From MLcCameraControl
+
+ TInt LcCameraCountL();
+
+ TInt CurrentLcCameraIndex();
+
+ void ToggleLcCameraL();
+
+ public: // From MLcBrightnessControl
+
+ TInt MinLcBrightnessL();
+
+ TInt MaxLcBrightnessL();
+
+ TInt LcBrightnessL();
+
+ void SetLcBrightnessL( TInt aValue );
+
+ void IncreaseLcBrightnessL();
+
+ void DecreaseLcBrightnessL();
+
+ public: // From MLcZoomControl
+
+ TInt MinLcZoomL();
+
+ TInt MaxLcZoomL();
+
+ TInt LcZoomValueL();
+
+ void SetLcZoomValueL( TInt aValue );
+
+ void LcZoomInL();
+
+ void LcZoomOutL();
+
+ public:
+
+ TMusEngCameraHandler();
+
+ TInt ZoomStepSize( TInt64& aTime );
+
+ private:
+
+ enum TCurrentCamera
+ {
+ ECameraNotAvailable = KErrNotFound,
+ EBackCamera = 0,
+ EFrontCamera = 1
+ };
+
+
+ private: // Data
+
+
+ TCameraInfo iCameraInfo;
+
+ TInt iDefaultBrightness;
+
+ TInt64 iZoomInTime;
+
+ TInt64 iZoomOutTime;
+
+ TInt iSmallZoomStep;
+
+ TInt iBigZoomStep;
+
+ TCurrentCamera iCurrentCamera;
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musengdisplayhandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* 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 MUSHENGDISPLAYHANDLER_H
+#define MUSHENGDISPLAYHANDLER_H
+
+
+#include <e32std.h>
+
+// CLASS DECLARATION
+
+/**
+* An Interface for display services
+*
+* @lib museng.lib
+* @since S60 v3.2
+*/
+class MMusEngDisplayHandler
+ {
+
+ public:
+
+ /*
+ * Defines possible rotations
+ */
+ enum TDisplayOrientation
+ {
+ EPortrait, // Normal
+ ELandscape // 90 degree's clockwise rotation
+ };
+
+ /**
+ * Returns currently assigned drawing area
+ *
+ * @return TRect This session drawing area rectangle
+ */
+ virtual TRect Rect() const = 0;
+
+ /**
+ * Sets new drawing area
+ *
+ * @param TRect This session new drawing area rectangle
+ */
+ virtual void SetRectL( const TRect& aRect ) = 0;
+
+ /**
+ * Sets secondary rect (e.g. viewfinder in twoway session)
+ * @param TRect This session new secondary drawing area rectangle
+ */
+ virtual void SetSecondaryRectL( const TRect& aSecondaryRect ) = 0;
+
+ /**
+ * Gets secondary rect.
+ * @return TRect This session secondary drawing area rectangle
+ */
+ virtual TRect SecondaryRect() const = 0;
+
+ /**
+ * Enables or disables display. Call to this function is considered
+ * as a permission or denial to draw to the display.
+ */
+ virtual void EnableDisplayL( TBool aEnable ) = 0;
+
+ /**
+ * Check whether display is enabled
+ */
+ virtual TBool IsDisplayEnabled() = 0;
+
+ /**
+ * Returns current display orientation.
+ *
+ * @pre Session is ongoing
+ * @return Current display orientation
+ * @leave KErrNotReady if precondition is not fullfilled
+ */
+ virtual TDisplayOrientation OrientationL() = 0;
+
+ /**
+ * Sets display orientation.
+ *
+ * @pre Session is ongoing
+ * @return Sets display orientation
+ * @leave KErrNotReady if precondition is not fullfilled
+ */
+ virtual void SetOrientationL( TDisplayOrientation aOrientation ) = 0;
+
+ /**
+ * Check if display is actively displaying content
+ * @return ETrue if is displaying content, otherwise EFalse
+ */
+ virtual TBool IsDisplayActive() = 0;
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musenglivesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* 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 MUSHENGLIVESESSION_H
+#define MUSHENGLIVESESSION_H
+
+// USER
+#include "musengmcesession.h"
+
+// SYSTEM
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class MMusEngLiveSessionObserver;
+class CMceDisplaySink;
+class MMusEngTwoWaySessionObserver;
+class CMusEngRemoteVideoPlayer;
+
+
+class CMusEngLiveSession : public CMusEngMceSession
+ {
+ public:
+ /**
+ * Creates new MultimediaSharing Live session.
+ * @return CMusEngLiveSession* New instanse of specified class
+ */
+ static CMusEngLiveSession* NewL();
+
+
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngLiveSession();
+
+ public:
+
+ void EnableDisplayL( TBool aEnable );
+
+ void SetOrientationL( MMusEngDisplayHandler::TDisplayOrientation aOrientation );
+
+ void EstablishLcSessionL();
+
+ void TerminateLcSessionL();
+
+ public:
+
+ /**
+ * Sets both remote (receiving video) and local (viewfinder) rects.
+ *
+ */
+ void SetRectsL( const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMusEngLiveSession();
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musenglivevideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2009 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 MUSHENGLIVEVIDEOPLAYER_H
+#define MUSHENGLIVEVIDEOPLAYER_H
+
+// INCLUDES
+#include "musenglocalvideoplayer.h"
+#include "lcdestinationfilecontrol.h"
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class TMusEngCameraHandler;
+
+// CLASS DECLARATION
+class CMusEngLiveVideoPlayer :
+ public CMusEngLocalVideoPlayer,
+ public MLcDestinationFileControl
+ {
+ public: // Constructors and destructor
+
+ static CMusEngLiveVideoPlayer* NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ ~CMusEngLiveVideoPlayer();
+
+ public: // From MLcVideoPlayer
+
+ TBool LcIsPlayingL();
+
+ void LcPlayL();
+
+ void LcPauseL();
+
+ MLcCameraControl* LcCameraControl();
+
+ MLcDestinationFileControl* LcDestinationFileControl();
+
+ MLcZoomControl* LcZoomControl();
+
+ MLcBrightnessControl* LcBrightnessControl();
+
+ public: // From MLcDestinationFileControl
+
+ void SetLcFileNameL( const TFileName& aFileName );
+
+ TFileName& LcFileName();
+
+ void LcRecordL( TBool aRecord );
+
+ TBool LcIsRecording();
+
+ private: // Constructors
+
+ CMusEngLiveVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ private: // Data
+
+ TFileName iFileName;
+ TMusEngCameraHandler& iCameraHandler;
+ };
+
+#endif // MUSHENGLIVEVIDEOPLAYER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musenglocalvideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2009 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 MUSHENGLOCALVIDEOPLAYER_H
+#define MUSHENGLOCALVIDEOPLAYER_H
+
+// INCLUDES
+#include "musengvideoplayerbase.h"
+
+// CLASS DECLARATION
+class CMusEngLocalVideoPlayer : public CMusEngVideoPlayerBase
+ {
+ public: // Constructors and destructor
+
+ ~CMusEngLocalVideoPlayer();
+
+ public: // from CMusEngVideoPlayerBase
+
+ TLcVideoPlayerState LcVideoPlayerState() const;
+
+ void SetLcWindowRectL( TRect aRect );
+
+ TRect LcWindowRect();
+
+ protected: // Constructors
+
+ CMusEngLocalVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+ };
+
+#endif // MUSHENGLOCALVIDEOPLAYER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musenglogger.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,301 @@
+/*
+* Copyright (c) 2006 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: ?Description
+*
+*/
+
+
+#ifndef MUSENGLOGGER_H
+#define MUSENGLOGGER_H
+
+
+#include "muslogger.h"
+
+#if ( !_DEBUG || UNIT_TESTING ) // release or unit test build; no logs
+
+#define MUS_ENG_LOG_SESSION_STATE( aSession )
+#define MUS_ENG_LOG_SESSION_STATE_AND_STATUS( aSession, aStatusCode, aReasonPhrase )
+#define MUS_ENG_LOG_STREAM_STATE( aStream )
+#define MUS_ENG_LOG_SINK_STATES( aStream )
+#define MUS_ENG_LOG_SOURCE_STATE( aSource )
+#define MUS_ENG_LOG_SINK_STATE( aSink )
+#define MUS_ENG_LOG_STATUS( aStatusCode, aReasonPhrase )
+
+#else // debug build; logs
+
+#include <mcesession.h>
+#include <mceaudiostream.h>
+#include <mcecamerasource.h>
+#include <mcefilesource.h>
+#include <mcertpsource.h>
+#include <mcedisplaysink.h>
+#include <mcespeakersink.h>
+#include <mcefilesink.h>
+#include <mcertpsink.h>
+
+#define MUS_ENG_LOG_SESSION_STATE( aSession )\
+ {\
+ TBuf<15> state;\
+ switch ( (aSession).State() )\
+ {\
+ case CMceSession::EIdle:\
+ {\
+ state = _L("EIdle");\
+ break;\
+ }\
+ case CMceSession::EOffering :\
+ {\
+ state = _L("EOffering");\
+ break;\
+ }\
+ case CMceSession::EIncoming:\
+ {\
+ state = _L("EIncoming");\
+ break;\
+ }\
+ case CMceSession::EReserving :\
+ {\
+ state = _L("EReserving");\
+ break;\
+ }\
+ case CMceSession::EAnswering :\
+ {\
+ state = _L("EAnswering");\
+ break;\
+ }\
+ case CMceSession::EProceeding :\
+ {\
+ state = _L("EProceeding");\
+ break;\
+ }\
+ case CMceSession::EEstablished:\
+ {\
+ state = _L("EEstablished");\
+ break;\
+ }\
+ case CMceSession::ECancelling:\
+ {\
+ state = _L("ECancelling");\
+ break;\
+ }\
+ case CMceSession::ETerminating:\
+ {\
+ state = _L("ETerminating");\
+ break;\
+ }\
+ case CMceSession::ETerminated:\
+ {\
+ state = _L("ETerminated");\
+ break;\
+ }\
+ default:\
+ {\
+ state = _L("Unknown");\
+ break;\
+ }\
+ }\
+ MUS_LOG_TDESC( "mus: [ENGINE] Session state is ", state )\
+ }
+
+
+#define MUS_ENG_LOG_SESSION_STATE_AND_STATUS( aSession, aStatusCode, aReasonPhrase )\
+ {\
+ MUS_ENG_LOG_SESSION_STATE( aSession )\
+ MUS_ENG_LOG_STATUS( aStatusCode, aReasonPhrase )\
+ }
+
+
+#define MUS_ENG_LOG_STREAM_STATE( aStream )\
+ {\
+ TBuf<20> streamState;\
+ switch ( (aStream).State() )\
+ {\
+ case CMceMediaStream::EUninitialized:\
+ {\
+ streamState = _L("EIdle");\
+ break;\
+ }\
+ case CMceMediaStream::EInitialized:\
+ {\
+ streamState = _L("EInitialized");\
+ break;\
+ }\
+ case CMceMediaStream::EBuffering:\
+ {\
+ streamState = _L("EBuffering");\
+ break;\
+ }\
+ case CMceMediaStream::EIdle:\
+ {\
+ streamState = _L("EIdle");\
+ break;\
+ }\
+ case CMceMediaStream::EStreaming:\
+ {\
+ streamState = _L("EStreaming");\
+ break;\
+ }\
+ case CMceMediaStream::EDisabled:\
+ {\
+ streamState = _L("EDisabled");\
+ break;\
+ }\
+ case CMceMediaStream::ENoResources:\
+ {\
+ streamState = _L("ENoResources");\
+ break;\
+ }\
+ case CMceMediaStream::ETranscodingRequired:\
+ {\
+ streamState = _L("ETranscodingRequired");\
+ break;\
+ }\
+ case CMceMediaStream::ETranscoding:\
+ {\
+ streamState = _L("ETranscoding");\
+ break;\
+ }\
+ default:\
+ {\
+ streamState = _L("Unknown");\
+ break;\
+ }\
+ }\
+ if ( (aStream).Type() == KMceAudio )\
+ {\
+ MUS_LOG_TDESC( "mus: [ENGINE] AudioStream state is ", streamState )\
+ }\
+ else\
+ {\
+ MUS_LOG_TDESC( "mus: [ENGINE] VideoStream state is ", streamState )\
+ }\
+ MUS_ENG_LOG_SOURCE_STATE( (aStream).Source() )\
+ MUS_ENG_LOG_SINK_STATES( (aStream) )\
+ }
+
+
+#define MUS_ENG_LOG_SINK_STATES( aStream )\
+ {\
+ for ( TInt sinkIndex = 0; sinkIndex < aStream.Sinks().Count(); ++sinkIndex )\
+ {\
+ MUS_ENG_LOG_SINK_STATE( aStream.Sinks()[ sinkIndex ] )\
+ }\
+ }
+
+
+#define MUS_ENG_LOG_SOURCE_STATE( aSource )\
+ {\
+ if ( aSource )\
+ {\
+ TBuf<10> sourceState;\
+ if ( aSource->IsEnabled() )\
+ {\
+ sourceState = _L("enabled");\
+ }\
+ else\
+ {\
+ sourceState = _L("disabled");\
+ }\
+ switch ( aSource->Type() )\
+ {\
+ case KMceCameraSource:\
+ {\
+ MUS_LOG_TDESC( " CameraSource is ", sourceState )\
+ break;\
+ }\
+ case KMceFileSource:\
+ {\
+ MUS_LOG_TDESC( " FileSource is ", sourceState )\
+ break;\
+ }\
+ case KMceRTPSource:\
+ {\
+ MUS_LOG_TDESC( " RtpSource is ", sourceState )\
+ break;\
+ }\
+ default:\
+ {\
+ MUS_LOG_TDESC( " UnknownSource is ", sourceState )\
+ break;\
+ }\
+ }\
+ }\
+ else\
+ {\
+ MUS_LOG( " No source in stream" )\
+ }\
+ }
+
+#define MUS_ENG_LOG_SINK_STATE( aSink )\
+ {\
+ if ( aSink )\
+ {\
+ TBuf<10> sinkState;\
+ if ( aSink->IsEnabled() )\
+ {\
+ sinkState = _L("enabled");\
+ }\
+ else\
+ {\
+ sinkState = _L("disabled");\
+ }\
+ switch ( aSink->Type() )\
+ {\
+ case KMceDisplaySink:\
+ {\
+ MUS_LOG_TDESC( " DisplaySink is ", sinkState )\
+ break;\
+ }\
+ case KMceSpeakerSink:\
+ {\
+ MUS_LOG_TDESC( " SpeakerSink is ", sinkState )\
+ break;\
+ }\
+ case KMceRTPSink:\
+ {\
+ MUS_LOG_TDESC( " RtpSink is ", sinkState )\
+ break;\
+ }\
+ case KMceFileSink:\
+ {\
+ MUS_LOG_TDESC( " FileSink is ", sinkState )\
+ break;\
+ }\
+ default:\
+ {\
+ MUS_LOG_TDESC( " UnknownSink is ", sinkState )\
+ break;\
+ }\
+ }\
+ }\
+ }
+
+
+#define MUS_ENG_LOG_STATUS( aStatusCode, aReasonPhrase )\
+ {\
+ MUS_LOG1( " StatusCode is %d", aStatusCode )\
+ HBufC16* reasonPhrase = HBufC16::NewLC( aReasonPhrase.Length() );\
+ reasonPhrase->Des().Copy( aReasonPhrase );\
+ MUS_LOG_TDESC( " ReasonPhrase is ",(*reasonPhrase) )\
+ CleanupStack::PopAndDestroy( reasonPhrase );\
+ }
+
+
+
+#endif // _DEBUG
+
+
+#endif // MUSENGLOGGER_H
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musengmcesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,285 @@
+/*
+* 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 MUSENGMCESESSION_H
+#define MUSENGMCESESSION_H
+
+// USER
+#include "musengcamerahandler.h"
+#include "musengdisplayhandler.h"
+#include "lcsession.h"
+#include "lcaudiocontrol.h"
+#include "svptimerobserver.h"
+
+#include <e32base.h>
+
+
+// FORWARD DECLARATIONS
+class CContactTextField;
+class CPbkContactItem;
+class CPbkContactEngine;
+class MLcSessionObserver;
+class CMusEngLiveVideoPlayer;
+class CMusEngRemoteVideoPlayer;
+class CSVPTimer;
+
+
+// CONSTANTS
+
+_LIT8( KMusEngAcceptContactHeader,
+ "Accept-Contact: *;+g.3gpp.cs-voice; explicit" );
+_LIT8( KMusAcceptHeader,
+ "Accept: application/sdp" );
+_LIT8( KMusEngSessionSdpLineXApplication, "a=X-application:com.nokia.rtvs\r\n" );
+_LIT8( KMusEngSessionSdpLineApplication , "a=application:com.gsma.rts\r\n" );
+_LIT8( KMusEngSessionSdpLineType, "a=type:videolive\r\n" );
+_LIT8( KMusEngSessionSdpLineBandwidthLine , "b=AS:" );
+_LIT8( KMusEngSessionSdpLineBandwidthField , "b=AS:85\r\n" );
+_LIT8( KMusEngSessionSdpLineTiasLine , "b=TIAS:" );
+_LIT8( KMusPPreferredIdentity, "P-Preferred-Identity" );
+_LIT8( KMusEngNewLine , "\r\n" );
+
+const TInt KMusTiasMultiplier = 1000;
+const TUint8 KMusEngRtpKeepAliveTimer = 5;
+const TUint8 KMusEngKeepAlivePayloadTypeVideoH263 = 96;
+const TUint8 KMusEngKeepAlivePayloadTypeAudio = 97;
+const TUint8 KMusEngKeepAlivePayloadTypeVideoAvc = 98;
+
+// CLASS DECLARATION
+
+/**
+* Base class for Multimedia Sharing Engine MCE sessions, inherited by
+* CMusEngLiveSession CMusEngClipSession and CMusEngReceiveSession.
+*
+* CMusEngMceSession encapsulates CMCESession and simplifies use of
+* MCE Sessions to user interface. Also splits observers messy events
+* to simplified function calls.
+*
+* @lib musengine.lib
+*/
+class CMusEngMceSession : public CBase,
+ public MLcSession,
+ public MLcAudioControl,
+ public MMusEngDisplayHandler,
+ public MSVPTimerObserver
+ {
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngMceSession();
+
+ void SetRemoteL( const TDesC& aRemote );
+
+ public: // from MSVPTimerObserver
+
+ virtual void TimedOut( TInt aTimerId );
+
+
+ public: // from MMusEngDisplayHandler
+
+ /**
+ * Returns currently assigned drawing area
+ *
+ * @return TRect This session drawing area rectangle
+ */
+ TRect Rect() const;
+
+ /**
+ * Sets new drawing area
+ *
+ * @param TRect This session new drawing area rectangle
+ */
+ void SetRectL( const TRect& aRect );
+
+ /**
+ * Sets secondary rect (e.g. viewfinder in twoway session)
+ * @param TRect This session new secondary drawing area rectangle
+ */
+ void SetSecondaryRectL( const TRect& aSecondaryRect );
+
+ /**
+ * Gets secondary rect.
+ * @return TRect This session secondary drawing area rectangle
+ */
+ virtual TRect SecondaryRect() const;
+
+ /**
+ * Returns current display orientation.
+ *
+ * @pre Session is ongoing
+ * @return Current display orientation
+ * @leave KErrNotReady if precondition is not fullfilled
+ */
+ TDisplayOrientation OrientationL();
+
+ /**
+ * Sets display orientation.
+ *
+ * @pre Session is ongoing
+ * @return Sets display orientation
+ * @leave KErrNotReady if precondition is not fullfilled
+ */
+ void SetOrientationL( TDisplayOrientation aOrientation );
+
+ /**
+ * Permission to draw on screen device.
+ *
+ * @pre Session is ongoing
+ */
+ void EnableDisplayL( TBool aEnable );
+
+ /**
+ * Implements virtual from MMusEngDisplayHandler
+ *
+ * @pre Session is ongoing
+ */
+ TBool IsDisplayEnabled();
+
+ /**
+ * Implements virtual from MMusEngDisplayHandler
+ *
+ * @pre Session is ongoing
+ */
+ TBool IsDisplayActive();
+
+
+ public: // From MMusEngAudioRoutingObserver
+
+ void AudioRoutingChanged();
+
+
+ public: // From MLcSession
+
+ virtual void UpdateLcSessionL();
+
+ virtual TLcSessionState LcSessionState() const;
+
+ void SetLcSessionObserver( MLcSessionObserver* aObserver );
+
+ void SetLcUiProvider( MLcUiProvider* aUiProvider );
+
+ virtual MLcVideoPlayer* RemoteVideoPlayer();
+
+ virtual MLcVideoPlayer* LocalVideoPlayer();
+
+ virtual const TDesC& LocalDisplayName();
+
+ virtual const TDesC& RemoteDisplayName();
+
+ TInt SetParameter( TInt aId, TInt aValue );
+
+ TInt ParameterValue( TInt aId );
+
+ TBool IsBackgroundStartup();
+
+ TInt SetForegroundStatus( TBool aIsForeground );
+
+ const TDesC& RemoteDetails();
+
+ TBool SendDialTone( TChar aKey);
+
+ public: // From MLcAudioControl
+
+ TBool IsLcAudioMutedL();
+
+ void MuteLcAudioL( TBool aMute );
+
+ TBool IsLcMicMutedL();
+
+ void MuteLcMicL( TBool aMute );
+
+ TBool IsEnablingLcLoudspeakerAllowed();
+
+ void EnableLcLoudspeakerL( TBool aEnabled );
+
+ TBool IsLcLoudspeakerEnabled();
+
+ TInt LcVolumeL();
+
+ void SetLcVolumeL( TInt aValue );
+
+ void IncreaseLcVolumeL();
+
+ void DecreaseLcVolumeL();
+
+
+ protected: // CONSTRUCTORS
+
+ /**
+ * Constructor
+ *
+ */
+ CMusEngMceSession();
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ protected: // Data
+
+ /**
+ * Drawing area rect.
+ */
+ TRect iRect;
+
+ /**
+ * ETrue if operator specific behavior is expected
+ */
+ TBool iOperatorVariant;
+
+ /**
+ * Session state for MLcSession
+ */
+ MLcSession::TLcSessionState iLcSessionState;
+
+ TMusEngCameraHandler iCameraHandler;
+
+ CMusEngLiveVideoPlayer* iLiveVideoPlayer;
+ CMusEngRemoteVideoPlayer* iRemoteVideoPlayer;
+ TRect iSetRemoteRect;
+ TRect iSetLocalRect;
+ CSVPTimer* iTimer;
+ TLcSessionState lLcSessionState;
+ HBufC* iRemoteAddress;
+
+ private: // Data
+
+ /**
+ * The session observer, if present.
+ */
+ MLcSessionObserver* iLcSessionObserver;
+
+ /**
+ * The UI provider, if present.
+ */
+ MLcUiProvider* iLcUiProvider;
+
+ /**
+ * Value indicates whether session was started in background mode.
+ * (see IsBackgroundStartup()). Once sending of video started,
+ * iBackground is set to EFalse
+ */
+ TBool iBackground;
+
+
+ };
+
+#endif // MUSENGMCESESSION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musengremotevideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2009 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 MUSHENGREMOTEVIDEOPLAYER_H
+#define MUSHENGREMOTEVIDEOPLAYER_H
+
+// INCLUDES
+#include <e32base.h>
+#include "musengvideoplayerbase.h"
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class MLcWindow;
+class MLcAudioControl;
+
+// CLASS DECLARATION
+class CMusEngRemoteVideoPlayer : public CMusEngVideoPlayerBase
+ {
+ public: // Constructors and destructor
+
+ static CMusEngRemoteVideoPlayer* NewL( MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ ~CMusEngRemoteVideoPlayer();
+
+
+ public: // from CMusEngVideoPlayerBase
+
+ TLcVideoPlayerState LcVideoPlayerState() const;
+
+ TBool LcIsPlayingL();
+
+ private: // Constructors
+
+ CMusEngRemoteVideoPlayer( MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+ void ConstructL();
+
+ private: // Data
+
+ };
+
+#endif // MUSHENGREMOTEVIDEOPLAYER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musengsessionmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 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 CMUSENGSESSIONMANAGER_H
+#define CMUSENGSESSIONMANAGER_H
+
+// INCLUDES
+#include "lcengine.h"
+#include "mccdatareceiverobserver.h"
+
+// FORWARD DECLARATIONS
+class MLcSession;
+class CMusEngMceSession;
+class MLcUiProvider;
+class CMccDataReceiver;
+class CMccDataSender;
+
+class CMusEngSessionManager : public CLcEngine, public MMccDataReceiverObserver
+ {
+ public:
+
+ static CMusEngSessionManager* NewL();
+ ~CMusEngSessionManager();
+
+ void DataReceived( const TDataMessage& aData );
+
+ public: // From CLcEngine
+
+ MLcSession& Session();
+
+ private: // Constructors
+
+ CMusEngSessionManager();
+ void ConstructL();
+
+ private: // Data
+
+ CMusEngMceSession* iSession;
+
+ CMccDataReceiver* iMsgReceiver;
+ CMccDataSender* iMsgSender;
+
+ };
+
+#endif // CMUSENGSESSIONMANAGER_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musengtwowayrecvsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,141 @@
+/*
+* 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 MUSHENGTWOWAYRECVSESSION_H
+#define MUSHENGTWOWAYRECVSESSION_H
+
+// USER
+#include "musengreceivesession.h"
+#include "musunittesting.h"
+#include "mussettings.h"
+#include "musengcamerahandler.h"
+
+// SYSTEM
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class CMceDisplaySink;
+class CMceStreamBundle;
+class CMusEngLiveVideoPlayer;
+
+
+class CMusEngTwoWayRecvSession : public CMusEngReceiveSession
+ {
+ MUS_UNITTEST( UT_CMusEngTwoWayRecvSession )
+
+
+ public:
+ /**
+ * Creates new MultimediaSharing two-way receive session.
+ * @return CMusEngTwoWayRecvSession* New instanse of specified class
+ */
+ static CMusEngTwoWayRecvSession* NewL();
+
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngTwoWayRecvSession();
+
+ public:
+
+ void EnableDisplayL( TBool aEnable );
+
+ CMusEngMceSession::TDisplayOrientation OrientationL();
+
+ void SetOrientationL( TDisplayOrientation aOrientation );
+
+ public:
+
+ /**
+ * Sets both remote (receiving video) and local (viewfinder) rects.
+ *
+ */
+ void SetRectsL( const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ /**
+ * Gets camera handler (can be used for zooming etc.)
+ */
+ TMusEngCameraHandler& Camera();
+
+ public: // from MLcSession
+
+ MLcVideoPlayer* LocalVideoPlayer();
+
+ protected: // From CMusEngReceiveSession
+
+ /**
+ * Sets local rect (viewfinder).
+ *
+ */
+ void SetSecondaryRectL( const TRect& aSecondaryRect );
+
+ /**
+ * Gets local rect (viewfinder).
+ *
+ */
+ TRect SecondaryRect() const;
+
+ void CompleteSessionStructureL();
+
+ void RectChangedL();
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMusEngTwoWayRecvSession();
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ private:
+
+ void CompleteSessionStructureAudioPartL(
+ const RPointerArray<CMceMediaStream>& aStreams,
+ CMceStreamBundle& aLocalBundle,
+ CMceMediaStream* aVideoInStream,
+ CMceMediaStream* aVideoOutStream );
+
+ void CompleteSessionStructureInStreamL( CMceMediaStream& aVideoInStream,
+ CMceStreamBundle& aLocalBundle );
+
+ void CompleteSessionStructureOutStreamL( CMceMediaStream& aVideoOutStream );
+
+
+ private:
+
+ TRect iLocalRect;
+
+ TMusEngCameraHandler iCameraHandler;
+
+ /// The live video player implementing MLcVideoPlayer
+ CMusEngLiveVideoPlayer* iLiveVideoPlayer;
+
+ TRect iSetRemoteRect;
+ TRect iSetLocalRect;
+
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musengtwowaysession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,87 @@
+/*
+* 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 MUSHENGTWOWAYSESSION_H
+#define MUSHENGTWOWAYSESSION_H
+
+// USER
+#include "musengmcesession.h"
+
+// SYSTEM
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class MMusEngLiveSessionObserver;
+class CMceDisplaySink;
+class MMusEngTwoWaySessionObserver;
+class CMusEngRemoteVideoPlayer;
+
+
+class CMusEngTwoWaySession : public CMusEngMceSession
+ {
+ public:
+ /**
+ * Creates new MultimediaSharing Live session.
+ * @return CMusEngTwoWaySession* New instanse of specified class
+ */
+ static CMusEngTwoWaySession* NewL();
+
+
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngTwoWaySession();
+
+ public:
+
+ void EnableDisplayL( TBool aEnable );
+
+ void SetOrientationL( MMusEngDisplayHandler::TDisplayOrientation aOrientation );
+
+ void EstablishLcSessionL();
+
+ void TerminateLcSessionL();
+
+ MLcVideoPlayer* RemoteVideoPlayer();
+ public:
+
+ /**
+ * Sets both remote (receiving video) and local (viewfinder) rects.
+ *
+ */
+ void SetRectsL( const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMusEngTwoWaySession();
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/musengvideoplayerbase.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2009 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 MUSHENGVIDEOPLAYERBASE_H
+#define MUSHENGVIDEOPLAYERBASE_H
+
+// INCLUDES
+#include <e32base.h>
+#include "lcvideoplayer.h"
+#include "lcwindow.h"
+
+// FORWARD DECLARATIONS
+class TMusEngCameraHandler;
+class MMusEngDisplayHandler;
+
+// CLASS DECLARATION
+class CMusEngVideoPlayerBase :
+ public CBase, public MLcVideoPlayer, public MLcWindow
+ {
+ public: // Constructors and destructor
+
+ ~CMusEngVideoPlayerBase();
+
+ public: // From MLcVideoPlayer
+
+ virtual void LcPlayL(MLcVideoPlayer::TLcVideoPlayerSource aSource);
+
+
+ virtual void LcPauseL();
+
+ MLcWindow* LcWindow();
+
+ virtual MLcCameraControl* LcCameraControl();
+
+ virtual MLcSourceFileControl* LcSourceFileControl();
+
+ virtual MLcDestinationFileControl* LcDestinationFileControl();
+
+ MLcAudioControl* LcAudioControl();
+
+ virtual MLcZoomControl* LcZoomControl();
+
+ virtual MLcBrightnessControl* LcBrightnessControl();
+
+ public: // from MLcWindow
+
+ void EnableLcWindowL( TBool aEnable );
+
+ TBool IsLcWindowEnabled();
+
+ void SetLcWindowRectL( TRect aRect );
+
+ TRect LcWindowRect();
+
+ void SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation );
+
+ TLcWindowOrientation LcWindowOrientationL();
+
+ protected: // Constructors
+
+ CMusEngVideoPlayerBase(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ protected: // Data
+
+ MMusEngDisplayHandler& iDisplayHandler;
+ MLcAudioControl& iLcAudioControl;
+ };
+
+#endif // MUSHENGVIDEOPLAYERBASE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/svptimer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,112 @@
+/*
+* 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: Timer services for SVP
+*
+*/
+
+
+
+#ifndef SVPTIMER_H
+#define SVPTIMER_H
+
+#include <e32base.h>
+
+class MSVPTimerObserver;
+
+/**
+ * SVP timer
+ *
+ * Provides timer service for SVP
+ *
+ * @lib
+ * @since S60 3.2
+ */
+class CSVPTimer : public CTimer
+ {
+
+public:
+
+ /**
+ * Two-phased constructor.
+ */
+ static CSVPTimer* NewL( MSVPTimerObserver& aObserver,
+ TInt aTimerId );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CSVPTimer();
+
+public: // new methods
+
+ /**
+ * Sets the timer to be fired after given number of milliseconds.
+ * @since Series 60 3.2
+ * @param aMilliSeconds Time in milliseconds
+ * @return
+ */
+ void SetTime( TInt aMilliSeconds );
+
+ /**
+ * Stops the timer.
+ * @since Series 60 3.2
+ * @return
+ */
+ void Stop();
+
+ /**
+ * Returns the Timer ID
+ * @since Series 60 3.2
+ * @return TInt The timer ID.
+ */
+ TInt Id() const;
+
+public: // methods from base classes
+
+ /**
+ * From CActive Called when an aychronic request is completed.
+ * @since Series 60 3.0
+ * @param None
+ * @return None
+ */
+ void RunL();
+
+private:
+
+ /**
+ * C++ default constructor.
+ */
+ CSVPTimer( MSVPTimerObserver& aObserver, TInt aTimerId );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+private: // data
+
+ /**
+ * Reference to the observer.
+ */
+ MSVPTimerObserver& iObserver;
+
+ /**
+ * The timer ID, given to observer when the timer fires.
+ * Timers can be identifies with this ID.
+ */
+ TInt iId;
+
+ };
+
+#endif // SVPTIMER_H
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/inc/svptimerobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2006 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: Observer for SVP timer
+*
+*/
+
+
+#ifndef SVPTIMEROBSERVER_H
+#define SVPTIMEROBSERVER_H
+
+#include<e32base.h>
+
+/**
+ * SVP timer observer
+ *
+ * Observer for SVP timer
+ *
+ * @lib
+ * @since S60 3.2
+ */
+class MSVPTimerObserver
+ {
+
+public: // New functions
+
+ /**
+ * Notifies, that the previously set timer has now expired.
+ * Implemented by the class using the timer.
+ * @since Series 60 3.2
+ * @param TInt aTimerId The ID of the timer. Observer can identify
+ * timers from each other with this ID.
+ * @return
+ */
+ virtual void TimedOut( TInt aTimerId ) = 0;
+
+
+ };
+
+#endif // SVPTIMEROBSERVER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/install/lcui_update_udeb.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,46 @@
+;
+; Copyright (c) 2009 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:
+;
+; A package file for creating an installation file for Multimediasharing
+; which updates Multimediasharing binaries from ROM (eclipsing)
+
+; Supported languages
+&EN
+
+; Header
+#{"MultimediaSharing"},(0x10282491),1,0,0,TYPE=PU
+
+; Localised Vendor name
+%{"Symbian"}
+
+; Unique Vendor name
+:"Symbian"
+
+; -----------------------------------------------------------------------------------
+
+;Multimediasharing binaries
+
+; User interface DOCMLs
+"\epoc32\data\z\data\others\lcidleview.docml"-"!:\data\others\lcidleview.docml"
+"\epoc32\data\z\data\others\lcreceiveview.docml"-"!:\data\others\lcreceiveview.docml"
+"\epoc32\data\z\data\others\lcsendview.docml"-"!:\data\others\lcsendview.docml"
+"\epoc32\data\z\data\others\lctwowayview.docml"-"!:\data\others\lctwowayview.docml"
+"\epoc32\data\z\data\others\lcvtview.docml"-"!:\data\others\lcvtview.docml"
+"\epoc32\data\z\data\others\lcreceiveonlyview.docml"-"!:\data\others\lcreceiveonlyview.docml"
+
+; Engine
+;"\epoc32\release\armv5\udeb\musengineplugin.dll"-"!:\sys\bin\musengineplugin.dll"
+;"\epoc32\data\z\resource\plugins\musengineplugin.rsc"-"!:\resource\plugins\musengineplugin.rsc"
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/install/lcui_update_urel.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,46 @@
+;
+; Copyright (c) 2009 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:
+;
+; A package file for creating an installation file for Multimediasharing
+; which updates Multimediasharing binaries from ROM (eclipsing)
+
+; Supported languages
+&EN
+
+; Header
+#{"MultimediaSharing"},(0x10282491),1,0,0,TYPE=PU
+
+; Localised Vendor name
+%{"Symbian"}
+
+; Unique Vendor name
+:"Symbian"
+
+; -----------------------------------------------------------------------------------
+
+;Multimediasharing binaries
+
+; User interface XMLs
+"\epoc32\data\z\data\others\lcidleview.docml"-"!:\data\others\lcidleview.docml"
+"\epoc32\data\z\data\others\lcreceiveview.docml"-"!:\data\others\lcreceiveview.docml"
+"\epoc32\data\z\data\others\lcsendview.docml"-"!:\data\others\lcsendview.docml"
+"\epoc32\data\z\data\others\lctwowayview.docml"-"!:\data\others\lctwowayview.docml"
+"\epoc32\data\z\data\others\lcvtview.docml"-"!:\data\others\lcvtview.docml"
+"\epoc32\data\z\data\others\lcreceiveonlyview.docml"-"!:\data\others\lcreceiveonlyview.docml"
+
+; Engine
+;"\epoc32\release\armv5\urel\musengineplugin.dll"-"!:\sys\bin\musengineplugin.dll"
+;"\epoc32\data\z\resource\plugins\musengineplugin.rsc"-"!:\resource\plugins\musengineplugin.rsc"
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/install/sis_update_udeb.bat Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,18 @@
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:
+rem
+
+makesis lcui_update_udeb.pkg udeb_lcui_update.sis
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/install/sis_update_urel.bat Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,17 @@
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:
+rem
+
+makesis lcui_update_urel.pkg urel_lcui_update.sis
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/mccdatareceiver.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,107 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+// INCLUDE FILES
+#include "mccdatareceiver.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::CMccDataReceiver
+// -----------------------------------------------------------------------------
+//
+CMccDataReceiver::CMccDataReceiver( MMccDataReceiverObserver& aObserver )
+ : CActive( EPriorityStandard ), iObserver( &aObserver )
+ {
+ CActiveScheduler::Add(this);
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMccDataReceiver::ConstructL()
+ {
+
+ TInt err = iMsgQueue.CreateGlobal(_L("IP-VT-Queue2"), 5, EOwnerProcess );
+ if ( err )
+ {
+ User::LeaveIfError( iMsgQueue.OpenGlobal(_L("IP-VT-Queue2")));
+ }
+
+ iMsgQueue.ReceiveBlocking( iInitData );
+
+ iMsgQueue.NotifyDataAvailable( iStatus );
+ SetActive();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::NewL
+// -----------------------------------------------------------------------------
+//
+CMccDataReceiver* CMccDataReceiver::NewL( MMccDataReceiverObserver& aObserver )
+ {
+ CMccDataReceiver* self =
+ new ( ELeave ) CMccDataReceiver( aObserver );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::~CMccDataReceiver
+// -----------------------------------------------------------------------------
+//
+CMccDataReceiver::~CMccDataReceiver()
+ {
+ Cancel();
+ iMsgQueue.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CMccDataReceiver::DoCancel()
+ {
+ iMsgQueue.CancelDataAvailable();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::RunL
+// -----------------------------------------------------------------------------
+//
+void CMccDataReceiver::RunL()
+ {
+ TDataMessage buffer;
+ iMsgQueue.Receive( buffer );
+ iObserver->DataReceived( buffer );
+ iMsgQueue.NotifyDataAvailable( iStatus );
+ SetActive();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::RunError
+// -----------------------------------------------------------------------------
+//
+TInt CMccDataReceiver::RunError(TInt /*aError*/)
+ {
+ return KErrNone;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/mccdatasender.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+// INCLUDE FILES
+#include "mccdatasender.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::CMccDataSender
+// -----------------------------------------------------------------------------
+//
+CMccDataSender::CMccDataSender( )
+ : CActive( EPriorityStandard )
+ {
+ CActiveScheduler::Add(this);
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMccDataSender::ConstructL()
+ {
+ TInt err = iMsgQueue.CreateGlobal(_L("IP-VT-Queue1"), 5, EOwnerProcess );
+ if ( err )
+ {
+ User::LeaveIfError( iMsgQueue.OpenGlobal(_L("IP-VT-Queue1")));
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::NewL
+// -----------------------------------------------------------------------------
+//
+CMccDataSender* CMccDataSender::NewL( )
+ {
+ CMccDataSender* self =
+ new ( ELeave ) CMccDataSender();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::Send
+// -----------------------------------------------------------------------------
+//
+void CMccDataSender::Send( const TDataMessage& aData )
+{
+ TInt err = iMsgQueue.Send( aData );
+
+ if ( err == KErrOverflow )
+ {
+ if ( !IsActive() )
+ {
+ iBuffer = aData;
+ iMsgQueue.NotifySpaceAvailable( iStatus );
+ SetActive();
+ }
+ else
+ {
+ // TODO
+ // BUFFER OR DROP
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::~CMccDataSender
+// -----------------------------------------------------------------------------
+//
+CMccDataSender::~CMccDataSender()
+ {
+ Cancel();
+ iMsgQueue.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CMccDataSender::DoCancel()
+ {
+ iMsgQueue.CancelSpaceAvailable();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::RunL
+// -----------------------------------------------------------------------------
+//
+void CMccDataSender::RunL()
+ {
+ iMsgQueue.Send( iBuffer );
+ iBuffer.iDataId = EUninitialized;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::RunError
+// -----------------------------------------------------------------------------
+//
+TInt CMccDataSender::RunError(TInt /*aError*/)
+ {
+ return KErrNone;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musengcamerahandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,227 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengcamerahandler.h"
+#include "musenglogger.h"
+
+
+// SYSTEM
+#include <e32base.h>
+
+const TInt KMaxBrightness = 100;
+const TInt KMinBrightness = -100;
+const TInt KBrightnessStepSize = 10;
+
+
+//Number of big and small zoom steps on Zoom scale
+const TInt KZoomBigStepCount = 15;
+const TInt KZoomSmallStepCount = KZoomBigStepCount*2;
+const TInt KZoomStepMinSize = 1;
+
+const TInt64 KZoomFasterTime = 333333; // 1/3 second
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TMusEngCameraHandler::TMusEngCameraHandler() :
+ iDefaultBrightness( 0 ),
+ iZoomInTime(0),
+ iZoomOutTime(0),
+ iSmallZoomStep( KZoomStepMinSize ),
+ iBigZoomStep( KZoomStepMinSize ),
+ iCurrentCamera( TMusEngCameraHandler::ECameraNotAvailable )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::LcCameraCountL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcCameraCountL()" )
+
+ return 2;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::CurrentLcCameraIndex()
+ {
+ return iCurrentCamera;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::ToggleLcCameraL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::ToggleLcCamera()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MinLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MinLcBrightnessL()" )
+
+ // minimum brightness is not in camera info, but a constant
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MinLcBrightnessL(): %d",
+ KMinBrightness )
+
+ return KMinBrightness;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MaxLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MaxLcBrightnessL()" )
+
+ // maximum brightness is not in camera info, but a constant
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MaxLcBrightnessL(): %d",
+ KMaxBrightness )
+
+ return KMaxBrightness;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::LcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcBrightnessL()" )
+
+ return 5;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::SetLcBrightnessL( TInt aValue )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> TMusEngCameraHandler::SetLcBrightnessL( %d )",
+ aValue )
+
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::SetLcBrightnessL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::IncreaseLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::IncreaseLcBrightnessL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::IncreaseLcBrightnessL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::DecreaseLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::DecreaseLcBrightnessL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::DecreaseLcBrightnessL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MinLcZoomL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MinLcZoomL()" )
+
+ return 1;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MaxLcZoomL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MaxLcZoomL()" )
+
+ return 10;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::LcZoomValueL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcZoomValueL" )
+
+
+ return 5;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::SetLcZoomValueL( TInt aValue )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> TMusEngCameraHandler::SetLcZoomValueL( %d )",
+ aValue )
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngCameraHandler::SetLcZoomValueL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::LcZoomInL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcZoomInL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::LcZoomInL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::LcZoomOutL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcZoomOutL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::LcZoomOutL()" )
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musengclipvideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,535 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musengclipvideoplayer.h"
+#include "musengcamerahandler.h"
+#include "musengmceutils.h"
+#include "musengdisplayhandler.h"
+#include "muslogger.h"
+
+// SYSTEM
+#include <mcesession.h>
+#include <mcevideostream.h>
+#include <mcefilesource.h>
+#include <drmcommon.h>
+
+// CONSTANTS
+const TInt64 KMicroSecondsInOneSecond = 1000000;
+const TInt KFastWindingFactor = 4;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngClipVideoPlayer* CMusEngClipVideoPlayer::NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl )
+ {
+ return new( ELeave )CMusEngClipVideoPlayer(
+ aDisplayHandler, aLcAudioControl );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngClipVideoPlayer::CMusEngClipVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngLocalVideoPlayer( aDisplayHandler, aLcAudioControl )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngClipVideoPlayer::~CMusEngClipVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngClipVideoPlayer::HasClipEnded()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::HasClipEnded" )
+
+ TBool hasClipEnded( EFalse );
+
+ if ( iMceSession )
+ {
+ CMceVideoStream* videoOut = NULL;
+
+ TRAPD( err,
+ videoOut = MusEngMceUtils::GetVideoOutStreamL( *iMceSession ) );
+ if ( err != KErrNone )
+ {
+ MUS_LOG1( "mus: [ENGINE] Error in GetVideoOutStreamL %d", err )
+ return EFalse;
+ }
+
+ CMceFileSource* filesource = NULL;
+ TRAP( err, filesource = MusEngMceUtils::GetFileSourceL( *iMceSession ) )
+
+ if ( err == KErrNone )
+ {
+ TTimeIntervalMicroSeconds position;
+ TTimeIntervalMicroSeconds duration;
+ TRAP( err, position = filesource->PositionL() );
+ TRAPD( err2, duration = filesource->DurationL() );
+ if ( err != KErrNone || err2 != KErrNone )
+ {
+ return EFalse;
+ }
+
+ MUS_LOG2( "mus: [ENGINE] position = %Ld, duration = %Ld",
+ position.Int64(), duration.Int64() )
+
+ hasClipEnded =
+ ( position.Int64() == 0 &&
+ !filesource->IsEnabled() &&
+ videoOut->State() == CMceMediaStream::EDisabled );
+ }
+ }
+
+ if ( hasClipEnded )
+ {
+ iDelayFileEndingPos = 0;
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::HasClipEnded" )
+
+ return hasClipEnded;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::SetBufferingPeriod(
+ const TTimeIntervalMicroSeconds& aPeriod )
+ {
+ iBufferingPeriod = aPeriod;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngClipVideoPlayer::LcIsPlayingL()
+ {
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+ return ( MusEngMceUtils::GetFileSourceL( *iMceSession )->IsEnabled() );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcPlayL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::LcPlayL" )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( !file->IsEnabled() )
+ {
+ file->EnableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::LcPlayL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcPauseL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::LcPauseL" )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( file->IsEnabled() )
+ {
+ file->DisableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::LcPauseL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcSourceFileControl* CMusEngClipVideoPlayer::LcSourceFileControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::SetLcFileNameL( const TFileName& aFileName )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::SetLcFileNameL" )
+
+ __ASSERT_ALWAYS( !IsProtectedFileL( aFileName ),
+ User::Leave( KErrPermissionDenied ) );
+
+ if ( iMceSession )
+ {
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+ file->UpdateL( aFileName );
+ }
+
+ iFileName = aFileName;
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::SetLcFileNameL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+TFileName& CMusEngClipVideoPlayer::LcFileName()
+ {
+ return iFileName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// Since MCE does not at the moment support SetFastForwardL function, this
+// functionality is implemented by taking a timestamp when forwarding is
+// started and calculating a new position when it is ended.
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcFastForwardL( TBool aUseFFWD )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngClipVideoPlayer::FastForward( %d )",
+ aUseFFWD )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( aUseFFWD )
+ {
+ // Ignore if we are already fastforwarding
+ if ( iFFWDStartTime.Int64() > 0 )
+ {
+ return;
+ }
+
+ // Stop rewinding if ongoing, else just pause file source
+ if ( iFRWDStartTime.Int64() > 0 )
+ {
+ LcFastRewindL( EFalse );
+ }
+ else
+ {
+ file->DisableL();
+ }
+
+ // Get timestamp for starttime
+ iFFWDStartTime.HomeTime();
+ }
+ else
+ {
+ // Leave if we are not fastforwarding
+ if ( iFFWDStartTime.Int64() == 0 )
+ {
+ User::Leave( KErrAlreadyExists );
+ }
+
+ // Set new position
+ file->SetPositionL( PositionMicroSecondsL( ETrue ) );
+
+ // Reset timer
+ iFFWDStartTime = TTime( 0 );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::FastForward" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// Since MCE does not at the moment support SetFastRewindL function, this
+// functionality is implemented by taking a timestamp when rewinding is
+// started and calculating a new position when it is ended.
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcFastRewindL( TBool aUseFRWD )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngClipVideoPlayer::FastRewind( %d )",
+ aUseFRWD )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( aUseFRWD )
+ {
+ // Ignore if we are already fastrewinding
+ if ( iFRWDStartTime.Int64() > 0 )
+ {
+ return;
+ }
+
+ // Stop fastforwarding if ongoing, else just pause file source
+ if ( iFFWDStartTime.Int64() > 0 )
+ {
+ LcFastForwardL( EFalse );
+ }
+ else
+ {
+ file->DisableL();
+ }
+
+ // Get timestamp for starttime
+ iFRWDStartTime.HomeTime();
+ }
+ else
+ {
+ // Leave if we are not fastrewinding
+ if ( iFRWDStartTime.Int64() == 0 )
+ {
+ User::Leave( KErrAlreadyExists );
+ }
+
+ // Set new position
+ file->SetPositionL( PositionMicroSecondsL( ETrue ) );
+
+ // Reset timer
+ iFRWDStartTime = TTime( 0 );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::FastRewind" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalSeconds CMusEngClipVideoPlayer::LcFileDurationL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::DurationL" )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ TTimeIntervalMicroSeconds duration = file->DurationL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::DurationL" )
+
+ return TTimeIntervalSeconds( static_cast< TInt >(
+ duration.Int64() / KMicroSecondsInOneSecond ) );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalSeconds CMusEngClipVideoPlayer::LcFilePositionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::LcFilePositionL" )
+
+ TTimeIntervalMicroSeconds currentPosition = PositionMicroSecondsL();
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngClipVideoPlayer::LcFilePositionL, %d",
+ currentPosition.Int64() )
+
+ return TTimeIntervalSeconds( static_cast< TInt >(
+ currentPosition.Int64() / KMicroSecondsInOneSecond ) );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::SetLcFilePositionL(
+ const TTimeIntervalSeconds& aPosition )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngClipVideoPlayer::SetPositionL ( %d )",
+ aPosition.Int() )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ TTimeIntervalMicroSeconds position(
+ KMicroSecondsInOneSecond * static_cast< TInt64 >( aPosition.Int() ) );
+
+ if ( position == 0 )
+ {
+ iRewindedToBeginning = ETrue;
+ }
+
+ file->SetPositionL( position );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::SetPositionL ()" )
+ }
+
+// -----------------------------------------------------------------------------
+// Check is file DRM protected.
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngClipVideoPlayer::IsProtectedFileL( const TDesC& aClipFile )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::IsProtectedFileL(...)" )
+
+ TBool isDRMProtected = EFalse;
+ DRMCommon* drmapi = DRMCommon::NewL();
+ CleanupStack::PushL( drmapi );
+
+ User::LeaveIfError( drmapi->Connect() );
+ //Check DRM file protection
+ User::LeaveIfError( drmapi->IsProtectedFile( aClipFile, isDRMProtected ) );
+ drmapi->Disconnect();
+
+ CleanupStack::PopAndDestroy( drmapi );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::IsProtectedFileL(...)" )
+ return isDRMProtected;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalMicroSeconds CMusEngClipVideoPlayer::PositionMicroSecondsL(
+ TBool aActualPosition )
+ {
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ TTimeIntervalMicroSeconds position = file->PositionL();
+ TTimeIntervalMicroSeconds duration = file->DurationL();
+
+ TTimeIntervalMicroSeconds calculatedPosition;
+
+ // Adjust position if we are fastforwarding or -rewinding
+ if ( iFFWDStartTime.Int64() != 0 )
+ {
+ TTime now;
+ now.HomeTime();
+ calculatedPosition = KFastWindingFactor *
+ now.MicroSecondsFrom( iFFWDStartTime ).Int64() +
+ position.Int64();
+ if ( calculatedPosition > duration )
+ {
+ calculatedPosition = duration;
+ }
+ }
+ else if ( iFRWDStartTime.Int64() != 0 )
+ {
+ TTime now;
+ now.HomeTime();
+ calculatedPosition = position.Int64() -
+ KFastWindingFactor *
+ now.MicroSecondsFrom( iFRWDStartTime ).Int64();
+ if ( calculatedPosition < 0 )
+ {
+ calculatedPosition = 0;
+ }
+
+ if ( calculatedPosition == 0 )
+ {
+ iRewindedToBeginning = ETrue;
+ }
+ }
+ else
+ {
+ calculatedPosition = position;
+ }
+
+ if ( !aActualPosition )
+ {
+ calculatedPosition =
+ GetVideoSinkRelativeFilePos( calculatedPosition, duration );
+ }
+
+ return calculatedPosition;
+ }
+
+// -----------------------------------------------------------------------------
+// Modifies file position if position has reached end before clip has ended.
+// File position is not going in sync with local video playback as playback
+// buffers media before starting playing.
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalMicroSeconds CMusEngClipVideoPlayer::GetVideoSinkRelativeFilePos(
+ const TTimeIntervalMicroSeconds& aActualPosition,
+ const TTimeIntervalMicroSeconds& aDuration )
+ {
+ MUS_LOG1( "mus: [ENGINE] PositionMicroSecondsL, pos before mod:%d",
+ aActualPosition.Int64() )
+
+ TTimeIntervalMicroSeconds tempCalculatedPosition( aActualPosition );
+
+ if ( iDelayFileEndingPos != 0 )
+ {
+ iDelayFileEndingPos = aDuration;
+ tempCalculatedPosition = iDelayFileEndingPos;
+ }
+ else
+ {
+ // FRWD can go to zero even if clip has not ended, do not modify
+ // time in such situation.
+ if ( aActualPosition == 0 &&
+ !HasClipEnded() &&
+ iFRWDStartTime.Int64() == 0 &&
+ !iRewindedToBeginning )
+ {
+ const TInt KMusDelayEndingModifier = 2;
+ iDelayFileEndingPos = aDuration.Int64() -
+ iBufferingPeriod.Int64() / KMusDelayEndingModifier;
+ tempCalculatedPosition = iDelayFileEndingPos;
+ if ( iPreviousPos > tempCalculatedPosition )
+ {
+ tempCalculatedPosition = iPreviousPos;
+ }
+ }
+ else
+ {
+ iDelayFileEndingPos = 0;
+ }
+
+ if ( iRewindedToBeginning && aActualPosition > 0 )
+ {
+ iRewindedToBeginning = EFalse;
+ }
+
+ if ( tempCalculatedPosition < 0 )
+ {
+ tempCalculatedPosition = 0;
+ }
+ }
+
+ iPreviousPos = tempCalculatedPosition;
+
+ return tempCalculatedPosition;
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musenginepluginentry.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "musengsessionmanager.h"
+#include <ECom.h>
+#include <ImplementationProxy.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+const TImplementationProxy KMusEnginePluginImplementationTable[] =
+ {
+ IMPLEMENTATION_PROXY_ENTRY( 0x20021341, CMusEngSessionManager::NewL )
+ };
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+ {
+ aTableCount = sizeof( KMusEnginePluginImplementationTable ) /
+ sizeof( TImplementationProxy );
+
+ return KMusEnginePluginImplementationTable;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musenglivesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,149 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musenglivesession.h"
+#include "lcsessionobserver.h"
+#include "musenglogger.h"
+#include "musengremotevideoplayer.h"
+#include "musenglivevideoplayer.h"
+#include "svptimer.h"
+
+
+const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+
+const TUint32 KMusEngTwoWayReceivingActivityTimeout = 5000; // 5 seconds
+// 6 seconds keepalive timer, needs to be more than receiving timeout
+const TUint8 KMusEngTwoWayRtpKeepAliveTimer = 6;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveSession* CMusEngLiveSession::NewL()
+ {
+ CMusEngLiveSession* self = new( ELeave )CMusEngLiveSession();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveSession::~CMusEngLiveSession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::~CMusEngLiveSession()" )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::~CMusEngLiveSession()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngLiveSession::EnableDisplayL() %d",
+ aEnable )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::EnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngLiveSession::SetOrientationL() %d",
+ aOrientation )
+
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::SetOrientationL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::SetRectsL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::SetRectsL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::SetRectsL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveSession::CMusEngLiveSession()
+ : CMusEngMceSession()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::ConstructL()" )
+
+ CMusEngMceSession::ConstructL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::EstablishLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::EstablishLcSessionL" )
+
+ iTimer = CSVPTimer::NewL( *this, 1 );
+ iTimer->SetTime(2000);
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::EstablishLcSessionL" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::TerminateLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::TerminateLcSessionL" )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::TerminateLcSessionL" )
+ }
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musenglivevideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,166 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musenglivevideoplayer.h"
+#include "musengcamerahandler.h"
+#include "musengdisplayhandler.h"
+#include "musenglogger.h"
+
+// SYSTEM
+#include <e32base.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveVideoPlayer* CMusEngLiveVideoPlayer::NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl )
+ {
+ return new( ELeave )CMusEngLiveVideoPlayer(
+ aDisplayHandler, aCameraHandler, aLcAudioControl );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveVideoPlayer::CMusEngLiveVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngLocalVideoPlayer( aDisplayHandler, aLcAudioControl ),
+ iCameraHandler( aCameraHandler )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveVideoPlayer::~CMusEngLiveVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngLiveVideoPlayer::LcIsPlayingL()
+ {
+// return iCameraHandler.IsPlayingL();
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::LcPlayL()
+ {
+// iCameraHandler.PlayL();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::LcPauseL()
+ {
+// iCameraHandler.PauseL();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcCameraControl* CMusEngLiveVideoPlayer::LcCameraControl()
+ {
+ return &iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcDestinationFileControl* CMusEngLiveVideoPlayer::LcDestinationFileControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcZoomControl* CMusEngLiveVideoPlayer::LcZoomControl()
+ {
+ return &iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcBrightnessControl* CMusEngLiveVideoPlayer::LcBrightnessControl()
+ {
+ return &iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::SetLcFileNameL( const TFileName& aFileName )
+ {
+ iFileName = aFileName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+TFileName& CMusEngLiveVideoPlayer::LcFileName()
+ {
+ return iFileName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcDestinationFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::LcRecordL( TBool aRecord )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngLiveVideoPlayer::LcRecordL(( %d )",
+ aRecord )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveVideoPlayer::LcRecordL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcDestinationFileControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngLiveVideoPlayer::LcIsRecording()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveVideoPlayer::LcIsRecording()" )
+
+ TBool isEnabled( EFalse );
+
+ return isEnabled;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musenglocalvideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musenglocalvideoplayer.h"
+#include "musengdisplayhandler.h"
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLocalVideoPlayer::CMusEngLocalVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngVideoPlayerBase( aDisplayHandler, aLcAudioControl )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLocalVideoPlayer::~CMusEngLocalVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer::TLcVideoPlayerState
+CMusEngLocalVideoPlayer::LcVideoPlayerState() const
+ {
+ return MLcVideoPlayer::EPlaying;
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngLocalVideoPlayer::SetLcWindowRectL( TRect aRect )
+ {
+ iDisplayHandler.SetSecondaryRectL( aRect );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngLocalVideoPlayer::LcWindowRect()
+ {
+ return iDisplayHandler.SecondaryRect();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musengmcesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,662 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengmcesession.h"
+#include "lcsessionobserver.h"
+#include "musenglogger.h"
+#include "lcuiprovider.h"
+#include "lcvideoplayer.h"
+#include "musengremotevideoplayer.h"
+#include "musenglivevideoplayer.h"
+
+// SYSTEM
+#include <audiopreference.h>
+#include <e32property.h>
+
+#include <cntitem.h>
+#include <cntfield.h>
+#include <cntdef.h>
+
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession::CMusEngMceSession()
+ {
+ iBackground = IsBackgroundStartup();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::ConstructL()" )
+
+ iLiveVideoPlayer = CMusEngLiveVideoPlayer::NewL( *this, iCameraHandler, *this );
+ iLcSessionState = MLcSession::EUninitialized;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession::~CMusEngMceSession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::~CMusEngMceSession()" )
+
+ delete iRemoteAddress;
+ delete iRemoteVideoPlayer;
+ delete iLiveVideoPlayer;
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::~CMusEngMceSession()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngMceSession::Rect() const
+ {
+ MUS_LOG( "mus: [ENGINE] CMusEngMceSession::Rect()" )
+ return iRect;
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetRectL( const TRect& aRect )
+ {
+ MUS_LOG( "mus: [ENGINE] CMusEngSession::SetRectL()" )
+ iRect = aRect;
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetSecondaryRectL( const TRect& aSecondaryRect )
+ {
+ MUS_LOG( "mus: [ENGINE] CMusEngMceSession::SetSecondaryRectL()" )
+
+ // Same rect is set by primary and secondary setters
+ iRect = aSecondaryRect;
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngMceSession::SecondaryRect() const
+ {
+ MUS_LOG( "mus: [ENGINE] CMusEngMceSession::SecondaryRect()" )
+ return iRect;
+ }
+
+#if 0
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::SetSecondaryRectL( const TRect& aSecondaryRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SetSecondaryRectL()" )
+
+ iLocalRect = aSecondaryRect;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetSecondaryRectL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngTwoWaySession::SecondaryRect() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SecondaryRect()" )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SecondaryRect()" )
+ return iLocalRect;
+ }
+
+#endif
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+MMusEngDisplayHandler::TDisplayOrientation CMusEngMceSession::OrientationL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::RotationL()" )
+ return MMusEngDisplayHandler::EPortrait;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::SetOrientationL() %d",
+ aOrientation )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::SetOrientationL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::EnableDisplay() %d",
+ aEnable )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::EnableDisplay()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsDisplayEnabled()
+ {
+ TBool enabled( EFalse );
+ return enabled;
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsDisplayActive()
+ {
+ return ( IsDisplayEnabled() );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcSession::TLcSessionState CMusEngMceSession::LcSessionState() const
+ {
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::LcSessionState()" )
+
+ TLcSessionState lcSessionState = MLcSession::EUninitialized;
+
+/*
+ if ( iSession )
+ {
+ switch( iSession->State() )
+ {
+ case CMceSession::EIdle:
+ {
+ lcSessionState = MLcSession::EInitialized;
+ break;
+ }
+ case CMceSession::EIncoming:
+ case CMceSession::EProceeding:
+ case CMceSession::EReserving:
+ {
+ lcSessionState = MLcSession::EReceived;
+ break;
+ }
+
+ case CMceSession::EOffering:
+ case CMceSession::EAnswering:
+ {
+ lcSessionState = MLcSession::EOpening;
+ break;
+ }
+ case CMceSession::EEstablished:
+ {
+ lcSessionState = MLcSession::EOpen;
+ break;
+ }
+ case CMceSession::ECancelling:
+ case CMceSession::ETerminating:
+ {
+ lcSessionState = MLcSession::EClosing;
+ break;
+ }
+ case CMceSession::ETerminated:
+ {
+ lcSessionState = MLcSession::EClosed;
+ break;
+ }
+ default:
+ {
+ lcSessionState = MLcSession::EUninitialized;
+ break;
+ }
+ }
+ }
+*/
+
+ return iLcSessionState;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcSessionObserver( MLcSessionObserver* aObserver )
+ {
+ iLcSessionObserver = aObserver;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcUiProvider( MLcUiProvider* aUiProvider )
+ {
+ iLcUiProvider = aUiProvider;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngMceSession::RemoteVideoPlayer()
+ {
+ return iRemoteVideoPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngMceSession::LocalVideoPlayer()
+ {
+ return iLiveVideoPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::LocalDisplayName()
+ {
+ return KNullDesC;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::RemoteDisplayName()
+ {
+ return *iRemoteAddress;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::SetParameter( TInt /*aId*/, TInt /*aValue*/ )
+ {
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::ParameterValue( TInt /*aId*/ )
+ {
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsBackgroundStartup()
+ {
+ return EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcAudioMutedL()
+ {
+ return EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::MuteLcAudioL( TBool aMute )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcMicMutedL()
+ {
+ return EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::MuteLcMicL( TBool aMute )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsEnablingLcLoudspeakerAllowed()
+ {
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::EnableLcLoudspeakerL( TBool aEnabled )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcLoudspeakerEnabled()
+ {
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::LcVolumeL()
+ {
+ return 5;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcVolumeL( TInt aValue )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::IncreaseLcVolumeL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::DecreaseLcVolumeL()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::TimedOut( TInt aTimerId )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut()" )
+
+ iLcSessionState = MLcSession::EOpen;
+
+ if ( iLcSessionObserver )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut(), StateChanged" )
+ iLcSessionObserver->StateChanged( *this );
+ }
+
+/*
+ switch( aTimerId )
+ {
+ case CMceSession::EIdle:
+ {
+ lcSessionState = MLcSession::EInitialized;
+ break;
+ }
+ case CMceSession::EIncoming:
+ case CMceSession::EProceeding:
+ case CMceSession::EReserving:
+ {
+ lcSessionState = MLcSession::EReceived;
+ break;
+ }
+
+ case CMceSession::EOffering:
+ case CMceSession::EAnswering:
+ {
+ lcSessionState = MLcSession::EOpening;
+ break;
+ }
+ case CMceSession::EEstablished:
+ {
+ lcSessionState = MLcSession::EOpen;
+ break;
+ }
+ case CMceSession::ECancelling:
+ case CMceSession::ETerminating:
+ {
+ lcSessionState = MLcSession::EClosing;
+ break;
+ }
+ case CMceSession::ETerminated:
+ {
+ lcSessionState = MLcSession::EClosed;
+ break;
+ }
+ default:
+ {
+ lcSessionState = MLcSession::EUninitialized;
+ break;
+ }
+ }
+*/
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::TimedOut()" )
+ }
+
+
+
+TInt CMusEngMceSession::SetForegroundStatus( TBool aIsForeground )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::SetForegroundStatus() %d",
+ aIsForeground )
+ /*
+ if ( aIsForeground )
+ {
+ // Only clear the bg info, do not ever enable it again
+ iBackground = EFalse;
+ }
+ */
+ return KErrNone;
+ }
+
+_LIT( KIpVtEngStubRemoteDetails, "5556567844" );
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::RemoteDetails()
+ {
+ return KIpVtEngStubRemoteDetails();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetRemoteL( const TDesC& aRemote )
+{
+ iRemoteAddress = aRemote.AllocL();
+}
+
+#if 0
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutSessionStateChange()
+ {
+ if ( iLcSessionObserver )
+ {
+ iLcSessionObserver->StateChanged( *this );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutSessionUpdate()
+ {
+ if ( iLcSessionObserver )
+ {
+ iLcSessionObserver->Updated( *this );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutSessionFailure( TInt aReason )
+ {
+ if ( iLcSessionObserver )
+ {
+ iLcSessionObserver->Failed( *this, aReason );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutPlayerStateChange(
+ MLcVideoPlayer* aPlayer )
+ {
+ if ( iLcSessionObserver && aPlayer )
+ {
+ iLcSessionObserver->StateChanged( *aPlayer );
+ }
+
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformUiProviderAboutReceivingStart()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::InformUiProviderAboutReceivingStart()" )
+ if ( iBackground && iLcUiProvider )
+ {
+ MUS_LOG( "mus: [ENGINE] receiving started in BG mode, switching to FG" )
+ iLcUiProvider->HandleForegroundStatus( ETrue );
+ iBackground = EFalse;
+ }
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::InformUiProviderAboutReceivingStart()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutPlayerUpdate(
+ MLcVideoPlayer* aPlayer )
+ {
+ if ( iLcSessionObserver && aPlayer )
+ {
+ iLcSessionObserver->Updated( *aPlayer );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutPlayerFailure(
+ MLcVideoPlayer* aPlayer,
+ TInt aReason )
+ {
+ if ( iLcSessionObserver && aPlayer )
+ {
+ iLcSessionObserver->Failed( *aPlayer, aReason );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MLcUiProvider& CMusEngMceSession::LcUiProviderL()
+ {
+ __ASSERT_ALWAYS( iLcUiProvider, User::Leave( KErrNotReady ) );
+ return *iLcUiProvider;
+ }
+#endif
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::UpdateLcSessionL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::SendDialTone( TChar aKey )
+ {
+ return ETrue;
+ }
+
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musengmceutils.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,594 @@
+/*
+* Copyright (c) 2005-2006 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: Utilities to get and set profile used with SWIS.
+*
+*/
+
+
+
+// USER
+
+#include "musengmceutils.h"
+#include "muslogger.h"
+
+// SYSTEM
+
+#include <mcesession.h>
+#include <mcevideostream.h>
+#include <mceaudiostream.h>
+#include <mcertpsink.h>
+#include <mcemediasource.h>
+#include <mcertpsource.h>
+#include <mcecamerasource.h>
+#include <mcedisplaysink.h>
+#include <mcefilesource.h>
+#include <mcefilesink.h>
+#include <mcespeakersink.h>
+
+
+
+
+
+// -----------------------------------------------------------------------------
+// Tells if parameter stream is a video stream with RTP source
+// -----------------------------------------------------------------------------
+//
+TBool MusEngMceUtils::IsVideoInStream( CMceMediaStream& aStream )
+ {
+ return ( aStream.Type() == KMceVideo &&
+ aStream.Source() &&
+ aStream.Source()->Type() == KMceRTPSource );
+ }
+
+// -----------------------------------------------------------------------------
+// Tells if parameter stream is a video stream with RTP sink
+// -----------------------------------------------------------------------------
+//
+TBool MusEngMceUtils::IsVideoOutStream( CMceMediaStream& aStream )
+ {
+ TBool isOutStream( EFalse );
+ if ( aStream.Type() == KMceVideo )
+ {
+ CMceMediaSink* rtpSink = MusEngMceUtils::GetMediaSink(
+ aStream,
+ KMceRTPSink );
+
+ isOutStream = ( rtpSink != NULL );
+ }
+ return isOutStream;
+ }
+
+// -----------------------------------------------------------------------------
+// Tells if parameter stream is an audio stream with RTP source
+// -----------------------------------------------------------------------------
+//
+TBool MusEngMceUtils::IsAudioInStream( CMceMediaStream& aStream )
+ {
+ return ( aStream.Type() == KMceAudio &&
+ aStream.Source() &&
+ aStream.Source()->Type() == KMceRTPSource );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to video stream with RTP sink.
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* MusEngMceUtils::GetVideoOutStreamL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetVideoOutStreamL()" )
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ CMceVideoStream* videoOut = NULL;
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( MusEngMceUtils::IsVideoOutStream( *streams[i] ) )
+ {
+ __ASSERT_ALWAYS( !videoOut, User::Leave( KErrOverflow ) );
+
+ videoOut = static_cast<CMceVideoStream*>( streams[i] );
+ }
+
+ // Check if bound stream is a video stream with RTP sink.
+ if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoOutStream( streams[i]->BoundStreamL() ) )
+ {
+ __ASSERT_ALWAYS( !videoOut, User::Leave( KErrOverflow ) );
+
+ videoOut = static_cast<CMceVideoStream*>(
+ &streams[i]->BoundStreamL() );
+ }
+ }
+
+ __ASSERT_ALWAYS( videoOut, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetVideoOutStreamL()" )
+
+ return videoOut;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to video stream with RTP source.
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* MusEngMceUtils::GetVideoInStreamL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetVideoInStreamL()" )
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ CMceVideoStream* videoIn = NULL;
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( MusEngMceUtils::IsVideoInStream( *streams[i] ) )
+
+ {
+ __ASSERT_ALWAYS( !videoIn, User::Leave( KErrOverflow ) );
+
+ videoIn = static_cast<CMceVideoStream*>( streams[i] );
+ }
+
+ // Check if bound stream is a video stream with RTP souce.
+ if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoInStream( streams[i]->BoundStreamL() ) )
+ {
+ __ASSERT_ALWAYS( !videoIn, User::Leave( KErrOverflow ) );
+
+ videoIn = static_cast<CMceVideoStream*>(
+ &streams[i]->BoundStreamL() );
+ }
+ }
+
+ __ASSERT_ALWAYS( videoIn, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetVideoInStreamL()" )
+
+ return videoIn;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to video stream with file sink
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* MusEngMceUtils::GetRecordingStream( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetRecordingStreamL()" )
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ CMceVideoStream* recordingStream = NULL;
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( streams[i]->Type() == KMceVideo )
+ {
+ if ( MusEngMceUtils::GetMediaSink( *streams[i], KMceFileSink ) )
+ {
+ recordingStream = static_cast<CMceVideoStream*>( streams[i] );
+ }
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetRecordingStreamL()" )
+
+ return recordingStream;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a mediastream.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSink( CMceMediaStream& aStream,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType )
+ {
+ const RPointerArray<CMceMediaSink>& sinks = aStream.Sinks();
+ for ( TInt i = 0; i < sinks.Count(); ++i )
+ {
+ if ( sinks[i]->Type() == aType &&
+ ( aAssociatedSourceType == KMusEngNoAssociatedSourceType ||
+ aStream.Source()->Type() == aAssociatedSourceType ) )
+ {
+ return sinks[i];
+ }
+ }
+
+ return NULL;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a mediastream.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSinkL( CMceMediaStream& aStream,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType )
+ {
+
+ CMceMediaSink* sink = MusEngMceUtils::GetMediaSink( aStream, aType, aAssociatedSourceType );
+
+ __ASSERT_ALWAYS( sink, User::Leave( KErrNotFound ) );
+
+ return sink;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a session.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSink( CMceSession& aSession,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType,
+ TBool aStrictMatch )
+ {
+ CMceMediaSink* sink = NULL;
+
+ TRAP_IGNORE( sink = MusEngMceUtils::GetMediaSinkL(
+ aSession, aType, aAssociatedSourceType, aStrictMatch ) )
+
+ return sink;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a session.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSinkL( CMceSession& aSession,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType,
+ TBool aStrictMatch )
+ {
+ CMceMediaSink* sink = NULL;
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ sink = MusEngMceUtils::GetMediaSink( *streams[i], aType, aAssociatedSourceType );
+ if ( sink )
+ {
+ return sink;
+ }
+
+ if ( streams[i]->BoundStream() )
+ {
+ sink = MusEngMceUtils::GetMediaSink( streams[i]->BoundStreamL(),
+ aType,
+ aAssociatedSourceType );
+ if ( sink )
+ {
+ return sink;
+ }
+ }
+ }
+
+ if ( !sink && aAssociatedSourceType != KMusEngNoAssociatedSourceType && !aStrictMatch )
+ {
+ // No preferred match, try without source preference
+ sink = GetMediaSinkL( aSession, aType );
+ }
+
+ __ASSERT_ALWAYS( sink, User::Leave( KErrNotFound ) );
+
+ return sink;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a speaker sink contained by specified stream or bound stream.
+// -----------------------------------------------------------------------------
+//
+CMceSpeakerSink* MusEngMceUtils::GetSpeaker( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetSpeaker()" )
+
+ CMceSpeakerSink* speaker = NULL;
+
+ if ( aStream.Type() == KMceAudio )
+ {
+ speaker = static_cast<CMceSpeakerSink*>(
+ MusEngMceUtils::GetMediaSink( aStream, KMceSpeakerSink ) );
+
+ if ( !speaker && aStream.BoundStream() )
+ {
+ CMceMediaStream* boundStream = NULL;
+ TRAPD( error, boundStream = &aStream.BoundStreamL() )
+
+ if ( error == KErrNone )
+ {
+ speaker = static_cast<CMceSpeakerSink*>(
+ MusEngMceUtils::GetMediaSink( *boundStream,
+ KMceSpeakerSink ) );
+ }
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetSpeaker()" )
+
+ return speaker;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a camera source.
+// -----------------------------------------------------------------------------
+//
+CMceCameraSource* MusEngMceUtils::GetCameraL( CMceSession& aSession )
+ {
+ // Camera can be only in out stream
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetCameraL()" )
+
+ CMceVideoStream* videoOut = MusEngMceUtils::GetVideoOutStreamL( aSession );
+
+ if ( !( videoOut->Source() &&
+ videoOut->Source()->Type() == KMceCameraSource ) )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetCameraL()" )
+ return static_cast<CMceCameraSource*>( videoOut->Source() );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a file source.
+// -----------------------------------------------------------------------------
+//
+CMceFileSource* MusEngMceUtils::GetFileSourceL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetFileSourceL()" )
+
+ CMceVideoStream* videoOut = MusEngMceUtils::GetVideoOutStreamL( aSession );
+
+ if ( !( videoOut->Source() &&
+ videoOut->Source()->Type() == KMceFileSource ) )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetFileSourceL()" )
+ return static_cast<CMceFileSource*>( videoOut->Source() );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetDisplay(
+ CMceSession& aSession, TBool aPreferViewFinder )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetDisplay()" )
+ TMceSourceType preferredSource =
+ aPreferViewFinder ? KMceCameraSource : KMusEngNoAssociatedSourceType;
+ return static_cast<CMceDisplaySink*>(
+ MusEngMceUtils::GetMediaSink( aSession, KMceDisplaySink, preferredSource ) );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetDisplayL(
+ CMceSession& aSession, TBool aPreferViewFinder )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetDisplayL()" )
+
+ CMceDisplaySink* display = MusEngMceUtils::GetDisplay( aSession, aPreferViewFinder );
+
+ __ASSERT_ALWAYS( display, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetDisplayL()" )
+ return display;
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying received video.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetReceivingDisplay( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetReceivingDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetReceivingDisplay()" )
+
+ // Search display which is connected with rtp source
+ TMceSourceType preferredSource = KMceRTPSource;
+ return static_cast<CMceDisplaySink*>( MusEngMceUtils::GetMediaSink(
+ aSession, KMceDisplaySink, preferredSource, ETrue ) );
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying received video.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetReceivingDisplayL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetReceivingDisplayL()" )
+
+ CMceDisplaySink* display = GetReceivingDisplay( aSession );
+ __ASSERT_ALWAYS( display != NULL, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetReceivingDisplay()" )
+
+ return display;
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying viewfinder content.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetVfDisplay( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetVfDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetVfDisplay()" )
+
+ // Search display which is connected with camera
+ TMceSourceType preferredSource = KMceCameraSource;
+ return static_cast<CMceDisplaySink*>( MusEngMceUtils::GetMediaSink(
+ aSession, KMceDisplaySink, preferredSource, ETrue ) );
+ }
+
+// -----------------------------------------------------------------------------
+// Adds display sink to specified stream if one does not exist already.
+// Display rect is set in both cases.
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::AddDisplayL( CMceMediaStream& aStream,
+ CMceManager& aManager,
+ const TRect& aDisplayRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::AddDisplayL()" )
+
+ __ASSERT_ALWAYS( aStream.Type() == KMceVideo, User::Leave( KErrArgument ) );
+
+ CMceDisplaySink* display = static_cast<CMceDisplaySink*>(
+ MusEngMceUtils::GetMediaSink(
+ aStream,
+ KMceDisplaySink ) );
+
+ if ( !display )
+ {
+ display = CMceDisplaySink::NewLC( aManager );
+ aStream.AddSinkL( display );
+ CleanupStack::Pop( display );
+ }
+
+ display->SetDisplayRectL( aDisplayRect );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::AddDisplayL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Adds display sink to specified stream if one does not exist already.
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::AddSpeakerL( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::AddSpeakerL()" )
+
+ __ASSERT_ALWAYS( aStream.Type() == KMceAudio, User::Leave( KErrArgument ) );
+
+ CMceSpeakerSink* speaker = static_cast<CMceSpeakerSink*>(
+ MusEngMceUtils::GetMediaSink(
+ aStream,
+ KMceSpeakerSink ) );
+
+ if ( !speaker )
+ {
+ speaker = CMceSpeakerSink::NewLC();
+ aStream.AddSinkL( speaker );
+ CleanupStack::Pop( speaker );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::AddSpeakerL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Disables parameter stream, its' source and all the sinks.
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::DisableStreamL( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::DisableStreamL()" )
+
+ aStream.DisableL();
+
+ if ( aStream.Source() )
+ {
+ aStream.Source()->DisableL();
+ }
+
+ for ( TInt sinkIndex = 0; sinkIndex < aStream.Sinks().Count(); ++sinkIndex )
+ {
+ aStream.Sinks()[ sinkIndex ]->DisableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::DisableStreamL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::DoEnableDisplayL( CMceDisplaySink& aDisplay, TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> MusEngMceUtils::DoEnableDisplayL() %d",
+ aEnable )
+
+ if ( aEnable )
+ {
+ if ( !aDisplay.IsEnabled() )
+ {
+ aDisplay.EnableL();
+ MUS_LOG( " Display enabled" )
+ }
+ else
+ {
+ MUS_LOG( " Display already enabled, ignore" )
+ }
+ }
+ else
+ {
+ if ( aDisplay.IsEnabled() )
+ {
+ aDisplay.DisableL();
+ MUS_LOG( " Display disabled" )
+ }
+ else
+ {
+ MUS_LOG( " Display already disabled, ignore" )
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::DoEnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt MusEngMceUtils::EnableInactivityTimer(
+ CMceSession& aSession,
+ TUint32 aInactivityTimeout )
+ {
+ TInt err( KErrNotFound );
+ CMceVideoStream* stream = NULL;
+ TRAP_IGNORE( stream = MusEngMceUtils::GetVideoInStreamL( aSession ) )
+ if ( stream )
+ {
+ // Instream has always RTP source
+ err = KErrNone;
+ CMceRtpSource* rtpSource = static_cast<CMceRtpSource*>( stream->Source() );
+ TRAP( err, rtpSource->EnableInactivityTimerL( aInactivityTimeout ) )
+ }
+
+ return err;
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musengremotevideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// USER
+#include "musengremotevideoplayer.h"
+#include "musengdisplayhandler.h"
+
+// SYSTEM
+#include <e32base.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngRemoteVideoPlayer* CMusEngRemoteVideoPlayer::NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl )
+ {
+ return new( ELeave )CMusEngRemoteVideoPlayer(
+ aDisplayHandler, aLcAudioControl );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngRemoteVideoPlayer::CMusEngRemoteVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngVideoPlayerBase( aDisplayHandler, aLcAudioControl )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngRemoteVideoPlayer::~CMusEngRemoteVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer::TLcVideoPlayerState
+CMusEngRemoteVideoPlayer::LcVideoPlayerState() const
+ {
+ return MLcVideoPlayer::EPlaying;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngRemoteVideoPlayer::LcIsPlayingL()
+ {
+
+ return ETrue;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musengsessionmanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "musengsessionmanager.h"
+#include "musengmcesession.h"
+#include "musengtwowaysession.h"
+#include "musenglivesession.h"
+#include "lcsession.h"
+#include "mccdatasender.h"
+#include "mccdatareceiver.h"
+#include "musenglogger.h"
+#include "mccdatastructures.h"
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager* CMusEngSessionManager::NewL()
+ {
+ CMusEngSessionManager* self = new( ELeave )CMusEngSessionManager();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager::~CMusEngSessionManager()
+ {
+ delete iSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager::CMusEngSessionManager()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngSessionManager::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngSessionManager::ConstructL()" )
+ //iMsgReceiver = CMccDataReceiver::NewL(*this);
+ //iMsgSender = CMccDataSender::NewL();
+ //iSession = CMusEngTwoWaySession::NewL();
+ iSession = CMusEngLiveSession::NewL();
+ _LIT(KDisplayName,"+358504871872");
+ iSession->SetRemoteL( KDisplayName() );
+ MUS_LOG( "mus: [ENGINE] <- CMusEngSessionManager::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MLcSession& CMusEngSessionManager::Session()
+ {
+ return *iSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngSessionManager::DataReceived( const TDataMessage& aData )
+ {
+ }
+
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musengtwowayrecvsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,521 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengtwowayrecvsession.h"
+#include "lcsessionobserver.h"
+#include "musunittesting.h"
+#include "musengmceutils.h"
+#include "musenglogger.h"
+#include "mussipprofilehandler.h"
+#include "musenglivevideoplayer.h"
+#include "musengremotevideoplayer.h"
+
+// SYSTEM
+#include <mcemanager.h>
+#include <mcecamerasource.h>
+#include <mcevideostream.h>
+#include <mcertpsink.h>
+#include <mcedisplaysink.h>
+#include <mcesession.h>
+#include <mcertpsource.h>
+#include <mcestreambundle.h>
+#include <musmanager.h>
+
+const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+
+const TUint32 KMusEngTwoWayReceivingActivityTimeout = 5000; // 5 seconds
+// 6 seconds keepalive timer, needs to be more than receiving timeout
+const TUint8 KMusEngTwoWayRtpKeepAliveTimer = 6;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession* CMusEngTwoWayRecvSession::NewL()
+ {
+ CMusEngTwoWayRecvSession* self = new( ELeave )CMusEngTwoWayRecvSession();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()" )
+
+ delete iLiveVideoPlayer;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::EnableDisplayL() %d",
+ aEnable )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+ MusEngMceUtils::DoEnableDisplayL( *display, aEnable );
+
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+ if ( vfDisplay )
+ {
+ MusEngMceUtils::DoEnableDisplayL( *vfDisplay, aEnable );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::EnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession::TDisplayOrientation CMusEngTwoWayRecvSession::OrientationL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::RotationL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+
+ TDisplayOrientation displayOrientation;
+ CMceDisplaySink::TRotation rotation( display->RotationL() );
+
+ MUS_LOG1( "mus: [ENGINE] MCE rotation is %d", rotation )
+
+ if ( rotation == CMceDisplaySink::ENone )
+ {
+ displayOrientation = CMusEngMceSession::EPortrait;
+ }
+ else
+ {
+ displayOrientation = CMusEngMceSession::ELandscape;
+ }
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::RotationL() %d",
+ displayOrientation )
+
+ return displayOrientation;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetOrientationL() %d",
+ aOrientation )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+
+ CMceDisplaySink::TRotation rotation = ( aOrientation == EPortrait ) ?
+ CMceDisplaySink::ENone : CMceDisplaySink::EClockwise90Degree;
+
+ display->SetRotationL( rotation );
+ if ( vfDisplay )
+ {
+ vfDisplay->SetRotationL( rotation );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetOrientationL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::SetRectsL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetRectsL()" )
+
+ iLocalRect = aLocalRect;
+ iRect = aRemoteRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetRectsL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::SetSecondaryRectL( const TRect& aSecondaryRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetSecondaryRectL()" )
+
+ iLocalRect = aSecondaryRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetSecondaryRectL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngTwoWayRecvSession::SecondaryRect() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SecondaryRect()" )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SecondaryRect()" )
+ return iLocalRect;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TMusEngCameraHandler& CMusEngTwoWayRecvSession::Camera()
+ {
+ return iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngTwoWayRecvSession::LocalVideoPlayer()
+ {
+ return iLiveVideoPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+void CMusEngTwoWayRecvSession::RectChangedL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::RectChangedL()" )
+
+
+ // If session is not yet created, do nothing
+ if ( iSession && iSession->State() != CMceSession::ETerminated )
+ {
+ TRect remoteRect( Rect() );
+ MUS_LOG2( "mus: [ENGINE] remote tl.ix=%d tl.iy=%d",
+ remoteRect.iTl.iX, remoteRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] remote brc%d br.iy=%d",
+ remoteRect.iBr.iX, remoteRect.iBr.iY )
+ MUS_LOG2( "mus: [ENGINE] local tl.ix=%d tl.iy=%d",
+ iLocalRect.iTl.iX, iLocalRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] local br.ix=%d br.iy=%d",
+ iLocalRect.iBr.iX, iLocalRect.iBr.iY )
+
+ if ( remoteRect != iSetRemoteRect )
+ {
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+ display->SetDisplayRectL( remoteRect );
+ iSetRemoteRect = remoteRect;
+ }
+
+ if ( iLocalRect != iSetLocalRect )
+ {
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+ if ( vfDisplay )
+ {
+ vfDisplay->SetDisplayRectL( iLocalRect );
+ }
+ iSetLocalRect = iLocalRect;
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::RectChangedL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ iCameraHandler.SetSession( iSession );
+
+ // Force bandwidth line usage in sdp as it is mandatory
+ // at MT side based on GSMA VS specification IR.74. Bandwidth is set to
+ // session or to media level based on sender's way of usage. If other end
+ // is not using bandwidth attribute at all, media level is preferred.
+ SetSessionSdpLinesL( *iSession, ETrue );
+
+ CMceStreamBundle* localBundle =
+ CMceStreamBundle::NewLC( CMceStreamBundle::ELS );
+
+ const RPointerArray<CMceMediaStream>& streams = iSession->Streams();
+
+ CMceMediaStream* videoInStream = NULL;
+ CMceMediaStream* videoOutStream = NULL;
+
+ // Search interesting video streams, sendrecv is preferred
+ TBool sendRecvVideoFound( EFalse );
+ for( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( MusEngMceUtils::IsVideoInStream( *streams[i] ) &&
+ !sendRecvVideoFound )
+ {
+ videoInStream = streams[i];
+
+ if ( streams[i]->BoundStream() )
+ {
+ videoOutStream = &streams[i]->BoundStreamL();
+ }
+ }
+ else if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoInStream( streams[i]->BoundStreamL() ) &&
+ !sendRecvVideoFound )
+ {
+ videoInStream = &streams[i]->BoundStreamL();
+
+ videoOutStream = streams[i];
+ }
+ else
+ {
+ // NOP
+ }
+
+ sendRecvVideoFound = ( videoInStream && videoOutStream );
+ }
+
+ CompleteSessionStructureAudioPartL( streams, *localBundle, videoInStream, videoOutStream );
+
+ if ( videoInStream )
+ {
+ CompleteSessionStructureInStreamL( *videoInStream, *localBundle );
+ }
+ else
+ {
+ // At least receiving video stream is required
+ User::Leave( KErrCorrupt );
+ }
+
+ if ( videoOutStream )
+ {
+ CompleteSessionStructureOutStreamL( *videoOutStream );
+ }
+
+ // Destroy bundle if it is not needed or transfer ownership
+ if ( localBundle->Streams().Count() > 1 )
+ {
+ iSession->AddBundleL( localBundle );
+ CleanupStack::Pop( localBundle );
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy( localBundle );
+ }
+
+ AdjustStreamsAndCodecsL();
+
+ iSession->UpdateL();
+
+ // Now session state is right to adjust volume
+ SetSpeakerVolumeL( LcVolumeL() );
+
+ iSipProfileHandler->CreateProfileL( iSession->Profile() );
+
+ iRemoteVideoPlayer->SetMceSession( iSession );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession::CMusEngTwoWayRecvSession()
+ : CMusEngReceiveSession()
+ {
+ iMceManagerUid.iUid = CMusManager::ESipInviteDesired2WayVideo;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::ConstructL()" )
+
+ iCameraHandler.ReadCameraUsageKeyL();
+ CMusEngReceiveSession::ConstructL();
+
+ iLiveVideoPlayer =
+ CMusEngLiveVideoPlayer::NewL( *this, iCameraHandler, *this );
+
+ // Override receiving timeout and keepalive values of
+ // normal one-way receiving session
+ //
+ iReceivingInactivityTimeout = KMusEngTwoWayReceivingActivityTimeout;
+ iKeepaliveTimer = KMusEngTwoWayRtpKeepAliveTimer;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// When checking audio streams also not interesting streams are removed from
+// session. Stream if removed if one of following apply:
+// 1. Is not and does not contain incoming video or audio
+// 2. We already have one incoming video stream
+// 3. Stream is audio and we run operator variant where audio is
+// not allowed.
+// 4. Two-way video exists and this one is audio
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL(
+ const RPointerArray<CMceMediaStream>& aStreams,
+ CMceStreamBundle& aLocalBundle,
+ CMceMediaStream* aVideoInStream,
+ CMceMediaStream* aVideoOutStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL()" )
+
+ // Audio streams not allowed in two-way session or in operator variant
+ TBool audioAllowed( !( aVideoInStream && aVideoOutStream ) && !iOperatorVariant );
+
+ for( TInt i = 0; i < aStreams.Count(); ++i )
+ {
+ // Audio supported currently only in recvonly case
+ if ( audioAllowed &&
+ MusEngMceUtils::IsAudioInStream( *aStreams[i] ) )
+ {
+ MusEngMceUtils::AddSpeakerL( *aStreams[i] );
+
+ aLocalBundle.AddStreamL( *aStreams[i] );
+
+ // Disable possible opposite stream to indicate that sendrecv audio is
+ // not allowed.
+ if ( aStreams[i]->BoundStream() )
+ {
+ MusEngMceUtils::DisableStreamL( aStreams[i]->BoundStreamL() );
+ }
+ }
+ else if ( audioAllowed &&
+ aStreams[i]->BoundStream() &&
+ MusEngMceUtils::IsAudioInStream( aStreams[i]->BoundStreamL() ) )
+ {
+ MusEngMceUtils::AddSpeakerL( aStreams[i]->BoundStreamL() );
+
+ aLocalBundle.AddStreamL( aStreams[i]->BoundStreamL() );
+
+ // Disable opposite stream to indicate that sendrecv audio is not allowed.
+ MusEngMceUtils::DisableStreamL( *aStreams[i] );
+ }
+ else if ( aStreams[ i ] != aVideoInStream && aStreams[ i ] != aVideoOutStream )
+ {
+ iSession->RemoveStreamL( *aStreams[i] );
+
+ // Since succesfull removal of a stream has decreased the amount
+ // of streams in array by one, we have to modify the index
+ --i;
+ }
+ else
+ {
+ // NOP
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL(
+ CMceMediaStream& aVideoInStream, CMceStreamBundle& aLocalBundle )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL()" )
+
+ SetMediaSdpLinesL( aVideoInStream, ETrue );
+
+ MusEngMceUtils::AddDisplayL( aVideoInStream, *iManager, Rect() );
+
+ static_cast<CMceRtpSource*>(aVideoInStream.Source())->UpdateL(
+ KMusEngJitterBufferLength,
+ KMusEngJitterBufferTreshold,
+ KMusEngTwoWayReceivingActivityTimeout );
+
+ aLocalBundle.AddStreamL( aVideoInStream );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL(
+ CMceMediaStream& aVideoOutStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL()" )
+
+ SetMediaSdpLinesL( aVideoOutStream, ETrue );
+
+ CMceCameraSource* camera = NULL;
+ TRAP_IGNORE( camera = MusEngMceUtils::GetCameraL( *iSession ) )
+ if ( !camera )
+ {
+ camera = CMceCameraSource::NewLC( *iManager );
+ aVideoOutStream.SetSourceL( camera );
+ CleanupStack::Pop( camera );
+ }
+
+ camera->DisableL(); // Start session in pause mode.
+
+ iCameraHandler.InitializeL( *camera );
+
+ CMceVideoStream* vfStream = CMceVideoStream::NewLC();
+
+ vfStream->SetSourceL( aVideoOutStream.Source() );
+
+ // Complete stream
+ MusEngMceUtils::AddDisplayL( *vfStream, *iManager, SecondaryRect() );
+
+ iSession->AddStreamL( vfStream );
+ CleanupStack::Pop( vfStream );
+
+ iLiveVideoPlayer->SetMceSession( iSession );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL()" )
+ }
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musengtwowaysession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,159 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengtwowaysession.h"
+#include "lcsessionobserver.h"
+#include "musenglogger.h"
+#include "musengremotevideoplayer.h"
+#include "musenglivevideoplayer.h"
+#include "svptimer.h"
+
+
+const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+
+const TUint32 KMusEngTwoWayReceivingActivityTimeout = 5000; // 5 seconds
+// 6 seconds keepalive timer, needs to be more than receiving timeout
+const TUint8 KMusEngTwoWayRtpKeepAliveTimer = 6;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession* CMusEngTwoWaySession::NewL()
+ {
+ CMusEngTwoWaySession* self = new( ELeave )CMusEngTwoWaySession();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession::~CMusEngTwoWaySession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::~CMusEngTwoWaySession()" )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::~CMusEngTwoWaySession()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWaySession::EnableDisplayL() %d",
+ aEnable )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::EnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWaySession::SetOrientationL() %d",
+ aOrientation )
+
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetOrientationL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::SetRectsL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SetRectsL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetRectsL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession::CMusEngTwoWaySession()
+ : CMusEngMceSession()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::ConstructL()" )
+
+ CMusEngMceSession::ConstructL();
+
+ iRemoteVideoPlayer = CMusEngRemoteVideoPlayer::NewL( *this, *this );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::EstablishLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::EstablishLcSessionL" )
+
+ iTimer = CSVPTimer::NewL( *this, 1 );
+ iTimer->SetTime(2000);
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::EstablishLcSessionL" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::TerminateLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::TerminateLcSessionL" )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::TerminateLcSessionL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngTwoWaySession::RemoteVideoPlayer()
+ {
+ return iRemoteVideoPlayer;
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/musengvideoplayerbase.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,199 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musenglocalvideoplayer.h"
+#include "musengcamerahandler.h"
+#include "musengdisplayhandler.h"
+
+// SYSTEM
+#include <e32base.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngVideoPlayerBase::CMusEngVideoPlayerBase(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ iDisplayHandler( aDisplayHandler ),
+ iLcAudioControl( aLcAudioControl )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngVideoPlayerBase::~CMusEngVideoPlayerBase()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::LcPlayL(MLcVideoPlayer::TLcVideoPlayerSource /*aSource*/)
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::LcPauseL()
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcWindow* CMusEngVideoPlayerBase::LcWindow()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcCameraControl* CMusEngVideoPlayerBase::LcCameraControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcSourceFileControl* CMusEngVideoPlayerBase::LcSourceFileControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcDestinationFileControl* CMusEngVideoPlayerBase::LcDestinationFileControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcAudioControl* CMusEngVideoPlayerBase::LcAudioControl()
+ {
+ return &iLcAudioControl;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcZoomControl* CMusEngVideoPlayerBase::LcZoomControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcBrightnessControl* CMusEngVideoPlayerBase::LcBrightnessControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::EnableLcWindowL( TBool aEnable )
+ {
+ iDisplayHandler.EnableDisplayL( aEnable );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngVideoPlayerBase::IsLcWindowEnabled()
+ {
+ return iDisplayHandler.IsDisplayEnabled();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::SetLcWindowRectL( TRect aRect )
+ {
+ iDisplayHandler.SetRectL( aRect );
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngVideoPlayerBase::LcWindowRect()
+ {
+ return iDisplayHandler.Rect();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation )
+ {
+ if ( aOrientation == MLcWindow::ELandscape )
+ {
+ iDisplayHandler.SetOrientationL( MMusEngDisplayHandler::ELandscape );
+ }
+ else
+ {
+ iDisplayHandler.SetOrientationL( MMusEngDisplayHandler::EPortrait );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+MLcWindow::TLcWindowOrientation CMusEngVideoPlayerBase::LcWindowOrientationL()
+ {
+ MLcWindow::TLcWindowOrientation orientation;
+ if ( iDisplayHandler.OrientationL() == MMusEngDisplayHandler::ELandscape )
+ {
+ orientation = MLcWindow::ELandscape;
+ }
+ else
+ {
+ orientation = MLcWindow::EPortrait;
+ }
+ return orientation;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/dummymusengineplugin/src/svptimer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2006 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: Timer service for SVP
+*
+*/
+
+
+#include "svptimer.h"
+#include "svptimerobserver.h"
+
+
+const TInt KMicroSecondsCoefficient = 1000;
+
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::CSVPTimer
+// ---------------------------------------------------------------------------
+//
+CSVPTimer::CSVPTimer( MSVPTimerObserver& aObserver, TInt aTimerId ):
+ CTimer( EPriorityHigh ),
+ iObserver( aObserver ),
+ iId( aTimerId )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::CSVPTimer
+// ---------------------------------------------------------------------------
+//
+void CSVPTimer::ConstructL()
+ {
+ CTimer::ConstructL();
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::CSVPTimer
+// ---------------------------------------------------------------------------
+//
+CSVPTimer* CSVPTimer::NewL( MSVPTimerObserver& aObserver,
+ TInt aTimerId )
+ {
+ CSVPTimer* self = new (ELeave) CSVPTimer( aObserver, aTimerId );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::~CSVPTimer
+// ---------------------------------------------------------------------------
+//
+CSVPTimer::~CSVPTimer()
+ {
+ Cancel();
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::RunL
+// ---------------------------------------------------------------------------
+//
+void CSVPTimer::RunL()
+ {
+ iObserver.TimedOut( iId );
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::SetTime
+// ---------------------------------------------------------------------------
+//
+void CSVPTimer::SetTime( TInt aMilliSeconds )
+ {
+ // Milliseconds to microseconds conversion
+ const TTimeIntervalMicroSeconds32 time(
+ KMicroSecondsCoefficient * aMilliSeconds );
+
+ CTimer::After( time ); // NB, CTimer::After calls SetActive
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::Stop
+// ---------------------------------------------------------------------------
+//
+void CSVPTimer::Stop()
+ {
+ Cancel();
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::Id
+// ---------------------------------------------------------------------------
+//
+TInt CSVPTimer::Id() const
+ {
+ return iId;
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/data/20029876.rss Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "registryinfov2.rh"
+
+RESOURCE REGISTRY_INFO theInfo
+ {
+ resource_format_version = RESOURCE_FORMAT_VERSION_2;
+ dll_uid = 0x20029876;
+ interfaces =
+ {
+ INTERFACE_INFO
+ {
+ interface_uid = 0x20021340;
+ implementations =
+ {
+ IMPLEMENTATION_INFO
+ {
+ implementation_uid = 0x20029876;
+ version_no = 1;
+ default_data = "Videotelephony";
+ }
+ };
+ }
+ };
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_MMPFILES
+ipvtengineplugin.mmp
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/group/ipvtengineplugin.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET ipvtengineplugin.dll
+TARGETTYPE PLUGIN
+UID 0x10009D8D 0x20029876
+VENDORID VID_DEFAULT
+CAPABILITY CAP_ECOM_PLUGIN
+
+SOURCEPATH ../data
+START RESOURCE 20029876.rss
+TARGET ipvtengineplugin.rsc
+END
+
+SOURCEPATH ../src
+SOURCE musenginepluginentry.cpp
+SOURCE musengsessionmanager.cpp
+
+
+SOURCE musengmcesession.cpp
+SOURCE musengtwowaysession.cpp
+SOURCE musengcamerahandler.cpp
+SOURCE musengvideoplayerbase.cpp
+SOURCE musenglocalvideoplayer.cpp
+SOURCE musenglivevideoplayer.cpp
+SOURCE musengremotevideoplayer.cpp
+SOURCE svptimer.cpp
+SOURCE mccdatasender.cpp
+SOURCE mccdatareceiver.cpp
+SOURCE mccscreen.cpp
+
+USERINCLUDE ../inc
+USERINCLUDE ../../../../../../inc
+
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/ecom
+
+LIBRARY euser.lib
+LIBRARY bafl.lib
+LIBRARY centralrepository.lib
+LIBRARY charconv.lib
+LIBRARY cntmodel.lib ecom.lib
+LIBRARY ws32.lib
+LIBRARY bitgdi.lib
+LIBRARY fbscli.lib
+LIBRARY cone.lib
+LIBRARY lcvtindicatorcontroller.lib
+DEBUGLIBRARY flogger.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/lcvtindicatorcontroller.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,39 @@
+/*!
+* Copyright (c) 2010 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: Handles phone indicators.
+*/
+
+#ifndef LCVTINDICATORCONTROLLER_H_
+#define LCVTINDICATORCONTROLLER_H_
+
+// FORWARD DECLARATION
+
+class LcVtIndicatorControllerImpl;
+
+class LcVtIndicatorController
+ {
+public:
+ IMPORT_C explicit LcVtIndicatorController();
+ IMPORT_C virtual ~LcVtIndicatorController();
+
+ IMPORT_C void enableActiveCallIndicator();
+ IMPORT_C void disableActiveCallIndicator();
+
+private:
+ LcVtIndicatorControllerImpl* mIndicatorimpl;
+
+ friend class UT_LcVtIndicatorController;
+ };
+
+#endif /* LCVTINDICATORCONTROLLER_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/mccdatareceiver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2006 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 MCCDATARECEIVER_H
+#define MCCDATARECEIVER_H
+#include <E32Base.h>
+#include <e32msgqueue.h>
+
+#include "mccdatareceiverobserver.h"
+#include "mccdatastructures.h"
+
+
+// CLASS DECLARATION
+
+/**
+* CMccDataReceiver class declaration
+*/
+class CMccDataReceiver : public CActive
+ {
+ public:
+
+ static CMccDataReceiver* NewL( MMccDataReceiverObserver& aObserver );
+
+ ~CMccDataReceiver();
+
+ TDataMessage iInitData;
+
+ public: // From CActive
+
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+ private:
+ CMccDataReceiver( MMccDataReceiverObserver& aObserver );
+ void ConstructL(); // second construction phase
+
+ private:
+
+ RMsgQueue<TDataMessage> iMsgQueue;
+ MMccDataReceiverObserver* iObserver;
+
+ };
+
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/mccdatareceiverobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2006 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 MCCDATARECEIVEROBSERVER_H
+#define MCCDATARECEIVEROBSERVER_H
+
+#include <E32Base.h>
+#include "mccdatastructures.h"
+
+// CLASS DECLARATION
+
+/**
+* CMccDataReceiver class declaration
+*/
+class MMccDataReceiverObserver
+ {
+ public:
+
+ virtual void DataReceived( const TDataMessage& aData ) = 0;
+
+ };
+
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/mccdatasender.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2006 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 MCCDATASENDER_H
+#define MCCDATASENDER_H
+#include <E32Base.h>
+#include <e32msgqueue.h>
+
+#include "mccdatastructures.h"
+
+
+// CLASS DECLARATION
+
+/**
+* CMccPeriodicRunner class declaration
+*/
+class CMccDataSender : public CActive
+ {
+ public:
+
+ static CMccDataSender* NewL();
+
+ ~CMccDataSender();
+
+ public:
+
+ void Send( const TDataMessage& aData );
+
+ public: // From CActive
+
+ void DoCancel();
+ void RunL();
+ TInt RunError(TInt aError);
+
+ private:
+ CMccDataSender();
+ void ConstructL(); // second construction phase
+
+ private:
+
+ RMsgQueue<TDataMessage> iMsgQueue;
+ TDataMessage iBuffer;
+
+ };
+
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/mccdatastructures.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2006 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 MCCDATASTRUCTURES_H
+#define MCCDATASTRUCTURES_H
+
+#include <E32Base.h>
+
+enum TDataId
+{
+ EUninitialized,
+ EInitComplete,
+ EEstablish,
+ EProceeding,
+ EEstablished,
+ ETerminate,
+ ETerminated
+};
+
+class TDataMessage
+{
+public:
+ TDataId iDataId;
+ TInt iDataIntValue;
+ TBuf<50> iDataBufValue;
+
+};
+
+
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/mccscreen.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,282 @@
+/*
+* Copyright (c) 2006 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 MCCSCREEN_H
+#define MCCSCREEN_H
+
+#include <w32std.h>
+#include "svptimerobserver.h"
+
+class CCamera;
+class MCameraDirectViewFinder;
+class CSVPTimer;
+
+/**
+* Screen for viewfinder, may use bitmap viewfinder or direct viewfinder
+* depending on supported camera vf modes.
+*
+*/
+class CMccScreen : public CBase
+ {
+
+ public:
+
+ enum TMccScreenType
+ {
+ EBitmapScreen,
+ EDirectScreen
+ };
+
+ public:
+
+ static CMccScreen* NewL( CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority,
+ TBool aSecondary,
+ RDrawableWindow* aParentWindow = 0);
+
+ ~CMccScreen();
+
+
+
+ public:
+
+ virtual void StartL();
+
+ virtual void Stop();
+
+ virtual void Draw( CFbsBitmap& aFrame );
+
+ virtual TInt SetCamera( CCamera* aCamera );
+
+ void SetPrimaryRectL(TRect aRect);
+ void SetSecondaryRectL(TRect aRect);
+
+ void Update(TBool aIsForeground);
+
+ protected:
+
+ void StopCamera();
+
+ TBool VfStartPossible();
+
+ void ConstructL();
+
+ CMccScreen( TMccScreenType aScreenType,
+ CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority,
+ TBool aSecondary = EFalse,
+ RDrawableWindow* aParentWindow = 0);
+
+ protected:
+
+ CCamera* iCamera;
+ TInt iDeviceIndex;
+ TPoint iPosition;
+ TSize iArea;
+ TInt iWindowOrdinalPosition;
+ TInt iWindowOrdinalPriority;
+
+ RWsSession iRwSession;
+ RWindowGroup* iRwGroup;
+ RWindow* iRw;
+ CWsScreenDevice* iDev;
+
+ CWindowGc* iGraphicsContext;
+
+ TMccScreenType iScreenType;
+
+ TBool iSecondary;
+ TRect iPrimaryRect;
+ TRect iSecondaryRect;
+
+ RDrawableWindow* iParentWindow;
+
+
+
+#ifdef TEST_EUNIT
+ friend class UT_CMccCameraHandler;
+ friend class UT_CMccScreen;
+#endif
+
+};
+
+/**
+* Bitamp viewfinder screen. Uses DSA to draw vf bitmaps.
+*
+*/
+class CMccScreenBitmap : public CMccScreen,
+ public MDirectScreenAccess,
+ public MSVPTimerObserver
+ {
+
+ public:
+
+ static CMccScreenBitmap* NewL( CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority,
+ TBool aSecondary,
+ RDrawableWindow* aParentWindow = 0);
+
+ ~CMccScreenBitmap();
+
+ public: // From CMccScreen
+
+ virtual void StartL();
+
+ virtual void Stop();
+
+ virtual void Draw( CFbsBitmap& aFrame );
+
+ void TimedOut( TInt aTimerId );
+
+ private:
+
+ void ConstructL();
+
+ CMccScreenBitmap( CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority,
+ TBool aSecondary,
+ RDrawableWindow* aParentWindow = 0);
+
+ void Restart( RDirectScreenAccess::TTerminationReasons aReason );
+
+ void AbortNow( RDirectScreenAccess::TTerminationReasons aReason );
+
+ void StartCameraL();
+
+ void StartDsaL();
+
+ TPoint UpdateViewFinderArea( TSize aViewFinderImageSize );
+
+ void DoDraw( CFbsBitmap& aFrame );
+
+ void DoScreenDeviceUpdate();
+
+ void AttachFrameL( CFbsBitmap* aFrame );
+
+ void DetachFrame();
+
+ void StoreFrameDataL( CFbsBitmap& aFrame );
+
+ CFbsBitmap* RestoreFrameLC();
+
+ void DrawBlackBorders();
+
+ private:
+
+ CDirectScreenAccess* iDirectScreenAccess;
+ CFbsBitGc* iGc;
+ RRegion* iRegion;
+ CFbsScreenDevice* iFbsDev;
+
+ TRect iViewFinderImageRect;
+
+ TBool iFirstImageDrawn;
+
+ CFbsBitmap* iAttachedFrame;
+
+ TBool iAborted;
+
+ TSize iPausedFrameSize;
+ TDisplayMode iPausedFrameDisplayMode;
+ HBufC8* iPausedFrameData;
+
+ TBool iStopped;
+
+ CSVPTimer* iTimer;
+
+
+#ifdef TEST_EUNIT
+ friend class UT_CMccCameraHandler;
+ friend class UT_CMccScreen;
+#endif
+
+ };
+
+/**
+* Direct viewfinder screen.
+*
+*/
+class CMccScreenDirect : public CMccScreen
+ {
+
+ public:
+
+ static CMccScreenDirect* NewL( CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority );
+
+ ~CMccScreenDirect();
+
+
+
+ public: // From CMccScreen
+
+ virtual void StartL();
+
+ virtual void Stop();
+
+ virtual TInt SetCamera( CCamera* aCamera );
+
+ private:
+
+ void ConstructL();
+
+ CMccScreenDirect(
+ CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority );
+
+ void StartDirectViewFinderL();
+
+ TInt HandleDirectViewFinder();
+
+ private:
+
+ MCameraDirectViewFinder* iDirectViewFinder;
+
+#ifdef TEST_EUNIT
+ friend class UT_CMccCameraHandler;
+ friend class UT_CMccScreen;
+#endif
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musengcamerahandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* 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 MUSHENGCAMERAHANDLER_H
+#define MUSHENGCAMERAHANDLER_H
+
+// USER
+#include "lccameracontrol.h"
+#include "lcbrightnesscontrol.h"
+#include "lczoomcontrol.h"
+
+// SYSTEM
+#include <e32base.h>
+#include <ecam.h>
+
+class CMusEngMceSession;
+
+// CLASS
+
+class TMusEngCameraHandler :
+ public MLcCameraControl,
+ public MLcBrightnessControl,
+ public MLcZoomControl
+ {
+
+ public: // From MLcCameraControl
+
+ TInt LcCameraCountL();
+
+ TInt CurrentLcCameraIndex();
+
+ void ToggleLcCameraL();
+
+ public: // From MLcBrightnessControl
+
+ TInt MinLcBrightnessL();
+
+ TInt MaxLcBrightnessL();
+
+ TInt LcBrightnessL();
+
+ void SetLcBrightnessL( TInt aValue );
+
+ void IncreaseLcBrightnessL();
+
+ void DecreaseLcBrightnessL();
+
+ public: // From MLcZoomControl
+
+ TInt MinLcZoomL();
+
+ TInt MaxLcZoomL();
+
+ TInt LcZoomValueL();
+
+ void SetLcZoomValueL( TInt aValue );
+
+ void LcZoomInL();
+
+ void LcZoomOutL();
+
+ public:
+
+ TMusEngCameraHandler();
+
+ TInt ZoomStepSize( TInt64& aTime );
+
+ void SetSession( CMusEngMceSession* aSession );
+
+ TBool IsPlayingL();
+ void PlayL();
+ void PauseL();
+
+
+ private:
+
+ enum TCurrentCamera
+ {
+ ECameraNotAvailable = KErrNotFound,
+ EBackCamera = 0,
+ EFrontCamera = 1
+ };
+
+
+ private: // Data
+
+
+ TCameraInfo iCameraInfo;
+
+ TInt iDefaultBrightness;
+
+ TInt64 iZoomInTime;
+
+ TInt64 iZoomOutTime;
+
+ TInt iSmallZoomStep;
+
+ TInt iBigZoomStep;
+
+ TCurrentCamera iCurrentCamera;
+
+ CMusEngMceSession* iMusSession;
+ TBool iPlaying;
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musengdisplayhandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* 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 MUSHENGDISPLAYHANDLER_H
+#define MUSHENGDISPLAYHANDLER_H
+
+
+#include <e32std.h>
+
+// CLASS DECLARATION
+
+/**
+* An Interface for display services
+*
+* @lib museng.lib
+* @since S60 v3.2
+*/
+class MMusEngDisplayHandler
+ {
+
+ public:
+
+ /*
+ * Defines possible rotations
+ */
+ enum TDisplayOrientation
+ {
+ EPortrait, // Normal
+ ELandscape // 90 degree's clockwise rotation
+ };
+
+ /**
+ * Returns currently assigned drawing area
+ *
+ * @return TRect This session drawing area rectangle
+ */
+ virtual TRect Rect() const = 0;
+
+ /**
+ * Sets new drawing area
+ *
+ * @param TRect This session new drawing area rectangle
+ */
+ virtual void SetRectL( const TRect& aRect ) = 0;
+
+ /**
+ * Sets secondary rect (e.g. viewfinder in twoway session)
+ * @param TRect This session new secondary drawing area rectangle
+ */
+ virtual void SetSecondaryRectL( const TRect& aSecondaryRect ) = 0;
+
+ /**
+ * Gets secondary rect.
+ * @return TRect This session secondary drawing area rectangle
+ */
+ virtual TRect SecondaryRect() const = 0;
+
+ /**
+ * Enables or disables display. Call to this function is considered
+ * as a permission or denial to draw to the display.
+ */
+ virtual void EnableDisplayL( TBool aEnable ) = 0;
+
+ /**
+ * Check whether display is enabled
+ */
+ virtual TBool IsDisplayEnabled() = 0;
+
+ /**
+ * Returns current display orientation.
+ *
+ * @pre Session is ongoing
+ * @return Current display orientation
+ * @leave KErrNotReady if precondition is not fullfilled
+ */
+ virtual TDisplayOrientation OrientationL() = 0;
+
+ /**
+ * Sets display orientation.
+ *
+ * @pre Session is ongoing
+ * @return Sets display orientation
+ * @leave KErrNotReady if precondition is not fullfilled
+ */
+ virtual void SetOrientationL( TDisplayOrientation aOrientation ) = 0;
+
+ /**
+ * Check if display is actively displaying content
+ * @return ETrue if is displaying content, otherwise EFalse
+ */
+ virtual TBool IsDisplayActive() = 0;
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musenglivevideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2009 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 MUSHENGLIVEVIDEOPLAYER_H
+#define MUSHENGLIVEVIDEOPLAYER_H
+
+// INCLUDES
+#include "musenglocalvideoplayer.h"
+#include "lcdestinationfilecontrol.h"
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class TMusEngCameraHandler;
+
+// CLASS DECLARATION
+class CMusEngLiveVideoPlayer :
+ public CMusEngLocalVideoPlayer,
+ public MLcDestinationFileControl
+ {
+ public: // Constructors and destructor
+
+ static CMusEngLiveVideoPlayer* NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ ~CMusEngLiveVideoPlayer();
+
+ public: // From MLcVideoPlayer
+
+ TBool LcIsPlayingL();
+
+ void LcPlayL();
+
+ void LcPauseL();
+
+ MLcCameraControl* LcCameraControl();
+
+ MLcDestinationFileControl* LcDestinationFileControl();
+
+ MLcZoomControl* LcZoomControl();
+
+ MLcBrightnessControl* LcBrightnessControl();
+
+ public: // From MLcDestinationFileControl
+
+ void SetLcFileNameL( const TFileName& aFileName );
+
+ TFileName& LcFileName();
+
+ void LcRecordL( TBool aRecord );
+
+ TBool LcIsRecording();
+
+ private: // Constructors
+
+ CMusEngLiveVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ private: // Data
+
+ TFileName iFileName;
+ TMusEngCameraHandler& iCameraHandler;
+ };
+
+#endif // MUSHENGLIVEVIDEOPLAYER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musenglocalvideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2009 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 MUSHENGLOCALVIDEOPLAYER_H
+#define MUSHENGLOCALVIDEOPLAYER_H
+
+// INCLUDES
+#include "musengvideoplayerbase.h"
+
+// CLASS DECLARATION
+class CMusEngLocalVideoPlayer : public CMusEngVideoPlayerBase
+ {
+ public: // Constructors and destructor
+
+ ~CMusEngLocalVideoPlayer();
+
+ public: // from CMusEngVideoPlayerBase
+
+ TLcVideoPlayerState LcVideoPlayerState() const;
+
+ void SetLcWindowRectL( TRect aRect );
+
+ TRect LcWindowRect();
+
+ TLcVideoPlayerState iState;
+
+ protected: // Constructors
+
+ CMusEngLocalVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+ };
+
+#endif // MUSHENGLOCALVIDEOPLAYER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musenglogger.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,301 @@
+/*
+* Copyright (c) 2006 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: ?Description
+*
+*/
+
+
+#ifndef MUSENGLOGGER_H
+#define MUSENGLOGGER_H
+
+
+#include "muslogger.h"
+
+#if ( !_DEBUG || UNIT_TESTING ) // release or unit test build; no logs
+
+#define MUS_ENG_LOG_SESSION_STATE( aSession )
+#define MUS_ENG_LOG_SESSION_STATE_AND_STATUS( aSession, aStatusCode, aReasonPhrase )
+#define MUS_ENG_LOG_STREAM_STATE( aStream )
+#define MUS_ENG_LOG_SINK_STATES( aStream )
+#define MUS_ENG_LOG_SOURCE_STATE( aSource )
+#define MUS_ENG_LOG_SINK_STATE( aSink )
+#define MUS_ENG_LOG_STATUS( aStatusCode, aReasonPhrase )
+
+#else // debug build; logs
+
+#include <mcesession.h>
+#include <mceaudiostream.h>
+#include <mcecamerasource.h>
+#include <mcefilesource.h>
+#include <mcertpsource.h>
+#include <mcedisplaysink.h>
+#include <mcespeakersink.h>
+#include <mcefilesink.h>
+#include <mcertpsink.h>
+
+#define MUS_ENG_LOG_SESSION_STATE( aSession )\
+ {\
+ TBuf<15> state;\
+ switch ( (aSession).State() )\
+ {\
+ case CMceSession::EIdle:\
+ {\
+ state = _L("EIdle");\
+ break;\
+ }\
+ case CMceSession::EOffering :\
+ {\
+ state = _L("EOffering");\
+ break;\
+ }\
+ case CMceSession::EIncoming:\
+ {\
+ state = _L("EIncoming");\
+ break;\
+ }\
+ case CMceSession::EReserving :\
+ {\
+ state = _L("EReserving");\
+ break;\
+ }\
+ case CMceSession::EAnswering :\
+ {\
+ state = _L("EAnswering");\
+ break;\
+ }\
+ case CMceSession::EProceeding :\
+ {\
+ state = _L("EProceeding");\
+ break;\
+ }\
+ case CMceSession::EEstablished:\
+ {\
+ state = _L("EEstablished");\
+ break;\
+ }\
+ case CMceSession::ECancelling:\
+ {\
+ state = _L("ECancelling");\
+ break;\
+ }\
+ case CMceSession::ETerminating:\
+ {\
+ state = _L("ETerminating");\
+ break;\
+ }\
+ case CMceSession::ETerminated:\
+ {\
+ state = _L("ETerminated");\
+ break;\
+ }\
+ default:\
+ {\
+ state = _L("Unknown");\
+ break;\
+ }\
+ }\
+ MUS_LOG_TDESC( "mus: [ENGINE] Session state is ", state )\
+ }
+
+
+#define MUS_ENG_LOG_SESSION_STATE_AND_STATUS( aSession, aStatusCode, aReasonPhrase )\
+ {\
+ MUS_ENG_LOG_SESSION_STATE( aSession )\
+ MUS_ENG_LOG_STATUS( aStatusCode, aReasonPhrase )\
+ }
+
+
+#define MUS_ENG_LOG_STREAM_STATE( aStream )\
+ {\
+ TBuf<20> streamState;\
+ switch ( (aStream).State() )\
+ {\
+ case CMceMediaStream::EUninitialized:\
+ {\
+ streamState = _L("EIdle");\
+ break;\
+ }\
+ case CMceMediaStream::EInitialized:\
+ {\
+ streamState = _L("EInitialized");\
+ break;\
+ }\
+ case CMceMediaStream::EBuffering:\
+ {\
+ streamState = _L("EBuffering");\
+ break;\
+ }\
+ case CMceMediaStream::EIdle:\
+ {\
+ streamState = _L("EIdle");\
+ break;\
+ }\
+ case CMceMediaStream::EStreaming:\
+ {\
+ streamState = _L("EStreaming");\
+ break;\
+ }\
+ case CMceMediaStream::EDisabled:\
+ {\
+ streamState = _L("EDisabled");\
+ break;\
+ }\
+ case CMceMediaStream::ENoResources:\
+ {\
+ streamState = _L("ENoResources");\
+ break;\
+ }\
+ case CMceMediaStream::ETranscodingRequired:\
+ {\
+ streamState = _L("ETranscodingRequired");\
+ break;\
+ }\
+ case CMceMediaStream::ETranscoding:\
+ {\
+ streamState = _L("ETranscoding");\
+ break;\
+ }\
+ default:\
+ {\
+ streamState = _L("Unknown");\
+ break;\
+ }\
+ }\
+ if ( (aStream).Type() == KMceAudio )\
+ {\
+ MUS_LOG_TDESC( "mus: [ENGINE] AudioStream state is ", streamState )\
+ }\
+ else\
+ {\
+ MUS_LOG_TDESC( "mus: [ENGINE] VideoStream state is ", streamState )\
+ }\
+ MUS_ENG_LOG_SOURCE_STATE( (aStream).Source() )\
+ MUS_ENG_LOG_SINK_STATES( (aStream) )\
+ }
+
+
+#define MUS_ENG_LOG_SINK_STATES( aStream )\
+ {\
+ for ( TInt sinkIndex = 0; sinkIndex < aStream.Sinks().Count(); ++sinkIndex )\
+ {\
+ MUS_ENG_LOG_SINK_STATE( aStream.Sinks()[ sinkIndex ] )\
+ }\
+ }
+
+
+#define MUS_ENG_LOG_SOURCE_STATE( aSource )\
+ {\
+ if ( aSource )\
+ {\
+ TBuf<10> sourceState;\
+ if ( aSource->IsEnabled() )\
+ {\
+ sourceState = _L("enabled");\
+ }\
+ else\
+ {\
+ sourceState = _L("disabled");\
+ }\
+ switch ( aSource->Type() )\
+ {\
+ case KMceCameraSource:\
+ {\
+ MUS_LOG_TDESC( " CameraSource is ", sourceState )\
+ break;\
+ }\
+ case KMceFileSource:\
+ {\
+ MUS_LOG_TDESC( " FileSource is ", sourceState )\
+ break;\
+ }\
+ case KMceRTPSource:\
+ {\
+ MUS_LOG_TDESC( " RtpSource is ", sourceState )\
+ break;\
+ }\
+ default:\
+ {\
+ MUS_LOG_TDESC( " UnknownSource is ", sourceState )\
+ break;\
+ }\
+ }\
+ }\
+ else\
+ {\
+ MUS_LOG( " No source in stream" )\
+ }\
+ }
+
+#define MUS_ENG_LOG_SINK_STATE( aSink )\
+ {\
+ if ( aSink )\
+ {\
+ TBuf<10> sinkState;\
+ if ( aSink->IsEnabled() )\
+ {\
+ sinkState = _L("enabled");\
+ }\
+ else\
+ {\
+ sinkState = _L("disabled");\
+ }\
+ switch ( aSink->Type() )\
+ {\
+ case KMceDisplaySink:\
+ {\
+ MUS_LOG_TDESC( " DisplaySink is ", sinkState )\
+ break;\
+ }\
+ case KMceSpeakerSink:\
+ {\
+ MUS_LOG_TDESC( " SpeakerSink is ", sinkState )\
+ break;\
+ }\
+ case KMceRTPSink:\
+ {\
+ MUS_LOG_TDESC( " RtpSink is ", sinkState )\
+ break;\
+ }\
+ case KMceFileSink:\
+ {\
+ MUS_LOG_TDESC( " FileSink is ", sinkState )\
+ break;\
+ }\
+ default:\
+ {\
+ MUS_LOG_TDESC( " UnknownSink is ", sinkState )\
+ break;\
+ }\
+ }\
+ }\
+ }
+
+
+#define MUS_ENG_LOG_STATUS( aStatusCode, aReasonPhrase )\
+ {\
+ MUS_LOG1( " StatusCode is %d", aStatusCode )\
+ HBufC16* reasonPhrase = HBufC16::NewLC( aReasonPhrase.Length() );\
+ reasonPhrase->Des().Copy( aReasonPhrase );\
+ MUS_LOG_TDESC( " ReasonPhrase is ",(*reasonPhrase) )\
+ CleanupStack::PopAndDestroy( reasonPhrase );\
+ }
+
+
+
+#endif // _DEBUG
+
+
+#endif // MUSENGLOGGER_H
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musengmcesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,295 @@
+/*
+* 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 MUSENGMCESESSION_H
+#define MUSENGMCESESSION_H
+
+// USER
+#include "musengcamerahandler.h"
+#include "musengdisplayhandler.h"
+#include "lcsession.h"
+#include "lcaudiocontrol.h"
+#include "svptimerobserver.h"
+
+#include <e32base.h>
+
+#include <lcvtindicatorcontroller.h>
+
+
+// FORWARD DECLARATIONS
+class CContactTextField;
+class CPbkContactItem;
+class CPbkContactEngine;
+class MLcSessionObserver;
+class CMusEngLiveVideoPlayer;
+class CMusEngRemoteVideoPlayer;
+class CSVPTimer;
+class CMccScreen;
+
+
+// CONSTANTS
+
+_LIT8( KMusEngAcceptContactHeader,
+ "Accept-Contact: *;+g.3gpp.cs-voice; explicit" );
+_LIT8( KMusAcceptHeader,
+ "Accept: application/sdp" );
+_LIT8( KMusEngSessionSdpLineXApplication, "a=X-application:com.nokia.rtvs\r\n" );
+_LIT8( KMusEngSessionSdpLineApplication , "a=application:com.gsma.rts\r\n" );
+_LIT8( KMusEngSessionSdpLineType, "a=type:videolive\r\n" );
+_LIT8( KMusEngSessionSdpLineBandwidthLine , "b=AS:" );
+_LIT8( KMusEngSessionSdpLineBandwidthField , "b=AS:85\r\n" );
+_LIT8( KMusEngSessionSdpLineTiasLine , "b=TIAS:" );
+_LIT8( KMusPPreferredIdentity, "P-Preferred-Identity" );
+_LIT8( KMusEngNewLine , "\r\n" );
+
+const TInt KMusTiasMultiplier = 1000;
+const TUint8 KMusEngRtpKeepAliveTimer = 5;
+const TUint8 KMusEngKeepAlivePayloadTypeVideoH263 = 96;
+const TUint8 KMusEngKeepAlivePayloadTypeAudio = 97;
+const TUint8 KMusEngKeepAlivePayloadTypeVideoAvc = 98;
+
+// CLASS DECLARATION
+
+/**
+* Base class for Multimedia Sharing Engine MCE sessions, inherited by
+* CMusEngLiveSession CMusEngClipSession and CMusEngReceiveSession.
+*
+* CMusEngMceSession encapsulates CMCESession and simplifies use of
+* MCE Sessions to user interface. Also splits observers messy events
+* to simplified function calls.
+*
+* @lib musengine.lib
+*/
+class CMusEngMceSession : public CBase,
+ public MLcSession,
+ public MLcAudioControl,
+ public MMusEngDisplayHandler,
+ public MSVPTimerObserver
+ {
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngMceSession();
+
+ void SetRemoteL( const TDesC& aRemote );
+ void ToggleCameraL();
+ void PlayCameraL();
+ void PauseCameraL();
+ void InformUiProviderAboutReceivingStart();
+
+ public: // from MSVPTimerObserver
+
+ virtual void TimedOut( TInt aTimerId );
+
+
+ public: // from MMusEngDisplayHandler
+
+ /**
+ * Returns currently assigned drawing area
+ *
+ * @return TRect This session drawing area rectangle
+ */
+ TRect Rect() const;
+
+ /**
+ * Sets new drawing area
+ *
+ * @param TRect This session new drawing area rectangle
+ */
+ void SetRectL( const TRect& aRect );
+
+ /**
+ * Sets secondary rect (e.g. viewfinder in twoway session)
+ * @param TRect This session new secondary drawing area rectangle
+ */
+ void SetSecondaryRectL( const TRect& aSecondaryRect );
+
+ /**
+ * Gets secondary rect.
+ * @return TRect This session secondary drawing area rectangle
+ */
+ virtual TRect SecondaryRect() const;
+
+ /**
+ * Returns current display orientation.
+ *
+ * @pre Session is ongoing
+ * @return Current display orientation
+ * @leave KErrNotReady if precondition is not fullfilled
+ */
+ TDisplayOrientation OrientationL();
+
+ /**
+ * Sets display orientation.
+ *
+ * @pre Session is ongoing
+ * @return Sets display orientation
+ * @leave KErrNotReady if precondition is not fullfilled
+ */
+ void SetOrientationL( TDisplayOrientation aOrientation );
+
+ /**
+ * Permission to draw on screen device.
+ *
+ * @pre Session is ongoing
+ */
+ void EnableDisplayL( TBool aEnable );
+
+ /**
+ * Implements virtual from MMusEngDisplayHandler
+ *
+ * @pre Session is ongoing
+ */
+ TBool IsDisplayEnabled();
+
+ /**
+ * Implements virtual from MMusEngDisplayHandler
+ *
+ * @pre Session is ongoing
+ */
+ TBool IsDisplayActive();
+
+
+ public: // From MMusEngAudioRoutingObserver
+
+ void AudioRoutingChanged();
+
+
+ public: // From MLcSession
+
+ virtual TLcSessionState LcSessionState() const;
+
+ void SetLcSessionObserver( MLcSessionObserver* aObserver );
+
+ void SetLcUiProvider( MLcUiProvider* aUiProvider );
+
+ virtual MLcVideoPlayer* RemoteVideoPlayer();
+
+ virtual MLcVideoPlayer* LocalVideoPlayer();
+
+ virtual const TDesC& LocalDisplayName();
+
+ virtual const TDesC& RemoteDisplayName();
+
+ TInt SetParameter( TInt aId, TInt aValue );
+
+ TInt ParameterValue( TInt aId );
+
+ TBool IsBackgroundStartup();
+
+ TInt SetForegroundStatus( TBool aIsForeground );
+
+ const TDesC& RemoteDetails();
+
+ TBool SendDialTone( TChar aKey);
+
+
+ public: // From MLcAudioControl
+
+ TBool IsLcAudioMutedL();
+
+ void MuteLcAudioL( TBool aMute );
+
+ TBool IsLcMicMutedL();
+
+ void MuteLcMicL( TBool aMute );
+
+ TBool IsEnablingLcLoudspeakerAllowed();
+
+ void EnableLcLoudspeakerL( TBool aEnabled );
+
+ TBool IsLcLoudspeakerEnabled();
+
+ TInt LcVolumeL();
+
+ void SetLcVolumeL( TInt aValue );
+
+ void IncreaseLcVolumeL();
+
+ void DecreaseLcVolumeL();
+
+
+ protected: // CONSTRUCTORS
+
+ /**
+ * Constructor
+ *
+ */
+ CMusEngMceSession();
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ protected: // Data
+
+ /**
+ * Drawing area rect.
+ */
+ TRect iRect;
+
+ /**
+ * ETrue if operator specific behavior is expected
+ */
+ TBool iOperatorVariant;
+
+ /**
+ * Session state for MLcSession
+ */
+ MLcSession::TLcSessionState iLcSessionState;
+
+ TMusEngCameraHandler iCameraHandler;
+
+ CMusEngLiveVideoPlayer* iLiveVideoPlayer;
+ CMusEngRemoteVideoPlayer* iRemoteVideoPlayer;
+ TRect iSetRemoteRect;
+ TRect iSetLocalRect;
+ CSVPTimer* iTimer;
+ TLcSessionState lLcSessionState;
+ HBufC* iRemoteAddress;
+ CMccScreen* iScreen;
+
+ private: // Data
+
+ /**
+ * The session observer, if present.
+ */
+ MLcSessionObserver* iLcSessionObserver;
+
+ /**
+ * The UI provider, if present.
+ */
+ MLcUiProvider* iLcUiProvider;
+
+ /**
+ * Value indicates whether session was started in background mode.
+ * (see IsBackgroundStartup()). Once sending of video started,
+ * iBackground is set to EFalse
+ */
+ TBool iBackground;
+
+ // indicator control
+ LcVtIndicatorController* iIndicatorCtr;
+
+
+ };
+
+#endif // MUSENGMCESESSION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musengremotevideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2009 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 MUSHENGREMOTEVIDEOPLAYER_H
+#define MUSHENGREMOTEVIDEOPLAYER_H
+
+// INCLUDES
+#include <e32base.h>
+#include "musengvideoplayerbase.h"
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class MLcWindow;
+class MLcAudioControl;
+
+// CLASS DECLARATION
+class CMusEngRemoteVideoPlayer : public CMusEngVideoPlayerBase
+ {
+ public: // Constructors and destructor
+
+ static CMusEngRemoteVideoPlayer* NewL( MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ ~CMusEngRemoteVideoPlayer();
+
+
+ public: // from CMusEngVideoPlayerBase
+
+ TLcVideoPlayerState LcVideoPlayerState() const;
+
+ TBool LcIsPlayingL();
+
+ TLcVideoPlayerState iState;
+
+ private: // Constructors
+
+ CMusEngRemoteVideoPlayer( MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+ void ConstructL();
+
+ private: // Data
+
+ };
+
+#endif // MUSHENGREMOTEVIDEOPLAYER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musengsessionmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2009 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 CMUSENGSESSIONMANAGER_H
+#define CMUSENGSESSIONMANAGER_H
+
+// INCLUDES
+#include "lcengine.h"
+#include "mccdatareceiverobserver.h"
+
+// FORWARD DECLARATIONS
+class MLcSession;
+class CMusEngMceSession;
+class MLcUiProvider;
+class CMccDataReceiver;
+class CMccDataSender;
+
+class CMusEngSessionManager : public CLcEngine, public MMccDataReceiverObserver
+ {
+ public:
+
+ static CMusEngSessionManager* NewL();
+ ~CMusEngSessionManager();
+
+ void DataReceived( const TDataMessage& aData );
+
+ public: // From CLcEngine
+
+ MLcSession& Session();
+
+ TBool IsFeatureSupported( TLcFeature aLcFeature );
+
+ private: // Constructors
+
+ CMusEngSessionManager();
+ void ConstructL();
+
+ private: // Data
+
+ CMusEngMceSession* iSession;
+
+ CMccDataReceiver* iMsgReceiver;
+ CMccDataSender* iMsgSender;
+
+ private: // Constants
+
+ static const int VTSETTING_ALWAYS_ASK_FIRST = 0;
+ static const int VTSETTING_DO_NOT_SHOW = 1;
+ static const int VTSETTING_SHOW_AUTOMATICALLY = 2;
+
+ };
+
+#endif // CMUSENGSESSIONMANAGER_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musengtwowayrecvsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,141 @@
+/*
+* 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 MUSHENGTWOWAYRECVSESSION_H
+#define MUSHENGTWOWAYRECVSESSION_H
+
+// USER
+#include "musengreceivesession.h"
+#include "musunittesting.h"
+#include "mussettings.h"
+#include "musengcamerahandler.h"
+
+// SYSTEM
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class CMceDisplaySink;
+class CMceStreamBundle;
+class CMusEngLiveVideoPlayer;
+
+
+class CMusEngTwoWayRecvSession : public CMusEngReceiveSession
+ {
+ MUS_UNITTEST( UT_CMusEngTwoWayRecvSession )
+
+
+ public:
+ /**
+ * Creates new MultimediaSharing two-way receive session.
+ * @return CMusEngTwoWayRecvSession* New instanse of specified class
+ */
+ static CMusEngTwoWayRecvSession* NewL();
+
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngTwoWayRecvSession();
+
+ public:
+
+ void EnableDisplayL( TBool aEnable );
+
+ CMusEngMceSession::TDisplayOrientation OrientationL();
+
+ void SetOrientationL( TDisplayOrientation aOrientation );
+
+ public:
+
+ /**
+ * Sets both remote (receiving video) and local (viewfinder) rects.
+ *
+ */
+ void SetRectsL( const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ /**
+ * Gets camera handler (can be used for zooming etc.)
+ */
+ TMusEngCameraHandler& Camera();
+
+ public: // from MLcSession
+
+ MLcVideoPlayer* LocalVideoPlayer();
+
+ protected: // From CMusEngReceiveSession
+
+ /**
+ * Sets local rect (viewfinder).
+ *
+ */
+ void SetSecondaryRectL( const TRect& aSecondaryRect );
+
+ /**
+ * Gets local rect (viewfinder).
+ *
+ */
+ TRect SecondaryRect() const;
+
+ void CompleteSessionStructureL();
+
+ void RectChangedL();
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMusEngTwoWayRecvSession();
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ private:
+
+ void CompleteSessionStructureAudioPartL(
+ const RPointerArray<CMceMediaStream>& aStreams,
+ CMceStreamBundle& aLocalBundle,
+ CMceMediaStream* aVideoInStream,
+ CMceMediaStream* aVideoOutStream );
+
+ void CompleteSessionStructureInStreamL( CMceMediaStream& aVideoInStream,
+ CMceStreamBundle& aLocalBundle );
+
+ void CompleteSessionStructureOutStreamL( CMceMediaStream& aVideoOutStream );
+
+
+ private:
+
+ TRect iLocalRect;
+
+ TMusEngCameraHandler iCameraHandler;
+
+ /// The live video player implementing MLcVideoPlayer
+ CMusEngLiveVideoPlayer* iLiveVideoPlayer;
+
+ TRect iSetRemoteRect;
+ TRect iSetLocalRect;
+
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musengtwowaysession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,88 @@
+/*
+* 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 MUSHENGTWOWAYSESSION_H
+#define MUSHENGTWOWAYSESSION_H
+
+// USER
+#include "musengmcesession.h"
+
+// SYSTEM
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class MMusEngLiveSessionObserver;
+class CMceDisplaySink;
+class MMusEngTwoWaySessionObserver;
+class CMusEngRemoteVideoPlayer;
+
+
+class CMusEngTwoWaySession : public CMusEngMceSession
+ {
+ public:
+ /**
+ * Creates new MultimediaSharing Live session.
+ * @return CMusEngTwoWaySession* New instanse of specified class
+ */
+ static CMusEngTwoWaySession* NewL();
+
+
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngTwoWaySession();
+
+ public:
+
+ void EnableDisplayL( TBool aEnable );
+
+ void SetOrientationL( MMusEngDisplayHandler::TDisplayOrientation aOrientation );
+
+ void EstablishLcSessionL();
+
+ void TerminateLcSessionL();
+
+ void UpdateLcSessionL();
+
+ public:
+
+ /**
+ * Sets both remote (receiving video) and local (viewfinder) rects.
+ *
+ */
+ void SetRectsL( const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMusEngTwoWaySession();
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/musengvideoplayerbase.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* Copyright (c) 2009 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 MUSHENGVIDEOPLAYERBASE_H
+#define MUSHENGVIDEOPLAYERBASE_H
+
+// INCLUDES
+#include <e32base.h>
+#include "lcvideoplayer.h"
+#include "lcwindow.h"
+
+// FORWARD DECLARATIONS
+class TMusEngCameraHandler;
+class MMusEngDisplayHandler;
+
+// CLASS DECLARATION
+class CMusEngVideoPlayerBase :
+ public CBase, public MLcVideoPlayer, public MLcWindow
+ {
+ public: // Constructors and destructor
+
+ ~CMusEngVideoPlayerBase();
+
+ public: // From MLcVideoPlayer
+
+ virtual void LcPlayL(MLcVideoPlayer::TLcVideoPlayerSource aSource);
+
+ virtual void LcPauseL();
+
+ MLcWindow* LcWindow();
+
+ virtual MLcCameraControl* LcCameraControl();
+
+ virtual MLcSourceFileControl* LcSourceFileControl();
+
+ virtual MLcDestinationFileControl* LcDestinationFileControl();
+
+ MLcAudioControl* LcAudioControl();
+
+ virtual MLcZoomControl* LcZoomControl();
+
+ virtual MLcBrightnessControl* LcBrightnessControl();
+
+ virtual MLcVideoPlayer::TLcVideoPlayerSource LcVideoPlayerSourceL();
+
+
+ public: // from MLcWindow
+
+ void EnableLcWindowL( TBool aEnable );
+
+ TBool IsLcWindowEnabled();
+
+ void SetLcWindowRectL( TRect aRect );
+
+ TRect LcWindowRect();
+
+ void SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation );
+
+ TLcWindowOrientation LcWindowOrientationL();
+
+ protected: // Constructors
+
+ CMusEngVideoPlayerBase(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ protected: // Data
+
+ MMusEngDisplayHandler& iDisplayHandler;
+ MLcAudioControl& iLcAudioControl;
+ MLcVideoPlayer::TLcVideoPlayerSource iVideoPlayerSource;
+ };
+
+#endif // MUSHENGVIDEOPLAYERBASE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/svptimer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,112 @@
+/*
+* 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: Timer services for SVP
+*
+*/
+
+
+
+#ifndef SVPTIMER_H
+#define SVPTIMER_H
+
+#include <e32base.h>
+
+class MSVPTimerObserver;
+
+/**
+ * SVP timer
+ *
+ * Provides timer service for SVP
+ *
+ * @lib
+ * @since S60 3.2
+ */
+class CSVPTimer : public CTimer
+ {
+
+public:
+
+ /**
+ * Two-phased constructor.
+ */
+ static CSVPTimer* NewL( MSVPTimerObserver& aObserver,
+ TInt aTimerId );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CSVPTimer();
+
+public: // new methods
+
+ /**
+ * Sets the timer to be fired after given number of milliseconds.
+ * @since Series 60 3.2
+ * @param aMilliSeconds Time in milliseconds
+ * @return
+ */
+ void SetTime( TInt aMilliSeconds, TInt aTimerId );
+
+ /**
+ * Stops the timer.
+ * @since Series 60 3.2
+ * @return
+ */
+ void Stop();
+
+ /**
+ * Returns the Timer ID
+ * @since Series 60 3.2
+ * @return TInt The timer ID.
+ */
+ TInt Id() const;
+
+public: // methods from base classes
+
+ /**
+ * From CActive Called when an aychronic request is completed.
+ * @since Series 60 3.0
+ * @param None
+ * @return None
+ */
+ void RunL();
+
+private:
+
+ /**
+ * C++ default constructor.
+ */
+ CSVPTimer( MSVPTimerObserver& aObserver, TInt aTimerId );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+private: // data
+
+ /**
+ * Reference to the observer.
+ */
+ MSVPTimerObserver& iObserver;
+
+ /**
+ * The timer ID, given to observer when the timer fires.
+ * Timers can be identifies with this ID.
+ */
+ TInt iId;
+
+ };
+
+#endif // SVPTIMER_H
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/inc/svptimerobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2006 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: Observer for SVP timer
+*
+*/
+
+
+#ifndef SVPTIMEROBSERVER_H
+#define SVPTIMEROBSERVER_H
+
+#include<e32base.h>
+
+/**
+ * SVP timer observer
+ *
+ * Observer for SVP timer
+ *
+ * @lib
+ * @since S60 3.2
+ */
+class MSVPTimerObserver
+ {
+
+public: // New functions
+
+ /**
+ * Notifies, that the previously set timer has now expired.
+ * Implemented by the class using the timer.
+ * @since Series 60 3.2
+ * @param TInt aTimerId The ID of the timer. Observer can identify
+ * timers from each other with this ID.
+ * @return
+ */
+ virtual void TimedOut( TInt aTimerId ) = 0;
+
+
+ };
+
+#endif // SVPTIMEROBSERVER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/mccdatareceiver.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,107 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+// INCLUDE FILES
+#include "mccdatareceiver.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::CMccDataReceiver
+// -----------------------------------------------------------------------------
+//
+CMccDataReceiver::CMccDataReceiver( MMccDataReceiverObserver& aObserver )
+ : CActive( EPriorityStandard ), iObserver( &aObserver )
+ {
+ CActiveScheduler::Add(this);
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMccDataReceiver::ConstructL()
+ {
+
+ TInt err = iMsgQueue.CreateGlobal(_L("IP-VT-Queue2"), 5, EOwnerProcess );
+ if ( err )
+ {
+ User::LeaveIfError( iMsgQueue.OpenGlobal(_L("IP-VT-Queue2")));
+ }
+
+ iMsgQueue.ReceiveBlocking( iInitData );
+
+ iMsgQueue.NotifyDataAvailable( iStatus );
+ SetActive();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::NewL
+// -----------------------------------------------------------------------------
+//
+CMccDataReceiver* CMccDataReceiver::NewL( MMccDataReceiverObserver& aObserver )
+ {
+ CMccDataReceiver* self =
+ new ( ELeave ) CMccDataReceiver( aObserver );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::~CMccDataReceiver
+// -----------------------------------------------------------------------------
+//
+CMccDataReceiver::~CMccDataReceiver()
+ {
+ Cancel();
+ iMsgQueue.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CMccDataReceiver::DoCancel()
+ {
+ iMsgQueue.CancelDataAvailable();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::RunL
+// -----------------------------------------------------------------------------
+//
+void CMccDataReceiver::RunL()
+ {
+ TDataMessage buffer;
+ iMsgQueue.Receive( buffer );
+ iObserver->DataReceived( buffer );
+ iMsgQueue.NotifyDataAvailable( iStatus );
+ SetActive();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataReceiver::RunError
+// -----------------------------------------------------------------------------
+//
+TInt CMccDataReceiver::RunError(TInt /*aError*/)
+ {
+ return KErrNone;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/mccdatasender.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+// INCLUDE FILES
+#include "mccdatasender.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::CMccDataSender
+// -----------------------------------------------------------------------------
+//
+CMccDataSender::CMccDataSender( )
+ : CActive( EPriorityStandard )
+ {
+ CActiveScheduler::Add(this);
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMccDataSender::ConstructL()
+ {
+ TInt err = iMsgQueue.CreateGlobal(_L("IP-VT-Queue1"), 5, EOwnerProcess );
+ if ( err )
+ {
+ User::LeaveIfError( iMsgQueue.OpenGlobal(_L("IP-VT-Queue1")));
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::NewL
+// -----------------------------------------------------------------------------
+//
+CMccDataSender* CMccDataSender::NewL( )
+ {
+ CMccDataSender* self =
+ new ( ELeave ) CMccDataSender();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::Send
+// -----------------------------------------------------------------------------
+//
+void CMccDataSender::Send( const TDataMessage& aData )
+{
+ TInt err = iMsgQueue.Send( aData );
+
+ if ( err == KErrOverflow )
+ {
+ if ( !IsActive() )
+ {
+ iBuffer = aData;
+ iMsgQueue.NotifySpaceAvailable( iStatus );
+ SetActive();
+ }
+ else
+ {
+ // TODO
+ // BUFFER OR DROP
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::~CMccDataSender
+// -----------------------------------------------------------------------------
+//
+CMccDataSender::~CMccDataSender()
+ {
+ Cancel();
+ iMsgQueue.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CMccDataSender::DoCancel()
+ {
+ iMsgQueue.CancelSpaceAvailable();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::RunL
+// -----------------------------------------------------------------------------
+//
+void CMccDataSender::RunL()
+ {
+ iMsgQueue.Send( iBuffer );
+ iBuffer.iDataId = EUninitialized;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccDataSender::RunError
+// -----------------------------------------------------------------------------
+//
+TInt CMccDataSender::RunError(TInt /*aError*/)
+ {
+ return KErrNone;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/mccscreen.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,921 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+#include <bitstd.h>
+#include <ecam.h>
+#include <ecam/mcameradirectviewfinder.h>
+#include <coecntrl.h>
+#include <eikenv.h>
+#include <eikappui.h>
+#include "MccScreen.h"
+#include "svptimer.h"
+#include "musenglogger.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+_LIT(KMccWindowGroupName,"MccVideoWindow");
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMccScreen::NewL
+// -----------------------------------------------------------------------------
+//
+CMccScreen* CMccScreen::NewL( CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority,
+ TBool aSecondary,
+ RDrawableWindow* aParentWindow )
+ {
+ // Resolve screen type based on ecam capabilities, asssume direct vf
+ // to be available if camera not present yet.
+ CMccScreen* screen = NULL;
+ TBool useDirectVf = EFalse;
+
+ if ( aCamera )
+ {
+ TCameraInfo info;
+ aCamera->CameraInfo( info );
+ useDirectVf = ( info.iOptionsSupported & TCameraInfo::EViewFinderDirectSupported );
+ }
+
+ if ( useDirectVf )
+ {
+ TRAPD( err, screen = CMccScreenDirect::NewL(
+ aCamera, aPos, aArea, aIndex,
+ aWindowOrdinalPosition, aWindowOrdinalPriority ) );
+ // If creation failes for some reason, bitmap vf is tried to be
+ // created as a fallback
+ if ( err == KErrNoMemory )
+ {
+ User::Leave( err );
+ }
+ if ( err )
+ {
+ }
+ }
+
+ if ( !screen )
+ {
+ screen = CMccScreenBitmap::NewL(
+ aCamera, aPos, aArea, aIndex,
+ aWindowOrdinalPosition, aWindowOrdinalPriority, aSecondary, aParentWindow );
+ }
+ return screen;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::~CMccScreen
+// -----------------------------------------------------------------------------
+//
+CMccScreen::~CMccScreen()
+ {
+
+ StopCamera();
+
+ delete iGraphicsContext;
+ delete iDev;
+ delete iRw;
+ delete iRwGroup;
+ iRwSession.Close();
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::StartL
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::StartL()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::Stop
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::Stop()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::Draw
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::Draw( CFbsBitmap& /*aFrame*/ )
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::SetCamera
+// -----------------------------------------------------------------------------
+//
+TInt CMccScreen::SetCamera( CCamera* aCamera )
+ {
+ if ( !aCamera )
+ {
+ StopCamera();
+ }
+
+ iCamera = aCamera;
+
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMccScreen::StopCamera
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::StopCamera()
+ {
+
+ if ( iCamera )
+ {
+ iCamera->StopViewFinder();
+ }
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::VfStartPossible
+// -----------------------------------------------------------------------------
+//
+TBool CMccScreen::VfStartPossible()
+ {
+ return ( iCamera && !iCamera->ViewFinderActive() &&
+ iArea.iWidth > 0 &&
+ iArea.iHeight > 0 );
+ }
+
+void CMccScreen::SetPrimaryRectL(TRect aRect)
+ {
+ MUS_LOG2( "mus: [ENGINE] -> CMccScreen::SetPrimaryRectL() (%dx%d)",
+ aRect.Width(), aRect.Height() );
+ MUS_LOG2( "mus: [ENGINE] -> CMccScreen::SetPrimaryRectL() (%d,%d)",
+ aRect.iTl.iX, aRect.iTl.iY );
+ iPrimaryRect = aRect;
+ }
+void CMccScreen::SetSecondaryRectL(TRect aRect)
+ {
+ MUS_LOG2( "mus: [ENGINE] -> CMccScreen::SetSecondaryRectL() (%dx%d)",
+ aRect.Width(), aRect.Height() );
+ MUS_LOG2( "mus: [ENGINE] -> CMccScreen::SetSecondaryRectL() (%d,%d)",
+ aRect.iTl.iX, aRect.iTl.iY );
+ iSecondaryRect = aRect;
+ }
+
+void CMccScreen::Update(TBool aIsForeground)
+ {
+ if ( aIsForeground ){
+
+ iRwGroup->SetOrdinalPosition( iWindowOrdinalPosition, iWindowOrdinalPriority );
+ iRw->SetOrdinalPosition( iWindowOrdinalPosition, iWindowOrdinalPriority );
+ iRw->HandleTransparencyUpdate();
+ iRwSession.Flush();
+ } else {
+
+ }
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMccScreen::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::ConstructL()
+ {
+ User::LeaveIfError( iRwSession.Connect() );
+
+ // Create window group
+
+ iRwGroup = new (ELeave) RWindowGroup( iRwSession ) ;
+
+ RWindowGroup& rootWin = CCoeEnv::Static()->RootWin();
+ rootWin.AllowProcessToCreateChildWindowGroups(TUid::Uid( 0x101F8681 ));
+ TUint32 groupId = rootWin.WindowGroupId(); //iRwSession.GetFocusWindowGroup();
+ TUint32 focusGroupId = iRwSession.GetFocusWindowGroup();
+ //User::LeaveIfError( iRwGroup->ConstructChildApp( groupId, (TUint32)iRwGroup, EFalse ) );
+ User::LeaveIfError( iRwGroup->Construct( (TUint32)iRwGroup, EFalse ) );
+
+ TBuf<100> name;
+ name.Append(KMccWindowGroupName);
+ iRwGroup->SetName( name );
+
+ iRwGroup->SetOrdinalPosition( iWindowOrdinalPosition, iWindowOrdinalPriority );
+ //iRwGroup->SetOrdinalPriorityAdjust(1);
+ iRwGroup->AutoForeground(EFalse);
+
+ // Create screen device
+ iDev = new (ELeave) CWsScreenDevice( iRwSession );
+ iDev->Construct( iDeviceIndex );
+
+ TInt currMode = iDev->CurrentScreenMode();
+ MUS_LOG1( "mus: [ENGINE] -> CMccScreen::ConstructL() mode: %d", currMode );
+ TPixelsTwipsAndRotation sizeAndRotation;
+ iDev->GetScreenModeSizeAndRotation( currMode, sizeAndRotation );
+
+ MUS_LOG3( "mus: [ENGINE] -> CMccScreen::ConstructL() (%dx%d) %d",
+ sizeAndRotation.iPixelSize.iWidth, sizeAndRotation.iPixelSize.iHeight, sizeAndRotation.iRotation );
+
+ // Create window
+ iRw = new (ELeave) RWindow( iRwSession );
+
+ User::LeaveIfError( iRw->Construct( *iRwGroup, (TUint32)iRw ) );
+
+
+ iRw->SetPosition( iPosition );
+
+ iRw->SetSize( iArea );
+ iRw->SetOrdinalPosition( iWindowOrdinalPosition, iWindowOrdinalPriority );
+ iRw->EnableVisibilityChangeEvents();
+
+ User::LeaveIfError( iDev->CreateContext( iGraphicsContext ) );
+
+ iRw->Activate();
+ iRwSession.Flush();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::CMccScreen
+// -----------------------------------------------------------------------------
+//
+CMccScreen::CMccScreen(
+ TMccScreenType aScreenType,
+ CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority,
+ TBool aSecondary,
+ RDrawableWindow* aParentWindow ) :
+ iCamera( aCamera ),
+ iDeviceIndex( aIndex ),
+ iPosition( aPos ),
+ iArea( aArea ),
+ iWindowOrdinalPosition( aWindowOrdinalPosition ),
+ iWindowOrdinalPriority( aWindowOrdinalPriority ),
+ iScreenType( aScreenType ),
+ iSecondary(aSecondary),
+ iParentWindow(aParentWindow)/*,
+ iRwSession(CCoeEnv::Static()->WsSession()),
+ iRwGroup(&CCoeEnv::Static()->RootWin()),
+ iDev(CCoeEnv::Static()->ScreenDevice())*/
+ {
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::CMccScreenBitmap
+// -----------------------------------------------------------------------------
+//
+CMccScreenBitmap* CMccScreenBitmap::NewL(
+ CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority,
+ TBool aSecondary,
+ RDrawableWindow* aParentWindow)
+ {
+ CMccScreenBitmap* self = new ( ELeave ) CMccScreenBitmap( aCamera,
+ aPos,
+ aArea,
+ aIndex,
+ aWindowOrdinalPosition,
+ aWindowOrdinalPriority,
+ aSecondary,
+ aParentWindow);
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::CMccScreenBitmap
+// -----------------------------------------------------------------------------
+//
+CMccScreenBitmap::CMccScreenBitmap(
+ CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority,
+ TBool aSecondary,
+ RDrawableWindow* aParentWindow) :
+ CMccScreen( EBitmapScreen, aCamera, aPos, aArea, aIndex,
+ aWindowOrdinalPosition, aWindowOrdinalPriority, aSecondary, aParentWindow ),
+ iAborted( ETrue )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::CMccScreenBitmap
+// -----------------------------------------------------------------------------
+//
+CMccScreenBitmap::~CMccScreenBitmap()
+ {
+
+ DetachFrame(); // Must do bitmap detach before releasing window resources
+ delete iDirectScreenAccess;
+
+ delete iPausedFrameData;
+ delete iTimer;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::ConstructL()
+ {
+ iTimer = CSVPTimer::NewL( *this, 1 );
+
+ CMccScreen::ConstructL();
+
+ // Create direct screen access
+ //iDirectScreenAccess = CDirectScreenAccess::NewL( iRwSession, *iDev, *iRw, *this );
+
+ UpdateViewFinderArea( iArea );
+
+ StartL(); // Simu HACK
+ iTimer->SetTime(500, 1);
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::StartL
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::StartL()
+ {
+ iStopped = EFalse;
+
+ if ( iCamera )
+ {
+ StartCameraL();
+ }
+ else if ( iPausedFrameData )
+ {
+
+ CFbsBitmap* frame = RestoreFrameLC();
+ AttachFrameL( frame );
+ CleanupStack::Pop( frame );
+ }
+ else
+ {
+ // NOP
+ }
+
+ StartDsaL();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::StartCameraL
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::StartCameraL()
+ {
+
+ __ASSERT_ALWAYS( iCamera, User::Leave( KErrNotReady ) );
+
+ // Camera may modify the size
+ TSize vfBitmapSize = iArea;
+
+ if ( VfStartPossible() )
+ {
+ iCamera->StartViewFinderBitmapsL( vfBitmapSize );
+ }
+
+
+ UpdateViewFinderArea( vfBitmapSize );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::StartDsaL
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::StartDsaL()
+ {
+ /*
+ iAborted = EFalse;
+ iDirectScreenAccess->Cancel();
+ iDirectScreenAccess->StartL();
+ iGc = iDirectScreenAccess->Gc();
+ iFbsDev = iDirectScreenAccess->ScreenDevice();
+ iRegion = iDirectScreenAccess->DrawingRegion();
+
+ iGc->SetClippingRegion( iRegion );
+ */
+ // Fill with black areas which are not covered by viewfinder image.
+ // If viewfinder image has not been yet received and drawn, fill whole area.
+ //
+
+ /* if ( !iFirstImageDrawn )
+ {
+ // Whole area
+ iGc->SetBrushColor( KRgbBlue );
+ iGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
+ TPoint pointTl( 0, 0 );
+ TRect rect( pointTl, iArea );
+ iGc->DrawRect( rect );
+ }
+ else
+ {
+ DrawBlackBorders();
+ }
+
+ if ( iAttachedFrame )
+ {
+
+ TSize viewFinderImageSize = iAttachedFrame->SizeInPixels();
+
+ TPoint corner = UpdateViewFinderArea( viewFinderImageSize );
+
+ iGc->BitBlt( corner, iAttachedFrame );
+ }
+
+ DoScreenDeviceUpdate();
+ */
+ //iGc->SetBrushStyle( CGraphicsContext::ENullBrush );
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::Stop
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::Stop()
+ {
+ // Don't do anything yet, wait for next frame and then stop camera
+ iStopped = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::Restart
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::Restart( RDirectScreenAccess::TTerminationReasons /*aReason*/ )
+ {
+
+ TRAP_IGNORE( StartDsaL() );
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::AbortNow
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::AbortNow( RDirectScreenAccess::TTerminationReasons /*aReason*/ )
+ {
+ iDirectScreenAccess->Cancel();
+
+ iAborted = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::Draw
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::Draw( CFbsBitmap& aFrame )
+ {
+ if ( iStopped )
+ {
+
+ // Screen was waiting for freeze frame from camera, inform observer
+ // that camera is not needed anymore
+ StoreFrameDataL( aFrame );
+ CFbsBitmap* frame = RestoreFrameLC();
+ AttachFrameL( frame );
+ CleanupStack::Pop( frame );
+
+ StopCamera();
+ }
+ else
+ {
+ // When normal frame draw is requested, attached frame is not anymore drawn
+ DetachFrame();
+
+ DoDraw( aFrame );
+ }
+ }
+
+void CMccScreenBitmap::TimedOut( TInt aTimerId )
+ {
+ iGraphicsContext->Activate(*iRw);
+ iRw->Invalidate();
+ iRw->BeginRedraw();
+ TRgb color1(0,0,255,255);
+ iGraphicsContext->Clear();
+ iGraphicsContext->SetBrushColor( color1 );
+ iGraphicsContext->SetBrushStyle( CGraphicsContext::ESolidBrush );
+ iGraphicsContext->DrawRect( iPrimaryRect );
+ TRgb color2(0,255,0,255);
+ iGraphicsContext->SetBrushColor( color2 );
+ iGraphicsContext->DrawRect( iSecondaryRect );
+ iRw->EndRedraw();
+ iGraphicsContext->Deactivate();
+ iRwSession.Flush();
+
+ /*
+ if ( !iAborted && iGc ){
+ iGc->SetBrushColor( KRgbBlue );
+ iGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
+ iGc->DrawRect( iPrimaryRect );
+ iGc->SetBrushColor( KRgbGreen );
+ iGc->DrawRect( iSecondaryRect );
+ DoScreenDeviceUpdate();
+ }
+ */
+ iTimer->SetTime(500, 1);
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::AttachFrameL
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::AttachFrameL( CFbsBitmap* aFrame )
+ {
+
+ __ASSERT_ALWAYS( aFrame, User::Leave( KErrArgument ) );
+
+ DetachFrame();
+
+ iAttachedFrame = aFrame;
+
+ DoDraw( *iAttachedFrame );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::DetachFrame
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::DetachFrame()
+ {
+ if ( iAttachedFrame )
+ {
+ iAttachedFrame->Reset();
+ delete iAttachedFrame;
+ }
+
+ iAttachedFrame = NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::UpdateViewFinderArea
+// -----------------------------------------------------------------------------
+//
+TPoint CMccScreenBitmap::UpdateViewFinderArea( TSize aViewFinderImageSize )
+ {
+ TPoint corner( 0, 0 );
+ if ( aViewFinderImageSize.iWidth < iArea.iWidth )
+ {
+ // Divide the subtraction by two (i.e. do centering)
+ corner.iX = ( iArea.iWidth - aViewFinderImageSize.iWidth ) >> 1;
+ }
+
+ if ( aViewFinderImageSize.iHeight < iArea.iHeight )
+ {
+ // Divide the subtraction by two (i.e. do centering)
+ corner.iY = ( iArea.iHeight - aViewFinderImageSize.iHeight ) >> 1;
+ }
+
+ iViewFinderImageRect = TRect( corner, aViewFinderImageSize );
+
+ return corner;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::DoDraw
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::DoDraw( CFbsBitmap& aFrame )
+ {
+ if ( !iAborted && iGc )
+ {
+ iFirstImageDrawn = ETrue;
+
+ TSize viewFinderImageSize = aFrame.SizeInPixels();
+
+ TBool imageSizeChanged = ( viewFinderImageSize != iViewFinderImageRect.Size() );
+
+ TPoint corner = UpdateViewFinderArea( viewFinderImageSize );
+
+ if ( imageSizeChanged )
+ {
+ // Size of bitmap changed suddenly, borders need to be redrawn
+ DrawBlackBorders();
+ }
+
+ iGc->BitBlt( corner, &aFrame );
+
+ DoScreenDeviceUpdate();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::DoScreenDeviceUpdate
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::DoScreenDeviceUpdate()
+ {
+ if ( iFbsDev )
+ {
+ iFbsDev->Update();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::StoreFrameDataL
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::StoreFrameDataL( CFbsBitmap& aFrame )
+ {
+
+ iPausedFrameSize = aFrame.SizeInPixels();
+ iPausedFrameDisplayMode = aFrame.DisplayMode();
+ TInt bitmapSizeInBytes =
+ CFbsBitmap::ScanLineLength( iPausedFrameSize.iWidth, iPausedFrameDisplayMode ) *
+ iPausedFrameSize.iHeight;
+ HBufC8* pausedFrameData = HBufC8::NewLC( bitmapSizeInBytes );
+ aFrame.LockHeap();
+ pausedFrameData->Des().Copy( (TUint8*)aFrame.DataAddress(), bitmapSizeInBytes );
+ aFrame.UnlockHeap();
+ delete iPausedFrameData;
+ iPausedFrameData = pausedFrameData;
+ CleanupStack::Pop( pausedFrameData );
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::RestoreFrameLC
+// -----------------------------------------------------------------------------
+//
+CFbsBitmap* CMccScreenBitmap::RestoreFrameLC()
+ {
+
+ __ASSERT_ALWAYS( iPausedFrameData, User::Leave( KErrNotReady ) );
+
+ CFbsBitmap* tempFrame = new ( ELeave ) CFbsBitmap;
+ CleanupStack::PushL( tempFrame );
+
+ User::LeaveIfError( tempFrame->Create( iPausedFrameSize, iPausedFrameDisplayMode ) );
+ TInt bitmapSizeInBytes =
+ CFbsBitmap::ScanLineLength( iPausedFrameSize.iWidth, iPausedFrameDisplayMode ) *
+ iPausedFrameSize.iHeight;
+
+ tempFrame->LockHeap();
+ Mem::Copy( tempFrame->DataAddress(),
+ iPausedFrameData->Des().Ptr(),
+ bitmapSizeInBytes );
+ tempFrame->UnlockHeap();
+
+
+ return tempFrame;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenBitmap::DrawBlackBorders
+// -----------------------------------------------------------------------------
+//
+void CMccScreenBitmap::DrawBlackBorders()
+ {
+ iGc->SetBrushColor( KRgbBlue );
+ iGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
+
+ // Upper area
+ TPoint pointTl( 0, 0 );
+ TPoint pointBr( iArea.iWidth, iViewFinderImageRect.iTl.iY );
+ TRect rect( pointTl, pointBr );
+ iGc->DrawRect( rect );
+
+ // Lower area
+ pointTl.SetXY( 0, iViewFinderImageRect.iBr.iY );
+ pointBr.SetXY( iArea.iWidth, iArea.iHeight );
+ rect.SetRect( pointTl, pointBr );
+ iGc->DrawRect( rect );
+
+ // Left area
+ pointTl.SetXY( 0, iViewFinderImageRect.iTl.iY );
+ pointBr.SetXY( iViewFinderImageRect.iTl.iX, iViewFinderImageRect.iBr.iY );
+ rect.SetRect( pointTl, pointBr );
+ iGc->DrawRect( rect );
+
+ // Right area
+ pointTl.SetXY( iViewFinderImageRect.iBr.iX, iViewFinderImageRect.iTl.iY );
+ pointBr.SetXY( iArea.iWidth, iViewFinderImageRect.iBr.iY );
+ rect.SetRect( pointTl, pointBr );
+ iGc->DrawRect( rect );
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenDirect::NewL
+// -----------------------------------------------------------------------------
+//
+CMccScreenDirect* CMccScreenDirect::NewL( CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority )
+ {
+
+ CMccScreenDirect* self = new ( ELeave ) CMccScreenDirect( aCamera,
+ aPos,
+ aArea,
+ aIndex,
+ aWindowOrdinalPosition,
+ aWindowOrdinalPriority );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenDirect::~CMccScreenDirect
+// -----------------------------------------------------------------------------
+//
+CMccScreenDirect::~CMccScreenDirect()
+ {
+
+ if ( iDirectViewFinder )
+ {
+ iDirectViewFinder->Release();
+ iDirectViewFinder = NULL;
+ }
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenDirect::StartL
+// -----------------------------------------------------------------------------
+//
+void CMccScreenDirect::StartL()
+ {
+
+
+ if ( iDirectViewFinder && iDirectViewFinder->ViewFinderState() ==
+ CCamera::CCameraDirectViewFinder::EViewFinderPause )
+ {
+
+ iDirectViewFinder->ResumeViewFinderDirectL();
+ }
+ else if ( VfStartPossible() )
+ {
+
+ StartDirectViewFinderL();
+ }
+ else
+ {
+ // NOP
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenDirect::Stop
+// -----------------------------------------------------------------------------
+//
+void CMccScreenDirect::Stop()
+ {
+
+ if ( iDirectViewFinder )
+ {
+ // TBD: pausing disabled temporarily due problems in it
+ //TRAP_IGNORE( iDirectViewFinder->PauseViewFinderDirectL() )
+ }
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenDirect::SetCamera
+// -----------------------------------------------------------------------------
+//
+TInt CMccScreenDirect::SetCamera( CCamera* aCamera )
+ {
+ CMccScreen::SetCamera( aCamera );
+
+ return HandleDirectViewFinder();
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenDirect::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMccScreenDirect::ConstructL()
+ {
+
+ CMccScreen::ConstructL();
+
+ User::LeaveIfError( HandleDirectViewFinder() );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenDirect::CMccScreenDirect
+// -----------------------------------------------------------------------------
+//
+CMccScreenDirect::CMccScreenDirect(
+ CCamera* aCamera,
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority ) :
+ CMccScreen( EDirectScreen, aCamera, aPos, aArea, aIndex,
+ aWindowOrdinalPosition, aWindowOrdinalPriority )
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenDirect::StartDirectViewFinderL
+// -----------------------------------------------------------------------------
+//
+void CMccScreenDirect::StartDirectViewFinderL()
+ {
+ if ( VfStartPossible() )
+ {
+ // Camera may modify the size
+ TSize vfBitmapSize = iArea;
+
+ TPoint point( 0, 0 );
+ TRect vfRect( point, vfBitmapSize );
+ iCamera->StartViewFinderDirectL( iRwSession, *iDev, *iRw, vfRect );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreenDirect::HandleDirectViewFinder
+// -----------------------------------------------------------------------------
+//
+TInt CMccScreenDirect::HandleDirectViewFinder()
+ {
+ TInt err( KErrNone );
+ if ( iCamera )
+ {
+ if ( !iDirectViewFinder )
+ {
+
+ iDirectViewFinder = static_cast<MCameraDirectViewFinder*>(
+ iCamera->CustomInterface( TUid::Uid( KECamMCameraDirectViewFinderUidValue ) ) );
+
+ if ( !iDirectViewFinder )
+ {
+ err = KErrNotSupported;
+ }
+ }
+ }
+ else if ( iDirectViewFinder )
+ {
+ iDirectViewFinder->Release();
+ iDirectViewFinder = NULL;
+ }
+ else
+ {
+ // NOP
+ }
+ return err;
+ }
+
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musengcamerahandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,278 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengcamerahandler.h"
+#include "musenglogger.h"
+#include "musengmcesession.h"
+
+
+// SYSTEM
+#include <e32base.h>
+
+const TInt KMaxBrightness = 100;
+const TInt KMinBrightness = -100;
+const TInt KBrightnessStepSize = 10;
+
+
+//Number of big and small zoom steps on Zoom scale
+const TInt KZoomBigStepCount = 15;
+const TInt KZoomSmallStepCount = KZoomBigStepCount*2;
+const TInt KZoomStepMinSize = 1;
+
+const TInt64 KZoomFasterTime = 333333; // 1/3 second
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TMusEngCameraHandler::TMusEngCameraHandler() :
+ iDefaultBrightness( 0 ),
+ iZoomInTime(0),
+ iZoomOutTime(0),
+ iSmallZoomStep( KZoomStepMinSize ),
+ iBigZoomStep( KZoomStepMinSize ),
+ iCurrentCamera( TMusEngCameraHandler::ECameraNotAvailable )
+ {
+ iPlaying = ETrue; //Keep it true -> first play not reported up!
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::LcCameraCountL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcCameraCountL()" )
+
+ return 2;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::CurrentLcCameraIndex()
+ {
+ return iCurrentCamera;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::ToggleLcCameraL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::ToggleLcCamera()" )
+ iMusSession->ToggleCameraL();
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::ToggleLcCamera()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MinLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MinLcBrightnessL()" )
+
+ // minimum brightness is not in camera info, but a constant
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MinLcBrightnessL(): %d",
+ KMinBrightness )
+
+ return KMinBrightness;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MaxLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MaxLcBrightnessL()" )
+
+ // maximum brightness is not in camera info, but a constant
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MaxLcBrightnessL(): %d",
+ KMaxBrightness )
+
+ return KMaxBrightness;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::LcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcBrightnessL()" )
+
+ return 5;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::SetLcBrightnessL( TInt aValue )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> TMusEngCameraHandler::SetLcBrightnessL( %d )",
+ aValue )
+
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::SetLcBrightnessL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::IncreaseLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::IncreaseLcBrightnessL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::IncreaseLcBrightnessL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::DecreaseLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::DecreaseLcBrightnessL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::DecreaseLcBrightnessL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MinLcZoomL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MinLcZoomL()" )
+
+ return 1;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MaxLcZoomL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MaxLcZoomL()" )
+
+ return 10;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::LcZoomValueL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcZoomValueL" )
+
+
+ return 5;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::SetLcZoomValueL( TInt aValue )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> TMusEngCameraHandler::SetLcZoomValueL( %d )",
+ aValue )
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngCameraHandler::SetLcZoomValueL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::LcZoomInL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcZoomInL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::LcZoomInL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::LcZoomOutL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcZoomOutL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::LcZoomOutL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::SetSession(CMusEngMceSession* aSession )
+ {
+ iMusSession = aSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool TMusEngCameraHandler::IsPlayingL()
+ {
+ return iPlaying;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::PlayL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::PlayL()" )
+ if (!iPlaying)
+ {
+ iPlaying = ETrue;
+ iMusSession->PlayCameraL();
+ }
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::PlayL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::PauseL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::PauseL()" )
+ iPlaying = EFalse;
+ iMusSession->PauseCameraL();
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::PauseL()" )
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musengclipvideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,535 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musengclipvideoplayer.h"
+#include "musengcamerahandler.h"
+#include "musengmceutils.h"
+#include "musengdisplayhandler.h"
+#include "muslogger.h"
+
+// SYSTEM
+#include <mcesession.h>
+#include <mcevideostream.h>
+#include <mcefilesource.h>
+#include <drmcommon.h>
+
+// CONSTANTS
+const TInt64 KMicroSecondsInOneSecond = 1000000;
+const TInt KFastWindingFactor = 4;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngClipVideoPlayer* CMusEngClipVideoPlayer::NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl )
+ {
+ return new( ELeave )CMusEngClipVideoPlayer(
+ aDisplayHandler, aLcAudioControl );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngClipVideoPlayer::CMusEngClipVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngLocalVideoPlayer( aDisplayHandler, aLcAudioControl )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngClipVideoPlayer::~CMusEngClipVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngClipVideoPlayer::HasClipEnded()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::HasClipEnded" )
+
+ TBool hasClipEnded( EFalse );
+
+ if ( iMceSession )
+ {
+ CMceVideoStream* videoOut = NULL;
+
+ TRAPD( err,
+ videoOut = MusEngMceUtils::GetVideoOutStreamL( *iMceSession ) );
+ if ( err != KErrNone )
+ {
+ MUS_LOG1( "mus: [ENGINE] Error in GetVideoOutStreamL %d", err )
+ return EFalse;
+ }
+
+ CMceFileSource* filesource = NULL;
+ TRAP( err, filesource = MusEngMceUtils::GetFileSourceL( *iMceSession ) )
+
+ if ( err == KErrNone )
+ {
+ TTimeIntervalMicroSeconds position;
+ TTimeIntervalMicroSeconds duration;
+ TRAP( err, position = filesource->PositionL() );
+ TRAPD( err2, duration = filesource->DurationL() );
+ if ( err != KErrNone || err2 != KErrNone )
+ {
+ return EFalse;
+ }
+
+ MUS_LOG2( "mus: [ENGINE] position = %Ld, duration = %Ld",
+ position.Int64(), duration.Int64() )
+
+ hasClipEnded =
+ ( position.Int64() == 0 &&
+ !filesource->IsEnabled() &&
+ videoOut->State() == CMceMediaStream::EDisabled );
+ }
+ }
+
+ if ( hasClipEnded )
+ {
+ iDelayFileEndingPos = 0;
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::HasClipEnded" )
+
+ return hasClipEnded;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::SetBufferingPeriod(
+ const TTimeIntervalMicroSeconds& aPeriod )
+ {
+ iBufferingPeriod = aPeriod;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngClipVideoPlayer::LcIsPlayingL()
+ {
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+ return ( MusEngMceUtils::GetFileSourceL( *iMceSession )->IsEnabled() );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcPlayL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::LcPlayL" )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( !file->IsEnabled() )
+ {
+ file->EnableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::LcPlayL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcPauseL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::LcPauseL" )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( file->IsEnabled() )
+ {
+ file->DisableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::LcPauseL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcSourceFileControl* CMusEngClipVideoPlayer::LcSourceFileControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::SetLcFileNameL( const TFileName& aFileName )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::SetLcFileNameL" )
+
+ __ASSERT_ALWAYS( !IsProtectedFileL( aFileName ),
+ User::Leave( KErrPermissionDenied ) );
+
+ if ( iMceSession )
+ {
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+ file->UpdateL( aFileName );
+ }
+
+ iFileName = aFileName;
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::SetLcFileNameL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+TFileName& CMusEngClipVideoPlayer::LcFileName()
+ {
+ return iFileName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// Since MCE does not at the moment support SetFastForwardL function, this
+// functionality is implemented by taking a timestamp when forwarding is
+// started and calculating a new position when it is ended.
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcFastForwardL( TBool aUseFFWD )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngClipVideoPlayer::FastForward( %d )",
+ aUseFFWD )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( aUseFFWD )
+ {
+ // Ignore if we are already fastforwarding
+ if ( iFFWDStartTime.Int64() > 0 )
+ {
+ return;
+ }
+
+ // Stop rewinding if ongoing, else just pause file source
+ if ( iFRWDStartTime.Int64() > 0 )
+ {
+ LcFastRewindL( EFalse );
+ }
+ else
+ {
+ file->DisableL();
+ }
+
+ // Get timestamp for starttime
+ iFFWDStartTime.HomeTime();
+ }
+ else
+ {
+ // Leave if we are not fastforwarding
+ if ( iFFWDStartTime.Int64() == 0 )
+ {
+ User::Leave( KErrAlreadyExists );
+ }
+
+ // Set new position
+ file->SetPositionL( PositionMicroSecondsL( ETrue ) );
+
+ // Reset timer
+ iFFWDStartTime = TTime( 0 );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::FastForward" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// Since MCE does not at the moment support SetFastRewindL function, this
+// functionality is implemented by taking a timestamp when rewinding is
+// started and calculating a new position when it is ended.
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcFastRewindL( TBool aUseFRWD )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngClipVideoPlayer::FastRewind( %d )",
+ aUseFRWD )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( aUseFRWD )
+ {
+ // Ignore if we are already fastrewinding
+ if ( iFRWDStartTime.Int64() > 0 )
+ {
+ return;
+ }
+
+ // Stop fastforwarding if ongoing, else just pause file source
+ if ( iFFWDStartTime.Int64() > 0 )
+ {
+ LcFastForwardL( EFalse );
+ }
+ else
+ {
+ file->DisableL();
+ }
+
+ // Get timestamp for starttime
+ iFRWDStartTime.HomeTime();
+ }
+ else
+ {
+ // Leave if we are not fastrewinding
+ if ( iFRWDStartTime.Int64() == 0 )
+ {
+ User::Leave( KErrAlreadyExists );
+ }
+
+ // Set new position
+ file->SetPositionL( PositionMicroSecondsL( ETrue ) );
+
+ // Reset timer
+ iFRWDStartTime = TTime( 0 );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::FastRewind" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalSeconds CMusEngClipVideoPlayer::LcFileDurationL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::DurationL" )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ TTimeIntervalMicroSeconds duration = file->DurationL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::DurationL" )
+
+ return TTimeIntervalSeconds( static_cast< TInt >(
+ duration.Int64() / KMicroSecondsInOneSecond ) );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalSeconds CMusEngClipVideoPlayer::LcFilePositionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::LcFilePositionL" )
+
+ TTimeIntervalMicroSeconds currentPosition = PositionMicroSecondsL();
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngClipVideoPlayer::LcFilePositionL, %d",
+ currentPosition.Int64() )
+
+ return TTimeIntervalSeconds( static_cast< TInt >(
+ currentPosition.Int64() / KMicroSecondsInOneSecond ) );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::SetLcFilePositionL(
+ const TTimeIntervalSeconds& aPosition )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngClipVideoPlayer::SetPositionL ( %d )",
+ aPosition.Int() )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ TTimeIntervalMicroSeconds position(
+ KMicroSecondsInOneSecond * static_cast< TInt64 >( aPosition.Int() ) );
+
+ if ( position == 0 )
+ {
+ iRewindedToBeginning = ETrue;
+ }
+
+ file->SetPositionL( position );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::SetPositionL ()" )
+ }
+
+// -----------------------------------------------------------------------------
+// Check is file DRM protected.
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngClipVideoPlayer::IsProtectedFileL( const TDesC& aClipFile )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::IsProtectedFileL(...)" )
+
+ TBool isDRMProtected = EFalse;
+ DRMCommon* drmapi = DRMCommon::NewL();
+ CleanupStack::PushL( drmapi );
+
+ User::LeaveIfError( drmapi->Connect() );
+ //Check DRM file protection
+ User::LeaveIfError( drmapi->IsProtectedFile( aClipFile, isDRMProtected ) );
+ drmapi->Disconnect();
+
+ CleanupStack::PopAndDestroy( drmapi );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::IsProtectedFileL(...)" )
+ return isDRMProtected;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalMicroSeconds CMusEngClipVideoPlayer::PositionMicroSecondsL(
+ TBool aActualPosition )
+ {
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ TTimeIntervalMicroSeconds position = file->PositionL();
+ TTimeIntervalMicroSeconds duration = file->DurationL();
+
+ TTimeIntervalMicroSeconds calculatedPosition;
+
+ // Adjust position if we are fastforwarding or -rewinding
+ if ( iFFWDStartTime.Int64() != 0 )
+ {
+ TTime now;
+ now.HomeTime();
+ calculatedPosition = KFastWindingFactor *
+ now.MicroSecondsFrom( iFFWDStartTime ).Int64() +
+ position.Int64();
+ if ( calculatedPosition > duration )
+ {
+ calculatedPosition = duration;
+ }
+ }
+ else if ( iFRWDStartTime.Int64() != 0 )
+ {
+ TTime now;
+ now.HomeTime();
+ calculatedPosition = position.Int64() -
+ KFastWindingFactor *
+ now.MicroSecondsFrom( iFRWDStartTime ).Int64();
+ if ( calculatedPosition < 0 )
+ {
+ calculatedPosition = 0;
+ }
+
+ if ( calculatedPosition == 0 )
+ {
+ iRewindedToBeginning = ETrue;
+ }
+ }
+ else
+ {
+ calculatedPosition = position;
+ }
+
+ if ( !aActualPosition )
+ {
+ calculatedPosition =
+ GetVideoSinkRelativeFilePos( calculatedPosition, duration );
+ }
+
+ return calculatedPosition;
+ }
+
+// -----------------------------------------------------------------------------
+// Modifies file position if position has reached end before clip has ended.
+// File position is not going in sync with local video playback as playback
+// buffers media before starting playing.
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalMicroSeconds CMusEngClipVideoPlayer::GetVideoSinkRelativeFilePos(
+ const TTimeIntervalMicroSeconds& aActualPosition,
+ const TTimeIntervalMicroSeconds& aDuration )
+ {
+ MUS_LOG1( "mus: [ENGINE] PositionMicroSecondsL, pos before mod:%d",
+ aActualPosition.Int64() )
+
+ TTimeIntervalMicroSeconds tempCalculatedPosition( aActualPosition );
+
+ if ( iDelayFileEndingPos != 0 )
+ {
+ iDelayFileEndingPos = aDuration;
+ tempCalculatedPosition = iDelayFileEndingPos;
+ }
+ else
+ {
+ // FRWD can go to zero even if clip has not ended, do not modify
+ // time in such situation.
+ if ( aActualPosition == 0 &&
+ !HasClipEnded() &&
+ iFRWDStartTime.Int64() == 0 &&
+ !iRewindedToBeginning )
+ {
+ const TInt KMusDelayEndingModifier = 2;
+ iDelayFileEndingPos = aDuration.Int64() -
+ iBufferingPeriod.Int64() / KMusDelayEndingModifier;
+ tempCalculatedPosition = iDelayFileEndingPos;
+ if ( iPreviousPos > tempCalculatedPosition )
+ {
+ tempCalculatedPosition = iPreviousPos;
+ }
+ }
+ else
+ {
+ iDelayFileEndingPos = 0;
+ }
+
+ if ( iRewindedToBeginning && aActualPosition > 0 )
+ {
+ iRewindedToBeginning = EFalse;
+ }
+
+ if ( tempCalculatedPosition < 0 )
+ {
+ tempCalculatedPosition = 0;
+ }
+ }
+
+ iPreviousPos = tempCalculatedPosition;
+
+ return tempCalculatedPosition;
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musenginepluginentry.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "musengsessionmanager.h"
+#include <ECom.h>
+#include <ImplementationProxy.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+const TImplementationProxy KMusEnginePluginImplementationTable[] =
+ {
+ IMPLEMENTATION_PROXY_ENTRY( 0x20029876, CMusEngSessionManager::NewL )
+ };
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+ {
+ aTableCount = sizeof( KMusEnginePluginImplementationTable ) /
+ sizeof( TImplementationProxy );
+
+ return KMusEnginePluginImplementationTable;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musenglivevideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musenglivevideoplayer.h"
+#include "musengcamerahandler.h"
+#include "musengdisplayhandler.h"
+#include "musenglogger.h"
+
+// SYSTEM
+#include <e32base.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveVideoPlayer* CMusEngLiveVideoPlayer::NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl )
+ {
+ return new( ELeave )CMusEngLiveVideoPlayer(
+ aDisplayHandler, aCameraHandler, aLcAudioControl );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveVideoPlayer::CMusEngLiveVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngLocalVideoPlayer( aDisplayHandler, aLcAudioControl ),
+ iCameraHandler( aCameraHandler )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveVideoPlayer::~CMusEngLiveVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngLiveVideoPlayer::LcIsPlayingL()
+ {
+ return iCameraHandler.IsPlayingL();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::LcPlayL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveVideoPlayer::LcPlayL" )
+ iCameraHandler.PlayL();
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveVideoPlayer::LcPlayL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::LcPauseL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveVideoPlayer::LcPauseL" )
+ iCameraHandler.PauseL();
+ MUS_LOG( "mus: [ENGINE] <> CMusEngLiveVideoPlayer::LcPauseL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcCameraControl* CMusEngLiveVideoPlayer::LcCameraControl()
+ {
+ return &iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcDestinationFileControl* CMusEngLiveVideoPlayer::LcDestinationFileControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcZoomControl* CMusEngLiveVideoPlayer::LcZoomControl()
+ {
+ return &iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcBrightnessControl* CMusEngLiveVideoPlayer::LcBrightnessControl()
+ {
+ return &iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::SetLcFileNameL( const TFileName& aFileName )
+ {
+ iFileName = aFileName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+TFileName& CMusEngLiveVideoPlayer::LcFileName()
+ {
+ return iFileName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcDestinationFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::LcRecordL( TBool aRecord )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngLiveVideoPlayer::LcRecordL(( %d )",
+ aRecord )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveVideoPlayer::LcRecordL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcDestinationFileControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngLiveVideoPlayer::LcIsRecording()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveVideoPlayer::LcIsRecording()" )
+
+ TBool isEnabled( EFalse );
+
+ return isEnabled;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musenglocalvideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musenglocalvideoplayer.h"
+#include "musengdisplayhandler.h"
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLocalVideoPlayer::CMusEngLocalVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngVideoPlayerBase( aDisplayHandler, aLcAudioControl )
+ {
+ iState = EInit;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLocalVideoPlayer::~CMusEngLocalVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer::TLcVideoPlayerState
+CMusEngLocalVideoPlayer::LcVideoPlayerState() const
+ {
+ return iState;
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngLocalVideoPlayer::SetLcWindowRectL( TRect aRect )
+ {
+ iDisplayHandler.SetSecondaryRectL( aRect );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngLocalVideoPlayer::LcWindowRect()
+ {
+ return iDisplayHandler.SecondaryRect();
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musengmcesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,796 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengmcesession.h"
+#include "lcsessionobserver.h"
+#include "musenglogger.h"
+#include "lcuiprovider.h"
+#include "lcvideoplayer.h"
+#include "musengremotevideoplayer.h"
+#include "musenglivevideoplayer.h"
+#include "mccscreen.h"
+
+// SYSTEM
+#include <audiopreference.h>
+#include <e32property.h>
+
+#include <cntitem.h>
+#include <cntfield.h>
+#include <cntdef.h>
+#include <cntfldst.h>
+
+
+#include "svptimer.h"
+
+RDrawableWindow* testWindow = 0;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession::CMusEngMceSession()
+ {
+ iBackground = IsBackgroundStartup();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::ConstructL()" )
+
+ iRemoteVideoPlayer = CMusEngRemoteVideoPlayer::NewL( *this, *this );
+ iLiveVideoPlayer = CMusEngLiveVideoPlayer::NewL( *this, iCameraHandler, *this );
+ iLcSessionState = MLcSession::EUninitialized;
+
+ iTimer = CSVPTimer::NewL( *this, 1 );
+ iCameraHandler.SetSession( this );
+
+ // indicator control
+ iIndicatorCtr = new ( ELeave ) LcVtIndicatorController();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession::~CMusEngMceSession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::~CMusEngMceSession()" )
+
+ delete iRemoteAddress;
+ delete iRemoteVideoPlayer;
+ delete iLiveVideoPlayer;
+ delete iScreen;
+
+ if (iIndicatorCtr)
+ {
+ iIndicatorCtr->disableActiveCallIndicator();
+ delete iIndicatorCtr;
+ }
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::~CMusEngMceSession()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngMceSession::Rect() const
+ {
+ MUS_LOG( "mus: [ENGINE] CMusEngMceSession::Rect()" )
+ return iRect;
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetRectL( const TRect& aRect )
+ {
+ MUS_LOG( "mus: [ENGINE] CMusEngSession::SetRectL()" )
+ if ( !iScreen ){
+ iScreen = CMccScreen::NewL(0,TPoint(0,0), TSize(640,640), 0, 1, 0, EFalse, testWindow);
+ }
+ iRect = aRect;
+ if ( iScreen )
+ {
+ iScreen->SetPrimaryRectL(iRect);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetSecondaryRectL( const TRect& aSecondaryRect )
+ {
+ MUS_LOG( "mus: [ENGINE] CMusEngMceSession::SetSecondaryRectL()" )
+ if ( !iScreen ){
+ iScreen = CMccScreen::NewL(0,TPoint(0,0), TSize(640,640), 0, 1, 0, EFalse, testWindow);
+ }
+ // Same rect is set by primary and secondary setters
+ iSetLocalRect = aSecondaryRect;
+ if ( iScreen )
+ {
+ iScreen->SetSecondaryRectL(iSetLocalRect);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngMceSession::SecondaryRect() const
+ {
+ MUS_LOG( "mus: [ENGINE] CMusEngMceSession::SecondaryRect()" )
+ return iSetLocalRect;
+ }
+
+#if 0
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::SetSecondaryRectL( const TRect& aSecondaryRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SetSecondaryRectL()" )
+
+ iLocalRect = aSecondaryRect;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetSecondaryRectL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngTwoWaySession::SecondaryRect() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SecondaryRect()" )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SecondaryRect()" )
+ return iLocalRect;
+ }
+
+#endif
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+MMusEngDisplayHandler::TDisplayOrientation CMusEngMceSession::OrientationL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::RotationL()" )
+ return MMusEngDisplayHandler::EPortrait;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::SetOrientationL() %d",
+ aOrientation )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::SetOrientationL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::EnableDisplay() %d",
+ aEnable )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::EnableDisplay()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsDisplayEnabled()
+ {
+ TBool enabled( EFalse );
+ return enabled;
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsDisplayActive()
+ {
+ return ( IsDisplayEnabled() );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcSession::TLcSessionState CMusEngMceSession::LcSessionState() const
+ {
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::LcSessionState()" )
+
+ TLcSessionState lcSessionState = MLcSession::EUninitialized;
+
+/*
+ if ( iSession )
+ {
+ switch( iSession->State() )
+ {
+ case CMceSession::EIdle:
+ {
+ lcSessionState = MLcSession::EInitialized;
+ break;
+ }
+ case CMceSession::EIncoming:
+ case CMceSession::EProceeding:
+ case CMceSession::EReserving:
+ {
+ lcSessionState = MLcSession::EReceived;
+ break;
+ }
+
+ case CMceSession::EOffering:
+ case CMceSession::EAnswering:
+ {
+ lcSessionState = MLcSession::EOpening;
+ break;
+ }
+ case CMceSession::EEstablished:
+ {
+ lcSessionState = MLcSession::EOpen;
+ break;
+ }
+ case CMceSession::ECancelling:
+ case CMceSession::ETerminating:
+ {
+ lcSessionState = MLcSession::EClosing;
+ break;
+ }
+ case CMceSession::ETerminated:
+ {
+ lcSessionState = MLcSession::EClosed;
+ break;
+ }
+ default:
+ {
+ lcSessionState = MLcSession::EUninitialized;
+ break;
+ }
+ }
+ }
+*/
+
+ return iLcSessionState;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcSessionObserver( MLcSessionObserver* aObserver )
+ {
+ iLcSessionObserver = aObserver;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcUiProvider( MLcUiProvider* aUiProvider )
+ {
+ iLcUiProvider = aUiProvider;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngMceSession::RemoteVideoPlayer()
+ {
+ return iRemoteVideoPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngMceSession::LocalVideoPlayer()
+ {
+ return iLiveVideoPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::LocalDisplayName()
+ {
+ return KNullDesC;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::RemoteDisplayName()
+ {
+ return *iRemoteAddress;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::SetParameter( TInt aId, TInt aValue )
+ {
+ if ( aId == 0 ){
+ testWindow = reinterpret_cast<RDrawableWindow*>(aValue);
+ }
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::ParameterValue( TInt /*aId*/ )
+ {
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsBackgroundStartup()
+ {
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::SendDialTone( TChar aKey )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::SendDialTone() key = %c",aKey )
+ return ETrue;
+ }
+
+ // -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcAudioMutedL()
+ {
+ return EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::MuteLcAudioL( TBool aMute )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcMicMutedL()
+ {
+ return EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::MuteLcMicL( TBool aMute )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsEnablingLcLoudspeakerAllowed()
+ {
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::EnableLcLoudspeakerL( TBool aEnabled )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcLoudspeakerEnabled()
+ {
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::LcVolumeL()
+ {
+ return 5;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcVolumeL( TInt aValue )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::IncreaseLcVolumeL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::DecreaseLcVolumeL()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::TimedOut( TInt aTimerId )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut()" )
+
+/*
+ iLcSessionState = MLcSession::EOpen;
+
+ if ( iLcSessionObserver )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut(), StateChanged" )
+ iLcSessionObserver->StateChanged( *this );
+ }
+*/
+ switch( aTimerId )
+ {
+ case 1:
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut(), StateChanged -> Established" )
+
+ InformUiProviderAboutReceivingStart();
+
+ iLcSessionState = MLcSession::EOpen;
+ iLcSessionObserver->StateChanged( *this );
+
+ // starting remote playing timer
+ iTimer->SetTime(10000, 3);
+
+ break;
+ }
+ case 2:
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut(), StateChanged -> RemotePlaying" )
+ iRemoteVideoPlayer->iState = MLcVideoPlayer::EPlaying;
+ iLcSessionObserver->StateChanged( *iRemoteVideoPlayer );
+ break;
+ }
+ case 3:
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut(), StateChanged -> LocalPlaying" )
+ iLiveVideoPlayer->iState = MLcVideoPlayer::EPlaying;
+ iLcSessionObserver->StateChanged( *iLiveVideoPlayer );
+ iTimer->SetTime(5000, 2);
+ break;
+ }
+ case 10:
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut(), Camera Toggle, StateChanged -> LocalPaused" )
+ iLiveVideoPlayer->iState = MLcVideoPlayer::EPaused;
+ iLcSessionObserver->StateChanged( *iLiveVideoPlayer );
+ iTimer->SetTime(10000, 11);
+ break;
+ }
+ case 11:
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut(), Camera Toggle, StateChanged -> LocalPlaying" )
+ iLiveVideoPlayer->iState = MLcVideoPlayer::EPlaying;
+ iLcSessionObserver->StateChanged( *iLiveVideoPlayer );
+ break;
+ }
+ case 12:
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut(), Camera Play, StateChanged -> LocalPlaying" )
+ iLiveVideoPlayer->iState = MLcVideoPlayer::EPlaying;
+ iLcSessionObserver->StateChanged( *iLiveVideoPlayer );
+ break;
+ }
+ case 13:
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut(), Camera Pause, StateChanged -> LocalIdle" )
+ iLiveVideoPlayer->iState = MLcVideoPlayer::EPaused;
+ iLcSessionObserver->StateChanged( *iLiveVideoPlayer );
+ break;
+ }
+
+
+ case 14:
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TimedOut(), StateChanged -> EReceived" )
+ InformUiProviderAboutReceivingStart();
+ iLcSessionState = MLcSession::EReceived;
+ iLcSessionObserver->StateChanged( *this );
+ break;
+ }
+
+ default:
+ {
+ iLcSessionState = MLcSession::EUninitialized;
+ break;
+ }
+ }
+/*
+ switch( aTimerId )
+ {
+ case CMceSession::EIdle:
+ {
+ lcSessionState = MLcSession::EInitialized;
+ break;
+ }
+ case CMceSession::EIncoming:
+ case CMceSession::EProceeding:
+ case CMceSession::EReserving:
+ {
+ lcSessionState = MLcSession::EReceived;
+ break;
+ }
+
+ case CMceSession::EOffering:
+ case CMceSession::EAnswering:
+ {
+ lcSessionState = MLcSession::EOpening;
+ break;
+ }
+ case CMceSession::EEstablished:
+ {
+ lcSessionState = MLcSession::EOpen;
+ break;
+ }
+ case CMceSession::ECancelling:
+ case CMceSession::ETerminating:
+ {
+ lcSessionState = MLcSession::EClosing;
+ break;
+ }
+ case CMceSession::ETerminated:
+ {
+ lcSessionState = MLcSession::EClosed;
+ break;
+ }
+ default:
+ {
+ lcSessionState = MLcSession::EUninitialized;
+ break;
+ }
+ }
+*/
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::TimedOut()" )
+ }
+
+
+
+TInt CMusEngMceSession::SetForegroundStatus( TBool aIsForeground )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::SetForegroundStatus() %d",
+ aIsForeground )
+ if ( iScreen ){
+ iScreen->Update(aIsForeground);
+ }
+
+ if ( aIsForeground )
+ {
+ iIndicatorCtr->disableActiveCallIndicator();
+ }
+ else {
+ iIndicatorCtr->enableActiveCallIndicator();
+ }
+ return KErrNone;
+ }
+
+_LIT( KIpVtEngStubRemoteDetails, "5556567844" );
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::RemoteDetails()
+ {
+ return KIpVtEngStubRemoteDetails();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetRemoteL( const TDesC& aRemote )
+{
+ iRemoteAddress = aRemote.AllocL();
+}
+
+#if 0
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutSessionStateChange()
+ {
+ if ( iLcSessionObserver )
+ {
+ iLcSessionObserver->StateChanged( *this );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutSessionUpdate()
+ {
+ if ( iLcSessionObserver )
+ {
+ iLcSessionObserver->Updated( *this );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutSessionFailure( TInt aReason )
+ {
+ if ( iLcSessionObserver )
+ {
+ iLcSessionObserver->Failed( *this, aReason );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutPlayerStateChange(
+ MLcVideoPlayer* aPlayer )
+ {
+ if ( iLcSessionObserver && aPlayer )
+ {
+ iLcSessionObserver->StateChanged( *aPlayer );
+ }
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutPlayerUpdate(
+ MLcVideoPlayer* aPlayer )
+ {
+ if ( iLcSessionObserver && aPlayer )
+ {
+ iLcSessionObserver->Updated( *aPlayer );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutPlayerFailure(
+ MLcVideoPlayer* aPlayer,
+ TInt aReason )
+ {
+ if ( iLcSessionObserver && aPlayer )
+ {
+ iLcSessionObserver->Failed( *aPlayer, aReason );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MLcUiProvider& CMusEngMceSession::LcUiProviderL()
+ {
+ __ASSERT_ALWAYS( iLcUiProvider, User::Leave( KErrNotReady ) );
+ return *iLcUiProvider;
+ }
+#endif
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformUiProviderAboutReceivingStart()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::InformUiProviderAboutReceivingStart()" )
+ if ( iBackground && iLcUiProvider )
+ {
+ MUS_LOG( "mus: [ENGINE] receiving started in BG mode, switching to FG" )
+ iBackground = EFalse;
+ iLcUiProvider->HandleForegroundStatus( ETrue );
+ }
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::InformUiProviderAboutReceivingStart()" )
+ }
+
+void CMusEngMceSession::ToggleCameraL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::ToggleCameraL()" )
+ if( iLiveVideoPlayer->iState == MLcVideoPlayer::EPlaying )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::ToggleCameraL(), start timer" )
+ iTimer->SetTime(5000, 10);
+ }
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::ToggleCameraL()" )
+ }
+
+void CMusEngMceSession::PlayCameraL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::PlayCameraL()" )
+ iTimer->SetTime(5000, 12);
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::PlayCameraL()" )
+ }
+
+void CMusEngMceSession::PauseCameraL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::PauseCameraL()" )
+ iTimer->SetTime(5000, 13);
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::PauseCameraL()" )
+ }
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musengmceutils.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,594 @@
+/*
+* Copyright (c) 2005-2006 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: Utilities to get and set profile used with SWIS.
+*
+*/
+
+
+
+// USER
+
+#include "musengmceutils.h"
+#include "muslogger.h"
+
+// SYSTEM
+
+#include <mcesession.h>
+#include <mcevideostream.h>
+#include <mceaudiostream.h>
+#include <mcertpsink.h>
+#include <mcemediasource.h>
+#include <mcertpsource.h>
+#include <mcecamerasource.h>
+#include <mcedisplaysink.h>
+#include <mcefilesource.h>
+#include <mcefilesink.h>
+#include <mcespeakersink.h>
+
+
+
+
+
+// -----------------------------------------------------------------------------
+// Tells if parameter stream is a video stream with RTP source
+// -----------------------------------------------------------------------------
+//
+TBool MusEngMceUtils::IsVideoInStream( CMceMediaStream& aStream )
+ {
+ return ( aStream.Type() == KMceVideo &&
+ aStream.Source() &&
+ aStream.Source()->Type() == KMceRTPSource );
+ }
+
+// -----------------------------------------------------------------------------
+// Tells if parameter stream is a video stream with RTP sink
+// -----------------------------------------------------------------------------
+//
+TBool MusEngMceUtils::IsVideoOutStream( CMceMediaStream& aStream )
+ {
+ TBool isOutStream( EFalse );
+ if ( aStream.Type() == KMceVideo )
+ {
+ CMceMediaSink* rtpSink = MusEngMceUtils::GetMediaSink(
+ aStream,
+ KMceRTPSink );
+
+ isOutStream = ( rtpSink != NULL );
+ }
+ return isOutStream;
+ }
+
+// -----------------------------------------------------------------------------
+// Tells if parameter stream is an audio stream with RTP source
+// -----------------------------------------------------------------------------
+//
+TBool MusEngMceUtils::IsAudioInStream( CMceMediaStream& aStream )
+ {
+ return ( aStream.Type() == KMceAudio &&
+ aStream.Source() &&
+ aStream.Source()->Type() == KMceRTPSource );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to video stream with RTP sink.
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* MusEngMceUtils::GetVideoOutStreamL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetVideoOutStreamL()" )
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ CMceVideoStream* videoOut = NULL;
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( MusEngMceUtils::IsVideoOutStream( *streams[i] ) )
+ {
+ __ASSERT_ALWAYS( !videoOut, User::Leave( KErrOverflow ) );
+
+ videoOut = static_cast<CMceVideoStream*>( streams[i] );
+ }
+
+ // Check if bound stream is a video stream with RTP sink.
+ if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoOutStream( streams[i]->BoundStreamL() ) )
+ {
+ __ASSERT_ALWAYS( !videoOut, User::Leave( KErrOverflow ) );
+
+ videoOut = static_cast<CMceVideoStream*>(
+ &streams[i]->BoundStreamL() );
+ }
+ }
+
+ __ASSERT_ALWAYS( videoOut, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetVideoOutStreamL()" )
+
+ return videoOut;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to video stream with RTP source.
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* MusEngMceUtils::GetVideoInStreamL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetVideoInStreamL()" )
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ CMceVideoStream* videoIn = NULL;
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( MusEngMceUtils::IsVideoInStream( *streams[i] ) )
+
+ {
+ __ASSERT_ALWAYS( !videoIn, User::Leave( KErrOverflow ) );
+
+ videoIn = static_cast<CMceVideoStream*>( streams[i] );
+ }
+
+ // Check if bound stream is a video stream with RTP souce.
+ if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoInStream( streams[i]->BoundStreamL() ) )
+ {
+ __ASSERT_ALWAYS( !videoIn, User::Leave( KErrOverflow ) );
+
+ videoIn = static_cast<CMceVideoStream*>(
+ &streams[i]->BoundStreamL() );
+ }
+ }
+
+ __ASSERT_ALWAYS( videoIn, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetVideoInStreamL()" )
+
+ return videoIn;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to video stream with file sink
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* MusEngMceUtils::GetRecordingStream( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetRecordingStreamL()" )
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ CMceVideoStream* recordingStream = NULL;
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( streams[i]->Type() == KMceVideo )
+ {
+ if ( MusEngMceUtils::GetMediaSink( *streams[i], KMceFileSink ) )
+ {
+ recordingStream = static_cast<CMceVideoStream*>( streams[i] );
+ }
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetRecordingStreamL()" )
+
+ return recordingStream;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a mediastream.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSink( CMceMediaStream& aStream,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType )
+ {
+ const RPointerArray<CMceMediaSink>& sinks = aStream.Sinks();
+ for ( TInt i = 0; i < sinks.Count(); ++i )
+ {
+ if ( sinks[i]->Type() == aType &&
+ ( aAssociatedSourceType == KMusEngNoAssociatedSourceType ||
+ aStream.Source()->Type() == aAssociatedSourceType ) )
+ {
+ return sinks[i];
+ }
+ }
+
+ return NULL;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a mediastream.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSinkL( CMceMediaStream& aStream,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType )
+ {
+
+ CMceMediaSink* sink = MusEngMceUtils::GetMediaSink( aStream, aType, aAssociatedSourceType );
+
+ __ASSERT_ALWAYS( sink, User::Leave( KErrNotFound ) );
+
+ return sink;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a session.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSink( CMceSession& aSession,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType,
+ TBool aStrictMatch )
+ {
+ CMceMediaSink* sink = NULL;
+
+ TRAP_IGNORE( sink = MusEngMceUtils::GetMediaSinkL(
+ aSession, aType, aAssociatedSourceType, aStrictMatch ) )
+
+ return sink;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a session.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSinkL( CMceSession& aSession,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType,
+ TBool aStrictMatch )
+ {
+ CMceMediaSink* sink = NULL;
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ sink = MusEngMceUtils::GetMediaSink( *streams[i], aType, aAssociatedSourceType );
+ if ( sink )
+ {
+ return sink;
+ }
+
+ if ( streams[i]->BoundStream() )
+ {
+ sink = MusEngMceUtils::GetMediaSink( streams[i]->BoundStreamL(),
+ aType,
+ aAssociatedSourceType );
+ if ( sink )
+ {
+ return sink;
+ }
+ }
+ }
+
+ if ( !sink && aAssociatedSourceType != KMusEngNoAssociatedSourceType && !aStrictMatch )
+ {
+ // No preferred match, try without source preference
+ sink = GetMediaSinkL( aSession, aType );
+ }
+
+ __ASSERT_ALWAYS( sink, User::Leave( KErrNotFound ) );
+
+ return sink;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a speaker sink contained by specified stream or bound stream.
+// -----------------------------------------------------------------------------
+//
+CMceSpeakerSink* MusEngMceUtils::GetSpeaker( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetSpeaker()" )
+
+ CMceSpeakerSink* speaker = NULL;
+
+ if ( aStream.Type() == KMceAudio )
+ {
+ speaker = static_cast<CMceSpeakerSink*>(
+ MusEngMceUtils::GetMediaSink( aStream, KMceSpeakerSink ) );
+
+ if ( !speaker && aStream.BoundStream() )
+ {
+ CMceMediaStream* boundStream = NULL;
+ TRAPD( error, boundStream = &aStream.BoundStreamL() )
+
+ if ( error == KErrNone )
+ {
+ speaker = static_cast<CMceSpeakerSink*>(
+ MusEngMceUtils::GetMediaSink( *boundStream,
+ KMceSpeakerSink ) );
+ }
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetSpeaker()" )
+
+ return speaker;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a camera source.
+// -----------------------------------------------------------------------------
+//
+CMceCameraSource* MusEngMceUtils::GetCameraL( CMceSession& aSession )
+ {
+ // Camera can be only in out stream
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetCameraL()" )
+
+ CMceVideoStream* videoOut = MusEngMceUtils::GetVideoOutStreamL( aSession );
+
+ if ( !( videoOut->Source() &&
+ videoOut->Source()->Type() == KMceCameraSource ) )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetCameraL()" )
+ return static_cast<CMceCameraSource*>( videoOut->Source() );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a file source.
+// -----------------------------------------------------------------------------
+//
+CMceFileSource* MusEngMceUtils::GetFileSourceL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetFileSourceL()" )
+
+ CMceVideoStream* videoOut = MusEngMceUtils::GetVideoOutStreamL( aSession );
+
+ if ( !( videoOut->Source() &&
+ videoOut->Source()->Type() == KMceFileSource ) )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetFileSourceL()" )
+ return static_cast<CMceFileSource*>( videoOut->Source() );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetDisplay(
+ CMceSession& aSession, TBool aPreferViewFinder )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetDisplay()" )
+ TMceSourceType preferredSource =
+ aPreferViewFinder ? KMceCameraSource : KMusEngNoAssociatedSourceType;
+ return static_cast<CMceDisplaySink*>(
+ MusEngMceUtils::GetMediaSink( aSession, KMceDisplaySink, preferredSource ) );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetDisplayL(
+ CMceSession& aSession, TBool aPreferViewFinder )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetDisplayL()" )
+
+ CMceDisplaySink* display = MusEngMceUtils::GetDisplay( aSession, aPreferViewFinder );
+
+ __ASSERT_ALWAYS( display, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetDisplayL()" )
+ return display;
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying received video.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetReceivingDisplay( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetReceivingDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetReceivingDisplay()" )
+
+ // Search display which is connected with rtp source
+ TMceSourceType preferredSource = KMceRTPSource;
+ return static_cast<CMceDisplaySink*>( MusEngMceUtils::GetMediaSink(
+ aSession, KMceDisplaySink, preferredSource, ETrue ) );
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying received video.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetReceivingDisplayL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetReceivingDisplayL()" )
+
+ CMceDisplaySink* display = GetReceivingDisplay( aSession );
+ __ASSERT_ALWAYS( display != NULL, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetReceivingDisplay()" )
+
+ return display;
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying viewfinder content.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetVfDisplay( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetVfDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetVfDisplay()" )
+
+ // Search display which is connected with camera
+ TMceSourceType preferredSource = KMceCameraSource;
+ return static_cast<CMceDisplaySink*>( MusEngMceUtils::GetMediaSink(
+ aSession, KMceDisplaySink, preferredSource, ETrue ) );
+ }
+
+// -----------------------------------------------------------------------------
+// Adds display sink to specified stream if one does not exist already.
+// Display rect is set in both cases.
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::AddDisplayL( CMceMediaStream& aStream,
+ CMceManager& aManager,
+ const TRect& aDisplayRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::AddDisplayL()" )
+
+ __ASSERT_ALWAYS( aStream.Type() == KMceVideo, User::Leave( KErrArgument ) );
+
+ CMceDisplaySink* display = static_cast<CMceDisplaySink*>(
+ MusEngMceUtils::GetMediaSink(
+ aStream,
+ KMceDisplaySink ) );
+
+ if ( !display )
+ {
+ display = CMceDisplaySink::NewLC( aManager );
+ aStream.AddSinkL( display );
+ CleanupStack::Pop( display );
+ }
+
+ display->SetDisplayRectL( aDisplayRect );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::AddDisplayL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Adds display sink to specified stream if one does not exist already.
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::AddSpeakerL( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::AddSpeakerL()" )
+
+ __ASSERT_ALWAYS( aStream.Type() == KMceAudio, User::Leave( KErrArgument ) );
+
+ CMceSpeakerSink* speaker = static_cast<CMceSpeakerSink*>(
+ MusEngMceUtils::GetMediaSink(
+ aStream,
+ KMceSpeakerSink ) );
+
+ if ( !speaker )
+ {
+ speaker = CMceSpeakerSink::NewLC();
+ aStream.AddSinkL( speaker );
+ CleanupStack::Pop( speaker );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::AddSpeakerL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Disables parameter stream, its' source and all the sinks.
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::DisableStreamL( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::DisableStreamL()" )
+
+ aStream.DisableL();
+
+ if ( aStream.Source() )
+ {
+ aStream.Source()->DisableL();
+ }
+
+ for ( TInt sinkIndex = 0; sinkIndex < aStream.Sinks().Count(); ++sinkIndex )
+ {
+ aStream.Sinks()[ sinkIndex ]->DisableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::DisableStreamL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::DoEnableDisplayL( CMceDisplaySink& aDisplay, TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> MusEngMceUtils::DoEnableDisplayL() %d",
+ aEnable )
+
+ if ( aEnable )
+ {
+ if ( !aDisplay.IsEnabled() )
+ {
+ aDisplay.EnableL();
+ MUS_LOG( " Display enabled" )
+ }
+ else
+ {
+ MUS_LOG( " Display already enabled, ignore" )
+ }
+ }
+ else
+ {
+ if ( aDisplay.IsEnabled() )
+ {
+ aDisplay.DisableL();
+ MUS_LOG( " Display disabled" )
+ }
+ else
+ {
+ MUS_LOG( " Display already disabled, ignore" )
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::DoEnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt MusEngMceUtils::EnableInactivityTimer(
+ CMceSession& aSession,
+ TUint32 aInactivityTimeout )
+ {
+ TInt err( KErrNotFound );
+ CMceVideoStream* stream = NULL;
+ TRAP_IGNORE( stream = MusEngMceUtils::GetVideoInStreamL( aSession ) )
+ if ( stream )
+ {
+ // Instream has always RTP source
+ err = KErrNone;
+ CMceRtpSource* rtpSource = static_cast<CMceRtpSource*>( stream->Source() );
+ TRAP( err, rtpSource->EnableInactivityTimerL( aInactivityTimeout ) )
+ }
+
+ return err;
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musengremotevideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// USER
+#include "musengremotevideoplayer.h"
+#include "musengdisplayhandler.h"
+
+// SYSTEM
+#include <e32base.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngRemoteVideoPlayer* CMusEngRemoteVideoPlayer::NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl )
+ {
+ return new( ELeave )CMusEngRemoteVideoPlayer(
+ aDisplayHandler, aLcAudioControl );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngRemoteVideoPlayer::CMusEngRemoteVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngVideoPlayerBase( aDisplayHandler, aLcAudioControl )
+ {
+ iState = EInit;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngRemoteVideoPlayer::~CMusEngRemoteVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer::TLcVideoPlayerState
+CMusEngRemoteVideoPlayer::LcVideoPlayerState() const
+ {
+ return iState;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngRemoteVideoPlayer::LcIsPlayingL()
+ {
+ return ETrue;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musengsessionmanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "musengsessionmanager.h"
+#include "musengmcesession.h"
+#include "musengtwowaysession.h"
+#include "lcsession.h"
+#include "mccdatasender.h"
+#include "mccdatareceiver.h"
+#include "musenglogger.h"
+#include "mccdatastructures.h"
+#include <settingsinternalcrkeys.h>
+#include <centralrepository.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager* CMusEngSessionManager::NewL()
+ {
+ CMusEngSessionManager* self = new( ELeave )CMusEngSessionManager();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager::~CMusEngSessionManager()
+ {
+ delete iSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager::CMusEngSessionManager()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngSessionManager::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngSessionManager::ConstructL()" )
+ //iMsgReceiver = CMccDataReceiver::NewL(*this);
+ MUS_LOG( "mus: [ENGINE] MsgQueue1 setup complete" )
+ //iMsgSender = CMccDataSender::NewL();
+ MUS_LOG( "mus: [ENGINE] MsgQueue2 setup complete" )
+ iSession = CMusEngTwoWaySession::NewL();
+ iSession->SetRemoteL( _L("Homer Simpson") );
+ MUS_LOG( "mus: [ENGINE] <- CMusEngSessionManager::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MLcSession& CMusEngSessionManager::Session()
+ {
+ return *iSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngSessionManager::DataReceived( const TDataMessage& aData )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngSessionManager::IsFeatureSupported( TLcFeature aLcFeature )
+ {
+ TBool ret = EFalse;
+ if ( ELcSendVideoQuery == aLcFeature )
+ {
+ TInt videoSendingSetting;
+ CRepository* repository = CRepository::NewL( KCRUidTelephonySettings );
+ if ( KErrNone == repository->Get(KSettingsVTVideoSending, videoSendingSetting) )
+ {
+ if ( VTSETTING_ALWAYS_ASK_FIRST == videoSendingSetting )
+ ret = ETrue;
+ }
+ delete repository;
+ }
+ return ret;
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musengtwowayrecvsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,521 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengtwowayrecvsession.h"
+#include "lcsessionobserver.h"
+#include "musunittesting.h"
+#include "musengmceutils.h"
+#include "musenglogger.h"
+#include "mussipprofilehandler.h"
+#include "musenglivevideoplayer.h"
+#include "musengremotevideoplayer.h"
+
+// SYSTEM
+#include <mcemanager.h>
+#include <mcecamerasource.h>
+#include <mcevideostream.h>
+#include <mcertpsink.h>
+#include <mcedisplaysink.h>
+#include <mcesession.h>
+#include <mcertpsource.h>
+#include <mcestreambundle.h>
+#include <musmanager.h>
+
+const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+
+const TUint32 KMusEngTwoWayReceivingActivityTimeout = 5000; // 5 seconds
+// 6 seconds keepalive timer, needs to be more than receiving timeout
+const TUint8 KMusEngTwoWayRtpKeepAliveTimer = 6;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession* CMusEngTwoWayRecvSession::NewL()
+ {
+ CMusEngTwoWayRecvSession* self = new( ELeave )CMusEngTwoWayRecvSession();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()" )
+
+ delete iLiveVideoPlayer;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::EnableDisplayL() %d",
+ aEnable )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+ MusEngMceUtils::DoEnableDisplayL( *display, aEnable );
+
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+ if ( vfDisplay )
+ {
+ MusEngMceUtils::DoEnableDisplayL( *vfDisplay, aEnable );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::EnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession::TDisplayOrientation CMusEngTwoWayRecvSession::OrientationL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::RotationL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+
+ TDisplayOrientation displayOrientation;
+ CMceDisplaySink::TRotation rotation( display->RotationL() );
+
+ MUS_LOG1( "mus: [ENGINE] MCE rotation is %d", rotation )
+
+ if ( rotation == CMceDisplaySink::ENone )
+ {
+ displayOrientation = CMusEngMceSession::EPortrait;
+ }
+ else
+ {
+ displayOrientation = CMusEngMceSession::ELandscape;
+ }
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::RotationL() %d",
+ displayOrientation )
+
+ return displayOrientation;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetOrientationL() %d",
+ aOrientation )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+
+ CMceDisplaySink::TRotation rotation = ( aOrientation == EPortrait ) ?
+ CMceDisplaySink::ENone : CMceDisplaySink::EClockwise90Degree;
+
+ display->SetRotationL( rotation );
+ if ( vfDisplay )
+ {
+ vfDisplay->SetRotationL( rotation );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetOrientationL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::SetRectsL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetRectsL()" )
+
+ iLocalRect = aLocalRect;
+ iRect = aRemoteRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetRectsL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::SetSecondaryRectL( const TRect& aSecondaryRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetSecondaryRectL()" )
+
+ iLocalRect = aSecondaryRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetSecondaryRectL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngTwoWayRecvSession::SecondaryRect() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SecondaryRect()" )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SecondaryRect()" )
+ return iLocalRect;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TMusEngCameraHandler& CMusEngTwoWayRecvSession::Camera()
+ {
+ return iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngTwoWayRecvSession::LocalVideoPlayer()
+ {
+ return iLiveVideoPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+void CMusEngTwoWayRecvSession::RectChangedL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::RectChangedL()" )
+
+
+ // If session is not yet created, do nothing
+ if ( iSession && iSession->State() != CMceSession::ETerminated )
+ {
+ TRect remoteRect( Rect() );
+ MUS_LOG2( "mus: [ENGINE] remote tl.ix=%d tl.iy=%d",
+ remoteRect.iTl.iX, remoteRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] remote brc%d br.iy=%d",
+ remoteRect.iBr.iX, remoteRect.iBr.iY )
+ MUS_LOG2( "mus: [ENGINE] local tl.ix=%d tl.iy=%d",
+ iLocalRect.iTl.iX, iLocalRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] local br.ix=%d br.iy=%d",
+ iLocalRect.iBr.iX, iLocalRect.iBr.iY )
+
+ if ( remoteRect != iSetRemoteRect )
+ {
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+ display->SetDisplayRectL( remoteRect );
+ iSetRemoteRect = remoteRect;
+ }
+
+ if ( iLocalRect != iSetLocalRect )
+ {
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+ if ( vfDisplay )
+ {
+ vfDisplay->SetDisplayRectL( iLocalRect );
+ }
+ iSetLocalRect = iLocalRect;
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::RectChangedL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ iCameraHandler.SetSession( iSession );
+
+ // Force bandwidth line usage in sdp as it is mandatory
+ // at MT side based on GSMA VS specification IR.74. Bandwidth is set to
+ // session or to media level based on sender's way of usage. If other end
+ // is not using bandwidth attribute at all, media level is preferred.
+ SetSessionSdpLinesL( *iSession, ETrue );
+
+ CMceStreamBundle* localBundle =
+ CMceStreamBundle::NewLC( CMceStreamBundle::ELS );
+
+ const RPointerArray<CMceMediaStream>& streams = iSession->Streams();
+
+ CMceMediaStream* videoInStream = NULL;
+ CMceMediaStream* videoOutStream = NULL;
+
+ // Search interesting video streams, sendrecv is preferred
+ TBool sendRecvVideoFound( EFalse );
+ for( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( MusEngMceUtils::IsVideoInStream( *streams[i] ) &&
+ !sendRecvVideoFound )
+ {
+ videoInStream = streams[i];
+
+ if ( streams[i]->BoundStream() )
+ {
+ videoOutStream = &streams[i]->BoundStreamL();
+ }
+ }
+ else if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoInStream( streams[i]->BoundStreamL() ) &&
+ !sendRecvVideoFound )
+ {
+ videoInStream = &streams[i]->BoundStreamL();
+
+ videoOutStream = streams[i];
+ }
+ else
+ {
+ // NOP
+ }
+
+ sendRecvVideoFound = ( videoInStream && videoOutStream );
+ }
+
+ CompleteSessionStructureAudioPartL( streams, *localBundle, videoInStream, videoOutStream );
+
+ if ( videoInStream )
+ {
+ CompleteSessionStructureInStreamL( *videoInStream, *localBundle );
+ }
+ else
+ {
+ // At least receiving video stream is required
+ User::Leave( KErrCorrupt );
+ }
+
+ if ( videoOutStream )
+ {
+ CompleteSessionStructureOutStreamL( *videoOutStream );
+ }
+
+ // Destroy bundle if it is not needed or transfer ownership
+ if ( localBundle->Streams().Count() > 1 )
+ {
+ iSession->AddBundleL( localBundle );
+ CleanupStack::Pop( localBundle );
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy( localBundle );
+ }
+
+ AdjustStreamsAndCodecsL();
+
+ iSession->UpdateL();
+
+ // Now session state is right to adjust volume
+ SetSpeakerVolumeL( LcVolumeL() );
+
+ iSipProfileHandler->CreateProfileL( iSession->Profile() );
+
+ iRemoteVideoPlayer->SetMceSession( iSession );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession::CMusEngTwoWayRecvSession()
+ : CMusEngReceiveSession()
+ {
+ iMceManagerUid.iUid = CMusManager::ESipInviteDesired2WayVideo;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::ConstructL()" )
+
+ iCameraHandler.ReadCameraUsageKeyL();
+ CMusEngReceiveSession::ConstructL();
+
+ iLiveVideoPlayer =
+ CMusEngLiveVideoPlayer::NewL( *this, iCameraHandler, *this );
+
+ // Override receiving timeout and keepalive values of
+ // normal one-way receiving session
+ //
+ iReceivingInactivityTimeout = KMusEngTwoWayReceivingActivityTimeout;
+ iKeepaliveTimer = KMusEngTwoWayRtpKeepAliveTimer;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// When checking audio streams also not interesting streams are removed from
+// session. Stream if removed if one of following apply:
+// 1. Is not and does not contain incoming video or audio
+// 2. We already have one incoming video stream
+// 3. Stream is audio and we run operator variant where audio is
+// not allowed.
+// 4. Two-way video exists and this one is audio
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL(
+ const RPointerArray<CMceMediaStream>& aStreams,
+ CMceStreamBundle& aLocalBundle,
+ CMceMediaStream* aVideoInStream,
+ CMceMediaStream* aVideoOutStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL()" )
+
+ // Audio streams not allowed in two-way session or in operator variant
+ TBool audioAllowed( !( aVideoInStream && aVideoOutStream ) && !iOperatorVariant );
+
+ for( TInt i = 0; i < aStreams.Count(); ++i )
+ {
+ // Audio supported currently only in recvonly case
+ if ( audioAllowed &&
+ MusEngMceUtils::IsAudioInStream( *aStreams[i] ) )
+ {
+ MusEngMceUtils::AddSpeakerL( *aStreams[i] );
+
+ aLocalBundle.AddStreamL( *aStreams[i] );
+
+ // Disable possible opposite stream to indicate that sendrecv audio is
+ // not allowed.
+ if ( aStreams[i]->BoundStream() )
+ {
+ MusEngMceUtils::DisableStreamL( aStreams[i]->BoundStreamL() );
+ }
+ }
+ else if ( audioAllowed &&
+ aStreams[i]->BoundStream() &&
+ MusEngMceUtils::IsAudioInStream( aStreams[i]->BoundStreamL() ) )
+ {
+ MusEngMceUtils::AddSpeakerL( aStreams[i]->BoundStreamL() );
+
+ aLocalBundle.AddStreamL( aStreams[i]->BoundStreamL() );
+
+ // Disable opposite stream to indicate that sendrecv audio is not allowed.
+ MusEngMceUtils::DisableStreamL( *aStreams[i] );
+ }
+ else if ( aStreams[ i ] != aVideoInStream && aStreams[ i ] != aVideoOutStream )
+ {
+ iSession->RemoveStreamL( *aStreams[i] );
+
+ // Since succesfull removal of a stream has decreased the amount
+ // of streams in array by one, we have to modify the index
+ --i;
+ }
+ else
+ {
+ // NOP
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL(
+ CMceMediaStream& aVideoInStream, CMceStreamBundle& aLocalBundle )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL()" )
+
+ SetMediaSdpLinesL( aVideoInStream, ETrue );
+
+ MusEngMceUtils::AddDisplayL( aVideoInStream, *iManager, Rect() );
+
+ static_cast<CMceRtpSource*>(aVideoInStream.Source())->UpdateL(
+ KMusEngJitterBufferLength,
+ KMusEngJitterBufferTreshold,
+ KMusEngTwoWayReceivingActivityTimeout );
+
+ aLocalBundle.AddStreamL( aVideoInStream );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL(
+ CMceMediaStream& aVideoOutStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL()" )
+
+ SetMediaSdpLinesL( aVideoOutStream, ETrue );
+
+ CMceCameraSource* camera = NULL;
+ TRAP_IGNORE( camera = MusEngMceUtils::GetCameraL( *iSession ) )
+ if ( !camera )
+ {
+ camera = CMceCameraSource::NewLC( *iManager );
+ aVideoOutStream.SetSourceL( camera );
+ CleanupStack::Pop( camera );
+ }
+
+ camera->DisableL(); // Start session in pause mode.
+
+ iCameraHandler.InitializeL( *camera );
+
+ CMceVideoStream* vfStream = CMceVideoStream::NewLC();
+
+ vfStream->SetSourceL( aVideoOutStream.Source() );
+
+ // Complete stream
+ MusEngMceUtils::AddDisplayL( *vfStream, *iManager, SecondaryRect() );
+
+ iSession->AddStreamL( vfStream );
+ CleanupStack::Pop( vfStream );
+
+ iLiveVideoPlayer->SetMceSession( iSession );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL()" )
+ }
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musengtwowaysession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,169 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengtwowaysession.h"
+#include "lcsessionobserver.h"
+#include "musenglogger.h"
+#include "musengremotevideoplayer.h"
+#include "musenglivevideoplayer.h"
+#include "svptimer.h"
+
+
+const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+
+const TUint32 KMusEngTwoWayReceivingActivityTimeout = 5000; // 5 seconds
+// 6 seconds keepalive timer, needs to be more than receiving timeout
+const TUint8 KMusEngTwoWayRtpKeepAliveTimer = 6;
+
+//Uncomment this for MT Simulation.
+//#define MT_Simulation
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession* CMusEngTwoWaySession::NewL()
+ {
+ CMusEngTwoWaySession* self = new( ELeave )CMusEngTwoWaySession();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession::~CMusEngTwoWaySession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::~CMusEngTwoWaySession()" )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::~CMusEngTwoWaySession()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWaySession::EnableDisplayL() %d",
+ aEnable )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::EnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWaySession::SetOrientationL() %d",
+ aOrientation )
+
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetOrientationL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::SetRectsL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SetRectsL()" )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetRectsL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession::CMusEngTwoWaySession()
+ : CMusEngMceSession()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::ConstructL()" )
+
+ CMusEngMceSession::ConstructL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::EstablishLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::EstablishLcSessionL" )
+
+ #ifdef MT_Simulation
+ if ( LcSessionState() != MLcSession::EReceived ) {
+ iTimer->SetTime(2000, 14);
+ } else {
+ iTimer->SetTime(2000, 1);
+ }
+ #else
+
+ iTimer->SetTime(2000, 1);
+ #endif
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::EstablishLcSessionL" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::TerminateLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::TerminateLcSessionL" )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::TerminateLcSessionL" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::UpdateLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::UpdateLcSessionL" )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::UpdateLcSessionL" )
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/musengvideoplayerbase.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,208 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musenglocalvideoplayer.h"
+#include "musengcamerahandler.h"
+#include "musengdisplayhandler.h"
+
+// SYSTEM
+#include <e32base.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngVideoPlayerBase::CMusEngVideoPlayerBase(
+ MMusEngDisplayHandler& aDisplayHandler, MLcAudioControl& aLcAudioControl )
+ :iDisplayHandler( aDisplayHandler ),
+ iLcAudioControl( aLcAudioControl )
+ {
+ iVideoPlayerSource = MLcVideoPlayer::ECameraSource ;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngVideoPlayerBase::~CMusEngVideoPlayerBase()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer::TLcVideoPlayerSource CMusEngVideoPlayerBase::LcVideoPlayerSourceL()
+ {
+ return iVideoPlayerSource;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::LcPlayL(MLcVideoPlayer::TLcVideoPlayerSource aSource)
+ {
+ iVideoPlayerSource = aSource;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::LcPauseL()
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcWindow* CMusEngVideoPlayerBase::LcWindow()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcCameraControl* CMusEngVideoPlayerBase::LcCameraControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcSourceFileControl* CMusEngVideoPlayerBase::LcSourceFileControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcDestinationFileControl* CMusEngVideoPlayerBase::LcDestinationFileControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcAudioControl* CMusEngVideoPlayerBase::LcAudioControl()
+ {
+ return &iLcAudioControl;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcZoomControl* CMusEngVideoPlayerBase::LcZoomControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcBrightnessControl* CMusEngVideoPlayerBase::LcBrightnessControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::EnableLcWindowL( TBool aEnable )
+ {
+ iDisplayHandler.EnableDisplayL( aEnable );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngVideoPlayerBase::IsLcWindowEnabled()
+ {
+ return iDisplayHandler.IsDisplayEnabled();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::SetLcWindowRectL( TRect aRect )
+ {
+ iDisplayHandler.SetRectL( aRect );
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngVideoPlayerBase::LcWindowRect()
+ {
+ return iDisplayHandler.Rect();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation )
+ {
+ if ( aOrientation == MLcWindow::ELandscape )
+ {
+ iDisplayHandler.SetOrientationL( MMusEngDisplayHandler::ELandscape );
+ }
+ else
+ {
+ iDisplayHandler.SetOrientationL( MMusEngDisplayHandler::EPortrait );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+MLcWindow::TLcWindowOrientation CMusEngVideoPlayerBase::LcWindowOrientationL()
+ {
+ MLcWindow::TLcWindowOrientation orientation;
+ if ( iDisplayHandler.OrientationL() == MMusEngDisplayHandler::ELandscape )
+ {
+ orientation = MLcWindow::ELandscape;
+ }
+ else
+ {
+ orientation = MLcWindow::EPortrait;
+ }
+ return orientation;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ipvtengine/src/svptimer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,120 @@
+/*
+* Copyright (c) 2006 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: Timer service for SVP
+*
+*/
+
+
+#include "svptimer.h"
+#include "svptimerobserver.h"
+
+
+const TInt KMicroSecondsCoefficient = 1000;
+
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::CSVPTimer
+// ---------------------------------------------------------------------------
+//
+CSVPTimer::CSVPTimer( MSVPTimerObserver& aObserver, TInt aTimerId ):
+ CTimer( EPriorityHigh ),
+ iObserver( aObserver ),
+ iId( aTimerId )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::CSVPTimer
+// ---------------------------------------------------------------------------
+//
+void CSVPTimer::ConstructL()
+ {
+ CTimer::ConstructL();
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::CSVPTimer
+// ---------------------------------------------------------------------------
+//
+CSVPTimer* CSVPTimer::NewL( MSVPTimerObserver& aObserver,
+ TInt aTimerId )
+ {
+ CSVPTimer* self = new (ELeave) CSVPTimer( aObserver, aTimerId );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::~CSVPTimer
+// ---------------------------------------------------------------------------
+//
+CSVPTimer::~CSVPTimer()
+ {
+ Cancel();
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::RunL
+// ---------------------------------------------------------------------------
+//
+void CSVPTimer::RunL()
+ {
+ iObserver.TimedOut( iId );
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::SetTime
+// ---------------------------------------------------------------------------
+//
+void CSVPTimer::SetTime( TInt aMilliSeconds, TInt aTimerId )
+ {
+ if ( IsActive() )
+ {
+ //iObserver.TimedOut( iId ); // Discard previous request
+ Cancel();
+ }
+
+ iId = aTimerId;
+
+ // Milliseconds to microseconds conversion
+ const TTimeIntervalMicroSeconds32 time(
+ KMicroSecondsCoefficient * aMilliSeconds );
+
+ CTimer::After( time ); // NB, CTimer::After calls SetActive
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::Stop
+// ---------------------------------------------------------------------------
+//
+void CSVPTimer::Stop()
+ {
+ Cancel();
+ }
+
+// ---------------------------------------------------------------------------
+// CSVPTimer::Id
+// ---------------------------------------------------------------------------
+//
+TInt CSVPTimer::Id() const
+ {
+ return iId;
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/bwins/mceclientstubu.def Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,310 @@
+EXPORTS
+ ??0TMceTransactionDataContainer@@QAE@XZ @ 1 NONAME ; TMceTransactionDataContainer::TMceTransactionDataContainer(void)
+ ??1CMceAmrCodec@@UAE@XZ @ 2 NONAME ; CMceAmrCodec::~CMceAmrCodec(void)
+ ??1CMceAudioStream@@UAE@XZ @ 3 NONAME ; CMceAudioStream::~CMceAudioStream(void)
+ ??1CMceAvcCodec@@UAE@XZ @ 4 NONAME ; CMceAvcCodec::~CMceAvcCodec(void)
+ ??1CMceCameraSource@@UAE@XZ @ 5 NONAME ; CMceCameraSource::~CMceCameraSource(void)
+ ??1CMceDisplaySink@@UAE@XZ @ 6 NONAME ; CMceDisplaySink::~CMceDisplaySink(void)
+ ??1CMceFileSink@@UAE@XZ @ 7 NONAME ; CMceFileSink::~CMceFileSink(void)
+ ??1CMceFileSource@@UAE@XZ @ 8 NONAME ; CMceFileSource::~CMceFileSource(void)
+ ??1CMceH263Codec@@UAE@XZ @ 9 NONAME ; CMceH263Codec::~CMceH263Codec(void)
+ ??1CMceInSession@@UAE@XZ @ 10 NONAME ; CMceInSession::~CMceInSession(void)
+ ??1CMceManager@@UAE@XZ @ 11 NONAME ; CMceManager::~CMceManager(void)
+ ??1CMceMediaSink@@UAE@XZ @ 12 NONAME ; CMceMediaSink::~CMceMediaSink(void)
+ ??1CMceMediaSource@@UAE@XZ @ 13 NONAME ; CMceMediaSource::~CMceMediaSource(void)
+ ??1CMceMediaStream@@UAE@XZ @ 14 NONAME ; CMceMediaStream::~CMceMediaStream(void)
+ ??1CMceOutSession@@UAE@XZ @ 15 NONAME ; CMceOutSession::~CMceOutSession(void)
+ ??1CMceRtpSink@@UAE@XZ @ 16 NONAME ; CMceRtpSink::~CMceRtpSink(void)
+ ??1CMceRtpSource@@UAE@XZ @ 17 NONAME ; CMceRtpSource::~CMceRtpSource(void)
+ ??1CMceSession@@UAE@XZ @ 18 NONAME ; CMceSession::~CMceSession(void)
+ ??1CMceSpeakerSink@@UAE@XZ @ 19 NONAME ; CMceSpeakerSink::~CMceSpeakerSink(void)
+ ??1CMceStreamBundle@@UAE@XZ @ 20 NONAME ; CMceStreamBundle::~CMceStreamBundle(void)
+ ??1CMceVideoStream@@UAE@XZ @ 21 NONAME ; CMceVideoStream::~CMceVideoStream(void)
+ ??1CMusTestSessionSimulator@@QAE@XZ @ 22 NONAME ; CMusTestSessionSimulator::~CMusTestSessionSimulator(void)
+ ??1CSIP@@UAE@XZ @ 23 NONAME ; CSIP::~CSIP(void)
+ ??1CSIPManagedProfile@@UAE@XZ @ 24 NONAME ; CSIPManagedProfile::~CSIPManagedProfile(void)
+ ??1CSIPManagedProfileRegistry@@UAE@XZ @ 25 NONAME ; CSIPManagedProfileRegistry::~CSIPManagedProfileRegistry(void)
+ ??1CSIPProfile@@UAE@XZ @ 26 NONAME ; CSIPProfile::~CSIPProfile(void)
+ ??1CSIPProfileRegistry@@UAE@XZ @ 27 NONAME ; CSIPProfileRegistry::~CSIPProfileRegistry(void)
+ ??1CSIPProfileRegistryBase@@UAE@XZ @ 28 NONAME ; CSIPProfileRegistryBase::~CSIPProfileRegistryBase(void)
+ ?AcceptL@CMceInSession@@QAEXABVTDesC8@@KPAVCDesC8Array@@PAVHBufC8@@2@Z @ 29 NONAME ; void CMceInSession::AcceptL(class TDesC8 const &, unsigned long, class CDesC8Array *, class HBufC8 *, class HBufC8 *)
+ ?AcceptL@CMceInSession@@QAEXXZ @ 30 NONAME ; void CMceInSession::AcceptL(void)
+ ?AddBundleL@CMceSession@@QAEXPAVCMceStreamBundle@@@Z @ 31 NONAME ; void CMceSession::AddBundleL(class CMceStreamBundle *)
+ ?AddCodecL@CMceAudioStream@@QAEXPAVCMceAudioCodec@@@Z @ 32 NONAME ; void CMceAudioStream::AddCodecL(class CMceAudioCodec *)
+ ?AddCodecL@CMceVideoStream@@QAEXPAVCMceVideoCodec@@@Z @ 33 NONAME ; void CMceVideoStream::AddCodecL(class CMceVideoCodec *)
+ ?AddSinkL@CMceMediaStream@@QAEXPAVCMceMediaSink@@@Z @ 34 NONAME ; void CMceMediaStream::AddSinkL(class CMceMediaSink *)
+ ?AddStreamL@CMceOutSession@@UAEXPAVCMceMediaStream@@@Z @ 35 NONAME ; void CMceOutSession::AddStreamL(class CMceMediaStream *)
+ ?AddStreamL@CMceSession@@UAEXPAVCMceMediaStream@@@Z @ 36 NONAME ; void CMceSession::AddStreamL(class CMceMediaStream *)
+ ?AddStreamL@CMceStreamBundle@@QAEXAAVCMceMediaStream@@@Z @ 37 NONAME ; void CMceStreamBundle::AddStreamL(class CMceMediaStream &)
+ ?AllowedBitrates@CMceCodec@@QBEIXZ @ 38 NONAME ; unsigned int CMceCodec::AllowedBitrates(void) const
+ ?AllowedFrameRates@CMceVideoCodec@@QBEIXZ @ 39 NONAME ; unsigned int CMceVideoCodec::AllowedFrameRates(void) const
+ ?AllowedResolutions@CMceVideoCodec@@QBEIXZ @ 40 NONAME ; unsigned int CMceVideoCodec::AllowedResolutions(void) const
+ ?BindL@CMceMediaStream@@QAEXPAV1@@Z @ 41 NONAME ; void CMceMediaStream::BindL(class CMceMediaStream *)
+ ?Bitrate@CMceCodec@@QBEIXZ @ 42 NONAME ; unsigned int CMceCodec::Bitrate(void) const
+ ?BoundStream@CMceMediaStream@@QBEHXZ @ 43 NONAME ; int CMceMediaStream::BoundStream(void) const
+ ?BoundStreamL@CMceMediaStream@@QBEAAV1@XZ @ 44 NONAME ; class CMceMediaStream & CMceMediaStream::BoundStreamL(void) const
+ ?BrightnessL@CMceCameraSource@@QAEHXZ @ 45 NONAME ; int CMceCameraSource::BrightnessL(void)
+ ?Bundles@CMceSession@@QBEABV?$RPointerArray@VCMceStreamBundle@@@@XZ @ 46 NONAME ; class RPointerArray<class CMceStreamBundle> const & CMceSession::Bundles(void) const
+ ?CamerasAvailable@CMceCameraSource@@QBEHXZ @ 47 NONAME ; int CMceCameraSource::CamerasAvailable(void) const
+ ?CancelL@CMceOutSession@@QAEXXZ @ 48 NONAME ; void CMceOutSession::CancelL(void)
+ ?CancelTranscodeL@CMceFileSource@@QAEXXZ @ 49 NONAME ; void CMceFileSource::CancelTranscodeL(void)
+ ?Clear@TMceTransactionDataContainer@@QAEXXZ @ 50 NONAME ; void TMceTransactionDataContainer::Clear(void)
+ ?CloneL@CMceAmrCodec@@UBEPAVCMceAudioCodec@@XZ @ 51 NONAME ; class CMceAudioCodec * CMceAmrCodec::CloneL(void) const
+ ?CloneL@CMceAvcCodec@@UBEPAVCMceVideoCodec@@XZ @ 52 NONAME ; class CMceVideoCodec * CMceAvcCodec::CloneL(void) const
+ ?CloneL@CMceH263Codec@@UBEPAVCMceVideoCodec@@XZ @ 53 NONAME ; class CMceVideoCodec * CMceH263Codec::CloneL(void) const
+ ?CodecMode@CMceCodec@@QBEIXZ @ 54 NONAME ; unsigned int CMceCodec::CodecMode(void) const
+ ?Codecs@CMceAudioStream@@QAEABV?$RPointerArray@VCMceAudioCodec@@@@XZ @ 55 NONAME ; class RPointerArray<class CMceAudioCodec> const & CMceAudioStream::Codecs(void)
+ ?Codecs@CMceVideoStream@@QAEABV?$RPointerArray@VCMceVideoCodec@@@@XZ @ 56 NONAME ; class RPointerArray<class CMceVideoCodec> const & CMceVideoStream::Codecs(void)
+ ?ConfigKeyL@CMceVideoCodec@@QBEPAVHBufC8@@XZ @ 57 NONAME ; class HBufC8 * CMceVideoCodec::ConfigKeyL(void) const
+ ?Connection@CSIP@@QBEPAVCSIPConnection@@K@Z @ 58 NONAME ; class CSIPConnection * CSIP::Connection(unsigned long) const
+ ?ConnectionActive@CMceSession@@QBEHXZ @ 59 NONAME ; int CMceSession::ConnectionActive(void) const
+ ?ContrastL@CMceCameraSource@@QAEHXZ @ 60 NONAME ; int CMceCameraSource::ContrastL(void)
+ ?CurrentMediaElement@CMceFileSource@@QAEHI@Z @ 61 NONAME ; int CMceFileSource::CurrentMediaElement(unsigned int)
+ ?DefaultHeadersL@CMceManager@@QBEPAVCDesC8Array@@ABVTDesC8@@@Z @ 62 NONAME ; class CDesC8Array * CMceManager::DefaultHeadersL(class TDesC8 const &) const
+ ?DefaultProfileL@CSIPProfileRegistryBase@@QAEPAVCSIPProfile@@XZ @ 63 NONAME ; class CSIPProfile * CSIPProfileRegistryBase::DefaultProfileL(void)
+ ?DigitalZoomFactorL@CMceCameraSource@@QAEHXZ @ 64 NONAME ; int CMceCameraSource::DigitalZoomFactorL(void)
+ ?Disable@CSIPProfileRegistry@@QAEHAAVCSIPProfile@@@Z @ 65 NONAME ; int CSIPProfileRegistry::Disable(class CSIPProfile &)
+ ?DisableInactivityTimerL@CMceRtpSource@@QAEXXZ @ 66 NONAME ; void CMceRtpSource::DisableInactivityTimerL(void)
+ ?DisableL@CMceCameraSource@@UAEXXZ @ 67 NONAME ; void CMceCameraSource::DisableL(void)
+ ?DisableL@CMceDisplaySink@@UAEXXZ @ 68 NONAME ; void CMceDisplaySink::DisableL(void)
+ ?DisableL@CMceFileSink@@UAEXXZ @ 69 NONAME ; void CMceFileSink::DisableL(void)
+ ?DisableL@CMceFileSource@@UAEXXZ @ 70 NONAME ; void CMceFileSource::DisableL(void)
+ ?DisableL@CMceMediaStream@@UAEXXZ @ 71 NONAME ; void CMceMediaStream::DisableL(void)
+ ?DisableL@CMceRtpSink@@UAEXXZ @ 72 NONAME ; void CMceRtpSink::DisableL(void)
+ ?DisableL@CMceRtpSource@@UAEXXZ @ 73 NONAME ; void CMceRtpSource::DisableL(void)
+ ?DisableL@CMceSpeakerSink@@UAEXXZ @ 74 NONAME ; void CMceSpeakerSink::DisableL(void)
+ ?DisableSsrcL@CMceRtpSource@@QAEXI@Z @ 75 NONAME ; void CMceRtpSource::DisableSsrcL(unsigned int)
+ ?DisplayRectL@CMceDisplaySink@@QAE?BVTRect@@XZ @ 76 NONAME ; class TRect const CMceDisplaySink::DisplayRectL(void)
+ ?DisplaysAvailable@CMceDisplaySink@@QBEHXZ @ 77 NONAME ; int CMceDisplaySink::DisplaysAvailable(void) const
+ ?DurationL@CMceFileSource@@QBE?AVTTimeIntervalMicroSeconds@@XZ @ 78 NONAME ; class TTimeIntervalMicroSeconds CMceFileSource::DurationL(void) const
+ ?EnableInactivityTimerL@CMceRtpSource@@QAEXK@Z @ 79 NONAME ; void CMceRtpSource::EnableInactivityTimerL(unsigned long)
+ ?EnableL@CMceCameraSource@@UAEXXZ @ 80 NONAME ; void CMceCameraSource::EnableL(void)
+ ?EnableL@CMceDisplaySink@@UAEXXZ @ 81 NONAME ; void CMceDisplaySink::EnableL(void)
+ ?EnableL@CMceFileSink@@UAEXXZ @ 82 NONAME ; void CMceFileSink::EnableL(void)
+ ?EnableL@CMceFileSource@@UAEXXZ @ 83 NONAME ; void CMceFileSource::EnableL(void)
+ ?EnableL@CMceMediaStream@@UAEXXZ @ 84 NONAME ; void CMceMediaStream::EnableL(void)
+ ?EnableL@CMceRtpSink@@UAEXXZ @ 85 NONAME ; void CMceRtpSink::EnableL(void)
+ ?EnableL@CMceRtpSource@@UAEXXZ @ 86 NONAME ; void CMceRtpSource::EnableL(void)
+ ?EnableL@CMceSpeakerSink@@UAEXXZ @ 87 NONAME ; void CMceSpeakerSink::EnableL(void)
+ ?EnableL@CSIPProfileRegistry@@QAEXAAVCSIPProfile@@AAVMSIPConnectionObserver@@@Z @ 88 NONAME ; void CSIPProfileRegistry::EnableL(class CSIPProfile &, class MSIPConnectionObserver &)
+ ?EnableSsrcL@CMceRtpSource@@QAEXI@Z @ 89 NONAME ; void CMceRtpSource::EnableSsrcL(unsigned int)
+ ?EnableVAD@CMceAmrCodec@@UAEHH@Z @ 90 NONAME ; int CMceAmrCodec::EnableVAD(int)
+ ?EstablishL@CMceOutSession@@QAEXKPAVCDesC8Array@@PAVHBufC8@@10@Z @ 91 NONAME ; void CMceOutSession::EstablishL(unsigned long, class CDesC8Array *, class HBufC8 *, class HBufC8 *, class CDesC8Array *)
+ ?ExposureL@CMceCameraSource@@QAE?AW4TExposure@CCamera@@XZ @ 92 NONAME ; enum CCamera::TExposure CMceCameraSource::ExposureL(void)
+ ?FourCC@CMceCodec@@QBEKXZ @ 93 NONAME ; unsigned long CMceCodec::FourCC(void) const
+ ?FrameRate@CMceVideoCodec@@QBENXZ @ 94 NONAME ; double CMceVideoCodec::FrameRate(void) const
+ ?FrameSize@CMceCodec@@QBEIXZ @ 95 NONAME ; unsigned int CMceCodec::FrameSize(void) const
+ ?GetCameraInfo@CMceCameraSource@@QBEXAAVTCameraInfo@@@Z @ 96 NONAME ; void CMceCameraSource::GetCameraInfo(class TCameraInfo &) const
+ ?GetContent@TMceTransactionDataContainer@@QAEPAVHBufC8@@XZ @ 97 NONAME ; class HBufC8 * TMceTransactionDataContainer::GetContent(void)
+ ?GetContentHeaders@TMceTransactionDataContainer@@QAEPAVCDesC8Array@@XZ @ 98 NONAME ; class CDesC8Array * TMceTransactionDataContainer::GetContentHeaders(void)
+ ?GetContentType@TMceTransactionDataContainer@@QAEPAVHBufC8@@XZ @ 99 NONAME ; class HBufC8 * TMceTransactionDataContainer::GetContentType(void)
+ ?GetHeaders@TMceTransactionDataContainer@@QAEPAVCDesC8Array@@XZ @ 100 NONAME ; class CDesC8Array * TMceTransactionDataContainer::GetHeaders(void)
+ ?GetModifierL@CMceSession@@QBEXKAAI@Z @ 101 NONAME ; void CMceSession::GetModifierL(unsigned long, unsigned int &) const
+ ?GetParameter@CSIPProfile@@QBEHKAAH@Z @ 102 NONAME ; int CSIPProfile::GetParameter(unsigned long, int &) const
+ ?GetParameter@CSIPProfile@@QBEHKAAK@Z @ 103 NONAME ; int CSIPProfile::GetParameter(unsigned long, unsigned long &) const
+ ?GetParameter@CSIPProfile@@QBEHKAAPBVMDesC8Array@@@Z @ 104 NONAME ; int CSIPProfile::GetParameter(unsigned long, class MDesC8Array const * &) const
+ ?GetParameter@CSIPProfile@@QBEHKAAPBVTDesC8@@@Z @ 105 NONAME ; int CSIPProfile::GetParameter(unsigned long, class TDesC8 const * &) const
+ ?GetReasonPhrase@TMceTransactionDataContainer@@QAEPAVHBufC8@@XZ @ 106 NONAME ; class HBufC8 * TMceTransactionDataContainer::GetReasonPhrase(void)
+ ?GetStatusCode@TMceTransactionDataContainer@@QAEHXZ @ 107 NONAME ; int TMceTransactionDataContainer::GetStatusCode(void)
+ ?IsEnabled@CMceMediaSink@@QBEHXZ @ 108 NONAME ; int CMceMediaSink::IsEnabled(void) const
+ ?IsEnabled@CMceMediaSource@@QBEHXZ @ 109 NONAME ; int CMceMediaSource::IsEnabled(void) const
+ ?IsEnabled@CMceMediaStream@@QBEHXZ @ 110 NONAME ; int CMceMediaStream::IsEnabled(void) const
+ ?IsEnabled@CSIPProfileRegistry@@QBEHABVCSIPProfile@@@Z @ 111 NONAME ; int CSIPProfileRegistry::IsEnabled(class CSIPProfile const &) const
+ ?IsSigCompSupportedL@CSIP@@QBEHXZ @ 112 NONAME ; int CSIP::IsSigCompSupportedL(void) const
+ ?IsSsrcEnabledL@CMceRtpSource@@QAEHI@Z @ 113 NONAME ; int CMceRtpSource::IsSsrcEnabledL(unsigned int)
+ ?KeepAliveData@CMceCodec@@QBEABVTDesC8@@XZ @ 114 NONAME ; class TDesC8 const & CMceCodec::KeepAliveData(void) const
+ ?KeepAlivePayloadType@CMceCodec@@QBEEXZ @ 115 NONAME ; unsigned char CMceCodec::KeepAlivePayloadType(void) const
+ ?KeepAliveTimer@CMceCodec@@QBEEXZ @ 116 NONAME ; unsigned char CMceCodec::KeepAliveTimer(void) const
+ ?LastPacket@CMceRtpSink@@QBEKXZ @ 117 NONAME ; unsigned long CMceRtpSink::LastPacket(void) const
+ ?LastRegistrationError@CSIPProfileRegistryBase@@QBEHABVCSIPProfile@@@Z @ 118 NONAME ; int CSIPProfileRegistryBase::LastRegistrationError(class CSIPProfile const &) const
+ ?LocalMediaPort@CMceMediaStream@@QBEIXZ @ 119 NONAME ; unsigned int CMceMediaStream::LocalMediaPort(void) const
+ ?MMFPriority@CMceCodec@@QBEHXZ @ 120 NONAME ; int CMceCodec::MMFPriority(void) const
+ ?MMFPriorityPreference@CMceCodec@@QBEHXZ @ 121 NONAME ; int CMceCodec::MMFPriorityPreference(void) const
+ ?MaxBitRate@CMceVideoCodec@@QBEIXZ @ 122 NONAME ; unsigned int CMceVideoCodec::MaxBitRate(void) const
+ ?MaxVolumeL@CMceSpeakerSink@@QBEHXZ @ 123 NONAME ; int CMceSpeakerSink::MaxVolumeL(void) const
+ ?MediaAttributeLinesL@CMceMediaStream@@QAEPAVMDesC8Array@@XZ @ 124 NONAME ; class MDesC8Array * CMceMediaStream::MediaAttributeLinesL(void)
+ ?MediaElementCountL@CMceFileSource@@QBEHI@Z @ 125 NONAME ; int CMceFileSource::MediaElementCountL(unsigned int) const
+ ?NegotiatedSecurityMechanismL@CSIP@@QAEPAVHBufC8@@ABVTDesC8@@@Z @ 126 NONAME ; class HBufC8 * CSIP::NegotiatedSecurityMechanismL(class TDesC8 const &)
+ ?NewL@CMceAudioStream@@SAPAV1@XZ @ 127 NONAME ; class CMceAudioStream * CMceAudioStream::NewL(void)
+ ?NewL@CMceAvcCodec@@SAPAV1@V?$TBuf8@$0BE@@@@Z @ 128 NONAME ; class CMceAvcCodec * CMceAvcCodec::NewL(class TBuf8<20>)
+ ?NewL@CMceCameraSource@@SAPAV1@AAVCMceManager@@@Z @ 129 NONAME ; class CMceCameraSource * CMceCameraSource::NewL(class CMceManager &)
+ ?NewL@CMceCameraSource@@SAPAV1@XZ @ 130 NONAME ; class CMceCameraSource * CMceCameraSource::NewL(void)
+ ?NewL@CMceDisplaySink@@SAPAV1@AAVCMceManager@@@Z @ 131 NONAME ; class CMceDisplaySink * CMceDisplaySink::NewL(class CMceManager &)
+ ?NewL@CMceDisplaySink@@SAPAV1@XZ @ 132 NONAME ; class CMceDisplaySink * CMceDisplaySink::NewL(void)
+ ?NewL@CMceFileSink@@SAPAV1@ABV?$TBuf@$0BAA@@@@Z @ 133 NONAME ; class CMceFileSink * CMceFileSink::NewL(class TBuf<256> const &)
+ ?NewL@CMceFileSource@@SAPAV1@AAVCMceManager@@ABV?$TBuf@$0BAA@@@@Z @ 134 NONAME ; class CMceFileSource * CMceFileSource::NewL(class CMceManager &, class TBuf<256> const &)
+ ?NewL@CMceH263Codec@@SAPAV1@V?$TBuf8@$0BE@@@@Z @ 135 NONAME ; class CMceH263Codec * CMceH263Codec::NewL(class TBuf8<20>)
+ ?NewL@CMceInSession@@SAPAV1@AAVCMceManager@@ABVTDesC8@@@Z @ 136 NONAME ; class CMceInSession * CMceInSession::NewL(class CMceManager &, class TDesC8 const &)
+ ?NewL@CMceInSession@@SAPAV1@XZ @ 137 NONAME ; class CMceInSession * CMceInSession::NewL(void)
+ ?NewL@CMceManager@@SAPAV1@ABVTUid@@PAVTMceTransactionDataContainer@@@Z @ 138 NONAME ; class CMceManager * CMceManager::NewL(class TUid const &, class TMceTransactionDataContainer *)
+ ?NewL@CMceOutSession@@SAPAV1@AAVCMceEvent@@@Z @ 139 NONAME ; class CMceOutSession * CMceOutSession::NewL(class CMceEvent &)
+ ?NewL@CMceOutSession@@SAPAV1@AAVCMceManager@@AAVCSIPProfile@@ABVTDesC8@@PAVHBufC8@@@Z @ 140 NONAME ; class CMceOutSession * CMceOutSession::NewL(class CMceManager &, class CSIPProfile &, class TDesC8 const &, class HBufC8 *)
+ ?NewL@CMceOutSession@@SAPAV1@AAVCMceRefer@@@Z @ 141 NONAME ; class CMceOutSession * CMceOutSession::NewL(class CMceRefer &)
+ ?NewL@CMceOutSession@@SAPAV1@XZ @ 142 NONAME ; class CMceOutSession * CMceOutSession::NewL(void)
+ ?NewL@CMceRtpSink@@SAPAV1@HPAVHBufC8@@@Z @ 143 NONAME ; class CMceRtpSink * CMceRtpSink::NewL(int, class HBufC8 *)
+ ?NewL@CMceRtpSink@@SAPAV1@XZ @ 144 NONAME ; class CMceRtpSink * CMceRtpSink::NewL(void)
+ ?NewL@CMceRtpSource@@SAPAV1@IIKPAVHBufC8@@@Z @ 145 NONAME ; class CMceRtpSource * CMceRtpSource::NewL(unsigned int, unsigned int, unsigned long, class HBufC8 *)
+ ?NewL@CMceSpeakerSink@@SAPAV1@XZ @ 146 NONAME ; class CMceSpeakerSink * CMceSpeakerSink::NewL(void)
+ ?NewL@CMceStreamBundle@@SAPAV1@W4TMceStreamBundleType@1@@Z @ 147 NONAME ; class CMceStreamBundle * CMceStreamBundle::NewL(enum CMceStreamBundle::TMceStreamBundleType)
+ ?NewL@CMceVideoStream@@SAPAV1@XZ @ 148 NONAME ; class CMceVideoStream * CMceVideoStream::NewL(void)
+ ?NewL@CSIP@@SAPAV1@ABVTUid@@AAVMSIPObserver@@@Z @ 149 NONAME ; class CSIP * CSIP::NewL(class TUid const &, class MSIPObserver &)
+ ?NewL@CSIPManagedProfileRegistry@@SAPAV1@AAVMSIPProfileRegistryObserver@@@Z @ 150 NONAME ; class CSIPManagedProfileRegistry * CSIPManagedProfileRegistry::NewL(class MSIPProfileRegistryObserver &)
+ ?NewL@CSIPProfileRegistry@@SAPAV1@AAVCSIP@@AAVMSIPProfileRegistryObserver@@@Z @ 151 NONAME ; class CSIPProfileRegistry * CSIPProfileRegistry::NewL(class CSIP &, class MSIPProfileRegistryObserver &)
+ ?NewLC@CMceAudioStream@@SAPAV1@XZ @ 152 NONAME ; class CMceAudioStream * CMceAudioStream::NewLC(void)
+ ?NewLC@CMceAvcCodec@@SAPAV1@V?$TBuf8@$0BE@@@@Z @ 153 NONAME ; class CMceAvcCodec * CMceAvcCodec::NewLC(class TBuf8<20>)
+ ?NewLC@CMceCameraSource@@SAPAV1@AAVCMceManager@@@Z @ 154 NONAME ; class CMceCameraSource * CMceCameraSource::NewLC(class CMceManager &)
+ ?NewLC@CMceCameraSource@@SAPAV1@XZ @ 155 NONAME ; class CMceCameraSource * CMceCameraSource::NewLC(void)
+ ?NewLC@CMceDisplaySink@@SAPAV1@AAVCMceManager@@@Z @ 156 NONAME ; class CMceDisplaySink * CMceDisplaySink::NewLC(class CMceManager &)
+ ?NewLC@CMceDisplaySink@@SAPAV1@XZ @ 157 NONAME ; class CMceDisplaySink * CMceDisplaySink::NewLC(void)
+ ?NewLC@CMceFileSink@@SAPAV1@ABV?$TBuf@$0BAA@@@@Z @ 158 NONAME ; class CMceFileSink * CMceFileSink::NewLC(class TBuf<256> const &)
+ ?NewLC@CMceFileSource@@SAPAV1@AAVCMceManager@@ABV?$TBuf@$0BAA@@@@Z @ 159 NONAME ; class CMceFileSource * CMceFileSource::NewLC(class CMceManager &, class TBuf<256> const &)
+ ?NewLC@CMceH263Codec@@SAPAV1@V?$TBuf8@$0BE@@@@Z @ 160 NONAME ; class CMceH263Codec * CMceH263Codec::NewLC(class TBuf8<20>)
+ ?NewLC@CMceRtpSink@@SAPAV1@XZ @ 161 NONAME ; class CMceRtpSink * CMceRtpSink::NewLC(void)
+ ?NewLC@CMceRtpSource@@SAPAV1@IIKPAVHBufC8@@@Z @ 162 NONAME ; class CMceRtpSource * CMceRtpSource::NewLC(unsigned int, unsigned int, unsigned long, class HBufC8 *)
+ ?NewLC@CMceSpeakerSink@@SAPAV1@XZ @ 163 NONAME ; class CMceSpeakerSink * CMceSpeakerSink::NewLC(void)
+ ?NewLC@CMceStreamBundle@@SAPAV1@W4TMceStreamBundleType@1@@Z @ 164 NONAME ; class CMceStreamBundle * CMceStreamBundle::NewLC(enum CMceStreamBundle::TMceStreamBundleType)
+ ?NewLC@CMceVideoStream@@SAPAV1@XZ @ 165 NONAME ; class CMceVideoStream * CMceVideoStream::NewLC(void)
+ ?NewLC@CSIP@@SAPAV1@ABVTUid@@AAVMSIPObserver@@@Z @ 166 NONAME ; class CSIP * CSIP::NewLC(class TUid const &, class MSIPObserver &)
+ ?NewLC@CSIPManagedProfileRegistry@@SAPAV1@AAVMSIPProfileRegistryObserver@@@Z @ 167 NONAME ; class CSIPManagedProfileRegistry * CSIPManagedProfileRegistry::NewLC(class MSIPProfileRegistryObserver &)
+ ?NewLC@CSIPProfileRegistry@@SAPAV1@AAVCSIP@@AAVMSIPProfileRegistryObserver@@@Z @ 168 NONAME ; class CSIPProfileRegistry * CSIPProfileRegistry::NewLC(class CSIP &, class MSIPProfileRegistryObserver &)
+ ?Originator@CMceSession@@QBEABVTDesC8@@XZ @ 169 NONAME ; class TDesC8 const & CMceSession::Originator(void) const
+ ?PayloadType@CMceCodec@@QBEEXZ @ 170 NONAME ; unsigned char CMceCodec::PayloadType(void) const
+ ?PositionL@CMceFileSource@@QBE?AVTTimeIntervalMicroSeconds@@XZ @ 171 NONAME ; class TTimeIntervalMicroSeconds CMceFileSource::PositionL(void) const
+ ?Preference@CMceCodec@@QBEHXZ @ 172 NONAME ; int CMceCodec::Preference(void) const
+ ?PriorityL@CMceDisplaySink@@QAEIXZ @ 173 NONAME ; unsigned int CMceDisplaySink::PriorityL(void)
+ ?Profile@CMceSession@@QBEKXZ @ 174 NONAME ; unsigned long CMceSession::Profile(void) const
+ ?ProfileL@CSIPProfileRegistryBase@@QAEPAVCSIPProfile@@K@Z @ 175 NONAME ; class CSIPProfile * CSIPProfileRegistryBase::ProfileL(unsigned long)
+ ?ProfilesL@CSIPProfileRegistryBase@@QAEXAAV?$RPointerArray@VCSIPProfile@@@@@Z @ 176 NONAME ; void CSIPProfileRegistryBase::ProfilesL(class RPointerArray<class CSIPProfile> &)
+ ?ProfilesL@CSIPProfileRegistryBase@@QAEXABVTDesC8@@AAV?$RPointerArray@VCSIPProfile@@@@@Z @ 177 NONAME ; void CSIPProfileRegistryBase::ProfilesL(class TDesC8 const &, class RPointerArray<class CSIPProfile> &)
+ ?ProfilesL@CSIPProfileRegistryBase@@QAEXABVTSIPProfileTypeInfo@@AAV?$RPointerArray@VCSIPProfile@@@@@Z @ 178 NONAME ; void CSIPProfileRegistryBase::ProfilesL(class TSIPProfileTypeInfo const &, class RPointerArray<class CSIPProfile> &)
+ ?Recipient@CMceSession@@QBEABVTDesC8@@XZ @ 179 NONAME ; class TDesC8 const & CMceSession::Recipient(void) const
+ ?RejectL@CMceInSession@@QAEXABVTDesC8@@KPAVCDesC8Array@@PAVHBufC8@@2@Z @ 180 NONAME ; void CMceInSession::RejectL(class TDesC8 const &, unsigned long, class CDesC8Array *, class HBufC8 *, class HBufC8 *)
+ ?RejectL@CMceInSession@@QAEXXZ @ 181 NONAME ; void CMceInSession::RejectL(void)
+ ?RemoveBundleL@CMceSession@@QAEXAAVCMceStreamBundle@@@Z @ 182 NONAME ; void CMceSession::RemoveBundleL(class CMceStreamBundle &)
+ ?RemoveCodecL@CMceAudioStream@@QAEXAAVCMceAudioCodec@@@Z @ 183 NONAME ; void CMceAudioStream::RemoveCodecL(class CMceAudioCodec &)
+ ?RemoveCodecL@CMceVideoStream@@QAEXAAVCMceVideoCodec@@@Z @ 184 NONAME ; void CMceVideoStream::RemoveCodecL(class CMceVideoCodec &)
+ ?RemoveSinkL@CMceMediaStream@@QAEXAAVCMceMediaSink@@@Z @ 185 NONAME ; void CMceMediaStream::RemoveSinkL(class CMceMediaSink &)
+ ?RemoveStreamL@CMceSession@@QAEXAAVCMceMediaStream@@@Z @ 186 NONAME ; void CMceSession::RemoveStreamL(class CMceMediaStream &)
+ ?RemoveStreamL@CMceStreamBundle@@QAEXAAVCMceMediaStream@@@Z @ 187 NONAME ; void CMceStreamBundle::RemoveStreamL(class CMceMediaStream &)
+ ?ReplaceCodecsL@CMceVideoStream@@QAEXPAV?$RPointerArray@VCMceVideoCodec@@@@@Z @ 188 NONAME ; void CMceVideoStream::ReplaceCodecsL(class RPointerArray<class CMceVideoCodec> *)
+ ?Resolution@CMceVideoCodec@@QBE?AVTSize@@XZ @ 189 NONAME ; class TSize CMceVideoCodec::Resolution(void) const
+ ?RingL@CMceInSession@@QAEXPAVCDesC8Array@@PAVHBufC8@@1@Z @ 190 NONAME ; void CMceInSession::RingL(class CDesC8Array *, class HBufC8 *, class HBufC8 *)
+ ?RotationL@CMceDisplaySink@@QAE?AW4TRotation@1@XZ @ 191 NONAME ; enum CMceDisplaySink::TRotation CMceDisplaySink::RotationL(void)
+ ?RoutingL@CMceSpeakerSink@@QBEHXZ @ 192 NONAME ; int CMceSpeakerSink::RoutingL(void) const
+ ?SIP@CSIPProfileRegistry@@QBEAAVCSIP@@XZ @ 193 NONAME ; class CSIP & CSIPProfileRegistry::SIP(void) const
+ ?SaveL@CSIPManagedProfileRegistry@@QAEXAAVCSIPProfile@@@Z @ 194 NONAME ; void CSIPManagedProfileRegistry::SaveL(class CSIPProfile &)
+ ?SdpName@CMceCodec@@QBEABVTDesC8@@XZ @ 195 NONAME ; class TDesC8 const & CMceCodec::SdpName(void) const
+ ?SendRRL@CMceRtpSource@@QAEXXZ @ 196 NONAME ; void CMceRtpSource::SendRRL(void)
+ ?SendSRL@CMceRtpSink@@QAEXXZ @ 197 NONAME ; void CMceRtpSink::SendSRL(void)
+ ?Session@CMceMediaStream@@QBEPAVCMceSession@@XZ @ 198 NONAME ; class CMceSession * CMceMediaStream::Session(void) const
+ ?SessionSDPLinesL@CMceSession@@QAEPAVMDesC8Array@@XZ @ 199 NONAME ; class MDesC8Array * CMceSession::SessionSDPLinesL(void)
+ ?SessionTimer@CMceSession@@QBEKXZ @ 200 NONAME ; unsigned long CMceSession::SessionTimer(void) const
+ ?Sessions@CMceManager@@QBEABV?$RPointerArray@VCMceSession@@@@XZ @ 201 NONAME ; class RPointerArray<class CMceSession> const & CMceManager::Sessions(void) const
+ ?SetAllowedBitrates@CMceAmrCodec@@UAEHI@Z @ 202 NONAME ; int CMceAmrCodec::SetAllowedBitrates(unsigned int)
+ ?SetAllowedBitrates@CMceAvcCodec@@UAEHI@Z @ 203 NONAME ; int CMceAvcCodec::SetAllowedBitrates(unsigned int)
+ ?SetAllowedBitrates@CMceH263Codec@@UAEHI@Z @ 204 NONAME ; int CMceH263Codec::SetAllowedBitrates(unsigned int)
+ ?SetAllowedFrameRatesL@CMceAvcCodec@@UAEXI@Z @ 205 NONAME ; void CMceAvcCodec::SetAllowedFrameRatesL(unsigned int)
+ ?SetAllowedFrameRatesL@CMceH263Codec@@UAEXI@Z @ 206 NONAME ; void CMceH263Codec::SetAllowedFrameRatesL(unsigned int)
+ ?SetAllowedResolutionsL@CMceAvcCodec@@UAEXI@Z @ 207 NONAME ; void CMceAvcCodec::SetAllowedResolutionsL(unsigned int)
+ ?SetAllowedResolutionsL@CMceH263Codec@@UAEXI@Z @ 208 NONAME ; void CMceH263Codec::SetAllowedResolutionsL(unsigned int)
+ ?SetBitrate@CMceAmrCodec@@UAEHI@Z @ 209 NONAME ; int CMceAmrCodec::SetBitrate(unsigned int)
+ ?SetBitrate@CMceAvcCodec@@UAEHI@Z @ 210 NONAME ; int CMceAvcCodec::SetBitrate(unsigned int)
+ ?SetBitrate@CMceH263Codec@@UAEHI@Z @ 211 NONAME ; int CMceH263Codec::SetBitrate(unsigned int)
+ ?SetBrightnessL@CMceCameraSource@@QAEXH@Z @ 212 NONAME ; void CMceCameraSource::SetBrightnessL(int)
+ ?SetCameraIndexL@CMceCameraSource@@QAEXH@Z @ 213 NONAME ; void CMceCameraSource::SetCameraIndexL(int)
+ ?SetCodecMode@CMceAmrCodec@@UAEHI@Z @ 214 NONAME ; int CMceAmrCodec::SetCodecMode(unsigned int)
+ ?SetCodecMode@CMceAvcCodec@@UAEHI@Z @ 215 NONAME ; int CMceAvcCodec::SetCodecMode(unsigned int)
+ ?SetCodecMode@CMceH263Codec@@UAEHI@Z @ 216 NONAME ; int CMceH263Codec::SetCodecMode(unsigned int)
+ ?SetConfigKeyL@CMceAvcCodec@@UAEXABVTDesC8@@@Z @ 217 NONAME ; void CMceAvcCodec::SetConfigKeyL(class TDesC8 const &)
+ ?SetConfigKeyL@CMceH263Codec@@UAEXABVTDesC8@@@Z @ 218 NONAME ; void CMceH263Codec::SetConfigKeyL(class TDesC8 const &)
+ ?SetContent@TMceTransactionDataContainer@@QAEXPAVHBufC8@@@Z @ 219 NONAME ; void TMceTransactionDataContainer::SetContent(class HBufC8 *)
+ ?SetContentHeaders@TMceTransactionDataContainer@@QAEXPAVCDesC8Array@@@Z @ 220 NONAME ; void TMceTransactionDataContainer::SetContentHeaders(class CDesC8Array *)
+ ?SetContentType@TMceTransactionDataContainer@@QAEXPAVHBufC8@@@Z @ 221 NONAME ; void TMceTransactionDataContainer::SetContentType(class HBufC8 *)
+ ?SetContrastL@CMceCameraSource@@QAEXH@Z @ 222 NONAME ; void CMceCameraSource::SetContrastL(int)
+ ?SetCurrentMediaElementL@CMceFileSource@@QAEXIH@Z @ 223 NONAME ; void CMceFileSource::SetCurrentMediaElementL(unsigned int, int)
+ ?SetDefaultHeadersL@CMceManager@@QAEXPAVCDesC8Array@@0@Z @ 224 NONAME ; void CMceManager::SetDefaultHeadersL(class CDesC8Array *, class CDesC8Array *)
+ ?SetDigitalZoomFactorL@CMceCameraSource@@QAEXH@Z @ 225 NONAME ; void CMceCameraSource::SetDigitalZoomFactorL(int)
+ ?SetDisplay@CMceDisplaySink@@QAEXAAVRWindow@@AAVCWindowGc@@@Z @ 226 NONAME ; void CMceDisplaySink::SetDisplay(class RWindow &, class CWindowGc &)
+ ?SetDisplayIndexL@CMceDisplaySink@@QAEXH@Z @ 227 NONAME ; void CMceDisplaySink::SetDisplayIndexL(int)
+ ?SetDisplayRectL@CMceDisplaySink@@QAEXABVTRect@@@Z @ 228 NONAME ; void CMceDisplaySink::SetDisplayRectL(class TRect const &)
+ ?SetEventObserver@CMceManager@@QAEXPAVMMceEventObserver@@@Z @ 229 NONAME ; void CMceManager::SetEventObserver(class MMceEventObserver *)
+ ?SetExposureL@CMceCameraSource@@QAEXW4TExposure@CCamera@@@Z @ 230 NONAME ; void CMceCameraSource::SetExposureL(enum CCamera::TExposure)
+ ?SetFastForwardL@CMceFileSource@@QAEXH@Z @ 231 NONAME ; void CMceFileSource::SetFastForwardL(int)
+ ?SetFastRewindL@CMceFileSource@@QAEXH@Z @ 232 NONAME ; void CMceFileSource::SetFastRewindL(int)
+ ?SetFrameRateL@CMceAvcCodec@@UAEXN@Z @ 233 NONAME ; void CMceAvcCodec::SetFrameRateL(double)
+ ?SetFrameRateL@CMceH263Codec@@UAEXN@Z @ 234 NONAME ; void CMceH263Codec::SetFrameRateL(double)
+ ?SetHeaders@TMceTransactionDataContainer@@QAEXPAVCDesC8Array@@@Z @ 235 NONAME ; void TMceTransactionDataContainer::SetHeaders(class CDesC8Array *)
+ ?SetInEventObserver@CMceManager@@QAEXPAVMMceInEventObserver@@@Z @ 236 NONAME ; void CMceManager::SetInEventObserver(class MMceInEventObserver *)
+ ?SetInReferObserver@CMceManager@@QAEXPAVMMceInReferObserver@@@Z @ 237 NONAME ; void CMceManager::SetInReferObserver(class MMceInReferObserver *)
+ ?SetInSessionObserver@CMceManager@@QAEXPAVMMceInSessionObserver@@@Z @ 238 NONAME ; void CMceManager::SetInSessionObserver(class MMceInSessionObserver *)
+ ?SetKeepAliveDataL@CMceCodec@@QAEXABVTDesC8@@@Z @ 239 NONAME ; void CMceCodec::SetKeepAliveDataL(class TDesC8 const &)
+ ?SetKeepAlivePayloadTypeL@CMceCodec@@QAEXE@Z @ 240 NONAME ; void CMceCodec::SetKeepAlivePayloadTypeL(unsigned char)
+ ?SetKeepAliveTimerL@CMceCodec@@QAEXE@Z @ 241 NONAME ; void CMceCodec::SetKeepAliveTimerL(unsigned char)
+ ?SetLocalMediaPortL@CMceMediaStream@@QAEXI@Z @ 242 NONAME ; void CMceMediaStream::SetLocalMediaPortL(unsigned int)
+ ?SetMMFPriorityL@CMceCodec@@QAEXH@Z @ 243 NONAME ; void CMceCodec::SetMMFPriorityL(int)
+ ?SetMMFPriorityPreferenceL@CMceCodec@@QAEXH@Z @ 244 NONAME ; void CMceCodec::SetMMFPriorityPreferenceL(int)
+ ?SetMaxBitrateL@CMceAvcCodec@@UAEXI@Z @ 245 NONAME ; void CMceAvcCodec::SetMaxBitrateL(unsigned int)
+ ?SetMaxBitrateL@CMceH263Codec@@UAEXI@Z @ 246 NONAME ; void CMceH263Codec::SetMaxBitrateL(unsigned int)
+ ?SetMaxPTime@CMceAmrCodec@@UAEHI@Z @ 247 NONAME ; int CMceAmrCodec::SetMaxPTime(unsigned int)
+ ?SetMediaAttributeLinesL@CMceMediaStream@@QAEXPAVCDesC8Array@@@Z @ 248 NONAME ; void CMceMediaStream::SetMediaAttributeLinesL(class CDesC8Array *)
+ ?SetMediaObserver@CMceManager@@QAEXPAVMMceStreamObserver@@@Z @ 249 NONAME ; void CMceManager::SetMediaObserver(class MMceStreamObserver *)
+ ?SetModifierL@CMceSession@@QAEXKI@Z @ 250 NONAME ; void CMceSession::SetModifierL(unsigned long, unsigned int)
+ ?SetPTime@CMceAmrCodec@@UAEHI@Z @ 251 NONAME ; int CMceAmrCodec::SetPTime(unsigned int)
+ ?SetParameter@CSIPManagedProfile@@QAEHKABVMDesC8Array@@@Z @ 252 NONAME ; int CSIPManagedProfile::SetParameter(unsigned long, class MDesC8Array const &)
+ ?SetPayloadType@CMceAmrCodec@@UAEHE@Z @ 253 NONAME ; int CMceAmrCodec::SetPayloadType(unsigned char)
+ ?SetPayloadType@CMceAvcCodec@@UAEHE@Z @ 254 NONAME ; int CMceAvcCodec::SetPayloadType(unsigned char)
+ ?SetPayloadType@CMceH263Codec@@UAEHE@Z @ 255 NONAME ; int CMceH263Codec::SetPayloadType(unsigned char)
+ ?SetPositionL@CMceFileSource@@QAEXABVTTimeIntervalMicroSeconds@@@Z @ 256 NONAME ; void CMceFileSource::SetPositionL(class TTimeIntervalMicroSeconds const &)
+ ?SetPreferenceL@CMceCodec@@QAEXH@Z @ 257 NONAME ; void CMceCodec::SetPreferenceL(int)
+ ?SetPreferredEncodingDecodingDeviceL@CMceAvcCodec@@UAEXVTUid@@@Z @ 258 NONAME ; void CMceAvcCodec::SetPreferredEncodingDecodingDeviceL(class TUid)
+ ?SetPreferredEncodingDecodingDeviceL@CMceH263Codec@@UAEXVTUid@@@Z @ 259 NONAME ; void CMceH263Codec::SetPreferredEncodingDecodingDeviceL(class TUid)
+ ?SetPriorityL@CMceDisplaySink@@QAEXI@Z @ 260 NONAME ; void CMceDisplaySink::SetPriorityL(unsigned int)
+ ?SetReasonPhrase@TMceTransactionDataContainer@@QAEXPAVHBufC8@@@Z @ 261 NONAME ; void TMceTransactionDataContainer::SetReasonPhrase(class HBufC8 *)
+ ?SetReferObserver@CMceManager@@QAEXPAVMMceReferObserver@@@Z @ 262 NONAME ; void CMceManager::SetReferObserver(class MMceReferObserver *)
+ ?SetResolutionL@CMceAvcCodec@@UAEXVTSize@@@Z @ 263 NONAME ; void CMceAvcCodec::SetResolutionL(class TSize)
+ ?SetResolutionL@CMceH263Codec@@UAEXVTSize@@@Z @ 264 NONAME ; void CMceH263Codec::SetResolutionL(class TSize)
+ ?SetRotationL@CMceDisplaySink@@QAEXW4TRotation@1@@Z @ 265 NONAME ; void CMceDisplaySink::SetRotationL(enum CMceDisplaySink::TRotation)
+ ?SetRoutingL@CMceSpeakerSink@@QAEXH@Z @ 266 NONAME ; void CMceSpeakerSink::SetRoutingL(int)
+ ?SetRtpObserver@CMceManager@@QAEXPAVMMceRtpObserver@@@Z @ 267 NONAME ; void CMceManager::SetRtpObserver(class MMceRtpObserver *)
+ ?SetSamplingFreq@CMceAmrCodec@@UAEHI@Z @ 268 NONAME ; int CMceAmrCodec::SetSamplingFreq(unsigned int)
+ ?SetSessionObserver@CMceManager@@QAEXPAVMMceSessionObserver@@@Z @ 269 NONAME ; void CMceManager::SetSessionObserver(class MMceSessionObserver *)
+ ?SetSessionSDPLinesL@CMceSession@@QAEXPAVCDesC8Array@@@Z @ 270 NONAME ; void CMceSession::SetSessionSDPLinesL(class CDesC8Array *)
+ ?SetSourceL@CMceMediaStream@@QAEXPAVCMceMediaSource@@@Z @ 271 NONAME ; void CMceMediaStream::SetSourceL(class CMceMediaSource *)
+ ?SetStandByTimerL@CMceCodec@@QAEXK@Z @ 272 NONAME ; void CMceCodec::SetStandByTimerL(unsigned long)
+ ?SetStateL@CMceCodec@@QAEXW4TState@1@@Z @ 273 NONAME ; void CMceCodec::SetStateL(enum CMceCodec::TState)
+ ?SetStatusCode@TMceTransactionDataContainer@@QAEXH@Z @ 274 NONAME ; void TMceTransactionDataContainer::SetStatusCode(int)
+ ?SetVolumeL@CMceSpeakerSink@@QAEXH@Z @ 275 NONAME ; void CMceSpeakerSink::SetVolumeL(int)
+ ?SetWhiteBalanceL@CMceCameraSource@@QAEXW4TWhiteBalance@CCamera@@@Z @ 276 NONAME ; void CMceCameraSource::SetWhiteBalanceL(enum CCamera::TWhiteBalance)
+ ?SetZoomFactorL@CMceCameraSource@@QAEXH@Z @ 277 NONAME ; void CMceCameraSource::SetZoomFactorL(int)
+ ?Sinks@CMceMediaStream@@QBEABV?$RPointerArray@VCMceMediaSink@@@@XZ @ 278 NONAME ; class RPointerArray<class CMceMediaSink> const & CMceMediaStream::Sinks(void) const
+ ?Source@CMceMediaStream@@QBEPAVCMceMediaSource@@XZ @ 279 NONAME ; class CMceMediaSource * CMceMediaStream::Source(void) const
+ ?Ssrc@CMceRtpSink@@QBEKXZ @ 280 NONAME ; unsigned long CMceRtpSink::Ssrc(void) const
+ ?Ssrc@CMceRtpSource@@QBEKXZ @ 281 NONAME ; unsigned long CMceRtpSource::Ssrc(void) const
+ ?Ssrcs@CMceRtpSource@@QBEABV?$RArray@I@@XZ @ 282 NONAME ; class RArray<unsigned int> const & CMceRtpSource::Ssrcs(void) const
+ ?State@CMceCodec@@QBE?AW4TState@1@XZ @ 283 NONAME ; enum CMceCodec::TState CMceCodec::State(void) const
+ ?State@CMceMediaStream@@QBE?AW4TState@1@XZ @ 284 NONAME ; enum CMceMediaStream::TState CMceMediaStream::State(void) const
+ ?State@CMceSession@@QBE?AW4TState@1@XZ @ 285 NONAME ; enum CMceSession::TState CMceSession::State(void) const
+ ?Streams@CMceSession@@QBEABV?$RPointerArray@VCMceMediaStream@@@@XZ @ 286 NONAME ; class RPointerArray<class CMceMediaStream> const & CMceSession::Streams(void) const
+ ?Streams@CMceStreamBundle@@QAEABV?$RPointerArray@VCMceMediaStream@@@@XZ @ 287 NONAME ; class RPointerArray<class CMceMediaStream> const & CMceStreamBundle::Streams(void)
+ ?SupportedAudioCodecs@CMceManager@@QBEABV?$RPointerArray@$$CBVCMceAudioCodec@@@@XZ @ 288 NONAME ; class RPointerArray<class CMceAudioCodec const > const & CMceManager::SupportedAudioCodecs(void) const
+ ?SupportedProfileTypesL@CSIPProfileRegistryBase@@QAEXAAV?$RArray@VTSIPProfileTypeInfo@@@@@Z @ 289 NONAME ; void CSIPProfileRegistryBase::SupportedProfileTypesL(class RArray<class TSIPProfileTypeInfo> &)
+ ?SupportedSecurityMechanismsL@CSIP@@QBEPAVCDesC8Array@@XZ @ 290 NONAME ; class CDesC8Array * CSIP::SupportedSecurityMechanismsL(void) const
+ ?SupportedVideoCodecs@CMceManager@@QBEABV?$RPointerArray@$$CBVCMceVideoCodec@@@@XZ @ 291 NONAME ; class RPointerArray<class CMceVideoCodec const > const & CMceManager::SupportedVideoCodecs(void) const
+ ?SupportedVideoCodecs@CMceVideoStream@@QBEABV?$RPointerArray@$$CBVCMceVideoCodec@@@@XZ @ 292 NONAME ; class RPointerArray<class CMceVideoCodec const > const & CMceVideoStream::SupportedVideoCodecs(void) const
+ ?TerminateL@CMceSession@@QAEXPAVCDesC8Array@@PAVHBufC8@@1@Z @ 293 NONAME ; void CMceSession::TerminateL(class CDesC8Array *, class HBufC8 *, class HBufC8 *)
+ ?TranscodeL@CMceFileSource@@QAEXABV?$TBuf@$0BAA@@@@Z @ 294 NONAME ; void CMceFileSource::TranscodeL(class TBuf<256> const &)
+ ?TranscodingProgressL@CMceFileSource@@QBEHXZ @ 295 NONAME ; int CMceFileSource::TranscodingProgressL(void) const
+ ?Type@CMceCodec@@QBEIXZ @ 296 NONAME ; unsigned int CMceCodec::Type(void) const
+ ?Type@CMceMediaSink@@QBEIXZ @ 297 NONAME ; unsigned int CMceMediaSink::Type(void) const
+ ?Type@CMceMediaSource@@QBEIXZ @ 298 NONAME ; unsigned int CMceMediaSource::Type(void) const
+ ?Type@CMceMediaStream@@QBEIXZ @ 299 NONAME ; unsigned int CMceMediaStream::Type(void) const
+ ?Type@CMceStreamBundle@@QBE?AW4TMceStreamBundleType@1@XZ @ 300 NONAME ; enum CMceStreamBundle::TMceStreamBundleType CMceStreamBundle::Type(void) const
+ ?Type@CSIPProfile@@QBEABVTSIPProfileTypeInfo@@XZ @ 301 NONAME ; class TSIPProfileTypeInfo const & CSIPProfile::Type(void) const
+ ?UpdateL@CMceFileSource@@QAEXABV?$TBuf@$0BAA@@@@Z @ 302 NONAME ; void CMceFileSource::UpdateL(class TBuf<256> const &)
+ ?UpdateL@CMceRtpSink@@QAEXHPAVHBufC8@@@Z @ 303 NONAME ; void CMceRtpSink::UpdateL(int, class HBufC8 *)
+ ?UpdateL@CMceRtpSource@@QAEXIIKPAVHBufC8@@@Z @ 304 NONAME ; void CMceRtpSource::UpdateL(unsigned int, unsigned int, unsigned long, class HBufC8 *)
+ ?UpdateL@CMceSession@@QAEXKPAVCDesC8Array@@PAVHBufC8@@10@Z @ 305 NONAME ; void CMceSession::UpdateL(unsigned long, class CDesC8Array *, class HBufC8 *, class HBufC8 *, class CDesC8Array *)
+ ?VolumeL@CMceSpeakerSink@@QBEHXZ @ 306 NONAME ; int CMceSpeakerSink::VolumeL(void) const
+ ?WhiteBalanceL@CMceCameraSource@@QAE?AW4TWhiteBalance@CCamera@@XZ @ 307 NONAME ; enum CCamera::TWhiteBalance CMceCameraSource::WhiteBalanceL(void)
+ ?ZoomFactorL@CMceCameraSource@@QAEHXZ @ 308 NONAME ; int CMceCameraSource::ZoomFactorL(void)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/group/mceclient.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2006-2006 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: Definition of project MceClientStub
+*
+*/
+
+
+// To get the APP_LAYER_SYSTEMINCLUDE-definition
+#include <platform_paths.hrh>
+
+#include <data_caging_paths.hrh>
+
+TARGET mceclient.dll
+TARGETTYPE dll
+UID 0x1000008d 0x00000111 // Experimental UID
+
+CAPABILITY CAP_GENERAL_DLL
+VENDORID VID_DEFAULT
+
+SOURCEPATH ../src
+SOURCE mcemanager.cpp
+SOURCE mcesession.cpp
+SOURCE mceoutsession.cpp
+SOURCE mceinsession.cpp
+SOURCE mcestreambundle.cpp
+SOURCE mcemediastream.cpp
+SOURCE mcevideostream.cpp
+SOURCE mceaudiostream.cpp
+SOURCE mcemediasource.cpp
+SOURCE mcecamerasource.cpp
+SOURCE mcefilesource.cpp
+SOURCE mcefilesink.cpp
+SOURCE mcertpsource.cpp
+SOURCE mcemediasink.cpp
+SOURCE mcedisplaysink.cpp
+SOURCE mcertpsink.cpp
+SOURCE mcespeakersink.cpp
+SOURCE mcecodec.cpp
+SOURCE mceaudiocodec.cpp
+SOURCE mceamrcodec.cpp
+SOURCE mcevideocodec.cpp
+SOURCE mceh263codec.cpp
+SOURCE mceavccodec.cpp
+SOURCE mcetransactiondatacontainer.cpp
+SOURCE staticdllentry.cpp
+
+SOURCEPATH ../../sipprofilestub/src
+SOURCE sipprofileregistrybasestub.cpp
+SOURCE sipprofileregistrystub.cpp
+SOURCE sipprofilestub.cpp sipmanagedprofileregistrystub.cpp sipmanagedprofilestub.cpp sipstub.cpp
+
+
+USERINCLUDE ../inc
+USERINCLUDE ../../sipprofilestub/inc
+USERINCLUDE ../../../../../../inc /Mush/inc
+
+
+// to replace SIP profiles with a stub
+SYSTEMINCLUDE ../../sipprofilestub/inc
+SYSTEMINCLUDE /epoc32/include
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+
+LIBRARY euser.lib
+LIBRARY bafl.lib
+LIBRARY ws32.lib
+LIBRARY bitgdi.lib
+LIBRARY fbscli.lib
+
+
+
+EXPORTUNFROZEN
+
+SOURCEPATH ../src
+SOURCE mussessionsimulator.cpp
+SOURCEPATH ../../sipprofilestub/src
+SOURCE sipprofilealrcontroller.cpp
+SOURCEPATH ../src
+SOURCE mccscreen.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mccscreen.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2006 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 MCCSCREEN_H
+#define MCCSCREEN_H
+
+#include <w32std.h>
+
+class CMccScreen : public CBase,
+ public MDirectScreenAccess
+ {
+
+ public:
+
+ // Construction & destruction
+ static CMccScreen* NewL( TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority,
+ TSize aViewFinderImageSize );
+
+ ~CMccScreen();
+
+ void ConstructL( TSize aViewFinderImageSize );
+
+ public:
+
+ void StartL();
+
+ void Stop();
+
+ void Draw( CFbsBitmap& aFrame );
+
+ void AttachFrameL( CFbsBitmap* aFrame );
+
+ void DetachFrame();
+
+ private:
+
+ CMccScreen( TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority );
+
+ void Restart( RDirectScreenAccess::TTerminationReasons aReason );
+
+ void AbortNow( RDirectScreenAccess::TTerminationReasons aReason );
+
+ TPoint UpdateViewFinderArea( TSize aViewFinderImageSize );
+
+ void DoDraw( CFbsBitmap& aFrame );
+
+ void DoScreenDeviceUpdate();
+
+ private:
+
+ RWsSession iRwSession;
+ RWindowGroup* iRwGroup;
+ RWindow* iRw;
+ CWsScreenDevice* iDev;
+ TInt iDeviceIndex;
+ CDirectScreenAccess* iDirectScreenAccess;
+ CFbsBitGc* iGc;
+ RRegion* iRegion;
+ CFbsScreenDevice* iFbsDev;
+
+ TPoint iPosition;
+ TSize iArea;
+
+ TInt iWindowOrdinalPosition;
+ TInt iWindowOrdinalPriority;
+
+ TRect iViewFinderImageRect;
+
+ TBool iFirstImageDrawn;
+
+ CFbsBitmap* iAttachedFrame;
+
+ TBool iAborted;
+
+ #ifdef TEST_EUNIT
+ friend class UT_CMccCameraHandler;
+ #endif
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mceamrcodec.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,182 @@
+/*
+* 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 CMCEAMRCODEC_H
+#define CMCEAMRCODEC_H
+
+// INCLUDES
+#include <mceaudiocodec.h>
+#include <mcedefs.h>
+
+// CONSTANTS
+const TInt KMceAmrNbBitrate475 = 4750;
+const TInt KMceAmrNbBitrate515 = 5150;
+const TInt KMceAmrNbBitrate590 = 5900;
+const TInt KMceAmrNbBitrate670 = 6700;
+const TInt KMceAmrNbBitrate740 = 7400;
+const TInt KMceAmrNbBitrate795 = 7950;
+const TInt KMceAmrNbBitrate102 = 10200;
+const TInt KMceAmrNbBitrate122 = 12200;
+
+const TUint KMceAllowedAmrNbBitrate475 = 0x0001;
+const TUint KMceAllowedAmrNbBitrate515 = 0x0002;
+const TUint KMceAllowedAmrNbBitrate590 = 0x0004;
+const TUint KMceAllowedAmrNbBitrate670 = 0x0008;
+const TUint KMceAllowedAmrNbBitrate740 = 0x0010;
+const TUint KMceAllowedAmrNbBitrate795 = 0x0020;
+const TUint KMceAllowedAmrNbBitrate102 = 0x0040;
+const TUint KMceAllowedAmrNbBitrate122 = 0x0080;
+const TUint KMceAllowedAmrNbBitrateAll = 0x00FF;
+
+const TUint KMceAmrNbSamplingFreq = 8000;
+const TUint KMceAmrWbSamplingFreq = 16000;
+
+const TUint KMceDefaultMaxPtime = 400;
+const TUint KMceDefaultPtime = 20;
+
+// DATA TYPES
+enum TAmrCodecMode
+ {
+ EMceBandwidthEfficient = 4,
+ EMceOctetAligned
+ };
+
+// CLASS DECLARATION
+
+/**
+* Class for the AMR codec information.
+*
+* It checks the validity of inserted values for AMR.
+*
+* @lib mceclient.lib
+*/
+class CMceAmrCodec : public CMceAudioCodec
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceAmrCodec();
+
+ public: // From base class
+
+ /**
+ * Enable / Disable Voice Activity Detection.
+ * @param aEnableVAD, Boolean indicating whether to enable Voice Activity Detection
+ * @return KErrNotSupported if codec doesn't support VAD; otherwise KErrNone.
+ */
+ IMPORT_C TInt EnableVAD(TBool aEnableVAD);
+
+ /**
+ * Sets bitrate used with codec for encoding.
+ * @param aBitrate, bitrate value for encoding
+ * @return KErrNotSupported if codec doesn't support bitrate value issued; otherwise KErrNone.
+ */
+ IMPORT_C TInt SetBitrate(TUint aBitrate);
+
+ /**
+ * Sets bitrates allowed with codec.
+ * @param aBitrates, allowed bitrate values (like KMceAmrNbBitrate590|KMceAmrNbBitrate670)
+ * @return KErrNotSupported if codec doesn't support bitrate value issued; otherwise KErrNone.
+ */
+ IMPORT_C TInt SetAllowedBitrates(TUint aBitrates);
+
+ /**
+ * Sets the sampling frequency.
+ * @param aSamplingFreq, Sampling frequency to be used
+ * @return KErrNotSupported if codec doesn't support sampling frequency issued; otherwise KErrNone.
+ */
+ IMPORT_C TInt SetSamplingFreq(TUint aSamplingFreq);
+
+ /**
+ * Sets the packetization rate.
+ * @param aPTime, Packetization rate, must be multiple of audio frame size.
+ * @return KErrNotSupported if codec doesn't support packetrate value issued; otherwise KErrNone.
+ */
+ IMPORT_C TInt SetPTime(TUint aPTime);
+
+ /**
+ * Sets the maximum packetization rate.
+ * @param aMaxPTime, maximum allowed packetization rate, must be multiple of audio frame size.
+ * @return KErrNotSupported if codec doesn't support packetrate value issued; otherwise KErrNone.
+ */
+ IMPORT_C TInt SetMaxPTime(TUint aMaxPTime);
+
+ /**
+ * Sets the payload type identifier.
+ * @param aPayloadType payload type identifier.
+ * @return One of the standard system-wide error codes.
+ */
+ IMPORT_C TInt SetPayloadType(TUint8 aPayloadType);
+
+ /**
+ * Sets the codec mode.
+ * @param aCodecMode Codec mode ( Bandwidth efficient / octet aligned )
+ * @return KErrNotSupported if codec doesnt' support codec mode value issued; otherwise KErrNone.
+ */
+ IMPORT_C TInt SetCodecMode(TUint aCodecMode);
+
+ /**
+ * Clones codec, ownership is transferred.
+ * @return cloned codec
+ */
+ IMPORT_C CMceAudioCodec* CloneL() const;
+
+ public:
+
+ /**
+ * Two-phased constructor.
+ * @param aSdpName sdp name
+ */
+ static CMceAmrCodec* NewL( TBuf8<KMceMaxSdpNameLength> aSdpName);
+
+ /**
+ * Two-phased constructor.
+ * @param aSdpName sdp name
+ */
+ static CMceAmrCodec* NewLC(TBuf8<KMceMaxSdpNameLength> aSdpName);
+
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CMceAmrCodec();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( TBuf8<KMceMaxSdpNameLength> aSdpName);
+
+ /**
+ * Sets the sdp name.
+ * @param aSdpName the sdp name
+ */
+ void SetSdpNameL( const TDesC8& aSdpName );
+
+ //for testing
+
+ MCE_UNIT_TEST_DEFS
+ };
+
+
+#endif
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mceaudiocodec.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,161 @@
+/*
+* 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 CMCEAUDIOCODEC_H
+#define CMCEAUDIOCODEC_H
+
+// INCLUDES
+#include <e32base.h>
+#include <mcedefs.h>
+#include <mcecodec.h>
+
+// FORWARD DECLARATIONS
+class RReadStream;
+class RWriteStream;
+class CMceComAudioCodec;
+class CMceMediaStream;
+class TMceIds;
+class TMceEvent;
+class TMceMediaId;
+class TMceFactory;
+class TMceAudioCodecFactory;
+
+// CLASS DECLARATION
+
+/**
+* Container class for audio codecs.
+*
+* It defines attributes that can be set and get from audio codec.
+* These attributes are used in single audio stream and they
+* are negotiated with remote terminal.
+*
+* @lib mceclient.lib
+*/
+class CMceAudioCodec : public CMceCodec
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMceAudioCodec();
+
+ public: // New functions
+
+ /**
+ * Enable / Disable Voice Activity Detection.
+ * @param aEnableVAD, Boolean indicating whether to enable Voice Activity Detection
+ * @return KErrNotSupported if codec doesn't support VAD; otherwise KErrNone.
+ */
+ virtual TInt EnableVAD(TBool aEnableVAD) = 0;
+
+ /**
+ * Sets the sampling frequency.
+ * @param aSamplingFreq, Sampling frequency to be used
+ * @return KErrNotSupported if codec doesn't support sampling frequency issued; otherwise KErrNone.
+ */
+ virtual TInt SetSamplingFreq(TUint aSamplingFreq) = 0;
+
+ /**
+ * Sets the packetization rate.
+ * @param aPTime, Packetization rate, must be multiple of audio frame size.
+ * @return KErrNotSupported if codec doesn't support packetrate value issued; otherwise KErrNone.
+ */
+ virtual TInt SetPTime(TUint aPTime) = 0;
+
+ /**
+ * Sets the maximum packetization rate.
+ * @param aMaxPTime, maximum allowed packetization rate, must be multiple of audio frame size.
+ * @return KErrNotSupported if codec doesn't support packetrate value issued; otherwise KErrNone.
+ */
+ virtual TInt SetMaxPTime(TUint aMaxPTime) = 0;
+
+ /**
+ * Clones codec, ownership is transferred.
+ * @return cloned codec
+ */
+ virtual CMceAudioCodec* CloneL() const = 0;
+
+ /**
+ * Gets sampling frequency used currently.
+ * @return Sampling frequency
+ */
+ virtual TUint SamplingFreq() const;
+
+ /**
+ * Get VAD status.
+ * @return Boolean indicating is VAD activated
+ */
+ virtual TBool VAD() const;
+
+ /**
+ * Gets the packetization rate.
+ * @return packetization rate.
+ */
+ virtual TUint PTime() const;
+
+ /**
+ * Gets max packetization rate.
+ * @return Max packetization rate.
+ */
+ virtual TUint MaxPTime() const;
+
+ public:
+
+ /**
+ * Initializes
+ * @param aParent the parent
+ */
+ virtual void InitializeL( CMceMediaStream& aParent );
+
+
+ protected: // New functions
+
+ /**
+ * C++ default constructor.
+ */
+ CMceAudioCodec();
+
+
+ public: // stub data
+
+ /**
+ * Enables or disables VAD
+ */
+ TBool iEnableVAD;
+
+ /**
+ * Sampling frequency used with codec
+ */
+ TUint iSamplingFreq;
+
+ /**
+ * Stream's packet time
+ */
+ TUint iPTime;
+
+ /**
+ * Stream's max packet time
+ */
+ TUint iMaxPTime;
+ };
+
+
+#endif
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mceaudiostream.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* 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 CMCEAUDIOSTREAM_H
+#define CMCEAUDIOSTREAM_H
+
+// INCLUDES
+#include <e32std.h>
+#include <mcemediastream.h>
+
+// CONSTANTS
+const TMceMediaType KMceAudio = 1;
+
+// FORWARD DECLARATIONS
+class CMceAudioCodec;
+
+// CLASS DECLARATION
+
+/**
+* Class for representing unidirectional audio stream.
+*
+* It defines the used audio codecs for the stream.
+* In order to be complete structure, at least one codec is required.
+*
+* @lib mceclient.lib
+*/
+class CMceAudioStream: public CMceMediaStream
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CMceAudioStream* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CMceAudioStream* NewLC();
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceAudioStream();
+
+ public: // Functions
+
+ /**
+ * Returns the available codecs to the session.
+ * For CMEOutSession, array contains all codecs supported by
+ * terminal in default. For CMEInSession, array contains codecs
+ * that were offered by remote terminal, and supported by local terminal.
+ * @return codecs available for the session.
+ */
+ IMPORT_C const RPointerArray<CMceAudioCodec>& Codecs();
+
+ /**
+ * Adds codec to the stream, ownership is transferred.
+ * @param aCodec codec added to the stream
+ */
+ IMPORT_C void AddCodecL( CMceAudioCodec* aCodec );
+
+ /**
+ * Removes codec from the stream
+ * @param aCodec codec removed from stream
+ */
+ IMPORT_C void RemoveCodecL( CMceAudioCodec& aCodec );
+
+
+ public: //from CMceMediaStream
+
+ /**
+ * Initializes
+ * @param aParent the parent
+ */
+ void InitializeL( CMceSession& aParent );
+
+ /**
+ * Initializes
+ * @param aManager the manager. Ownership is NOT transferred
+ */
+ void InitializeL( CMceManager* aManager );
+
+
+ private: //methods
+
+ /**
+ * C++ default constructor.
+ */
+ CMceAudioStream();
+
+ /**
+ * Second-phase constructor.
+ */
+ void ConstructL();
+
+
+ private: // Owned data
+
+ /**
+ * codecs
+ */
+ RPointerArray<CMceAudioCodec> iCodecs;
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mceavccodec.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,243 @@
+/*
+* 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 MCEAVCCODEC_H
+#define MCEAVCCODEC_H
+
+// INCLUDES
+#include <mcevideocodec.h>
+#include <mcedefs.h>
+
+// CONSTANTS
+
+const TUint KMceAvcClockRate = 90000;
+
+// Allowedbitrates bitfield combines avc profile-level-id information in
+// similar manner as defined in RFC 3984. Most significant byte stores
+// profile-id value, seconds significant byte contains profile-iop value and
+// last two bytes contain profile-level information.
+//
+const TUint KMceAvcBitrateLevel1 = 0x0001;
+const TUint KMceAvcBitrateLevel1b = 0x0002;
+const TUint KMceAvcBitrateLevel1_1 = 0x0004;
+const TUint KMceAvcBitrateLevel1_2 = 0x0008;
+const TUint KMceAvcBitrateLevel1_3 = 0x0010;
+const TUint KMceAvcBitrateLevel2 = 0x0020;
+
+const TUint KMceAvcCodecProfileIopConstraintSet = 0x0100;
+const TUint KMceAvcCodecProfileIopConstraintSet1 = 0x0200;
+const TUint KMceAvcCodecProfileIopConstraintSet2 = 0x0400;
+
+const TUint KMceAvcCodecProfileIdBaseline = 0x1000;
+const TUint KMceAvcCodecProfileIdMain = 0x2000;
+const TUint KMceAvcCodecProfileIdExtended = 0x4000;
+const TUint KMceAvcCodecProfileIdHigh = 0x8000;
+
+const TUint KMceAllowedAvcBitrateAll = 0x00FF;
+
+// Different framerates may be supported depending on profile level.
+//
+const TUint KMceAvcFrameRate7_5 = 0x0001;
+const TUint KMceAvcFrameRate12_5 = 0x0002;
+const TUint KMceAvcFrameRate15 = 0x0004;
+const TUint KMceAvcFrameRate30 = 0x0008;
+const TUint KMceAvcFrameRate36 = 0x0010;
+
+const TUint KMceAllowedAvcFrameRateAll = 0x00FF;
+
+// Different resolutions may be supported depending on profile level.
+//
+const TUint KMceAvcResolution176x144 = 0x0001;
+const TUint KMceAvcResolution320x240 = 0x0002;
+const TUint KMceAvcResolution352x288 = 0x0004;
+
+const TUint KMceAllowedAvcResolutionAll = 0x000F;
+
+
+// DATA TYPES
+enum TAvcCodecMode
+ {
+ KMceAvcModeSingleNal,
+ KMceAvcModeNonInterleaved,
+ KMceAvcModeInterleaved
+ };
+
+
+// CLASS DECLARATION
+
+/**
+* Class for the H264 codec information.
+*
+* It checks the validity of inserted values for H264
+*
+* @lib mceclient.lib
+*/
+class CMceAvcCodec : public CMceVideoCodec
+ {
+
+ public: // Constructors and destructor
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceAvcCodec();
+
+ public:
+
+ /**
+ * Two-phased constructor.
+ * @param aSdpName sdp name
+ */
+ IMPORT_C static CMceAvcCodec* NewL( TBuf8<KMceMaxSdpNameLength> aSdpName);
+
+ /**
+ * Two-phased constructor.
+ * @param aSdpName sdp name
+ */
+ IMPORT_C static CMceAvcCodec* NewLC( TBuf8<KMceMaxSdpNameLength> aSdpName );
+
+ public: // From base classes
+
+ /**
+ * Sets bitrate used with codec for encoding.
+ * @param aBitrate bitrate value for encoding
+ * @return KErrNotSupported if codec doesn't support bitrate
+ * value issued
+ */
+ virtual TInt SetBitrate( TUint aBitrate );
+
+ /**
+ * Sets bitrates allowed with codec.
+ * @param aBitrates allowed bitrate values
+ * @return KErrNotSupported if codec doesn't support bitrate
+ * values issued
+ */
+ virtual TInt SetAllowedBitrates( TUint aBitrates );
+
+ /**
+ * Sets the codec specific mode.
+ * @param aCodecMode mode of the codec
+ * @return KErrNotSupported if codec doesnt' support codec mode
+ * value issued
+ */
+ virtual TInt SetCodecMode( TUint aCodecMode );
+
+ /**
+ * Sets the payload type.
+ * @param aPayloadType type identifier of the payload
+ * @return KErrNotSupported if codec doesn't support payload type issued
+ */
+ virtual TInt SetPayloadType( TUint8 aPayloadType );
+
+ /**
+ * Clones the codec.
+ * @return cloned codec; ownership is transferred
+ */
+ virtual CMceVideoCodec* CloneL() const;
+
+ /**
+ * Sets maximum bitrate of the codec.
+ * @param aMaxBitrate value of maximum bitrate used for encoding
+ * @leave KErrNotSupported if codec doesn't support frame sizes issued
+ */
+ virtual void SetMaxBitrateL( TUint aMaxBitrate );
+
+ /**
+ * Sets resolutions allowed with the codec.
+ * @param aResolutions bitfield of allowed resolutions
+ * @leave KErrNotSupported if codec doesn't support resolutions issued
+ */
+ virtual void SetAllowedResolutionsL( TUint aResolutions );
+
+ /**
+ * Sets resolution of the video.
+ * @param aResolution resolution of the video in pixels
+ * @leave KErrNotSupported if codec doesn't support resolution issued
+ */
+ virtual void SetResolutionL( TSize aResolution );
+
+ /**
+ * Sets frame rates allowed with the codec.
+ * @param aFrameRates allowed frame rate values as a bitfield
+ * @leave KErrNotSupported if codec doesn't support frame rates issued
+ */
+ virtual void SetAllowedFrameRatesL( TUint aFrameRates );
+
+ /**
+ * Sets frame rate used with the codec for encoding.
+ * @param aFrameRate frame rate for encoding
+ * @leave KErrNotSupported if codec doesn't support frame rate value
+ * issued
+ */
+ virtual void SetFrameRateL( TReal aFrameRate );
+
+ /**
+ * Sets preferred encoding device for uplink stream and preferred decoding
+ * device for downlink stream.
+ * @param aEncodingDecodingDevice
+ * @leave KErrNotSupported if setting preferred device is not possible
+ */
+ virtual void SetPreferredEncodingDecodingDeviceL(
+ TUid aEncodingDecodingDevice );
+
+ /**
+ * Set config key (sprop-parameter-sets)
+ * @param aConfigKey, config key as Base64 encoded
+ * @leave KErrNotSupported if setting config key is not possible
+ */
+ virtual void SetConfigKeyL( const TDesC8& aConfigKey );
+
+
+ private: // Helper functions
+
+ /**
+ * Sets the sdp name.
+ * @param aSdpName the sdp name
+ */
+ void SetSdpNameL( const TDesC8& aSdpName );
+
+ private: // Constructors
+
+ /**
+ * C++ default constructor.
+ */
+ CMceAvcCodec();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( TBuf8<KMceMaxSdpNameLength> aSdpName);
+
+
+ public: // Stub data
+
+ TUint8 iPacketizationMode;
+
+ TUint8 iAllowedPacketizationModes;
+
+
+ //for testing
+
+ MCE_UNIT_TEST_DEFS
+
+ };
+
+
+#endif
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcecamerasource.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,248 @@
+/*
+* Copyright (c) 2006 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 MCECAMERASOURCE_H
+#define MCECAMERASOURCE_H
+
+// INCLUDES
+#include <e32std.h>
+#include <ecam.h>
+#include "mcemediasource.h"
+
+// CONSTANTS
+const TMceSourceType KMceCameraSource = 3;
+
+//FORWARD DECLARATIONS
+class CMceManager;
+class CMceItcSender;
+
+// CLASS DECLARATION
+
+/**
+* Class representing camera in MCE.
+*
+* CMceCameraSource can be used to record video from camera.
+*
+* Enable (continue) and Disable (pause) operations to it are considered
+* to be local, so they are not signalled to remote terminal.
+*
+* In common situation camera source is combined with display sink which acts
+* as a viewfinder for the camera.
+*
+* @lib mceclient.lib
+*/
+class CMceCameraSource : public CMceMediaSource
+ {
+ friend class UT_CMusEngLiveSession;
+ friend class UT_CMusEngTwoWaySession;
+ friend class UT_TMusEngCameraHandler;
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aManager reference to the manager
+ */
+ IMPORT_C static CMceCameraSource* NewL( CMceManager& aManager );
+
+ /**
+ * Two-phased constructor.
+ * @param aManager reference to the manager
+ */
+ IMPORT_C static CMceCameraSource* NewLC( CMceManager& aManager );
+
+ /// Not in the real implementation
+ IMPORT_C static CMceCameraSource* NewL();
+
+ /// Not in the real implementation
+ IMPORT_C static CMceCameraSource* NewLC();
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceCameraSource();
+
+ public: // From CMceMediaSource
+
+ /**
+ * Enables the source explicitly.
+ */
+ IMPORT_C void EnableL();
+
+ /**
+ * Disables the source explicitly.
+ */
+ IMPORT_C void DisableL();
+
+ public: // New functions
+
+ /**
+ * Gets the number of cameras on the device.
+ * @return number of available cameras
+ */
+ IMPORT_C TInt CamerasAvailable() const;
+
+ /**
+ * Sets index of physical camera to be used.
+ * @param aCameraIndex, index of the camera to be used; First camera has
+ * index 0 and number of available cameras can be retrieved by
+ * calling CMceCameraSource::CamerasAvailable
+ */
+ IMPORT_C void SetCameraIndexL( TInt aCameraIndex );
+
+ /**
+ * Gets information about the camera device.
+ * @param aInfo on return information about the camera device
+ */
+ IMPORT_C void GetCameraInfo( TCameraInfo& aInfo ) const;
+
+ /**
+ * Sets the zoom factor.
+ * This must be in the range of TCameraInfo::iMinZoom to
+ * TCameraInfo::iMaxZoom inclusive.
+ * @param aZoomFactor required zoom factor
+ * @leave KErrArgument if the specified zoom factor is out of range
+ */
+ IMPORT_C void SetZoomFactorL( TInt aZoomFactor );
+
+ /**
+ * Gets the currently set zoom factor.
+ * @return current zoom factor
+ */
+ IMPORT_C TInt ZoomFactorL();
+
+ /**
+ * Sets the digital zoom factor.
+ * This must be in the range of 0 to TCameraInfo::iMaxDigitalZoom
+ * inclusive.
+ * @param aDigitalZoomFactor The required digital zoom factor
+ * @leave KErrArgument if the zoom factor is out of range
+ */
+ IMPORT_C void SetDigitalZoomFactorL( TInt aDigitalZoomFactor );
+
+ /**
+ * Gets the currently set digital zoom factor.
+ * @return current digital zoom factor
+ */
+ IMPORT_C TInt DigitalZoomFactorL();
+
+ /**
+ * Sets the contrast adjustment of the device.
+ * @param aContrast required contrast value; This must be in the
+ * range of -100 to +100 or CCamera::EContrastAuto.
+ * @leave KErrNotSupported if contrast adjustment is not supported,
+ * see TCameraInfo::TOptions
+ * @leave KErrArgument if the specified contrast value is out of
+ * range
+ */
+ IMPORT_C void SetContrastL( TInt aContrast );
+
+ /**
+ * Gets the current contrast value.
+ * @return current contrast value
+ */
+ IMPORT_C TInt ContrastL();
+
+ /**
+ * Sets the brightness adjustment of the device.
+ * No effect if this is not supported, see TCameraInfo::TOptions.
+ *
+ * @param aBrightness required brightness adjustment; This must be
+ * in the range of -100 to +100 or CCamera::EBrightnessAuto
+ * @leave KErrNotSupported if brightness adjustment is not supported,
+ * see TCameraInfo::TOptions
+ * @leave KErrArgument if the brightness adjustment is out of range
+ */
+ IMPORT_C void SetBrightnessL( TInt aBrightness );
+
+ /**
+ * Gets the currently set brightness adjustment value.
+ * @return current brightness adjustment value
+ */
+ IMPORT_C TInt BrightnessL();
+
+ /**
+ * Sets the exposure adjustment of the device.
+ * @param aExposure required exposure adjustment
+ * @leave KErrNotSupported if the specified exposure adjustment is
+ * not supported, see CameraInfo::iExposureModesSupported
+ */
+ IMPORT_C void SetExposureL( CCamera::TExposure aExposure );
+
+ /**
+ * Gets the currently set exposure setting value.
+ * @return current exposure setting value
+ */
+ IMPORT_C CCamera::TExposure ExposureL();
+
+ /**
+ * Sets the white balance adjustment of the device.
+ * @param aWhiteBalance required white balance adjustment
+ * @leave KErrNotSupported if the specified white balance adjustment is
+ * not supported, see TCameraInfo::iWhiteBalanceModesSupported
+ */
+ IMPORT_C void SetWhiteBalanceL( CCamera::TWhiteBalance aWhiteBalance );
+
+ /**
+ * Gets the currently set white balance adjustment value.
+ * @return current white balance adjustment value
+ */
+ IMPORT_C CCamera::TWhiteBalance WhiteBalanceL();
+
+ public: // internal
+
+ /**
+ * Initializes
+ * @param aManager the manager. Ownership is NOT transferred
+ */
+ void InitializeL( CMceManager* aManager );
+
+ private:
+
+ /**
+ * C++ constructor.
+ */
+ CMceCameraSource();
+
+ private: // Owned data
+
+ TCameraInfo iCameraInfo;
+
+ private: // Not owned data
+
+ //CMceManager* iManager;
+
+ private: // Reserved for future use
+
+ TAny* iReserved;
+
+
+ public: // stub data
+
+ TInt iCameraIndex;
+ TInt iCameraCount;
+ TInt iZoomFactor;
+ TInt iDigitalZoomFactor;
+ TInt iContrast;
+ TInt iBrightness;
+ TInt iExposure;
+ TInt iWhiteBalance;
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcecodec.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,412 @@
+/*
+* Copyright (c) 2006 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 MCECODEC_H
+#define MCECODEC_H
+
+// INCLUDES
+#include <e32base.h>
+#include "mcedefs.h"
+
+// FORWARD DECLARATIONS
+class RReadStream;
+class RWriteStream;
+class CMceComCodec;
+
+class CMceMediaStream;
+class TMceEvent;
+class TMceMediaId;
+class TMceFactory;
+
+// DATA TYPES
+typedef TUint TMceCodecType;
+
+
+// CLASS DECLARATION
+
+/**
+* Base class for codecs.
+*
+* It defines setters and getters for generic codec attributes.
+*
+* In some systems certain device resources cannot be shared. For example
+* speaker of the device might not be able to play simultaneously several
+* differently encoded audio streams. Or only one client at the time
+* could use the camera of the device. Codec states can be used to overcome
+* situations where single codec would occupy some resource for excessive
+* period of time or permanently.
+*
+* Codec can be in one of the three states:
+*
+* When codec is in state EEnabled, resources, associated with the codec,
+* are reserved for the codec and in some cases cannot be used by other
+* software components. Precondition for reserving resources for the codec
+* is that associated device resource (e.g. speaker sink of downlink or
+* camera source of uplink) is also enabled.
+*
+* When codec is in state EStandby, resources are not reserved for the codec
+* and therefore can be used by other software components. If the stream
+* (uplink or downlink), into which this codec is attached, encounters data
+* encoded with the codec, codec in state EStandby is tried to be enabled.
+* If enabling succeeds, codec state changes to EEnabled and associated
+* resources are reserved.
+*
+* When codec is in state EDisabled, resources are not reserved for the codec
+* and are not even tried to be reserved.
+*
+* @lib mceclient.lib
+*/
+class CMceCodec : public CBase
+ {
+
+ public: // Codec states
+
+ enum TState
+ {
+ EDisabled,
+ EStandby,
+ EEnabled
+ };
+
+ public: // Constructors and destructor
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMceCodec();
+
+ public: // New functions
+
+ /**
+ * Sets bitrate used with codec for encoding.
+ * @param aBitrate bitrate value for encoding
+ * @return KErrNotSupported if codec doesn't support bitrate
+ * value issued
+ */
+ virtual TInt SetBitrate( TUint aBitrate ) = 0;
+
+ /**
+ * Sets bitrates allowed with codec.
+ * @param aBitrates allowed bitrate values
+ * @return KErrNotSupported if codec doesn't support bitrate
+ * values issued
+ */
+ virtual TInt SetAllowedBitrates( TUint aBitrates ) = 0;
+
+ /**
+ * Sets the codec specific mode.
+ * @param aCodecMode mode of the codec
+ * @return KErrNotSupported if codec doesnt' support codec mode
+ * value issued
+ */
+ virtual TInt SetCodecMode( TUint aCodecMode ) = 0;
+
+ /**
+ * Sets the payload type.
+ * @param aPayloadType type identifier of the payload
+ * @return KErrNotSupported if codec doesn't support payload type issued
+ */
+ virtual TInt SetPayloadType( TUint8 aPayloadType ) = 0;
+
+
+ public: // New functions
+
+ /**
+ * Sets the state of the codec.
+ * @param aState desired codec state
+ */
+ IMPORT_C void SetStateL( CMceCodec::TState aState );
+
+ /**
+ * Sets the timer period in seconds from starting of inactivity
+ * to automatically changing to state CMceCodec::EStandby .
+ * @param aTimerValue timer period in seconds
+ */
+ IMPORT_C void SetStandByTimerL( TUint32 aTimerValue );
+
+ /**
+ * Sets MMF priority value for the codec.
+ * @param aPriority priority of the codec
+ */
+ IMPORT_C void SetMMFPriorityL( TInt aPriority );
+
+ /**
+ * Sets MMF priority preference value for the codec.
+ * @param aPriorityPreference priority preference of the codec
+ */
+ IMPORT_C void SetMMFPriorityPreferenceL( TInt aPriorityPreference );
+
+ /**
+ * Set keep alive packets send timer value.
+ * @param aTimerValue timer value in ms for keep alive packets
+ * @return One of the standard system-wide error codes.
+ */
+ IMPORT_C void SetKeepAliveTimerL( TUint8 aTimerValue );
+
+ /**
+ * Set keep alive packets payload type.
+ * @param aKeepAlivePT payload type for keep alive packets
+ * @return One of the standard system-wide error codes.
+ */
+ IMPORT_C void SetKeepAlivePayloadTypeL( TUint8 aKeepAlivePT );
+
+ /**
+ * Set keep alive packets payload data.
+ * @param aData payload data for keep alive packets
+ * @return One of the standard system-wide error codes.
+ */
+ IMPORT_C void SetKeepAliveDataL( const TDesC8& aData );
+
+
+ public: // Getters
+
+ /**
+ * Gets the state of the codec
+ * @return state of the codec
+ */
+ IMPORT_C CMceCodec::TState State() const;
+
+ /**
+ * Media id of the codec.
+ * @return media id
+ */
+ //IMPORT_C TMceMediaId Id() const;
+
+ /**
+ * Type of the codec
+ * @return codec type
+ */
+ IMPORT_C TMceCodecType Type() const;
+
+ /**
+ * Gets codec fourCC.
+ * @return fourCC value
+ */
+ IMPORT_C TUint32 FourCC() const;
+
+ /**
+ * Gets current bitrate.
+ * @return bitrate value
+ */
+ IMPORT_C TUint Bitrate() const;
+
+ /**
+ * Gets allowed bitrate values.
+ * @return bitrate values
+ */
+ IMPORT_C TUint AllowedBitrates() const;
+
+ /**
+ * Gets current frame size of the codec.
+ * @return size of single frame used by the codec
+ */
+ IMPORT_C TUint FrameSize() const;
+
+ /**
+ * Gets the codec mode.
+ * @return codec mode
+ */
+ IMPORT_C TUint CodecMode() const;
+
+ /**
+ * Gets the payload type identifier.
+ * @return payload type used
+ */
+ IMPORT_C TUint8 PayloadType() const;
+
+ /**
+ * Gets the sdp name.
+ * @return sdp name of the codec
+ */
+ IMPORT_C const TDesC8& SdpName() const;
+
+ /**
+ * Gets MMF priority
+ * @return MMF priority
+ */
+ IMPORT_C TInt MMFPriority() const;
+
+ /**
+ * Gets MMF priority preference
+ * @return current MMFPriorityPreference
+ */
+ IMPORT_C TInt MMFPriorityPreference() const;
+
+ /**
+ * Gets keep alive packets send timer value.
+ * @return keep alive packets send timer value (ms).
+ */
+ IMPORT_C TUint8 KeepAliveTimer() const;
+
+ /**
+ * Gets keep alive packets payload type.
+ * @return keep alive packets payload type.
+ */
+ IMPORT_C TUint8 KeepAlivePayloadType() const;
+
+ /**
+ * Gets keep alive packets payload data.
+ * @return keep alive packets payload data.
+ */
+ IMPORT_C const TDesC8& KeepAliveData() const;
+
+
+ public: // Preference manipulation
+
+ /**
+ * Gets the preference value.
+ * @return preference value of the codec
+ */
+ IMPORT_C TInt Preference() const;
+
+ /**
+ * Sets the preference value used in media negotiation.
+ * Codec with preference value 0 is considered as the most preferenced
+ * codec. Preference of codecs with the same preference value is
+ * determined by order they were added to the stream.
+ * @param aPreference preference value of the codec
+ */
+ IMPORT_C void SetPreferenceL( TInt aPeference );
+
+
+ public: // Internal
+
+ /**
+ * Initializes the codec.
+ * @param aParent the parent
+ */
+ virtual void InitializeL( CMceMediaStream& aParent );
+
+
+
+ protected: // New functions
+
+ /**
+ * Sets the sdp name.
+ * @param aSdpName sdp name for the codec
+ */
+ virtual void SetSdpNameL( const TDesC8& aSdpName ) = 0;
+
+ /**
+ * C++ default constructor.
+ */
+ CMceCodec();
+
+ protected: // Data
+
+ /**
+ * Codec type.
+ */
+ TMceCodecType iType;
+
+ protected: // NOT owned data
+
+ /**
+ * Parent stream, not owned.
+ */
+ CMceMediaStream* iStream;
+
+ private: // Reserved for future use
+
+ TAny* iReserved;
+
+ public: // stub data
+
+ /**
+ * type of session
+ */
+ //TMceMediaId iID;
+
+ /**
+ * Fmtp attribute
+ */
+ HBufC8* iFmtpAttr;
+
+ /**
+ * Sdp name used in SDP messages
+ */
+ TBuf8<KMceMaxSdpNameLength> iSdpName;
+
+ /**
+ * Payload type
+ */
+ TUint8 iPayloadType;
+
+ /**
+ * Is enabled
+ */
+ TBool iIsEnabled;
+
+ /**
+ * Stream's bit rate
+ */
+ TUint iBitrate;
+
+ /**
+ * Stream's allowed bit rates
+ */
+ TUint32 iAllowedBitrates;
+
+ /**
+ * Codec mode ( e.g. PCMU, PCMA, Bandwidth efficient, octet aligned )
+ */
+ TUint32 iCodecMode;
+
+ /**
+ * Codec FourCC
+ */
+ TUint32 iFourCC;
+
+ /**
+ * Codecs frame size
+ */
+ TUint iFrameSize;
+
+ /**
+ *
+ */
+ TInt iMMFPriority;
+
+ /**
+ *
+ */
+ TInt iMMFPriorityPreference;
+
+ /**
+ *
+ */
+ TUint8 iKeepAliveTimer;
+
+ /**
+ * Codecs frame size
+ */
+ TUint8 iKeepAlivePayloadType;
+
+ /**
+ *
+ */
+ TBuf8<10> iKeepAliveData;
+
+ TInt iPreference;
+
+ };
+
+
+#endif
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcedefs.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,97 @@
+/*
+* 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 MCEDEFS_H
+#define MCEDEFS_H
+
+#include <e32base.h>
+
+const TInt KMceMaxSdpNameLength = 20;
+const TUint8 KMceMaxPacketrate = 10;
+const TInt KMcePTimeFactor = 1000;
+
+const TInt KMceMaxSizeInReadStream = 1000;
+const TInt KMceExternalizeBufferExpandSize = 100;
+const TInt KMceArrayGranularity = 5;
+
+
+_LIT8( KMceSDPNamePCMU, "PCMU" );
+_LIT8( KMceSDPNamePCMA, "PCMA" );
+_LIT8( KMceSDPNameAMR, "AMR" );
+
+_LIT8( KMceSDPNameH263, "H263" );
+_LIT8( KMceSDPNameH2632000, "H263-2000" );
+_LIT8( KMceSDPNameH2631998, "H263-1998" );
+_LIT8( KMceSDPNameH264, "H264" );
+
+typedef TInt TMceReturnStatus;
+const TMceReturnStatus KMceAsync = 1;
+const TMceReturnStatus KMceReady = 0;
+
+// SESSION MODIFIERS
+
+/**
+* Data type for session modifiers.
+*/
+typedef TUint32 TMceSessionModifier;
+
+
+/**
+* Usage of QOS preconditions within session;
+* This modifier can be set only when session is in state MceSession::EIdle.
+* By default, session is in preconditions supported mode.
+*
+* KMcePreconditionsNotUsed indicates that preconditions are not used.
+* KMcePreconditionsSupported indicates that preconditions are supported
+*/
+// KEY
+const TMceSessionModifier KMcePreconditions = 0;
+// VALUES
+const TUint KMcePreconditionsNotUsed = 0;
+const TUint KMcePreconditionsSupported = 1;
+
+/**
+* Usage of reliable provisional responses (aka 100rel) within session.
+* This modifier can be set only when session is in state MceSession::EIdle
+* or MceSession::EIncoming.
+* By default, session is in 100rel supported mode.
+*
+* KMce100RelNotUsed indicates that 100rel is not used.
+* KMce100RelSupported indicates that 100rel is supported.
+* KMce100RelRequired indicates that 100rel is required.
+*/
+// KEY
+const TMceSessionModifier KMce100Rel = 1;
+// VALUES
+const TUint KMce100RelNotUsed = 0;
+const TUint KMce100RelSupported = 1;
+const TUint KMce100RelRequired = 2;
+
+
+
+#ifdef __MWERKS__
+#pragma warn_emptydecl off
+#endif
+
+#ifdef MCE_UNIT_TEST
+#include "mcetestdefs.h"
+#else
+#define MCE_UNIT_TEST_DEFS
+#endif
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcedisplaysink.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 2006 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 MCEDISPLAYSINK_H
+#define MCEDISPLAYSINK_H
+
+// INCLUDES
+#include "mcemediasink.h"
+
+// FORWARD DECLARATIONS
+class CMceManager;
+class RWindow;
+class CWindowGc;
+class CMccScreen;
+
+// DATA TYPES
+const TMceSinkType KMceDisplaySink = 3;
+
+
+// CLASS DECLARATION
+
+/**
+* Class representing display in MCE.
+*
+* CMceDisplaySink can be used to show video on screen or as a viewfinder
+* of the camera.
+*
+* Enable and Disable operations to it are considered to be local,
+* so they are not signalled to remote terminal.
+*
+* @lib mceclient.lib
+*/
+class CMceDisplaySink : public CMceMediaSink
+ {
+
+ public:
+
+ enum TRotation
+ {
+ ENone,
+ EClockwise90Degree,
+ EClockwise180Degree,
+ EClockwise270Degree
+ };
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aManager reference to the manager
+ */
+ IMPORT_C static CMceDisplaySink* NewL( CMceManager& aManager );
+
+ /**
+ * Two-phased constructor.
+ * @param aManager reference to the manager
+ */
+ IMPORT_C static CMceDisplaySink* NewLC( CMceManager& aManager );
+
+ /// Not in the real implementation
+ IMPORT_C static CMceDisplaySink* NewL();
+
+ /// Not in the real implementation
+ IMPORT_C static CMceDisplaySink* NewLC();
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceDisplaySink();
+
+
+ public: // From CMceMediaSink
+
+ /**
+ * Enables the sink explicitly.
+ */
+ IMPORT_C void EnableL();
+
+ /**
+ * Disables the sink explicitly.
+ */
+ IMPORT_C void DisableL();
+
+
+ public: // New functions
+
+ /**
+ * Gets the number of available displays on the device.
+ * @return number of available displays
+ */
+ IMPORT_C TInt DisplaysAvailable() const;
+
+ /**
+ * Sets index of physical display to be used.
+ * @param aDisplayIndex, index of the display to be used; number of
+ * available displays can be retrieved by calling
+ * CMceDisplaySink::DisplaysAvailable
+ * @leave KErrNotSupported if requested display cannot be used
+ */
+ IMPORT_C void SetDisplayIndexL( TInt aDisplayIndex );
+
+ /**
+ * Sets display resources.
+ * @param aWindow handle to the display window of the user
+ * @param aGc graphics context of the user
+ */
+ IMPORT_C void SetDisplay( RWindow& aWindow, CWindowGc& aGc );
+
+ /**
+ * Sets display rectangle. Display data is drawn to the given area.
+ * @param aRect display area
+ */
+ IMPORT_C void SetDisplayRectL( const TRect& aRect );
+
+ /**
+ * Gets current display rectagle.
+ * @return current display rectangle
+ */
+ IMPORT_C const TRect DisplayRectL();
+
+ /*
+ * Sets display sink priority. Priority value 0 is the highest priority.
+ * Display sink with higher priority draws over less priority display
+ * if display rectangles overlap.
+ * @param aPriority priority value
+ */
+ IMPORT_C void SetPriorityL( TUint aPriority );
+
+ /*
+ * Display sink's current priority.
+ * @return priority value
+ */
+ IMPORT_C TUint PriorityL();
+
+ /*
+ * Sets display sink rotation.
+ * @param aRotation rotation value
+ */
+ IMPORT_C void SetRotationL( TRotation aRotation );
+
+ /*
+ * Display sink's current rotation.
+ * @return rotation value
+ */
+ IMPORT_C TRotation RotationL();
+
+
+ public: // internal
+
+ /**
+ * Initializes
+ * @param aManager the manager. Ownership is NOT transferred
+ */
+ void InitializeL( CMceManager* aManager );
+
+
+ private:
+
+ /**
+ * C++ constructor.
+ */
+ CMceDisplaySink();
+
+ private: // Reserved for future use
+
+ TAny* iReserved;
+
+ public: // stub data
+
+ TInt iDisplayIndex;
+
+ TRect iDisplayRect;
+
+ TUint iDisplayPriority;
+
+ TRotation iRotation;
+
+ CMccScreen* iScreen;
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcefilesink.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2006 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 MCEFILESINK_H
+#define MCEFILESINK_H
+
+// INCLUDES
+#include <e32std.h>
+#include <MceMediaSink.h>
+
+// FORWARD DECLARATIONS
+
+// DATA TYPES
+const TMceSinkType KMceFileSink = 4;
+
+
+// CLASS DECLARATION
+
+/**
+* Class representing file sink in Mce.
+*
+* CMceFileSink can be used to record a stream to the file. The file may consist of
+* both audio and video data. If both media elements are available and should be
+* recorded to the same file, the same file sink should be attached to audio stream
+* and video stream. Recording only one of the media elements is possible as well.
+*
+* Enable (continue) and Disable (pause) operations to it are considered
+* to be local, so they are not signalled to remote terminal.
+*
+* @lib mceclient.lib
+*/
+class CMceFileSink : public CMceMediaSink
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aFileName name of the file including full path info
+ */
+ IMPORT_C static CMceFileSink* NewL( const TFileName& aFileName );
+
+ /**
+ * Two-phased constructor.
+ * @param aFileName name of the file including full path info
+ */
+ IMPORT_C static CMceFileSink* NewLC( const TFileName& aFileName );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceFileSink();
+
+
+ public: // From CMceMediaSink
+
+ /**
+ * Enables the sink explicitly.
+ */
+ IMPORT_C void EnableL();
+
+ /**
+ * Disables the sink explicitly.
+ */
+ IMPORT_C void DisableL();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CMceFileSink();
+
+ /**
+ * Second-phase constructor.
+ */
+ void ConstructL( const TFileName& aFileName );
+
+ public: // Stub data
+
+ TFileName iFileName;
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcefilesource.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,262 @@
+/*
+* Copyright (c) 2006 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 MCEFILESOURCE_H
+#define MCEFILESOURCE_H
+
+// INCLUDES
+#include "mcemediasource.h"
+#include "mcemediastream.h"
+
+// CONSTANTS
+const TMceSourceType KMceFileSource = 4;
+
+//FORWARD DECLARATIONS
+class CMceManager;
+
+// CLASS DECLARATION
+
+/**
+* Class representing file source in MCE.
+*
+* CMceFileSource can be used for streaming file contents. The file may contain
+* both audio and video data. If the user wants to stream both media types,
+* the same file source should be attached to audio stream and video stream.
+*
+* The file may contain also several elements of the same media type (e.g.
+* 3 audio channels) and the user might want to use only some of those.
+* This can be handled by defining index of the file's current media element:
+*
+* - Get number of audio media elements within the file (e.g. returns 3)
+* - Set current audio element index to be 0
+* - Attach the file source to the audioStreamOne (audio element 0 is attached)
+* - Set current audio element index to be 2
+* - Attach the file source to the audioStreamTwo (audio element 2 is attached)
+* - Consequently, file's audio channel 0 would be streamed over the audioStreamOne
+* and channel 2 over the audioStreamTwo. Channel 1 would be ignored.
+*
+* Enable (continue) and Disable (pause) operations to it are considered
+* to be local, so they are not signalled to remote terminal.
+*
+* @lib mceclient.lib
+*/
+class CMceFileSource : public CMceMediaSource
+ {
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aManager associated MCE manager
+ * @param aFileName name of the file including full path info
+ */
+ IMPORT_C static CMceFileSource* NewL( CMceManager& aManager,
+ const TFileName& aFileName );
+
+ /**
+ * Two-phased constructor.
+ * @param aManager associated MCE manager
+ * @param aFileName name of the file including full path info
+ */
+ IMPORT_C static CMceFileSource* NewLC( CMceManager& aManager,
+ const TFileName& aFileName );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceFileSource();
+
+
+ public: // From CMceMediaSource
+
+ /**
+ * Enables the source explicitly.
+ */
+ IMPORT_C void EnableL();
+
+ /**
+ * Disables the source explicitly.
+ */
+ IMPORT_C void DisableL();
+
+
+ public: // Functions
+
+ /**
+ * Updates file for the source.
+ * @param aFileName name of the file including full path info
+ */
+ IMPORT_C void UpdateL ( const TFileName& aFileName );
+
+ /**
+ * Determines how many media elements of the spesified type the file
+ * source contains. E.g. audio file may contain N number of audio
+ * channels which has to be streamed over N number of audio streams.
+ * @param aType the type of media
+ * @return the number of media elements (of spesified type)
+ * the file contains
+ */
+ IMPORT_C TInt MediaElementCountL( TMceMediaType aType ) const;
+
+ /**
+ * Sets currently managed media element of the spesified media type.
+ * The setting is effective when the file source is attached to
+ * media stream of the spesified type. Current media element can be
+ * defined for each media type the file contains. By default, media
+ * element 0 of each media type is used.
+ * @param aType the type of media
+ * @param aIndex new index of the current media element
+ * @leave KErrArgument if media element spesified by input parameters
+ * does not exist
+ */
+ IMPORT_C void SetCurrentMediaElementL( TMceMediaType aType, TInt aIndex );
+
+ /**
+ * Gets currently managed media element of the spesified media type.
+ * @param aType the type of media
+ * @return index of the current media element or KErrNotFound if no media
+ * elements of the spesified type exists
+ */
+ IMPORT_C TInt CurrentMediaElement( TMceMediaType aType );
+
+ /**
+ * Sets the position within the file from where to start playback.
+ * @pre IsEnabled() == EFalse and contains audio/video
+ * @param aPosition from start of the file in microseconds
+ */
+ IMPORT_C void SetPositionL( const TTimeIntervalMicroSeconds& aPosition );
+
+ /**
+ * Gets the current playback position in microseconds from the start of the file.
+ * @pre contains audio/video
+ * @return current position from start of the file in microseconds
+ */
+ IMPORT_C TTimeIntervalMicroSeconds PositionL() const;
+
+ /**
+ * Returns the duration of the file in microseconds.
+ * @pre contains audio/video
+ * @return duration of the file in microseconds.
+ */
+ IMPORT_C TTimeIntervalMicroSeconds DurationL() const;
+
+ /**
+ * Sets fast forward on/off.
+ * @pre contains video
+ * @param aUseFFWD ETrue if fast forward is enabled; otherwise EFalse
+ */
+ IMPORT_C void SetFastForwardL( TBool aUseFFWD );
+
+ /**
+ * Sets fast rewind on/off.
+ * @pre contains video
+ * @param aUseFRWD ETrue if fast rewind is enabled; otherwise EFalse
+ */
+ IMPORT_C void SetFastRewindL( TBool aUseFRWD );
+
+ /**
+ * Starts transcoding of file. After the transcoding is complete,
+ * file of this source is changed into the transcoded file.
+ * @pre CMceMediaStream::State() == ETranscodingRequired
+ * @post CMceMediaStream::State() == ETranscoding
+ * @param aFileName Name of the transcoding output file.
+ */
+ IMPORT_C void TranscodeL( const TFileName& aFileName );
+
+ /**
+ * Cancels transcoding of file.
+ * @pre CMceMediaStream::State() == ETranscoding
+ * @post CMceMediaStream::State() == ETranscodingRequired
+ */
+ IMPORT_C void CancelTranscodeL();
+
+ /**
+ * Gets the current transcoding progress in percentage.
+ * Value is updated with MMceStreamObserver::StreamStateChanged() event.
+ * @pre CMceMediaStream::State() == ETranscoding
+ * @return Transcoding progress in persentage (0-100).
+ */
+ IMPORT_C TInt TranscodingProgressL() const;
+
+
+ public: // internal
+
+ /**
+ * Initializes
+ * @param aManager the manager. Ownership is NOT transferred
+ */
+ void InitializeL( CMceManager* aManager );
+
+ public:
+
+ /**
+ * Two-phased constructor.
+ */
+ static CMceFileSource* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ static CMceFileSource* NewLC();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CMceFileSource();
+
+ /**
+ * Second-phase constructor.
+ */
+ void ConstructL( CMceManager* aManager,
+ const TFileName& aFileName );
+
+
+ public: // Stub data
+
+ TBool iFastForward;
+ TBool iFastRewind;
+ TTimeIntervalMicroSeconds iPosition;
+
+ //TMceFileInfo iFileInfo;
+ //TBuf8<256> iFileName;
+
+ TBool iInitialInfoRetrieved;
+
+ TInt iCurrentAudioElement;
+ TInt iCurrentVideoElement;
+
+
+ TFileName iFileName;
+ TTimeIntervalMicroSeconds iDuration;
+ TInt iAudioElementCount;
+ TInt iVideoElementCount;
+
+ TInt iTranscodingPercentage;
+
+ // If this code is != KErrNone, next operation that can fail will fail
+ // (leave or return a value) with this code. Variable is reseted before
+ // failing.
+ // Obs! Check that wanted failing is really implemented in this stub
+ mutable TInt iFailWithCode;
+
+ };
+
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mceh263codec.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,199 @@
+/*
+* 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 CMCEH263CODEC_H
+#define CMCEH263CODEC_H
+
+// INCLUDES
+#include "mcevideocodec.h"
+#include "mcedefs.h"
+
+// CONSTANTS
+
+const TUint KMceH263FrameHeight = 176;
+const TUint KMceH263FrameWidth = 144;
+const TUint KMceH263ClockRate = 90000;
+const TReal KMceH263FrameRate = 15;
+
+const TInt KMceH263Level10Bitrate = 64000;
+const TInt KMceH263Level45Bitrate = 128000;
+
+const TUint KMceAllowedH263Bitrate10 = 0x0001;
+const TUint KMceAllowedH263Bitrate45 = 0x0002;
+const TUint KMceAllowedH263BitrateAll = 0x00FF;
+
+// CLASS DECLARATION
+
+/**
+* Class for the H263 codec information.
+*
+* It checks the validity of inserted values for H263
+*
+* @lib mceclient.lib
+*/
+class CMceH263Codec : public CMceVideoCodec
+ {
+
+ public: // Constructors and destructor
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceH263Codec();
+
+ public:
+
+ /**
+ * Two-phased constructor.
+ * @param aSdpName sdp name
+ */
+ IMPORT_C static CMceH263Codec* NewL( TBuf8<KMceMaxSdpNameLength> aSdpName);
+
+ /**
+ * Two-phased constructor.
+ * @param aSdpName sdp name
+ */
+ IMPORT_C static CMceH263Codec* NewLC( TBuf8<KMceMaxSdpNameLength> aSdpName );
+
+ public: // From base classes
+
+ /**
+ * Sets bitrate used with codec for encoding.
+ * @param aBitrate bitrate value for encoding
+ * @return KErrNotSupported if codec doesn't support bitrate
+ * value issued
+ */
+ virtual TInt SetBitrate( TUint aBitrate );
+
+ /**
+ * Sets bitrates allowed with codec.
+ * @param aBitrates allowed bitrate values
+ * @return KErrNotSupported if codec doesn't support bitrate
+ * values issued
+ */
+ virtual TInt SetAllowedBitrates( TUint aBitrates );
+
+ /**
+ * Sets the codec specific mode.
+ * @param aCodecMode mode of the codec
+ * @return KErrNotSupported if codec doesnt' support codec mode
+ * value issued
+ */
+ virtual TInt SetCodecMode( TUint aCodecMode );
+
+ /**
+ * Sets the payload type.
+ * @param aPayloadType type identifier of the payload
+ * @return KErrNotSupported if codec doesn't support payload type issued
+ */
+ virtual TInt SetPayloadType( TUint8 aPayloadType );
+
+ /**
+ * Clones the codec.
+ * @return cloned codec; ownership is transferred
+ */
+ virtual CMceVideoCodec* CloneL() const;
+
+ /**
+ * Sets maximum bitrate of the codec.
+ * @param aMaxBitrate value of maximum bitrate used for encoding
+ * @leave KErrNotSupported if codec doesn't support frame sizes issued
+ */
+ virtual void SetMaxBitrateL( TUint aMaxBitrate );
+
+ /**
+ * Sets resolutions allowed with the codec.
+ * @param aResolutions bitfield of allowed resolutions
+ * @leave KErrNotSupported if codec doesn't support resolutions issued
+ */
+ virtual void SetAllowedResolutionsL( TUint aResolutions );
+
+ /**
+ * Sets resolution of the video.
+ * @param aResolution resolution of the video in pixels
+ * @leave KErrNotSupported if codec doesn't support resolution issued
+ */
+ virtual void SetResolutionL( TSize aResolution );
+
+ /**
+ * Sets frame rates allowed with the codec.
+ * @param aFrameRates allowed frame rate values as a bitfield
+ * @leave KErrNotSupported if codec doesn't support frame rates issued
+ */
+ virtual void SetAllowedFrameRatesL( TUint aFrameRates );
+
+ /**
+ * Sets frame rate used with the codec for encoding.
+ * @param aFrameRate frame rate for encoding
+ * @leave KErrNotSupported if codec doesn't support frame rate value
+ * issued
+ */
+ virtual void SetFrameRateL( TReal aFrameRate );
+
+ /**
+ * Sets preferred encoding device for uplink stream and preferred decoding
+ * device for downlink stream.
+ * @param aEncodingDecodingDevice
+ * @leave KErrNotSupported if setting preferred device is not possible
+ */
+ virtual void SetPreferredEncodingDecodingDeviceL(
+ TUid aEncodingDecodingDevice );
+
+ /**
+ * Set config key (sprop-parameter-sets)
+ * @param aConfigKey, config key as Base64 encoded
+ * @leave KErrNotSupported if setting config key is not possible
+ */
+ virtual void SetConfigKeyL( const TDesC8& aConfigKey );
+
+
+ private: // Helper functions
+
+ /**
+ * Sets the sdp name.
+ * @param aSdpName the sdp name
+ */
+ void SetSdpNameL( const TDesC8& aSdpName );
+
+ private: // Constructors
+
+ /**
+ * C++ default constructor.
+ */
+ CMceH263Codec();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( TBuf8<KMceMaxSdpNameLength> aSdpName);
+
+
+
+ private: // Data
+
+ private: // Reserved for future use
+
+ TAny* iReserved;
+
+
+ };
+
+
+#endif
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mceinsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,199 @@
+/*
+* 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 CMCEINSESSION_H
+#define CMCEINSESSION_H
+
+// INCLUDES
+#include <e32std.h>
+#include <mcesession.h>
+
+// CLASS DECLARATION
+
+/**
+* Class for mobile terminated MCE sessions.
+*
+* CMceInSession represents incoming invitation to join in a session.
+*
+* The characteristics of the session are defined by remote terminal. Theses charactereistics
+* are defined using SDP and are turned by MCE server into structure of media streams attached
+* into the session. The user of this class is then responsible to either reject accept
+* the invitation.
+*
+* Accepting the invitation is executed in two steps. First after receiving the invitation
+* the user must complete the media structure. Streams attached to the session are not complete,
+* but they must be completed by the user. Those componens defined in SDP are put automatically
+* into media structure (like streams and RTP sinks and sources), but other relations must
+* be completed by user. When media structure is complete, UpdateL method is called and session
+* establishement continues with second step.
+*
+* After all media resources are succesfully negotiated and reserved, session state is changed
+* to Proceeding, and end used can be alarmed about incoming invitation. Typically, at this state
+* 180 Ringing response is sent to network. If end user accepts the invitation, 200 OK is
+* sent to network and session is established.
+*
+* After the session has been succesfylly established, it can be later updated and
+* must be finally terminated.
+*
+* This class is never instantiated by user, but the ownership is in any case transferred
+* to it. See class MMceInSessionObserver.
+*
+* If for any reason instance of this class is deleted while in established state,
+* session is automatically terminated by MCE server.
+*
+* @lib mceclient.lib
+*/
+class CMceInSession : public CMceSession
+ {
+
+ public: // Constructors and destructor
+
+ /**
+ * Destructor
+ */
+ IMPORT_C ~CMceInSession();
+
+ public: // Functions
+
+ /**
+ * Indicates to the server side, that 180(Ringing) response for the
+ * incoming INVITE request can be sent. Does not establish session.
+ * @pre State() == CMceSession::EProceeding
+ * @param aHeaders, SIP headers to be added. Ownership is
+ * transferred.
+ * @param aContentType, a type of content. Ownership
+ * is transferred.
+ * @param aContent, content to be added in body. Ownership is
+ * transferred.
+
+ */
+ IMPORT_C void RingL( CDesC8Array* aHeaders = 0,
+ HBufC8* aContentType = 0,
+ HBufC8* aContent = 0 );
+
+ /**
+ * Answers to an incoming session. Indicates to server side that the
+ * 200(OK) response for the incoming INVITE has to be sent.
+ * @pre State() == CMceSession::EProceeding
+ * @post State() == CMceSession::EAnswering
+ */
+ IMPORT_C void AcceptL();
+
+ /**
+ * Answers to an incoming session. Indicates to server side that the
+ * given response for the incoming INVITE has to be sent.
+ * @pre State() == CMceSession::EProceeding && ( 200 <= aCode <= 300 )
+ * @post State() == CMceSession::EAnswering
+ * @param aReason, reason phrase
+ * @param aCode, reason code
+ * @param aHeaders, SIP headers to be added. Ownership is
+ * transferred.
+ * @param aContentType, a type of content. Ownership
+ * is transferred.
+ * @param aContent, content to be added in body. Ownership is
+ * transferred.
+ */
+ IMPORT_C void AcceptL( const TDesC8& aReason,
+ TUint32 aCode,
+ CDesC8Array* aHeaders = 0,
+ HBufC8* aContentType = 0,
+ HBufC8* aContent = 0 );
+
+ /**
+ * Rejects the incoming session. Indicates to server side that
+ * 603(Decline) response has to be sent.
+ * @pre State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EProceeding
+ * @post State() == CMceSession::ETerminated
+ */
+ IMPORT_C void RejectL();
+
+ /**
+ * Rejects the incoming session. Indicates to server side that
+ * 603(Decline) response has to be sent.
+ * @pre ( State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EProceeding ) &&
+ * ( 300 <= aCode < 700 )
+ * @post State() == CMceSession::ETerminated
+ * @param aReason, reason phrase
+ * @param aCode, reason code
+ * @param aHeaders, SIP headers to be added. Ownership is
+ * transferred.
+ * @param aContentType, a type of content. Ownership
+ * is transferred.
+ * @param aContent, content to be added in body. Ownership is
+ * transferred.
+ */
+ IMPORT_C void RejectL( const TDesC8& aReason,
+ TUint32 aCode,
+ CDesC8Array* aHeaders = 0,
+ HBufC8* aContentType = 0,
+ HBufC8* aContent = 0 );
+
+ public: // serialization
+
+ /**
+ * Two-phased constructor.
+ * @param aReadStream, read stream
+ * @param aManager, reference to session manager.
+ * @param aProfileId, id of the sip profile used for the session.
+ */
+ static CMceInSession* NewL( RReadStream& aReadStream,
+ CMceManager& aManager,
+ TUint32 aProfileId );
+ /**
+ * Two-phased constructor.
+ * For temporay use only.
+ */
+ IMPORT_C static CMceInSession* NewL();
+
+ /**
+ * C++ default constructor.
+ * @param aManager, reference to session manager.
+ * @param aProfileId, id of the sip profile used for the session.
+ */
+ CMceInSession( CMceManager* aManager, TUint32 aProfileId );
+
+
+ private://methods
+
+ /**
+ * second-phase constructor
+ * @param aOriginator, the originator
+ * @param aRecipient, the recipient
+ */
+ void ConstructL( const TDesC8& aOriginator, const TDesC8& aRecipient );
+
+ public: // Stub constructor
+
+ /**
+ * Two-phased constructor.
+ * @param aManager, reference to session manager.
+ */
+ IMPORT_C static CMceInSession* NewL( CMceManager& aManager,
+ const TDesC8& aOriginator );
+
+
+ public: // Stub data
+
+ TBool iRingingCalled;
+
+ };
+
+
+ #endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mceinsessionobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,74 @@
+/*
+* 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 MMCEINSESSIONOBSERVER_H
+#define MMCEINSESSIONOBSERVER_H
+
+// INCLUDES
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class CMceInSession;
+class TMceTransactionDataContainer;
+
+// CLASS DECLARATION
+
+/**
+* An interface to be implemented by users of MCE if they wish to receive
+* invitations to session from network.
+*
+* This observer is set using CMceManager::SetInSessionObserver function.
+*
+* @lib mceclient.lib
+*/
+class MMceInSessionObserver
+ {
+
+ public: // Functions
+
+ /**
+ * Incoming session invitation. The CMceInSession is given to the
+ * application as a callback.
+ * @param aSession, pointer to the incoming session. Ownership is
+ * transferred.
+ * @param aContainer, if present, holds details of
+ * transaction causing state change.
+ */
+ virtual void IncomingSession(
+ CMceInSession* aSession,
+ TMceTransactionDataContainer* aContainer ) = 0;
+
+ /**
+ * Incoming session update. The new updated CMceInSession is given to the
+ * application as a callback.
+ * @param aOrigSession, the original session to be updated. This instance
+ * cannot be used anymore, all actions done using aUpdatedSession instance.
+ * @param aUpdatedSession, pointer to the new updated session. Ownership is
+ * transferred.
+ * @param aContainer, if present, holds details of
+ * update transaction.
+ */
+ virtual void IncomingUpdate(
+ CMceSession& aOrigSession,
+ CMceInSession* aUpdatedSession,
+ TMceTransactionDataContainer* aContainer ) = 0;
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcemanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,271 @@
+/*
+* 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 CMCEMANAGER_H
+#define CMCEMANAGER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <badesca.h>
+//#include <mcedefs.h>
+
+// FORWARD DECLARATIONS
+class MMceInSessionObserver;
+class MMceInEventObserver;
+class MMceInReferObserver;
+class MMceSessionObserver;
+class MMceEventObserver;
+class MMceReferObserver;
+class MMceStreamObserver;
+class MMceRtpObserver;
+class CMceSession;
+class CMceEvent;
+class CMceRefer;
+class TMceMediaId;
+class CMceAudioCodec;
+class CMceVideoCodec;
+class TMceTransactionDataContainer;
+class CMusTestSessionSimulator;
+
+// CLASS DECLARATION
+
+/**
+* Class for connecting to MCE server.
+*
+* This class provides the connection to the MCE server and
+* provides functions for setting observers for asynchronous
+* events.
+*
+* The user should create only one instance of this class.
+*
+* @lib mceclient.lib
+*/
+class CMceManager : public CBase
+ {
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aAppUid, uid of the application.
+ * @param aContainer, if set, detailed data provided in observers.
+ */
+ IMPORT_C static CMceManager* NewL(
+ const TUid& aAppUid,
+ TMceTransactionDataContainer* aContainer = 0);
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceManager();
+
+ public: // Functions
+
+ /**
+ * Set observer for incoming sessions.
+ * @param aInSessionObserver, observer of the sessions.
+ */
+ IMPORT_C void SetInSessionObserver(
+ MMceInSessionObserver* aInSessionObserver );
+
+ /**
+ * Set observer for incoming events.
+ * @param aInEventObserver, observer of the events.
+ */
+ IMPORT_C void SetInEventObserver(
+ MMceInEventObserver* aInEventObserver );
+
+ /**
+ * Set observer for incoming refers.
+ * @param aInReferObserver, observer of the refers.
+ */
+ IMPORT_C void SetInReferObserver(
+ MMceInReferObserver* aInReferObserver );
+
+ /**
+ * Set observer for sessions.
+ * @param aSessionObserver, observer of the sessions.
+ */
+ IMPORT_C void SetSessionObserver(
+ MMceSessionObserver* aSessionObserver );
+
+ /**
+ * Set observer for medias
+ * @param aMediaObserver, observer of medias.
+ */
+ IMPORT_C void SetMediaObserver(
+ MMceStreamObserver* aMediaObserver );
+
+ /**
+ * Set observer for rtp
+ * @param aRtpObserver, observer of rtp
+ */
+ IMPORT_C void SetRtpObserver(
+ MMceRtpObserver* aRtpObserver );
+
+ /**
+ * Sets observer for incoming events.
+ * @param aEventObserver, observer of the event. Ownership is
+ * not transferred.
+ */
+ IMPORT_C void SetEventObserver(
+ MMceEventObserver* aEventObserver);
+
+ /**
+ * Sets observer for incoming REFER events.
+ * @param aReferObserver, observer of the event. Ownership is
+ * not transferred.
+ */
+ IMPORT_C void SetReferObserver(
+ MMceReferObserver* aReferObserver);
+
+ /**
+ * Gets currently ongoing sessions
+ * @return RPointerArray array of sessions.
+ */
+ IMPORT_C const RPointerArray< CMceSession >& Sessions() const;
+
+ /**
+ * Gets currently ongoing events
+ * @return RPointerArray array of events.
+ */
+ IMPORT_C const RPointerArray< CMceEvent >& Events() const;
+
+ /**
+ * Sets observer for incoming SUBSCRIBE events.
+ * @param aObserver, observer of the event. Ownership is
+ * not transferred.
+ */
+ IMPORT_C const RPointerArray< CMceRefer >& Refers() const;
+
+ /**
+ * Returns supported audio codecs of the system.
+ * @return supported audio codecs of the system.
+ */
+ IMPORT_C const RPointerArray<const CMceAudioCodec>& SupportedAudioCodecs() const;
+
+ /**
+ * Returns supported video codecs of the system.
+ * @return supported video codecs of the system.
+ */
+ IMPORT_C const RPointerArray<const CMceVideoCodec>& SupportedVideoCodecs() const;
+
+ /*
+ * Set default headers for the method. The headers will always be added
+ * to the given SIP methods unless overwritten with
+ * headers given as parameter for the API method triggering the
+ * sending of request/response.
+ * @param aMethods, the SIP methods the headers are added to.
+ * @param aHeaders, the default headers, ownership is transferred.
+ */
+ IMPORT_C void SetDefaultHeadersL( CDesC8Array* aMethods, CDesC8Array* aHeaders );
+
+ /*
+ * Get the default headers assigned for the given method.
+ * If none is assigned, and empty array is returned.
+ * @param aMethod, the method for which the headers are queried.
+ * @return the default headers, ownership is transfered.
+ */
+ IMPORT_C CDesC8Array* DefaultHeadersL( const TDesC8& aMethod ) const;
+
+
+ public: // Functions
+
+ /**
+ * Gets observer for incoming sessions
+ * @return incoming session observer
+ */
+ MMceInSessionObserver* InSessionObserver() const;
+
+ /**
+ * Gets session observer
+ * @return session observer
+ */
+ MMceSessionObserver* SessionObserver() const;
+
+ /**
+ * Gets media observer
+ * @return media observer
+ */
+ MMceStreamObserver* MediaObserver() const;
+
+ /**
+ * Gets rtp observer
+ * @return rtp observer
+ */
+ MMceRtpObserver* RtpObserver() const;
+
+
+ /**
+ * Returs transaction container for detailed data.
+ * Returns NULL, if none exists.
+ */
+ TMceTransactionDataContainer* TransactionContainer() const;
+
+ private:
+
+ /**
+ * C++ default constructor.
+ * @param aAppUid, uid of the application.
+ * @param aContainer, if set, detailed data provided in observers.
+ */
+ CMceManager( const TUid& aAppUid,
+ TMceTransactionDataContainer* aContainer = 0);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+
+ public: // Stub data
+
+ /**
+ * detailed callbacks wanted
+ */
+ TBool iDetailedCallbacks;
+
+ /**
+ * sessions
+ */
+ RPointerArray<CMceSession> iSessions;
+
+ /**
+ * supported audio codecs
+ */
+ RPointerArray<const CMceAudioCodec> iSupportedAudioCodecs;
+
+ /**
+ * supported audio codecs
+ */
+ RPointerArray<const CMceVideoCodec> iSupportedVideoCodecs;
+
+ MMceSessionObserver* iSessionObserver;
+ MMceStreamObserver* iMediaObserver;
+ MMceRtpObserver* iRtpObserver;
+ MMceInSessionObserver* iInSessionObserver;
+
+ TMceTransactionDataContainer* iContainer;
+
+ private: // Data
+ CMusTestSessionSimulator* iSessionSimulator;
+
+ friend class CMceSession;
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcemediasink.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,143 @@
+/*
+* 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 CMCEMEDIASINK_H
+#define CMCEMEDIASINK_H
+
+// INCLUDES
+#include <e32base.h>
+#include <badesca.h>
+
+// DATA TYPES
+typedef TUint TMceSinkType;
+
+// FORWARD DECLARATIONS
+class TMceSinkFactory;
+class CMceMediaStream;
+class TMceIds;
+class TMceEvent;
+class TMceMediaId;
+class CMceManager;
+
+
+// CLASS DECLARATION
+
+/**
+* Base class for the MCE media sinks.
+*
+* Media sinks represent the destination of data.
+* CMceMediaSink gets it data from CMceMediaSource through
+* CMceMediaStream.
+*
+* CMceMediaSink has a type that defines how it can connected to other
+* sources and streams.
+*
+* Enable and Disable operations to sinks are considered to be local,
+* so they are not signalled to remote terminal.
+*
+* @lib mceclient.lib
+*/
+class CMceMediaSink: public CBase
+ {
+
+ public: // Destructor
+
+ IMPORT_C ~CMceMediaSink();
+
+ public: // Functions
+
+ /**
+ * Returns the type of the sink.
+ * @return The type of the sink.
+ */
+ IMPORT_C TMceSinkType Type() const;
+
+ /**
+ * Enables streaming explicitly.
+ */
+ virtual void EnableL() = 0;
+
+ /**
+ * Disables streaming explicitly.
+ */
+ virtual void DisableL() = 0;
+
+ /**
+ * Returns the state of the sink.
+ * @return ETrue if enabled, EFalse if disabled.
+ */
+ IMPORT_C TBool IsEnabled() const;
+
+ public: //internal
+
+ /**
+ * Initializes
+ * @param aParent the parent
+ */
+ virtual void InitializeL( CMceMediaStream& aParent );
+
+ /**
+ * Initializes
+ * @param aManager the manager. Ownership is NOT transferred
+ */
+ virtual void InitializeL( CMceManager* aManager );
+
+ /**
+ * Sets and gets reference count describing to how many
+ * streams sink is associated
+ * @return reference count reference
+ */
+ TInt& ReferenceCount();
+
+ protected:
+
+ /**
+ * C++ default constructor.
+ */
+ CMceMediaSink();
+
+ /**
+ * Enables streaming explicitly.
+ */
+ void DoEnableL();
+
+ /**
+ * Disables streaming explicitly.
+ */
+ void DoDisableL();
+
+
+ protected: // NOT owned data
+
+ /**
+ * stream
+ */
+ CMceMediaStream* iStream;
+
+ public: // stub data
+
+ TMceSinkType iType;
+
+ TBool iIsEnabled;
+
+ TInt iReferenceCount;
+
+ };
+
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcemediasource.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,146 @@
+/*
+* 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 CMCEMEDIASOURCE_H
+#define CMCEMEDIASOURCE_H
+
+// INCLUDES
+#include <e32base.h>
+
+// DATA TYPES
+typedef TUint TMceSourceType;
+
+// FORWARD DECLARATIONS
+class RReadStream;
+class RWriteStream;
+class CMceComMediaSource;
+class TMceSourceFactory;
+class CMceMediaStream;
+class TMceEvent;
+class TMceMediaId;
+class CMceManager;
+
+// CLASS DECLARATION
+
+/**
+* Base class for the MCE media sources.
+*
+* Media sources represent the origin of data.
+* CMceMediaSource puts it data through CMceMediaStream into
+* CMceMediaSink.
+*
+* CMceMediaSource has a type that defines how it can connected to other
+* sinks and streams.
+*
+* Enable and Disable operations to sinks are considered to be local,
+* so they are not signalled to remote terminal.
+*
+* @lib mceclient.lib
+*/
+class CMceMediaSource: public CBase
+ {
+ public: // Destructor
+
+ IMPORT_C ~CMceMediaSource();
+
+ public: // Functions
+
+ /**
+ * Returns the type of the source.
+ * @return The type of the source.
+ */
+ IMPORT_C TMceSourceType Type() const;
+
+ /**
+ * Enables streaming explicitly.
+ */
+ virtual void EnableL() = 0;
+
+ /**
+ * Disables streaming explicitly.
+ */
+ virtual void DisableL() = 0;
+
+ /**
+ * Returns the state of the source.
+ * @return ETrue if enabled, EFalse if disabled.
+ */
+ IMPORT_C TBool IsEnabled() const;
+
+
+
+ public: //internal
+
+ /**
+ * Initializes
+ * @param aParent the parent
+ */
+ virtual void InitializeL( CMceMediaStream& aParent );
+
+ /**
+ * Initializes
+ * @param aManager the manager. Ownership is NOT transferred
+ */
+ virtual void InitializeL( CMceManager* aManager );
+
+ /**
+ * Sets and gets reference count describing to how many
+ * streams source is associated
+ * @return reference count reference
+ */
+ TInt& ReferenceCount();
+
+
+ protected:
+
+ /**
+ * C++ default constructor.
+ */
+ CMceMediaSource();
+
+ /**
+ * Enables streaming explicitly.
+ */
+ void DoEnableL();
+
+ /**
+ * Disables streaming explicitly.
+ */
+ void DoDisableL();
+
+
+ protected: // NOT owned data
+
+ /**
+ * stream
+ */
+ RPointerArray<CMceMediaStream> iStreams;
+
+
+ public: // stub data
+
+ TBool iIsEnabled;
+
+ TMceSourceType iType;
+
+ TInt iReferenceCount;
+
+ };
+
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcemediastream.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,316 @@
+/*
+* 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 CMCEMEDIASTREAM_H
+#define CMCEMEDIASTREAM_H
+
+// INCLUDES
+#include <e32base.h>
+
+// DATA TYPES
+typedef TUint TMceMediaType;
+
+// FORWARD DECLARATIONS
+class CMceComMediaStream;
+class TMceFactory;
+class TMceMediaStreamFactory;
+class RWriteStream;
+class RReadStream;
+class CDesC8Array;
+class CMceSession;
+class TMceIds;
+class TMceEvent;
+class TMceMediaId;
+class CMceManager;
+class CMceSession;
+class CMceMediaSource;
+class CMceMediaSink;
+class MMceComSerializationContext;
+class MDesC8Array;
+
+// CLASS DECLARATION
+
+/**
+* Base class for MCE media streams.
+*
+* MCE Media stream represents stream of data negotiated between two terminals.
+* Streams may transfer any data.
+*
+* Enabling or disabling of a stream is not a local operation, but it requires
+* always signalling. Thus, these operation require always to be completed by
+* calling CMceSession::UpdateL() function.
+*
+* @lib mceclient.lib
+*/
+class CMceMediaStream : public CBase
+ {
+ public: // Stream states
+
+ enum TState
+ {
+ EUninitialized, // Stream is created
+ EInitialized, // Stream is initialized
+ EBuffering, // Stream is buffering
+ EIdle, // Stream is not receiving RTP
+ EStreaming, // Stream is streaming
+ EDisabled, // Stream is explicitly disabled
+ ENoResources, // Stream has no needed resources to stream
+ ETranscodingRequired, // Stream requires non-realtime transcoding
+ ETranscoding // Stream is transcoding in non-realtime
+ };
+
+ public: // Destructor
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceMediaStream();
+
+ public: // Functions
+
+ /**
+ * Gets the state of the stream.
+ * @return the current state of the stream
+ */
+ IMPORT_C CMceMediaStream::TState State() const;
+
+ /**
+ * Returns the type of the stream.
+ * @return The type of the stream.
+ */
+ IMPORT_C TMceMediaType Type() const;
+
+ /**
+ * Configures media stream by updating SDP media lines.
+ * In order to get complete update, whole session must be
+ * updated causing sending of re-invite.
+ * @param aMediaSDPLines, application specific SDP media lines for
+ * the stream. Ownership is transferred.
+ */
+ IMPORT_C void SetMediaAttributeLinesL( CDesC8Array* aMediaSDPLines );
+
+ /**
+ * Gets attribute lines of the media.
+ * @return array of media attribute lines, owneship is transferred.
+ */
+ IMPORT_C MDesC8Array* MediaAttributeLinesL();
+
+ /**
+ * Sets local media port
+ * @param aLocalMediaPort, local port for the media
+ */
+ IMPORT_C void SetLocalMediaPortL(TUint aLocalMediaPort);
+
+ /**
+ * Gets the local media port.
+ * @return Local port used for media.
+ */
+ IMPORT_C TUint LocalMediaPort() const;
+
+ /**
+ * Gets the session this stream belongs to, if exists. The
+ * ownership is not transfered.
+ * @return Session object
+ */
+ IMPORT_C CMceSession* Session() const;
+
+
+ public: // Local stream control
+
+ /**
+ * Enables streaming explicitly.
+ */
+ virtual void EnableL();
+
+ /**
+ * Disables streaming explicitly.
+ */
+ virtual void DisableL();
+
+ /**
+ * Returns the state of the stream.
+ * @return ETrue if enabled, EFalse if disabled.
+ */
+ IMPORT_C TBool IsEnabled() const;
+
+
+ public: // Source and sink functions
+
+ /**
+ * Adds source to the stream. CMceMediaStream can only
+ * have one source at a time. Ownership of passed source is transferred.
+ * However, the same source can be also passed to other streams resulting
+ * that streams share ownership of the source. Passing NULL source will
+ * remove source from stream.
+ * In some cases the source might contain a codec. The codec is derived
+ * to the stream when such source is added to the stream.
+ * Derived codec will get automatically highest preference.
+ * @param aSource source to be added to the stream; ownership is
+ * transferred
+ */
+ IMPORT_C void SetSourceL( CMceMediaSource* aSource );
+
+ /**
+ * Adds sink to the stream. CMceMediaStream can have
+ * many sinks at a time. Ownership of passed sink is transferred.
+ * However, the same sink can be also passed to other streams resulting
+ * that streams share ownership of the sink.
+ * @param aSink sink to be added to the stream; ownership is transferred
+ */
+ IMPORT_C void AddSinkL( CMceMediaSink* aSink );
+
+ /**
+ * Gets source of the stream. Returns NULL if source is not set.
+ * @return source of the stream; ownership is not transferred
+ */
+ IMPORT_C CMceMediaSource* Source() const;
+
+ /**
+ * Gets array of sinks of the stream.
+ * @return array of sinks
+ */
+ IMPORT_C const RPointerArray<CMceMediaSink>& Sinks() const;
+
+ /**
+ * Removes sink from the stream.
+ * @post aSink cannot be used anymore and contents of
+ * previously returned sink array (CMceMediaStream::Sinks())
+ * are not anymore valid
+ * @param aSink sink to be removed from the stream
+ */
+ IMPORT_C void RemoveSinkL( CMceMediaSink& aSink );
+
+ public: // Binding opposite way stream
+
+ /**
+ * Binds opposite direction stream to this stream.
+ * @param aStream another stream to be bind to the stream;
+ * ownership is transferred
+ */
+ IMPORT_C void BindL( CMceMediaStream* aStream );
+
+ /**
+ * Gets opposite direction stream of this stream.
+ * @return opposite direction stream
+ */
+ IMPORT_C CMceMediaStream& BoundStreamL() const;
+
+ /**
+ * Checks if opposite direction stream is set.
+ * @return ETrue if opposite direction stream is set;
+ * otherwise EFalse
+ */
+ IMPORT_C TBool BoundStream() const;
+
+
+ public: //internal
+
+ /**
+ * Checks if this is binder (biding owner)
+ * @return ETrue if this is binder (biding owner)
+ */
+ TBool Binder() const;
+
+ /**
+ * Initializes
+ * @param aParent the parent
+ */
+ virtual void InitializeL( CMceSession& aParent );
+
+ /**
+ * Initializes
+ * @param aManager the manager. Ownership is NOT transferred
+ */
+ virtual void InitializeL( CMceManager* aManager );
+
+ protected:
+
+ /**
+ * C++ default constructor.
+ */
+ CMceMediaStream();
+
+ private:
+
+ /**
+ * Handles event
+ * @param aEvent the event
+ * @return status, if event was consumed or not or object needs update
+ */
+ TInt HandleEvent( TMceEvent& aEvent );
+
+ /**
+ * one-way bind
+ * @param aStream another stream to be bind to the stream.
+ */
+ void DoBindL( CMceMediaStream* aStream );
+
+ /**
+ * Deletes sink
+ * @param aIndex index of sink in the array
+ */
+ void DeleteSink( TInt aIndex );
+
+ /**
+ * Deletes source
+ */
+ void DeleteSource();
+
+
+ protected: // NOT owned data
+
+ /**
+ * session
+ */
+ CMceSession* iSession;
+
+ protected: // owned data
+
+
+ /**
+ * linked stream. Owned if iLinkOwner is ETrue
+ */
+ CMceMediaStream* iLinkedStream;
+
+ public: // stub data
+
+ /**
+ * source
+ */
+ CMceMediaSource* iSource;
+
+ /**
+ * sinks
+ */
+ RPointerArray<CMceMediaSink> iSinks;
+
+ TState iState;
+
+ TMceMediaType iType;
+
+ TBool iLinkOwner;
+
+ TBool iIsEnabled;
+
+ TUint iLocalMediaPort;
+
+ CDesC8Array* iMediaSDPLines;
+ };
+
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mceoutsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,161 @@
+/*
+* 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 CMCEOUTSESSION_H
+#define CMCEOUTSESSION_H
+
+// INCLUDES
+#include <e32std.h>
+#include <mcesession.h>
+
+// FORWARD DECLARATIONS
+class CSIPProfile;
+class CMceMediaStream;
+class CMceManager;
+class CMceEvent;
+class CMceRefer;
+
+// CLASS DECLARATION
+
+/**
+* Class for mobile originated MCE sessions.
+*
+* CMceOutSession represents outgoing invitation to remote terminal to join in a session.
+*
+* The characteristics of the session are defined by user of this class by attaching
+* media streams into the session. Theses charactereistics are turned by MCE server into SDP
+* and attached into sent invitation request.
+*
+* After the session has been succesfylly established, it can be later updated and
+* must be finally terminated.
+*
+* If for any reason instance of this class is deleted while in established state,
+* session is automatically terminated by MCE server.
+*
+* @lib mceclient.lib
+*/
+class CMceOutSession : public CMceSession
+ {
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor. Should be used when session
+ * is established into new logical connection to remote terminal.
+ * @param aManager, reference to session manager.
+ * @param aProfile, sip profile used for the session.
+ * @param aRecipient, recipient of the session invitation.
+ * @param aOriginator, originator of the session invitation.
+ */
+ IMPORT_C static CMceOutSession* NewL(
+ CMceManager& aManager,
+ CSIPProfile& aProfile,
+ const TDesC8& aRecipient,
+ HBufC8* aOriginator = 0);
+
+ /**
+ * Two-phased constructor. Should be used when session is associated
+ * to existing event. This guarantees that session is established with
+ * same remote terminal with the event.
+ * @param aEvent, reference to existing event that is associated
+ * with this session.
+ */
+ IMPORT_C static CMceOutSession* NewL(CMceEvent& aEvent);
+
+ /**
+ * Two-phased constructor. Should be used when session is associated
+ * to existing refer. This guarantees that session is established with
+ * same remote terminal with the refer.
+ * @param aRefer, reference to existing refer that is associated
+ * with this session.
+ */
+ IMPORT_C static CMceOutSession* NewL(CMceRefer& aRefer);
+
+ /// Note: This function exists only in the stub
+ IMPORT_C static CMceOutSession* NewL();
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceOutSession();
+
+ public: // from CMceSession
+
+ /**
+ * Adds media stream into session.
+ * @pre State() == CMceSession::EIdle ||
+ * State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EEstablished
+ * @pre aMediaStream != 0
+ * @param aMediaStream, media stream to be added.
+ * ownership is transferred.
+ */
+ IMPORT_C void AddStreamL( CMceMediaStream* aMediaStream );
+
+ public: // Functions
+
+ /**
+ * Establishes a SIP session with the recipient.
+ * The streams in the stream array are offered in the
+ * SDP codec negotiation.
+ * @pre State() == CMceSession::EIdle
+ * @post State() == CMceSession::EOffering
+ * @param aTimeout, the session timer value in seconds
+ * @param aHeaders, SIP headers to be added. Ownership is
+ * transferred.
+ * @param aContentType, content type of the body.
+ * Ownership is transferred.
+ * @param aContent, content to be added in body. Ownership is
+ * transferred.
+ * @param aContentHeaders, content headers to be added. Ownership is
+ * transferred.
+ */
+ IMPORT_C void EstablishL(
+ TUint32 aTimeout = 0,
+ CDesC8Array* aHeaders = 0,
+ HBufC8* aContentType = 0,
+ HBufC8* aContent = 0,
+ CDesC8Array* aContentHeaders = 0 );
+
+ /**
+ * Cancels a previously initialized MO session.
+ * @pre State() == CMceSession::EOffering
+ */
+ IMPORT_C void CancelL();
+
+ private://methods
+
+ /**
+ * C++ default constructor.
+ * @param aManager, reference to session manager.
+ * @param aProfileId, id of the sip profile used for the session.
+ */
+ CMceOutSession( CMceManager* aManager, TUint32 aProfileId );
+
+ /**
+ * second-phase constructor
+ * @param aRecipient, the recipient
+ * @param aOriginator, the originator
+ */
+ void ConstructL( const TDesC8& aRecipient, HBufC8* aOriginator );
+
+
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcertpobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,98 @@
+/*
+* 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 MMCERTPOBSERVER_H
+#define MMCERTPOBSERVER_H
+
+// INCLUDES
+#include <e32std.h>
+
+// FORWARD DECLARATIONS
+class CMceMediaStream;
+class CMceRtpSource;
+
+// CLASS DECLARATION
+
+/**
+* An interface to be implemented by users of MCE if they wish to receive
+* events from CMceRtpSource.
+*
+* This observer is set using CMceManager::SetRtpObserver function.
+*
+* @lib mceclient.lib
+*/
+class MMceRtpObserver
+ {
+ public:
+ /**
+ * Callback function to indicate that an RTCP sender report
+ * has been received.
+ * @param aSession the session that has changed
+ * @param aStream the stream that has changed
+ */
+ virtual void SRReceived(
+ CMceSession& aSession,
+ CMceMediaStream& aStream) = 0;
+
+ /**
+ * Callback function to indicate that an RTCP receiver report
+ * has been received.
+ * @param aSession the session that has changed
+ * @param aStream the stream that has changed
+ */
+ virtual void RRReceived(
+ CMceSession& aSession,
+ CMceMediaStream& aStream) = 0;
+
+ /**
+ * Callback function to indicate inactivity timer timeout
+ * has occurred. Timer is disabled after the timeout.
+ * @param aStream, the session that has changed.
+ * @param aSource, the source that the timeout occurred.
+ */
+ virtual void InactivityTimeout(
+ CMceMediaStream& aStream,
+ CMceRtpSource& aSource) = 0;
+
+ /**
+ * Callback function to indicate that spesified CMceRtpSource has
+ * received RTP from a new synchronization source (SSRC).
+ * @param aStream the stream that new SSRC was added to
+ * @param aSource the source that new SSRC was added to
+ * @param aSsrc added SSRC identifier
+ */
+ virtual void SsrcAdded(
+ CMceMediaStream& aStream,
+ CMceRtpSource& aSource,
+ TUint aSsrc ) = 0;
+
+ /**
+ * Callback function to indicate that spesified CMceRtpSource has
+ * received RTP BYE message from a spesified synchronization
+ * source (SSRC).
+ * @param aStream the stream that SSRC was removed from
+ * @param aSource the source that SSRC was removed from
+ * @param aSsrc removed SSRC identifier
+ */
+ virtual void SsrcRemoved(
+ CMceMediaStream& aStream,
+ CMceRtpSource& aSource,
+ TUint aSsrc ) = 0;
+ };
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcertpsink.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,154 @@
+/*
+* 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 CMCERTPSINK_H
+#define CMCERTPSINK_H
+
+// INCLUDES
+#include "mcemediasink.h"
+
+// CONSTANTS
+const TMceSinkType KMceRTPSink = 1;
+
+// CLASS DECLARATION
+
+/**
+* Class representing outgoing RTP stream in MCE.
+*
+* CMceRtpSink can be used to send media data to network.
+* It can be configured not to use RTCP during play in order
+* to save bandwith.
+*
+* CMceRtpSink allows also explicitly sending of RTP RR and SR
+* messages.
+*
+* Enable and Disable operations to it are considered
+* to be local, so they are not signalled to remote terminal.
+*
+* @lib mceclient.lib
+*/
+class CMceRtpSink: public CMceMediaSink
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CMceRtpSink* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CMceRtpSink* NewLC();
+
+ /**
+ * Two-phased constructor.
+ * @param aSuppressRTCP, ETrue if RTCP not sent during play,
+ * EFalse otherwise
+ * @param aIdentity, identity of user placed in RTCP,
+ * ownership not transferred.
+ */
+ IMPORT_C static CMceRtpSink* NewL( TBool aSuppressRTCP,
+ HBufC8* aIdentity = 0 );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceRtpSink();
+
+ public: // From base class
+
+ /**
+ * Locally resumes sending of RTP packets.
+ */
+ IMPORT_C void EnableL();
+
+ /**
+ * Locally pauses sending of RTP packets.
+ */
+ IMPORT_C void DisableL();
+
+ public: // Functions
+
+ /**
+ * Sends RTCP sender report to recipient.
+ */
+ IMPORT_C void SendSRL();
+
+ /**
+ * Returns the sequence id of the last packet
+ * sent to network. The value is updated only
+ * when sink is disabled.
+ * @pre IsEnabled() == EFalse
+ * @return sequence number of last sent packet.
+ */
+ IMPORT_C TUint32 LastPacket() const;
+
+ /**
+ * Returns the RTP stream source identifier
+ * used in network (SSRC).
+ * @pre CMceSession::State() == CMceSession::EEstablished
+ * @return source identifier used in network (SSRC).
+ */
+ IMPORT_C TUint32 Ssrc() const;
+
+ /**
+ * Updates settings of rtp sink.
+ * @pre CMceSession::State() == CMceSession::EIncoming
+ * @param aSuppressRTCP, ETrue if RTCP not sent during play,
+ * EFalse otherwise
+ * @param aIdentity, identity of user placed in RTCP,
+ * ownership not transferred.
+ */
+ IMPORT_C void UpdateL( TBool aSuppressRTCP, HBufC8* aIdentity = 0 );
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CMceRtpSink();
+
+ /**
+ * second-phase constructor
+ * @param aSuppressRTCP, ETrue if RTCP not sent during play,
+ * EFalse otherwise
+ */
+ void ConstructL( TBool aSuppressRTCP );
+
+ public: // stub data
+
+ /**
+ * suppress RTCP
+ */
+ TBool iSuppressRTCP;
+
+ /**
+ * SSRC
+ */
+ TUint32 iSSRC;
+
+ /**
+ * last packet
+ */
+ TUint32 iLastPacket;
+
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcertpsource.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,217 @@
+/*
+* 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 CMCERTPSOURCE_H
+#define CMCERTPSOURCE_H
+
+// INCLUDES
+#include <e32std.h>
+#include <mcemediasource.h>
+
+// CONSTANTS
+const TMceSourceType KMceRTPSource = 1;
+const TInt KMceJitterBufferLength = 10;
+const TInt KMceJitterBufferTreshold = 5;
+
+//FORWARD DECLARATIONS
+class TMceIds;
+
+// CLASS DECLARATION
+
+/**
+* Class representing incoming RTP stream in MCE.
+*
+* CMceRtpSource can be used to receive media data from network.
+* It can be configured with stream specific values to avoid
+* jitter generated by network. It may also be configured to
+* recognize separate media bursts instead of just receiving
+* continuous flow of data.
+*
+* Events from this class can be received through class MMceRtpObserver.
+*
+* Enable and Disable operations to it are considered to be local,
+* so they are not signalled to remote terminal.
+*
+* One CMceRTPSource may contain several RTP streams which are identified with
+* synchronization source (SSRC) values. Disabling or enabling CMceRtpSource
+* will affect to all SSRCs but streaming from specific SSRC can be also
+* controlled with EnableSSRCL and Disable SSRCL methods. These are also
+* local operations, thus not signalled to remote terminal.
+*
+* @lib mceclient.lib
+*/
+class CMceRtpSource: public CMceMediaSource
+ {
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aBufferLength, length in packets of jitter buffer
+ * @param aBufferTreshold, treshold in packets of jitter buffer
+ * @param aInactivityTimer, timer (ms) to detect network inactivity.
+ * If 0, no activity detection, otherwise source is set to support
+ * talk bursts and report inactivity.
+ * @param aIdentity, identity of user placed in RTCP, ownership not transferred.
+ */
+ IMPORT_C static CMceRtpSource* NewL(
+ TUint aBufferLength = KMceJitterBufferLength,
+ TUint aBufferTreshold = KMceJitterBufferTreshold,
+ TUint32 aInactivityTimer = 0,
+ HBufC8* aIdentity = 0 );
+
+ /**
+ * Two-phased constructor.
+ * @param aBufferLength, length in packets of jitter buffer
+ * @param aBufferTreshold, treshold in packets of jitter buffer
+ * @param aInactivityTimer, timer (ms) to detect network inactivity.
+ * If 0, no activity detection, otherwise source is set to support
+ * talk bursts and report inactivity.
+ * @param aIdentity, identity of user placed in RTCP, ownership not transferred.
+ */
+ IMPORT_C static CMceRtpSource* NewLC(
+ TUint aBufferLength = KMceJitterBufferLength,
+ TUint aBufferTreshold = KMceJitterBufferTreshold,
+ TUint32 aInactivityTimer = 0,
+ HBufC8* aIdentity = 0 );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceRtpSource();
+
+ public: // From base class
+
+ /**
+ * Enables streaming explicitly.
+ */
+ IMPORT_C void EnableL();
+
+ /**
+ * Disables streaming explicitly.
+ */
+ IMPORT_C void DisableL();
+
+ public: // Functions
+
+ /**
+ * Enables RTP inactivity timer.
+ * @param aInactivityTimer, timer value (ms) that after inactivity
+ * of media from network is reported to client.
+ */
+ IMPORT_C void EnableInactivityTimerL( TUint32 aInactivityTimer );
+
+ /**
+ * Disables RTP inactivity timer.
+ */
+ IMPORT_C void DisableInactivityTimerL();
+
+ /**
+ * Updates settings for incoming session.
+ * @pre CMceSession::State() == CMceSession::EIncoming
+ * @param aBufferLength, length in packets of jitter buffer
+ * @param aBufferTreshold, treshold in packets of jitter buffer
+ * @param aInactivityTimer, timer (ms) to detect network inactivity.
+ * If 0, no activity detection, otherwise source is set to support
+ * talk bursts and report inactivity.
+ * @param aIdentity, identity of user placed in RTCP, ownership not transferred.
+ */
+ IMPORT_C void UpdateL ( TUint aBufferLength = KMceJitterBufferLength,
+ TUint aBufferTreshold = KMceJitterBufferTreshold,
+ TUint32 aInactivityTimer = 0,
+ HBufC8* aIdentity = 0 );
+
+ /**
+ * Sends RTCP receiver report to recipient.
+ */
+ IMPORT_C void SendRRL();
+
+ /**
+ * Returns the last RTP stream source identifier
+ * used in network (SSRC).
+ * @pre CMceSession::State() == CMceSession::EEstablished
+ * @return last source identifier used in network (SSRC).
+ */
+ IMPORT_C TUint32 Ssrc() const;
+
+ /**
+ * Gets an array of RTP synchronization source (SSRC) identifiers.
+ * Array includes all SSRC values this RtpSource has received RTP from.
+ * Changes in array are notified using MMceRtpObserver interface.
+ * @return array of synchronization source identifiers
+ */
+ IMPORT_C const RArray<TUint>& Ssrcs() const;
+
+ /**
+ * Enables streaming from specified synchronization source (SSRC).
+ * @param aSsrc synchronization source to be enabled
+ */
+ IMPORT_C void EnableSsrcL( TUint aSsrc );
+
+ /**
+ * Disables streaming from specified synchronization source (SSRC).
+ * @param aSsrc synchronization source to be disabled
+ */
+ IMPORT_C void DisableSsrcL( TUint aSsrc );
+
+ /**
+ * Determines whether specific SSRC is enabled or not.
+ * @param aSsrc the SSRC identifier
+ * @return ETrue if specified SSRC is enabled; otherwise EFalse
+ */
+ IMPORT_C TBool IsSsrcEnabledL( TUint aSsrc );
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CMceRtpSource();
+
+ /**
+ * second-phase constructor
+ * @param aBufferLength, length in packets of jitter buffer
+ * @param aBufferTreshold, treshold in packets of jitter buffer
+ * @param aInactivityTimer, timer (ms) to detect network inactivity.
+ * If 0, no activity detection, otherwise source is set to support
+ * talk burts and report inactivity.
+ * @param aMediaBurstIndicator, indicator sound to be played before
+ * every new burst of media, if source in media burst mode.
+ */
+ void ConstructL( TUint aBufferLength,
+ TUint aBufferTreshold,
+ TUint32 aInactivityTimer,
+ HBufC8* iMediaBurstIndicator );
+
+
+ public: // Stub data
+
+ RArray<TUint> iSsrcs;
+
+ TUint iBufferLength;
+ TUint iBufferTreshold;
+ TUint32 iInactivityTimer;
+ TUint32 iSilenceTimer;
+ TUint iToneFrequency;
+ TUint iToneLength;
+ HBufC8* iMediaBurstIndicator;
+
+ };
+
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,370 @@
+/*
+* 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 CMCESESSION_H
+#define CMCESESSION_H
+
+// INCLUDES
+#include <mcedefs.h>
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CDesC8Array;
+class TMceIds;
+class CMceMediaStream;
+class CMceManager;
+class TMceFactory;
+class RReadStream;
+class RWriteStream;
+class CMceItcSender;
+class CMceSessionReceiver;
+class MMceFcMsgObserver;
+class CMceComSession;
+class CMceMsgBase;
+class TMceEvent;
+class CMceInSession;
+class MDesC8Array;
+class CMceStreamBundle;
+
+
+// CLASS DECLARATION
+
+/**
+* Base class for MCE sessions, inherited by both CMceInSession and CMceOutSession.
+*
+* CMceSession represents peer-to-peer connection made with remote terminal.
+* This connection is also known as dialog and it is set up using SIP INVITE
+* method.
+*
+* The characteristics of the session are defined by user of this class by attaching
+* media streams into the session.
+*
+* After the session has been succesfylly established, it can be later updated and
+* must be finally terminated.
+*
+* If for any reason instance of this class is deleted while in established state,
+* session is automatically terminated by MCE server.
+*
+* @lib mceclient.lib
+*/
+class CMceSession : public CBase
+ {
+ public: // Session states
+
+ enum TState
+ {
+ EIdle, // Idle
+ EOffering, // Outgoing session, or session update establishment in progress,
+ EIncoming, // Session received incoming call
+ EReserving, // UpdateL called to incoming session during session establishment
+ EAnswering, // Answering an incoming call
+ EProceeding, // Session media negotiations proceeding
+ EEstablished, // Session established
+ ECancelling, // Cancelling outgoing session establishment
+ ETerminating, // Terminating session
+ ETerminated, // Session terminated
+ };
+
+ public: // Session termination reasons
+
+ enum TReason
+ {
+ EDeclined,
+ EBusy,
+ ECancelled,
+ EDisconnected
+ };
+
+ public:
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMceSession();
+
+ public: // Functions
+
+ /**
+ * Returns the state of the session.
+ * @return The current state of the session
+ */
+ IMPORT_C TState State() const;
+
+ /**
+ * Returns the state of network connection of the session.
+ * @return ETrue if connection active, EFalse if connection inactive.
+ */
+ IMPORT_C TBool ConnectionActive() const;
+
+
+ /**
+ * Removes media stream from session.
+ * @pre State() == CMceSession::EIdle ||
+ * State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EEstablished
+ * @post aMediaStream cannot be used anymore and contents of
+ * previously returned stream array (CMceSession::Streams())
+ * are not anymore valid
+ * @param aMediaStream media stream to be removed
+ */
+ IMPORT_C void RemoveStreamL( CMceMediaStream& aMediaStream );
+
+ /**
+ * Adds media stream into session.
+ * @pre State() == CMceSession::EIdle ||
+ * State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EEstablished
+ * @pre aMediaStream != 0
+ * @param aMediaStream, media stream to be added.
+ * ownership is transferred.
+ */
+ virtual void AddStreamL( CMceMediaStream* aMediaStream );
+
+ /**
+ * Updates offered session parameters during session
+ * establishement phase for first answer.
+ * Updates established session using re-invite.
+ * In state EIncoming the timeout value must be smaller or equal to
+ * offered value obtained by SessionTimer().
+ * @pre State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EEstablished
+ * @post State() == CMceSession::EReserving for incoming session ||
+ * State() == CMceSession::EOffering for established session
+ * @param aTimeout, the session timer value in seconds
+ * @param aHeaders, SIP headers to be added. Ownership is
+ * transferred.
+ * @param aContentType, content type of the body.
+ * Ownership is transferred.
+ * @param aContent, content to be added in body. Ownership is
+ * transferred.
+ * @param aContentHeaders, content headers to be added. Ownership is
+ * transferred.
+ */
+ IMPORT_C void UpdateL(
+ TUint32 aTimeout = 0,
+ CDesC8Array* aHeaders = 0,
+ HBufC8* aContentType = 0,
+ HBufC8* aContent = 0,
+ CDesC8Array* aContentHeaders = 0 );
+
+ /**
+ * Terminates established session.
+ * @pre State() == CMceSession::EEstablished
+ * @post State() == CMceSession::ETerminating
+ * @param aHeaders, SIP headers to be added. Ownership is
+ * transferred.
+ * @param aContentType, content type of the body.
+ * Ownership is transferred.
+ * @param aContent, content to be added in body. Ownership is
+ * transferred.
+ */
+ IMPORT_C void TerminateL( CDesC8Array* aHeaders = 0,
+ HBufC8* aContentType = 0,
+ HBufC8* aContent = 0 );
+
+ /**
+ * Returns the streams belonging to the session.
+ * @return streams of the session.
+ */
+ IMPORT_C const RPointerArray<CMceMediaStream>& Streams() const;
+
+ /**
+ * Returns the recipient of the session.
+ * @pre State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EEstablished
+ * @return The recipients address.
+ */
+ IMPORT_C const TDesC8& Recipient() const;
+
+ /**
+ * Returns the originator of the session.
+ * @pre State() == CMceSession::EIdle ||
+ * State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EEstablished
+ * @return the originators address.
+ */
+ IMPORT_C const TDesC8& Originator() const;
+
+ /**
+ * Configures session by updating SDP session lines.
+ * In order to get complete update, whole session must be
+ * updated causing sending of re-invite.
+ * @pre State() == CMceSession::EIdle ||
+ * State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EEstablished
+ * @pre aSessionSDPLines != 0
+ * @param aSessionSDPLines, application specific SDP lines for session.
+ * Ownership is transferred.
+ */
+ IMPORT_C void SetSessionSDPLinesL( CDesC8Array* aSessionSDPLines );
+
+ /**
+ * Gets SDP lines of the session.
+ * @return array of session SDP lines, owneship is transferred.
+ */
+ IMPORT_C MDesC8Array* SessionSDPLinesL();
+
+ /**
+ * Returns the session timer value of the session.
+ * @return the session timer value.
+ */
+ IMPORT_C TUint32 SessionTimer() const;
+
+ /**
+ * Adds grouped media streams to the session. Changes SDP
+ * of the session. In order to get complete update, whole
+ * session must be updated causing sending of re-invite.
+ * @pre State() == CMceSession::EIdle ||
+ * State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EEstablished
+ * @pre aBundle != 0
+ * @param aBundle group of media streams;
+ * ownership of the bundle is transferred
+ */
+ IMPORT_C void AddBundleL( CMceStreamBundle* aBundle );
+
+ /**
+ * Removes grouped media stream from session. Changes SDP
+ * of the session. In order to get complete update, whole
+ * session must be updated causing sending of re-invite.
+ * @pre State() == CMceSession::EIdle ||
+ * State() == CMceSession::EIncoming ||
+ * State() == CMceSession::EEstablished
+ * @post aBundle cannot be used anymore and contents of
+ * previously returned bundle array (CMceSession::Bundles())
+ * are not anymore valid
+ * @param aBundle bundle to be removed
+ */
+ IMPORT_C void RemoveBundleL( CMceStreamBundle& aBundle );
+
+ /**
+ * Gets the grouped media streams of the session.
+ * @return bundles of the session
+ */
+ IMPORT_C const RPointerArray< CMceStreamBundle >& Bundles() const;
+
+ /**
+ * Gets session modifier of type TUint.
+ * @param aModifier is a modifier to be retrieved
+ * @param aValue on return will contain modifier value
+ * @leave KErrNotFound if modifier is not found
+ */
+ IMPORT_C void GetModifierL( TMceSessionModifier aModifier,
+ TUint& aValue ) const;
+
+ /**
+ * Sets session modifier of type TUint.
+ * @param aModifier is a modifier to be set
+ * @param aValue is a new value of a modifier
+ * @leave KErrNotFound if modifier is not found
+ */
+ IMPORT_C void SetModifierL( TMceSessionModifier aModifier,
+ TUint aValue );
+
+ /**
+ * Returns the identifier of profile used by the sesison.
+ * @return TUint32 Identifier of the used profile. 0,
+ * if session is setup without profile.
+ */
+ IMPORT_C TUint32 Profile() const;
+
+
+ public:
+
+ CMceManager& Manager() const;
+
+ // Restarts the simulator
+ void RestartSimulator();
+
+ protected:
+
+ /**
+ * C++ default constructor.
+ * @param aManager, reference to session manager.
+ * @param aProfileId, id of the sip profile used for the session.
+ */
+ CMceSession( CMceManager* aManager, TUint32 aProfileId );
+
+ /**
+ * second-phase constructor
+ */
+ void ConstructL();
+
+ /**
+ * Initializes
+ */
+ void InitializeL();
+
+
+ protected: // Not owned data
+
+ /**
+ * profile id
+ */
+ TUint32 iProfileId;
+
+ private: // Owned data
+
+ /**
+ * media streams
+ */
+ RPointerArray<CMceMediaStream> iMediaStreams;
+
+ /**
+ * bundles
+ */
+ RPointerArray<CMceStreamBundle> iBundles;
+
+ //for testing
+
+ //friend class CMceManager;
+
+ public: // stub data
+
+ CMceManager* iManager;
+
+ CMceSession::TState iState;
+
+ TBool iIsConnectionActive;
+
+ HBufC8* iOriginator;
+
+ HBufC8* iRecipient;
+
+ TUint32 iTimeout;
+
+ CDesC8Array* iSessionSDPLines;
+
+ CDesC8Array* iHeaders;
+
+ TBool iForceInternetSignaling;
+
+ TUint i100RelUsage;
+
+ // If this code is != KErrNone, next operation that can fail will fail
+ // (leave or return a value) with this code. Variable is reseted before
+ // failing.
+ // Obs! Check that wanted failing is really implemented in this stub
+ TInt iFailWithCode;
+
+ TBuf8<200> iReasonPhrase;
+
+ TInt iReasonCode;
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcesessionobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* 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 MMCESESSIONOBSERVER_H
+#define MMCESESSIONOBSERVER_H
+
+// INCLUDES
+#include <e32std.h>
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class TMceTransactionDataContainer;
+
+// CLASS DECLARATION
+
+/**
+* An interface to be implemented by users of MCE if they wish to use
+* sessions.
+*
+* This observer is set using CMceManager::SetSessionObserver function.
+*
+* @lib mceclient.lib
+*/
+class MMceSessionObserver
+ {
+ public: // Session control callbacks
+
+ /**
+ * The state of the session has changed.
+ * @param aSession, the session that has changed.
+ * @param aContainer, if present, holds details of
+ * transaction causing state change.
+ */
+ virtual void SessionStateChanged(
+ CMceSession& aSession,
+ TMceTransactionDataContainer* aContainer ) = 0;
+
+ /**
+ * The state of the connection used by the session has changed.
+ * @param aSession, the session that has changed.
+ * @param aActive, ETrue if connection active, EFalse if connection inactive.
+ */
+ virtual void SessionConnectionStateChanged(
+ CMceSession& aSession,
+ TBool aActive ) = 0;
+
+ /**
+ * An error has occurred concerning a specific session.
+ * Note, that each error causes the session state to be ETerminated.
+ * @param aSession, The session raising the error.
+ * @param aError, Error code
+ */
+ virtual void Failed( CMceSession& aSession, TInt aError ) = 0;
+
+ /**
+ * An session update has been failed concerning a specific session.
+ * Note, that each error causes the session state to be ETerminated.
+ * @param aSession, The session raising the error.
+ * @param aContainer, if present, holds details of
+ * transaction causing update.
+ */
+ virtual void UpdateFailed(
+ CMceSession& aSession,
+ TMceTransactionDataContainer* aContainer ) = 0;
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcespeakersink.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,130 @@
+/*
+* 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 CMCESPEAKERSINK_H
+#define CMCESPEAKERSINK_H
+
+// INCLUDES
+#include <e32std.h>
+#include <mcemediasink.h>
+
+// DATA TYPES
+const TMceSinkType KMceSpeakerSink = 2;
+
+// CLASS DECLARATION
+
+const TInt KMceAudioRoutePrivate = 3;
+const TInt KMceAudioRoutePublic = 4;
+
+/**
+* Class representing speaker in MCE.
+*
+* CMceSpeakerSink can be used to play out audio.
+*
+* Enable (un-mute) and Disable (mute) operations to it are considered
+* to be local, so they are not signalled to remote terminal.
+*
+* @lib mceclient.lib
+*/
+class CMceSpeakerSink: public CMceMediaSink
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CMceSpeakerSink* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CMceSpeakerSink* NewLC();
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceSpeakerSink();
+
+ public: // Functions
+
+ /**
+ * Enables streaming explicitly.
+ */
+ IMPORT_C void EnableL();
+
+ /**
+ * Disables streaming explicitly.
+ */
+ IMPORT_C void DisableL();
+
+ /**
+ * Sets volume
+ * @param aVolume,
+ */
+ IMPORT_C void SetVolumeL( TInt aVolume );
+
+ /**
+ * Gets current volume
+ * @return value of current volume,
+ */
+ IMPORT_C TInt VolumeL() const;
+
+ /**
+ * Gets maximum volume
+ * @return value of mamimum volume,
+ */
+ IMPORT_C TInt MaxVolumeL() const;
+
+ /**
+ * Sets audio routing
+ * @param aRoute Required audio route, like KMceAudioRoutePublic.
+ */
+ IMPORT_C void SetRoutingL( TInt aRoute );
+
+ /**
+ * Gets current audio routing.
+ * @return TInt Current audio routing.
+ */
+ IMPORT_C TInt RoutingL() const;
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CMceSpeakerSink();
+
+ /**
+ * second-phase constructor
+ */
+ void ConstructL();
+
+
+
+
+ public: // stub data
+
+ TInt iVolume;
+
+ TInt iMaxVolume;
+
+ TInt iAudioRouting;
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcestreambundle.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,150 @@
+/*
+* Copyright (c) 2006 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 MCESTREAMBUNDLE_H
+#define MCESTREAMBUNDLE_H
+
+// INCLUDES
+#include <e32base.h>
+#include <mcedefs.h>
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+class CMceMediaStream;
+class CMceSession;
+class CMceMediaSink;
+class MMceEndPointProxy;
+
+
+/**
+* Class for handling grouping of Mce streams (i.e. grouping of media lines).
+*
+* Can be used for example to synchronize audio and video streams.
+*
+* If streams are added to the bundle or removed from it after the bundle
+* has been added to the session, the session has to be updated with
+* CMceSEssion::UpdateL() function in order to complete the changes.
+*
+* @lib mceclient.lib
+*/
+class CMceStreamBundle: public CBase
+ {
+ public: // Bundle types
+
+ enum TMceStreamBundleType
+ {
+ ELS,
+ EFID
+ };
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CMceStreamBundle* NewL( TMceStreamBundleType aType );
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CMceStreamBundle* NewLC( TMceStreamBundleType aType );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceStreamBundle();
+
+ public:
+
+ /**
+ * Type of the bundle
+ * @param aParent the parent
+ */
+ IMPORT_C TMceStreamBundleType Type() const;
+
+ /**
+ * Adds stream to the bundle.
+ * @param aStream, stream to be added
+ */
+ IMPORT_C void AddStreamL( CMceMediaStream& aStream );
+
+ /**
+ * Removes stream from the bundle.
+ * @param aStream, stream to be removed
+ */
+ IMPORT_C void RemoveStreamL( CMceMediaStream& aStream );
+
+ /**
+ * Returns the streams belonging to the bundle.
+ * @return streams of the bundle.
+ */
+ IMPORT_C const RPointerArray< CMceMediaStream >& Streams();
+
+ public:
+
+ /**
+ * Initializes
+ * @param aParent the parent
+ */
+ void InitializeL( CMceSession& aParent );
+
+
+ private: //methods
+
+ /**
+ * C++ default constructor.
+ */
+ CMceStreamBundle();
+
+ /**
+ * second-phase constructor
+ */
+ void ConstructL( TMceStreamBundleType aType );
+
+ void AddedSinkL( CMceMediaStream& aStream,
+ CMceMediaSink*& aCurrentSink,
+ MMceEndPointProxy*& aProxy );
+
+
+ protected: // NOT owned data
+
+ /**
+ * session
+ */
+ CMceSession* iSession;
+
+ public: // Stub data
+
+ /**
+ * Bundled streams, streams are not owned
+ */
+ RPointerArray< CMceMediaStream > iStreams;
+
+ RPointerArray< CMceMediaStream > iTempStreams;
+
+ /**
+ * type
+ */
+ CMceStreamBundle::TMceStreamBundleType iBundleType;
+
+
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcestreamobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* 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 MMCESTREAMOBSERVER_H
+#define MMCESTREAMOBSERVER_H
+
+// INCLUDES
+#include <e32std.h>
+
+// FORWARD DECLARATIONS
+class CMceMediaStream;
+class CMceMediaSink;
+class CMceMediaSource;
+
+// CLASS DECLARATION
+
+/**
+* An interface to be implemented by users of MCE if they wish to receive
+* media state events.
+*
+* This observer is set using CMceManager::SetMediaObserver function.
+*
+* @lib mceclient.lib
+*/
+class MMceStreamObserver
+ {
+ public:
+
+ /**
+ * The state of the stream has changed.
+ * @param aStream, the stream that has changed.
+ */
+ virtual void StreamStateChanged(
+ CMceMediaStream& aStream) = 0;
+
+ /**
+ * The state of the sink has changed.
+ * @param aStream, the stream that uses the sink.
+ * @param aSink, the sink that has changed.
+ */
+ virtual void StreamStateChanged(
+ CMceMediaStream& aStream,
+ CMceMediaSink& aSink) = 0;
+
+ /**
+ * The state of the source has changed.
+ * @param aStream, the stream that uses the source.
+ * @param aSource, the source that has changed.
+ */
+ virtual void StreamStateChanged(
+ CMceMediaStream& aStream,
+ CMceMediaSource& aSource) = 0;
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcetransactiondatacontainer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,120 @@
+/*
+* 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 TMceTRANSACTIONDATACONTAINER_H
+#define TMceTRANSACTIONDATACONTAINER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <badesca.h>
+//#include <mcedefs.h>
+
+// CLASS DECLARATION
+
+/**
+* Container class to hold detailed data of a transaction.
+*
+* It is assumed, that user has only one instance of this class.
+* The same instance is passed between MCE and user, but the data
+* inside of this container is just updated for each event.
+*
+* The data inside the container is valid only during the execution
+* of the callback function. After this the remaining data in container
+* is deleted.
+*
+* @lib mceclient.lib
+*/
+class TMceTransactionDataContainer
+ {
+ public:
+
+ /**
+ * Default constructor
+ */
+ IMPORT_C TMceTransactionDataContainer();
+
+ /**
+ * Returns status code
+ * @returns status code of transaction, if any.
+ */
+ IMPORT_C TInt GetStatusCode();
+
+ /**
+ * Returns reason phrase, ownership is transferred.
+ * @returns reason phrase of transaction, if any.
+ */
+ IMPORT_C HBufC8* GetReasonPhrase();
+
+ /**
+ * Returns headers, ownership is transferred.
+ * @returns headers of transaction, if any.
+ */
+ IMPORT_C CDesC8Array* GetHeaders();
+
+ /**
+ * Returns content type, ownership is transferred.
+ * @returns content type of transaction, if any.
+ */
+ IMPORT_C HBufC8* GetContentType();
+
+ /**
+ * Returns content headers, ownership is transferred.
+ * @returns headers of content, if any.
+ */
+ IMPORT_C CDesC8Array* GetContentHeaders();
+
+ /**
+ * Returns content, ownership is transferred.
+ * @returns content of transaction, if any.
+ */
+ IMPORT_C HBufC8* GetContent();
+
+ public: // IMPORTED FOR STUBBING PURPOSES, NORMALLY NOT IMPORTED
+
+ IMPORT_C void SetStatusCode( TInt aStatusCode );
+
+ IMPORT_C void SetReasonPhrase( HBufC8* aReasonPhrase );
+
+ IMPORT_C void SetHeaders( CDesC8Array* aHeaders );
+
+ IMPORT_C void SetContentType( HBufC8* aContentType );
+
+ IMPORT_C void SetContent( HBufC8* aContent );
+
+ IMPORT_C void SetContentHeaders( CDesC8Array* aHeaders );
+
+ IMPORT_C void Clear();
+
+ private:
+
+ TUint32 iStatusCode;
+
+ HBufC8* iReasonPhrase;
+
+ CDesC8Array* iHeaders;
+
+ HBufC8* iContentType;
+
+ CDesC8Array* iContentHeaders;
+
+ HBufC8* iContent;
+
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcevideocodec.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,190 @@
+/*
+* 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 MCEVIDEOCODEC_H
+#define MCEVIDEOCODEC_H
+
+// INCLUDES
+#include <e32base.h>
+#include "mcecodec.h"
+#include "mcedefs.h"
+
+// FORWARD DECLARATIONS
+class CMceComVideoCodec;
+class TMceVideoCodecFactory;
+class TCCMRVideoCodingOptions;
+
+// CONSTANTS
+const TMceCodecType KMceVideoCodec = 2;
+
+
+// CLASS DECLARATION
+
+/**
+* Base class for video codecs.
+*
+* It defines setters and getters for generic video codec attributes.
+* These attributes are used in single video stream and they
+* are negotiated with remote terminal.
+*
+* @lib mceclient.lib
+*/
+class CMceVideoCodec : public CMceCodec
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMceVideoCodec();
+
+
+ public: // New functions
+
+ /**
+ * Clones the codec.
+ * @return cloned codec; ownership is transferred
+ */
+ virtual CMceVideoCodec* CloneL() const = 0;
+
+ /**
+ * Sets maximum bitrate of the codec.
+ * @param aMaxBitrate value of maximum bitrate used for encoding
+ * @leave KErrNotSupported if codec doesn't support frame sizes issued
+ */
+ virtual void SetMaxBitrateL( TUint aMaxBitrate ) = 0;
+
+ /**
+ * Sets resolutions allowed with the codec.
+ * @param aResolutions bitfield of allowed resolutions
+ * @leave KErrNotSupported if codec doesn't support resolutions issued
+ */
+ virtual void SetAllowedResolutionsL( TUint aResolutions ) = 0;
+
+ /**
+ * Sets resolution of the video.
+ * @param aResolution resolution of the video in pixels
+ * @leave KErrNotSupported if codec doesn't support resolution issued
+ */
+ virtual void SetResolutionL( TSize aResolution ) = 0;
+
+ /**
+ * Sets frame rates allowed with the codec.
+ * @param aFrameRates allowed frame rate values as a bitfield
+ * @leave KErrNotSupported if codec doesn't support frame rates issued
+ */
+ virtual void SetAllowedFrameRatesL( TUint aFrameRates ) = 0;
+
+ /**
+ * Sets frame rate used with the codec for encoding.
+ * @param aFrameRate frame rate for encoding
+ * @leave KErrNotSupported if codec doesn't support frame rate value
+ * issued
+ */
+ virtual void SetFrameRateL( TReal aFrameRate ) = 0;
+
+ /**
+ * Sets preferred encoding device for uplink stream and preferred decoding
+ * device for downlink stream.
+ * @param aEncodingDecodingDevice
+ * @leave KErrNotSupported if setting preferred device is not possible
+ */
+ virtual void SetPreferredEncodingDecodingDeviceL(
+ TUid aEncodingDecodingDevice ) = 0;
+
+ /**
+ * Set config key (sprop-parameter-sets)
+ * @param aConfigKey, config key as Base64 encoded
+ * @leave KErrNotSupported if setting config key is not possible
+ */
+ virtual void SetConfigKeyL( const TDesC8& aConfigKey ) = 0;
+
+
+ public: // Getters
+
+ /**
+ * Gets maximum bit rate currently allowed
+ * @return maximum bit rate
+ */
+ IMPORT_C TUint MaxBitRate() const;
+
+ /**
+ * Gets currently allowed resolutions as a bitfield
+ * @return currently allowed resolutions as a bitfield
+ */
+ IMPORT_C TUint AllowedResolutions() const;
+
+ /**
+ * Gets current resolution
+ * @return current resolution
+ */
+ IMPORT_C TSize Resolution() const;
+
+ /**
+ * Gets frame rates currently allowed for encoding and decoding.
+ * @return allowed frame rate values as a bitfield
+ */
+ IMPORT_C TUint AllowedFrameRates() const;
+
+ /**
+ * Gets frame rate currently used for encoding and decoding.
+ * @return current frame rate value
+ */
+ IMPORT_C TReal FrameRate() const;
+
+ /**
+ * Get config key (sprop-parameter-sets)
+ * @return config key as Base64 encoded or NULL, ownership
+ * is transferred.
+ */
+ IMPORT_C HBufC8* ConfigKeyL() const;
+
+
+ protected: // New functions
+
+ /**
+ * C++ default constructor.
+ */
+ CMceVideoCodec();
+
+
+
+
+ private: // Reserved for future use
+
+ TAny* iReserved;
+
+ public: // stub data
+
+ TReal iFrameRate;
+ TUint iMaxBitRate;
+ TUint iAllowedResolutions;
+ TInt iResolutionWidth;
+ TInt iResolutionHeight;
+ TUint iAllowedFrameRates;
+ TUint iClockRate;
+
+ HBufC8* iConfigKey;
+ TUid iEncodingDecodingDevice;
+
+ };
+
+
+#endif
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcevideostream.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,176 @@
+/*
+* 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 MCEVIDEOSTREAM_H
+#define MCEVIDEOSTREAM_H
+
+// INCLUDES
+#include <e32std.h>
+#include "mcemediastream.h"
+
+// CONSTANTS
+const TMceMediaType KMceVideo = 2;
+
+// FORWARD DECLARATIONS
+class CMceVideoCodec;
+
+// CLASS DECLARATION
+
+/**
+* Class for representing unidirectional video stream.
+*
+* It defines the used video codecs for the stream.
+* In order to be complete structure, at least one codec is required.
+*
+* @lib mceclient.lib
+*/
+class CMceVideoStream : public CMceMediaStream
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CMceVideoStream* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CMceVideoStream* NewLC();
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CMceVideoStream();
+
+ public: // Functions
+
+ /**
+ * Returns the codecs available to the session.
+ * For CMceOutSession, array contains all codecs supported by
+ * terminal in default. For CMceInSession, array contains codecs
+ * that were offered by remote terminal, and supported by local terminal.
+ * Codecs are in preference order in the array.
+ * Codec in the first element of the array has highest preference.
+ * Adding, removing or replacing a codec or changing the preference
+ * of a codec causes the returned array to be in invalid state.
+ * @return codecs available for the session
+ */
+ IMPORT_C const RPointerArray<CMceVideoCodec>& Codecs();
+
+ /**
+ * Adds codec to the stream. The codec contains preference value
+ * which will define its preference when added to the stream.
+ * Preference of codecs with the same preference value is determined
+ * by order they were added to the stream. In case of bound streams,
+ * codec is also automatically added to the opposite direction stream.
+ * After adding a codec an array of codecs received with a call
+ * to Codecs() is not valid.
+ * @param aCodec codec added to the stream; ownership is transferred
+ */
+ IMPORT_C void AddCodecL( CMceVideoCodec* aCodec );
+
+ /**
+ * Removes codec from the stream. In case of bound streams, codec is
+ * also automatically removed from the opposite direction stream.
+ * After removing a codec an array of codecs previously received with
+ * a call to Codecs() is not valid.
+ * @param aCodec codec removed from stream
+ */
+ IMPORT_C void RemoveCodecL( CMceVideoCodec& aCodec );
+
+ /**
+ * Replaces codecs of the stream. Preference values of codecs will define
+ * the preference order. In case of bound streams, codecs are
+ * also automatically added to the opposite direction stream.
+ * After replacing codecs an array of codecs received with a call
+ * to Codecs() is not valid.
+ * @param aCodecs array of codecs which will replace existing codecs;
+ * ownership is transferred
+ */
+ IMPORT_C void ReplaceCodecsL( RPointerArray<CMceVideoCodec>* aCodecs );
+
+ /**
+ * Gets supported video codecs of the current stream configuration.
+ * Supported codecs for this video stream is affected by attached
+ * sinks and sources.
+ * @return supported video codecs of the current stream configuration
+ */
+ IMPORT_C const RPointerArray<const CMceVideoCodec>&
+ SupportedVideoCodecs() const;
+
+
+ public: // From CMceMediaStream
+
+ /**
+ * Initializes the stream.
+ * @param aParent the parent
+ */
+ void InitializeL( CMceSession& aParent );
+
+ /**
+ * Initializes the stream.
+ * @param aManager the manager; ownership is not transferred
+ */
+ void InitializeL( CMceManager* aManager );
+
+
+ protected: // From CMceMediaStream
+
+ /**
+ * Determine whether current combination of source and sinks
+ * is allowed for spesific stream type.
+ * @return ETrue is combination is allowed; otherwise EFalse
+ */
+ virtual TBool IsAllowedCombination();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CMceVideoStream();
+
+ /**
+ * Second-phase constructor.
+ */
+ void ConstructL();
+
+
+ private: // Owned data
+
+ /**
+ * Codecs.
+ */
+ RPointerArray<CMceVideoCodec> iCodecs;
+
+ /**
+ * Supported video codecs.
+ */
+ RPointerArray<const CMceVideoCodec> iSupportedVideoCodecs;
+
+ private: // Reserved for future use
+
+ TAny* iReserved;
+
+
+ public: // Stub data
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mussessionsimulator.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2005-2006 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: This interface is used by
+* clients to get and availability setting for Video Charging
+*
+*/
+
+
+#ifndef MUSSESSIONSIMULATOR_H_
+#define MUSSESSIONSIMULATOR_H_
+
+#include <e32base.h>
+#include <mcemanager.h>
+
+class MMceSessionObserver;
+
+class MTimerNotify
+ {
+ public:
+ virtual void TimerExpired(TAny* aTimer,TInt aError) = 0;
+ };
+
+ class CMusTestTimer: public CActive
+ {
+ public:
+ static CMusTestTimer* NewL(const TInt aPriority,MTimerNotify& aNotify);
+ ~CMusTestTimer();
+ public:
+ void At(const TTime& aTime);
+ void After(TTimeIntervalMicroSeconds32 aInterval);
+ void Inactivity(TTimeIntervalSeconds aSeconds);
+ protected:
+ void RunL();
+ void DoCancel();
+ private:
+ CMusTestTimer(const TInt aPriority,MTimerNotify& aNotify);
+ void ConstructL(void);
+ private:
+ RTimer iTimer;
+ MTimerNotify& iNotify;
+ };
+
+class CMusTestSessionSimulator : public MTimerNotify
+ {
+
+public:
+ static CMusTestSessionSimulator* NewL( CMceManager& aObserver );
+ CMusTestSessionSimulator( CMceManager& aObserver );
+ ~CMusTestSessionSimulator();
+ void StartL();
+ void Stop();
+ TBool IsRunning();
+private:
+ void ConstructL();
+ void StateChangeL();
+ void TimerExpired(TAny* aTimer,TInt aError);
+ void SimulateReceiveSession();
+private:
+ CMceManager& iManager;
+
+private :
+ CMusTestTimer* iTimer;
+ TBool ibIncoming;
+ };
+
+#endif /* MUSSESSIONSIMULATOR_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mustestdrawer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2003 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: The observer class for monitoring SIP profiles.
+*
+*/
+
+
+#ifndef MMUSTESTDRAWER_H
+#define MMUSTESTDRAWER_H
+
+#include <e32base.h>
+#include <w32std.h>
+
+class CMusTestDrawer : public CBase,MDirectScreenAccess
+ {
+public:
+ CMusTestDrawer* NewL();
+ CMusTestDrawer* NewLC();
+ ~CMusTestDrawer();
+ void DrawL( const TRect& aRect);
+ virtual void Restart(RDirectScreenAccess::TTerminationReasons aReason);
+private:
+ CMusTestDrawer();
+ void ConstructL();
+
+ };
+
+#endif // MMUSTESTDRAWER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mccscreen.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,402 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+
+
+#include <bitstd.h>
+#include <w32std.h>
+#include <gdi.h>
+
+#include "MccScreen.h"
+#include "muslogger.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+_LIT(KMccWindowGroupName,"32MccVideoWindow");
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMccScreen::CMccScreen
+// -----------------------------------------------------------------------------
+//
+CMccScreen* CMccScreen::NewL(
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority,
+ TSize aViewFinderImageSize )
+ {
+ CMccScreen* self = new ( ELeave ) CMccScreen( aPos,
+ aArea,
+ aIndex,
+ aWindowOrdinalPosition,
+ aWindowOrdinalPriority );
+ CleanupStack::PushL( self );
+ self->ConstructL( aViewFinderImageSize );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::CMccScreen
+// -----------------------------------------------------------------------------
+//
+CMccScreen::CMccScreen(
+ TPoint aPos,
+ TSize aArea,
+ TInt aIndex,
+ TInt aWindowOrdinalPosition,
+ TInt aWindowOrdinalPriority ) :
+ iDeviceIndex( aIndex ),
+ iPosition( aPos ),
+ iArea( aArea ),
+ iWindowOrdinalPosition( aWindowOrdinalPosition ),
+ iWindowOrdinalPriority( aWindowOrdinalPriority ),
+ iAborted( ETrue )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::CMccScreen
+// -----------------------------------------------------------------------------
+//
+CMccScreen::~CMccScreen()
+ {
+ MUS_LOG( "CMccScreen::~CMccScreen" )
+
+ DetachFrame(); // Must do bitmap detach before releasing window resources
+ delete iDirectScreenAccess;
+ delete iDev;
+ delete iRw;
+ delete iRwGroup;
+ iRwSession.Close();
+
+ MUS_LOG( "CMccScreen::~CMccScreen, exit" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::CMccScreen
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::ConstructL( TSize aViewFinderImageSize )
+ {
+ MUS_LOG( "CMccScreen::ConstructL" )
+ User::LeaveIfError( iRwSession.Connect() );
+
+ // Create window group
+ TInt groupId = iRwSession.GetFocusWindowGroup();
+ iRwGroup = new (ELeave) RWindowGroup( iRwSession ) ;
+ //TInt handle = iRwSession.GetWindowGroupHandle( groupId );
+
+ MUS_LOG1( "CMccScreen::ConstructL, window ordinal pos", iWindowOrdinalPosition )
+ MUS_LOG1( "CMccScreen::ConstructL, window ordinal priority", iWindowOrdinalPriority )
+
+ iRwGroup->Construct( groupId, EFalse );
+ iRwGroup->SetName( KMccWindowGroupName );
+
+ iRwGroup->SetOrdinalPosition( iWindowOrdinalPosition, iWindowOrdinalPriority );
+
+ // Create screen device
+ iDev = new (ELeave) CWsScreenDevice( iRwSession );
+ iDev->Construct( iDeviceIndex );
+
+ TInt currMode = iDev->CurrentScreenMode();
+ MUS_LOG1( "CMccScreen::ConstructL, screen device mode = %d", currMode )
+
+ TPixelsTwipsAndRotation sizeAndRotation;
+ iDev->GetScreenModeSizeAndRotation( currMode, sizeAndRotation );
+ MUS_LOG2( "CMccScreen::ConstructL, screen device size %d %d",
+ sizeAndRotation.iPixelSize.iWidth,
+ sizeAndRotation.iPixelSize.iHeight )
+
+ MUS_LOG1( "CMccScreen::ConstructL, screen device orientation %d",
+ sizeAndRotation.iRotation )
+
+ // Create window
+ iRw = new (ELeave) RWindow( iRwSession );
+
+ iRw->Construct( *iRwGroup, (TUint32) this + 2 );
+
+ MUS_LOG2( "CMccScreen::ConstructL, window pos %d %d", iPosition.iX, iPosition.iY )
+ MUS_LOG2( "CMccScreen::ConstructL, window size %d %d", iArea.iWidth, iArea.iHeight )
+
+ iRw->SetPosition( iPosition );
+ iRw->SetBackgroundColor( KRgbBlack );
+ iRw->SetSize( iArea );
+ iRw->SetOrdinalPosition( iWindowOrdinalPosition );
+ iRw->Activate();
+ iRwSession.Flush();
+
+ // Create direct screen access
+ iDirectScreenAccess = CDirectScreenAccess::NewL( iRwSession, *iDev, *iRw, *this );
+
+ UpdateViewFinderArea( aViewFinderImageSize );
+
+ MUS_LOG2( "CMccScreen::ConstructL, viewfinder pos %d %d",
+ iViewFinderImageRect.iTl.iX, iViewFinderImageRect.iTl.iY )
+ MUS_LOG2( "CMccScreen::ConstructL, viewfinder size %d %d",
+ iViewFinderImageRect.Width(), iViewFinderImageRect.Height() )
+
+ MUS_LOG( "CMccScreen::ConstructL, exit" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::CMccScreen
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::StartL()
+ {
+ MUS_LOG( "CMccScreen::StartL" )
+
+ iAborted = EFalse;
+
+ iDirectScreenAccess->StartL();
+ iGc = iDirectScreenAccess->Gc();
+ iFbsDev = iDirectScreenAccess->ScreenDevice();
+ iRegion = iDirectScreenAccess->DrawingRegion();
+
+#ifdef __MCC_CONTROLLER
+ if ( iRegion && !iRegion->IsEmpty() )
+ {
+ for ( TInt i = 0; i < iRegion->Count(); i++ )
+ {
+ const TRect& regionRect = (*iRegion)[ i ];
+ MUS_LOG_INT2( "CMccScreen::StartL, rect tl", regionRect.iTl.iX, regionRect.iTl.iY )
+ MUS_LOG_INT2( "CMccScreen::StartL, rect br", regionRect.iBr.iX, regionRect.iBr.iY )
+ }
+ }
+#endif
+
+ iGc->SetClippingRegion( iRegion );
+
+ // Fill with black areas which are not covered by viewfinder image.
+ // If viewfinder image has not been yet received and drawn, fill whole area.
+ //
+ iGc->SetBrushColor( KRgbBlack );
+ iGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
+
+ if ( !iFirstImageDrawn )
+ {
+ // Whole area
+ TPoint pointTl( 0, 0 );
+ TRect rect( pointTl, iArea );
+ iGc->DrawRect( rect );
+ }
+ else
+ {
+ // Upper area
+ TPoint pointTl( 0, 0 );
+ TPoint pointBr( iArea.iWidth, iViewFinderImageRect.iTl.iY );
+ TRect rect( pointTl, pointBr );
+ iGc->DrawRect( rect );
+
+ // Lower area
+ pointTl.SetXY( 0, iViewFinderImageRect.iBr.iY );
+ pointBr.SetXY( iArea.iWidth, iArea.iHeight );
+ rect.SetRect( pointTl, pointBr );
+ iGc->DrawRect( rect );
+
+ // Left area
+ pointTl.SetXY( 0, iViewFinderImageRect.iTl.iY );
+ pointBr.SetXY( iViewFinderImageRect.iTl.iX, iViewFinderImageRect.iBr.iY );
+ rect.SetRect( pointTl, pointBr );
+ iGc->DrawRect( rect );
+
+ // Right area
+ pointTl.SetXY( iViewFinderImageRect.iBr.iX, iViewFinderImageRect.iTl.iY );
+ pointBr.SetXY( iArea.iWidth, iViewFinderImageRect.iBr.iY );
+ rect.SetRect( pointTl, pointBr );
+ iGc->DrawRect( rect );
+ }
+
+ if ( iAttachedFrame )
+ {
+ MUS_LOG( "CMccScreen::StartL, draw attached frame" )
+
+ TSize viewFinderImageSize = iAttachedFrame->SizeInPixels();
+
+ TPoint corner = UpdateViewFinderArea( viewFinderImageSize );
+
+ iGc->BitBlt( corner, iAttachedFrame );
+ }
+
+ DoScreenDeviceUpdate();
+
+ iGc->SetBrushStyle( CGraphicsContext::ENullBrush );
+
+ MUS_LOG( "CMccScreen::StartL, exit" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::CMccScreen
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::Stop()
+ {
+ MUS_LOG( "CMccScreen::Stop" )
+ iDirectScreenAccess->Cancel();
+ MUS_LOG( "CMccScreen::Stop, exit" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::CMccScreen
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::Restart( RDirectScreenAccess::TTerminationReasons /*aReason*/ )
+ {
+ MUS_LOG( "CMccScreen::Restart" )
+
+ TRAP_IGNORE( StartL() );
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::CMccScreen
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::AbortNow( RDirectScreenAccess::TTerminationReasons /*aReason*/ )
+ {
+ MUS_LOG( "CMccScreen::AbortNow" )
+ iDirectScreenAccess->Cancel();
+
+ iAborted = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::CMccScreen
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::Draw( CFbsBitmap& aFrame )
+ {
+ // When frame draw is requested, attached frame is not anymore drawn
+ DetachFrame();
+
+ DoDraw( aFrame );
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::AttachFrameL
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::AttachFrameL( CFbsBitmap* aFrame )
+ {
+ MUS_LOG( "CMccScreen::AttachFrameL" )
+
+ __ASSERT_ALWAYS( aFrame, User::Leave( KErrArgument ) );
+
+ DetachFrame();
+
+ iAttachedFrame = aFrame;
+
+ DoDraw( *iAttachedFrame );
+
+ MUS_LOG( "CMccScreen::AttachFrameL, exit" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::DetachFrame
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::DetachFrame()
+ {
+ if ( iAttachedFrame )
+ {
+ MUS_LOG( "CMccScreen::DetachFrame, detaching" )
+ iAttachedFrame->Reset();
+ delete iAttachedFrame;
+ }
+
+ iAttachedFrame = NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::UpdateViewFinderArea
+// -----------------------------------------------------------------------------
+//
+TPoint CMccScreen::UpdateViewFinderArea( TSize aViewFinderImageSize )
+ {
+ TPoint corner( 0, 0 );
+ if ( aViewFinderImageSize.iWidth < iArea.iWidth )
+ {
+ // Divide the subtraction by two (i.e. do centering)
+ corner.iX = ( iArea.iWidth - aViewFinderImageSize.iWidth ) >> 1;
+ }
+
+ if ( aViewFinderImageSize.iHeight < iArea.iHeight )
+ {
+ // Divide the subtraction by two (i.e. do centering)
+ corner.iY = ( iArea.iHeight - aViewFinderImageSize.iHeight ) >> 1;
+ }
+
+ iViewFinderImageRect = TRect( corner, aViewFinderImageSize );
+
+ return corner;
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::DoDraw
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::DoDraw( CFbsBitmap& aFrame )
+ {
+ if ( !iAborted && iGc )
+ {
+ iFirstImageDrawn = ETrue;
+
+ TSize viewFinderImageSize = aFrame.SizeInPixels();
+
+ TPoint corner = UpdateViewFinderArea( viewFinderImageSize );
+
+ iGc->BitBlt( corner, &aFrame );
+
+ DoScreenDeviceUpdate();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMccScreen::DoScreenDeviceUpdate
+// -----------------------------------------------------------------------------
+//
+void CMccScreen::DoScreenDeviceUpdate()
+ {
+ if ( iFbsDev )
+ {
+ iFbsDev->Update();
+ }
+ }
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mceamrcodec.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,194 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mceamrcodec.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::~CMceAmrCodec
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceAmrCodec::~CMceAmrCodec()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::CloneL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceAudioCodec* CMceAmrCodec::CloneL() const
+ {
+ CMceAmrCodec* clone = CMceAmrCodec::NewLC( iSdpName );
+
+ if ( iFmtpAttr )
+ {
+ clone->iFmtpAttr = iFmtpAttr->AllocL();
+ }
+ clone->iEnableVAD = iEnableVAD;
+ clone->iSamplingFreq = iSamplingFreq;
+ clone->iPTime = iPTime;
+ clone->iMaxPTime = iMaxPTime;
+ clone->iBitrate = iBitrate;
+ clone->iAllowedBitrates = iAllowedBitrates;
+ clone->iPayloadType = iPayloadType;
+ clone->iCodecMode = iCodecMode;
+ clone->iFourCC = iFourCC;
+ clone->iFrameSize = iFrameSize;
+
+ CleanupStack::Pop( clone );
+
+ return clone;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::EnableVAD
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAmrCodec::EnableVAD( TBool aEnableVAD )
+ {
+ iEnableVAD = aEnableVAD;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::SetBitrate
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAmrCodec::SetBitrate(TUint aBitrate)
+ {
+ iBitrate = aBitrate;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::SetAllowedBitrates
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAmrCodec::SetAllowedBitrates(TUint aBitrates)
+ {
+ iAllowedBitrates = aBitrates;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::SetSamplingFreq
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAmrCodec::SetSamplingFreq(TUint aSamplingFreq)
+ {
+ iSamplingFreq = aSamplingFreq;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::SetPTime
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAmrCodec::SetPTime(TUint aPTime)
+ {
+ iPTime = aPTime;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::SetMaxPTime
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAmrCodec::SetMaxPTime(TUint aMaxPTime)
+ {
+ iMaxPTime = aMaxPTime;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::SetPayloadType
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAmrCodec::SetPayloadType(TUint8 aPayloadType)
+ {
+ iPayloadType = aPayloadType;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::SetCodecMode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAmrCodec::SetCodecMode(TUint aCodecMode)
+ {
+ iCodecMode = aCodecMode;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::NewL
+// -----------------------------------------------------------------------------
+//
+CMceAmrCodec* CMceAmrCodec::NewL( TBuf8<KMceMaxSdpNameLength> aSdpName )
+ {
+ CMceAmrCodec* self = NewLC( aSdpName );
+ CleanupStack::Pop( self );
+ return self;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::NewL
+// -----------------------------------------------------------------------------
+//
+CMceAmrCodec* CMceAmrCodec::NewLC( TBuf8<KMceMaxSdpNameLength> aSdpName )
+ {
+ CMceAmrCodec* self = new (ELeave) CMceAmrCodec();
+ CleanupStack::PushL( self );
+ self->ConstructL( aSdpName );
+ return self;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::CMceAmrCodec
+// -----------------------------------------------------------------------------
+//
+CMceAmrCodec::CMceAmrCodec()
+ : CMceAudioCodec()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceAmrCodec::ConstructL( TBuf8<KMceMaxSdpNameLength> aSdpName )
+ {
+ iSdpName = aSdpName;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAmrCodec::SetSdpNameL
+// -----------------------------------------------------------------------------
+//
+void CMceAmrCodec::SetSdpNameL( const TDesC8& aSdpName )
+ {
+ __ASSERT_ALWAYS( aSdpName.Length() <= KMceMaxSdpNameLength,
+ User::Leave( KErrArgument ) );
+ iSdpName.Copy( aSdpName );
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mceaudiocodec.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mceaudiocodec.h"
+#include "mcesession.h"
+#include "mcemanager.h"
+#include "mcemediastream.h"
+
+
+#define _FLAT_DATA static_cast<CMceComAudioCodec*>( iFlatData )
+#define FLAT_DATA( data ) _FLAT_DATA->data
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceAudioCodec::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceAudioCodec::InitializeL( CMceMediaStream& aParent )
+ {
+ CMceCodec::InitializeL( aParent );
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioCodec::~CMceAudioCodec
+// -----------------------------------------------------------------------------
+//
+CMceAudioCodec::~CMceAudioCodec()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioCodec::SamplingFreq
+// -----------------------------------------------------------------------------
+//
+TUint CMceAudioCodec::SamplingFreq() const
+ {
+ return iSamplingFreq;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioCodec::VAD
+// -----------------------------------------------------------------------------
+//
+TBool CMceAudioCodec::VAD() const
+ {
+ return iEnableVAD;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioCodec::PTime
+// -----------------------------------------------------------------------------
+//
+TUint CMceAudioCodec::PTime() const
+ {
+ return iPTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioCodec::MaxPTime
+// -----------------------------------------------------------------------------
+//
+TUint CMceAudioCodec::MaxPTime() const
+ {
+ return iMaxPTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioCodec::CMceAudioCodec
+// -----------------------------------------------------------------------------
+//
+CMceAudioCodec::CMceAudioCodec() :
+ CMceCodec()
+ {
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mceaudiostream.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,155 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mceaudiostream.h"
+#include "mcemanager.h"
+#include "mceaudiocodec.h"
+#include "mcesession.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMceAudioStream::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceAudioStream* CMceAudioStream::NewL()
+ {
+ CMceAudioStream* self = NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioStream::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceAudioStream* CMceAudioStream::NewLC()
+ {
+ CMceAudioStream* self = new (ELeave) CMceAudioStream();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioStream::~CMceAudioStream
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceAudioStream::~CMceAudioStream()
+ {
+ iCodecs.ResetAndDestroy();
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioStream::Codecs
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<CMceAudioCodec>& CMceAudioStream::Codecs()
+ {
+ return iCodecs;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioStream::AddCodecL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceAudioStream::AddCodecL(CMceAudioCodec* aCodec)
+ {
+ __ASSERT_ALWAYS(aCodec, User::Leave(KErrArgument));
+ iCodecs.AppendL(aCodec);
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioStream::RemoveCodecL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceAudioStream::RemoveCodecL(CMceAudioCodec& aCodec)
+ {
+ for(int i = 0; i < iCodecs.Count(); i++ )
+ {
+ if( iCodecs[i] == &aCodec )
+ {
+ delete iCodecs[i];
+ iCodecs.Remove( i );
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioStream::CMceAudioStream
+// -----------------------------------------------------------------------------
+//
+CMceAudioStream::CMceAudioStream()
+ :CMceMediaStream()
+ {
+ iType = KMceAudio;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAudioStream::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceAudioStream::ConstructL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioStream::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceAudioStream::InitializeL( CMceSession& aParent )
+ {
+
+ CMceMediaStream::InitializeL( aParent );
+
+ InitializeL( &aParent.Manager() );
+
+ for( TInt i = 0; i < iCodecs.Count(); i++ )
+ {
+ iCodecs[i]->InitializeL( *this );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAudioStream::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceAudioStream::InitializeL( CMceManager* aManager )
+ {
+ CMceMediaStream::InitializeL( aManager );
+ if ( aManager && iCodecs.Count() == 0 )
+ {
+ const RPointerArray<const CMceAudioCodec> supportedCodes =
+ aManager->SupportedAudioCodecs();
+ for( TInt i = 0; i < supportedCodes.Count(); i++ )
+ {
+ CMceAudioCodec* codec = supportedCodes[i]->CloneL();
+ CleanupStack::PushL( codec );
+ iCodecs.AppendL( codec );
+ CleanupStack::Pop( codec );
+ }
+
+ }
+
+ }
+
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mceavccodec.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,286 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+#include "mceavccodec.h"
+
+// Stub constants
+const TReal KMceAvcDefaultFrameRate = 15;
+const TInt KMceAvcDefaultFrameSize = 10000;
+const TInt KMceAvcDefaultAllowedBitrate = KMceAvcCodecProfileIdBaseline |
+ KMceAvcCodecProfileIopConstraintSet |
+ KMceAvcBitrateLevel1;
+const TInt KMceAvcLevel1BitrateBps = 64000;
+
+const TUint KMceAvcDefaultFrameHeight = 176;
+const TUint KMceAvcDefaultFrameWidth = 144;
+
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::~CMceAvcCodec
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceAvcCodec::~CMceAvcCodec()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceAvcCodec* CMceAvcCodec::NewL( TBuf8<KMceMaxSdpNameLength> aSdpName )
+ {
+ CMceAvcCodec* self = NewLC( aSdpName );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceAvcCodec* CMceAvcCodec::NewLC( TBuf8<KMceMaxSdpNameLength> aSdpName )
+ {
+ CMceAvcCodec* self = new (ELeave) CMceAvcCodec();
+ CleanupStack::PushL( self );
+ self->ConstructL( aSdpName );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::SetBitrate
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAvcCodec::SetBitrate( TUint aBitrate )
+ {
+ iBitrate = aBitrate;
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::SetAllowedBitrates
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAvcCodec::SetAllowedBitrates(TUint aBitrates)
+ {
+ iAllowedBitrates = aBitrates;
+
+ delete iConfigKey;
+ iConfigKey = NULL;
+
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::SetCodecMode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAvcCodec::SetCodecMode( TUint aCodecMode )
+ {
+ if ( aCodecMode == KMceAvcModeSingleNal )
+ {
+ iCodecMode = KMceAvcModeSingleNal;
+ return KErrNone;
+ }
+ return KErrNotSupported;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::SetPayloadType
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceAvcCodec::SetPayloadType(TUint8 aPayloadType)
+ {
+ iPayloadType = aPayloadType;
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::CloneL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceVideoCodec* CMceAvcCodec::CloneL() const
+ {
+ CMceAvcCodec* clone = CMceAvcCodec::NewLC( iSdpName );
+
+ if ( iFmtpAttr )
+ {
+ clone->iFmtpAttr = iFmtpAttr->AllocL();
+ }
+ clone->iPayloadType = iPayloadType;
+
+ clone->iBitrate = iBitrate;
+ clone->iAllowedBitrates = iAllowedBitrates;
+ clone->iCodecMode = iCodecMode;
+ clone->iFourCC = iFourCC;
+ clone->iFrameSize = iFrameSize;
+
+ clone->iFrameRate = iFrameRate;
+ clone->iMaxBitRate = iMaxBitRate;
+ clone->iAllowedResolutions = iAllowedResolutions;
+ clone->iResolutionWidth = iResolutionWidth;
+ clone->iResolutionHeight = iResolutionHeight;
+ clone->iAllowedFrameRates = iAllowedFrameRates;
+ clone->iClockRate = iClockRate;
+
+ clone->iPacketizationMode = iPacketizationMode;
+ clone->iAllowedPacketizationModes = iAllowedPacketizationModes;
+
+ CleanupStack::Pop( clone );
+ return clone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceAvcCodec::SetMaxBitrateL( TUint aMaxBitrate )
+ {
+ delete HBufC::NewL( 1 ); // To cause leave in simulation
+ iMaxBitRate = aMaxBitrate;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceAvcCodec::SetAllowedResolutionsL( TUint aResolutions )
+ {
+ delete HBufC::NewL( 1 ); // To cause leave in simulation
+ iAllowedResolutions = aResolutions;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceAvcCodec::SetResolutionL( TSize aResolution )
+ {
+ delete HBufC::NewL( 1 ); // To cause leave in simulation
+ iResolutionWidth = aResolution.iWidth;
+ iResolutionHeight = aResolution.iHeight;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceAvcCodec::SetAllowedFrameRatesL( TUint aFrameRates )
+ {
+ delete HBufC::NewL( 1 ); // To cause leave in simulation
+ iAllowedFrameRates = aFrameRates;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceAvcCodec::SetFrameRateL( TReal aFrameRate )
+ {
+ delete HBufC::NewL( 1 ); // To cause leave in simulation
+ iFrameRate = aFrameRate;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::SetPreferredEncodingDecodingDeviceL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceAvcCodec::SetPreferredEncodingDecodingDeviceL(
+ TUid aEncodingDecodingDevice )
+ {
+ delete HBufC::NewL( 1 ); // To cause leave in simulation
+ iEncodingDecodingDevice = aEncodingDecodingDevice;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::SetEncodingKeyL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceAvcCodec::SetConfigKeyL( const TDesC8& aConfigKey )
+ {
+ HBufC8* configKey = aConfigKey.AllocL();
+ delete iConfigKey;
+ iConfigKey = configKey;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::SetSdpNameL
+// -----------------------------------------------------------------------------
+//
+void CMceAvcCodec::SetSdpNameL( const TDesC8& aSdpName )
+ {
+ __ASSERT_ALWAYS( aSdpName.Length() <= KMceMaxSdpNameLength,
+ User::Leave( KErrArgument ) );
+ delete HBufC::NewL( 1 ); // To cause leave in simulation
+ iSdpName.Copy( aSdpName );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::CMceAvcCodec
+// -----------------------------------------------------------------------------
+//
+CMceAvcCodec::CMceAvcCodec()
+ :CMceVideoCodec()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceAvcCodec::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceAvcCodec::ConstructL( TBuf8<KMceMaxSdpNameLength> aSdpName )
+ {
+ iSdpName = aSdpName;
+ iCodecMode = KMceAvcModeSingleNal;
+ iClockRate = KMceAvcDefaultFrameRate;
+ iFrameRate = KMceAvcDefaultFrameRate;
+ iResolutionWidth = KMceAvcDefaultFrameWidth;
+ iResolutionHeight = KMceAvcDefaultFrameHeight;
+ iBitrate = KMceAvcLevel1BitrateBps;
+ iMaxBitRate = KMceAvcLevel1BitrateBps;
+ iAllowedBitrates = KMceAvcDefaultAllowedBitrate;
+ iFrameSize = KMceAvcDefaultFrameSize;
+ // Defaults should be defined in MCE API
+ const TUint8 KMceDefaultAvcPayloadType = 98;
+ iPayloadType = KMceDefaultAvcPayloadType;
+
+ }
+
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcecamerasource.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,356 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+#include "mcecamerasource.h"
+#include "mcesession.h"
+#include "mcemediastream.h"
+#include "mcemanager.h"
+
+
+const TInt KMinDigitalZoom = 0;
+const TInt KMinContrast = -100;
+const TInt KMaxContrast = 100;
+const TInt KMinBrightness = -100;
+const TInt KMaxBrightness = 100;
+
+
+const TInt KInitialCameraIndex = 0;
+const TInt KInitialZoomFactor = 1;
+const TInt KInitialDigitalZoomFactor = 1;
+const TInt KInitialContrast = 0;
+const TInt KInitialBrightness = 0;
+const TInt KInitialExposure = CCamera::EExposureAuto;
+const TInt KInitialWhiteBalance = CCamera::EWBAuto;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceCameraSource* CMceCameraSource::NewL( CMceManager& aManager )
+ {
+ CMceCameraSource* self = CMceCameraSource::NewLC( aManager );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceCameraSource* CMceCameraSource::NewLC( CMceManager& /*aManager*/ )
+ {
+ CMceCameraSource* self = new( ELeave )CMceCameraSource();
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceCameraSource* CMceCameraSource::NewL()
+ {
+ CMceCameraSource* self = CMceCameraSource::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceCameraSource* CMceCameraSource::NewLC()
+ {
+ CMceCameraSource* self = new( ELeave )CMceCameraSource();
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceCameraSource::~CMceCameraSource()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCameraSource::EnableL()
+ {
+ CMceMediaSource::DoEnableL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCameraSource::DisableL()
+ {
+ CMceMediaSource::DoDisableL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceCameraSource::CamerasAvailable() const
+ {
+ return iCameraCount;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCameraSource::SetCameraIndexL( TInt aCameraIndex )
+ {
+ __ASSERT_ALWAYS( aCameraIndex >= 0 &&
+ aCameraIndex < this->CamerasAvailable(),
+ User::Leave( KErrArgument ) );
+
+
+ iCameraIndex = aCameraIndex;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCameraSource::GetCameraInfo( TCameraInfo& aInfo ) const
+ {
+ aInfo = iCameraInfo;
+
+ aInfo.iMaxZoom += iCameraIndex*5;
+ aInfo.iMaxDigitalZoom += iCameraIndex*5;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCameraSource::SetZoomFactorL( TInt aZoomFactor )
+ {
+ __ASSERT_ALWAYS( aZoomFactor >= iCameraInfo.iMinZoom &&
+ aZoomFactor <= iCameraInfo.iMaxZoom,
+ User::Leave( KErrArgument ) );
+
+ iZoomFactor = aZoomFactor;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceCameraSource::ZoomFactorL()
+ {
+ return iZoomFactor;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCameraSource::SetDigitalZoomFactorL( TInt aDigitalZoomFactor )
+ {
+ __ASSERT_ALWAYS( aDigitalZoomFactor >= KMinDigitalZoom &&
+ aDigitalZoomFactor <= iCameraInfo.iMaxDigitalZoom,
+ User::Leave( KErrArgument ) );
+
+ iDigitalZoomFactor = aDigitalZoomFactor;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceCameraSource::DigitalZoomFactorL()
+ {
+ return iDigitalZoomFactor;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCameraSource::SetContrastL( TInt aContrast )
+ {
+
+ __ASSERT_ALWAYS( ( iCameraInfo.iOptionsSupported &
+ TCameraInfo::EContrastSupported ) ==
+ TCameraInfo::EContrastSupported,
+ User::Leave( KErrNotSupported ) );
+
+ __ASSERT_ALWAYS( (( aContrast >= KMinContrast &&
+ aContrast <= KMaxContrast ) ||
+ aContrast == CCamera::EContrastAuto ),
+ User::Leave( KErrArgument ) );
+
+
+ iContrast = aContrast;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceCameraSource::ContrastL()
+ {
+ return iContrast;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCameraSource::SetBrightnessL( TInt aBrightness )
+ {
+
+ __ASSERT_ALWAYS( ( iCameraInfo.iOptionsSupported &
+ TCameraInfo::EBrightnessSupported ) ==
+ TCameraInfo::EBrightnessSupported,
+ User::Leave( KErrNotSupported ) );
+
+ __ASSERT_ALWAYS( (( aBrightness >= KMinBrightness &&
+ aBrightness <= KMaxBrightness ) ||
+ aBrightness == CCamera::EBrightnessAuto ),
+ User::Leave( KErrArgument ) );
+
+ iBrightness = aBrightness;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceCameraSource::BrightnessL()
+ {
+ return iBrightness;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCameraSource::SetExposureL( CCamera::TExposure aExposure )
+ {
+
+ __ASSERT_ALWAYS( ( iCameraInfo.iExposureModesSupported & aExposure ) ==
+ aExposure,
+ User::Leave( KErrNotSupported ) );
+
+ iExposure = aExposure;
+
+ }
+
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CCamera::TExposure CMceCameraSource::ExposureL()
+ {
+
+
+ return static_cast<CCamera::TExposure>( iExposure );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCameraSource::SetWhiteBalanceL(
+ CCamera::TWhiteBalance aWhiteBalance )
+ {
+ __ASSERT_ALWAYS(
+ ( iCameraInfo.iWhiteBalanceModesSupported & aWhiteBalance ) ==
+ aWhiteBalance,
+ User::Leave( KErrNotSupported ) );
+
+ iWhiteBalance = aWhiteBalance;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CCamera::TWhiteBalance CMceCameraSource::WhiteBalanceL()
+ {
+
+ return static_cast<CCamera::TWhiteBalance>( iWhiteBalance );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMceCameraSource::InitializeL( CMceManager* /*aManager*/ )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMceCameraSource::CMceCameraSource()
+ :CMceMediaSource(),
+ iCameraIndex( 0 ),
+ iZoomFactor( 1 ),
+ iDigitalZoomFactor( 0 ),
+ iContrast( 0 ),
+ iBrightness( 0 ),
+ iExposure( CCamera::EExposureAuto ),
+ iWhiteBalance( CCamera::EWBAuto ),
+ iCameraCount ( 2 )
+ {
+ iType = KMceCameraSource;
+ iCameraInfo.iMinZoom = 1;
+ iCameraInfo.iMaxZoom = 3;
+ iCameraInfo.iMaxDigitalZoom = 10;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcecodec.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,304 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcecodec.h"
+#include "mcesession.h"
+#include "mcemanager.h"
+#include "mcemediastream.h"
+#include "mcestreamobserver.h"
+#include "mcedefs.h"
+
+
+
+#define _FLAT_DATA static_cast<CMceComCodec*>( iFlatData )
+#define FLAT_DATA( data ) _FLAT_DATA->data
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMceCodec::~CMceCodec
+// -----------------------------------------------------------------------------
+//
+CMceCodec::~CMceCodec()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceCodec::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceCodec::InitializeL( CMceMediaStream& aParent )
+ {
+ iStream = &aParent;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceCodec::SetStateL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCodec::SetStateL( CMceCodec::TState /*aState*/ )
+ {
+ // NOT SUPPORTED YET
+ User::Leave( KErrNotSupported );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceCodec::SetStandByTimerL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCodec::SetStandByTimerL( TUint32 /*aTimerValue*/ )
+ {
+ // NOT SUPPORTED YET
+ User::Leave( KErrNotSupported );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceCodec::SetMMFPriorityL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCodec::SetMMFPriorityL( TInt aPriority )
+ {
+ iMMFPriority = aPriority;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceCodec::SetMMFPriorityPreferenceL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCodec::SetMMFPriorityPreferenceL( TInt aPriorityPreference )
+ {
+ iMMFPriorityPreference = aPriorityPreference;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCodec::SetKeepAliveTimerL( TUint8 aTimerValue )
+ {
+ iKeepAliveTimer = aTimerValue;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCodec::SetKeepAlivePayloadTypeL( TUint8 aKeepAlivePT )
+ {
+ iKeepAlivePayloadType = aKeepAlivePT;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCodec::SetKeepAliveDataL( const TDesC8& aData )
+ {
+ iKeepAliveData = aData;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceCodec::State
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceCodec::TState CMceCodec::State() const
+ {
+ return CMceCodec::EDisabled;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceCodec::Id
+// -----------------------------------------------------------------------------
+//
+/*
+EXPORT_C TMceMediaId CMceCodec::Id() const
+ {
+ return;
+ }
+*/
+
+// -----------------------------------------------------------------------------
+// CMceCodec::Type
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TMceCodecType CMceCodec::Type() const
+ {
+ return iType;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceCodec::FourCC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CMceCodec::FourCC() const
+ {
+ return iFourCC;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceCodec::Bitrate
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CMceCodec::Bitrate() const
+ {
+ return iBitrate;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceAudioCodec::AllowedBitrates
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CMceCodec::AllowedBitrates() const
+ {
+ return iAllowedBitrates;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceCodec::FrameSize
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CMceCodec::FrameSize() const
+ {
+ return iFrameSize;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceCodec::CodecMode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CMceCodec::CodecMode() const
+ {
+ return iCodecMode;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceCodec::PayloadType
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint8 CMceCodec::PayloadType() const
+ {
+ return iPayloadType;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceCodec::SdpName
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC8& CMceCodec::SdpName() const
+ {
+ return iSdpName;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceCodec::MMFPriority() const
+ {
+ return iMMFPriority;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceCodec::MMFPriorityPreference() const
+ {
+ return iMMFPriorityPreference;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint8 CMceCodec::KeepAliveTimer() const
+ {
+ return iKeepAliveTimer;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint8 CMceCodec::KeepAlivePayloadType() const
+ {
+ return iKeepAlivePayloadType;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC8& CMceCodec::KeepAliveData() const
+ {
+ return iKeepAliveData;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceCodec::Preference() const
+ {
+ return iPreference;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceCodec::SetPreferenceL( TInt aPreference )
+ {
+ iPreference = aPreference;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMceCodec::SetSdpNameL( const TDesC8& aSdpName )
+ {
+ iSdpName = aSdpName;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMceCodec::CMceCodec()
+ {
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcedisplaysink.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,246 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+#include "mcedisplaysink.h"
+#include "mcesession.h"
+#include "mcemediastream.h"
+#include "mcemanager.h"
+#include "mccscreen.h"
+#include "muslogger.h"
+
+#include <e32std.h>
+#include <e32cmn.h>
+
+
+#define _FLAT_DATA static_cast<CMceComDisplaySink*>( iFlatData )
+#define FLAT_DATA( data ) _FLAT_DATA->data
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceDisplaySink* CMceDisplaySink::NewL( CMceManager& aManager )
+ {
+ CMceDisplaySink* self = CMceDisplaySink::NewLC( aManager );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceDisplaySink* CMceDisplaySink::NewLC( CMceManager& /*aManager*/ )
+ {
+ CMceDisplaySink* self = new (ELeave) CMceDisplaySink();
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceDisplaySink* CMceDisplaySink::NewL()
+ {
+ CMceDisplaySink* self = CMceDisplaySink::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceDisplaySink* CMceDisplaySink::NewLC()
+ {
+ CMceDisplaySink* self = new( ELeave )CMceDisplaySink();
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceDisplaySink::~CMceDisplaySink()
+ {
+ delete iScreen;
+ iScreen = 0;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceDisplaySink::EnableL()
+ {
+ MUS_LOG("CMceDisplaySink::EnableL ->")
+ CMceMediaSink::DoEnableL();
+ if ( !iScreen )
+ {
+ TPoint pos (0,0);
+ TSize area = iDisplayRect.Size();
+ TInt index = iDisplayIndex;
+ TInt windowOrdinalPosition = 2;
+ TInt windowOrdinalPriority = 1;
+ TSize viewFinderImageSize = iDisplayRect.Size();
+ MUS_LOG2("CMceDisplaySink::EnableL display rect height=%d width=%d )",area.iHeight,area.iWidth)
+ iScreen = CMccScreen::NewL( pos,area,index,windowOrdinalPosition,windowOrdinalPriority,viewFinderImageSize);
+ }
+
+ iScreen->StartL();
+ MUS_LOG("CMceDisplaySink::EnableL <-")
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceDisplaySink::DisableL()
+ {
+ MUS_LOG("CMceDisplaySink::DisableL ->")
+ CMceMediaSink::DoDisableL();
+ if( iScreen ) iScreen->Stop();
+ MUS_LOG("CMceDisplaySink::DisableL <-")
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceDisplaySink::DisplaysAvailable() const
+ {
+ return 1;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceDisplaySink::SetDisplayIndexL( TInt aDisplayIndex )
+ {
+ __ASSERT_ALWAYS( aDisplayIndex >= 0 &&
+ aDisplayIndex < this->DisplaysAvailable(),
+ User::Leave( KErrArgument ) );
+
+ iDisplayIndex = aDisplayIndex;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceDisplaySink::SetDisplay( RWindow& /*aWindow*/,
+ CWindowGc& /*aGc*/ )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceDisplaySink::SetDisplayRectL( const TRect& aRect )
+ {
+ iDisplayRect = aRect;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TRect CMceDisplaySink::DisplayRectL()
+ {
+ return iDisplayRect;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceDisplaySink::SetPriorityL( TUint aPriority )
+ {
+ iDisplayPriority = aPriority;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CMceDisplaySink::PriorityL()
+ {
+ return iDisplayPriority;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceDisplaySink::SetRotationL( TRotation aRotation )
+ {
+ iRotation = aRotation;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceDisplaySink::TRotation CMceDisplaySink::RotationL()
+ {
+ return iRotation;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMceDisplaySink::InitializeL( CMceManager* /*aManager*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink::CMceDisplaySink()
+ :CMceMediaSink(),
+ iDisplayIndex( 0 ),
+ iDisplayRect( TRect( 0, 0, 0, 0 ) ),
+ iDisplayPriority( 0 ),
+ iRotation( ENone )
+ {
+ iType = KMceDisplaySink;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcefilesink.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,98 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+
+#include "mcefilesink.h"
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceFileSink* CMceFileSink::NewL(
+ const TFileName& aFileName )
+ {
+ CMceFileSink* self = CMceFileSink::NewLC( aFileName );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceFileSink* CMceFileSink::NewLC(
+ const TFileName& aFileName )
+ {
+ CMceFileSink* self = new (ELeave) CMceFileSink();
+ CleanupStack::PushL( self );
+ self->ConstructL( aFileName );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceFileSink::~CMceFileSink()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSink::EnableL()
+ {
+ CMceMediaSink::DoEnableL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSink::DisableL()
+ {
+ CMceMediaSink::DoDisableL();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMceFileSink::CMceFileSink()
+ {
+ iType = KMceFileSink;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMceFileSink::ConstructL( const TFileName& aFileName )
+ {
+ iFileName = aFileName;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcefilesource.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,387 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+
+#include "mcefilesource.h"
+#include "mcevideostream.h"
+#include "mceaudiostream.h"
+#include "mcemanager.h"
+#include "mcesession.h"
+#include "utf.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceFileSource* CMceFileSource::NewL(
+ CMceManager& aManager,
+ const TFileName& aFileName )
+ {
+ CMceFileSource* self = CMceFileSource::NewLC( aManager, aFileName );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceFileSource* CMceFileSource::NewLC(
+ CMceManager& aManager,
+ const TFileName& aFileName )
+ {
+ CMceFileSource* self = new (ELeave) CMceFileSource();
+ CleanupStack::PushL( self );
+ self->ConstructL( &aManager, aFileName );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceFileSource::~CMceFileSource()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSource::EnableL()
+ {
+ CMceMediaSource::DoEnableL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSource::DisableL()
+ {
+ CMceMediaSource::DoDisableL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSource::UpdateL ( const TFileName& aFileName )
+ {
+ iFileName = aFileName;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceFileSource::MediaElementCountL( TMceMediaType aType ) const
+ {
+ if ( aType == KMceAudio )
+ {
+ return iAudioElementCount;
+ }
+ else if ( aType == KMceVideo )
+ {
+ return iVideoElementCount;
+ }
+ return 0;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSource::SetCurrentMediaElementL(
+ TMceMediaType aType,
+ TInt aIndex )
+ {
+ __ASSERT_ALWAYS( aIndex >= 0 &&
+ aIndex < MediaElementCountL( aType ),
+ User::Leave( KErrArgument ) );
+
+ if ( aType == KMceAudio )
+ {
+ iCurrentAudioElement = aIndex;
+ }
+ else if ( aType == KMceVideo )
+ {
+ iCurrentVideoElement = aIndex;
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceFileSource::CurrentMediaElement( TMceMediaType aType )
+ {
+ if ( aType == KMceAudio )
+ {
+ return iCurrentAudioElement;
+ }
+ else if ( aType == KMceVideo )
+ {
+ return iCurrentVideoElement;
+ }
+
+ return 0;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSource::SetPositionL(
+ const TTimeIntervalMicroSeconds& aPosition )
+ {
+ __ASSERT_ALWAYS( aPosition <= DurationL() &&
+ aPosition >= TTimeIntervalMicroSeconds( 0 ),
+ User::Leave( KErrArgument ) );
+
+ iPosition = aPosition;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TTimeIntervalMicroSeconds CMceFileSource::PositionL() const
+ {
+ return iPosition;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TTimeIntervalMicroSeconds CMceFileSource::DurationL() const
+ {
+ return iDuration;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSource::SetFastForwardL( TBool aUseFFWD )
+ {
+ __ASSERT_ALWAYS( this->MediaElementCountL( KMceVideo ) > 0,
+ User::Leave( KErrNotSupported ) );
+
+
+ iFastForward = aUseFFWD;
+
+
+ if ( iFastForward )
+ {
+ iFastRewind = EFalse;
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSource::SetFastRewindL( TBool aUseFRWD )
+ {
+ __ASSERT_ALWAYS( this->MediaElementCountL( KMceVideo ) > 0,
+ User::Leave( KErrNotSupported ) );
+
+ iFastRewind = aUseFRWD;
+
+ if ( iFastRewind )
+ {
+ iFastForward = EFalse;
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSource::TranscodeL( const TFileName& aFileName )
+ {
+ __ASSERT_ALWAYS( aFileName != KNullDesC, User::Leave( KErrArgument ) );
+
+ TBool transcodingNeeded = EFalse;
+ for ( TInt i = 0; i < iStreams.Count(); ++i )
+ {
+ if ( iStreams[i]->State() == CMceMediaStream::ETranscodingRequired )
+ {
+ transcodingNeeded = ETrue;
+ if ( iStreams[i]->Type() == KMceAudio )
+ {
+ CMceAudioStream* audio =
+ static_cast<CMceAudioStream*>(iStreams[i]);
+ __ASSERT_ALWAYS( audio->Codecs().Count() > 0,
+ User::Leave( KErrNotReady ) );
+ }
+ else
+ {
+ CMceVideoStream* video =
+ static_cast<CMceVideoStream*>(iStreams[i]);
+ __ASSERT_ALWAYS( video->Codecs().Count() > 0,
+ User::Leave( KErrNotReady ) );
+ }
+
+ iStreams[i]->iState = CMceMediaStream::ETranscoding;
+ }
+ }
+
+ __ASSERT_ALWAYS( transcodingNeeded, User::Leave( KErrNotReady ) );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceFileSource::CancelTranscodeL()
+ {
+ TBool transcodingOngoing = EFalse;
+
+ for ( TInt i = 0; i < iStreams.Count(); ++i )
+ {
+ if ( iStreams[i]->State() == CMceMediaStream::ETranscoding )
+ {
+ transcodingOngoing = ETrue;
+ iStreams[i]->iState = CMceMediaStream::ETranscodingRequired;
+ }
+ }
+
+ __ASSERT_ALWAYS( transcodingOngoing, User::Leave( KErrNotReady ) );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceFileSource::TranscodingProgressL() const
+ {
+ TBool transcodingOngoing = EFalse;
+
+ if ( iFailWithCode != KErrNone )
+ {
+ TInt failCode = iFailWithCode;
+ iFailWithCode = KErrNone;
+ User::Leave( failCode );
+ }
+
+ for ( TInt i = 0; i < iStreams.Count(); ++i )
+ {
+ if ( iStreams[i]->State() == CMceMediaStream::ETranscoding )
+ {
+ transcodingOngoing = ETrue;
+ }
+ }
+
+ __ASSERT_ALWAYS( transcodingOngoing, User::Leave( KErrNotReady ) );
+
+ return iTranscodingPercentage;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMceFileSource::InitializeL( CMceManager* aManager )
+ {
+ iDuration = TTimeIntervalMicroSeconds( 100000000 );
+
+ iAudioElementCount = 1;
+ iVideoElementCount = 1;
+
+ }
+
+// -----------------------------------------------------------------------------
+// Factory method for inner usage
+// -----------------------------------------------------------------------------
+//
+CMceFileSource* CMceFileSource::NewL()
+ {
+ CMceFileSource* self = CMceFileSource::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Factory method for inner usage
+// -----------------------------------------------------------------------------
+//
+CMceFileSource* CMceFileSource::NewLC()
+ {
+ CMceFileSource* self = new (ELeave) CMceFileSource();
+ CleanupStack::PushL( self );
+ self->ConstructL( NULL, KNullDesC() );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMceFileSource::CMceFileSource()
+ {
+ iType = KMceFileSource;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMceFileSource::ConstructL( CMceManager* aManager,
+ const TFileName& aFileName )
+ {
+
+ iFileName = aFileName;
+
+ if ( aManager )
+ {
+ InitializeL( aManager );
+ }
+
+ }
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mceh263codec.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,244 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+#include "mceh263codec.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::~CMceH263Codec
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceH263Codec::~CMceH263Codec()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceH263Codec* CMceH263Codec::NewL( TBuf8<KMceMaxSdpNameLength> aSdpName )
+ {
+ CMceH263Codec* self = NewLC( aSdpName );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceH263Codec* CMceH263Codec::NewLC( TBuf8<KMceMaxSdpNameLength> aSdpName )
+ {
+ CMceH263Codec* self = new (ELeave) CMceH263Codec();
+ CleanupStack::PushL( self );
+ self->ConstructL( aSdpName );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::SetBitrate
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceH263Codec::SetBitrate(TUint aBitrate)
+ {
+ iBitrate = aBitrate;
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::SetAllowedBitrates
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceH263Codec::SetAllowedBitrates(TUint aBitrates)
+ {
+ iAllowedBitrates = aBitrates;
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::SetCodecMode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceH263Codec::SetCodecMode(TUint aCodecMode)
+ {
+ iCodecMode = aCodecMode;
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::SetPayloadType
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceH263Codec::SetPayloadType(TUint8 aPayloadType)
+ {
+ iPayloadType = aPayloadType;
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::CloneL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceVideoCodec* CMceH263Codec::CloneL() const
+ {
+ CMceH263Codec* clone = CMceH263Codec::NewLC( iSdpName );
+
+ if ( iFmtpAttr )
+ {
+ clone->iFmtpAttr = iFmtpAttr->AllocL();
+ }
+ clone->iPayloadType = iPayloadType;
+
+ clone->iBitrate = iBitrate;
+ clone->iAllowedBitrates = iAllowedBitrates;
+ clone->iCodecMode = iCodecMode;
+ clone->iFourCC = iFourCC;
+ clone->iFrameSize = iFrameSize;
+
+ clone->iFrameRate = iFrameRate;
+ clone->iMaxBitRate = iMaxBitRate;
+ clone->iAllowedResolutions = iAllowedResolutions;
+ clone->iResolutionWidth = iResolutionWidth;
+ clone->iResolutionHeight = iResolutionHeight;
+ clone->iAllowedFrameRates = iAllowedFrameRates;
+ clone->iClockRate = iClockRate;
+
+ CleanupStack::Pop( clone );
+ return clone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceH263Codec::SetMaxBitrateL( TUint aMaxBitrate )
+ {
+ iMaxBitRate = aMaxBitrate;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceH263Codec::SetAllowedResolutionsL( TUint aResolutions )
+ {
+ iAllowedResolutions = aResolutions;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceH263Codec::SetResolutionL( TSize aResolution )
+ {
+ iResolutionWidth = aResolution.iWidth;
+ iResolutionHeight = aResolution.iHeight;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceH263Codec::SetAllowedFrameRatesL( TUint aFrameRates )
+ {
+ iAllowedFrameRates = aFrameRates;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceH263Codec::SetFrameRateL( TReal aFrameRate )
+ {
+ iFrameRate = aFrameRate;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::SetPreferredEncodingDecodingDeviceL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceH263Codec::SetPreferredEncodingDecodingDeviceL(
+ TUid /*aEncodingDecodingDevice*/ )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::SetConfigKeyL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceH263Codec::SetConfigKeyL( const TDesC8& /*aConfigKey*/ )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::SetSdpNameL
+// -----------------------------------------------------------------------------
+//
+void CMceH263Codec::SetSdpNameL( const TDesC8& aSdpName )
+ {
+ __ASSERT_ALWAYS( aSdpName.Length() <= KMceMaxSdpNameLength,
+ User::Leave( KErrArgument ) );
+ iSdpName.Copy( aSdpName );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::CMceH263Codec
+// -----------------------------------------------------------------------------
+//
+CMceH263Codec::CMceH263Codec()
+ :CMceVideoCodec()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceH263Codec::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceH263Codec::ConstructL( TBuf8<KMceMaxSdpNameLength> aSdpName )
+ {
+ iSdpName = aSdpName;
+ iClockRate = KMceH263ClockRate;
+ iFrameRate = KMceH263FrameRate;
+ iResolutionWidth = KMceH263FrameWidth;
+ iResolutionHeight = KMceH263FrameHeight;
+ }
+
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mceinsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,202 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mceinsession.h"
+#include "mcemanager.h"
+
+
+
+// CONSTANTS
+const TUint32 KMceMinAcceptable = 200;
+const TUint32 KMceMaxAcceptable = 299;
+const TUint32 KMceMinError = 300;
+const TUint32 KMceMaxError = 699;
+const TUint32 KMceRinging = 180;
+_LIT8( KMcePhraseRinging, "Ringing" );
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMceInSession::NewL
+// -----------------------------------------------------------------------------
+//
+CMceInSession* CMceInSession::NewL( RReadStream& /*aReadStream*/,
+ CMceManager& aManager,
+ TUint32 aProfileId )
+ {
+ CMceInSession* self = new (ELeave) CMceInSession( &aManager, aProfileId );
+ CleanupStack::PushL( self );
+ self->ConstructL( KNullDesC8, KNullDesC8 );
+ CleanupStack::Pop(self);
+ return self;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInSession::NewL
+// -----------------------------------------------------------------------------
+//
+
+EXPORT_C CMceInSession* CMceInSession::NewL()
+ {
+ CMceInSession* self = new (ELeave) CMceInSession( NULL, 0 );
+ CleanupStack::PushL( self );
+ self->ConstructL( KNullDesC8, KNullDesC8 );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInSession::~CMceInSession
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceInSession::~CMceInSession()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInSession::RingL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceInSession::RingL( CDesC8Array* aHeaders,
+ HBufC8* aContentType,
+ HBufC8* aContent )
+ {
+ User::LeaveIfError(
+ ( aContentType && aContent ) || !( aContentType || aContent ) ?
+ KErrNone : KErrArgument );
+
+ delete aHeaders;
+ delete aContentType;
+ delete aContent;
+
+ iRingingCalled = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInSession::AcceptL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceInSession::AcceptL()
+ {
+ iState = CMceSession::EAnswering;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInSession::AcceptL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceInSession::AcceptL( const TDesC8& /*aReason*/,
+ TUint32 /*aCode*/,
+ CDesC8Array* aHeaders,
+ HBufC8* aContentType,
+ HBufC8* aContent )
+ {
+ iState = CMceSession::EAnswering;
+
+ delete aHeaders;
+ delete aContentType;
+ delete aContent;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInSession::RejectL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceInSession::RejectL()
+ {
+ if ( iFailWithCode != KErrNone )
+ {
+ TInt failureCode = iFailWithCode;
+ iFailWithCode = KErrNone;
+ User::Leave( failureCode );
+ }
+
+ iState = CMceSession::ETerminated;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInSession::RejectL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceInSession::RejectL( const TDesC8& aReason,
+ TUint32 aCode,
+ CDesC8Array* aHeaders,
+ HBufC8* aContentType,
+ HBufC8* aContent )
+ {
+
+ User::LeaveIfError(
+ ( aContentType && aContent ) || !( aContentType || aContent ) ?
+ KErrNone : KErrArgument );
+ User::LeaveIfError( aCode >= KMceMinError && aCode <= KMceMaxError ?
+ KErrNone : KErrArgument );
+
+ RejectL();
+
+ iReasonPhrase = aReason;
+ iReasonCode = aCode;
+
+ delete aHeaders;
+ delete aContentType;
+ delete aContent;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceInSession::CMceInSession
+// -----------------------------------------------------------------------------
+//
+CMceInSession::CMceInSession( CMceManager* aManager, TUint32 aProfileId )
+ : CMceSession( aManager, aProfileId )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceInSession::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceInSession::ConstructL( const TDesC8& aOriginator, const TDesC8& aRecipient )
+ {
+
+ delete iOriginator;
+ iOriginator = 0;
+ iOriginator = aOriginator.AllocL();
+
+ delete iRecipient;
+ iRecipient = 0;
+ iRecipient = aRecipient.AllocL();
+
+ CMceSession::ConstructL();
+
+ iState = EIncoming;
+ }
+
+// -----------------------------------------------------------------------------
+// Stub constructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceInSession* CMceInSession::NewL( CMceManager& aManager,
+ const TDesC8& aOriginator )
+ {
+ CMceInSession* self = new (ELeave) CMceInSession( &aManager, 0 );
+ CleanupStack::PushL( self );
+ self->ConstructL( aOriginator, KNullDesC8 );
+ CleanupStack::Pop( self );
+ return self;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcemanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,309 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcemanager.h"
+#include "mceinsessionobserver.h"
+#include "mcesessionobserver.h"
+#include "mcesession.h"
+#include "mcetransactiondatacontainer.h"
+#include "mceamrcodec.h"
+#include "mceh263codec.h"
+#include "mceavccodec.h"
+// Test simulator
+#include "mussessionsimulator.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceManager* CMceManager::NewL(
+ const TUid& aAppUid,
+ TMceTransactionDataContainer* aContainer )
+ {
+
+ CMceManager* self =
+ new (ELeave) CMceManager( aAppUid, aContainer );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::~CMceManager
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceManager::~CMceManager()
+ {
+ if (iContainer)
+ {
+ iContainer->Clear();
+ iContainer = 0;
+ }
+
+ iSessions.Reset();
+ iSessions.Close();
+
+ iSupportedAudioCodecs.ResetAndDestroy();
+ iSupportedVideoCodecs.ResetAndDestroy();
+
+ delete iSessionSimulator;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::SetInSessionObserver
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceManager::SetInSessionObserver(
+ MMceInSessionObserver* aInSessionObserver )
+ {
+ iInSessionObserver = aInSessionObserver;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::SetInEventObserver
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceManager::SetInEventObserver(
+ MMceInEventObserver* /*aInEventObserver*/ )
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::SetInReferObserver
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceManager::SetInReferObserver(
+ MMceInReferObserver* /*aInReferObserver*/ )
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::SetSessionObserver
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceManager::SetSessionObserver(
+ MMceSessionObserver* aSessionObserver )
+ {
+ iSessionObserver = aSessionObserver;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::SetEventObserver
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceManager::SetEventObserver(
+ MMceEventObserver* /*aEventObserver*/ )
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::SetReferObserver
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceManager::SetReferObserver(
+ MMceReferObserver* /*aReferObserver*/ )
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::SetMediaObserver
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceManager::SetMediaObserver(
+ MMceStreamObserver* aMediaObserver )
+ {
+ iMediaObserver = aMediaObserver;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::SetRtpObserver
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceManager::SetRtpObserver(
+ MMceRtpObserver* aRtpObserver )
+ {
+ iRtpObserver = aRtpObserver;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::SupportedAudioCodecs
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<const CMceAudioCodec>&
+ CMceManager::SupportedAudioCodecs() const
+ {
+ return iSupportedAudioCodecs;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<const CMceVideoCodec>&
+ CMceManager::SupportedVideoCodecs() const
+ {
+ return iSupportedVideoCodecs;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::Sessions
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<CMceSession>& CMceManager::Sessions() const
+ {
+ return iSessions;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::SetDefaultHeadersL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceManager::SetDefaultHeadersL( CDesC8Array* aMethods,
+ CDesC8Array* aHeaders )
+ {
+ delete aMethods;
+ delete aHeaders;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::DefaultHeadersL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CDesC8Array* CMceManager::DefaultHeadersL( const TDesC8& /*aMethod*/ ) const
+ {
+ return NULL;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::InSessionObserver
+// -----------------------------------------------------------------------------
+//
+MMceInSessionObserver* CMceManager::InSessionObserver() const
+ {
+ return iInSessionObserver;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::SessionObserver
+// -----------------------------------------------------------------------------
+//
+MMceSessionObserver* CMceManager::SessionObserver() const
+ {
+ return iSessionObserver;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::MediaObserver
+// -----------------------------------------------------------------------------
+//
+MMceStreamObserver* CMceManager::MediaObserver() const
+ {
+ return iMediaObserver;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::RtpObserver
+// -----------------------------------------------------------------------------
+//
+MMceRtpObserver* CMceManager::RtpObserver() const
+ {
+ return iRtpObserver;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::TransactionContainer
+// -----------------------------------------------------------------------------
+//
+TMceTransactionDataContainer* CMceManager::TransactionContainer() const
+ {
+ return iContainer;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::CMceManager
+// -----------------------------------------------------------------------------
+//
+CMceManager::CMceManager( const TUid& /*aAppUid*/,
+ TMceTransactionDataContainer* aContainer )
+ :iContainer( aContainer )
+ {
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceManager::ConstructL()
+ {
+ // Fake having PCMU codec
+ iSupportedAudioCodecs.AppendL( CMceAmrCodec::NewLC( KMceSDPNamePCMU() ) );
+ CleanupStack::Pop();
+
+ iSupportedAudioCodecs.AppendL( CMceAmrCodec::NewLC( KMceSDPNameAMR() ) );
+ CleanupStack::Pop();
+
+ // Avc codec, level default 1
+ iSupportedVideoCodecs.AppendL( CMceAvcCodec::NewLC( KMceSDPNameH264() ) );
+ CleanupStack::Pop();
+
+ // Avc codec, level default 1, no profile id or constraint set defined
+ CMceVideoCodec* avc_2nd_Level_1 = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ avc_2nd_Level_1->SetAllowedBitrates( KMceAvcBitrateLevel1 );
+ iSupportedVideoCodecs.AppendL( avc_2nd_Level_1 );
+ CleanupStack::Pop( avc_2nd_Level_1 );
+
+ // Avc codec, level 1_3
+ CMceVideoCodec* avcLevel_1_3 = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ avcLevel_1_3->SetAllowedBitrates( KMceAvcCodecProfileIdBaseline |
+ KMceAvcCodecProfileIopConstraintSet |
+ KMceAvcBitrateLevel1_3 );
+ iSupportedVideoCodecs.AppendL( avcLevel_1_3 );
+ CleanupStack::Pop( avcLevel_1_3 );
+
+ // H263 codec
+ iSupportedVideoCodecs.AppendL( CMceH263Codec::NewLC( KMceSDPNameH2632000() ) );
+ CleanupStack::Pop();
+
+ // Test simulator
+ iSessionSimulator = CMusTestSessionSimulator::NewL( *this );
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcemediasink.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,117 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcemediasink.h"
+#include "mcestreamobserver.h"
+#include "mcesession.h"
+#include "mcemanager.h"
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSink::~CMceMediaSink
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceMediaSink::~CMceMediaSink()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaSink::Type
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TMceSinkType CMceMediaSink::Type() const
+ {
+ return iType;
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSink::IsEnabled
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CMceMediaSink::IsEnabled() const
+ {
+ return iIsEnabled;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSink::CMceMediaSink
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink::CMceMediaSink()
+ :iIsEnabled( ETrue ),
+ iReferenceCount( 0 )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSink::DoEnableL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaSink::DoEnableL()
+ {
+ iIsEnabled = ETrue;
+ }
+
+
+// --------------------------------------- --------------------------------------
+// CMceMediaSink::DoDisableL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaSink::DoDisableL()
+ {
+ iIsEnabled = EFalse;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSink::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaSink::InitializeL( CMceMediaStream& aParent )
+ {
+ iStream = &aParent;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSink::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaSink::InitializeL( CMceManager* /*aManager*/ )
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSink::ReferenceCount
+// -----------------------------------------------------------------------------
+//
+TInt& CMceMediaSink::ReferenceCount()
+ {
+ return iReferenceCount;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcemediasource.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,118 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcemediasource.h"
+#include "mcesession.h"
+#include "mcemanager.h"
+#include "mcestreamobserver.h"
+
+
+
+#define _FLAT_DATA static_cast<CMceComMediaSource*>( iFlatData )
+#define FLAT_DATA( data ) _FLAT_DATA->data
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSource::~CMceMediaSource
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceMediaSource::~CMceMediaSource()
+ {
+ iStreams.Reset();
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaSource::Type
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TMceSourceType CMceMediaSource::Type() const
+ {
+ return iType;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSource::IsEnabled
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CMceMediaSource::IsEnabled() const
+ {
+ return iIsEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaSource::ReferenceCount
+// -----------------------------------------------------------------------------
+//
+TInt& CMceMediaSource::ReferenceCount()
+ {
+ return iReferenceCount;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaSource::CMceMediaSource
+// -----------------------------------------------------------------------------
+//
+CMceMediaSource::CMceMediaSource()
+ :iIsEnabled( ETrue )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSource::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaSource::InitializeL( CMceMediaStream& aParent )
+ {
+ iStreams.AppendL( &aParent );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSource::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaSource::InitializeL( CMceManager* /*aManager*/ )
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaSource::DoEnableL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaSource::DoEnableL()
+ {
+ iIsEnabled = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaSource::DoDisableL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaSource::DoDisableL()
+ {
+
+ iIsEnabled = EFalse;
+
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcemediastream.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,401 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcemediastream.h"
+#include "mcesession.h"
+#include "mcemanager.h"
+#include "mcestreamobserver.h"
+#include "mcemediasource.h"
+#include "mcemediasink.h"
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::~CMceMediaStream
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceMediaStream::~CMceMediaStream()
+ {
+ delete iMediaSDPLines;
+
+ if ( iSource )
+ {
+ DeleteSource();
+ }
+
+ if ( iLinkOwner )
+ {
+ delete iLinkedStream;
+ }
+
+ while( iSinks.Count() > 0 )
+ {
+ DeleteSink( 0 );
+ }
+
+ iSinks.Reset();
+ iSinks.Close();
+
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceMediaStream::TState CMceMediaStream::State() const
+ {
+ return iState;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::Type
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TMceMediaType CMceMediaStream::Type() const
+ {
+ return iType;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMediaStream::SetMediaAttributeLinesL(
+ CDesC8Array* aMediaSDPLines )
+ {
+ delete iMediaSDPLines;
+ iMediaSDPLines = aMediaSDPLines;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C MDesC8Array* CMceMediaStream::MediaAttributeLinesL()
+ {
+ if ( iMediaSDPLines )
+ {
+ CDesC8Array* array = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ CleanupStack::PushL( array );
+ for ( TInt i = 0; i < iMediaSDPLines->Count(); ++i )
+ {
+ array->AppendL( iMediaSDPLines->MdcaPoint(i) );
+ }
+ CleanupStack::Pop( array );
+ return array;
+ }
+
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::SetStartMediaPort
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMediaStream::SetLocalMediaPortL( TUint aLocalMediaPort )
+ {
+ iLocalMediaPort = aLocalMediaPort;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::StartMediaPort
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CMceMediaStream::LocalMediaPort() const
+ {
+ return iLocalMediaPort;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::Session
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceSession* CMceMediaStream::Session() const
+ {
+ return iSession;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::EnableL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMediaStream::EnableL()
+ {
+ iIsEnabled = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::DisableL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMediaStream::DisableL()
+ {
+ iIsEnabled = EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::IsEnabled
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CMceMediaStream::IsEnabled() const
+ {
+ return iIsEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::SetSourceL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMediaStream::SetSourceL( CMceMediaSource* aSource )
+ {
+ if ( aSource )
+ {
+ aSource->ReferenceCount()++;
+ }
+
+ if ( iSource )
+ {
+ DeleteSource();
+ }
+ iSource = aSource;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::AddSinkL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMediaStream::AddSinkL( CMceMediaSink* aSink )
+ {
+ __ASSERT_ALWAYS( aSink, User::Leave( KErrArgument ) );
+ iSinks.AppendL( aSink );
+ aSink->ReferenceCount()++;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::Source
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceMediaSource* CMceMediaStream::Source() const
+ {
+ return iSource;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::Sinks
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<CMceMediaSink>& CMceMediaStream::Sinks() const
+ {
+ return iSinks;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::RemoveSinkL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMediaStream::RemoveSinkL( CMceMediaSink& aSink )
+ {
+ for ( TInt i = 0; i < iSinks.Count(); i++ )
+ {
+ if ( iSinks[i] == &aSink )
+ {
+ DeleteSink( i );
+ iSinks.Compress();
+ return;
+ }
+ }
+ User::Leave( KErrNotFound );
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::BindL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceMediaStream::BindL( CMceMediaStream* aStream )
+ {
+
+ __ASSERT_ALWAYS( !(! iLinkOwner &&
+ iLinkedStream ),
+ User::Leave( KErrArgument ) );
+
+ if ( aStream )
+ {
+ iLinkOwner = ETrue;
+ aStream->DoBindL( this );
+ DoBindL( aStream );
+ }
+ else
+ {
+ iLinkOwner = EFalse;
+ delete iLinkedStream;
+ iLinkedStream = NULL;
+ }
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::BoundStreamL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceMediaStream& CMceMediaStream::BoundStreamL() const
+ {
+ __ASSERT_ALWAYS( iLinkedStream , User::Leave( KErrNotFound ) );
+
+ return *iLinkedStream;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::BoundStream
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CMceMediaStream::BoundStream() const
+ {
+ return iLinkedStream != NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::Binder
+// -----------------------------------------------------------------------------
+//
+TBool CMceMediaStream::Binder() const
+ {
+ return iLinkOwner;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaStream::InitializeL( CMceSession& aParent )
+ {
+ iSession = &aParent;
+
+ if ( Binder() && BoundStream() )
+ {
+ iLinkedStream->InitializeL( aParent );
+ }
+
+ if ( iSource )
+ {
+ iSource->InitializeL( *this );
+ }
+
+ for( TInt i = 0; i < iSinks.Count();i++)
+ {
+ iSinks[i]->InitializeL( *this );
+ }
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaStream::InitializeL( CMceManager* aManager )
+ {
+ if ( Binder() && BoundStream() )
+ {
+ iLinkedStream->InitializeL( aManager );
+ }
+
+ if ( iSource )
+ {
+ iSource->InitializeL( aManager );
+ }
+
+ for( TInt i = 0; i < iSinks.Count();i++)
+ {
+ iSinks[i]->InitializeL( aManager );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::CMceMediaStream
+// -----------------------------------------------------------------------------
+//
+CMceMediaStream::CMceMediaStream()
+ :iLinkedStream( NULL ),
+ iSource( NULL ),
+ iLinkOwner( EFalse ),
+ iIsEnabled( ETrue ),
+ iState( CMceMediaStream::EUninitialized )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::DeleteSink
+// -----------------------------------------------------------------------------
+//
+void CMceMediaStream::DeleteSink( TInt aIndex )
+ {
+
+ iSinks[ aIndex ]->ReferenceCount()--;
+ if ( iSinks[ aIndex ]->ReferenceCount() == 0 )
+ {
+ delete iSinks[ aIndex ];
+ }
+ iSinks.Remove( aIndex );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::DeleteSource
+// -----------------------------------------------------------------------------
+//
+void CMceMediaStream::DeleteSource()
+ {
+ iSource->ReferenceCount()--;
+ if ( iSource->ReferenceCount() == 0 )
+ {
+ delete iSource;
+ }
+ iSource = NULL;
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// CMceMediaStream::DoBindL
+// -----------------------------------------------------------------------------
+//
+void CMceMediaStream::DoBindL( CMceMediaStream* aStream )
+ {
+ if ( Session() )
+ {
+ aStream->InitializeL( *Session() );
+ }
+ delete iLinkedStream;
+ iLinkedStream = aStream;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mceoutsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,191 @@
+/*
+* 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:
+*
+*/
+
+
+#include <sipprofile.h>
+#include <e32cmn.h>
+#include "mceoutsession.h"
+#include "mcemediastream.h"
+#include "mcemanager.h"
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceOutSession::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceOutSession* CMceOutSession::NewL(
+ CMceManager& aManager,
+ CSIPProfile& aProfile,
+ const TDesC8& aRecipient,
+ HBufC8* aOriginator )
+ {
+ // Check that profile has been registered
+ TBool profileRegistered = EFalse;
+
+ aProfile.GetParameter( KSIPProfileRegistered, profileRegistered );
+ __ASSERT_ALWAYS( profileRegistered, User::Leave( KErrCouldNotConnect ) );
+
+ CMceOutSession* self = new (ELeave) CMceOutSession( &aManager, 0 );
+ CleanupStack::PushL( self );
+ self->ConstructL( aRecipient, aOriginator );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceOutSession::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceOutSession* CMceOutSession::NewL( CMceEvent& /*aEvent*/ )
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceOutSession::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceOutSession* CMceOutSession::NewL( CMceRefer& /*aRefer*/ )
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceOutSession::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceOutSession* CMceOutSession::NewL()
+ {
+ return new( ELeave )CMceOutSession( NULL, 0 );
+ }
+
+// -----------------------------------------------------------------------------
+// CMceOutSession::~CMceOutSession
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceOutSession::~CMceOutSession()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceOutSession::EstablishL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceOutSession::EstablishL(
+ TUint32 aTimeout,
+ CDesC8Array* aHeaders,
+ HBufC8* aContentType,
+ HBufC8* aContent,
+ CDesC8Array* aContentHeaders )
+ {
+ User::LeaveIfError( State() == EIdle ? KErrNone : KErrNotReady );
+ User::LeaveIfError(
+ ( aContentType && aContent ) ||
+ !( aContentType || aContent || aContentHeaders ) ?
+ KErrNone : KErrArgument );
+
+ if ( iFailWithCode != KErrNone )
+ {
+ TInt failCode = iFailWithCode;
+ iFailWithCode = KErrNone;
+ User::Leave( failCode );
+ }
+
+ iTimeout = aTimeout;
+
+ //start establishing the session
+
+ delete iHeaders;
+ iHeaders = aHeaders;
+ delete aContentType;
+ delete aContent;
+ delete aContentHeaders;
+
+ iState = CMceSession::EOffering;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceOutSession::AddStreamL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceOutSession::AddStreamL( CMceMediaStream* aMediaStream )
+ {
+ if ( iManager )
+ {
+ //initialize stream (to get supported codecs)
+ aMediaStream->InitializeL( iManager );
+ }
+ else
+ {
+ //internalizing => no initialize yet
+ }
+
+ CMceSession::AddStreamL( aMediaStream );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceOutSession::CancelL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceOutSession::CancelL()
+ {
+ User::LeaveIfError( State() != EIdle ? KErrNone : KErrNotReady );
+
+ iState = CMceSession::ECancelling;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceOutSession::CMceOutSession
+// -----------------------------------------------------------------------------
+//
+CMceOutSession::CMceOutSession( CMceManager* aManager, TUint32 aProfileId )
+ : CMceSession( aManager, aProfileId )
+ {
+ //NOP
+ }
+
+// -----------------------------------------------------------------------------
+// CMceOutSession::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceOutSession::ConstructL( const TDesC8& aRecipient, HBufC8* aOriginator )
+ {
+ delete iRecipient;
+ iRecipient = NULL;
+ iRecipient = aRecipient.AllocL();
+
+ delete iOriginator;
+ iOriginator = NULL;
+ if ( aOriginator )
+ {
+ iOriginator = aOriginator->AllocL();
+ delete aOriginator;
+ }
+
+ CMceSession::ConstructL();
+ iManager->iSessions.AppendL( this );
+
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcertpsink.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,152 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcertpsink.h"
+#include "mcemediastream.h"
+#include "mcesession.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceRtpSink* CMceRtpSink::NewL()
+ {
+ CMceRtpSink* self = NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceRtpSink* CMceRtpSink::NewLC()
+ {
+ CMceRtpSink* self = new (ELeave) CMceRtpSink();
+ CleanupStack::PushL( self );
+ self->ConstructL( EFalse );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceRtpSink* CMceRtpSink::NewL( TBool aSuppressRTCP,
+ HBufC8* /*aIdentity*/ )
+ {
+
+ CMceRtpSink* self = new (ELeave) CMceRtpSink();
+ CleanupStack::PushL( self );
+ self->ConstructL( aSuppressRTCP );
+ CleanupStack::Pop( self );
+ return self;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::~CMceRtpSink
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceRtpSink::~CMceRtpSink()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::EnableL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSink::EnableL()
+ {
+ CMceMediaSink::DoEnableL();
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::DisableL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSink::DisableL()
+ {
+ CMceMediaSink::DoDisableL();
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::SendSRL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSink::SendSRL()
+ {
+ __ASSERT_ALWAYS( iStream &&
+ iStream->Session() &&
+ iStream->Session()->State() != CMceSession::EIdle &&
+ iStream->Session()->State() != CMceSession::EIncoming,
+ User::Leave( KErrNotReady ) );
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::LastPacket
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CMceRtpSink::LastPacket() const
+ {
+ return iLastPacket;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::Ssrc
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CMceRtpSink::Ssrc() const
+ {
+ return iSSRC;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::UpdateL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSink::UpdateL( TBool aSuppressRTCP,
+ HBufC8* /*aIdentity*/ )
+ {
+ iSuppressRTCP = aSuppressRTCP;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::CMceRtpSink
+// -----------------------------------------------------------------------------
+//
+CMceRtpSink::CMceRtpSink()
+ : CMceMediaSink()
+ {
+ iType = KMceRTPSink;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSink::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceRtpSink::ConstructL( TBool aSuppressRTCP )
+ {
+ iSuppressRTCP = aSuppressRTCP;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcertpsource.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,223 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcertpsource.h"
+#include "mcesession.h"
+#include "mcemanager.h"
+#include "mcemediastream.h"
+#include "mcertpobserver.h"
+
+#define KMceTIMERDISABLED 0
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceRtpSource* CMceRtpSource::NewL(
+ TUint aBufferLength,
+ TUint aBufferTreshold,
+ TUint32 aInactivityTimer,
+ HBufC8* aIdentity )
+ {
+ CMceRtpSource* self = NewLC( aBufferLength, aBufferTreshold,
+ aInactivityTimer, aIdentity );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceRtpSource* CMceRtpSource::NewLC(
+ TUint aBufferLength,
+ TUint aBufferTreshold,
+ TUint32 aInactivityTimer,
+ HBufC8* /*aIdentity*/ )
+ {
+ CMceRtpSource* self = new (ELeave) CMceRtpSource();
+ CleanupStack::PushL( self );
+ self->ConstructL( aBufferLength, aBufferTreshold,
+ aInactivityTimer, NULL );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::~CMceRtpSource
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceRtpSource::~CMceRtpSource()
+ {
+ delete iMediaBurstIndicator;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::EnableL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSource::EnableL()
+ {
+ CMceMediaSource::DoEnableL();
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::DisableL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSource::DisableL()
+ {
+ CMceMediaSource::DoDisableL();
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::EnableInactivityTimerL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSource::EnableInactivityTimerL( TUint32 aInactivityTimer )
+ {
+ // Simulate MCE's check
+ if ( iStreams[0] &&
+ iStreams[0]->Session() &&
+ iStreams[0]->Session()->State() != CMceSession::EIdle &&
+ iStreams[0]->Session()->State() != CMceSession::EIncoming )
+ {
+ iInactivityTimer = aInactivityTimer;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::DisableInactivityTimer
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSource::DisableInactivityTimerL()
+ {
+ iInactivityTimer = KMceTIMERDISABLED;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::UpdateL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSource::UpdateL (
+ TUint aBufferLength,
+ TUint aBufferTreshold,
+ TUint32 aInactivityTimer,
+ HBufC8* /*aIdentity*/ )
+ {
+ iInactivityTimer = aInactivityTimer;
+ iBufferLength = aBufferLength;
+ iBufferTreshold = aBufferTreshold;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::SendRRL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSource::SendRRL()
+ {
+ __ASSERT_ALWAYS( iStreams[0] &&
+ iStreams[0]->Session() &&
+ iStreams[0]->Session()->State() != CMceSession::EIdle &&
+ iStreams[0]->Session()->State() != CMceSession::EIncoming,
+ User::Leave( KErrNotReady ) );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CMceRtpSource::Ssrc() const
+ {
+ return 0;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RArray<TUint>& CMceRtpSource::Ssrcs() const
+ {
+ return iSsrcs;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSource::EnableSsrcL( TUint /*aSsrc*/ )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceRtpSource::DisableSsrcL( TUint /*aSsrc*/ )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CMceRtpSource::IsSsrcEnabledL( TUint /*aSsrc*/ )
+ {
+ return ETrue;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::CMceRtpSource
+// -----------------------------------------------------------------------------
+//
+CMceRtpSource::CMceRtpSource()
+ : CMceMediaSource()
+ {
+ iType = KMceRTPSource;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceRtpSource::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceRtpSource::ConstructL(
+ TUint aBufferLength,
+ TUint aBufferTreshold,
+ TUint32 aInactivityTimer,
+ HBufC8* aMediaBurstIndicator )
+ {
+
+ iInactivityTimer = aInactivityTimer;
+ iBufferLength = aBufferLength;
+ iBufferTreshold = aBufferTreshold;
+ iMediaBurstIndicator = aMediaBurstIndicator;
+
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,413 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcesession.h"
+//#include "mceinsession.h"
+#include "mcemanager.h"
+#include "mcestreambundle.h"
+#include "mcemediastream.h"
+#include "mceinsessionobserver.h"
+#include "mcesessionobserver.h"
+#include "mcestreamobserver.h"
+#include "mcertpobserver.h"
+#include "mcetransactiondatacontainer.h"
+#include "mussessionsimulator.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::~CMceSession
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceSession::~CMceSession()
+ {
+ delete iHeaders;
+ delete iSessionSDPLines;
+
+ delete iOriginator;
+ delete iRecipient;
+ iMediaStreams.ResetAndDestroy();
+ iBundles.ResetAndDestroy();
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::State
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceSession::TState CMceSession::State() const
+ {
+ return iState;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::ConnectionActive
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CMceSession::ConnectionActive() const
+ {
+ return iIsConnectionActive;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::RemoveStreamL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSession::RemoveStreamL( CMceMediaStream& aMediaStream )
+ {
+ for ( TInt i = 0; i < iMediaStreams.Count(); ++i )
+ {
+ if ( &aMediaStream == iMediaStreams[i] )
+ {
+ delete iMediaStreams[i];
+ iMediaStreams.Remove( i );
+ return;
+ }
+ }
+
+ User::Leave( KErrNotFound );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::AddStreamL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSession::AddStreamL( CMceMediaStream* aMediaStream )
+ {
+ User::LeaveIfError( iMediaStreams.Find( aMediaStream ) != KErrNotFound ?
+ KErrArgument : KErrNone );
+
+ aMediaStream->InitializeL( *this ); // Initialize before taking ownership
+
+ iMediaStreams.AppendL( aMediaStream );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::UpdateL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSession::UpdateL(
+ TUint32 aTimeout,
+ CDesC8Array* aHeaders,
+ HBufC8* aContentType,
+ HBufC8* aContent,
+ CDesC8Array* aContentHeaders )
+ {
+ User::LeaveIfError( iState != EIdle ? KErrNone : KErrNotReady );
+ User::LeaveIfError(
+ ( aContentType && aContent ) ||
+ !( aContentType || aContent || aContentHeaders ) ?
+ KErrNone : KErrArgument );
+
+ // Leave if in incoming state givem too small timeout value
+ User::LeaveIfError( !( aTimeout > 0 && State() == CMceSession::EIncoming ) ||
+ aTimeout <= SessionTimer() ? KErrNone : KErrArgument );
+
+ InitializeL();
+
+ iTimeout = aTimeout;
+
+ delete iHeaders;
+ iHeaders = aHeaders;
+ delete aContentType;
+ delete aContentHeaders;
+
+ if ( iState == EIncoming )
+ {
+ iState = EReserving;
+ RestartSimulator();
+ }
+ else
+ {
+ iState = EOffering;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSession::InitializeL
+// -----------------------------------------------------------------------------
+//
+/*
+void CMceSession::InitializeL()
+ {
+ for(int i=0; i<iMediaStreams.Count();i++)
+ {
+ iMediaStreams[i]->InitializeL( *this );
+ }
+ }
+ */
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::TerminateL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSession::TerminateL( CDesC8Array* aHeaders,
+ HBufC8* aContentType,
+ HBufC8* aContent )
+ {
+ __ASSERT_ALWAYS( iState != CMceSession::EIdle, User::Leave( KErrNotReady ) );
+
+ delete iHeaders;
+ iHeaders = aHeaders;
+ delete aContentType;
+ delete aContent;
+
+ iState = CMceSession::ETerminating;
+ RestartSimulator();
+
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::Streams
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<CMceMediaStream>& CMceSession::Streams() const
+ {
+ return iMediaStreams;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::Recipient
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC8& CMceSession::Recipient() const
+ {
+ return *iRecipient;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSession::Originator
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC8& CMceSession::Originator() const
+ {
+ return *iOriginator;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSession::SetSessionSDPLinesL( CDesC8Array* aSessionSDPLines )
+ {
+ delete iSessionSDPLines;
+ iSessionSDPLines = aSessionSDPLines;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C MDesC8Array* CMceSession::SessionSDPLinesL()
+ {
+ if ( iSessionSDPLines )
+ {
+ CDesC8Array* array = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ CleanupStack::PushL( array );
+ for ( TInt i = 0; i < iSessionSDPLines->Count(); ++i )
+ {
+ array->AppendL( iSessionSDPLines->MdcaPoint(i) );
+ }
+ CleanupStack::Pop( array );
+ return array;
+ }
+
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CMceSession::SessionTimer() const
+ {
+ return iTimeout;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSession::AddBundleL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSession::AddBundleL( CMceStreamBundle* aBundle )
+ {
+ iBundles.AppendL( aBundle );
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSession::RemoveBundleL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSession::RemoveBundleL( CMceStreamBundle& aBundle )
+ {
+ TInt index = iBundles.Find( &aBundle );
+ User::LeaveIfError( index );
+ iBundles.Remove( index );
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSession::Bundles
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray< CMceStreamBundle >& CMceSession::Bundles() const
+ {
+ return iBundles;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSession::GetModifierL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSession::GetModifierL( TMceSessionModifier aModifier,
+ TUint& aValue ) const
+ {
+ if ( aModifier == KMcePreconditions )
+ {
+ if ( iForceInternetSignaling )
+ {
+ aValue = KMcePreconditionsNotUsed;
+ }
+ else
+ {
+ aValue = KMcePreconditionsSupported;
+ }
+ return;
+ }
+ User::Leave( KErrNotFound );
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSession::SetModifierL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSession::SetModifierL( TMceSessionModifier aModifier,
+ TUint aValue )
+ {
+ if ( aModifier == KMcePreconditions )
+ {
+ if ( aValue == KMcePreconditionsNotUsed )
+ {
+ iForceInternetSignaling = ETrue;
+ }
+ else
+ {
+ iForceInternetSignaling = EFalse;
+ }
+ return;
+ }
+ else if ( aModifier == KMce100Rel )
+ {
+ if ( aValue >= 0 && aValue <= 2 )
+ {
+ i100RelUsage = aValue;
+ return;
+ }
+ }
+ User::LeaveIfError( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSession::Profile
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CMceSession::Profile() const
+ {
+ return iProfileId;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSession::CMceSession
+// -----------------------------------------------------------------------------
+//
+CMceSession::CMceSession( CMceManager* aManager, TUint32 aProfileId )
+ : iProfileId( aProfileId ),
+ iManager( aManager ),
+ iState( CMceSession::EIdle),
+ iIsConnectionActive( ETrue ),
+ iForceInternetSignaling( EFalse ),
+ i100RelUsage( 1 ), // MCE default
+ iFailWithCode( KErrNone ),
+ iReasonPhrase( KNullDesC8() ),
+ iReasonCode( 0 )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::Manager
+// -----------------------------------------------------------------------------
+//
+CMceManager& CMceSession::Manager() const
+ {
+ return *iManager;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceSession::ConstructL()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSession::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceSession::InitializeL()
+ {
+ for (int i=0; i<iMediaStreams.Count();i++)
+ {
+ iMediaStreams[i]->InitializeL( *this );
+ }
+
+ /*
+ for(int i=0; i<iBundles.Count();i++)
+ {
+ iBundles[i]->InitializeL( *this );
+ }
+ */
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceSession::RestartSimulator
+// -----------------------------------------------------------------------------
+//
+void CMceSession::RestartSimulator()
+ {
+ if( iManager->iSessionSimulator->IsRunning())
+ {
+ iManager->iSessionSimulator->Stop();
+ }
+ iManager->iSessionSimulator->StartL();
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcespeakersink.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,175 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcespeakersink.h"
+#include "mcesession.h"
+#include "mcemediastream.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+const TInt KMceMaxVolume = 10;
+
+// -----------------------------------------------------------------------------
+// CMceSpeakerSink::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceSpeakerSink* CMceSpeakerSink::NewL()
+ {
+ CMceSpeakerSink* self = NewLC();
+ CleanupStack::Pop( self );
+ return self;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSpeakerSink::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceSpeakerSink* CMceSpeakerSink::NewLC()
+ {
+ CMceSpeakerSink* self = new (ELeave) CMceSpeakerSink();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSpeakerSink::~CMceSpeakerSink
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceSpeakerSink::~CMceSpeakerSink()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSpeakerSink::EnableL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSpeakerSink::EnableL()
+ {
+ CMceMediaSink::DoEnableL();
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSpeakerSink::Disable
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSpeakerSink::DisableL()
+ {
+ CMceMediaSink::DoDisableL();
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSpeakerSink::SetVolumeL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSpeakerSink::SetVolumeL(TInt aVolume)
+ {
+ __ASSERT_ALWAYS( iStream &&
+ iStream->Session() &&
+ iStream->Session()->State() != CMceSession::EIdle &&
+ iStream->Session()->State() != CMceSession::EIncoming,
+ User::Leave( KErrNotReady ) );
+
+ __ASSERT_ALWAYS( aVolume <= MaxVolumeL() &&
+ aVolume > 0,
+ User::Leave( KErrArgument ) );
+ iVolume = aVolume;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSpeakerSink::VolumeL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceSpeakerSink::VolumeL() const
+ {
+ __ASSERT_ALWAYS( iStream &&
+ iStream->Session() &&
+ iStream->Session()->State() != CMceSession::EIdle &&
+ iStream->Session()->State() != CMceSession::EIncoming,
+ User::Leave( KErrNotReady ) );
+
+ return iVolume;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSpeakerSink::MaxVolumeL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceSpeakerSink::MaxVolumeL() const
+ {
+ __ASSERT_ALWAYS( iStream &&
+ iStream->Session() &&
+ iStream->Session()->State() != CMceSession::EIdle &&
+ iStream->Session()->State() != CMceSession::EIncoming,
+ User::Leave( KErrNotReady ) );
+
+ return iMaxVolume;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceSpeakerSink::SetRoutingL( TInt aRoute )
+ {
+ __ASSERT_ALWAYS( iStream &&
+ iStream->Session() &&
+ iStream->Session()->State() != CMceSession::EIdle &&
+ iStream->Session()->State() != CMceSession::EIncoming,
+ User::Leave( KErrNotReady ) );
+
+ iAudioRouting = aRoute;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CMceSpeakerSink::RoutingL() const
+ {
+ __ASSERT_ALWAYS( iStream &&
+ iStream->Session() &&
+ iStream->Session()->State() != CMceSession::EIdle &&
+ iStream->Session()->State() != CMceSession::EIncoming,
+ User::Leave( KErrNotReady ) );
+
+ return iAudioRouting;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSpeakerSink::CMceSpeakerSink
+// -----------------------------------------------------------------------------
+//
+CMceSpeakerSink::CMceSpeakerSink()
+ {
+ iType = KMceSpeakerSink;
+ iMaxVolume = KMceMaxVolume;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceSpeakerSink::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceSpeakerSink::ConstructL()
+ {
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcestreambundle.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,124 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcestreambundle.h"
+#include "mcesession.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMceStreamBundle::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceStreamBundle* CMceStreamBundle::NewL( TMceStreamBundleType aType )
+ {
+ CMceStreamBundle* self = NewLC( aType );
+ CleanupStack::Pop( self );
+ return self;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceStreamBundle::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceStreamBundle* CMceStreamBundle::NewLC( TMceStreamBundleType aType )
+ {
+ CMceStreamBundle* self = new (ELeave) CMceStreamBundle();
+ CleanupStack::PushL( self );
+ self->ConstructL( aType );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceStreamBundle::~CMceStreamBundle
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceStreamBundle::~CMceStreamBundle()
+ {
+ iStreams.Close();
+ iTempStreams.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CMceStreamBundle::Type
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceStreamBundle::TMceStreamBundleType CMceStreamBundle::Type() const
+ {
+ return iBundleType;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceStreamBundle::AddStreamL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceStreamBundle::AddStreamL( CMceMediaStream& aStream )
+ {
+ iStreams.AppendL( &aStream );
+ }
+
+// -----------------------------------------------------------------------------
+// CMceStreamBundle::RemoveStreamL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceStreamBundle::RemoveStreamL( CMceMediaStream& aStream )
+ {
+ TInt index = iStreams.Find( &aStream );
+ User::LeaveIfError( index );
+ iStreams.Remove( index );
+ }
+
+// -----------------------------------------------------------------------------
+// CMceStreamBundle::Streams
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray< CMceMediaStream >& CMceStreamBundle::Streams()
+ {
+ return iStreams;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceStreamBundle::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceStreamBundle::InitializeL( CMceSession& aParent )
+ {
+ iSession = &aParent;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceStreamBundle::CMceStreamBundle
+// -----------------------------------------------------------------------------
+//
+CMceStreamBundle::CMceStreamBundle()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMceStreamBundle::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMceStreamBundle::ConstructL( CMceStreamBundle::TMceStreamBundleType aType )
+ {
+ iBundleType = aType;
+
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcetransactiondatacontainer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,181 @@
+/*
+* Copyright (c) 2002-2004 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:
+*
+*/
+
+
+#include "mcetransactiondatacontainer.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::GetStatusCode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TMceTransactionDataContainer::TMceTransactionDataContainer() :
+ iStatusCode(0),
+ iReasonPhrase(0),
+ iHeaders(0),
+ iContentType(0),
+ iContentHeaders(0),
+ iContent(0)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::GetStatusCode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt TMceTransactionDataContainer::GetStatusCode()
+ {
+ TInt tmpStatusCode = iStatusCode;
+ iStatusCode = 0;
+ return tmpStatusCode;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::GetReasonPhrase
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* TMceTransactionDataContainer::GetReasonPhrase()
+ {
+ HBufC8* tmpReasonPhrase = iReasonPhrase;
+ iReasonPhrase = 0;
+ return tmpReasonPhrase;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::GetHeaders
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CDesC8Array* TMceTransactionDataContainer::GetHeaders()
+ {
+ CDesC8Array* tmpHeaders = iHeaders;
+ iHeaders = 0;
+ return tmpHeaders;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::GetContentType
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* TMceTransactionDataContainer::GetContentType()
+ {
+ HBufC8* tmpContentType = iContentType;
+ iContentType = 0;
+ return tmpContentType;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::GetHeaders
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CDesC8Array* TMceTransactionDataContainer::GetContentHeaders()
+ {
+ CDesC8Array* tmpHeaders = iContentHeaders;
+ iContentHeaders = 0;
+ return tmpHeaders;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::GetContent
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* TMceTransactionDataContainer::GetContent()
+ {
+ HBufC8* tmpContent = iContent;
+ iContent = 0;
+ return tmpContent;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::SetStatusCode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMceTransactionDataContainer::SetStatusCode( TInt aStatusCode)
+ {
+ iStatusCode = aStatusCode;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::SetReasonPhrase
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMceTransactionDataContainer::SetReasonPhrase( HBufC8* aReasonPhrase )
+ {
+ delete iReasonPhrase;
+ iReasonPhrase = aReasonPhrase;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::SetHeaders
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMceTransactionDataContainer::SetHeaders( CDesC8Array* aHeaders )
+ {
+ delete iHeaders;
+ iHeaders = aHeaders;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::SetContentType
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMceTransactionDataContainer::SetContentType( HBufC8* aContentType )
+ {
+ delete iContentType;
+ iContentType = aContentType;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::SetContent
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMceTransactionDataContainer::SetContent( HBufC8* aContent )
+ {
+ delete iContent;
+ iContent = aContent;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::SetContentHeaders
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMceTransactionDataContainer::SetContentHeaders( CDesC8Array* aHeaders )
+ {
+ delete iContentHeaders;
+ iContentHeaders = aHeaders;
+ }
+
+// -----------------------------------------------------------------------------
+// TMceTransactionDataContainer::Clear
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMceTransactionDataContainer::Clear()
+ {
+ iStatusCode = 0;
+ delete iReasonPhrase;
+ iReasonPhrase = 0;
+ delete iHeaders;
+ iHeaders = 0;
+ delete iContentType;
+ iContentType = 0;
+ delete iContentHeaders;
+ iContentHeaders = 0;
+ delete iContent;
+ iContent = 0;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcevideocodec.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,158 @@
+/*
+* 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:
+*
+*/
+
+
+#include "mcevideocodec.h"
+
+// Avc config keys for all the .
+// Getter is not virtual so keys must be returned from base class and
+// the level values defined in mceavccodec.h are redefined.
+_LIT8( KMceStubAvcBitrateLevel1ConfigKey, "TestTextForAvcBrL1Level" );
+_LIT8( KMceStubAvcBitrateLevel1bConfigKey, "TestTextForAvcBrL1bLevel" );
+_LIT8( KMceStubAvcBitrateLevel1_1ConfigKey, "TestTextForAvcBrL1_1Level" );
+_LIT8( KMceStubAvcBitrateLevel1_2ConfigKey, "TestTextForAvcBrL1_2Level" );
+_LIT8( KMceStubAvcBitrateLevel1_3ConfigKey, "TestTextForAvcBrL1_3Level" );
+_LIT8( KMceStubAvcBitrateLevel2ConfigKey, "TestTextForAvcBrL2Level" );
+const TUint KMceStubAvcBitrateLevel1 = 0x0001;
+const TUint KMceStubAvcBitrateLevel1b = 0x0002;
+const TUint KMceStubAvcBitrateLevel1_1 = 0x0004;
+const TUint KMceStubAvcBitrateLevel1_2 = 0x0008;
+const TUint KMceStubAvcBitrateLevel1_3 = 0x0010;
+const TUint KMceStubAvcBitrateLevel2 = 0x0020;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceVideoCodec::~CMceVideoCodec
+// -----------------------------------------------------------------------------
+//
+CMceVideoCodec::~CMceVideoCodec()
+ {
+ delete iConfigKey;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceVideoCodec::AllowedFrameRates
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CMceVideoCodec::AllowedFrameRates() const
+ {
+ return iAllowedFrameRates;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceVideoCodec::FrameRate
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TReal CMceVideoCodec::FrameRate() const
+ {
+ return iFrameRate;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CMceVideoCodec::ConfigKeyL() const
+ {
+ HBufC8* configKey = NULL;
+
+ if ( iConfigKey )
+ {
+ configKey = iConfigKey->AllocL();
+ }
+
+ if ( !configKey && SdpName() == KMceSDPNameH264() )
+ {
+ if ( AllowedBitrates() & KMceStubAvcBitrateLevel1 )
+ {
+ configKey = KMceStubAvcBitrateLevel1ConfigKey().AllocL();
+ }
+ else if ( AllowedBitrates() & KMceStubAvcBitrateLevel1b )
+ {
+ configKey = KMceStubAvcBitrateLevel1bConfigKey().AllocL();
+ }
+ else if ( AllowedBitrates() & KMceStubAvcBitrateLevel1_1 )
+ {
+ configKey = KMceStubAvcBitrateLevel1_1ConfigKey().AllocL();
+ }
+ else if ( AllowedBitrates() & KMceStubAvcBitrateLevel1_2 )
+ {
+ configKey = KMceStubAvcBitrateLevel1_2ConfigKey().AllocL();
+ }
+ else if ( AllowedBitrates() & KMceStubAvcBitrateLevel1_3 )
+ {
+ configKey = KMceStubAvcBitrateLevel1_3ConfigKey().AllocL();
+ }
+ else if ( AllowedBitrates() & KMceStubAvcBitrateLevel2 )
+ {
+ configKey = KMceStubAvcBitrateLevel2ConfigKey().AllocL();
+ }
+ else
+ {
+ User::Leave( KErrNotFound );
+ }
+ }
+
+ return configKey;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CMceVideoCodec::MaxBitRate() const
+ {
+ return iMaxBitRate;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CMceVideoCodec::AllowedResolutions() const
+ {
+ return iAllowedResolutions;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TSize CMceVideoCodec::Resolution() const
+ {
+ return TSize( iResolutionWidth,
+ iResolutionHeight );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceVideoCodec::CMceVideoCodec
+// -----------------------------------------------------------------------------
+//
+CMceVideoCodec::CMceVideoCodec()
+ {
+ iType = KMceVideoCodec;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mcevideostream.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,231 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+#include "mcevideostream.h"
+#include "mcevideocodec.h"
+#include "mcesession.h"
+#include "mcemanager.h"
+#include "mcefilesource.h"
+#include "mcemediasink.h"
+#include "mcecamerasource.h"
+//#include "mcertpsource.h"
+#include "mcertpsink.h"
+#include "mcedisplaysink.h"
+#include "mceh263codec.h"
+
+#define _FLAT_DATA static_cast<CMceComVideoStream*>( iFlatData )
+
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// Factory method
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceVideoStream* CMceVideoStream::NewL()
+ {
+ CMceVideoStream* self = CMceVideoStream::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// Factory method
+// Leaves instance on CleanupStack.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceVideoStream* CMceVideoStream::NewLC()
+ {
+ CMceVideoStream* self = new (ELeave) CMceVideoStream();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceVideoStream::~CMceVideoStream()
+ {
+ iCodecs.ResetAndDestroy();
+ iSupportedVideoCodecs.ResetAndDestroy();
+ }
+
+
+// -----------------------------------------------------------------------------
+// Returns codec.
+// Returns the codecs available to the session.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<CMceVideoCodec>& CMceVideoStream::Codecs()
+ {
+ return iCodecs;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceVideoStream::AddCodecL( CMceVideoCodec* aCodec )
+ {
+ __ASSERT_ALWAYS(aCodec, User::Leave(KErrArgument));
+ iCodecs.AppendL(aCodec);
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceVideoStream::RemoveCodecL( CMceVideoCodec& aCodec )
+ {
+ for(int i = 0; i < iCodecs.Count(); i++ )
+ {
+ if( iCodecs[i] == &aCodec )
+ {
+ delete iCodecs[i];
+ iCodecs.Remove( i );
+ }
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// NOT IMPLEMENTED YET
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMceVideoStream::ReplaceCodecsL( RPointerArray<CMceVideoCodec>* /*aCodecs*/ )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<const CMceVideoCodec>&
+ CMceVideoStream::SupportedVideoCodecs() const
+ {
+ return iSupportedVideoCodecs;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceVideoStream::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceVideoStream::InitializeL( CMceSession& aParent )
+ {
+ CMceMediaStream::InitializeL( aParent );
+
+ InitializeL( &aParent.Manager() );
+
+ for( TInt i = 0; i < iCodecs.Count(); i++ )
+ {
+ iCodecs[i]->InitializeL( *this );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceVideoStream::InitializeL
+// -----------------------------------------------------------------------------
+//
+void CMceVideoStream::InitializeL( CMceManager* aManager )
+ {
+ CMceMediaStream::InitializeL( aManager );
+ if ( aManager && iCodecs.Count() == 0 )
+ {
+ const RPointerArray<const CMceVideoCodec> supportedCodecs =
+ aManager->SupportedVideoCodecs();
+
+ TBool fileCodecAdded( EFalse );
+ for( TInt i = 0; i < supportedCodecs.Count() && !fileCodecAdded; i++ )
+ {
+ if ( iSource && iSource->Type() == KMceFileSource )
+ {
+ // Fake codec using file name
+ CMceFileSource* fileSource =
+ static_cast<CMceFileSource*>(iSource);
+ TBuf8<256*2> fileName;
+ fileName.Copy( fileSource->iFileName );
+ const TDesC8& currentCodecName( supportedCodecs[i]->SdpName() );
+
+ if ( ( fileName.FindF( KMceSDPNameH264() ) >= 0 &&
+ currentCodecName.FindF( KMceSDPNameH264() ) >= 0 ||
+ ( fileName.FindF( KMceSDPNameH263() ) >= 0 &&
+ currentCodecName.FindF( KMceSDPNameH263() ) >= 0 ) ) )
+ {
+ CMceVideoCodec* codec = supportedCodecs[i]->CloneL();
+ CleanupStack::PushL( codec );
+ iCodecs.AppendL( codec );
+ CleanupStack::Pop( codec );
+ iState = EInitialized;
+ fileCodecAdded = ETrue;
+ }
+ else
+ {
+ iState = ETranscodingRequired;
+ }
+
+ }
+ else
+ {
+ CMceVideoCodec* codec = supportedCodecs[i]->CloneL();
+ CleanupStack::PushL( codec );
+ iCodecs.AppendL( codec );
+ CleanupStack::Pop( codec );
+ }
+ }
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMceVideoStream::IsAllowedCombination
+// -----------------------------------------------------------------------------
+//
+TBool CMceVideoStream::IsAllowedCombination()
+ {
+ return ETrue;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Default C++ constructor.
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream::CMceVideoStream()
+ :CMceMediaStream()
+ {
+ iType = KMceVideo;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CMceVideoStream::ConstructL()
+ {
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mussessionsimulator.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,330 @@
+/*
+* 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:
+*
+*/
+
+#include <e32base.h>
+#include <e32property.h>
+#include <MceTransactionDataContainer.h>
+#include <MceSession.h>
+#include <MceInSession.h>
+#include <MceOutSession.h>
+#include "mceinsessionobserver.h"
+#include "mcesessionobserver.h"
+#include "mussessionsimulator.h"
+#include "muslogger.h"
+#include <musmanagercommon.h>
+#include "mussessionproperties.h"
+
+
+
+TInt KDuration = 60*1;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMceManager::NewL
+// -----------------------------------------------------------------------------
+//
+CMusTestSessionSimulator* CMusTestSessionSimulator::NewL( CMceManager& aManager)
+ {
+
+ CMusTestSessionSimulator* self =
+ new (ELeave) CMusTestSessionSimulator( aManager );
+ CleanupStack::PushL( self );
+ self->ConstructL( );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::~CMceManager
+// -----------------------------------------------------------------------------
+//
+
+CMusTestSessionSimulator::CMusTestSessionSimulator( CMceManager& aManager )
+ :iManager(aManager)
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::~CMceManager
+// -----------------------------------------------------------------------------
+//
+void CMusTestSessionSimulator::ConstructL( )
+ {
+ iTimer = CMusTestTimer::NewL(CActive::EPriorityStandard, *this);
+ SimulateReceiveSession();
+ StartL();
+ }
+
+// -----------------------------------------------------------------------------
+// Callback implementation when the timer activity happens in the CMusTestTimer class
+// -----------------------------------------------------------------------------
+//
+void CMusTestSessionSimulator::StartL()
+ {
+ TTimeIntervalMicroSeconds32 someInterVal(KDuration); //you can call After/At/Inactivity depending on what you want to do
+ iTimer->After(someInterVal);
+ }
+
+// -----------------------------------------------------------------------------
+// Callback implementation when the timer activity happens in the CMusTestTimer class
+// -----------------------------------------------------------------------------
+//
+TBool CMusTestSessionSimulator::IsRunning()
+ {
+ return iTimer->IsActive();
+ }
+
+// -----------------------------------------------------------------------------
+// Callback implementation when the timer activity happens in the CMusTestTimer class
+// -----------------------------------------------------------------------------
+//
+void CMusTestSessionSimulator::Stop( )
+ {
+ iTimer->Cancel();
+ }
+
+// -----------------------------------------------------------------------------
+// Callback implementation when the timer activity happens in the CMusTestTimer class
+// -----------------------------------------------------------------------------
+//
+void CMusTestSessionSimulator::TimerExpired(TAny* aTimer,TInt aError)
+ {
+ if(aError == KErrNone)
+ {
+ // Timer successfully completed, handle it
+ CMusTestTimer* timer = (CMusTestTimer*)aTimer;
+ MUS_LOG("CMusTestSessionSimulator TimerExipired Change the state")
+ StateChangeL();
+ if( (iManager.iSessions[0]->iState == CMceSession::EEstablished )||
+ ( iManager.iSessions[0]->iState == CMceSession::EIncoming )
+ )
+ {
+ timer->Cancel();
+ }
+ else
+ {
+ TTimeIntervalSeconds seconds(KDuration);
+ timer->Inactivity(seconds); //Notify inactivity after 10 seconds
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// Simulates Receive Session
+// -----------------------------------------------------------------------------
+//
+void CMusTestSessionSimulator::SimulateReceiveSession()
+ {
+ MUS_LOG("CMusTestSessionSimulator::SimulateReceiveSession ->")
+ TInt usecase;
+ TInt err = RProperty::Get( NMusSessionApi::KCategoryUid, NMusSessionApi::KUseCase, usecase);
+ if( err == KErrNone )
+ {
+ if( usecase == MultimediaSharing::EMusReceive || usecase == MultimediaSharing::EMusReceiveTwoWayVideo )
+ {
+ MUS_LOG("CMusTestSessionSimulator::SimulateReceiveSession receive session ")
+ CMceInSession* inSession = CMceInSession::NewL();
+ inSession->iState = CMceSession::EIncoming;
+ iManager.iSessions.AppendL( inSession );
+ ibIncoming = ETrue;
+ }
+ else
+ {
+ ibIncoming = EFalse;
+ }
+ }
+ else
+ {
+ MUS_LOG1("CMusTestSessionSimulator::SimulateReceiveSession err = %d ",err)
+ }
+ MUS_LOG("CMusTestSessionSimulator::SimulateReceiveSession <-")
+ }
+// -----------------------------------------------------------------------------
+// CMceManager::~CMceManager
+// -----------------------------------------------------------------------------
+//
+void CMusTestSessionSimulator::StateChangeL()
+ {
+ MUS_LOG("CMusTestSessionSimulator::StateChangeL ->")
+ TMceTransactionDataContainer* container = new TMceTransactionDataContainer();
+ HBufC8* resonPharase = _L8("OK").AllocL(); ;
+ TInt statusCode = 200;
+ switch( iManager.iSessions[0]->iState )
+ {
+ case CMceSession::EIdle : // offering
+ statusCode = 180;
+ delete resonPharase;
+ resonPharase = _L8("Ringing").AllocL();
+ iManager.iSessions[0]->iState = CMceSession::EOffering;
+ MUS_LOG("CMusTestSessionSimulator Session state : Offering 180")
+ break;
+ case CMceSession::EOffering : // estabilished
+ case CMceSession::EAnswering : // estabilished
+ delete resonPharase;
+ resonPharase = _L8("OK").AllocL();
+ iManager.iSessions[0]->iState = CMceSession::EEstablished;
+ MUS_LOG("CMusTestSessionSimulator Session state : Answering")
+ break;
+ case CMceSession::EEstablished : // estabilished
+ delete resonPharase;
+ resonPharase = _L8("OK").AllocL();
+ MUS_LOG("CMusTestSessionSimulator Session state : Estabilished")
+ break;
+ case CMceSession::ETerminating : // estabilished
+ delete resonPharase;
+ resonPharase = _L8("OK").AllocL();
+ iManager.iSessions[0]->iState = CMceSession::ETerminated;
+ MUS_LOG("CMusTestSessionSimulator Session state : Terminated")
+ break;
+ case CMceSession::EIncoming : // estabilished
+ // handled down
+ break;
+ case CMceSession::EProceeding : // estabilished
+ iManager.iSessions[0]->iState = CMceSession::EAnswering;
+ MUS_LOG("CMusTestSessionSimulator Session state : Proceeding");
+ break;
+ case CMceSession::EReserving : // estabilished
+ iManager.iSessions[0]->iState = CMceSession::EProceeding;
+ MUS_LOG("CMusTestSessionSimulator Session state : Reserving")
+ default:
+ break;
+ }
+ if( iManager.iSessions[0]->iState == CMceSession::EIncoming )
+ {
+ MUS_LOG("CMusTestSessionSimulator Session state : Incoming")
+ if( iManager.iSessionObserver && container )
+ {
+ CMceInSession* session = ( CMceInSession* ) iManager.iSessions[0];
+ if( session )
+ {
+ MUS_LOG("CMusTestSessionSimulator Calling InComingSession")
+ iManager.iInSessionObserver->IncomingSession( session , container );
+ iManager.iSessions[0]->iState = CMceSession::EReserving;
+ }
+ }
+ else
+ {
+ MUS_LOG("CMusTestSessionSimulator insessionobserver empty ")
+ }
+ }
+ else
+ {
+ MUS_LOG("CMusTestSessionSimulator Session state : Inform Session state")
+ container->SetStatusCode(statusCode);
+ container->SetReasonPhrase( resonPharase );
+ if( iManager.iSessionObserver && container )
+ {
+ MUS_LOG("CMusTestSessionSimulator Calling SessionStateChanged")
+ if( iManager.iSessions.Count() > 0 )
+ {
+ CMceSession* session = iManager.iSessions[0];
+ if( session )
+ {
+ iManager.iSessionObserver->SessionStateChanged( *session ,container);
+ }
+ else
+ {
+ MUS_LOG("CMusTestSessionSimulator session empty ")
+ }
+ }
+ else
+ {
+ MUS_LOG("CMusTestSessionSimulator No Session found ")
+ }
+ }
+ else
+ {
+ MUS_LOG("CMusTestSessionSimulator Invalid pointer")
+ }
+ }
+ delete container;
+ MUS_LOG("CMusTestSessionSimulator::StateChangeL <-")
+ }
+
+// -----------------------------------------------------------------------------
+// CMceManager::~CMceManager
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMusTestSessionSimulator::~CMusTestSessionSimulator()
+ {
+ Stop();
+ delete iTimer;
+ }
+
+//--------------------------------------------------------------------------------
+// Timer implementation
+//--------------------------------------------------------------------------------
+//
+CMusTestTimer::CMusTestTimer(const TInt aPriority,MTimerNotify& aNotify)
+:CActive(aPriority),iNotify(aNotify)
+{
+}
+
+CMusTestTimer::~CMusTestTimer()
+{
+ Cancel();
+ iTimer.Close();
+}
+
+CMusTestTimer* CMusTestTimer::NewL(const TInt aPriority,MTimerNotify& aNotify)
+{
+ CMusTestTimer* me = new (ELeave) CMusTestTimer(aPriority,aNotify);
+ CleanupStack::PushL(me);
+ me->ConstructL();
+ CleanupStack::Pop();
+ return me;
+}
+
+void CMusTestTimer::ConstructL(void)
+{
+ CActiveScheduler::Add(this);
+ iTimer.CreateLocal();
+}
+
+void CMusTestTimer::After(TTimeIntervalMicroSeconds32 aInterval)
+{
+ Cancel();
+ iTimer.After(iStatus,aInterval);
+ SetActive();
+}
+
+void CMusTestTimer::At(const TTime& aTime)
+{
+ Cancel();
+ iTimer.At(iStatus,aTime);
+ SetActive();
+}
+
+void CMusTestTimer::Inactivity(TTimeIntervalSeconds aSeconds)
+{
+ Cancel();
+ iTimer.Inactivity(iStatus,aSeconds);
+ SetActive();
+}
+
+void CMusTestTimer::DoCancel()
+{
+ iTimer.Cancel();
+}
+
+void CMusTestTimer::RunL()
+{
+ iNotify.TimerExpired(this,iStatus.Int());
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/staticdllentry.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* 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:
+*
+*/
+
+
+
+#include <e32std.h>
+
+
+// Bullseye reguires following entry point
+#ifdef _BullseyeCoverage
+GLDEF_C int __stdcall __E32Dll(void*, unsigned, void*)
+ {
+ return 0;
+ }
+#else
+#ifndef EKA2
+// Starting point of the DLL (Removed in EKA2)
+GLDEF_C TInt E32Dll(TDllReason)
+ {
+ return(KErrNone);
+ }
+#endif
+#endif // _BullseyeCoverage
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/group/sipclient.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2006-2006 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: Definition of project MceClientStub
+*
+*/
+
+
+// To get the APP_LAYER_SYSTEMINCLUDE-definition
+#include <platform_paths.hrh>
+
+#include <data_caging_paths.hrh>
+
+TARGET sipclient.dll
+TARGETTYPE dll
+UID 0x1000008d 0x00000112 // Experimental UID
+
+CAPABILITY CAP_GENERAL_DLL
+VENDORID VID_DEFAULT
+
+SOURCEPATH ../src
+SOURCE Csipconnection.cpp
+ SOURCE CSIPMessageElements.cpp
+ SOURCE CSIPRequestElements.cpp
+ SOURCE CSIPResponseElements.cpp
+ SOURCE Csipservertransaction.cpp
+ SOURCE Csiptransactionbase.cpp
+ SOURCE CSipSseTestTls.cpp
+
+
+USERINCLUDE ../inc
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+
+LIBRARY euser.lib
+LIBRARY bafl.lib
+LIBRARY sipcodec.lib
+
+EXPORTUNFROZEN
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/inc/CSipSseTestTls.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,180 @@
+/*
+* 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 CSIPSSETESTTLS_H
+#define CSIPSSETESTTLS_H
+
+#include <e32base.h>
+#include <bamdesca.h>
+#include <stringpool.h>
+#include <sipprofileregistryobserver.h>
+
+#include <etelmm.h>
+#include <Etel3rdParty.h>
+
+class CSIPMessageElements;
+class CSIPResponseElements;
+class RStringF;
+class CSdpDocument;
+class CSsfInvitation;
+class TRequestStatus;
+class CConnMonEventBase;
+class CSIPRequestElements;
+
+//class CTelephony;
+//class MSIPProfileRegistryObserver;
+
+// STUB stuff
+
+typedef TInt TSIPProfileBehavior;
+const TSIPProfileBehavior KRegistryLeaveAtConstruct = 1;
+const TSIPProfileBehavior KSIPProfileIdFetchFails = 2;
+const TSIPProfileBehavior KSIPIapIdFetchFails = 3;
+const TSIPProfileBehavior KSIPConnectionLeaveAtConstruct = 4;
+
+class CSipSseTestTls : public CBase
+ {
+
+public:
+
+ static void OpenL();
+
+ static void Close();
+
+ static CSipSseTestTls* Storage();
+
+ ~CSipSseTestTls();
+
+ void Reset();
+
+ TInt Set(TUint32 aKey, TInt aValue);
+
+ TInt Get(TUint32 aKey, TInt& aValue);
+
+ void SetError( TInt aError );
+
+ TInt Error() const;
+
+ void Clear();
+
+ void SetRequestStatus( TRequestStatus& iStatus );
+
+ TBool RegisterStatus();
+
+ void SetRegisterStatus( TBool aStatus );
+
+ TBool RegisterSent();
+
+ void StoreRegistry( MSIPProfileRegistryObserver& aRegistry );
+
+ //RCommMon
+ TInt ConnectionCount();
+
+ void SetConnectionCount( TInt aCount );
+
+ void ConnectionInfo( const TUint& aIndex,
+ TUint& aConnectionId,
+ TUint& aSubConnectionCount );
+
+ void SetConnectionInfo( TUint aConnectionId,
+ TUint aSubConnectionCount );
+
+ void GetUintAttribute( const TUint aConnectionId,
+ const TUint aSubConnectionId,
+ const TUint aAttribute,
+ TUint& aValue,
+ TRequestStatus& aStatus );
+
+ void SetUintAttribute( const TUint aConnectionId,
+ const TUint aSubConnectionId,
+ const TUint aAttribute,
+ TUint aValue,
+ TRequestStatus& aStatus );
+
+ void GetIntAttribute( const TUint aConnectionId,
+ const TUint aSubConnectionId,
+ const TUint aAttribute,
+ TInt& aValue,
+ TRequestStatus& aStatus );
+
+ void SetIntAttribute( const TUint aConnectionId,
+ const TUint aSubConnectionId,
+ const TUint aAttribute,
+ TInt aValue,
+ TRequestStatus& aStatus );
+
+ void SetEvent(const CConnMonEventBase& aConnMonEvent );
+
+
+ const CConnMonEventBase& Event();
+
+
+ void SetRegistrationStatus( RMobilePhone::TMobilePhoneRegistrationStatus aRegStatus );
+ void SetRegistrationStatus( RMobilePhone::TMobilePhoneRegistrationStatus* aRegStatus );
+
+ void RegistrationStatus( RMobilePhone::TMobilePhoneRegistrationStatus& aReqStatus );
+
+ void SetPhoneNetworkModeStatus( RMobilePhone::TMobilePhoneNetworkMode aStatus );
+
+ RMobilePhone::TMobilePhoneNetworkMode& PhoneNetworkModeStatus();
+
+ void ClientRequest( CSIPRequestElements* aRequest );
+ void ClientResponse( RStringF aMethod, CSIPResponseElements* aResponse );
+
+private:
+
+ CSipSseTestTls();
+
+public://data
+
+ // Stubs leave/return this error
+ TInt iError;
+ static TBool iSipRegisterStatus;
+ MSIPProfileRegistryObserver* iRegistry;
+ //RCommMon
+ TInt iConnectionCount;
+ //ConnectionInfo
+ TUint iConnectionId;
+ TUint iSubConnectionCount;
+ //UintAttribute
+ TUint iUintAttributeValue;
+ //UintAttribute
+ TUint iIntAttributeValue;
+ TRequestStatus iRequestStatus;
+ CConnMonEventBase* iConnMonEventBase;
+
+ RMobilePhone::TMobilePhoneRegistrationStatus iPhoneRegistrationStatus;
+ RMobilePhone::TMobilePhoneRegistrationStatus* iPhoneRegistrationStatusPointer;
+ RMobilePhone::TMobilePhoneNetworkMode iPhoneNetworkMode;
+
+ CSIPRequestElements* iClientRequest;
+ RStringF iResponseToRequest;
+ CSIPResponseElements* iClientResponse;
+ RArray<TUint32> iKeys;
+ RArray<TInt> iValues;
+ TSIPProfileBehavior iRegistryBehavior;
+ TSIPProfileBehavior iProfileBehavior;
+ TSIPProfileBehavior iConnectionBehavior;
+ };
+
+
+
+#endif
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/inc/sipconnection.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,573 @@
+/*
+* Copyright (c) 2003 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 CSIPCONNECTION_H
+#define CSIPCONNECTION_H
+
+// INCLUDES
+#include <e32base.h>
+#include <in_sock.h>
+
+// FORWARD DECLARATIONS
+class CSIP;
+class MSIPConnectionObserver;
+class CSIPTransactionBase;
+class CSIPClientTransaction;
+class CSIPServerTransaction;
+class MSIPRegistrationContext;
+class CSIPRegistrationBinding;
+class CRegistrationState;
+class CSIPDialog;
+class CDialogState;
+class CSIPRefresh;
+class CSIPMessageElements;
+class CSIPRequestElements;
+class CSIPResponseElements;
+class CSIPClientConnectionObserver;
+class CConnectionCallback;
+class CSIPClientConnection;
+
+
+//CONSTANTS
+/** SIP minimum value for the expiration in seconds*/
+//const TUint KSIPMinExpirationValue=60;
+
+
+// CLASS DECLARATION
+
+/**
+* Class for monitoring connection's state and sending SIP requests outside
+* the dialog associations.Class must not be used
+* -for sending requests to which received non-failure response creates a dialog
+* -for sending requests that must be sent within SIP dialog
+* Note that the user can have only one instance of the class per same IAP-id
+*/
+class CSIPConnection :
+ public CBase
+ {
+ public:
+
+ /** Connection states */
+ enum TState
+ {
+ /** Connection initializing */
+ EInit=1,
+ /** Connection active */
+ EActive,
+ /** Connection suspended */
+ ESuspended,
+ /** Connection is inactive */
+ EInactive,
+ /** Connection is permanently unavailable */
+ EUnavailable
+ };
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aSip a handle to the SIP server
+ * @param aIapId IAP-id
+ * @param aObserver a observer for receiving asynchonous events on this
+ * connection
+ * @return New object, ownership is transferred
+ */
+
+ IMPORT_C static CSIPConnection*
+ NewL(CSIP& aSIP,
+ TUint32 aIapId,
+ MSIPConnectionObserver& aObserver);
+
+
+ /**
+ * Two-phased constructor.
+ * Constructs an object and adds the pointer to the cleanup stack;
+ * @param aSip a handle to the SIP server
+ * @param aIapId IAP-id
+ * @param aObserver a observer for receiving asynchonous events on this
+ * connection
+ * @return New object, ownership is transferred
+ */
+
+ IMPORT_C static CSIPConnection*
+ NewLC(CSIP& aSIP,
+ TUint32 aIapId,
+ MSIPConnectionObserver& aObserver);
+
+
+ /**
+ * Destructor
+ */
+
+ IMPORT_C ~CSIPConnection();
+
+ public: // New functions
+
+ /**
+ * Gets current state of the connection
+ * @return current state of the connection
+ */
+
+ IMPORT_C TState State() const;
+
+ /**
+ * Creates SIP request and sends it to the given destination.
+ * The function must not be used with SIP requests that creates
+ * SIP dialog associations or must be sent within SIP dialog
+ * association.
+ * This provokes the Non-invite state machine.
+ * This function must be used if the user has created the
+ * registration binding.
+ * @pre State() == EActive.
+ * @pre aContext.IsContextActive()==ETrue
+ * @param aElements contains local and remote addresses,
+ * optional SIP message headers and body.
+ * The ownership is transferred.
+ * @param aContext defines outbound proxy to be used. If the user
+ * does not provide from-address it will be constucted using
+ * user's AOR used during the registration.
+ * @return SIP client transaction, ownership is transferred
+ */
+
+ IMPORT_C CSIPClientTransaction*
+ SendRequestL(CSIPRequestElements* aElements,
+ const MSIPRegistrationContext& aContext);
+
+
+ /**
+ * Creates SIP request and sends it to the given destination.
+ * The function must not be used with SIP request that creates
+ * SIP dialog associations or must be sent within SIP diallog
+ * association.
+ * This provokes the Non-invite state machine.
+ * This function must be used if the user has created the
+ * registration binding.
+ * @pre State() == EActive.
+ * @pre aContext.IsContextActive()==ETrue
+ * @param aElements contains local and remote addresses,
+ * optional SIP message headers and body.
+ * The ownership is transferred.
+ * @param aContext defines outbound proxy to be used. If the user
+ * does not provide from-address it will
+ * be constucted using user's AOR used during the registration.
+ * @param aRefresh defines the refresh interval for this transaction.
+ * @return SIP client transaction, ownership is transferred
+ */
+
+ IMPORT_C CSIPClientTransaction*
+ SendRequestL(CSIPRequestElements* aElements,
+ const MSIPRegistrationContext& aContext,
+ CSIPRefresh& aRefresh);
+
+
+ /**
+ * Creates SIP request and sends it to the given destination.
+ * The function must not be used with SIP request that creates SIP
+ * diallog associations or must be sent within SIP dialog association.
+ * This invokes the Non-invite state machine.
+ * @pre State() == EActive.
+ * @pre aElements.FromHeader() != 0
+ * @param aElements contains local and remote addresses,
+ * optional SIP message headers and body.
+ * The ownership is transferred.
+ * @return SIP client transaction, ownership is transferred
+ */
+
+ IMPORT_C CSIPClientTransaction*
+ SendRequestL(CSIPRequestElements* aElements);
+
+
+ /**
+ * Creates SIP request and sends it to the given destination.
+ * The function must not be used with SIP request that creates SIP
+ * dialog associations or must be sent within SIP dialog association.
+ * This invokes the Non-invite state machine.
+ * @pre State() == EActive.
+ * @pre aElements.FromHeader() != 0
+ * @param aElements contains local and remote addresses,
+ * optional SIP message headers and body.
+ * The ownership is transferred.
+ * @param aRefresh indicates that transaction will be refreshed
+ * @return SIP client transaction, ownership is transferred
+ */
+
+ IMPORT_C CSIPClientTransaction*
+ SendRequestL(CSIPRequestElements* aElements,
+ CSIPRefresh& aRefresh);
+
+
+ /**
+ * Creates SIP REGISTER request and sends it to the given destination.
+ * User must no define any Contact or Expires-headers
+ * in the provided elements.
+ * @pre State() == EActive
+ * @pre aElements != 0
+ * @pre aElements->Method().DesC().Length()==0
+ * @param aElements contains local and remote addresses, optional SIP
+ * message headers and body. User must not set any expires values
+ * to aElements. The ownership is transferred.
+ * @return SIP REGISTER client transaction, ownership is transferred
+ */
+
+ IMPORT_C CSIPClientTransaction*
+ FetchRegistrationsL(CSIPRequestElements* aElements);
+
+ // Not in real SIP API:
+ IMPORT_C void SetState(TState aState);
+
+ //TODO:SHOULD THIS NEW FUNCTION BE INCLUDED INTO STUB???
+ /**
+ * Gets Iap-id used for this connection
+ * @return Iap-id
+ */
+
+ IMPORT_C TUint32 IapId() const;
+
+
+ /**
+ * Gets SIP server handle
+ * @return handle to SIP server, or 0-pointer if SIP server does not
+ * exist any more
+ */
+ IMPORT_C CSIP* SIP();
+
+ /**
+ * Gets SIP server handle
+ * @return handle to SIP server, or 0-pointer if SIP server does not
+ * exist any more
+ */
+
+ IMPORT_C const CSIP* SIP() const;
+ //TODO:ENDS
+
+ /**
+ * Incoming request outside dialog has been received.
+ *
+ * @param aTransaction Server transaction. Ownership is transferred.
+ */
+
+ void IncomingRequestL(CSIPServerTransaction* aTransaction) const;
+
+ /**
+ * Gets the local IP address of this CSIPConnection
+ * that is used by the SIP implementation.
+ * The user should re-new the call whenever the connection state changes
+ * to the CSIPConnection::EActive in order to verify the correctness of
+ * the previously retrieved local IP address. The local IP address might
+ * be different as a result of the connection state change.
+ * @pre State() == CSIPConnection::EActive
+ * @param aAddr on return filled with local IP address
+ * @leave a system-wide error code
+ */
+ IMPORT_C void GetLocalAddrL(TInetAddr& aAddr) const;
+
+
+ /**
+ * Incoming request within dialog has been received.
+ *
+ * @param aTransaction Server transaction. Ownership is transferred.
+ * @param aDialogId Identifies the dialog to which the transaction
+ * belongs to.
+ */
+
+ void IncomingDialogRequestL(CSIPServerTransaction* aTransaction,
+ TUint32 aDialogId);
+
+ void IncomingResponseL(CSIPResponseElements* aElements,
+ TUint32 aRequestId) const;
+
+ void IncomingRegistrationResponseL(CSIPResponseElements* aElements,
+ TUint32 aRequestId,
+ TUint32 aRegistrationId) const;
+
+ void IncomingRefreshResponseL(CSIPResponseElements* aElements,
+ TUint32 aRequestId,
+ TUint32 aRefreshId);
+
+
+ void ErrorOccured(TInt aError, TUint32 aRequestId) const;
+
+ void RefreshErrorOccured(TInt aError, TUint32 aRefreshId) const;
+
+ void RegistrationErrorOccured(TInt aError,
+ TUint32 aRegistrationId,
+ TUint32 aRequestId) const;
+
+ void DialogErrorOccured(TInt aError,
+ TUint32 aDialogId,
+ TUint32 aRequestId) const;
+
+ void DialogErrorOccured(TInt aError,
+ TUint32 aDialogId,
+ TUint32 aRefreshId,
+ TUint32 aRequestId) const;
+
+ void ConnectionStateChanged(CSIPConnection::TState aState);
+
+ void InviteCompleted(TUint32 aRequestId) const;
+
+
+ /**
+ * Searches for a transaction with the matching aRequestId.
+ * @param aRequestId RequestId associated with the transaction
+ * @return Found transaction or NULL if not found. Ownership is not
+ * transferred.
+ */
+
+ CSIPTransactionBase* FindTransaction(TUint32 aRequestId) const;
+
+
+ TInt AddRegistration(CSIPRegistrationBinding* aRegistration);
+ void RemoveRegistration(const CSIPRegistrationBinding* aRegistration);
+
+
+ /**
+ * Searches for a registration binding, using aRegistrationId and
+ * aRequestId as keys. Registration might not yet have received
+ * RegistrationId from SIP client, so the aRequestId may be needed to
+ * locate the registration binding.
+ * @param aRegistrationId RegistrationId of the registration binding
+ * @param aRequestId RequestId of a transaction associated with the
+ * registration
+ * @return Found registration binding or NULL if not found.
+ * Ownership is not transferred.
+ */
+
+ CSIPRegistrationBinding* FindRegistration(TUint32 aRegistrationId,
+ TUint32 aRequestId) const;
+
+
+ TInt AddDialog(CSIPDialog* aDialog);
+ void RemoveDialog(const CSIPDialog* aDialog);
+
+
+ /**
+ * Searches for a dialog, using aRequestId as a key.
+ * @param aRequestId RequestId of a transaction associated with the
+ * dialog
+ * @return Found dialog or NULL if not found. Ownership is not
+ * transferred.
+ */
+
+ CSIPDialog* FindDialogByRequestId(TUint32 aRequestId) const;
+
+
+ /**
+ * Informs CSIPConnection that the associated CSIP instance has been
+ * deleted. After this the CSIPConnection object can't be used anymore.
+ */
+
+ void CSIPDeleted();
+
+
+ /**
+ * Obtains the initial state for registration state machine.
+ *
+ * @return Initial registration state, ownership is not transferred
+ */
+
+ CRegistrationState* InitialRegisterStateL() const;
+
+
+ /**
+ * Obtains the initial state for dialog state machine.
+ *
+ * @return Initial dialog state, ownership is not transferred
+ */
+
+ CDialogState* InitialDialogStateL() const;
+
+
+ /**
+ * Response related to a dialog has been received.
+ *
+ * @param aElements SIP response elements. Ownership is transferred.
+ * @param aRequestId Identifies the transaction
+ * @param aDialogId DialogId
+ * @param aRefreshId NULL if the response is not related to a refresh,
+ * otherwise the RefreshId. Ownership is not transferred.
+ */
+
+ void IncomingResponseToDialogL(CSIPResponseElements* aElements,
+ TUint32 aRequestId,
+ TUint32 aDialogId,
+ TUint32* aRefreshId);
+
+ private:
+ CSIPConnection(CSIP& aSIP,
+ TUint32 aIapId,
+ MSIPConnectionObserver& aObserver);
+
+ void ConstructL();
+
+
+ /**
+ * Send a SIP request.
+ *
+ * @param aElements SIP headers. Ownership is transferred.
+ * @param aRegistrationId If non-NULL, request will use the outbound
+ * proxy and some SIP headers from the registration identified by
+ * aRegistrationId. Ownership is not transferred.
+ * @param aRefresh If non-NULL, the request will be refreshed. Otherwise
+ * NULL. Ownership is not transferred.
+ * @return New transaction. Ownership is transferred.
+ */
+
+ CSIPClientTransaction*
+ SendRequestL(CSIPRequestElements* aElements,
+ TUint32* aRegistrationId,
+ CSIPRefresh* aRefresh);
+
+
+ /**
+ * Searches for a refresh and transaction, using aRequestId and
+ * aRefreshId as keys.
+ * @param aRequestId RequestId associated with the refreshed transaction
+ * @param aRefreshId RefreshId associated with the refresh instance
+ * @param aRefresh OUT: if refresh was found, this pointer is set to the
+ * refresh instance. Ownership is not transferred.
+ * @param aTransaction OUT: if transaction was found, this pointer is
+ * set to the refreshed client transaction. Ownership is not
+ * transferred.
+ * @return ETrue if found, EFalse otherwise
+ */
+
+ TBool FindRefresh(TUint32 aRequestId,
+ TUint32 aRefreshId,
+ CSIPRefresh** aRefresh,
+ CSIPClientTransaction** aTransaction) const;
+
+ /**
+ * Searches for a registration binding, using aRequestId as a key.
+ * @param aRequestId RequestId of a transaction associated with the
+ * registration binding
+ * @return Found registration binding or NULL if not found.
+ * Ownership is not transferred.
+ */
+
+ CSIPRegistrationBinding* FindRegistration(TUint32 aRequestId) const;
+
+
+ /**
+ * Searches for a dialog, using aDialogId as a key.
+ * @param aDialogId DialogId of the dialog.
+ * @return Found dialog or NULL if not found. Ownership is not
+ * transferred.
+ */
+
+ CSIPDialog* FindDialog(TUint32 aDialogId) const;
+
+
+ /**
+ * A request has been received with a dialogId, but no matching dialog
+ * exists.
+ * If the request is NOTIFY, it is stored until a response with the same
+ * dialogId is received. Then the response is passed to dialog and after
+ * that all the stored NOTIFY are passed to the same dialog.
+ * This is needed since NOTIFY can be received before a sent SUBSCRIBE
+ * receives a response with dialogId.
+ *
+ * @param aTransaction Server transaction, ownership is transferred
+ * @param aDialogId DialogId
+ */
+
+ void IncomingRequestBeforeDialogExistsL(
+ CSIPServerTransaction* aTransaction,
+ TUint32 aDialogId);
+
+
+ /**
+ * Extracts the oldest stored transaction for the dialog identified by
+ * aDialogId.
+ * @param aDialogId DialogId
+ * @return Server transaction or NULL if no transaction is stored for
+ * the dialog. Ownership is transferred.
+ */
+
+ CSIPServerTransaction* GetStoredTransaction(TUint32 aDialogId);
+
+
+ /**
+ * Checks that CSIP is available for use (not NULL). If iSIP is NULL,
+ * it means user has deleted a resource needed by CSIPConnection, and
+ * this function leaves.
+ */
+
+ void CheckCSipL() const;
+
+
+ /**
+ * Connection is no longer available. All registrations, dialogs,
+ * transactions and refreshes using this connection are terminated, but
+ * not deleted.
+ */
+
+ void ConnectionLost();
+
+
+ //The used CSIP instance. CSIPConnection doesn't own the CSIP.
+ //If this pointer is NULL; it means application has deleted the
+ //CSIP instance before deleting the CSIPConnection, and this
+ //CSIPConnection is now useless.
+ CSIP* iSIP;
+
+ //IAP-id of this connection
+ TUint32 iIapId;
+
+ //Callback to upper layer
+ MSIPConnectionObserver& iObserver;
+
+ //Callback receiving events from client
+ CSIPClientConnectionObserver* iClientConnectionObserver;
+
+ //Connection used by this CSIPConnection instance
+ CSIPClientConnection* iClientConnection;
+
+ //CSIPConnection doesn't own CSIPRegistrationBindings
+ RPointerArray<CSIPRegistrationBinding> iRegistrations;
+
+ //CSIPConnection doesn't delete the CSIPDialog objects. CSIPDialog
+ //deletes itself when its last dialog association is deleted.
+ //NOTE: When CSIPDialog has just been created and has no dialog
+ //associations yet, it must be stored in CleanupStack, otherwise it
+ //won't be freed if leave occurs!
+ RPointerArray<CSIPDialog> iDialogs;
+
+ //CSIPConnection has to know which transactions are attached to it, but
+ //it doesn't own the transactions. Transaction's ownership is passed
+ //to application.
+ RPointerArray<CSIPTransactionBase> iTransactions;
+
+ //Standalone refreshes, application owns these
+ RPointerArray<CSIPRefresh> iRefreshes;
+
+ //To avoid using callbacks to MSIPConnectionObserver from within
+ //CSIPRegistrationBinding and CSIPDialog, CConnectionCallback is passed to
+ //the methods which would need to use MSIPConnectionObserver calls.
+ //CSIPRegistrationBinding and CSIPDialog will fill CConnectionCallback with
+ //the selected callback method and its parameters, and by returning
+ //ETrue they tell to CSIPConnection that a callback has to be done.
+ CConnectionCallback* iCallbackInfo;
+
+
+ // Not in real SIP API
+ TState iState;
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/inc/sipmessageelements.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,173 @@
+/*
+* 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 CSIPMESSAGEELEMENTS_H
+#define CSIPMESSAGEELEMENTS_H
+
+// INCLUDES
+#include <e32base.h>
+#include <s32strm.h>
+#include <stringpool.h>
+#include "_sipcodecdefs.h"
+
+#ifdef SWIS_UNIT_TEST
+#undef IMPORT_C
+#define IMPORT_C
+#endif
+
+// FORWARD DECLARATIONS
+class CSIPHeaderBase;
+class CSIPContentTypeHeader;
+class CSIPFromHeader;
+class CSIPToHeader;
+class CSIPCSeqHeader;
+class CSIPExtensionHeader;
+
+// CLASS DECLARATION
+
+/**
+* @publishedAll
+*
+* Class for creation and manipulation optional elements in a SIP message.
+*
+* Class provides functions for setting and getting optional elements in a
+* SIP message. Optional elements include user SIP message headers,
+* content and content type.
+* Following headers are not considered to be user SIP message headers and
+* cannot be set or retrieved using functions of this class:
+* "Authentication-Info", "Call-Id", "CSeq", "From"
+* "Max-Forwards", "Min-Expires", "Record-Route",
+* "Security-Verify", "Service-Route", "To", "Via", "Security-Server",
+* "Proxy-Authorization", "Proxy-Authenticate" and "WWW-Authenticate".
+*
+* @lib sipclient.lib
+*/
+class CSIPMessageElements : public CBase
+ {
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CSIPMessageElements* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CSIPMessageElements* NewLC();
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CSIPMessageElements();
+
+ public: //new functions
+ /**
+ * Sets an array of user headers i.e. headers that user is allowed
+ * manipulate to a SIP message. An empty array resets the user headers.
+ * Note that the Content-Type header must be set using SetContentL.
+ *
+ * @param aHeaders an array of SIP headers.
+ * The ownership of objects in the array is transferred.
+ */
+ IMPORT_C void SetUserHeadersL(RPointerArray<CSIPHeaderBase>& aHeaders);
+
+ /**
+ * Gets all user SIP headers this class contains
+ * @return SIP headers. Ownership is not transferred.
+ */
+ IMPORT_C const RPointerArray<CSIPHeaderBase>& UserHeaders() const;
+
+ /**
+ * Sets the SIP message content and its type.
+ * A zero length content can be set by providing a pointer
+ * to a zero length HBufC8 instance (the ownership is transferred).
+ * @pre aContent != 0 && aContentType != 0
+ * @param aContent the content of a SIP message,
+ * the ownership is transferred
+ * @param aContentType the SIP message content type,
+ * the ownership is transferred
+ * @leave KErrArgument if aContent == 0 or
+ * aContentType == 0
+ */
+ IMPORT_C void SetContentL(HBufC8* aContent,
+ CSIPContentTypeHeader* aContentType);
+
+ /**
+ * Gets the SIP message content
+ * @return SIP message content. If content does not exist, an empty
+ * descriptor is returned.
+ */
+ IMPORT_C const TDesC8& Content() const;
+
+ /**
+ * Gets the content type
+ * @return Content-Type-header or a 0-pointer if not present; the ownership
+ * is not transferred.
+ */
+ IMPORT_C const CSIPContentTypeHeader* ContentType() const;
+
+ /*
+ * Removes the SIP message content and destroys
+ * Content-Type header as well.
+ * @return SIP message content; the ownership is transferred.
+ */
+ IMPORT_C HBufC8* ExtractContent();
+
+ public: // New functions, for internal use
+
+ static CSIPMessageElements* InternalizeL(RReadStream& aReadStream);
+ void ExternalizeL(RWriteStream& aWriteStream) const;
+ TInt UserHeaderCount(RStringF aName) const;
+ const RPointerArray<CSIPHeaderBase> UserHeadersL(RStringF aName) const;
+ TInt RemoveHeaders(RStringF aName);
+ void DetachUserHeader(CSIPHeaderBase* aHeader);
+ void AddHeaderL(CSIPHeaderBase* aHeader);
+ void SetToL(CSIPToHeader* aTo);
+ const CSIPToHeader* To() const;
+ void SetFromL (CSIPFromHeader* aFrom);
+ const CSIPFromHeader* From() const;
+ const CSIPCSeqHeader* CSeq() const;
+ void SetContent(HBufC8* aContent);
+ void DetachContent();
+
+ private:
+
+ CSIPMessageElements();
+ void ConstructL();
+ void DoInternalizeL(RReadStream& aReadStream);
+ void CheckUserHeaderL(const CSIPHeaderBase* aHeader) const;
+ void ExternalizeUserHeadersL(RWriteStream& aWriteStream) const;
+ void ExternalizeL(const CSIPExtensionHeader* aHeader,
+ RWriteStream& aWriteStream) const;
+
+ private: // Data
+
+ RPointerArray<CSIPHeaderBase> iUserHeaders;
+ HBufC8* iContent;
+ CSIPFromHeader* iFromHeader;
+ CSIPToHeader* iToHeader;
+ CSIPCSeqHeader* iCSeqHeader;
+ CSIPContentTypeHeader* iContentTypeHeader;
+ TBool iHeaderLookupOpen;
+
+ private: // For testing purposes
+
+ UNIT_TEST(CSIPMessageElementsTest)
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/inc/siprequestelements.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,173 @@
+/*
+* 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 CSIPREQUESTELEMENTS_H
+#define CSIPREQUESTELEMENTS_H
+
+// INCLUDES
+#include <e32base.h>
+#include <s32strm.h>
+#include <stringpool.h>
+#include <uri8.h>
+#include "_sipcodecdefs.h"
+
+// FORWARD DECLARATIONS
+class CSIPMessageElements;
+class CSIPFromHeader;
+class CSIPToHeader;
+class CSIPCSeqHeader;
+
+// CLASS DECLARATION
+
+/**
+* @publishedAll
+* @released
+*
+* Class provides functions for creation and manipulation of originator's and
+* recipient's addresses in a SIP request. It also provide functions for
+* manipulation of SIP method for unknown SIP requests.
+* @lib sipclient.lib
+*/
+class CSIPRequestElements : public CBase
+ {
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ * If the URI is SIP URI, no SIP URI headers are allowed.
+ * @pre aRemoteURi != 0
+ * @param aRemoteUri Remote target URI that identifies a resource that
+ * the request is addressed to. The ownership is transferred.
+ */
+ IMPORT_C static CSIPRequestElements* NewL(CUri8* aRemoteUri);
+
+ /**
+ * Two-phased constructor.
+ * If the URI is SIP URI, no SIP URI headers are allowed.
+ * @pre aRemoteURi != 0
+ * @param aRemoteUri Remote target URI that identifies a resource that
+ * the request is addressed to. The ownership is transferred.
+ */
+ IMPORT_C static CSIPRequestElements* NewLC(CUri8* aRemoteUri);
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CSIPRequestElements();
+
+ public: // New functions
+ /**
+ * Sets/resets the recipient's To-header
+ * To-header must not contain tag-parameter.
+ * @pre aTo != 0
+ * @param aTo a To-header to be set, the ownership is transferred.
+ */
+ IMPORT_C void SetToHeaderL(CSIPToHeader* aTo);
+
+ /**
+ * Gets the recipient's To-header
+ * @return To-header or a 0-pointer if not present. Ownership is not
+ * transferred.
+ */
+ IMPORT_C const CSIPToHeader* ToHeader() const;
+
+ /**
+ * Sets/resets the originator's From-header.
+ * From-header must not contain tag-parameter.
+ * @pre aFrom != 0
+ * @param aFrom a From-header to be set, the ownership is transferred.
+ * @leave KErrArgument if aFrom == 0
+ */
+ IMPORT_C void SetFromHeaderL(CSIPFromHeader* aFrom);
+
+ /**
+ * Gets the originator's From-header
+ * @return From-header or a 0-pointer if not present. Ownership is not
+ * transferred.
+ */
+ IMPORT_C const CSIPFromHeader* FromHeader() const;
+
+ /**
+ * Gets CSeq-header. Available for only incoming requests.
+ * @return a CSeq-header or a 0-pointer if not present.
+ * Ownership is not transferred.
+ */
+ IMPORT_C const CSIPCSeqHeader* CSeqHeader() const;
+
+ /**
+ * Sets the remote URI.
+ * If the URI is a SIP URI, no SIP URI headers are allowed.
+ * @pre aRemoteUri != 0
+ * @param aRemoteUri
+ * @leave KErrArgument if aRemoteUri==0
+ */
+ IMPORT_C void SetRemoteUriL(CUri8* aRemoteUri);
+
+ /**
+ * Gets the remote target URI
+ * @return remote target URI
+ */
+ IMPORT_C const CUri8& RemoteUri() const;
+
+ /**
+ * Sets the SIP request method
+ * @param aMethod a SIP method name.
+ * @leave KErrArgument if method name given is syntactically
+ * incorrect
+ */
+ IMPORT_C void SetMethodL(RStringF aMethod);
+
+ /**
+ * Gets the SIP Method for a request
+ * @return a SIP method name or a an empty string if the method
+ * is not defined
+ */
+ IMPORT_C RStringF Method() const;
+
+ /**
+ * Gets message elements (contains all SIP user headers and content)
+ * @return message elements
+ */
+ IMPORT_C const CSIPMessageElements& MessageElements() const;
+
+ /**
+ * Gets message elements (contains all SIP user headers and content)
+ * The response elements can be populated with SIP user headers
+ * and content using returned reference to the message elements.
+ * @return message elements
+ */
+ IMPORT_C CSIPMessageElements& MessageElements();
+
+ public: // New functions, for internal use
+ static CSIPRequestElements* InternalizeL (RReadStream& aReadStream);
+ void ExternalizeL (RWriteStream& aWriteStream) const;
+
+ private:
+ CSIPRequestElements();
+ void ConstructL(CUri8* aRemoteUri);
+ void DoInternalizeL(RReadStream& aReadStream);
+
+ private: // Data
+ RStringF iMethod;
+ CUri8* iRemoteURI;
+ CSIPMessageElements* iMessageElements;
+
+ private: // For testing purposes
+ UNIT_TEST(CSIPRequestElementsTest)
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/inc/sipresponseelements.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* 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 CSIPRESPONSEELEMENTS_H
+#define CSIPRESPONSEELEMENTS_H
+
+// INCLUDES
+
+#include <e32base.h>
+#include <s32strm.h>
+#include <stringpool.h>
+#include "_sipcodecdefs.h"
+
+// FORWARD DECLARATIONS
+class CSIPMessageElements;
+class CSIPFromHeader;
+class CSIPToHeader;
+class CSIPCSeqHeader;
+
+// CLASS DECLARATION
+
+/**
+* @publishedAll
+*
+* Class provides services for creating and manipulating SIP responses
+* This class is used for creating and manipulating SIP responses including
+* status code, reason phrase and optional elements such user headers,
+* content and its type.
+*
+* @lib sipclient.lib
+*/
+class CSIPResponseElements : public CBase
+ {
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ * @pre aStatusCode > 100 && aStatusCode < 700
+ * @param aStatusCode a known SIP response status code. Cannot be 100.
+ * @param aReasonPhrase a SIP response reason phrase.
+ */
+ IMPORT_C static CSIPResponseElements* NewL(TUint aStatusCode,
+ RStringF aReasonPhrase);
+
+ /**
+ * Two-phased constructor.
+ * @pre aStatusCode > 100 && aStatusCode < 700
+ * @param aStatusCode a known SIP response status code. Cannot be 100.
+ * @param aReasonPhrase a SIP response reason phrase.
+ */
+ IMPORT_C static CSIPResponseElements* NewLC(TUint aStatusCode,
+ RStringF aReasonPhrase);
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CSIPResponseElements();
+
+ public: // New functions
+ /**
+ * Sets a SIP Response extension status code. It is not possible to set
+ * value 100.
+ * @pre aStatusCode > 100 && aStatusCode < 700
+ * @param aStatusCode extension status code
+ * @leave KErrArgument if aStatusCode < 100 or aStatusCode >= 700
+ */
+ IMPORT_C void SetStatusCodeL(TUint aStatusCode);
+
+ /**
+ * Gets the SIP Response status code
+ * @return SIP Response status code
+ */
+ IMPORT_C TUint StatusCode() const;
+
+ /**
+ * Sets a SIP Response Reason Phrase.
+ * @param aReasonPhrase a SIP response reason phrase.
+ */
+ IMPORT_C void SetReasonPhraseL(RStringF aReasonPhrase);
+
+ /**
+ * Gets a SIP Response Reason Phrase.
+ * @return a SIP response reason phrase or an empty string if
+ * the reason phrase is not defined.
+ */
+ IMPORT_C RStringF ReasonPhrase() const;
+
+ /**
+ * Gets the originator's From-header
+ * @return a From-header or a 0-pointer if not present. Ownership is
+ * not transferred.
+ */
+ IMPORT_C const CSIPFromHeader* FromHeader() const;
+
+ /**
+ * Gets the recipient's To-header
+ * @return a To-header or a 0-pointer if not present. Ownership is
+ * not transferred.
+ */
+ IMPORT_C const CSIPToHeader* ToHeader() const;
+
+ /**
+ * Gets CSeq-header
+ * @return a CSeq-header or a 0-pointer if not present. Ownership is
+ * not transferred.
+ */
+ IMPORT_C const CSIPCSeqHeader* CSeqHeader() const;
+
+ /**
+ * Gets message elements (contains all SIP user headers and content)
+ * @return message elements
+ */
+ IMPORT_C const CSIPMessageElements& MessageElements() const;
+
+ /**
+ * Gets message elements (contains all SIP user headers and content)
+ * The response elements can be populated with SIP user headers
+ * and content using returned reference to the message elements.
+ * @return message elements
+ */
+ IMPORT_C CSIPMessageElements& MessageElements();
+
+ public: // New functions, for internal use
+ static CSIPResponseElements* InternalizeL (RReadStream& aReadStream);
+ static CSIPResponseElements* InternalizeLC (RReadStream& aReadStream);
+ void ExternalizeL (RWriteStream& aWriteStream) const;
+
+ private:
+ CSIPResponseElements();
+ void ConstructL(TUint aStatusCode, RStringF aReasonPhrase);
+ void DoInternalizeL (RReadStream& aReadStream);
+
+ private: // Data
+ TUint iStatusCode;
+ RStringF iReasonPhrase;
+ CSIPMessageElements* iMessageElements;
+ };
+
+#endif // end of CSIPRESPONSEELEMENTS_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/inc/sipservertransaction.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,182 @@
+/*
+* Copyright (c) 2003 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 CSIPSERVERTRANSACTION_H
+#define CSIPSERVERTRANSACTION_H
+
+// INCLUDES
+#include "siptransactionbase.h"
+
+// FORWARD DECLARATIONS
+class CSIPRequestElements;
+class CSIPRefresh;
+class MSIPResponseSender;
+class CSIPConnection;
+
+/**
+* Class for managing SIP server transactions.
+* It provides services for creating, ending
+* and getting SIP transaction parameters.
+* Client cannot instantiate this class.
+*
+* @lib sipclient
+*/
+class CSIPServerTransaction: public CSIPTransactionBase
+ {
+ public:
+
+ /**
+ * Destructor
+ */
+
+ IMPORT_C ~CSIPServerTransaction();
+
+ public: // Not in real SIP API
+
+ IMPORT_C static CSIPServerTransaction* NewL( RStringF aType );
+
+ IMPORT_C void SetRequestElements(CSIPRequestElements* aElements);
+
+
+ public:
+
+ /**
+ * Sends response and ends the transaction;
+ * The user must not send 100 Trying response. Leaves on failure.
+ * @pre aElements!=0
+ * @pre State()==ETrying || State()==EProceeding
+ * @pre CSIPConnection::State()==EActive
+ * @pre ResponseAllowed()==ETrue
+ * @param aElements contains Status Code, optional Reason Phrase and
+ * optional SIP message headers and body. Ownership is transferred.
+ * @leave KErrArgument if aElements == NULL
+ * @leave KErrGeneral if ResponseAllowed() == EFalse
+ */
+
+ IMPORT_C void SendResponseL(CSIPResponseElements *aElements);
+
+
+ /**
+ * Gets the request elements
+ * @return Request elements. Ownership is not transferred.
+ */
+
+ IMPORT_C const CSIPRequestElements* RequestElements() const;
+
+
+ /**
+ * Checks if the response sending is allowed for this server
+ * transaction. For instance response is not allowed in ACK transaction.
+ * @return ETrue if response sending is allowed, EFalse otherwise
+ */
+
+ IMPORT_C TBool ResponseAllowed() const;
+
+ /**
+ * Sets a new respose sender, replacing the current sender.
+ *
+ * @param aSender Response sender to be used from now on. Ownership is
+ * transferred.
+ */
+
+ void SetResponseSender(MSIPResponseSender* aSender);
+
+
+ /**
+ * Obtains the associated CSIPConnection instance. If connection can't
+ * be accessed anymore, this function leaves.
+ *
+ * @return CSIPConnection
+ */
+
+ CSIPConnection& SIPConnectionL();
+
+
+ /**
+ * Update the MTransactionAssociation to point to aAssociation.
+ *
+ * @param aAssociation Associated object
+ */
+
+ void ReAssociateL(MTransactionAssociation& aAssociation);
+
+
+ /**
+ * Removes, but does not delete, request elements from
+ * aServerTransaction.
+ *
+ * @param aServerTransaction Server transaction from which response
+ * elements are removed. Ownership is not transferred.
+ */
+
+ static void DetachRequestElements(TAny* aServerTransaction);
+
+ public:
+
+ /**
+ * Creates a server transaction.
+ *
+ * @param aRequestId RequestId for the transaction to use
+ * @param aAssociation Object with which the transaction is associated
+ * @param aElements Request elements. Ownership is transferred.
+ * @return New object. Ownership is transferred.
+ */
+
+ static CSIPServerTransaction*
+ NewL(TUint32 aRequestId,
+ MTransactionAssociation& aAssociation,
+ CSIPRequestElements* aElements);
+
+
+ /**
+ * Creates a server transaction and pushes it to cleanup stack.
+ *
+ * @param aRequestId RequestId for the transaction to use
+ * @param aAssociation Object with which the transaction is associated
+ * @param aElements Request elements. Ownership is transferred.
+ * @return New object. Ownership is transferred.
+ */
+
+ static CSIPServerTransaction*
+ NewLC(TUint32 aRequestId,
+ MTransactionAssociation& aAssociation,
+ CSIPRequestElements* aElements);
+
+
+
+ private:
+ CSIPServerTransaction( RStringF aType );
+
+
+ /**
+ * Second phase constructor.
+ *
+ * @param aElements Request elements. Ownership is transferred.
+ */
+ void ConstructL(CSIPRequestElements* aElements);
+
+
+ CSIPRequestElements* iRequestElements;
+
+ //This interface is used for sending the response.
+ //CSIPServerTransaction owns iResponseSender.
+ MSIPResponseSender* iResponseSender;
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/inc/siptransactionbase.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,228 @@
+/*
+* Copyright (c) 2003 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 CSIPTRANSACTIONBASE_H
+#define CSIPTRANSACTIONBASE_H
+
+// INCLUDES
+
+#include <e32base.h>
+#include <stringpool.h>
+
+// FORWARD DECLARATIONS
+class CSIPResponseElements;
+class MTransactionAssociation;
+
+/**
+* Base class for managing SIP transactions.
+* It provides services for quering transaction
+* type and its state.
+*
+* This class is an abstract class and cannot be
+* instantiated.
+* @lib sipclient
+*/
+class CSIPTransactionBase: public CBase
+ {
+ public:
+ /** SIP transaction state */
+ enum TState
+ {
+ /** Trying state */
+ ETrying,
+ /** Calling state */
+ ECalling,
+ /** Proceeding state */
+ EProceeding,
+ /** Completed state */
+ ECompleted,
+ /** Confirmed state */
+ EConfirmed,
+ /** Terminated state */
+ ETerminated
+ };
+
+ public:
+
+ /**
+ * Destructor
+ */
+
+ virtual ~CSIPTransactionBase();
+
+
+ public:
+ /**
+ * Gets the SIP transaction type
+ * @return SIP transaction type
+ */
+
+ IMPORT_C RStringF Type() const;
+
+
+ /**
+ * Gets SIP transaction state
+ * @return SIP transaction state
+ */
+
+ IMPORT_C CSIPTransactionBase::TState StateL();
+
+
+ /**
+ * Checks the if the actual object
+ * is of type CSIPClientTransaction.
+ * @return ETrue if object is of type CSIPClientTransaction and
+ * EFalse otherwise
+ */
+
+ IMPORT_C TBool IsSIPClientTransaction() const;
+
+
+ /**
+ * Compares this object to another object also having
+ * CSIPTransactionBase base class
+ * The function has to be implemented in each of the sub-classes.
+ * @param aTransaction a CSIPTransactionBase object to compare
+ * @return ETrue if the objects are equal otherwise EFalse
+ */
+
+ IMPORT_C TBool
+ operator==(const CSIPTransactionBase& aTransaction) const;
+
+ /**
+ * Obtains the RequestId of the transaction.
+ *
+ * @return RequestId
+ */
+
+ TUint32 RequestId() const;
+
+
+ /**
+ * Clears the MTransactionAssociation. After this the object can't be
+ * used anymore and it is expected that user will delete it soon.
+ *
+ * @param aAssociation Object requesting the detach
+ */
+
+ virtual void Detach(const MTransactionAssociation& aAssociation);
+
+
+ /**
+ * Changes the transaction state.
+ *
+ * @param aNextState State into which transaction moves
+ */
+
+ void ChangeState(CSIPTransactionBase::TState aNextState);
+
+
+ /**
+ * Determines whether this transaction has an effect on the associated
+ * dialog's state.
+ *
+ * @return ETrue if transaction has an effect on the dialog's state,
+ * EFalse otherwise.
+ */
+
+ TBool AffectsDialogState() const;
+
+
+ /**
+ * Sets this transaction to affect the dialog state.
+ */
+
+ void SetAffectsDialogState();
+
+
+ /**
+ * Determines whether the transaction type is a target refresh request.
+ *
+ * @param aType Type of transaction
+ * @return ETrue If the transaction is a target refresh request, EFalse
+ * otherwise.
+ */
+
+ static TBool IsTargetRefresh(RStringF aType);
+
+
+ /**
+ * Stores response elements. Depending on the status code, transaction
+ * may enter another state.
+ *
+ * @param aElements Response elements, ownership is transferred.
+ */
+
+ void SetResponseElements(CSIPResponseElements* aElements);
+
+
+ protected:
+ CSIPTransactionBase( RStringF aType, TBool aIsCliTrx );
+
+ void ConstructL();
+
+
+ /**
+ * Checks that iAssociation is available (not NULL). If iAssociation is
+ * NULL, it means user has deleted a resource needed by
+ * CSIPTransactionBase, and this function leaves.
+ */
+
+ void CheckAssociationL() const;
+
+
+ /**
+ * Gets response elements.
+ *
+ * @return Response elements. Ownership isn't transferred.
+ */
+
+ const CSIPResponseElements* ResponseElements() const;
+
+
+ //RequestId received from SIP client
+ TUint32 iRequestId;
+
+ //Every transaction is associated to exactly one other object:
+ //CSIP, CSIPConnection, CSIPRegistrationBinding or CSIPDialogAssocBase
+ MTransactionAssociation* iAssociation;
+
+ public:
+
+ RStringF iType;
+
+ //ETrue is the transaction is a client transaction, EFalse otherwise
+ TBool iIsClientTransaction;
+
+
+ //ETrue if the transaction has an effect on the dialog state in case
+ //the transaction is associated with a dialog.
+ //EFalse otherwise.
+ TBool iAffectsDialogState;
+
+ //SIP response elements
+ CSIPResponseElements* iResponseElements;
+
+ public:
+ //Current transaction state
+ TState iState;
+
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/src/CSIPMessageElements.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,418 @@
+/*
+* Copyright (c) 2004 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:
+*
+*/
+
+
+#include "SipMessageElements.h"
+#include "SipHeaderBase.h"
+#include "SipFromHeader.h"
+#include "SipContactHeader.h"
+#include "SipToHeader.h"
+#include "SipCSeqHeader.h"
+#include "SipContentTypeHeader.h"
+#include "SipExtensionHeader.h"
+#include "sipstrings.h"
+#include "SipStrConsts.h"
+
+
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPMessageElements* CSIPMessageElements::NewL()
+ {
+ CSIPMessageElements* self = CSIPMessageElements::NewLC();
+ CleanupStack::Pop (self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPMessageElements* CSIPMessageElements::NewLC ()
+ {
+ CSIPMessageElements* self = new(ELeave)CSIPMessageElements;
+ CleanupStack::PushL (self);
+ self->ConstructL ();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::CSIPMessageElements
+// -----------------------------------------------------------------------------
+//
+CSIPMessageElements::CSIPMessageElements ()
+ : iHeaderLookupOpen(EFalse)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPMessageElements::ConstructL()
+ {
+// SIPHeaderLookup::OpenL();
+ iHeaderLookupOpen = ETrue;
+ iCSeqHeader = CSIPCSeqHeader::DecodeL( _L8("1 INVITE") );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::~CSIPMessageElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPMessageElements::~CSIPMessageElements ()
+ {
+ /*if (iHeaderLookupOpen)
+ {
+ SIPHeaderLookup::Close();
+ }*/
+ delete iContent;
+ iUserHeaders.ResetAndDestroy();
+ delete iFromHeader;
+ delete iToHeader;
+ delete iCSeqHeader;
+ delete iContentTypeHeader;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::SetUserHeadersL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void
+CSIPMessageElements::SetUserHeadersL (RPointerArray<CSIPHeaderBase>& aHeaders)
+ {
+ RPointerArray<CSIPHeaderBase> tmpHeaders;
+ CleanupClosePushL(tmpHeaders);
+ for (TInt i=0; i<aHeaders.Count(); i++)
+ {
+ CSIPHeaderBase* header = aHeaders[i];
+ CheckUserHeaderL (header);
+ User::LeaveIfError(tmpHeaders.Append(header));
+ }
+ CleanupStack::Pop(1); // tmpHeaders
+ iUserHeaders.ResetAndDestroy();
+ iUserHeaders = tmpHeaders;
+ aHeaders.Reset();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::UserHeaders
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const RPointerArray<CSIPHeaderBase>&
+CSIPMessageElements::UserHeaders() const
+ {
+ return iUserHeaders;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::SetContentL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPMessageElements::SetContentL (HBufC8* aContent,
+ CSIPContentTypeHeader* aType)
+ {
+ __ASSERT_ALWAYS (aContent != 0, User::Leave(KErrArgument));
+ __ASSERT_ALWAYS (aContent->Length() > 0, User::Leave(KErrArgument));
+ __ASSERT_ALWAYS (aType != 0, User::Leave(KErrArgument));
+
+ delete iContentTypeHeader;
+ iContentTypeHeader = aType;
+ delete iContent;
+ iContent = aContent;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::Content
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC8& CSIPMessageElements::Content () const
+ {
+ if (iContent)
+ {
+ return *iContent;
+ }
+ return KNullDesC8;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::Content
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPContentTypeHeader* CSIPMessageElements::ContentType() const
+ {
+ return iContentTypeHeader;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::ExtractContent
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CSIPMessageElements::ExtractContent ()
+ {
+ HBufC8* tmp = iContent;
+ iContent = 0;
+ delete iContentTypeHeader;
+ iContentTypeHeader = 0;
+ return tmp;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::InternalizeL
+// -----------------------------------------------------------------------------
+//
+CSIPMessageElements*
+CSIPMessageElements::InternalizeL (RReadStream& aReadStream)
+ {
+ CSIPMessageElements* self = CSIPMessageElements::NewLC();
+ self->DoInternalizeL(aReadStream);
+ CleanupStack::Pop(); // self
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::DoInternalizeL
+// -----------------------------------------------------------------------------
+//
+void CSIPMessageElements::DoInternalizeL (RReadStream& /*aReadStream*/)
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::ExternalizeL
+// -----------------------------------------------------------------------------
+//
+void
+CSIPMessageElements::ExternalizeL (RWriteStream& /*aWriteStream*/) const
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::UserHeaderCount
+// -----------------------------------------------------------------------------
+//
+TInt CSIPMessageElements::UserHeaderCount (RStringF aName) const
+ {
+ TInt headerCount = 0;
+ for (TInt i=0; i < iUserHeaders.Count(); i++)
+ {
+ if (iUserHeaders[i]->Name() == aName)
+ {
+ headerCount++;
+ }
+ }
+ return headerCount;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::UserHeadersL
+// -----------------------------------------------------------------------------
+//
+const RPointerArray<CSIPHeaderBase>
+CSIPMessageElements::UserHeadersL (RStringF aName) const
+ {
+ RPointerArray<CSIPHeaderBase> headers;
+ CleanupClosePushL(headers);
+ for (TInt i=0; i < iUserHeaders.Count(); i++)
+ {
+ if (iUserHeaders[i]->Name() == aName)
+ {
+ User::LeaveIfError(headers.Append(iUserHeaders[i]));
+ }
+ }
+ CleanupStack::Pop(1); // headers
+ return headers;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::RemoveHeaders
+// -----------------------------------------------------------------------------
+//
+TInt CSIPMessageElements::RemoveHeaders (RStringF aName)
+ {
+ TInt err = KErrNotFound;
+ for (TInt i=iUserHeaders.Count()-1; i>=0; i--)
+ {
+ if (iUserHeaders[i]->Name() == aName)
+ {
+ CSIPHeaderBase* header = iUserHeaders[i];
+ iUserHeaders.Remove(i);
+ delete header;
+ err = KErrNone;
+ }
+ }
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::DetachUserHeader
+// -----------------------------------------------------------------------------
+//
+void CSIPMessageElements::DetachUserHeader (CSIPHeaderBase* aHeader)
+ {
+ for (TInt i=0; i < iUserHeaders.Count(); i++)
+ {
+ if (iUserHeaders[i] == aHeader)
+ {
+ iUserHeaders.Remove(i);
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::AddHeaderL
+// -----------------------------------------------------------------------------
+//
+void CSIPMessageElements::AddHeaderL (CSIPHeaderBase* aHeader)
+ {
+ __ASSERT_ALWAYS (aHeader != 0, User::Leave(KErrArgument));
+
+ if (aHeader->Name() == SIPStrings::StringF(SipStrConsts::EFromHeader))
+ {
+ delete iFromHeader;
+ iFromHeader = static_cast<CSIPFromHeader*>(aHeader);
+ }
+ else if (aHeader->Name() == SIPStrings::StringF(SipStrConsts::EToHeader))
+ {
+ delete iToHeader;
+ iToHeader = static_cast<CSIPToHeader*>(aHeader);
+ }
+ else if (aHeader->Name() == SIPStrings::StringF(SipStrConsts::ECSeqHeader))
+ {
+ delete iCSeqHeader;
+ iCSeqHeader = static_cast<CSIPCSeqHeader*>(aHeader);
+ }
+ else if (aHeader->Name() ==
+ SIPStrings::StringF(SipStrConsts::EContentTypeHeader))
+ {
+ delete iContentTypeHeader;
+ iContentTypeHeader = static_cast<CSIPContentTypeHeader*>(aHeader);
+ }
+ else
+ {
+ User::LeaveIfError(iUserHeaders.Append(aHeader));
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::SetToL
+// -----------------------------------------------------------------------------
+//
+void CSIPMessageElements::SetToL (CSIPToHeader* aTo)
+ {
+ __ASSERT_ALWAYS (aTo != 0, User::Leave(KErrArgument));
+ __ASSERT_ALWAYS (!aTo->HasParam(SIPStrings::StringF(SipStrConsts::ETag)),
+ User::Leave(KErrArgument));
+
+ delete iToHeader;
+ iToHeader = aTo;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::To
+// -----------------------------------------------------------------------------
+//
+const CSIPToHeader* CSIPMessageElements::To() const
+ {
+ return iToHeader;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::SetFromL
+// -----------------------------------------------------------------------------
+//
+void CSIPMessageElements::SetFromL (CSIPFromHeader* aFrom)
+ {
+ __ASSERT_ALWAYS (aFrom != 0, User::Leave(KErrArgument));
+ __ASSERT_ALWAYS (!aFrom->HasParam(SIPStrings::StringF(SipStrConsts::ETag)),
+ User::Leave(KErrArgument));
+
+ delete iFromHeader;
+ iFromHeader = aFrom;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::From
+// -----------------------------------------------------------------------------
+//
+const CSIPFromHeader* CSIPMessageElements::From() const
+ {
+ return iFromHeader;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::CSeq
+// -----------------------------------------------------------------------------
+//
+const CSIPCSeqHeader* CSIPMessageElements::CSeq() const
+ {
+ return iCSeqHeader;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::SetContent
+// -----------------------------------------------------------------------------
+//
+void CSIPMessageElements::SetContent (HBufC8* aContent)
+ {
+ delete iContent;
+ iContent = aContent;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::DetachContent
+// -----------------------------------------------------------------------------
+//
+void CSIPMessageElements::DetachContent ()
+ {
+ iContent = 0;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::CheckUserHeaderL
+// -----------------------------------------------------------------------------
+//
+void CSIPMessageElements::CheckUserHeaderL (const CSIPHeaderBase* /*aHeader*/) const
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::ExternalizeUserHeadersL
+// -----------------------------------------------------------------------------
+//
+void
+CSIPMessageElements::ExternalizeUserHeadersL (RWriteStream& /*aWriteStream*/) const
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPMessageElements::ExternalizeL
+// -----------------------------------------------------------------------------
+//
+void CSIPMessageElements::ExternalizeL (const CSIPExtensionHeader* /*aHeader*/,
+ RWriteStream& /*aWriteStream*/) const
+ {
+
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/src/CSIPRequestElements.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,237 @@
+/*
+* 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:
+*
+*/
+
+
+#include "siprequestelements.h"
+#include "sipmessageelements.h"
+#include "sipfromheader.h"
+#include "siptoheader.h"
+#include "sipstrings.h"
+#include "sipstrconsts.h"
+#include "_sipcodecdefs.h"
+
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequestElements* CSIPRequestElements::NewL(CUri8* aRemoteUri)
+ {
+ CSIPRequestElements* self = CSIPRequestElements::NewLC(aRemoteUri);
+ CleanupStack::Pop (self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequestElements* CSIPRequestElements::NewLC(CUri8* aRemoteUri)
+ {
+ CSIPRequestElements* self = new(ELeave)CSIPRequestElements;
+ CleanupStack::PushL (self);
+ self->ConstructL (aRemoteUri);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::CSIPRequestElements
+// -----------------------------------------------------------------------------
+//
+CSIPRequestElements::CSIPRequestElements()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPRequestElements::ConstructL(CUri8* aRemoteUri)
+ {
+ __ASSERT_ALWAYS (aRemoteUri != 0, User::Leave(KErrArgument));
+
+ iMessageElements = CSIPMessageElements::NewL();
+ SetRemoteUriL(aRemoteUri);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::~CSIPRequestElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequestElements::~CSIPRequestElements()
+ {
+ delete iRemoteURI;
+ iMethod.Close();
+ delete iMessageElements;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::SetToHeaderL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequestElements::SetToHeaderL(CSIPToHeader* aTo)
+ {
+ iMessageElements->SetToL(aTo);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::ToHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPToHeader* CSIPRequestElements::ToHeader() const
+ {
+ return iMessageElements->To();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::SetFromHeaderL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequestElements::SetFromHeaderL(CSIPFromHeader* aFrom)
+ {
+ iMessageElements->SetFromL(aFrom);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::FromHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPFromHeader* CSIPRequestElements::FromHeader() const
+ {
+ return iMessageElements->From();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::CSeqHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPCSeqHeader* CSIPRequestElements::CSeqHeader() const
+ {
+ return iMessageElements->CSeq();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::SetRemoteURIL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequestElements::SetRemoteUriL(CUri8* aRemoteUri)
+ {
+ __ASSERT_ALWAYS (aRemoteUri != 0, User::Leave(KErrArgument));
+
+ delete iRemoteURI;
+ iRemoteURI = aRemoteUri;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::RemoteURI
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CUri8& CSIPRequestElements::RemoteUri() const
+ {
+ return *(iRemoteURI);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::SetMethodL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequestElements::SetMethodL(RStringF aMethod)
+ {
+ __ASSERT_ALWAYS (aMethod.DesC().Length() > 0, User::Leave(KErrArgument));
+
+ iMethod.Close();
+ iMethod = aMethod.Copy();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::Method
+// -----------------------------------------------------------------------------
+//
+EXPORT_C RStringF CSIPRequestElements::Method() const
+ {
+ return iMethod;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::MessageElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPMessageElements& CSIPRequestElements::MessageElements() const
+ {
+ return *iMessageElements;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::MessageElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPMessageElements& CSIPRequestElements::MessageElements()
+ {
+ return *iMessageElements;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::InternalizeL
+// -----------------------------------------------------------------------------
+//
+CSIPRequestElements* CSIPRequestElements::InternalizeL(RReadStream& aReadStream)
+ {
+ CSIPRequestElements* self = new(ELeave)CSIPRequestElements;
+ CleanupStack::PushL(self);
+ self->DoInternalizeL(aReadStream);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::DoInternalizeL
+// -----------------------------------------------------------------------------
+//
+void CSIPRequestElements::DoInternalizeL(RReadStream& aReadStream)
+ {
+ // For incoming requests the method is always present
+/* TUint32 methodLength = aReadStream.ReadUint32L();
+ if (methodLength > 0)
+ {
+ HBufC8* methodBuf = HBufC8::NewLC(methodLength);
+ TPtr8 methodPtr(methodBuf->Des());
+ aReadStream.ReadL(methodPtr,methodLength);
+ iMethod = SIPStrings::Pool().OpenFStringL(methodPtr);
+ CleanupStack::PopAndDestroy(methodBuf);
+ }
+ aReadStream.ReadUint8L(); // remote-URI always present
+ iRemoteURI = CURIContainer::InternalizeL(aReadStream);
+ iMessageElements = CSIPMessageElements::InternalizeL(aReadStream);
+*/ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::ExternalizeL
+// -----------------------------------------------------------------------------
+//
+void CSIPRequestElements::ExternalizeL(RWriteStream& aWriteStream) const
+ {
+/* TPtrC8 method(iMethod.DesC());
+ // For outgoing requests in some cases the method is filled in ServerCore
+ if (method.Length() > 0)
+ {
+ aWriteStream.WriteUint32L(method.Length());
+ aWriteStream.WriteL(method);
+ }
+ aWriteStream.WriteUint8L(1); // remote-URI always present
+ iRemoteURI->ExternalizeL(aWriteStream);
+ iMessageElements->ExternalizeL(aWriteStream);
+*/ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/src/CSIPResponseElements.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,217 @@
+/*
+* Copyright (c) 2004 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:
+*
+*/
+
+#include "SipResponseElements.h"
+#include "SipMessageElements.h"
+#include "sipstrings.h"
+#include "SipStrConsts.h"
+
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPResponseElements*
+CSIPResponseElements::NewL (TUint aStatusCode, RStringF aReasonPhrase)
+ {
+ CSIPResponseElements* self =
+ CSIPResponseElements::NewLC(aStatusCode,aReasonPhrase);
+ CleanupStack::Pop (self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPResponseElements*
+CSIPResponseElements::NewLC (TUint aStatusCode, RStringF aReasonPhrase)
+ {
+ CSIPResponseElements* self = new(ELeave)CSIPResponseElements;
+ CleanupStack::PushL (self);
+ self->ConstructL (aStatusCode,aReasonPhrase);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::CSIPResponseElements
+// -----------------------------------------------------------------------------
+//
+CSIPResponseElements::CSIPResponseElements ()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPResponseElements::ConstructL (TUint aStatusCode,
+ RStringF aReasonPhrase)
+ {
+ SetStatusCodeL (aStatusCode);
+ iReasonPhrase = aReasonPhrase.Copy();
+ iMessageElements = CSIPMessageElements::NewL();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::~CSIPResponseElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPResponseElements::~CSIPResponseElements ()
+ {
+ delete iMessageElements;
+ iReasonPhrase.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::SetStatusCodeL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPResponseElements::SetStatusCodeL (TUint aStatusCode)
+ {
+ iStatusCode = aStatusCode;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::StatusCode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CSIPResponseElements::StatusCode() const
+ {
+ return iStatusCode;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::SetReasonPhraseL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void
+CSIPResponseElements::SetReasonPhraseL (RStringF aReasonPhrase)
+ {
+ iReasonPhrase.Close();
+ iReasonPhrase = aReasonPhrase.Copy();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::ReasonPhrase
+// -----------------------------------------------------------------------------
+//
+EXPORT_C RStringF CSIPResponseElements::ReasonPhrase () const
+ {
+ return iReasonPhrase;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::FromHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPFromHeader* CSIPResponseElements::FromHeader () const
+ {
+ return iMessageElements->From();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::ToHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPToHeader* CSIPResponseElements::ToHeader () const
+ {
+ return iMessageElements->To();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::CSeqHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPCSeqHeader* CSIPResponseElements::CSeqHeader() const
+ {
+ return iMessageElements->CSeq();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::MessageElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPMessageElements&
+CSIPResponseElements::MessageElements () const
+ {
+ return *iMessageElements;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::MessageElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPMessageElements& CSIPResponseElements::MessageElements ()
+ {
+ return *iMessageElements;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::InternalizeL
+// -----------------------------------------------------------------------------
+//
+CSIPResponseElements*
+CSIPResponseElements::InternalizeL (RReadStream& aReadStream)
+ {
+ CSIPResponseElements* self =
+ CSIPResponseElements::InternalizeLC(aReadStream);
+ CleanupStack::Pop(); // self
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::InternalizeLC
+// -----------------------------------------------------------------------------
+//
+CSIPResponseElements*
+CSIPResponseElements::InternalizeLC (RReadStream& aReadStream)
+ {
+ CSIPResponseElements* self = new(ELeave)CSIPResponseElements;
+ CleanupStack::PushL (self);
+ self->DoInternalizeL(aReadStream);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::DoInternalizeL
+// -----------------------------------------------------------------------------
+//
+void CSIPResponseElements::DoInternalizeL (RReadStream& aReadStream)
+ {
+ iStatusCode = aReadStream.ReadUint16L();
+ TUint32 reasonPhraseLength = aReadStream.ReadUint32L();
+ HBufC8* reasonPhraseBuf = HBufC8::NewLC(reasonPhraseLength);
+ TPtr8 reasonPhrasePtr(reasonPhraseBuf->Des());
+ aReadStream.ReadL(reasonPhrasePtr,reasonPhraseLength);
+ iReasonPhrase = SIPStrings::Pool().OpenFStringL(reasonPhrasePtr);
+ CleanupStack::PopAndDestroy(reasonPhraseBuf);
+ iMessageElements = CSIPMessageElements::InternalizeL(aReadStream);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::ExternalizeL
+// -----------------------------------------------------------------------------
+//
+void CSIPResponseElements::ExternalizeL (RWriteStream& aWriteStream) const
+ {
+ aWriteStream.WriteUint16L(iStatusCode);
+ TPtrC8 reasonPhrase(iReasonPhrase.DesC());
+ aWriteStream.WriteUint32L(reasonPhrase.Length());
+ aWriteStream.WriteL(reasonPhrase);
+ iMessageElements->ExternalizeL(aWriteStream);
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/src/CSipSseTestTls.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,334 @@
+/*
+* Copyright (c) 2004 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:
+*
+*/
+
+
+#include "CSipSseTestTls.h"
+#include <sipstrings.h>
+#include <SipStrConsts.h>
+#include <sipprofileregistry.h>
+#include <sipprofileregistryobserver.h>
+#include "SipResponseElements.h"
+#include "siprequestelements.h"
+#include "mussettingskeys.h"
+
+
+TBool CSipSseTestTls::iSipRegisterStatus = EFalse;
+
+
+void CSipSseTestTls::OpenL ()
+ {
+ CSipSseTestTls* self = new (ELeave) CSipSseTestTls();
+ self->ClientRequest( NULL );
+ self->ClientResponse( SIPStrings::StringF( SipStrConsts::EEmpty ), NULL );
+ Dll::SetTls( self );
+
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KActivation,
+ MusSettingsKeys::EAlwaysActive ) );
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KAuditoryNotification,
+ MusSettingsKeys::EAuditoryNotificationOff ) );
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KPopupNotification,
+ MusSettingsKeys::EPopupNotificationOff ) );
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KPopupNotificationType,
+ MusSettingsKeys::ENotificationTypeQueryUser ) );
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KEdgeDtmSupport,
+ MusSettingsKeys::EDtmModeNotAllowed ) );
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KForceInternetSignaling,
+ MusSettingsKeys::EFollowProfileConfiguration ) );
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KAutoRecord,
+ MusSettingsKeys::EAutoRecordOn ) );
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KSipProfileId,
+ 0 ) ); //default profile
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KUiOrientation,
+ MusSettingsKeys::EPortrait ) );
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KCapabilityQuery,
+ MusSettingsKeys::ENoOptions ) );
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowedAllBearers ) );
+
+ }
+
+void CSipSseTestTls::Close ()
+ {
+ CSipSseTestTls* self = Storage();
+ delete self;
+ Dll::SetTls( NULL );
+ }
+
+
+CSipSseTestTls* CSipSseTestTls::Storage()
+ {
+ return static_cast<CSipSseTestTls*>(Dll::Tls());
+ }
+
+CSipSseTestTls::CSipSseTestTls()
+ : iError( KErrNone )
+ {
+ }
+
+CSipSseTestTls::~CSipSseTestTls()
+ {
+ delete iClientRequest;
+ delete iClientResponse;
+ iKeys.Reset();
+ iValues.Reset();
+ }
+
+void CSipSseTestTls::Reset()
+ {
+ Storage()->Set ( MusSettingsKeys::KActivation,
+ MusSettingsKeys::EAlwaysActive );
+ Storage()->Set ( MusSettingsKeys::KAuditoryNotification,
+ MusSettingsKeys::EAuditoryNotificationOff );
+ Storage()->Set ( MusSettingsKeys::KPopupNotification,
+ MusSettingsKeys::EPopupNotificationOff );
+ Storage()->Set ( MusSettingsKeys::KPopupNotificationType,
+ MusSettingsKeys::ENotificationTypeQueryUser );
+ Storage()->Set ( MusSettingsKeys::KEdgeDtmSupport,
+ MusSettingsKeys::EDtmModeNotAllowed );
+ Storage()->Set ( MusSettingsKeys::KForceInternetSignaling,
+ MusSettingsKeys::EFollowProfileConfiguration );
+ Storage()->Set ( MusSettingsKeys::KAutoRecord,
+ MusSettingsKeys::EAutoRecordOn );
+ Storage()->Set ( MusSettingsKeys::KSipProfileId,
+ 0 ); //default profile
+ Storage()->Set ( MusSettingsKeys::KUiOrientation,
+ MusSettingsKeys::EPortrait );
+ Storage()->Set ( MusSettingsKeys::KCapabilityQuery,
+ MusSettingsKeys::ENoOptions );
+
+ Storage()->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowedAllBearers );
+
+ iRegistryBehavior = 0;
+ iProfileBehavior = 0;
+ iConnectionBehavior = 0;
+ }
+
+TInt CSipSseTestTls::Set(TUint32 aKey, TInt aValue)
+ {
+ // Setting of any other value
+ for ( TInt i = 0; i < iKeys.Count(); ++i )
+ {
+ if ( iKeys[i] == aKey )
+ {
+ iValues[i] = aValue;
+ return KErrNone;
+ }
+ }
+
+ // No wise error handling implemented
+ TInt error = iKeys.Append( aKey );
+ if ( error == KErrNone )
+ {
+ error = iValues.Append( aValue );
+ }
+
+ return error;
+ }
+
+TInt CSipSseTestTls::Get(TUint32 aKey, TInt& aValue)
+ {
+ for ( TInt i = 0; i < iKeys.Count(); ++i )
+ {
+ if ( iKeys[i] == aKey )
+ {
+ aValue = iValues[i];
+ return KErrNone;
+ }
+ }
+
+ return KErrNotFound;
+ }
+
+void CSipSseTestTls::SetError( TInt aError )
+ {
+ iError = aError;
+ }
+
+TInt CSipSseTestTls::Error() const
+ {
+ return iError;
+ }
+
+
+void CSipSseTestTls::Clear()
+ {
+ iError = KErrNone;
+ iConnectionCount = 0;
+ iSubConnectionCount = 0;
+ iUintAttributeValue = 0;
+ iConnectionId = 0;
+ iIntAttributeValue = 0;
+ iRequestStatus = KErrNone;
+ iPhoneRegistrationStatus = RMobilePhone::ERegistrationUnknown;
+ iPhoneRegistrationStatusPointer = NULL;
+ iPhoneNetworkMode = RMobilePhone::ENetworkModeUnknown;
+ ClientRequest( NULL );
+ //iResponseToRequest = SIPStrings::StringF( SipStrConsts::EEmpty );
+ }
+
+void CSipSseTestTls::SetRequestStatus( TRequestStatus& aStatus )
+ {
+ iRequestStatus = aStatus;
+ }
+
+
+TBool CSipSseTestTls::RegisterStatus()
+ {
+
+ return iSipRegisterStatus;
+ }
+void CSipSseTestTls::SetRegisterStatus( TBool aStatus )
+ {
+ iSipRegisterStatus = aStatus;
+ }
+TBool CSipSseTestTls::RegisterSent()
+ {
+ if ( !iSipRegisterStatus )
+ {
+ iSipRegisterStatus = ETrue;
+ }
+ return iSipRegisterStatus;
+ }
+
+void CSipSseTestTls::StoreRegistry( MSIPProfileRegistryObserver& aRegistry )
+ {
+ iRegistry = &aRegistry;
+ }
+/*
+void CSipSseTestTls::ProfileRegistryEventOccurred(TUint32 aProfileId, MSIPProfileRegistryObserver::TEvent aEvent )
+ {
+ iRegistry->ProfileRegistryEventOccurred( aProfileId,aEvent );
+ }
+
+
+void CSipSseTestTls::SetState( MMusAvaObserver::TAvailabilityStatus aStatus )
+ {
+ iStatus = aStatus;
+ }
+ */
+TInt CSipSseTestTls::ConnectionCount()
+ {
+ return iConnectionCount;
+ }
+void CSipSseTestTls::SetConnectionCount( TInt aCount )
+ {
+ iConnectionCount = aCount;
+ }
+
+void CSipSseTestTls::ConnectionInfo( const TUint& aIndex,
+ TUint& aConnectionId,
+ TUint& aSubConnectionCount )
+ {
+ aConnectionId = iConnectionId;
+ aSubConnectionCount = iSubConnectionCount;
+ }
+
+void CSipSseTestTls::SetConnectionInfo( TUint aConnectionId,
+ TUint aSubConnectionCount )
+ {
+ iConnectionId = aConnectionId;
+ iSubConnectionCount = aSubConnectionCount;
+ }
+
+void CSipSseTestTls::GetUintAttribute( const TUint aConnectionId,
+ const TUint aSubConnectionId,
+ const TUint aAttribute,
+ TUint& aValue,
+ TRequestStatus& aStatus )
+ {
+ aValue = iUintAttributeValue;
+ aStatus = iRequestStatus;
+ }
+void CSipSseTestTls::SetUintAttribute( TUint aConnectionId,
+ TUint aSubConnectionId,
+ TUint aAttribute,
+ TUint aValue,
+ TRequestStatus& aStatus )
+ {
+ iUintAttributeValue = aValue;
+ iRequestStatus = aStatus;
+ }
+
+void CSipSseTestTls::GetIntAttribute( const TUint aConnectionId,
+ const TUint aSubConnectionId,
+ const TUint aAttribute,
+ TInt& aValue,
+ TRequestStatus& aStatus )
+ {
+ aValue = iIntAttributeValue;
+ aStatus = iRequestStatus;
+ }
+void CSipSseTestTls::SetIntAttribute( TUint aConnectionId,
+ TUint aSubConnectionId,
+ TUint aAttribute,
+ TInt aValue,
+ TRequestStatus& aStatus )
+ {
+ iIntAttributeValue = aValue;
+ iRequestStatus = aStatus;
+ }
+
+void CSipSseTestTls::SetEvent(const CConnMonEventBase& aConnMonEvent)
+ {
+ iConnMonEventBase = const_cast<CConnMonEventBase*>( &aConnMonEvent );
+ }
+
+const CConnMonEventBase& CSipSseTestTls::Event()
+ {
+ return *iConnMonEventBase;
+ }
+
+void CSipSseTestTls::SetRegistrationStatus( RMobilePhone::TMobilePhoneRegistrationStatus aRegStatus )
+ {
+ iPhoneRegistrationStatus = aRegStatus;
+ }
+
+void CSipSseTestTls::SetRegistrationStatus( RMobilePhone::TMobilePhoneRegistrationStatus* aRegStatus )
+ {
+ iPhoneRegistrationStatusPointer = aRegStatus;
+ }
+
+void CSipSseTestTls::RegistrationStatus( RMobilePhone::TMobilePhoneRegistrationStatus& aReqStatus )
+ {
+ aReqStatus = iPhoneRegistrationStatus;
+ }
+
+void CSipSseTestTls::SetPhoneNetworkModeStatus( RMobilePhone::TMobilePhoneNetworkMode aStatus )
+ {
+ iPhoneNetworkMode = aStatus;
+ }
+
+RMobilePhone::TMobilePhoneNetworkMode& CSipSseTestTls::PhoneNetworkModeStatus()
+ {
+ return iPhoneNetworkMode;
+ }
+
+ void CSipSseTestTls::ClientRequest( CSIPRequestElements* aRequest )
+ {
+ delete iClientRequest;
+ iClientRequest = aRequest;
+ }
+
+void CSipSseTestTls::ClientResponse( RStringF aMethod, CSIPResponseElements* aResponse )
+ {
+ iResponseToRequest = aMethod;
+ delete iClientResponse;
+ iClientResponse = aResponse;
+ }
+
+//end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/src/Csipconnection.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+#include "sipconnection.h"
+#include "sip.h"
+#include "siperr.h"
+
+CSIPConnection::CSIPConnection(CSIP& aSIP,
+ TUint32 aIapId,
+ MSIPConnectionObserver& aObserver)
+ : iIapId(aIapId), iObserver(aObserver), iState(EActive)
+ {
+ iSIP = &aSIP;
+ }
+
+void CSIPConnection::ConstructL()
+ {
+ }
+
+
+EXPORT_C CSIPConnection* CSIPConnection::NewL(CSIP& aSIP,
+ TUint32 aIapId,
+ MSIPConnectionObserver& aSIPConnectionObserver)
+ {
+
+ CSIPConnection* self = new(ELeave) CSIPConnection(aSIP, aIapId, aSIPConnectionObserver);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+
+ }
+
+
+EXPORT_C CSIPConnection::~CSIPConnection()
+ {
+ }
+
+EXPORT_C TUint32 CSIPConnection::IapId() const
+ {
+ return iIapId;
+ }
+
+EXPORT_C CSIPConnection::TState CSIPConnection::State() const
+ {
+ return iState;
+ }
+
+EXPORT_C void CSIPConnection::SetState(TState aState)
+ {
+ iState = aState;
+ }
+
+//TODO:Check if these new functions are needed in sip_stub
+
+// -----------------------------------------------------------------------------
+// CSIPConnection::SIP
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIP* CSIPConnection::SIP()
+ {
+ return iSIP;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPConnection::SIP
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIP* CSIPConnection::SIP() const
+ {
+ return iSIP;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/src/Csipservertransaction.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "sipservertransaction.h"
+#include "siprequestelements.h"
+#include "sipresponseelements.h"
+#include <sipstrings.h>
+#include <sipstrconsts.h>
+#include "CSipSseTestTls.h"
+
+
+EXPORT_C CSIPServerTransaction::~CSIPServerTransaction()
+ {
+ delete iRequestElements;
+ }
+
+
+CSIPServerTransaction::CSIPServerTransaction( RStringF aType )
+ : CSIPTransactionBase( aType, EFalse )
+ {
+ }
+
+
+EXPORT_C CSIPServerTransaction* CSIPServerTransaction::NewL( RStringF aType )
+ {
+ return new(ELeave)CSIPServerTransaction( aType );
+ }
+
+
+EXPORT_C void CSIPServerTransaction::SetRequestElements(
+ CSIPRequestElements* aElements)
+ {
+ if( iRequestElements )
+ {
+ delete iRequestElements;
+ }
+
+ iRequestElements = aElements;
+ }
+
+
+EXPORT_C void CSIPServerTransaction::SendResponseL(
+ CSIPResponseElements *aElements)
+ {
+ CSipSseTestTls* tls = CSipSseTestTls::Storage();
+ if ( tls )
+ {
+ User::LeaveIfError( tls->Error() );
+ // tls->SIPSends( Type(), aElements );
+ }
+ else
+ {
+ delete aElements;
+ }
+ }
+
+
+EXPORT_C const CSIPRequestElements* CSIPServerTransaction::RequestElements() const
+ {
+ return iRequestElements;
+ }
+
+EXPORT_C TBool CSIPServerTransaction::ResponseAllowed() const
+ {
+ if ( Type() == SIPStrings::StringF( SipStrConsts::EAck ) )
+ {
+ return EFalse;
+ }
+ else
+ {
+ return ETrue;
+ }
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/src/Csiptransactionbase.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,68 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "siptransactionbase.h"
+#include "sipresponseelements.h"
+#include "sipstrings.h"
+#include "SipStrConsts.h"
+
+CSIPTransactionBase::~CSIPTransactionBase()
+ {
+ delete iResponseElements;
+ }
+
+CSIPTransactionBase::CSIPTransactionBase( RStringF aType, TBool aIsCliTrx )
+ : iType(aType),
+ iIsClientTransaction(aIsCliTrx),
+ iState(ETrying)
+ {
+
+ if ( iIsClientTransaction && iType == SIPStrings::StringF( SipStrConsts::EInvite ) )
+ {
+ iState = ECalling;
+ }
+ }
+
+EXPORT_C TBool CSIPTransactionBase::operator==(const CSIPTransactionBase& aTransactionBase) const
+ {
+ return (this == &aTransactionBase);
+ }
+
+EXPORT_C CSIPTransactionBase::TState CSIPTransactionBase::StateL()
+ {
+ return iState;
+ }
+
+EXPORT_C RStringF CSIPTransactionBase::Type() const
+ {
+ return iType;
+ }
+
+EXPORT_C TBool CSIPTransactionBase::IsSIPClientTransaction() const
+ {
+ return iIsClientTransaction;
+ }
+
+void CSIPTransactionBase::ChangeState( CSIPTransactionBase::TState aNextState )
+ {
+ iState = aNextState;
+ }
+
+void CSIPTransactionBase::Detach(const MTransactionAssociation& /*aAssociation*/)
+ {
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipprofilestub/group/sipprofile.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2006-2006 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: Definition of project MceClientStub
+*
+*/
+
+
+// To get the APP_LAYER_SYSTEMINCLUDE-definition
+#include <platform_paths.hrh>
+
+#include <data_caging_paths.hrh>
+
+TARGET sipprofilecli.dll
+TARGETTYPE dll
+UID 0x1000008d 0x00000113 // Experimental UID
+
+CAPABILITY CAP_GENERAL_DLL
+VENDORID VID_DEFAULT
+
+SOURCEPATH ../src
+SOURCE sipmanagedprofileregistrystub.cpp
+SOURCE sipmanagedprofilestub.cpp
+SOURCE sipprofileregistrybasestub.cpp
+SOURCE sipprofileregistrystub.cpp
+SOURCE sipprofilestub.cpp
+SOURCE sipstub.cpp sipprofilealrcontroller.cpp
+
+
+USERINCLUDE ../inc
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE
+
+LIBRARY euser.lib
+LIBRARY bafl.lib
+
+EXPORTUNFROZEN
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipprofilestub/inc/sipprofile.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,343 @@
+/*
+* Copyright (c) 2003 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: The class providing profile data of SIP service provider
+*
+*/
+
+
+#ifndef CSIPPROFILE_H
+#define CSIPPROFILE_H
+
+// INCLUDES
+#include <e32base.h>
+#include <e32std.h>
+#include <badesca.h>
+#include "sipregistrationcontext.h"
+#include "sipprofiletypeinfo.h"
+
+// FORWARD DECLARATIONS
+class CSIPConcreteProfile;
+class CSIPProfileRegistry;
+class CSIPProfileRegistryBase;
+
+/**
+* SIP Profile ID which value is type of TUint32
+*/
+const TUint32 KSIPProfileId = 1;
+
+/**
+* SIP Provider Name which value is type of TDesC8
+*/
+const TUint32 KSIPProviderName = 2;
+
+/**
+* Access Point ID which value is type of TUint32
+*/
+const TUint32 KSIPAccessPointId = 3;
+
+/**
+* Signaling compression (SigComp) which value is type of TBool.
+* ETrue indicates that SigComp is enabled
+*/
+const TUint32 KSIPSigComp = 4;
+
+/**
+* Security Negotiation which value is type of TBool. ETrue indicates that
+* Security Negotiation is enabled
+*/
+const TUint32 KSIPSecurityNegotiation = 5;
+
+/**
+* Auto Registration which value is type of TBool. ETrue indicates that
+* profile is enabled for auto registration
+*/
+const TUint32 KSIPAutoRegistration = 6;
+
+/**
+* Defined user's address-of-record which value is type of TDesC8
+*/
+const TUint32 KSIPUserAor = 7;
+
+/**
+* Registration which value is type of TBool. ETrue indicates that
+* profile is registered
+*/
+const TUint32 KSIPProfileRegistered = 8;
+
+/**
+* Uers's registered address-of-records which value is of type MDesC8Array.
+* Note that array will contain AORs only in case the profile is registered.
+*/
+const TUint32 KSIPRegisteredAors = 9;
+
+/**
+* Negotiated security mechanism during registration procedure which value
+* is of type TDesC8.
+* Note that descriptor will contain value only in case the profile is
+* registered.
+*/
+const TUint32 KSIPNegotiatedSecurityMechanism = 10;
+
+/**
+* Default profile which value is type of TBool.
+* ETrue indicates that profile is default
+*/
+const TUint32 KSIPDefaultProfile = 11;
+
+/**
+* "Contact" header parameters used during registration which value
+*is of type MDesC8Array. Array element contains one "Contact" header
+* parameter.
+*/
+const TUint32 KSIPContactHeaderParams = 12;
+
+/**
+* SIP Registrar
+*/
+const TUint32 KSIPRegistrar = 130;
+
+/**
+* SIP Outbound Proxy
+*/
+const TUint32 KSIPOutboundProxy = 131;
+
+/**
+* HTTP Digest user name which value is type of TDesC8
+*/
+const TUint32 KSIPDigestUserName = 150;
+
+/**
+* HTTP Digest realm which value is type of TDesC8
+*/
+const TUint32 KSIPDigestRealm = 151;
+
+/**
+* SIP server's address which value is of type TDesC8
+*/
+const TUint32 KSIPServerAddress = 152;
+
+// CLASS DECLARATION
+/**
+* @publishedAll
+* @released
+*
+* Class contains profile information of particular SIP service
+* provider. Class provides functions for quering profile parameter
+* values.
+* @lib sipprofilecli.lib
+*/
+class CSIPProfile: public CBase, public MSIPRegistrationContext
+ {
+ public: // Constructors and destructor
+ /**
+ * Destructor.
+ * @capability NetworkServices
+ */
+ IMPORT_C ~CSIPProfile();
+
+ public: // New functions
+ /**
+ * Gets profile type information
+ * @return profile type information
+ */
+ IMPORT_C const TSIPProfileTypeInfo& Type() const;
+
+ /**
+ * Gets profile parameter
+ * @param aParam a parameter to get
+ * @param aVal on return will contain parameter value
+ * @return KErrNotFound if parameter was not found, KErrNone otherwise
+ */
+ IMPORT_C TInt GetParameter(TUint32 aParam, TDesC8 const *& aVal) const;
+
+ /**
+ * Gets profile parameter
+ * @param aParam a parameter to get
+ * @param aVal on return will contain parameter value
+ * @return KErrNotFound if parameter was not found, KErrNone otherwise
+ */
+ IMPORT_C TInt GetParameter(TUint32 aParam, TUint32& aVal) const;
+
+ /**
+ * Gets profile parameter
+ * @param aParam a parameter to get
+ * @param aVal on return will contain parameter value
+ * @return KErrNotFound if parameter was not found, KErrNone otherwise
+ */
+ IMPORT_C TInt GetParameter(TUint32 aParam, TBool& aVal) const;
+
+ /**
+ * Gets profile parameter
+ * @param aParam a parameter to get
+ * @param aVal on return will contain parameter value
+ * @return KErrNotFound if parameter was not found, KErrNone otherwise
+ */
+ IMPORT_C TInt GetParameter(TUint32 aParam, MDesC8Array const *& aVal) const;
+
+ /**
+ * Gets profile parameter that is defined for a particular SIP server
+ * @param aServer a SIP server type
+ * @param aParam a parameter to get
+ * @param aVal on return will contain parameter value
+ * @return KErrNotFound if parameter was not found, KErrNone otherwise
+ */
+ IMPORT_C TInt GetParameter(TUint32 aServerType, TUint32 aParam, TDesC8 const *& aVal) const;
+
+ public: //Functions from base class
+ /**
+ * Tests if the registration context can be
+ * used for creating SIP messages/dialogs
+ * Profile can be used, when CSIPProfileRegistry::IsEnabled() == ETrue
+ * and Status() == ERegistered.
+ * @return ETrue if can be used, EFalse otherwise
+ */
+ TBool IsContextActive() const;
+
+ /**
+ *
+ * For internal use only
+ * @return context id
+ */
+ TUint32 ContextId() const;
+
+
+ public: //New functions
+
+ /**
+ * Two-phased constructor.
+ * @param aSIPRegistry a SIP profile client providing connection to SIP
+ * profile server.
+ */
+
+ static CSIPProfile* NewL(CSIPProfileRegistry* aSIPRegistry);
+
+ /**
+ * Two-phased constructor.
+ * @param aSIPRegistry a SIP profile client providing connection to SIP
+ * profile server.
+ * Constructs an object and adds the pointer to the cleanup stack;
+ */
+
+ static CSIPProfile* NewLC(CSIPProfileRegistry* aSIPRegistry);
+
+ /**
+ * Sets profiles enabled state
+ * @param aEnabled ETrue if enabled
+ */
+
+ void SetEnabled(TBool aEnabled);
+
+ /**
+ * Sets concrete profile that holds actual data
+ * @param aProfile profile instance containing data
+ */
+
+ void SetConcreteProfile(CSIPConcreteProfile* aProfile);
+
+ /**
+ * Clears concrete profile that holds actual data
+ */
+
+ void ClearConcreteProfile();
+
+ /**
+ * Gets concrete profile that holds actual data
+ * @return concrete profile holding data
+ */
+
+ CSIPConcreteProfile& ConcreteProfile();
+
+ /**
+ * Gets concrete profile that holds actual data
+ * @return concrete profile holding data
+ */
+
+ const CSIPConcreteProfile& ConcreteProfile() const;
+
+ /**
+ * Checks if the profile is enabled
+ * @return ETrue if enabled, EFalse otherwise
+ */
+
+ TBool IsEnabled() const;
+
+ /**
+ * Gets last occurred error during registration
+ * @return last occurred error code, KErrNone if no error
+ */
+ TInt LastRegistrationError() const;
+
+ /**
+ * Checks if two profiles are equal
+ * @return ETrue if equal
+ */
+ TBool operator==(const CSIPProfile&
+ aProfile) const;
+
+ /**
+ * sets pointer to registry for profile
+ */
+ void SetRegistry(CSIPProfileRegistryBase* aRegistry);
+
+ /**
+ * Clears pointer to registry from profile
+ */
+ void ClearRegistry();
+
+ protected:
+
+ /**
+ * Constructor.
+ */
+ CSIPProfile(CSIPProfileRegistryBase* aRegistry);
+
+ /**
+ * 2nd phase constructor.
+ */
+ void ConstructL();
+
+ protected:
+
+ CSIPConcreteProfile* iSIPProfile;
+ CSIPProfileRegistryBase* iSIPProfileRegistry;
+
+ // Stub data
+
+ public:
+
+ TBool iEnabled;
+ TBool iIsDefaultProfile;
+
+ TSIPProfileTypeInfo iTypeInfo;
+
+ // Value iTUint32Value is set to aVal when calling
+ // GetParameter(TUint32 aParam, TUint32& aVal)
+ // if iTUint32ValueError == KErrNone.
+ // iTUint32ValueError is returned in any case
+ TUint32 iTUint32Value;
+ TInt iTUint32ValueError;
+
+ // Value iTBoolValue is set to aVal when calling
+ // GetParameter(TUint32 aParam, TBool& aVal)
+ // if iTBoolValueError == KErrNone.
+ // iTBoolValueError is returned in any case
+ TBool iTBoolValue;
+ TInt iTBoolValueError;
+
+ CDesC8Array* iArray;
+
+ //
+ };
+
+#endif // CSIPPROFILE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipprofilestub/inc/sipprofileregistry.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,185 @@
+/*
+* Copyright (c) 2003 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: The class for using SIP profiles
+*
+*/
+
+
+#ifndef CSIPPROFILEREGISTRY_H
+#define CSIPPROFILEREGISTRY_H
+
+// INCLUDES
+#include <e32base.h>
+#include <e32std.h>
+#include <badesca.h>
+#include "sipprofileregistrybase.h"
+
+// FORWARD DECLARATIONS
+class CSIP;
+class CSIPConnection;
+class CSIPProfile;
+class MSIPProfileRegistryObserver;
+class MSIPConnectionObserver;
+
+// STUB stuff
+
+typedef TInt TSIPProfileBehavior;
+const TSIPProfileBehavior KRegistryLeaveAtConstruct = 1;
+const TSIPProfileBehavior KSIPProfileIdFetchFails = 2;
+const TSIPProfileBehavior KSIPIapIdFetchFails = 3;
+const TSIPProfileBehavior KSIPConnectionLeaveAtConstruct = 4;
+
+class CSIPProfileBehaviorTls : public CBase
+ {
+public:
+ static void OpenL();
+ static void Close();
+
+ static CSIPProfileBehaviorTls* Storage();
+
+ void Reset();
+
+private:
+
+ CSIPProfileBehaviorTls();
+ ~CSIPProfileBehaviorTls();
+
+public:
+
+ TSIPProfileBehavior iRegistryBehavior;
+ TSIPProfileBehavior iProfileBehavior;
+ TSIPProfileBehavior iConnectionBehavior;
+ };
+
+
+
+// CLASS DECLARATION
+/**
+* @publishedAll
+* @released
+*
+* The class for retrieving SIP profiles from permanent storage.
+* This class provides services for retreiving SIP profiles
+* and enabling/disabling them for the usage.
+*
+* The user can create only one instance of this class (a singleton class).
+*
+* @lib sipprofilecli.lib
+*/
+class CSIPProfileRegistry: public CSIPProfileRegistryBase
+ {
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ * This constructor should be used if the client intends
+ * to use SIP services with profiles.
+ * @param aSip a SIP client providing connection to SIP stack.
+ * @param aObserver a observer for SIP profile change events.
+ */
+ IMPORT_C static CSIPProfileRegistry* NewL(
+ CSIP& aSip,
+ MSIPProfileRegistryObserver& aObserver);
+
+ /**
+ * Two-phased constructor.
+ * This constructor should be used if the client intends
+ * to use SIP services with profiles.
+ * Constructs an object and adds the pointer to the cleanup stack;
+ * @param aSip a SIP client providing connection to SIP stack.
+ * @param aObserver a observer for SIP profile change events.
+ */
+ IMPORT_C static CSIPProfileRegistry* NewLC(
+ CSIP& aSip,
+ MSIPProfileRegistryObserver& aObserver);
+
+ /**
+ * Destructor
+ */
+ IMPORT_C ~CSIPProfileRegistry();
+
+ public: // New functions
+ /**
+ * Gets handle to the SIP server
+ * @return handle to the SIP server
+ */
+ IMPORT_C CSIP& SIP() const;
+
+ /**
+ * Gets the SIP connection to be used with this SIP profile.
+ * @pre IsEnabled() == ETrue
+ * @param aProfile a sip profile
+ * @return a SIP connection to be used; the owneship is transfered
+ * @leave KErrNoMemory if out of memory
+ * @capability NetworkServices
+ */
+ IMPORT_C CSIPConnection* ConnectionL(
+ CSIPProfile& aProfile);
+
+ /**
+ * Enables the SIP profile for use.
+ * Enabling the SIP profile will cause the SIP profile to
+ * be registered if its status was unregistered.
+ * The user must check the profile status after calling this
+ * function. In case the profile is not registered the user must
+ * wait until the it is notified about profile registration
+ * on MSIPProfileRegistryObserver-callback interface.
+ * @param aProfile a sip profile to enable
+ * @param aObserver a observer for SIP connection events
+ * @leave KErrNotFound if non-existing profile is provided
+ * @capability NetworkServices
+ */
+ IMPORT_C void EnableL(
+ CSIPProfile& aProfile,
+ MSIPConnectionObserver &aObserver);
+
+ /**
+ * Disables the usage of SIP profile
+ * @param aProfile a sip profile to disable
+ * @return KErrNone if SIP profile was successfully disabled;
+ * system wide error otherwise
+ * @capability NetworkServices
+ */
+ IMPORT_C TInt Disable(CSIPProfile& aProfile);
+
+ /**
+ * Tests is the SIP profile enabled for the use
+ * @param aProfile a SIP profile to be checked
+ * @return ETrue if SIP profile is enabled; EFalse otherwise
+ */
+ IMPORT_C TBool IsEnabled(const CSIPProfile& aProfile) const;
+
+ public:
+
+ CSIPProfile* NewInstanceL();
+
+ private:
+
+ CSIPProfileRegistry();
+ CSIPProfileRegistry(CSIP& aSip, MSIPProfileRegistryObserver& aObserver);
+
+ void ConstructL();
+
+ public:
+
+ TBool iProfileDisabled;
+ mutable TBool iProfileEnabled;
+
+ private:
+
+ CSIP& iSip;
+ MSIPConnectionObserver* iConnectionObserver;
+
+ };
+
+#endif // CSIPPROFILEREGISTRY_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipprofilestub/src/sipmanagedprofileregistrystub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,164 @@
+/*
+* Copyright (c) 2003 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: implementation
+*
+*/
+
+
+// INCLUDE FILES
+
+#include "sip.h"
+#include "sipconnection.h"
+#include "sipprofileregistry.h"
+#include "sipmanagedprofileregistry.h"
+#include "sipprofileregistryobserver.h"
+#include "sipprofile.h"
+#include "sipmanagedprofile.h"
+//#include "sipconcreteprofile.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+EXPORT_C void CSIPManagedProfileRegistry::SaveL(CSIPProfile& /*aSIPProfile*/)
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPManagedProfileRegistry* CSIPManagedProfileRegistry::NewL(
+ MSIPProfileRegistryObserver& aObserver)
+ {
+ CSIPManagedProfileRegistry* self = CSIPManagedProfileRegistry::NewLC(aObserver);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPManagedProfileRegistry* CSIPManagedProfileRegistry::NewLC(
+ MSIPProfileRegistryObserver& aObserver)
+ {
+ CSIPManagedProfileRegistry* self = new (ELeave) CSIPManagedProfileRegistry(aObserver);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::~CSIPManagedProfileRegistry
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPManagedProfileRegistry::~CSIPManagedProfileRegistry()
+ {
+
+ }
+/*
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::EnableL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPManagedProfileRegistry::EnableL(CSIPProfile& aSIPProfile,
+ MSIPConnectionObserver& aObserver)
+ {
+ //__ASSERT_ALWAYS (!aSIPProfile.IsEnabled(), User::Leave (KErrArgument));
+ //aSIPProfile.ConcreteProfile().SetLastRegistrationError(KErrNone);
+ //iConnectionObserver = &aObserver;
+
+ //EnableProfileL(aSIPProfile);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::Disable
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CSIPManagedProfileRegistry::Disable(CSIPProfile& /*aProfile)
+ {
+ TInt err = KErrNone;
+ //aProfile.ConcreteProfile().SetLastRegistrationError(KErrNone);
+ //TRAPD(err, DisableProfileL(aProfile));
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::SIP
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIP& CSIPManagedProfileRegistry::SIP() const
+ {
+ return iSip;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::ConnectionL
+// -----------------------------------------------------------------------------
+//
+//EXPORT_C CSIPConnection* CSIPManagedProfileRegistry::ConnectionL(
+// /*CSIPProfile& aSIPProfile)
+// {
+ //TUint32 apId(0);
+ //__ASSERT_ALWAYS (iConnectionObserver != 0, User::Leave (KErrArgument));
+ //aSIPProfile.GetParameter(KSIPAccessPointId, apId);
+ //CSIPConnection* connection = iSip.Connection(apId);
+ //if (connection == 0)
+ // {
+ // connection = CSIPConnection::NewL(iSip, apId,
+ // *iConnectionObserver);
+ // }
+ //return connection;
+// }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::IsEnabled
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CSIPManagedProfileRegistry::IsEnabled(const CSIPProfile& /*aSIPProfile) const
+ {
+ //return aSIPProfile.IsEnabled();
+ return ETrue;
+ }
+*/
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::CSIPManagedProfileRegistry
+// -----------------------------------------------------------------------------
+//
+CSIPManagedProfileRegistry::CSIPManagedProfileRegistry(
+ MSIPProfileRegistryObserver& aObserver)
+ : CSIPProfileRegistryBase( aObserver )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPManagedProfileRegistry::ConstructL()
+ {
+// BaseConstructL();
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfileRegistry::NewInstanceL
+// -----------------------------------------------------------------------------
+//
+CSIPProfile* CSIPManagedProfileRegistry::NewInstanceL()
+ {
+ return CSIPManagedProfile::NewL(this);
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipprofilestub/src/sipmanagedprofilestub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,141 @@
+/*
+* Copyright (c) 2002 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: implementation
+*
+*/
+
+
+// INCLUDE FILES
+
+#include "sipprofile.h"
+#include "sipmanagedprofile.h"
+#include "sipprofileregistry.h"
+#include "sipmanagedprofileregistry.h"
+
+/*
+
+//#include "sipconcreteprofile.h"
+//#include "SIPProfileTypeInfo.h"
+//_LIT8(KSIPProfileExtenstionParameter, "%u");
+//const TUint KProfileBufferSize = 25;
+
+_LIT8(KSIPProfileDefAOR, "user@aa");
+ /**
+ * Sets profile parameter
+ * @param aParam a parameter to set
+ * @param aVal values to set; an empty array resets the value
+ * @return KErrNotFound if parameter was not found,
+ * KErrNoMemory if out of memory
+ * KErrNone otherwise
+ */
+EXPORT_C TInt CSIPManagedProfile::SetParameter( TUint32 /*aParam*/,
+ const MDesC8Array& /*aVal*/ )
+ {
+ return KErrNone;
+ }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfile::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CSIPManagedProfile* CSIPManagedProfile::NewL(CSIPManagedProfileRegistry* aSIPRegistry)
+ {
+ CSIPManagedProfile* self = CSIPManagedProfile::NewLC (aSIPRegistry);
+ CleanupStack::Pop();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfile::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CSIPManagedProfile* CSIPManagedProfile::NewLC(CSIPManagedProfileRegistry* aSIPRegistry)
+ {
+ CSIPManagedProfile* self = new(ELeave)CSIPManagedProfile(aSIPRegistry);
+ CleanupStack::PushL (self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfile::~CSIPManagedProfile
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPManagedProfile::~CSIPManagedProfile()
+ {
+ }
+/*
+// -----------------------------------------------------------------------------
+// CSIPManagedProfile::GetParameter
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CSIPManagedProfile::GetParameter(TUint32 aParam, TDesC8 const *& aVal ) const
+ {
+ const TDesC8& val= KSIPProfileDefAOR;
+ aVal = &val;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfile::GetParameter
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CSIPManagedProfile::GetParameter(TUint32 aParam, TUint32& aVal) const
+ {
+ aVal = 1;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfile::GetParameter
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CSIPManagedProfile::GetParameter(TUint32 aParam, TBool& aVal) const
+ {
+ aVal = ETrue;
+ return KErrNone;
+ }
+*/
+// -----------------------------------------------------------------------------
+// CSIPManagedProfile::CSIPManagedProfile
+// -----------------------------------------------------------------------------
+//
+CSIPManagedProfile::CSIPManagedProfile(CSIPManagedProfileRegistry* aRegistry) :
+ CSIPProfile( aRegistry )
+ {
+ }
+
+/*
+// -----------------------------------------------------------------------------
+// CSIPManagedProfile::IsContextActive
+// -----------------------------------------------------------------------------
+//
+TBool CSIPManagedProfile::IsContextActive() const
+ {
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPManagedProfile::ContextId
+// -----------------------------------------------------------------------------
+//
+TUint32 CSIPManagedProfile::ContextId() const
+ {
+ return 1;
+ }
+*/
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipprofilestub/src/sipprofilealrcontroller.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2002 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: implementation
+*
+*/
+
+
+// INCLUDE FILES
+
+#include <sipprofilealrcontroller.h>
+
+
+// CSipProfileAlrController STUB
+CSipProfileAlrController* CSipProfileAlrController::NewL(
+ CSIPProfileRegistryBase& aRegistry,
+ MSipProfileAlrObserver& /*aObserver*/ )
+ {
+ return new( ELeave )CSipProfileAlrController( aRegistry );
+ }
+
+CSipProfileAlrController::~CSipProfileAlrController()
+ {
+ }
+
+void CSipProfileAlrController::AllowMigrationL(
+ TUint32 /*aProfileId*/,
+ TUint32 aIapId )
+ {
+ delete HBufC::NewL( 1 );
+ //iAllowMigrationCalled = ETrue;
+ //iLastUsedIap = aIapId;
+ }
+
+void CSipProfileAlrController::DisallowMigrationL(
+ TUint32 /*aProfileId*/,
+ TUint32 aIapId )
+ {
+ delete HBufC::NewL( 1 );
+ //iDisallowMigrationCalled = ETrue;
+ //iLastUsedIap = aIapId;
+ }
+
+void CSipProfileAlrController::RefreshIapAvailabilityL(
+ TUint32 /*aProfileId*/ )
+ {
+ delete HBufC::NewL( 1 );
+ }
+
+CSipProfileAlrController::CSipProfileAlrController(
+ CSIPProfileRegistryBase& aRegistry )
+ : iRegistry( aRegistry )
+ {
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipprofilestub/src/sipprofileregistrybasestub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,383 @@
+/*
+* Copyright (c) 2003 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: implementation
+*
+*/
+
+
+// INCLUDE FILES
+
+#include "sipprofile.h"
+#include "sip.h"
+#include "sipprofileregistrybase.h"
+#include "sipprofileregistryobserver.h"
+#include "sipprofileregistry.h"
+#include "sipprofileregistryobserver.h"
+#include "sipmanagedprofile.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::~CSIPProfileRegistryBase
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPProfileRegistryBase::~CSIPProfileRegistryBase()
+ {
+
+
+ //iProfiles.ResetAndDestroy();
+ //iProfiles.Close();
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::ProfilesL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPProfileRegistryBase::ProfilesL(
+ RPointerArray<CSIPProfile>& aProfiles)
+ {
+ // stubs
+ CSIPProfileRegistry* reg = (CSIPProfileRegistry*) this;
+ CSIPProfile* profile = CSIPProfile::NewLC(reg);
+
+ aProfiles.AppendL ( profile );
+
+ CleanupStack::Pop( profile );
+
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::ProfilesL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPProfileRegistryBase::ProfilesL(
+ const TSIPProfileTypeInfo& /*aType*/,
+ RPointerArray<CSIPProfile>& aProfiles)
+ {
+ // stubs
+ CSIPProfileRegistry* reg = (CSIPProfileRegistry*) this;
+
+ CSIPProfile* profile = CSIPProfile::NewLC( reg );
+ aProfiles.AppendL ( profile );
+
+ CleanupStack::Pop( profile );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::ProfilesL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPProfileRegistryBase::ProfilesL(
+ const TDesC8& /*aAOR*/,
+ RPointerArray<CSIPProfile>& aProfiles)
+ {
+ // stubs
+ ProfilesL( aProfiles );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::ProfilesCommonL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::ProfilesCommonL(
+ RPointerArray<CSIPProfile>& /*aProfiles*/,
+ CSIPConcreteProfileHolder* /*aHolder */)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::ProfileL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPProfile* CSIPProfileRegistryBase::ProfileL(TUint32 /*aId*/)
+ {
+ return NewInstanceL();
+ }
+
+
+//
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::DefaultProfileL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPProfile* CSIPProfileRegistryBase::DefaultProfileL()
+ {
+ CSIPProfile* defaultProfile = NewInstanceL();
+ defaultProfile->iIsDefaultProfile = ETrue;
+ return defaultProfile;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::SupportedProfileTypesL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPProfileRegistryBase::SupportedProfileTypesL(
+ RArray<TSIPProfileTypeInfo>& /*aSupportedProfileTypes*/ )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::LastRegistrationError
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CSIPProfileRegistryBase::LastRegistrationError(
+ const CSIPProfile& /*aProfile*/) const
+ {
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::CSIPProfileRegistryBase
+// -----------------------------------------------------------------------------
+//
+CSIPProfileRegistryBase::CSIPProfileRegistryBase(
+ MSIPProfileRegistryObserver& aObserver):
+ iObserver(aObserver)
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::ProfileDeleted
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::ProfileDeleted(CSIPProfile& /*aProfile*/)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::EnableProfileL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::EnableProfileL(
+ CSIPProfile& /*aProfile*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::DisableProfileL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::DisableProfileL(CSIPProfile& /*aProfile*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::UsageL
+// -----------------------------------------------------------------------------
+//
+TInt CSIPProfileRegistryBase::UsageL(const CSIPProfile& /*aProfile*/) const
+ {
+ User::Leave( KErrNotSupported );
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::AddProfileL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::AddProfileL(CSIPProfile& /*aProfile*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::UpdateProfileL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::UpdateProfileL(CSIPProfile& /*aProfile*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::RemoveProfileL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::RemoveProfileL(CSIPProfile& /*aProfile*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::IsDefaultProfileL
+// -----------------------------------------------------------------------------
+//
+TBool CSIPProfileRegistryBase::IsDefaultProfileL(const CSIPProfile& /*aProfile*/)
+ {
+ User::Leave( KErrNotSupported );
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::RegistrationStatusChangedL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::NegotiatedSecurityMechanismL(
+ CSIPConcreteProfile& /*aProfile*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::RegisteredAORsL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::RegisteredAORsL(CSIPConcreteProfile& /*aProfile*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::SIPProfileL
+// -----------------------------------------------------------------------------
+//
+CSIPProfile* CSIPProfileRegistryBase::SIPProfileL(TUint32 aId, TInt /*aSize*/)
+ {
+ __ASSERT_ALWAYS (aId > 1, User::Leave (KErrArgument));
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::StoreProfileL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::StoreProfileL(CSIPProfileCleanupItem* /*aCleanupItem*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::StoreProfileL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::StoreArrayL(
+ RPointerArray<CSIPConcreteProfile>& /*aProfiles*/,
+ RPointerArray<CSIPProfile>& /*aRetProfiles*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::ProfileItemL
+// -----------------------------------------------------------------------------
+//
+/*
+CSIPProfileItem* CSIPProfileRegistryBase::ProfileItemL(TUint aProfileId )
+ {
+ User::Leave( KErrNotSupported );
+ return NULL;
+ }
+*/
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::ProfileIndex
+// -----------------------------------------------------------------------------
+//
+TInt CSIPProfileRegistryBase::ProfileIndex (TUint /*profileId*/)
+ {
+ return 0;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::ProfileItemByIndex
+// -----------------------------------------------------------------------------
+//
+CSIPProfileItem* CSIPProfileRegistryBase::ProfileItemByIndex(TUint /*aIndex*/)
+ {
+ return NULL;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::RegistrationStatusChangedL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::RegistrationStatusChangedL(TUint32 /*aProfileId*/,
+ TInt /*aStatus*/,
+ TUint32 /*aStatusId*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::UpdatedL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::UpdatedL(TUint32 /*aProfileId*/, TUint /*aSize*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::AddedL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::AddedL(TUint32 /*aProfileId*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::RemovedL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::RemovedL(TUint32 /*aProfileId*/)
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::ErrorOccurredL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::ErrorOccurredL(TUint32 /*aProfileId*/,
+ TInt /*aStatus*/,
+ TInt /*aError*/ )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::BaseConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::BaseConstructL()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::CrashRevert
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::CrashRevert (TAny* /*aItem*/)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistryBase::LocalCrashRevert
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistryBase::LocalCrashRevert (TAny* /*aItem*/)
+ {
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipprofilestub/src/sipprofileregistrystub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,208 @@
+/*
+* Copyright (c) 2003 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: implementation
+*
+*/
+
+
+// INCLUDE FILES
+
+#include "sip.h"
+#include "sipconnection.h"
+#include "sipprofileregistry.h"
+#include "sipprofileregistryobserver.h"
+#include "sipprofile.h"
+//#include "sipconcreteprofile.h"
+
+// STUB stuff
+
+void CSIPProfileBehaviorTls::OpenL()
+ {
+ CSIPProfileBehaviorTls* self = new (ELeave) CSIPProfileBehaviorTls();
+ Dll::SetTls( self );
+ }
+
+void CSIPProfileBehaviorTls::Close ()
+ {
+ CSIPProfileBehaviorTls* self = Storage();
+ delete self;
+ Dll::SetTls( NULL );
+ }
+
+
+CSIPProfileBehaviorTls* CSIPProfileBehaviorTls::Storage()
+ {
+ return static_cast<CSIPProfileBehaviorTls*>(Dll::Tls());
+ }
+
+void CSIPProfileBehaviorTls::Reset()
+ {
+ iRegistryBehavior = 0;
+ iProfileBehavior = 0;
+ iConnectionBehavior = 0;
+ }
+
+CSIPProfileBehaviorTls::CSIPProfileBehaviorTls()
+ {
+ }
+
+CSIPProfileBehaviorTls::~CSIPProfileBehaviorTls()
+ {
+ }
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPProfileRegistry* CSIPProfileRegistry::NewL(
+ CSIP& aSip,
+ MSIPProfileRegistryObserver& aObserver)
+ {
+ CSIPProfileRegistry* self = CSIPProfileRegistry::NewLC(aSip, aObserver);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPProfileRegistry* CSIPProfileRegistry::NewLC(
+ CSIP& aSip,
+ MSIPProfileRegistryObserver& aObserver)
+ {
+ CSIPProfileRegistry* self = new (ELeave) CSIPProfileRegistry(aSip, aObserver);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::~CSIPProfileRegistry
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPProfileRegistry::~CSIPProfileRegistry()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::EnableL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPProfileRegistry::EnableL(CSIPProfile& /*aSIPProfile*/,
+ MSIPConnectionObserver& /*&aObserver*/)
+ {
+ //__ASSERT_ALWAYS (!aSIPProfile.IsEnabled(), User::Leave (KErrArgument));
+ //aSIPProfile.ConcreteProfile().SetLastRegistrationError(KErrNone);
+ //iConnectionObserver = &aObserver;
+
+ //EnableProfileL(aSIPProfile);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::Disable
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CSIPProfileRegistry::Disable(CSIPProfile& /*aProfile*/)
+ {
+ TInt err = KErrNone;
+ iProfileDisabled = ETrue;
+ //aProfile.ConcreteProfile().SetLastRegistrationError(KErrNone);
+ //TRAPD(err, DisableProfileL(aProfile));
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::SIP
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIP& CSIPProfileRegistry::SIP() const
+ {
+ return iSip;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::ConnectionL
+// -----------------------------------------------------------------------------
+//
+//EXPORT_C CSIPConnection* CSIPProfileRegistry::ConnectionL(
+// /*CSIPProfile& aSIPProfile*/)
+// {
+ //TUint32 apId(0);
+ //__ASSERT_ALWAYS (iConnectionObserver != 0, User::Leave (KErrArgument));
+ //aSIPProfile.GetParameter(KSIPAccessPointId, apId);
+ //CSIPConnection* connection = iSip.Connection(apId);
+ //if (connection == 0)
+ // {
+ // connection = CSIPConnection::NewL(iSip, apId,
+ // *iConnectionObserver);
+ // }
+ //return connection;
+// }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::IsEnabled
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CSIPProfileRegistry::IsEnabled(const CSIPProfile& /*aSIPProfile*/) const
+ {
+ //iProfileEnabled = ETrue;
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::CSIPProfileRegistry
+// -----------------------------------------------------------------------------
+//
+CSIPProfileRegistry::CSIPProfileRegistry(
+ CSIP& aSip,
+ MSIPProfileRegistryObserver& aObserver):
+ CSIPProfileRegistryBase(aObserver), iSip(aSip)
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileRegistry::ConstructL()
+ {
+ CSIPProfileBehaviorTls* tls = CSIPProfileBehaviorTls::Storage();
+ if ( tls )
+ {
+ if ( tls->iRegistryBehavior == KRegistryLeaveAtConstruct )
+ {
+ User::Leave( KErrGeneral );
+ }
+ }
+ BaseConstructL();
+
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileRegistry::NewInstanceL
+// -----------------------------------------------------------------------------
+//
+CSIPProfile* CSIPProfileRegistry::NewInstanceL()
+ {
+ return CSIPProfile::NewL(this);
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipprofilestub/src/sipprofilestub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,198 @@
+/*
+* Copyright (c) 2002 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: implementation
+*
+*/
+
+
+// INCLUDE FILES
+
+#include "sipprofile.h"
+//#include "sipmanagedprofile.h"
+#include "sipprofileregistry.h"
+//#include "sipconcreteprofile.h"
+//#include "SIPProfileTypeInfo.h"
+//_LIT8(KSIPProfileExtenstionParameter, "%u");
+//const TUint KProfileBufferSize = 25;
+
+_LIT8(KSIPProfileDefAOR, "user@aa");
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CSIPProfile* CSIPProfile::NewL(CSIPProfileRegistry* aSIPRegistry)
+ {
+ CSIPProfile* self = CSIPProfile::NewLC (aSIPRegistry);
+ CleanupStack::Pop();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CSIPProfile* CSIPProfile::NewLC(CSIPProfileRegistry* aSIPRegistry)
+ {
+ CSIPProfile* self = new(ELeave)CSIPProfile(aSIPRegistry);
+ CleanupStack::PushL (self);
+ self->ConstructL ();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::~CSIPProfile
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPProfile::~CSIPProfile()
+ {
+ delete iArray;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TSIPProfileTypeInfo& CSIPProfile::Type() const
+ {
+ return iTypeInfo;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::GetParameter
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CSIPProfile::GetParameter( TUint32 /*aParam*/,
+ TDesC8 const *& aVal ) const
+ {
+ const TDesC8& val= KSIPProfileDefAOR;
+ aVal = &val;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::GetParameter
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CSIPProfile::GetParameter(TUint32 aParam, TUint32& aVal) const
+ {
+ CSIPProfileBehaviorTls* tls = CSIPProfileBehaviorTls::Storage();
+ if ( tls )
+ {
+ if ( tls->iProfileBehavior == KSIPProfileIdFetchFails &&
+ aParam == KSIPProfileId )
+ {
+ return KErrNotFound;
+ }
+ else if ( tls->iProfileBehavior == KSIPIapIdFetchFails &&
+ aParam == KSIPAccessPointId )
+ {
+ return KErrNotFound;
+ }
+ }
+
+ if ( iTUint32ValueError == KErrNone )
+ {
+ aVal = iTUint32Value;
+ }
+ return iTUint32ValueError;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::GetParameter
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CSIPProfile::GetParameter(TUint32 aParam, TBool& aVal) const
+ {
+ if ( iTBoolValueError == KErrNone )
+ {
+ if ( aParam == KSIPDefaultProfile )
+ {
+ aVal = iIsDefaultProfile;
+ }
+ else
+ {
+ aVal = iTBoolValue;
+ }
+ }
+
+ return iTBoolValueError;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::GetParameter
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CSIPProfile::GetParameter( TUint32 /*aParam*/,
+ MDesC8Array const *& aVal) const
+ {
+ if ( iArray )
+ {
+ aVal = iArray;
+ }
+ else
+ {
+ aVal = NULL;
+ }
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::CSIPProfile
+// -----------------------------------------------------------------------------
+//
+CSIPProfile::CSIPProfile(CSIPProfileRegistryBase* aRegistry):
+ iSIPProfileRegistry(aRegistry),
+ iEnabled(EFalse),
+ iTUint32Value( 1 ),
+ iTUint32ValueError( KErrNone ),
+ iTBoolValue( ETrue ),
+ iTBoolValueError( KErrNone ),
+ iIsDefaultProfile( EFalse )
+ {
+ iTypeInfo.iSIPProfileClass = TSIPProfileTypeInfo::EInternet;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfile::ConstructL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::IsContextActive
+// -----------------------------------------------------------------------------
+//
+TBool CSIPProfile::IsContextActive() const
+ {
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPProfile::ContextId
+// -----------------------------------------------------------------------------
+//
+TUint32 CSIPProfile::ContextId() const
+ {
+ return 1;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipprofilestub/src/sipstub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2002 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: implementation
+*
+*/
+
+
+// INCLUDE FILES
+
+#include <sip.h>
+
+
+
+EXPORT_C CSIP* CSIP::NewL(const TUid& /*aUid*/,
+ MSIPObserver& /*aObserver*/)
+ {
+ return new ( ELeave ) CSIP;
+ }
+
+
+EXPORT_C CSIP* CSIP::NewLC(const TUid& /*aUid*/,
+ MSIPObserver& /*aObserver*/)
+ {
+ CSIP* sip = new ( ELeave ) CSIP;
+ CleanupStack::PushL( sip );
+ return sip;
+ }
+
+
+EXPORT_C CSIP::~CSIP()
+ {
+ }
+
+
+
+EXPORT_C CDesC8Array* CSIP::SupportedSecurityMechanismsL() const
+ {
+ return NULL;
+ }
+
+
+EXPORT_C TBool CSIP::IsSigCompSupportedL() const
+ {
+ return EFalse;
+ }
+
+
+EXPORT_C HBufC8* CSIP::NegotiatedSecurityMechanismL(const TDesC8& /*aHop*/)
+ {
+ return NULL;
+ }
+
+
+EXPORT_C CSIPConnection* CSIP::Connection(TUint32 /*aIapId*/) const
+ {
+ return NULL;
+ }
+
+
+CSIPImplementation& CSIP::Implementation()
+ {
+ return *iImplementation;
+ }
+
+
+CSIP::CSIP()
+ {
+ }
+
+void CSIP::ConstructL(const TUid& /*aUid*/, MSIPObserver& /*aObserver*/)
+ {
+ }
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/lcapplication.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,106 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+//USER
+#include "lcapplication.h"
+#include "mustestdirector.h"
+#include <musmanagercommon.h>
+
+//SYSTEM
+#include <QDebug.h>
+#include <Qstring>
+
+LcHbApplication* LcHbApplication::self = 0;
+
+
+// -----------------------------------------------------------------------------
+// LcHbApplication::LcHbApplication
+// -----------------------------------------------------------------------------
+//
+LcHbApplication::LcHbApplication(int &argc, char *argv[], QString useCase) :
+ HbApplication(argc, argv)
+{
+ qDebug() << "LcHbApplication::LcHbApplication() ->";
+ self = this;
+ iTestDirector = CMusTestDirector::NewL();
+ setUseCase( useCase );
+ qDebug() << "LcHbApplication::LcHbApplication() -<";
+}
+
+// -----------------------------------------------------------------------------
+// LcHbApplication::~LcHbApplication
+// -----------------------------------------------------------------------------
+//
+LcHbApplication::~LcHbApplication()
+{
+ self = 0;
+}
+
+
+// -----------------------------------------------------------------------------
+// LcHbApplication::quit
+// -----------------------------------------------------------------------------
+//
+void LcHbApplication::quit()
+{
+ qDebug() << "LcHbApplication::quit()";
+ if (self) {
+ emit self->handleQuit();
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcHbApplication::quit
+// -----------------------------------------------------------------------------
+//
+void LcHbApplication::setUseCase( QString useCase )
+{
+ qDebug() << "LcHbApplication::setUseCase()";
+ if( useCase == "0") // live
+ {
+ qDebug() << "LcHbApplication::LiveUseCase()";
+ iTestDirector->ConfigureLiveSharing();
+ }
+ else if( useCase == "1") // clip
+ {
+ if (self) emit self->handleQuit();
+ }
+ else if( useCase == "2") // stil
+ {
+ if (self) emit self->handleQuit();
+ }
+ else if( useCase == "3") // EMusReceive
+ {
+ qDebug() << "LcHbApplication::ReceiveUseCase()";
+ iTestDirector->ConfigureReceiveSharing();
+ }
+ else if( useCase == "4") // EMusContinue
+ {
+ if (self) emit self->handleQuit();
+ }
+ else if( useCase == "5") // EMusTwoWayVideo
+ {
+ if (self) emit self->handleQuit();
+ }
+ else if( useCase == "6") // EMusReceiveTwoWayVideo
+ {
+ if (self) emit self->handleQuit();
+ }
+ else
+ {
+ if (self) emit self->handleQuit();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/lcapplication.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2009 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 LCAPPLICATION_H
+#define LCAPPLICATION_H
+
+#include <hbapplication.h>
+#include <QString.h>
+
+class CMusTestDirector;
+
+class LcHbApplication : public HbApplication
+{
+ Q_OBJECT
+ friend class UT_LcApplication;
+
+public:
+
+ LcHbApplication(int &argc, char *argv[],QString useCase);
+ ~LcHbApplication();
+
+signals:
+
+ void handleQuit();
+
+public slots:
+
+ //from QCoreApplication
+ static void quit();
+
+private:
+ void setUseCase( QString useCase );
+
+private: //data
+
+ static LcHbApplication* self;
+ CMusTestDirector* iTestDirector;
+};
+
+
+#endif //LCAPPLICATION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/main.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+//USER
+#include "lcapplication.h"
+
+//SYSTEM
+#include <lcviewmanager.h>
+#include <QObject.h>
+
+int main(int argc, char *argv[])
+{
+ int err=-1;
+ QString useCase = "0"; // live case
+ QString engineName("MultimediaSharing");
+ QString applicationName("Video Sharing");
+ if (argc >= 2)
+ {
+ useCase = QString::fromUtf8( argv[2] );
+ }
+ LcHbApplication app(argc,argv,useCase);
+ LcViewManager viewManager(engineName,applicationName);
+ QObject::connect( &app, SIGNAL( handleQuit() ),
+ &viewManager, SLOT( terminateSession() ),
+ Qt::QueuedConnection );
+
+ err = app.exec();
+ return err;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/moc_lcapplication.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,83 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'lcapplication.h'
+**
+** Created: Mon 14. Sep 11:48:03 2009
+** by: The Qt Meta Object Compiler version 61 (Qt 4.5.0-garden)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include "lcapplication.h"
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'lcapplication.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 61
+#error "This file was generated using the moc from 4.5.0-garden. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+static const uint qt_meta_data_LcHbApplication[] = {
+
+ // content:
+ 2, // revision
+ 0, // classname
+ 0, 0, // classinfo
+ 2, 12, // methods
+ 0, 0, // properties
+ 0, 0, // enums/sets
+ 0, 0, // constructors
+
+ // signals: signature, parameters, type, tag, flags
+ 17, 16, 16, 16, 0x05,
+
+ // slots: signature, parameters, type, tag, flags
+ 30, 16, 16, 16, 0x0a,
+
+ 0 // eod
+};
+
+static const char qt_meta_stringdata_LcHbApplication[] = {
+ "LcHbApplication\0\0handleQuit()\0quit()\0"
+};
+
+const QMetaObject LcHbApplication::staticMetaObject = {
+ { &HbApplication::staticMetaObject, qt_meta_stringdata_LcHbApplication,
+ qt_meta_data_LcHbApplication, 0 }
+};
+
+const QMetaObject *LcHbApplication::metaObject() const
+{
+ return &staticMetaObject;
+}
+
+void *LcHbApplication::qt_metacast(const char *_clname)
+{
+ if (!_clname) return 0;
+ if (!strcmp(_clname, qt_meta_stringdata_LcHbApplication))
+ return static_cast<void*>(const_cast< LcHbApplication*>(this));
+ return HbApplication::qt_metacast(_clname);
+}
+
+int LcHbApplication::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+ _id = HbApplication::qt_metacall(_c, _id, _a);
+ if (_id < 0)
+ return _id;
+ if (_c == QMetaObject::InvokeMetaMethod) {
+ switch (_id) {
+ case 0: handleQuit(); break;
+ case 1: quit(); break;
+ default: ;
+ }
+ _id -= 2;
+ }
+ return _id;
+}
+
+// SIGNAL 0
+void LcHbApplication::handleQuit()
+{
+ QMetaObject::activate(this, &staticMetaObject, 0, 0);
+}
+QT_END_MOC_NAMESPACE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/must.loc Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,13 @@
+// ============================================================================
+// * Generated by qmake (2.01a) (Qt 4.5.0-garden) on: Mon 14. Sep 11:50:02 2009
+// * This file is generated by qmake and should not be modified by the
+// * user.
+// ============================================================================
+
+#ifdef LANGUAGE_SC
+#define STRING_r_short_caption "must"
+#define STRING_r_caption "must"
+#else
+#define STRING_r_short_caption "must"
+#define STRING_r_caption "must"
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/must.pro Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 2009 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:
+#
+#
+
+TEMPLATE = app
+TARGET = must
+CONFIG += hb
+
+# Input
+HEADERS += lcapplication.h
+HEADERS += mustestdirector.h
+INCLUDEPATH += ..\..\..\..\..\inc\
+
+SOURCES += main.cpp
+SOURCES += lcapplication.cpp
+SOURCES += mustestdirector.cpp
+
+symbian: {
+ TARGET.UID2 = 0x1000008d
+ TARGET.UID3 = 0x1028238D
+ TARGET.CAPABILITY = CAP_APPLICATION NetworkControl SwEvent Location MultimediaDD
+ LIBS += -llivecommsui -lcentralrepository
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/must.rss Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,21 @@
+// ============================================================================
+// * Generated by qmake (2.01a) (Qt 4.5.0-garden) on: Mon 14. Sep 15:39:08 2009
+// * This file is generated by qmake and should not be modified by the
+// * user.
+// ============================================================================
+
+#include <appinfo.rh>
+#include "must.loc"
+
+RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info
+ {
+ short_caption = STRING_r_short_caption;
+ caption_and_icon =
+ CAPTION_AND_ICON_INFO
+ {
+ caption = STRING_r_caption;
+ number_of_icons = 0;
+ icon_file = "";
+ };
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/must_reg.rss Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,18 @@
+// ============================================================================
+// * Generated by qmake (2.01a) (Qt 4.5.0-garden) on: Mon 14. Sep 15:39:08 2009
+// * This file is generated by qmake and should not be modified by the
+// * user.
+// ============================================================================
+
+#include <must.rsg>
+#include <appinfo.rh>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x1028238D
+
+RESOURCE APP_REGISTRATION_INFO
+ {
+ app_file="must";
+ localisable_resource_file="\\resource\\apps\\must";
+
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/mustestdirector.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,373 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "mustestdirector.h"
+#include <musmanagercommon.h>
+#include "mussessionproperties.h"
+#include "musresourceproperties.h"
+#include "mussesseioninformationapi.h"
+#include "mussettingskeys.h"
+#include "mussettings.inl"
+
+#include <e32property.h>
+#include <e32base.h>
+#include <e32err.h>
+#include <QDebug>
+
+_LIT(KTestTelNumber,"+358504869612");
+_LIT( KTestCallProvider,"MultimediaSharing" );
+_LIT( KTestRemoteSipAddress,"sip:siva@musworld.com" );
+_LIT( KTestRemoteSipAddressProposal,"sip:wondering@nokia.com,sip:package@gone.com" );
+_LIT( KTestContactName,"Michel Jackson" );
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusTestDirector::CMusTestDirector()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+CMusTestDirector* CMusTestDirector::NewL()
+ {
+ CMusTestDirector* self = new( ELeave )CMusTestDirector();
+ self->ConstructL();
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+void CMusTestDirector::ConstructL()
+ {
+ DefinePropertiesL();
+ }
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+CMusTestDirector::~CMusTestDirector()
+ {
+ DeleteProperties();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+void CMusTestDirector::ConfigureLiveSharing( )
+ {
+ SetUseCase( MultimediaSharing::EMusLiveVideo );
+
+ TInt error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMusTelNumber, KTestTelNumber);
+ MUS_LOG1("mus: [TEST] return value = %d",error )
+
+ error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMusCallDirection, NMusSessionInformationApi::ECallOrginated);
+ MUS_LOG1("mus: [TEST] return value = %d",error )
+
+ error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMUSCallProvider, KTestCallProvider);
+ MUS_LOG1("mus: [TEST] return value = %d",error )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+void CMusTestDirector::ConfigureReceiveSharing( )
+ {
+ SetUseCase( MultimediaSharing::EMusReceive );
+
+ TInt error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMusTelNumber, KTestTelNumber);
+ MUS_LOG1("mus: [TEST] return value = %d",error )
+
+ error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMusCallDirection, NMusSessionInformationApi::ECallOrginated);
+ MUS_LOG1("mus: [TEST] return value = %d",error )
+
+ error = RProperty::Set( NMusResourceApi::KCategoryUid, NMusSessionInformationApi::KMUSCallProvider, KTestCallProvider);
+ MUS_LOG1("mus: [TEST] return value = %d",error )
+ }
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+void CMusTestDirector::SetUseCase( MultimediaSharing::TMusUseCase aUseCase )
+ {
+ TInt err = RProperty::Set( NMusSessionApi::KCategoryUid, NMusSessionApi::KUseCase, ( TInt )aUseCase);
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAoPlugin::DefineResourcePropertiesL()
+// Note : Ignore Define Errors . Because if define fails for sure Set
+// will fail too . But there are some cases in Define Error should
+// be ignored like KErrAlreadyExists , KErrPersmissionDenied.So It
+// could be better if we dont care Define Error but care about Set Err.
+// -----------------------------------------------------------------------------
+//
+void CMusTestDirector::DefinePropertiesL()
+ {
+ MUS_LOG( "mus: [TEST] -> CMusAoPlugin::DefineResourceProperties") ;
+ // define resource properties
+ // they need to be defined here to make them exist always
+ // Read from cenrep key about the availability of camera and keypad
+ // if the availability is dynamic then define a key else no.
+ MusSettingsKeys::TAvailability camera = MusSettingsKeys::EAvailabilityStatic;
+ MusSettingsKeys::TAvailability keypad = MusSettingsKeys::EAvailabilityStatic ;
+ MultimediaSharingSettings::ResourceAvailability(camera,keypad);
+ if( camera == MusSettingsKeys::EAvailabilityDynamic )
+ {
+ DefinePropertyL(NMusResourceApi::KCameraAvailability,
+ RProperty::EInt,( TInt ) NMusResourceApi::ENotAvailable);
+ }
+ if( keypad == MusSettingsKeys::EAvailabilityDynamic )
+ {
+ DefinePropertyL(NMusResourceApi::KKeypadAvailability,
+ RProperty::EInt,( TInt ) NMusResourceApi::ENotAvailable);
+ }
+ DefinePropertyL(NMusResourceApi::KCameraInformation,
+ RProperty::EInt,( TInt ) NMusResourceApi::EUsePrimaryCamera);
+ DefinePropertyL(NMusSessionInformationApi::KMusCallEvent,
+ RProperty::EInt,( TInt ) NMusSessionInformationApi::ENoCall);
+ DefinePropertyL(NMusSessionInformationApi::KMusCallCount,RProperty::EInt,0);
+
+ DefinePropertyL(NMusSessionInformationApi::KMusTelNumber,
+ RProperty::EText,KTestTelNumber);
+ DefinePropertyL(NMusSessionInformationApi::KMUSForbidden,
+ RProperty::EInt,( TInt ) NMusSessionInformationApi::EMUSAllowed);
+ DefinePropertyL(NMusSessionInformationApi::KMusCallDirection,
+ RProperty::EInt,( TInt ) NMusSessionInformationApi::ENoDirection);
+
+ DefinePropertyL(NMusSessionInformationApi::KMUSCallProvider,
+ RProperty::EText,KTestCallProvider);
+
+ DefineSessionPropertyL(NMusSessionApi::KUseCase,
+ RProperty::EInt,MultimediaSharing::EMusLiveVideo);
+
+ DefineSessionPropertyL(NMusSessionApi::KStatus,
+ RProperty::EInt,MultimediaSharing::EMultimediaSharingAvailable);
+
+ DefineSessionPropertyL(NMusSessionApi::KTelNumber,
+ RProperty::EText,KTestTelNumber);
+
+ DefineSessionPropertyL(NMusSessionApi::KRemoteSipAddress,
+ RProperty::EText,KTestRemoteSipAddress);
+
+ DefineSessionPropertyL(NMusSessionApi::KRemoteSipAddressProposal,
+ RProperty::EText,KTestRemoteSipAddressProposal);
+
+ DefineSessionPropertyL(NMusSessionApi::KContactId,
+ RProperty::EInt,1);
+
+ DefineSessionPropertyL(NMusSessionApi::KContactName,
+ RProperty::EText,KTestContactName);
+
+ DefineSessionPropertyL(NMusSessionApi::KSipProfileId,
+ RProperty::EInt,1);
+
+ CRepository* repository = CRepository::NewL(MusSettingsKeys::KRepositoryUid);
+ TInt uid = 0;
+ TBool exist = (repository->Get(MusSettingsKeys::KEncodingDevice,uid) == KErrNone);
+ if( !exist )
+ {
+ TInt uid = 1234;
+ repository->Create(MusSettingsKeys::KEncodingDevice,uid);
+ TUint32 modifiedKeyCount(0);
+ User::LeaveIfError(repository->CommitTransaction(modifiedKeyCount));
+ }
+ delete repository;
+
+ MUS_LOG( "mus: [TEST] <- CMusAoPlugin::DefineResourceProperties" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAoPlugin::DefineProperty()
+// -----------------------------------------------------------------------------
+//
+void CMusTestDirector::DefineSessionPropertyL(TInt aKey,RProperty::TType aType,TInt aVal)
+ {
+ MUS_LOG( "mus: [TEST] -> CMusTestDirector::DefineSessionPropertyL( intValue )" )
+
+ TInt error = RProperty::Define( NMusSessionApi::KCategoryUid,
+ aKey,
+ aType );
+ MUS_LOG2( "mus: [TEST] Key=%d defining tried, return=%d", aKey, error )
+
+ if ( error == KErrNone )
+ {
+ error = RProperty::Set( NMusSessionApi::KCategoryUid, aKey, aVal );
+ MUS_LOG2( "mus: [TEST] RProperty value %d set, return = %d",
+ aVal, error )
+ User::LeaveIfError( error );
+ }
+ else
+ {
+ MUS_LOG( "mus: [TEST] Defining failed, do not set value" )
+ }
+
+ MUS_LOG( "mus: [TEST] <- CMusTestDirector::DefineSessionPropertyL( intValue )" )
+ }
+
+// -----------------------------------------------------------------------------
+// CTESTPlugin::DefineProperty()
+// -----------------------------------------------------------------------------
+//
+void CMusTestDirector::DefineSessionPropertyL( TInt aKey,
+ RProperty::TType aType,
+ const TDesC& aVal )
+ {
+ MUS_LOG( "mus: [TEST] -> CTESTPlugin::DefineSessionPropertyL( DesCValue )" )
+
+ TInt error = RProperty::Define( NMusSessionApi::KCategoryUid,
+ aKey,
+ aType );
+ MUS_LOG2( "mus: [TEST] Key=%d defining tried, return=%d", aKey, error )
+
+ if ( error == KErrNone )
+ {
+ error = RProperty::Set( NMusSessionApi::KCategoryUid, aKey, aVal);
+ MUS_LOG_TDESC( "mus: [TEST] Tried to set RProperty value: ", aVal )
+ MUS_LOG1("mus: [TEST] return value = %d",error )
+ User::LeaveIfError( error );
+ }
+ else
+ {
+ MUS_LOG( "mus: [TEST] Defining failed, do not set value" )
+ }
+
+ MUS_LOG( "mus: [TEST] <- CTESTPlugin::DefineSessionPropertyL( DesCValue )" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAoPlugin::DefineProperty()
+// -----------------------------------------------------------------------------
+//
+void CMusTestDirector::DefinePropertyL(TInt aKey,RProperty::TType aType,TInt aVal)
+ {
+ MUS_LOG( "mus: [TEST] -> CMusAoPlugin::DefinePropertyL( intValue )" )
+
+ TInt error = RProperty::Define( NMusResourceApi::KCategoryUid,
+ aKey,
+ aType );
+ MUS_LOG2( "mus: [TEST] Key=%d defining tried, return=%d", aKey, error )
+
+ if ( error == KErrNone )
+ {
+ error = RProperty::Set( NMusResourceApi::KCategoryUid, aKey, aVal );
+ MUS_LOG2( "mus: [TEST] RProperty value %d set, return = %d",
+ aVal, error )
+ User::LeaveIfError( error );
+ }
+ else
+ {
+ MUS_LOG( "mus: [TEST] Defining failed, do not set value" )
+ }
+
+ MUS_LOG( "mus: [TEST] <- CTESTPlugin::DefinePropertyL( intValue )" )
+ }
+
+// -----------------------------------------------------------------------------
+// CTESTPlugin::DefineProperty()
+// -----------------------------------------------------------------------------
+//
+void CMusTestDirector::DefinePropertyL( TInt aKey,
+ RProperty::TType aType,
+ const TDesC& aVal )
+ {
+ MUS_LOG( "mus: [TEST] -> CTESTPlugin::DefinePropertyL( DesCValue )" )
+
+ TInt error = RProperty::Define( NMusResourceApi::KCategoryUid,
+ aKey,
+ aType );
+ MUS_LOG2( "mus: [TEST] Key=%d defining tried, return=%d", aKey, error )
+
+ if ( error == KErrNone )
+ {
+ error = RProperty::Set( NMusResourceApi::KCategoryUid, aKey, aVal);
+ MUS_LOG_TDESC( "mus: [TEST] Tried to set RProperty value: ", aVal )
+ MUS_LOG1("mus: [TEST] return value = %d",error )
+ User::LeaveIfError( error );
+ }
+ else
+ {
+ MUS_LOG( "mus: [TEST] Defining failed, do not set value" )
+ }
+
+ MUS_LOG( "mus: [TEST] <- CTESTPlugin::DefinePropertyL( DesCValue )" )
+ }
+
+// -----------------------------------------------------------------------------
+// CTESTPlugin::DeleteSessionProperties()
+// -----------------------------------------------------------------------------
+//
+void CMusTestDirector::DeleteSessionProperties()
+ {
+ TInt retVal = RProperty::Delete( NMusSessionApi::KCategoryUid,NMusSessionApi::KStatus);
+ retVal = RProperty::Delete( NMusSessionApi::KCategoryUid,NMusSessionApi::KRemoteSipAddress);
+ retVal = RProperty::Delete( NMusSessionApi::KCategoryUid,NMusSessionApi::KRemoteSipAddressProposal);
+ retVal = RProperty::Delete( NMusSessionApi::KCategoryUid,NMusSessionApi::KContactId);
+ retVal = RProperty::Delete( NMusSessionApi::KCategoryUid,NMusSessionApi::KContactName);
+ }
+// -----------------------------------------------------------------------------
+// CTESTPlugin::DeleteResourceProperties()
+// Note : There is no need of caring the return value in deleting
+// This will be called when AO Plugin destroyed which is rare to happen
+// Any unwanted deletion of AO Plugin should leave some PS Keys open.
+// But this is OK if we ignore KErrAlreadyExists while defining next time.
+// -----------------------------------------------------------------------------
+//
+void CMusTestDirector::DeleteProperties()
+ {
+ MUS_LOG( "mus: [TEST] -> CTESTPlugin::DeleteResourcePropertiesL" )
+ // Delete resource properties
+ // they need to be defined here to make them exist always
+ DeleteProperty(NMusResourceApi::KCameraAvailability);
+ DeleteProperty(NMusResourceApi::KKeypadAvailability);
+ DeleteProperty(NMusResourceApi::KCameraInformation);
+ DeleteProperty(NMusSessionInformationApi::KMusCallEvent);
+ DeleteProperty(NMusSessionInformationApi::KMusCallCount);
+ DeleteProperty(NMusSessionInformationApi::KMusTelNumber);
+ DeleteProperty(NMusSessionInformationApi::KMUSCallProvider);
+ DeleteProperty(NMusSessionInformationApi::KMUSForbidden);
+ DeleteProperty(NMusSessionInformationApi::KMusCallDirection);
+ MUS_LOG( "mus: [TEST] <- CTESTPlugin::DeleteResourcePropertiesL" )
+ }
+
+// -----------------------------------------------------------------------------
+// CTESTPlugin::DeleteProperty()
+// -----------------------------------------------------------------------------
+//
+void CMusTestDirector::DeleteProperty(TInt aKey)
+ {
+ TInt retVal = RProperty::Delete( NMusResourceApi::KCategoryUid,aKey);
+ MUS_LOG2( "mus: [TEST] RProperty::Delete Type=%d return=%d",\
+ aKey, retVal )
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/app/mustestdirector.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2003 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 CMUSTESTDIRECTOR_H
+#define CMUSTESTDIRECTOR_H
+
+// INCLUDES
+#include <e32base.h>
+#include <e32property.h>
+#include <musmanagercommon.h>
+
+
+class CMusTestDirector : public CBase
+ {
+ public:
+ CMusTestDirector();
+ static CMusTestDirector* NewL();
+ ~CMusTestDirector();
+ public:
+ void SetUseCase( MultimediaSharing::TMusUseCase aUseCase );
+ void ConfigureLiveSharing() ;
+ void ConfigureReceiveSharing();
+ private:
+ void DeleteProperty(TInt aKey);
+ void DeleteProperties();
+ void DefinePropertyL( TInt aKey,
+ RProperty::TType aType,
+ const TDesC& aVal );
+ void DefinePropertyL(TInt aKey,RProperty::TType aType,TInt aVal);
+ void DefinePropertiesL();
+ void DeleteSessionProperties();
+ void DefineSessionPropertyL(TInt aKey,RProperty::TType aType,TInt aVal);
+ void DefineSessionPropertyL( TInt aKey,RProperty::TType aType,const TDesC& aVal );
+ void ConstructL();
+ };
+
+#endif // CMUSTESTDIRECTOR_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+PRJ_MMPFILES
+../Stubs/mceclientstub/group/mceclient.mmp
+../Stubs/sipclientstub/group/sipclient.mmp
+../Stubs/sipprofilestub/group/sipprofile.mmp
+../../../../mmshengine/group/musengineplugin.mmp
+../app/must_0x1028238D.mmp
+gnumakefile ../app/Makefile_0x1028238D.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/group/install.bat Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,35 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+echo Installing mustester application ...
+echo Backup the original dlls ...
+move \epoc32\release\winscw\udeb\mceclient.dll \epoc32\release\winscw\udeb\mcelclient.dll.orig
+move \epoc32\release\winscw\udeb\sipclient.dll \epoc32\release\winscw\udeb\sipclient.dll.orig
+move \epoc32\release\winscw\udeb\sipprofilecli.dll \epoc32\release\winscw\udeb\sipprofilecli.dll.orig
+echo Building mustester ...
+call cd ..\..\..\
+call qmake mmshlcui.pro
+call bldmake bldfiles
+call abld reallyclean winscw udeb
+call abld build winscw udeb
+call cd tsrc\mustester\group
+call bldmake bldfiles
+call abld reallyclean winscw udeb
+call abld build winscw udeb
+echo Starting emulator...
+echo Goto eshell and execute "must.exe -r usecase_no"
+echo usecase_no = MultimediaSharing::TMusUsecase defined in musmanagercommon.h
+call \epoc32\release\winscw\udeb\epoc.exe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/group/install_armv5.bat Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,28 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+echo Installing mustester application ...
+echo Backup the original dlls ...
+move \epoc32\release\winscw\udeb\mceclient.dll \epoc32\release\winscw\udeb\mcelclient.dll.orig
+move \epoc32\release\winscw\udeb\sipclient.dll \epoc32\release\winscw\udeb\sipclient.dll.orig
+move \epoc32\release\winscw\udeb\sipprofilecli.dll \epoc32\release\winscw\udeb\sipprofilecli.dll.orig
+echo Building mustester ...
+call bldmake bldfiles
+call abld reallyclean winscw udeb
+call abld build winscw udeb
+echo Starting emulator.Goto eshell and execute must.exe -r usecase_no
+echo usecase_no = MultimediaSharing::TMusUsecase defined in musmanagercommon.h
+call \epoc32\release\winscw\udeb\epoc.exe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/group/uninstall.bat Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,23 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+move \epoc32\release\winscw\udeb\mcelclient.dll.orig \epoc32\release\winscw\udeb\mceclient.dll
+move \epoc32\release\winscw\udeb\sipclient.dll.orig \epoc32\release\winscw\udeb\sipclient.dll
+move \epoc32\release\winscw\udeb\sipprofilecli.dll.orig \epoc32\release\winscw\udeb\sipprofilecli.dll
+
+call abld reallyclean winscw udeb
+call abld clean winscw udeb
+del \epoc32\release\winscw\udeb\must.exe
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/group/uninstall_armv5.bat Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,23 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+move \epoc32\release\winscw\udeb\mcelclient.dll.orig \epoc32\release\winscw\udeb\mceclient.dll
+move \epoc32\release\winscw\udeb\sipclient.dll.orig \epoc32\release\winscw\udeb\sipclient.dll
+move \epoc32\release\winscw\udeb\sipprofilecli.dll.orig \epoc32\release\winscw\udeb\sipprofilecli.dll
+
+call abld reallyclean winscw udeb
+call abld clean winscw udeb
+del \epoc32\release\winscw\udeb\must.exe
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/install/must_armv5_udeb.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,32 @@
+; must_armv5_udeb.pkg generated by qmake at Mon 14. Sep 11:50:02 2009
+; This file is generated by qmake and should not be modified by the user
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"must"},(0x1028238D),1,0,0
+
+; Localised Vendor name
+%{"Nokia, Qt Software"}
+
+; Unique Vendor name
+:"Nokia, Qt Software"
+
+; Dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+(0x2001E61C), 4, 5, 0, {"QtLibs pre-release"}
+
+; Executable and default resource files
+"\epoc32\release\armv5\udeb\must.exe" - "!:\sys\bin\must.exe"
+"\epoc32\data\z\resource\apps\must.rsc" - "!:\resource\apps\must.rsc"
+"\epoc32\data\z\private\10003a3f\import\apps\must_reg.rsc" - "!:\private\10003a3f\import\apps\must_reg.rsc"
+"\epoc32\release\armv5\udeb\sipclient.dll" - "!:\sys\bin\sipclient.dll"
+"\epoc32\release\armv5\udeb\mceclient.dll" - "!:\sys\bin\mceclient.dll"
+"\epoc32\release\armv5\udeb\sipprofilecli.dll" - "!:\sys\bin\sipprofilecli.dll"
+"\epoc32\release\armv5\udeb\musengineplugin.dll" - "!:\sys\bin\musengineplugin.dll"
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/install/must_armv5_urel.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,32 @@
+; must_armv5_urel.pkg generated by qmake at Mon 14. Sep 11:50:02 2009
+; This file is generated by qmake and should not be modified by the user
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"must"},(0x1028238D),1,0,0
+
+; Localised Vendor name
+%{"Nokia, Qt Software"}
+
+; Unique Vendor name
+:"Nokia, Qt Software"
+
+; Dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+(0x2001E61C), 4, 5, 0, {"QtLibs pre-release"}
+
+; Executable and default resource files
+"\epoc32\release\armv5\urel\must.exe" - "!:\sys\bin\must.exe"
+"\epoc32\data\z\resource\apps\must.rsc" - "!:\resource\apps\must.rsc"
+"\epoc32\data\z\private\10003a3f\import\apps\must_reg.rsc" - "!:\private\10003a3f\import\apps\must_reg.rsc"
+"\epoc32\release\armv5\urel\sipclient.dll" - "!:\sys\bin\sipclient.dll"
+"\epoc32\release\armv5\urel\mceclient.dll" - "!:\sys\bin\mceclient.dll"
+"\epoc32\release\armv5\urel\sipprofilecli.dll" - "!:\sys\bin\sipprofilecli.dll"
+"\epoc32\release\armv5\urel\musengineplugin.dll" - "!:\sys\bin\musengineplugin.dll"
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/mustester/install/sis_udeb.bat Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,17 @@
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:
+rem
+
+makesis must_armv5_udeb.pkg must.sis
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/dialpad.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,64 @@
+/*!
+* Copyright (c) 2009 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: Dialpad popup
+*
+*/
+
+#ifndef DIALPAD_H
+#define DIALPAD_H
+
+#include <hbwidget.h>
+
+#include <QTime>
+#include <QTimeLine>
+
+class HbLineEdit;
+
+const int DialpadButtonCount = 13;
+
+class Dialpad : public HbWidget
+{
+ Q_OBJECT
+
+public:
+ explicit Dialpad();
+ explicit Dialpad(const HbMainWindow& mainWindow);
+
+ virtual ~Dialpad();
+
+ HbLineEdit& editor() const;
+
+ bool isOpen() const {return mIsOpen;}
+
+public slots:
+
+ void setTapOutsideDismiss( bool enable );
+
+ void openDialpad() { mIsOpen = true; }
+
+ void closeDialpad() { mIsOpen = false; }
+
+ void setCallButtonEnabled(bool enabled);
+
+signals:
+ void aboutToClose();
+
+public:
+ HbLineEdit* mLineEdit;
+ bool mIsCallButtonEnabled;
+ bool mIsOpen;
+ bool mIsTabOutsideDismissEnabled;
+};
+
+#endif // DIALPAD_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/dialpad_stub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2008-2009 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:
+*
+*/
+
+#include <hblineedit.h>
+#include "dialpad.h"
+
+Dialpad::Dialpad()
+{
+ mLineEdit = new HbLineEdit();
+ setVisible(false);
+ mIsCallButtonEnabled = true;
+ mIsOpen = false;
+}
+
+Dialpad::Dialpad(const HbMainWindow& mainWindow)
+{
+ Q_UNUSED(mainWindow);
+ mLineEdit = new HbLineEdit();
+ setVisible(false);
+ mIsCallButtonEnabled = true;
+ mIsOpen = false;
+}
+
+Dialpad::~Dialpad()
+{
+ delete mLineEdit;
+}
+
+HbLineEdit& Dialpad::editor() const
+{
+ return *mLineEdit;
+}
+
+void Dialpad::setCallButtonEnabled(bool enabled)
+{
+ mIsCallButtonEnabled = enabled;
+}
+
+void Dialpad::setTapOutsideDismiss( bool enable )
+{
+ mIsTabOutsideDismissEnabled = enable ;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/dialpadvtkeyhandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,53 @@
+/*!
+* Copyright (c) 2010 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: Dialpad key handler.
+*
+*/
+
+#ifndef DIALPADVTKEYHANDLER_H
+#define DIALPADVTKEYHANDLER_H
+
+#include <QObject>
+
+class Dialpad;
+class HbMainWindow;
+
+/*!
+ DialpadVtKeyHandler
+ Class provides key handling for dialpad component.
+
+ @code
+ Dialpad *dialpad = new Dialpad();
+ DialpadVtKeyHandler *keyhandler = new DialpadVtKeyHandler(dialpad, this);
+ @endcode
+
+*/
+class DialpadVtKeyHandler : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit DialpadVtKeyHandler(Dialpad *dialPad, HbMainWindow& mainWindow, QObject *parent = 0);
+ virtual ~DialpadVtKeyHandler();
+
+private:
+ HbMainWindow& mMainWindow;
+ Dialpad* mDialPad; // not owned
+
+public: // helper
+ void contentChanged( QString chrs );
+
+};
+
+#endif // DIALPADVTKEYHANDLER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/dialpadvtkeyhandler_stub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,45 @@
+/*!
+* Copyright (c) 2010 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: Dialpad key handler.
+*
+*/
+
+#include <dialpadvtkeyhandler.h>
+#include <hbmainwindow.h>
+#include <dialpad.h>
+
+#define EMERGENCY_NUMBER "112"
+
+DialpadVtKeyHandler::DialpadVtKeyHandler(Dialpad *dialPad, HbMainWindow& mainWindow, QObject * parent)
+ : mMainWindow( mainWindow ),
+ mDialPad( dialPad )
+{
+ Q_UNUSED(parent);
+}
+
+DialpadVtKeyHandler::~DialpadVtKeyHandler()
+{
+
+}
+
+void DialpadVtKeyHandler::contentChanged( QString chrs )
+{
+ if( mDialPad ){
+ if( chrs == EMERGENCY_NUMBER ){
+ mDialPad->setCallButtonEnabled(true);
+ }else{
+ mDialPad->setCallButtonEnabled(false);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbabstractbutton.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2008-2009 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: HbAbstractButton class definition
+*
+*/
+
+
+#ifndef HBABSTRACTBUTTON_H
+#define HBABSTRACTBUTTON_H
+
+#include <hbglobal.h>
+#include <hbwidget.h>
+#include <hbnamespace.h>
+
+class HbAbstractButton : public HbWidget
+{
+public:
+ explicit HbAbstractButton( QGraphicsItem *parent = 0 );
+ virtual ~HbAbstractButton();
+
+
+signals:
+ void clicked( bool checked = false );
+};
+
+#endif // HBABSTRACTBUTTON_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbaction.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBACTION_H
+#define HBACTION_H
+
+#include <QAction>
+#include <hbnamespace.h>
+#include <hbglobal.h>
+#include <hbicon.h>
+
+
+class HbAction : public QAction
+{
+public:
+ explicit HbAction(QObject *parent = 0);
+ explicit HbAction(const QString &text, QObject *parent = 0);
+ explicit HbAction(Hb::NavigationAction action, QObject* parent = 0);
+ virtual ~HbAction();
+
+ using QAction::setIcon;
+ using QAction::icon;
+ void setIcon(const HbIcon &icon);
+ HbIcon icon() const;
+
+private: // Data added for the unit testing stub
+ HbIcon mIcon;
+};
+
+#endif // HBACTION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbdialog.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBDIALOG_H
+#define HBDIALOG_H
+
+#include <hbglobal.h>
+#include <hbwidget.h>
+
+
+class HbAction;
+
+
+class HbDialog : public HbWidget
+{
+public:
+
+ enum DefaultTimeout
+ {
+ NoTimeout,
+ ConfirmationNoteTimeout,
+ StandardTimeout,
+ ContextMenuTimeout,
+ };
+
+ enum DismissPolicy
+ {
+ NoDismiss = 0,
+ TapInside = 1,
+ TapOutside = 2,
+ TapAnywhere = TapInside | TapOutside
+ };
+
+ explicit HbDialog(QGraphicsItem *parent = 0);
+ virtual ~HbDialog();
+
+ int timeout() const;
+ void setTimeout(int timeout);
+ void setTimeout(HbDialog::DefaultTimeout timeout);
+ void setHeadingWidget(QGraphicsWidget *headingWidget);
+ void setContentWidget(QGraphicsWidget *contentWidget);
+ Hb::SceneItems unfadedItems() const;
+ void setUnfadedItems(Hb::SceneItems unfadedItems);
+ HbDialog::DismissPolicy dismissPolicy() const;
+ void setDismissPolicy(HbDialog::DismissPolicy dismissPolicy);
+ enum { Type = Hb::ItemType_Popup };
+
+protected:
+
+ QVariant itemChange ( GraphicsItemChange change, const QVariant & value );
+
+private: // Data added for the unit testing stub
+
+ Hb::SceneItems mUnfadedItems;
+ DismissPolicy mDismissPolicy;
+ int mTimeout;
+};
+
+
+#endif // HBDIALOG_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbdocumentloader.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBDOCUMENTLOADER_H
+#define HBDOCUMENTLOADER_H
+
+#include <hbglobal.h>
+#include <QString>
+#include <QObjectList>
+
+class QObject;
+class QGraphicsWidget;
+class HbLabel;
+class HbAction;
+class HbPushButton;
+
+class HbDocumentLoader
+{
+public:
+ HbDocumentLoader();
+ virtual ~HbDocumentLoader();
+
+ QObjectList load( const QString &fileName, const QString §ion , bool *ok = 0 );
+ QObjectList load( const QString &fileName, bool *ok = 0 );
+ QGraphicsWidget *findWidget(const QString &name);
+ QObject *findObject(const QString &name) const;
+ bool setObjectTree( QObjectList roots );
+ void reset();
+
+protected:
+ virtual QObject *createObject(const QString& type, const QString &name);
+
+public: // Data added for the unit testing stub
+ HbLabel* mLabel;
+ HbAction* mAction;
+ HbPushButton* mPushButton;
+ QList<QGraphicsWidget*> mWidgets;
+ bool mReturnSendVideo;
+ QString mLayoutSection;
+
+ QList<HbAction*> mActions;
+
+ friend class UT_LcView;
+ friend class UT_LcUiComponentRepository;
+
+};
+
+#endif // HBDOCUMENTLOADER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbeffect.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2008-2009 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 HBEFFECT_H
+#define HBEFFECT_H
+
+#include <QRect>
+#include <hbglobal.h>
+#include <hbnamespace.h>
+
+QT_BEGIN_NAMESPACE
+class QGraphicsItem;
+class QVariant;
+QT_END_NAMESPACE
+
+class HbEffect
+{
+
+public:
+
+ struct EffectStatus {
+ QGraphicsItem *item;
+ QString effectEvent;
+ Hb::EffectEvent reason;
+ QVariant userData;
+ };
+
+ static bool start(QGraphicsItem *item,
+ const QString &itemType,
+ const QString &effectEvent,
+ QObject *receiver = 0,
+ const char *member = 0,
+ const QVariant &userData = QVariant());
+
+ static bool add(const QString &itemType, const QString &filePath, const QString &effectEvent = QString() );
+
+ static bool effectRunning(QGraphicsItem *item, const QString &effectEvent = QString());
+
+ static bool mRunning;
+
+private:
+ HbEffect();
+};
+
+#endif // HBEFFECT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbframedrawer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbCore module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+#ifndef HBFRAMEDRAWER_H
+#define HBFRAMEDRAWER_H
+
+
+class HbFrameDrawer
+{
+public:
+
+ enum FrameType
+ {
+ Undefined = 0,
+ OnePiece,
+ ThreePiecesHorizontal,
+ ThreePiecesVertical,
+ NinePieces
+ };
+
+ HbFrameDrawer(const QString &frameGraphicsName, FrameType type, bool cacheFlag = true);
+
+ ~HbFrameDrawer();
+
+};
+
+#endif // HBFRAMEDRAWER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbgesture.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2008-2009 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: Defines a gesture that can be added to a gesture filter.
+*
+*/
+
+
+#ifndef HB_GESTURE_H
+#define HB_GESTURE_H
+
+#include <QObject>
+#include <QPointF>
+
+class HbGesture;
+class HbGesturePrivate;
+
+class HbGesture : public QObject
+{
+
+public:
+
+ /**
+ * Direction of the gesture.
+ */
+ enum Direction
+ {
+ /* empty gesture */
+ none=0,
+ /** Left */
+ left= 0x0000001,
+ /** Right */
+ right= 0x0000002,
+ /** Up */
+ up= 0x0000004,
+ /** Down */
+ down= 0x0000008,
+ /** Pan */
+ pan= 0x0000010,
+ /** Longpress */
+ longpress= 0x0000020
+ };
+
+ /*
+ * Defines that the default minimum pixel distance should be used for the gesture.
+ * The actual amount of pixels might vary based on the screen resolution.
+ */
+ static const int HbGestureDefaultMinDistance = -1;
+
+public:
+
+ explicit HbGesture( Direction direction,
+ int minDistance = HbGestureDefaultMinDistance,
+ QObject *parent = 0 );
+
+ virtual ~HbGesture();
+
+signals:
+
+ void longPress( QPointF delta );
+
+};
+
+#endif // HB_GESTURE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbgesturefilter.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2008-2009 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: Gesture filter for implementing touch gesture actions.
+*
+*/
+
+
+#ifndef HB_GESTURE_FILTER_H
+#define HB_GESTURE_FILTER_H
+
+#include <hbwidget.h>
+
+#include <QObject>
+#include <qnamespace.h>
+#include <QGraphicsItem>
+
+class HbGesture;
+class HbGestureFilterPrivate;
+class HbGestureSceneFilterPrivate;
+class HbLongPressVisualizer;
+
+
+class HbGestureSceneFilter : public HbWidget
+{
+public:
+ explicit HbGestureSceneFilter(Qt::MouseButton button = Qt::LeftButton, QGraphicsItem *parent = 0 );
+ ~HbGestureSceneFilter();
+ void addGesture( HbGesture *gesture );
+
+ public:
+
+ // Stub stuff
+ QList<HbGesture*> gestures;
+};
+
+#endif // HB_GESTURE_FILTER_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbicon.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBICON_H
+#define HBICON_H
+
+#include <hbglobal.h>
+
+
+class HbIcon
+{
+public:
+ HbIcon(const QString &iconName);
+ ~HbIcon();
+
+ bool operator==(const HbIcon &other) const;
+
+private: // Data added for the unit testing stub
+ QString mName;
+};
+
+#endif // HBICON_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbinstance.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBINSTANCE_H
+#define HBINSTANCE_H
+
+#include <hbglobal.h>
+#include <hbmainwindow.h>
+#include <hbtheme.h>
+#include <QList.h>
+
+class QGraphicsScene;
+
+#define hbInstance (HbInstance::instance())
+
+class HbInstance
+{
+public:
+ static HbInstance *instance();
+ QList<HbMainWindow *> allMainWindows() const;
+
+ Qt::Orientation orientation() const;
+ void setOrientation(Qt::Orientation orientation);
+
+ QGraphicsScene* scene() const;
+
+private:
+ HbInstance();
+ ~HbInstance();
+
+private: // Data added for the unit testing stub
+ QList<HbMainWindow *> mAllMainWindows;
+ QGraphicsScene* mScene;
+ Qt::Orientation mOrientation;
+};
+
+#endif // HBINSTANCE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hblabel.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBLABEL_H
+#define HBLABEL_H
+
+#include <hbglobal.h>
+#include <hbnamespace.h>
+#include <hbwidget.h>
+
+class QGraphicsItem;
+
+
+class HbLabel : public HbWidget
+{
+public:
+ explicit HbLabel (QGraphicsItem *parent = 0);
+ explicit HbLabel (const QString &displayText, QGraphicsItem *parent = 0);
+ ~HbLabel ();
+
+ virtual void setGeometry(const QRectF &rect);
+ enum { Type = Hb::ItemType_Label };
+
+ void setIcon( const HbIcon &icon );
+ void clear();
+
+public slots:
+ void setPlainText(const QString &text);
+};
+
+#endif // HBLABEL_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hblineedit.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbWidgets module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+
+#ifndef HBLINEEDIT_H
+#define HBLINEEDIT_H
+
+#include <QString>
+#include <QGraphicsItem>
+#include <QObject>
+
+class HbLineEdit : public QObject
+{
+public:
+ explicit HbLineEdit(QGraphicsItem *parent = 0);
+ explicit HbLineEdit(const QString &text, QGraphicsItem *parent = 0);
+ virtual ~HbLineEdit();
+ void setText(const QString &text);
+ QString text() const;
+private:
+ QString mText;
+
+signals:
+ void editingFinished();
+ void textChanged(const QString &text);
+ void selectionChanged();
+
+ // signals from the base class
+ void contentsChanged();
+};
+
+//Q_DECLARE_METATYPE(HbLineEdit::EchoMode)
+
+#endif // HBLINEEDIT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbmainwindow.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+
+#ifndef HBMAINWINDOW_H
+#define HBMAINWINDOW_H
+
+#include <QGraphicsView>
+#include <hbglobal.h>
+#include <hbnamespace.h>
+
+class QGraphicsWidget;
+class QWindowSurface
+ {
+ };
+class HbAction;
+class HbView;
+
+
+class HbMainWindow : public QGraphicsView
+{
+public:
+ explicit HbMainWindow(QWidget *parent = 0, Hb::WindowFlags windowFlags = Hb::WindowFlagNone);
+ ~HbMainWindow();
+
+ HbView *addView(QGraphicsWidget *widget = 0);
+ QGraphicsWidget *removeView(int index);
+ void removeView(QGraphicsWidget *widget);
+ HbView *currentView() const;
+ void setCurrentView(HbView *view, bool animate = false);
+ int viewCount() const;
+ void setOrientation(Qt::Orientation orientation, bool animate = true);
+ Qt::Orientation orientation() const;
+ void show(){};
+ QList<HbView *> views() const;
+ QRectF sceneRect() const;
+
+ //Overiding function for stub
+ QWindowSurface *windowSurface() const;
+
+private: // Data added for the unit testing stub
+ HbView* mCurrentView; // Not owned
+ int mViewCount;
+ Qt::Orientation mOrientation;
+ QList<HbView*> mTestViews;
+
+public :
+ QWindowSurface *mSurface;
+};
+
+#endif // HBMAINWINDOW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbmenu.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBMENU_H
+#define HBMENU_H
+
+#include <hbdialog.h>
+
+
+class HbMenu : public HbDialog
+{
+public:
+
+ explicit HbMenu(QGraphicsItem *parent = 0);
+ ~HbMenu();
+
+ using HbDialog::addAction;
+ HbAction *addAction(const QString &text);
+
+ bool isEmpty() const;
+
+ enum { Type = Hb::ItemType_Menu };
+
+public slots:
+ void open(QObject* receiver = 0, const char* member = 0);
+
+private: // Data added for the unit testing stub
+ bool mIsEmpty;
+};
+
+#endif // HBMENU_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbmessagebox.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+
+#ifndef HBMESSAGEBOX_H
+#define HBMESSAGEBOX_H
+
+#include <hbglobal.h>
+#include <hbdialog.h>
+#include <hbicon.h>
+
+class HbMessageBoxPrivate;
+class HbStyleOptionMessageBox;
+
+class HB_WIDGETS_EXPORT HbMessageBox : public HbDialog
+{
+
+public:
+ enum MessageBoxType {
+ MessageTypeInformation,
+ MessageTypeQuestion,
+ MessageTypeWarning
+ };
+
+ enum StandardButton {
+ NoButton = 0x00000000,
+ Ok = 0x00000400,
+ Save = 0x00000800,
+ Open = 0x00001000,
+ Yes = 0x00002000,
+ Continue = 0x00004000,
+ Delete = 0x00008000,
+ No = 0x00010000,
+ Retry = 0x00020000,
+ Close = 0x00040000,
+ Cancel = 0x00080000,
+ Help = 0x00100000,
+ Apply = 0x00200000,
+ Reset = 0x00400000
+ };
+
+ Q_DECLARE_FLAGS(StandardButtons, StandardButton)
+
+ explicit HbMessageBox(MessageBoxType type=MessageTypeInformation,QGraphicsItem *parent = 0);
+ explicit HbMessageBox(const QString &text,MessageBoxType type =MessageTypeInformation, QGraphicsItem *parent = 0);
+ virtual ~HbMessageBox();
+
+ void setText(const QString &text);
+ QString text() const;
+
+ void setIcon(const HbIcon &icon);
+ HbIcon icon() const;
+
+ void setIconAlignment(Qt::Alignment align);
+ Qt::Alignment iconAlignment() const;
+
+ enum { Type = Hb::ItemType_MessageBox };
+ int type() const { return Type; }
+
+ void setStandardButtons(int buttons);
+ int standardButtons() const;
+
+public:
+ static bool launchQuestionMessageBox(const QString &questionText,
+ const QString &primaryButtonText = tr("Yes"),
+ const QString &secondaryButtonText = tr("No"),
+ QGraphicsWidget *headWidget = 0,
+ QGraphicsScene *scene = 0,
+ QGraphicsItem *parent = 0 );
+
+ static void launchInformationMessageBox(const QString &informationText,
+ QGraphicsWidget *headWidget = 0,
+ QGraphicsScene *scene = 0,
+ QGraphicsItem *parent = 0 );
+
+ static void launchWarningMessageBox(const QString &warningText,
+ QGraphicsWidget *headWidget = 0,
+ QGraphicsScene *scene = 0,
+ QGraphicsItem *parent = 0 );
+
+public slots:
+ void updatePrimitives();
+
+protected:
+ HbMessageBox(HbMessageBoxPrivate &dd, QGraphicsItem *parent);
+ void initStyleOption(HbStyleOptionMessageBox *option) const;
+ void keyPressEvent(QKeyEvent *event);
+};
+
+#endif // HB_MESSAGEBOX_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbprogressdialog.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBPROGRESSDIALOG_H
+#define HBPROGRESSDIALOG_H
+
+#include <hbdialog.h>
+
+class HbProgressDialog : public HbDialog
+{
+public:
+
+ enum ProgressDialogType { ProgressNote,WaitNote };
+ explicit HbProgressDialog(QGraphicsItem *parent = 0);
+
+ enum { Type = Hb::ItemType_ProgressDialog };
+
+ void setText(const QString &text);
+
+protected:
+ QVariant itemChange(GraphicsItemChange change, const QVariant& value);
+};
+
+#endif // HBPROGRESSDIALOG_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbpushbutton.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2008-2009 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: HbPushButton class definition
+*
+*/
+
+
+#ifndef HBPUSHBUTTON_H
+#define HBPUSHBUTTON_H
+
+#include <hbabstractbutton.h>
+#include <hbglobal.h>
+
+class HbFrameDrawer;
+
+class HbPushButton : public HbAbstractButton
+{
+
+public:
+ explicit HbPushButton( QGraphicsItem *parent = 0 );
+ explicit HbPushButton( const QString &text, QGraphicsItem *parent = 0 );
+ virtual ~HbPushButton( );
+ void setFrameBackground( HbFrameDrawer *backgroundFrameDrawer );
+};
+
+#endif // HBPUSHBUTTON_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbstub_helper.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2009 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 HBSTUB_HELPER_H
+#define HBSTUB_HELPER_H
+
+/**
+* Helper class to control logsdbconnector stub behavior
+*
+*/
+class HbStubHelper
+{
+ public:
+ static void reset();
+ static void setGestureState(int state);
+ static void setGestureStyleHint(int style);
+ static bool isTitleBarVisible();
+ static bool isStatusBarVisible();
+};
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbstubs.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,1313 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// Orbit classes
+#include <hbinstance.h>
+#include <hbmainwindow.h>
+#include <hbwidget.h>
+#include <hbdialog.h>
+#include <hbmenu.h>
+#include <hbaction.h>
+#include <hblabel.h>
+#include <hbicon.h>
+#include <hbmessagebox.h>
+#include <hbprogressdialog.h>
+#include <hbpushbutton.h>
+#include <hbabstractbutton.h>
+#include <hbaction.h>
+#include <hbframedrawer.h>
+
+#include <hbtoolbar.h>
+#include <hbview.h>
+#include <hbdocumentloader.h>
+#include <hbtransparentwindow.h>
+#include <hbgesture.h>
+#include <hbgesturefilter.h>
+#include <hbeffect.h>
+#include <hblineedit.h>
+#include <QCoreApplication>
+#include <QGesture>
+#include <QWidget.h>
+#include <hbtapgesture.h>
+
+// Helper Class
+#include "hbstub_helper.h"
+
+// LC UI
+#include "lcuidefs.h"
+
+
+
+// Static data that simulates HbInstance and HbMainWindow
+static HbInstance* hbInstanceSingleton = 0;
+
+// Static data for hbeffects
+bool HbEffect::mRunning;
+
+// No Gesture default state.
+Qt::GestureState testState = Qt::NoGesture;
+
+HbTapGesture::TapStyleHint testStyleHint = HbTapGesture::Tap;
+
+// Title Bar and Status Bar Flags
+bool titlebarVisible = true;
+bool statusBarVisible = true;
+
+// -----------------------------------------------------------------------------
+// QCoreApplication::quit
+// -----------------------------------------------------------------------------
+//
+void QCoreApplication::quit()
+{
+}
+
+// -----------------------------------------------------------------------------
+// QCoreApplication::exit
+// -----------------------------------------------------------------------------
+//
+void QCoreApplication::exit(int /*retcode*/)
+{
+}
+
+
+// HbInstance
+
+// -----------------------------------------------------------------------------
+// HbInstance::instance
+// -----------------------------------------------------------------------------
+//
+HbInstance* HbInstance::instance()
+{
+ if (!hbInstanceSingleton)
+ hbInstanceSingleton = new HbInstance;
+ return hbInstanceSingleton;
+}
+
+// -----------------------------------------------------------------------------
+// HbInstance::allMainWindows
+// -----------------------------------------------------------------------------
+//
+QList<HbMainWindow *> HbInstance::allMainWindows() const
+{
+ return mAllMainWindows;
+}
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::HbInstance
+// -----------------------------------------------------------------------------
+//
+HbInstance::HbInstance()
+{
+ HbMainWindow *mainWindow = new HbMainWindow;
+ mAllMainWindows.append(mainWindow);
+ mScene = new QGraphicsScene;
+}
+
+// -----------------------------------------------------------------------------
+// HbInstance::~HbInstance
+// -----------------------------------------------------------------------------
+//
+HbInstance::~HbInstance()
+{
+ mAllMainWindows.clear();
+ delete mScene;
+}
+
+// -----------------------------------------------------------------------------
+// HbInstance::HbInstance
+// -----------------------------------------------------------------------------
+//
+Qt::Orientation HbInstance::orientation() const
+{
+ return mOrientation;
+}
+
+// -----------------------------------------------------------------------------
+// HbInstance::HbInstance
+// -----------------------------------------------------------------------------
+//
+void HbInstance::setOrientation(Qt::Orientation orientation)
+{
+ mOrientation = orientation;
+}
+
+// -----------------------------------------------------------------------------
+// HbInstance::HbInstance
+// -----------------------------------------------------------------------------
+//
+QGraphicsScene* HbInstance::scene() const
+{
+ return mScene;
+}
+
+// HbMainWindow
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::HbMainWindow
+// -----------------------------------------------------------------------------
+//
+HbMainWindow::HbMainWindow(QWidget *parent,Hb::WindowFlags windowFlags)
+: QGraphicsView(parent), mCurrentView(0), mViewCount(0)
+{
+ Q_UNUSED(windowFlags)
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::~HbMainWindow
+// -----------------------------------------------------------------------------
+//
+HbMainWindow::~HbMainWindow()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::addView
+// -----------------------------------------------------------------------------
+//
+HbView* HbMainWindow::addView(QGraphicsWidget *widget)
+{
+ Q_UNUSED(widget)
+ mTestViews.append(static_cast<HbView*>( widget ) );
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::removeView
+// -----------------------------------------------------------------------------
+//
+QGraphicsWidget* HbMainWindow::removeView(int index)
+{
+ Q_UNUSED(index)
+ if ( index >= 0 && index < mTestViews.count() ){
+ return mTestViews.takeAt(index);
+ }
+ return mCurrentView;
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::removeView
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::removeView(QGraphicsWidget *widget)
+{
+ for(int i = 0; i < mTestViews.count(); i++ ){
+ if ( mTestViews.at(i) == widget ){
+ mTestViews.takeAt(i);
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::currentView
+// -----------------------------------------------------------------------------
+//
+HbView* HbMainWindow::currentView() const
+{
+ return mCurrentView;
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::setCurrentView
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::setCurrentView(HbView *view, bool animate)
+{
+ mCurrentView = view;
+ Q_UNUSED(animate)
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::viewCount
+// -----------------------------------------------------------------------------
+//
+int HbMainWindow::viewCount() const
+{
+ return mTestViews.count();
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::viewCount
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::setOrientation(Qt::Orientation orientation, bool animate)
+{
+ Q_UNUSED(animate);
+ mOrientation = orientation;
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::viewCount
+// -----------------------------------------------------------------------------
+//
+Qt::Orientation HbMainWindow::orientation() const
+{
+ return mOrientation;
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::views
+// -----------------------------------------------------------------------------
+//
+QList<HbView *> HbMainWindow::views() const
+{
+ return mTestViews;
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::sceneRect
+// -----------------------------------------------------------------------------
+//
+QRectF HbMainWindow::sceneRect() const
+{
+ return QRectF( 0, 0, 360, 640 );
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::windowSurface
+// -----------------------------------------------------------------------------
+//
+QWindowSurface* HbMainWindow::windowSurface() const
+{
+ return mSurface;
+}
+
+
+
+
+// HbWidget
+
+// -----------------------------------------------------------------------------
+// HbWidget::HbWidget
+// -----------------------------------------------------------------------------
+//
+HbWidget::HbWidget(QGraphicsItem *parent, Qt::WindowFlags wFlags)
+: QGraphicsWidget(parent,wFlags)
+{
+
+}
+
+// -----------------------------------------------------------------------------
+// HbWidget::~HbWidget
+// -----------------------------------------------------------------------------
+//
+HbWidget::~HbWidget()
+{
+
+}
+
+// -----------------------------------------------------------------------------
+// HbWidget::clearActions
+// -----------------------------------------------------------------------------
+//
+void HbWidget::clearActions()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbWidget::itemChange
+// -----------------------------------------------------------------------------
+//
+QVariant HbWidget::itemChange(GraphicsItemChange change, const QVariant& value)
+{
+ Q_UNUSED(change)
+ return QVariant(value);
+}
+
+// -----------------------------------------------------------------------------
+// HbWidget::mainWindow
+// -----------------------------------------------------------------------------
+//
+HbMainWindow* HbWidget::mainWindow() const
+{
+
+}
+
+// HbDialog
+
+// -----------------------------------------------------------------------------
+// HbDialog::HbDialog
+// -----------------------------------------------------------------------------
+//
+HbDialog::HbDialog(QGraphicsItem *parent) : HbWidget(parent)
+{
+ resize(10,10); // Just some values for height and width
+ mDismissPolicy = NoDismiss;
+ mUnfadedItems = Hb::NoItem;
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::~HbDialog
+// -----------------------------------------------------------------------------
+//
+HbDialog::~HbDialog()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::timeout
+// -----------------------------------------------------------------------------
+//
+int HbDialog::timeout() const
+{
+ return mTimeout;
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::setTimeout
+// -----------------------------------------------------------------------------
+//
+void HbDialog::setTimeout(int timeout)
+{
+ mTimeout = timeout;
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::setTimeout
+// -----------------------------------------------------------------------------
+//
+void HbDialog::setTimeout(HbDialog::DefaultTimeout timeout)
+{
+ // Timeout Values from the current implementation of orbit.
+ switch (timeout)
+ {
+ case HbDialog::NoTimeout:
+ mTimeout = 0;
+ break;
+ case HbDialog::ConfirmationNoteTimeout:
+ mTimeout = 1500;
+ break;
+ case HbDialog::StandardTimeout:
+ mTimeout = 3000;
+ break;
+ case HbDialog::ContextMenuTimeout:
+ mTimeout = 6000;
+ break;
+ }
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::setHeadingWidget
+// -----------------------------------------------------------------------------
+//
+void HbDialog::setHeadingWidget(QGraphicsWidget *headingWidget)
+{
+ Q_UNUSED(headingWidget)
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::setContentWidget
+// -----------------------------------------------------------------------------
+//
+void HbDialog::setContentWidget(QGraphicsWidget *contentWidget)
+{
+ Q_UNUSED(contentWidget)
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::unfadedItems
+// -----------------------------------------------------------------------------
+//
+Hb::SceneItems HbDialog::unfadedItems() const
+{
+ return mUnfadedItems;
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::setUnfadedItems
+// -----------------------------------------------------------------------------
+//
+void HbDialog::setUnfadedItems(Hb::SceneItems unfadedItems)
+{
+ mUnfadedItems = unfadedItems;
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::dismissPolicy
+// -----------------------------------------------------------------------------
+//
+HbDialog::DismissPolicy HbDialog::dismissPolicy() const
+{
+ return mDismissPolicy;
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::setDismissPolicy
+// -----------------------------------------------------------------------------
+//
+void HbDialog::setDismissPolicy(HbDialog::DismissPolicy dismissPolicy)
+{
+ mDismissPolicy = dismissPolicy;
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::itemChange
+// -----------------------------------------------------------------------------
+//
+QVariant HbDialog::itemChange(GraphicsItemChange change, const QVariant& value)
+{
+ Q_UNUSED(change)
+ return QVariant(value);
+}
+
+
+// HbMenu
+
+// -----------------------------------------------------------------------------
+// HbMenu::HbMenu
+// -----------------------------------------------------------------------------
+//
+HbMenu::HbMenu(QGraphicsItem *parent) : HbDialog(parent)
+{
+ mIsEmpty = true;
+}
+
+// -----------------------------------------------------------------------------
+// HbMenu::~HbMenu
+// -----------------------------------------------------------------------------
+//
+HbMenu::~HbMenu()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbMenu::open
+// -----------------------------------------------------------------------------
+//
+void HbMenu::open(QObject* receiver, const char* member)
+{
+ Q_UNUSED(receiver);
+ Q_UNUSED(member);
+}
+
+// -----------------------------------------------------------------------------
+// HbMenu::addAction
+// -----------------------------------------------------------------------------
+//
+HbAction* HbMenu::addAction(const QString &text)
+{
+ Q_UNUSED(text)
+ mIsEmpty = false;
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+// HbMenu::isEmpty
+// -----------------------------------------------------------------------------
+//
+bool HbMenu::isEmpty() const
+{
+ return mIsEmpty;
+}
+
+
+// HbAction
+
+// -----------------------------------------------------------------------------
+// HbAction::HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::HbAction(QObject *parent)
+: QAction(parent), mIcon(QString())
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbAction::HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::HbAction(const QString &text, QObject *parent)
+: QAction(text,parent), mIcon(QString())
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbAction::~HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::~HbAction()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbAction::setIcon
+// -----------------------------------------------------------------------------
+//
+void HbAction::setIcon(const HbIcon &icon)
+{
+ mIcon = icon;
+}
+
+// -----------------------------------------------------------------------------
+// HbAction::icon
+// -----------------------------------------------------------------------------
+//
+HbIcon HbAction::icon() const
+{
+ return mIcon;
+}
+
+// -----------------------------------------------------------------------------
+// HbAction::HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::HbAction(Hb::NavigationAction action, QObject* parent)
+ : QAction ( parent ),mIcon(QString())
+{
+ Q_UNUSED(action);
+}
+
+// HbLabel
+
+// -----------------------------------------------------------------------------
+// HbLabel::HbLabel
+// -----------------------------------------------------------------------------
+//
+HbLabel::HbLabel(QGraphicsItem *parent) : HbWidget(parent)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbLabel::HbLabel
+// -----------------------------------------------------------------------------
+//
+HbLabel::HbLabel(const QString &displayText, QGraphicsItem *parent)
+: HbWidget(parent)
+{
+ Q_UNUSED(displayText)
+}
+
+// -----------------------------------------------------------------------------
+// HbLabel::~HbLabel
+// -----------------------------------------------------------------------------
+//
+HbLabel::~HbLabel()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbLabel::setGeometry
+// -----------------------------------------------------------------------------
+//
+void HbLabel::setGeometry(const QRectF &rect)
+{
+ Q_UNUSED(rect)
+}
+
+// -----------------------------------------------------------------------------
+// HbLabel::clear
+// -----------------------------------------------------------------------------
+//
+void HbLabel::clear()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbLabel::setPlainText
+// -----------------------------------------------------------------------------
+//
+void HbLabel::setPlainText(const QString &text)
+{
+ Q_UNUSED(text)
+}
+
+// -----------------------------------------------------------------------------
+// HbLabel::setText
+// -----------------------------------------------------------------------------
+//
+void HbLabel::setIcon(const HbIcon &icon)
+{
+ Q_UNUSED(icon)
+}
+
+
+// HbIcon
+
+// -----------------------------------------------------------------------------
+// HbIcon::HbIcon
+// -----------------------------------------------------------------------------
+//
+HbIcon::HbIcon(const QString &iconName)
+{
+ mName = iconName;
+}
+
+// -----------------------------------------------------------------------------
+// HbIcon::~HbIcon
+// -----------------------------------------------------------------------------
+//
+HbIcon::~HbIcon()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbIcon::operator==
+// -----------------------------------------------------------------------------
+//
+bool HbIcon::operator==(const HbIcon &other) const
+{
+ return (other.mName == mName);
+}
+
+
+// HbProgressDialog
+
+// -----------------------------------------------------------------------------
+// HbProgressDialog::HbProgressDialog
+// -----------------------------------------------------------------------------
+//
+HbProgressDialog::HbProgressDialog(QGraphicsItem *parent) : HbDialog(parent)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbProgressDialog::itemChange
+// -----------------------------------------------------------------------------
+//
+QVariant HbProgressDialog::itemChange(GraphicsItemChange change, const QVariant& value)
+{
+ Q_UNUSED(change)
+ return QVariant(value);
+}
+
+// -----------------------------------------------------------------------------
+// HbProgressDialog::setText
+// -----------------------------------------------------------------------------
+//
+void HbProgressDialog::setText(const QString &text)
+{
+ Q_UNUSED(text)
+}
+
+// -----------------------------------------------------------------------------
+// HbToolBar::HbToolBar
+// -----------------------------------------------------------------------------
+//
+HbToolBar::HbToolBar(QGraphicsItem *parent) : HbWidget(parent)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbToolBar::~HbToolBar
+// -----------------------------------------------------------------------------
+//
+HbToolBar::~HbToolBar()
+{
+}
+
+
+// HbView
+
+// -----------------------------------------------------------------------------
+// HbView::HbView
+// -----------------------------------------------------------------------------
+//
+HbView::HbView(QGraphicsItem *parent) : HbWidget(parent)
+{
+ mMenu = new HbMenu(this);
+ mToolBar = new HbToolBar(this);
+ mDockWidgetVisible = true;
+}
+
+// -----------------------------------------------------------------------------
+// HbView::~HbView
+// -----------------------------------------------------------------------------
+//
+HbView::~HbView()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbView::menu
+// -----------------------------------------------------------------------------
+//
+HbMenu* HbView::menu() const
+{
+ return mMenu;
+}
+
+// -----------------------------------------------------------------------------
+// HbView::toolBar
+// -----------------------------------------------------------------------------
+//
+HbToolBar* HbView::toolBar() const
+{
+ return mToolBar;
+}
+
+// -----------------------------------------------------------------------------
+// HbView::setTitle
+// -----------------------------------------------------------------------------
+//
+void HbView::setTitle(const QString &title)
+{
+ Q_UNUSED(title)
+}
+
+// -----------------------------------------------------------------------------
+// HbView::showItems
+// -----------------------------------------------------------------------------
+//
+void HbView::showItems(Hb::SceneItems items)
+{
+ if ( items == Hb::DockWidgetItem ) {
+ mDockWidgetVisible = true;
+ }
+}
+
+// -----------------------------------------------------------------------------
+// HbView::hideItems
+// -----------------------------------------------------------------------------
+//
+void HbView::hideItems(Hb::SceneItems items)
+{
+ if ( items == Hb::DockWidgetItem ) {
+ mDockWidgetVisible = false;
+ }
+}
+
+
+// -----------------------------------------------------------------------------
+// HbView::isItemVisible
+// -----------------------------------------------------------------------------
+//
+bool HbView::isItemVisible(Hb::SceneItem items) const
+{
+ if ( items == Hb::DockWidgetItem ) {
+ return mDockWidgetVisible;
+ }
+ return false;
+}
+
+// -----------------------------------------------------------------------------
+// HbView::setTitleBarVisible
+// -----------------------------------------------------------------------------
+//
+void HbView::setTitleBarVisible(bool visible)
+{
+ titlebarVisible = visible;
+}
+
+
+// -----------------------------------------------------------------------------
+// HbView::setStatusBarVisible
+// -----------------------------------------------------------------------------
+//
+void HbView::setStatusBarVisible(bool visible)
+{
+ statusBarVisible = visible;
+}
+
+
+// -----------------------------------------------------------------------------
+// HbView::setContentFullScreen
+// -----------------------------------------------------------------------------
+//
+void HbView::setContentFullScreen(bool /*enable*/)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbView::navigationAction
+// -----------------------------------------------------------------------------
+//
+HbAction *HbView::navigationAction() const
+{
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+// HbView::setNavigationAction
+// -----------------------------------------------------------------------------
+//
+void HbView::setNavigationAction(HbAction *action)
+{
+ Q_UNUSED(action);
+}
+
+// HbDocumentLoader
+
+// -----------------------------------------------------------------------------
+// HbDocumentLoader::HbDocumentLoader
+// -----------------------------------------------------------------------------
+//
+HbDocumentLoader::HbDocumentLoader()
+{
+ mLabel = new HbLabel;
+ mAction = new HbAction;
+ mReturnSendVideo = true;
+ mPushButton = new HbPushButton();
+
+}
+
+// -----------------------------------------------------------------------------
+// HbDocumentLoader::~HbDocumentLoader
+// -----------------------------------------------------------------------------
+//
+HbDocumentLoader::~HbDocumentLoader()
+{
+ delete mAction;
+ delete mLabel;
+ delete mPushButton;
+}
+
+// -----------------------------------------------------------------------------
+// HbDocumentLoader::load
+// -----------------------------------------------------------------------------
+//
+QObjectList HbDocumentLoader::load( const QString &fileName,
+ const QString §ion , bool *ok )
+{
+ Q_UNUSED(fileName)
+ if ( section == lcLayoutLandscapeDefaultId ||
+ section == lcLayoutLandscapeSwappedId ||
+ section == lcLayoutFullscreenId ||
+ section == lcLayoutLandscapeDialpadId ) {
+ mLayoutSection = section;
+ *ok = true;
+ } else {
+ *ok = false;
+ }
+ return QObjectList();
+}
+
+// -----------------------------------------------------------------------------
+// HbDocumentLoader::load
+// -----------------------------------------------------------------------------
+//
+QObjectList HbDocumentLoader::load(const QString &fileName, bool *ok)
+{
+ *ok = true;
+ Q_UNUSED(fileName)
+ return QObjectList();
+}
+
+// -----------------------------------------------------------------------------
+// HbDocumentLoader::findWidget
+// -----------------------------------------------------------------------------
+//
+QGraphicsWidget* HbDocumentLoader::findWidget(const QString &name)
+{
+ if ( !mReturnSendVideo && name == lcWidgetSendVideoId ) {
+ return 0;
+ }
+ foreach(QGraphicsWidget* widget, mWidgets) {
+ if (widget->objectName() == name)
+ return widget;
+ }
+ if (name == lcLabelRecipientId ||
+ name == lcLabelDurationId ||
+ name == lcIconContactId ||
+ name == lcWidgetSendVideoId2 ||
+ name == lcWidgetRecvVideoId2 ) {
+ return mLabel;
+ }
+ QString dummy = "";
+ QGraphicsWidget* createdWidget =
+ static_cast<QGraphicsWidget*>(createObject(dummy,name));
+ if (createdWidget) {
+ createdWidget->setPos(QPointF(10,20));
+ mWidgets.append(createdWidget);
+ }
+ return createdWidget;
+}
+
+// -----------------------------------------------------------------------------
+// HbDocumentLoader::findObject
+// -----------------------------------------------------------------------------
+//
+QObject* HbDocumentLoader::findObject(const QString &name) const
+{
+ if (name == lcActMuteId ||
+ name == lcActSpeakerId ) {
+ return mAction;
+ }
+ if( name == lcButtonEndCall ){
+ return mPushButton;
+ }
+ foreach(HbAction* action, mActions) {
+ if (action->objectName() == name)
+ return action;
+ }
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+// HbDocumentLoader::setObjectTree
+// -----------------------------------------------------------------------------
+//
+bool HbDocumentLoader::setObjectTree( QObjectList roots )
+{
+ Q_UNUSED(roots)
+ return true;
+}
+
+// -----------------------------------------------------------------------------
+// HbDocumentLoader::reset
+// -----------------------------------------------------------------------------
+//
+void HbDocumentLoader::reset()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbDocumentLoader::createObject
+// -----------------------------------------------------------------------------
+//
+QObject* HbDocumentLoader::createObject(
+ const QString& type,
+ const QString& name)
+{
+ Q_UNUSED(type)
+ Q_UNUSED(name)
+ return 0;
+}
+
+
+// HbTransparentWindow
+
+// -----------------------------------------------------------------------------
+// HbTransparentWindow::HbTransparentWindow
+// -----------------------------------------------------------------------------
+//
+HbTransparentWindow::HbTransparentWindow(QGraphicsItem *parent)
+{
+ Q_UNUSED(parent)
+}
+
+// -----------------------------------------------------------------------------
+// HbTransparentWindow::~HbTransparentWindow
+// -----------------------------------------------------------------------------
+//
+HbTransparentWindow::~HbTransparentWindow()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbGesture::HbGesture
+// -----------------------------------------------------------------------------
+//
+HbGesture::HbGesture( Direction direction, int minDistance, QObject *parent )
+ : QObject(parent)
+{
+ Q_UNUSED(direction)
+ Q_UNUSED(minDistance)
+}
+
+// -----------------------------------------------------------------------------
+// HbGesture::~HbGesture
+// -----------------------------------------------------------------------------
+//
+HbGesture::~HbGesture()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbGesturSeceneFilter::HbGestureSceneFilter
+// -----------------------------------------------------------------------------
+//
+HbGestureSceneFilter::HbGestureSceneFilter( Qt::MouseButton button, QGraphicsItem *parent )
+ : HbWidget(parent)
+{
+ Q_UNUSED(button)
+}
+
+// -----------------------------------------------------------------------------
+// HbGestureSceneFilter::~HbGestureSceneFilter
+// -----------------------------------------------------------------------------
+//
+HbGestureSceneFilter::~HbGestureSceneFilter()
+{
+ qDeleteAll(gestures);
+ gestures.clear();
+}
+
+// -----------------------------------------------------------------------------
+// HbGestureSceneFilter::addGesture
+// -----------------------------------------------------------------------------
+//
+void HbGestureSceneFilter::addGesture( HbGesture *gesture )
+{
+ gestures.append(gesture);
+}
+
+
+// -----------------------------------------------------------------------------
+// HbEffect::HbEffect
+// -----------------------------------------------------------------------------
+//
+HbEffect::HbEffect( )
+{
+ mRunning = false;
+}
+
+// -----------------------------------------------------------------------------
+// HbEffect::start
+// -----------------------------------------------------------------------------
+//
+bool HbEffect::start( QGraphicsItem *item,
+ const QString &itemType,
+ const QString &effectEvent,
+ QObject *receiver,
+ const char *member,
+ const QVariant &userData )
+{
+ Q_UNUSED(item)
+ Q_UNUSED(itemType)
+ Q_UNUSED(effectEvent)
+ Q_UNUSED(receiver)
+ Q_UNUSED(member)
+ Q_UNUSED(userData)
+ return true;
+}
+
+// -----------------------------------------------------------------------------
+// HbEffect::add
+// -----------------------------------------------------------------------------
+//
+bool HbEffect::add( const QString &itemType, const QString &filePath, const QString &effectEvent )
+{
+ Q_UNUSED(itemType)
+ Q_UNUSED(filePath)
+ Q_UNUSED(effectEvent)
+ return true;
+}
+
+// -----------------------------------------------------------------------------
+// HbEffect::effectRunning
+// -----------------------------------------------------------------------------
+//
+bool HbEffect::effectRunning(QGraphicsItem *item, const QString &effectEvent )
+{
+ Q_UNUSED(item)
+ Q_UNUSED(effectEvent)
+ return mRunning;
+}
+
+
+// -----------------------------------------------------------------------------
+// HbPushButton::HbPushButton
+// -----------------------------------------------------------------------------
+//
+HbPushButton::HbPushButton(QGraphicsItem *parent) : HbAbstractButton(parent)
+{
+}
+
+
+// -----------------------------------------------------------------------------
+// HbPushButton::HbPushButton
+// -----------------------------------------------------------------------------
+//
+HbPushButton::HbPushButton(const QString &text, QGraphicsItem *parent)
+ : HbAbstractButton(parent)
+{
+ Q_UNUSED(text)
+}
+
+
+
+// -----------------------------------------------------------------------------
+// HbPushButton::~HbPushButton
+// -----------------------------------------------------------------------------
+//
+HbPushButton::~HbPushButton()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbPushButton::setFrameBackground
+// -----------------------------------------------------------------------------
+//
+void HbPushButton::setFrameBackground( HbFrameDrawer *backgroundFrameDrawer )
+{
+ delete backgroundFrameDrawer;
+}
+
+// -----------------------------------------------------------------------------
+// HbAbstractButton::HbAbstractButton
+// -----------------------------------------------------------------------------
+//
+HbAbstractButton::HbAbstractButton(QGraphicsItem *parent) : HbWidget(parent)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbAbstractButton::~HbAbstractButton
+// -----------------------------------------------------------------------------
+//
+HbAbstractButton::~HbAbstractButton()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::HbFrameDrawer
+// -----------------------------------------------------------------------------
+//
+HbFrameDrawer::HbFrameDrawer(const QString &frameGraphicsName, FrameType type, bool cacheFlag)
+{
+ Q_UNUSED(frameGraphicsName);
+ Q_UNUSED(type);
+ Q_UNUSED(cacheFlag);
+}
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::~HbFrameDrawer
+// -----------------------------------------------------------------------------
+//
+HbFrameDrawer::~HbFrameDrawer()
+{
+
+}
+
+// -----------------------------------------------------------------------------
+// HbLineEdit::HbLineEdit
+// -----------------------------------------------------------------------------
+//
+HbLineEdit::HbLineEdit(QGraphicsItem *parent)
+{
+ Q_UNUSED(parent);
+}
+
+// -----------------------------------------------------------------------------
+// HbLineEdit::HbLineEdit
+// -----------------------------------------------------------------------------
+//
+HbLineEdit::HbLineEdit(const QString &text, QGraphicsItem *parent)
+{
+ Q_UNUSED(parent);
+ mText = text;
+}
+
+// -----------------------------------------------------------------------------
+// HbLineEdit::~HbLineEdit
+// -----------------------------------------------------------------------------
+//
+HbLineEdit::~HbLineEdit()
+{
+
+}
+
+// -----------------------------------------------------------------------------
+// HbLineEdit::setText
+// -----------------------------------------------------------------------------
+//
+void HbLineEdit::setText(const QString &text)
+{
+ mText = text;
+}
+
+// -----------------------------------------------------------------------------
+// HbLineEdit::text
+// -----------------------------------------------------------------------------
+//
+QString HbLineEdit::text() const
+{
+ return mText;
+}
+
+// -----------------------------------------------------------------------------
+// QGesture
+// -----------------------------------------------------------------------------
+//
+
+Qt::GestureState QGesture::state() const
+{
+ return testState;
+}
+
+
+// -----------------------------------------------------------------------------
+// HbTapGesture::HbTapGesture
+// -----------------------------------------------------------------------------
+//
+
+HbTapGesture::HbTapGesture(QObject *paren)
+{
+ Q_UNUSED(paren);
+}
+
+
+// -----------------------------------------------------------------------------
+// HbTapGesture::~HbTapGesture
+// -----------------------------------------------------------------------------
+//
+
+HbTapGesture::~HbTapGesture()
+{
+}
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+HbTapGesture::TapStyleHint HbTapGesture::tapStyleHint() const
+{
+ return testStyleHint;
+}
+
+// -----------------------------------------------------------------------------
+// HbMessageBox::setStandardButtons
+// -----------------------------------------------------------------------------
+//
+void HbMessageBox::setStandardButtons(int buttons)
+{
+ Q_UNUSED(buttons);
+}
+
+// -----------------------------------------------------------------------------
+// HbMessageBox::standardButtons
+// -----------------------------------------------------------------------------
+//
+int HbMessageBox::standardButtons() const
+{
+ return HbMessageBox::NoButton;
+}
+
+// -----------------------------------------------------------------------------
+// Stub Helper
+// -----------------------------------------------------------------------------
+//
+void HbStubHelper::setGestureState(int state)
+{
+ testState = static_cast<Qt::GestureState> (state);
+}
+
+
+void HbStubHelper::setGestureStyleHint(int style)
+{
+ testStyleHint = static_cast<HbTapGesture::TapStyleHint> (style);
+}
+
+void HbStubHelper::reset()
+{
+ testState = Qt::NoGesture;
+}
+
+bool HbStubHelper::isTitleBarVisible()
+{
+ return titlebarVisible;
+}
+
+bool HbStubHelper::isStatusBarVisible()
+{
+ return statusBarVisible;
+}
+
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbtapgesture.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbCore module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+#ifndef HBTAPGESTURE_H
+#define HBTAPGESTURE_H
+
+#include <hbglobal.h>
+#include <QGesture>
+
+
+class HbTapGesture : public QTapGesture
+{
+ Q_OBJECT
+
+public:
+ enum TapStyleHint {
+ Tap,
+ TapAndHold
+ };
+
+ explicit HbTapGesture(QObject *parent = 0);
+ virtual ~HbTapGesture();
+
+ TapStyleHint tapStyleHint() const;
+};
+
+#endif // HBTAPGESTURE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbtoolbar.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBTOOLBAR_H
+#define HBTOOLBAR_H
+
+#include <hbglobal.h>
+#include <hbnamespace.h>
+#include <hbwidget.h>
+
+
+class HbToolBar : public HbWidget
+{
+public:
+ explicit HbToolBar(QGraphicsItem *parent = 0);
+ virtual ~HbToolBar();
+
+ enum { Type = Hb::ItemType_ToolBar };
+};
+
+#endif // HBTOOLBAR_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbtransparentwindow.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBTRANSPARENTWINDOW_H
+#define HBTRANSPARENTWINDOW_H
+
+#include <hbglobal.h>
+#include <hbwidget.h>
+
+
+class HbTransparentWindow : public HbWidget
+{
+public:
+
+ explicit HbTransparentWindow(QGraphicsItem *parent = 0);
+ ~HbTransparentWindow();
+
+ enum { Type = Hb::ItemType_TransparentWindow };
+};
+
+#endif // HBTRANSPARENTWINDOW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbview.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBVIEW_H
+#define HBVIEW_H
+
+#include <hbwidget.h>
+#include <hbglobal.h>
+#include <hbnamespace.h>
+
+class HbMenu;
+class HbToolBar;
+class HbAction;
+
+class HbView : public HbWidget
+{
+public:
+ explicit HbView(QGraphicsItem *parent = 0);
+ virtual ~HbView();
+
+ HbMenu *menu() const;
+ HbToolBar *toolBar() const;
+
+ void showItems(Hb::SceneItems items);
+ void hideItems(Hb::SceneItems items);
+ bool isItemVisible(Hb::SceneItem item) const;
+ void setTitleBarVisible(bool visible);
+ void setStatusBarVisible(bool visible);
+
+ void setContentFullScreen(bool enable = true);
+ HbAction *navigationAction() const;
+ void setNavigationAction(HbAction *action);
+
+signals:
+ void contentFullScreenChanged();
+
+public slots:
+ void setTitle(const QString &title);
+
+private: // Data added for the unit testing stub
+ HbMenu* mMenu;
+ HbToolBar* mToolBar;
+ bool mDockWidgetVisible;
+};
+
+#endif // HBVIEW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/hbstubs/hbwidget.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+
+#ifndef HBWIDGET_H
+#define HBWIDGET_H
+
+#include <hbglobal.h>
+#include <hbstyle.h>
+#include <hbnamespace.h>
+#include <QGraphicsWidget.h>
+
+class HbEvent;
+
+
+class HbWidget : public QGraphicsWidget
+{
+public:
+ explicit HbWidget( QGraphicsItem *parent=0, Qt::WindowFlags wFlags=0 );
+ virtual ~HbWidget();
+ void clearActions();
+ HbMainWindow *mainWindow() const;
+
+protected:
+ QVariant itemChange ( GraphicsItemChange change, const QVariant & value );
+
+protected:
+ /* unit test storage */
+ HbMainWindow* mMainWindow;
+};
+
+#endif // HBWIDGET_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/inc/ut_lceffecthandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2009 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 UT_LCEFFECTHANDLER_H
+#define UT_LCEFFECTHANDLER_H
+
+#include <QObject>
+
+class LcEffectHandler;
+class LcUiEngine;
+class LcVideoWidget;
+class HbMainWindow;
+
+class UT_LcEffectHandler : public QObject
+{
+ Q_OBJECT
+
+private slots:
+
+/*
+ * In addition, there are four private slots that are not treated as testfunctions.
+ * They will be executed by the testing framework and can be used to initialize and clean up
+ * either the entire test or the current test function.
+ *
+ * initTestCase() will be called before the first testfunction is executed.
+ * cleanupTestCase() will be called after the last testfunction was executed.
+ * init() will be called before each testfunction is executed.
+ * cleanup() will be called after every testfunction.
+*/
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+
+private slots: //test methods
+
+ void testConstructor();
+ void testSwap();
+ void testShowSendWindow();
+ void testHideSendWindow();
+ void testShowReceiveWindow();
+ void testHideReceiveWindow();
+ void testEffectComplete();
+ void testStartEffect();
+
+ void testSetVisibility();
+ void testSetDissappearEffect();
+ void testIsSharedVideoAtTop();
+ void testVideosSideBySide();
+ void testHandleSwapCompletion();
+ void testIsSwapInProgress();
+
+private: // Helpers
+ void clearWidgets();
+ void setWidgets();
+private:
+
+ HbMainWindow* mMainWindow;
+ LcUiEngine* mEngine;
+ LcEffectHandler* mEffectHandler;
+ LcVideoWidget* mSharedVideo;
+ LcVideoWidget* mSharedVideoOverlay;
+ LcVideoWidget* mReceivedVideo;
+ LcVideoWidget* mReceivedVideoOverlay;
+};
+
+
+#endif //UT_LCEFFECTHANDLER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/inc/ut_lcuicomponentrepository.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2009 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 UT_LCUICOMPONENTREPOSITORY_H
+#define UT_LCUICOMPONENTREPOSITORY_H
+
+#include <QObject>
+
+class LcUiEngine;
+class LcUiComponentRepository;
+class HbMainWindow;
+
+
+class UT_LcUiComponentRepository : public QObject
+{
+ Q_OBJECT
+
+private slots:
+
+/*
+ * In addition, there are four private slots that are not treated as testfunctions.
+ * They will be executed by the testing framework and can be used to initialize and clean
+ * up either the entire test or the current test function.
+ *
+ * initTestCase() will be called before the first testfunction is executed.
+ * cleanupTestCase() will be called after the last testfunction was executed.
+ * init() will be called before each testfunction is executed.
+ * cleanup() will be called after every testfunction.
+*/
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+
+private slots: //test methods
+
+ void testConstructor();
+ void testIdleView();
+ void testReceiveView();
+ void testTwowayView();
+ void testSendView();
+ void testAllInOneView();
+ void testReceiveOnlyView();
+ void testAcceptQuery();
+ void testInvitingNote();
+ void testWaitingNote();
+ void testRecipientQuery();
+ void testShareOwnVideoQuery();
+ void testSharedVideoContextMenu();
+ void testLoadView_FileNotFound();
+ void testConnect();
+ void testLoadLayout();
+
+private:
+
+ LcUiEngine* mEngine;
+ LcUiComponentRepository* mRepository;
+};
+
+
+#endif //UT_LCUICOMPONENTREPOSITORY_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/inc/ut_lcuidefs.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2009 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 UT_LCUIDEFS_H_
+#define UT_LCUIDEFS_H_
+
+#include <QStringList>
+
+class HbView;
+
+const char lcutNoCall[] = "NOCALL";
+const char lcutStub_LcUiEngine_start[] = "LcUiEngine::start";
+const char lcutStub_LcUiEngine_setOrientation[] = "LcUiEngine::setOrientation";
+const char lcutStub_LcUiEngine_setContentAreas[] = "LcUiEngine::setContentAreas";
+const char lcutStub_LcUiEngine_mute[] = "LcUiEngine::mute";
+const char lcutStub_LcUiEngine_zoom[] = "LcUiEngine::zoom";
+const char lcutStub_LcUiEngine_enableCamera[] = "LcUiEngine::enableCamera";
+const char lcutStub_LcUiEngine_disableCamera[] = "LcUiEngine::disableCamera";
+const char lcutStub_LcUiEngine_toggleCamera[] = "LcUiEngine::toggleCamera";
+const char lcutStub_LcUiEngine_speaker[] = "LcUiEngine::speaker";
+const char lcutStub_LcUiEngine_stop[] = "LcUiEngine::stop";
+const char lcutStub_LcUiEngine_updateSession[] = "LcUiEngine::updateSession";
+
+
+const char lcEngineName[] = "engineName";
+const char lcDisplayName[] = "displayName";
+
+static QStringList* lcutStub_LcUiEngine_calledMethods = 0;
+static int lcutStub_LcUiEngine_failure = 0;
+static int lcutStub_LcUiEngine_layout = -1;
+
+static bool lcutStub_LcUiEngine_cameraMain = false;
+static bool lcutStub_LcUiEngine_muted = false;
+static bool lcutStub_LcUiEngine_speakerOn = false;
+static bool lcutStub_LcUiEngine_localplaying = true;
+static bool lcutStub_LcUiEngine_remoteplaying = true;
+static bool lcutStub_LcUiEngine_windowState_minimized = false;
+static bool lcutStub_LcUiEngine_isImageShared = false;
+
+extern QStringList& lcutStub_LcUiEngine_calledMethodsInstance();
+extern bool lcutStub_LcUiEngine_expectCall( const QString& call, int callNdx = 0);
+extern void lcutStub_LcUiEngine_reset();
+extern void lcutStub_LcUiEngine_setFailure( int failure );
+extern void lcutStub_LcUiEngine_setLayout( int layout );
+extern void lcutStub_LcUiEngine_setCameraMain( bool val );
+extern void lcutStub_LcUiEngine_setMuted( bool val );
+extern void lcutStub_LcUiEngine_setSpeaker( bool val );
+extern void lcutStub_LcUiEngine_setLocalPlaying( bool val );
+extern void lcutStub_LcUiEngine_setRemotePlaying( bool val );
+extern HbView* lcutStub_LcUiEngine_getCurrentView();
+extern QChar lcutStub_LcUiEngine_getDialToneChar();
+
+// End of file
+
+
+
+
+#endif /* UT_LCUIDEFS_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/inc/ut_lcvideowidget.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 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 UT_LCVIDEOWIDGET_H
+#define UT_LCVIDEOWIDGET_H
+
+#include <QObject>
+
+class LcVideoWidget;
+
+class UT_LcVideoWidget : public QObject
+{
+ Q_OBJECT
+
+private slots:
+
+/*
+ * In addition, there are four private slots that are not treated as testfunctions.
+ * They will be executed by the testing framework and can be used to initialize and clean up
+ * either the entire test or the current test function.
+ *
+ * initTestCase() will be called before the first testfunction is executed.
+ * cleanupTestCase() will be called after the last testfunction was executed.
+ * init() will be called before each testfunction is executed.
+ * cleanup() will be called after every testfunction.
+*/
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+
+private slots: //test methods
+
+ void testConstructor();
+ void testSetShowVideo();
+ void testPaint();
+
+private:
+
+ LcVideoWidget* mVideoWidget;
+ LcVideoWidget* mVideoWidget2;
+};
+
+
+#endif //UT_LCVIDEOWIDGET_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/inc/ut_lcview.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* Copyright (c) 2009 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 UT_LCVIEW_H
+#define UT_LCVIEW_H
+
+#include <QObject>
+
+class LcView;
+class LcUiEngine;
+class HbLabel;
+class LcUiComponentRepository;
+class HbAction;
+class HbPushButton;
+class HbMainWindow;
+
+class UT_LcView : public QObject
+{
+ Q_OBJECT
+
+private slots:
+
+/*
+ * In addition, there are four private slots that are not treated as testfunctions.
+ * They will be executed by the testing framework and can be used to initialize and clean up
+ * either the entire test or the current test function.
+ *
+ * initTestCase() will be called before the first testfunction is executed.
+ * cleanupTestCase() will be called after the last testfunction was executed.
+ * init() will be called before each testfunction is executed.
+ * cleanup() will be called after every testfunction.
+*/
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+
+private slots: //test methods
+
+ void testConstructor();
+ void testActivated();
+ void testInit();
+ void testDeactivated();
+ void testEndVideoSession();
+ void testMute();
+ void testChangeCamera();
+ void testSwitchToVoiceCall();
+ void testDisableCameraWhenOnFullScreenMode();
+ void testDisableCameraWhenNotOnFullScreenMode();
+ void testSpeaker();
+ void testSwap();
+ void testNotSupported();
+ void testSetCameraActionToMain();
+ void testSetCameraActionToSecondary();
+ void testSetMuteActionToUnmute();
+ void testSetMuteActionToMute();
+ void testSetSpeakerActionToHandset();
+ void testSetSpeakerActionToSpeaker();
+ void testSetCameraActionToEnable();
+ void testSetCameraActionToDisable();
+ void testDisableControls();
+ void testEnableControls();
+ void testUpdateVideoRects();
+ void testCurrentLayout();
+ void testGestureEvent();
+ void testContextMenu();
+ void testGestureLongPress();
+ void testGestureShortPress();
+ void testShareImage();
+ void testUpdateSwapLayout();
+ void testMenuAboutToShow();
+ void testTranslateRectForOrientation();
+ void testTranslatePointForOrientation();
+ void testOpenDialpad();
+ void testDialpadOpened();
+ void testDialpadClosed();
+ void testDialpadEditorTextChanged();
+ void testBack();
+ void testAddOptionsMenuActions();
+ void testToFullScreen();
+ void testWatchInactivity();
+ void testTimerEvent();
+ void testIsVideoPositionedCorrectly();
+ void testIsPositioned();
+
+private:
+
+ HbMainWindow* mMainWindow;
+ LcView* mView;
+ LcUiEngine* mEngine;
+ HbLabel* mRecipient;
+ LcUiComponentRepository* mRepository;
+ HbPushButton* mEndCallButton;
+};
+
+
+#endif //UT_LCVIEW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/inc/ut_lcviewmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2009 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 UT_LCVIEWMANAGER_H
+#define UT_LCVIEWMANAGER_H
+
+#include <QObject>
+class LcViewManager;
+class HbMainWindow;
+class LcViewManagerPrivate;
+
+class UT_LcUiViewManager : public QObject
+{
+ Q_OBJECT
+
+
+private slots:
+
+/*
+ * In addition, there are four private slots that are not treated as testfunctions.
+ * They will be executed by the testing framework and can be used to initialize and clean
+ * up either the entire test or the current test function.
+ *
+ * initTestCase() will be called before the first testfunction is executed.
+ * cleanupTestCase() will be called after the last testfunction was executed.
+ * init() will be called before each testfunction is executed.
+ * cleanup() will be called after every testfunction.
+*/
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots: //test methods
+
+ void testConstructor();
+ void testChangeView();
+ void testTerminateSession();
+ void testPrepareOrientationChange();
+ void testMainWindowEvent();
+
+private:
+
+ LcViewManager* mViewManagerDecorator;
+ LcViewManagerPrivate* mViewManager;
+
+};
+
+
+#endif //UT_LCVIEWMANAGER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/lcuiengine_stub/symbian/stub_lcuiengine_p.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,404 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+#include "lcuiengine_p.h"
+#include "ut_lcuidefs.h"
+#include "lcuidefs.h"
+#include <hbview.h>
+
+HbView* lcutStub_LcUiEngine_currentView = 0;
+QChar lcStub_LcUiEngine_dialtone('0');
+
+LcUiEnginePrivate::LcUiEnginePrivate( LcUiEngine& uiEngine,
+ const QString &engineName,
+ const QString &applicationDisplayName )
+ : mUiEngine ( uiEngine ),
+ mEngineName( engineName.toUtf8() ),
+ mSessionTitle( applicationDisplayName )
+
+{
+ mViewLayout = Lc_NoViewLayout;
+ mLiveCommsEngine = 0;
+ mCloseTimer = 0;
+ mInvitingNote = 0;
+ mWaitingNote = 0;
+ mAcceptQuery = 0;
+ mRecipientQuery = 0;
+ mFullScreen = false;
+}
+
+LcUiEnginePrivate::~LcUiEnginePrivate()
+{
+}
+
+void LcUiEnginePrivate::start()
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_start );
+}
+
+void LcUiEnginePrivate::setContentAreas( const QRectF& /*sharedContent*/,
+ const QRectF& /*receivedContent*/ )
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_setContentAreas );
+
+}
+
+bool LcUiEnginePrivate::setOrientation( Qt::Orientation /*orientation*/ )
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_setOrientation );
+ return true;
+}
+
+void LcUiEnginePrivate::zoom( int /*value*/ )
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_zoom );
+
+}
+
+void LcUiEnginePrivate::stop()
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_stop );
+
+}
+
+void LcUiEnginePrivate::updateSession()
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_updateSession );
+
+}
+
+bool LcUiEnginePrivate::isLocalPlayerPlaying() const
+{
+ return lcutStub_LcUiEngine_localplaying;
+}
+
+bool LcUiEnginePrivate::isRemotePlayerPlaying() const
+{
+ return lcutStub_LcUiEngine_remoteplaying;
+}
+
+const QString& LcUiEnginePrivate::sessionTitle() const
+{
+ return mSessionTitle;
+}
+const QString& LcUiEnginePrivate::recipient() const
+{
+ return mRecipient;
+}
+
+const QString& LcUiEnginePrivate::phoneNumber() const
+{
+ return mPhoneNumber;
+}
+
+LcViewLayoutHint LcUiEnginePrivate::viewLayout() const
+{
+ return (LcViewLayoutHint)lcutStub_LcUiEngine_layout;
+}
+
+void LcUiEnginePrivate::setUiComponents(HbProgressDialog* invitingNote,
+ HbProgressDialog* waitingNote,
+ HbDialog* acceptQuery,
+ HbDialog* recipientQuery,
+ HbDialog* sharedVideoQuery)
+{
+ mInvitingNote = invitingNote;
+ mWaitingNote = waitingNote;
+ mAcceptQuery = acceptQuery;
+ mRecipientQuery = recipientQuery;
+ mShareOwnVideoQuery = sharedVideoQuery;
+
+}
+
+void LcUiEnginePrivate::startReceiving()
+{
+
+}
+
+void LcUiEnginePrivate::stopForcefully()
+{
+
+}
+
+void LcUiEnginePrivate::emitViewLayoutChanged()
+{
+
+}
+
+bool LcUiEnginePrivate::usingVideoTelephoneEngine()
+{
+ return mEngineName == "Videotelephony";
+}
+
+void LcUiEnginePrivate::setMainCamera(const bool aMainCamera)
+{
+ mMainCamera = aMainCamera;
+}
+
+bool LcUiEnginePrivate::mainCamera() const
+{
+ return mMainCamera;
+}
+
+bool LcUiEnginePrivate::isMuted() const
+{
+ return lcutStub_LcUiEngine_muted;
+}
+
+bool LcUiEnginePrivate::isSpeakerOn() const
+{
+ return lcutStub_LcUiEngine_speakerOn;
+}
+
+void LcUiEnginePrivate::toggleMute()
+{
+ lcutStub_LcUiEngine_muted = !lcutStub_LcUiEngine_muted;
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_mute );
+}
+
+void LcUiEnginePrivate::toggleCamera()
+{
+ lcutStub_LcUiEngine_cameraMain = !lcutStub_LcUiEngine_cameraMain;
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_toggleCamera );
+}
+
+void LcUiEnginePrivate::toggleDisableCamera()
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_disableCamera );
+}
+
+void LcUiEnginePrivate::toggleSpeaker()
+{
+ lcutStub_LcUiEngine_speakerOn = !lcutStub_LcUiEngine_speakerOn;
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_speaker );
+}
+
+int LcUiEnginePrivate::zoomValues( LcControlValues& values ) const
+{
+ values.mMaxValue = 3;
+ values.mMinValue = 1;
+ values.mValue = 2;
+ return 0;
+}
+
+void LcUiEnginePrivate::timerEvent(QTimerEvent */*event*/)
+{
+}
+
+void LcUiEnginePrivate::StateChanged( MLcSession& /*aSession*/ )
+{
+
+}
+
+void LcUiEnginePrivate::StateChanged( MLcVideoPlayer& /*aPlayer*/ )
+{
+
+}
+
+void LcUiEnginePrivate::Updated( MLcSession& /*aSession*/ )
+{
+
+}
+
+void LcUiEnginePrivate::Updated( MLcVideoPlayer& /*aPlayer*/ )
+{
+
+}
+
+
+void LcUiEnginePrivate::Failed( MLcSession& /*aSession*/, TInt /*aError*/ )
+{
+
+}
+
+void LcUiEnginePrivate::Failed( MLcVideoPlayer& /*aPlayer*/, TInt /*aError*/ )
+{
+
+}
+
+void LcUiEnginePrivate::SessionTimeChanged( MLcSession& /*aSession*/,
+ const TTimeIntervalSeconds& /*aSeconds*/ )
+{
+
+}
+
+TBool LcUiEnginePrivate::SelectRecipient( MDesCArray& /*aRecipientAddresses*/,
+ TDes& /*aSelectedRecipientAddress*/ )
+{
+ return true;
+}
+
+TBool LcUiEnginePrivate::InputRecipient( TDes& /*aRecipientAddress*/ )
+{
+ return true;
+
+}
+
+void LcUiEnginePrivate::HandleForegroundStatus( TBool /*aForeground*/ )
+{
+
+}
+
+void LcUiEnginePrivate::BlockUi( TBool /*aBlocked*/ )
+{
+
+}
+
+
+bool LcUiEnginePrivate::fullScreenMode()
+{
+ return mFullScreen;
+}
+
+
+void LcUiEnginePrivate::setFullScreenMode(bool aMode)
+{
+ mFullScreen = aMode;
+}
+
+bool LcUiEnginePrivate::isMinimized()const
+{
+ return lcutStub_LcUiEngine_windowState_minimized;
+}
+
+void LcUiEnginePrivate::minimize()
+{
+ lcutStub_LcUiEngine_windowState_minimized = true;
+}
+
+void LcUiEnginePrivate::maximize()
+{
+ lcutStub_LcUiEngine_windowState_minimized = false;
+}
+
+void LcUiEnginePrivate::setCurrentView(HbView* view)
+{
+ lcutStub_LcUiEngine_currentView = view;
+}
+
+void LcUiEnginePrivate::handleEngineForegroundStatus()
+{
+}
+
+bool LcUiEnginePrivate::SendDialTone(const QChar aKey )
+{
+ lcStub_LcUiEngine_dialtone = aKey;
+ return true;
+}
+
+//stub control
+
+bool lcutStub_LcUiEngine_expectCall( const QString& call, int callNdx )
+{
+ if ( callNdx >= lcutStub_LcUiEngine_calledMethodsInstance().count() ) {
+ return call == lcutNoCall;
+ }
+ return lcutStub_LcUiEngine_calledMethodsInstance().count() > 0 ?
+ lcutStub_LcUiEngine_calledMethodsInstance()[callNdx] == call :
+ call == lcutNoCall;
+}
+
+
+void lcutStub_LcUiEngine_reset()
+{
+ delete lcutStub_LcUiEngine_calledMethods;
+ lcutStub_LcUiEngine_calledMethods = 0;
+ lcutStub_LcUiEngine_failure = 0;
+ lcutStub_LcUiEngine_layout = -1;
+ lcutStub_LcUiEngine_cameraMain = false;
+ lcutStub_LcUiEngine_muted = false;
+ lcutStub_LcUiEngine_speakerOn = false;
+ lcutStub_LcUiEngine_localplaying = true;
+ lcutStub_LcUiEngine_remoteplaying = true;
+ lcutStub_LcUiEngine_currentView = 0;
+ lcStub_LcUiEngine_dialtone = '0';
+}
+
+void lcutStub_LcUiEngine_setFailure( int failure )
+{
+ lcutStub_LcUiEngine_failure = failure;
+}
+
+void lcutStub_LcUiEngine_setLayout( int layout )
+{
+ lcutStub_LcUiEngine_layout = layout;
+}
+
+QStringList& lcutStub_LcUiEngine_calledMethodsInstance()
+{
+ if ( !lcutStub_LcUiEngine_calledMethods ) {
+ lcutStub_LcUiEngine_calledMethods = new QStringList();
+ }
+ return *lcutStub_LcUiEngine_calledMethods;
+}
+
+void lcutStub_LcUiEngine_setCameraMain( bool val )
+{
+ lcutStub_LcUiEngine_cameraMain = val;
+}
+
+void lcutStub_LcUiEngine_setMuted( bool val )
+{
+ lcutStub_LcUiEngine_muted = val;
+}
+
+void lcutStub_LcUiEngine_setSpeaker( bool val )
+{
+ lcutStub_LcUiEngine_speakerOn = val;
+}
+
+void lcutStub_LcUiEngine_setLocalPlaying( bool val )
+{
+ lcutStub_LcUiEngine_localplaying = val;
+}
+
+void lcutStub_LcUiEngine_setRemotePlaying( bool val )
+{
+ lcutStub_LcUiEngine_remoteplaying = val;
+}
+
+HbView* lcutStub_LcUiEngine_getCurrentView()
+{
+ return lcutStub_LcUiEngine_currentView;
+}
+
+
+QChar lcutStub_LcUiEngine_getDialToneChar()
+{
+ return lcStub_LcUiEngine_dialtone;
+}
+
+
+void LcUiEnginePrivate::stopLocalVideo()
+{
+ lcutStub_LcUiEngine_localplaying = false;
+}
+
+void LcUiEnginePrivate::startLocalVideo()
+{
+ lcutStub_LcUiEngine_localplaying = true;
+}
+
+void LcUiEnginePrivate::volumeLevelChanged(const XQSettingsKey& /*aKey*/, const QVariant& /*aValue*/)
+{
+}
+
+// End of file
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/lcuiengine_stub/win32/stub_lcuiengine_p.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,279 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+#include "lcuiengine_p.h"
+#include "ut_lcuidefs.h"
+#include "lcuidefs.h"
+
+LcUiEnginePrivate::LcUiEnginePrivate( LcUiEngine& uiEngine,
+ const QString &engineName,
+ const QString &applicationDisplayName )
+ : mUiEngine ( uiEngine ),
+ mEngineName( engineName.toUtf8() ),
+ mSessionTitle( applicationDisplayName )
+
+{
+ mViewLayout = Lc_NoViewLayout;
+ mCloseTimer = 0;
+ mInvitingNote = 0;
+ mWaitingNote = 0;
+ mAcceptQuery = 0;
+ mRecipientQuery = 0;
+ mFullScreen = false;
+}
+
+LcUiEnginePrivate::~LcUiEnginePrivate()
+{
+}
+
+void LcUiEnginePrivate::start()
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_start );
+}
+
+void LcUiEnginePrivate::setContentAreas( const QRectF& /*sharedContent*/,
+ const QRectF& /*receivedContent*/ )
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_setContentAreas );
+
+}
+
+bool LcUiEnginePrivate::setOrientation( Qt::Orientation /*orientation*/ )
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_setOrientation );
+ return true;
+}
+
+void LcUiEnginePrivate::zoom( int /*value*/ )
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_zoom );
+
+}
+
+void LcUiEnginePrivate::stop()
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_stop );
+
+}
+
+void LcUiEnginePrivate::updateSession()
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_updateSession );
+
+}
+
+bool LcUiEnginePrivate::isLocalPlayerPlaying() const
+{
+ return lcutStub_LcUiEngine_localplaying;
+}
+
+bool LcUiEnginePrivate::isRemotePlayerPlaying() const
+{
+ return lcutStub_LcUiEngine_remoteplaying;
+}
+
+const QString& LcUiEnginePrivate::sessionTitle() const
+{
+ return mSessionTitle;
+}
+const QString& LcUiEnginePrivate::recipient() const
+{
+ return mRecipient;
+}
+
+const QString& LcUiEnginePrivate::phoneNumber() const
+{
+ return mPhoneNumber;
+}
+
+LcViewLayoutHint LcUiEnginePrivate::viewLayout() const
+{
+ return (LcViewLayoutHint)lcutStub_LcUiEngine_layout;
+}
+
+void LcUiEnginePrivate::setUiComponents(HbDialog* invitingNote,
+ HbDialog* waitingNote,
+ HbDialog* acceptQuery,
+ HbDialog* recipientQuery)
+{
+ mInvitingNote = invitingNote;
+ mWaitingNote = waitingNote;
+ mAcceptQuery = acceptQuery;
+ mRecipientQuery = recipientQuery;
+
+}
+
+void LcUiEnginePrivate::setMainCamera(const bool aMainCamera)
+{
+ mMainCamera = aMainCamera;
+}
+
+bool LcUiEnginePrivate::mainCamera() const
+{
+ return mMainCamera;
+}
+
+bool LcUiEnginePrivate::isMuted() const
+{
+ return lcutStub_LcUiEngine_muted;
+}
+
+bool LcUiEnginePrivate::isSpeakerOn() const
+{
+ return lcutStub_LcUiEngine_speakerOn;
+}
+
+void LcUiEnginePrivate::toggleMute()
+{
+ lcutStub_LcUiEngine_muted = !lcutStub_LcUiEngine_muted;
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_mute );
+}
+
+void LcUiEnginePrivate::toggleCamera()
+{
+ lcutStub_LcUiEngine_cameraMain = !lcutStub_LcUiEngine_cameraMain;
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_toggleCamera );
+}
+
+void LcUiEnginePrivate::toggleDisableCamera()
+{
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_disableCamera );
+}
+
+void LcUiEnginePrivate::toggleSpeaker()
+{
+ lcutStub_LcUiEngine_speakerOn = !lcutStub_LcUiEngine_speakerOn;
+ lcutStub_LcUiEngine_calledMethodsInstance().insert(0,lcutStub_LcUiEngine_speaker );
+}
+
+int LcUiEnginePrivate::zoomValues( LcControlValues& values ) const
+{
+ values.mMaxValue = 3;
+ values.mMinValue = 1;
+ values.mValue = 2;
+ return 0;
+}
+
+bool LcUiEnginePrivate::fullScreenMode()
+{
+ return mFullScreen;
+}
+
+
+void LcUiEnginePrivate::setFullScreenMode(bool aMode)
+{
+ mFullScreen = aMode;
+}
+
+bool LcUiEnginePrivate::isMinimized()const
+{
+ return lcutStub_LcUiEngine_windowState_minimized;
+}
+
+void LcUiEnginePrivate::minimize()
+{
+ lcutStub_LcUiEngine_windowState_minimized = true;
+}
+
+void LcUiEnginePrivate::maximize()
+{
+ lcutStub_LcUiEngine_windowState_minimized = false;
+}
+
+void LcUiEnginePrivate::shareImage(const QString& /*fileName*/)
+{
+ lcutStub_LcUiEngine_isImageShared = true;
+}
+
+void LcUiEnginePrivate::shareCamera()
+{
+ lcutStub_LcUiEngine_isImageShared = false;
+}
+
+
+//stub control
+
+bool lcutStub_LcUiEngine_expectCall( const QString& call, int callNdx )
+{
+ if ( callNdx >= lcutStub_LcUiEngine_calledMethodsInstance().count() ) {
+ return call == lcutNoCall;
+ }
+ return lcutStub_LcUiEngine_calledMethodsInstance().count() > 0 ?
+ lcutStub_LcUiEngine_calledMethodsInstance()[callNdx] == call :
+ call == lcutNoCall;
+}
+
+
+void lcutStub_LcUiEngine_reset()
+{
+ delete lcutStub_LcUiEngine_calledMethods;
+ lcutStub_LcUiEngine_calledMethods = 0;
+ lcutStub_LcUiEngine_failure = 0;
+ lcutStub_LcUiEngine_layout = -1;
+ lcutStub_LcUiEngine_cameraMain = false;
+ lcutStub_LcUiEngine_muted = false;
+ lcutStub_LcUiEngine_speakerOn = false;
+ lcutStub_LcUiEngine_localplaying = true;
+ lcutStub_LcUiEngine_remoteplaying = true;
+}
+
+void lcutStub_LcUiEngine_setFailure( int failure )
+{
+ lcutStub_LcUiEngine_failure = failure;
+}
+
+void lcutStub_LcUiEngine_setLayout( int layout )
+{
+ lcutStub_LcUiEngine_layout = layout;
+}
+
+QStringList& lcutStub_LcUiEngine_calledMethodsInstance()
+{
+ if ( !lcutStub_LcUiEngine_calledMethods ) {
+ lcutStub_LcUiEngine_calledMethods = new QStringList();
+ }
+ return *lcutStub_LcUiEngine_calledMethods;
+}
+
+void lcutStub_LcUiEngine_setCameraMain( bool val )
+{
+ lcutStub_LcUiEngine_cameraMain = val;
+}
+
+void lcutStub_LcUiEngine_setMuted( bool val )
+{
+ lcutStub_LcUiEngine_layout = val;
+}
+
+void lcutStub_LcUiEngine_setSpeaker( bool val )
+{
+ lcutStub_LcUiEngine_speakerOn = val;
+}
+
+void lcutStub_LcUiEngine_setLocalPlaying( bool val )
+{
+ lcutStub_LcUiEngine_localplaying = val;
+}
+
+void lcutStub_LcUiEngine_setRemotePlaying( bool val )
+{
+ lcutStub_LcUiEngine_remoteplaying = val;
+}
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/runtest.cmd Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,23 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+call qmake
+call bldmake clean
+call bldmake bldfiles
+call abld reallyclean winscw udeb
+call abld export
+call abld build winscw udeb
+call \epoc32\release\winscw\udeb\ut_lcui.exe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/src/main.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+#include "ut_lcviewmanager.h"
+#include "ut_lcuicomponentrepository.h"
+#include "ut_lcview.h"
+#include "ut_lceffecthandler.h"
+#include "ut_lcvideowidget.h"
+#include "testresultxmlparser.h"
+#include <qapplication.h>
+#include <QtTest/QtTest>
+#include <stdio.h>
+
+#include <QFile>
+#include <QTextStream>
+
+#define UT_ARGS( args, file )\
+ QStringList args( "ut_lcui");\
+ args << "-silent" << "-xml" << "-o" << file
+
+int main(int argc, char *argv[])
+{
+ bool promptOnExit(true);
+ for (int i=0; i<argc; i++) {
+ if (QString(argv[i]) == "-noprompt")
+ promptOnExit = false;
+ }
+ printf("Running tests...\n");
+ QApplication app(argc, argv);
+ TestResultXmlParser parser;
+
+ UT_LcUiViewManager ut_lcViewManager;
+ QString resultFileName = "c:/ut_lcui_LcViewManager.xml";
+ UT_ARGS( args_lcViewManager, resultFileName );
+ QTest::qExec( &ut_lcViewManager, args_lcViewManager );
+ parser.parseAndPrintResults(resultFileName);
+
+ UT_LcUiComponentRepository ut_lcUiComponentRepository;
+ resultFileName = "c:/ut_lcui_LcUiComponentRepository.xml";
+ UT_ARGS( args_lcUiComponentRepository, resultFileName );
+ QTest::qExec( &ut_lcUiComponentRepository, args_lcUiComponentRepository );
+ parser.parseAndPrintResults(resultFileName);
+
+ UT_LcView ut_lcView;
+ resultFileName = "c:/ut_lcui_LcView.xml";
+ UT_ARGS( args_lcView, resultFileName );
+ QTest::qExec( &ut_lcView, args_lcView );
+ parser.parseAndPrintResults(resultFileName);
+
+ UT_LcEffectHandler ut_effectHandler;
+ resultFileName = "c:/ut_lcui_LcEffectHandler.xml";
+ UT_ARGS( args_lcEffectHandler, resultFileName );
+ QTest::qExec( &ut_effectHandler, args_lcEffectHandler );
+ parser.parseAndPrintResults(resultFileName);
+
+ UT_LcVideoWidget ut_videoWidget;
+ resultFileName = "c:/ut_lcui_LcVideoWidget.xml";
+ UT_ARGS( args_lcVideoWidget, resultFileName );
+ QTest::qExec( &ut_videoWidget, args_lcVideoWidget );
+ parser.parseAndPrintResults(resultFileName);
+
+ if (promptOnExit) {
+ printf("Press any key...\n");
+ getchar();
+ }
+ return 0;
+}
+
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/src/ut_lceffecthandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,469 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+#include "ut_lceffecthandler.h"
+#include "ut_lcuidefs.h"
+#include "lceffecthandler.h"
+#include "lcuiengine.h"
+#include "lcuidefs.h"
+#include "lcvideowidget.h"
+#include <QtTest/QtTest>
+#include <hbmainwindow.h>
+#include <hbinstance.h>
+
+#define UT_SET_ORIENTATION(orient) \
+HbInstance::instance()->allMainWindows().at(0)->setOrientation(orient);
+
+void UT_LcEffectHandler::initTestCase()
+{
+ lcutStub_LcUiEngine_reset();
+ //must have main window, even if it not used
+ mMainWindow = new HbMainWindow();
+}
+
+void UT_LcEffectHandler::cleanupTestCase()
+{
+ lcutStub_LcUiEngine_reset();
+ delete mMainWindow;
+}
+
+
+void UT_LcEffectHandler::init()
+{
+ mEngine = new LcUiEngine( lcEngineName, lcDisplayName );
+
+ mSharedVideo = new LcVideoWidget();
+ mSharedVideoOverlay = new LcVideoWidget(0,false);
+ mReceivedVideo = new LcVideoWidget();
+ mReceivedVideoOverlay = new LcVideoWidget(0,false);
+ mEffectHandler = new LcEffectHandler(
+ *mEngine,mSharedVideo,mSharedVideoOverlay,
+ mReceivedVideo,mReceivedVideoOverlay);
+
+}
+
+void UT_LcEffectHandler::cleanup()
+{
+ lcutStub_LcUiEngine_reset();
+ delete mEffectHandler;
+ delete mEngine;
+ delete mSharedVideo;
+ delete mSharedVideoOverlay;
+ delete mReceivedVideoOverlay;
+ delete mReceivedVideo;
+}
+
+void UT_LcEffectHandler::testConstructor()
+{
+ QVERIFY( mEffectHandler );
+}
+
+void UT_LcEffectHandler::testSwap()
+{
+ clearWidgets();
+ QSignalSpy spy( mEffectHandler, SIGNAL(loadSwapLayout()) );
+ QVERIFY( !mEffectHandler->mSharedVideo );
+ QVERIFY( !mEffectHandler->mReceivedVideo );
+ QVERIFY( !mEffectHandler->mSwapInProgress );
+ QCOMPARE( spy.count(), 0 );
+
+ mEffectHandler->swap();
+ setWidgets();
+
+ QVERIFY( mEffectHandler->mSwapInProgress );
+ QCOMPARE( spy.count(), 1 );
+
+ HbWidget* sharedVideoWidget = mEffectHandler->mSharedVideo;
+ HbWidget* receivedVideoWidget = mEffectHandler->mReceivedVideo;
+ HbWidget* sharedVideoWidget2 = mEffectHandler->mSharedVideoOverlay;
+ HbWidget* receivedVideoWidget2 = mEffectHandler->mReceivedVideoOverlay;
+ QRectF sharedOrig = mEffectHandler->mSharedVideo->geometry();
+ QRectF recvOrig = mEffectHandler->mReceivedVideo->geometry();
+
+ // Swapping not started because other widget missing
+ mEffectHandler->mSwapSharedCompleted = true;
+ mEffectHandler->mSwapReceivedCompleted = true;
+ mEffectHandler->mSharedVideo = 0;
+ mEffectHandler->swap();
+ QCOMPARE( sharedVideoWidget->geometry(), sharedOrig );
+ QCOMPARE( receivedVideoWidget->geometry(), recvOrig );
+ QCOMPARE( mEffectHandler->mSwapSharedCompleted, true );
+ QCOMPARE( mEffectHandler->mSwapReceivedCompleted, true );
+
+ // Swapping not started because other widget missing
+ mEffectHandler->mSharedVideo = sharedVideoWidget;
+ mEffectHandler->mReceivedVideo = 0;
+ mEffectHandler->swap();
+ QCOMPARE( sharedVideoWidget->geometry(), sharedOrig );
+ QCOMPARE( receivedVideoWidget->geometry(), recvOrig );
+ QCOMPARE( mEffectHandler->mSwapSharedCompleted, true );
+ QCOMPARE( mEffectHandler->mSwapReceivedCompleted, true );
+
+ // Swapping started, however geometry is change only once swapping completes
+ mEffectHandler->mSharedVideo = sharedVideoWidget;
+ mEffectHandler->mReceivedVideo = receivedVideoWidget;
+ mEffectHandler->swap();
+
+ QCOMPARE( sharedVideoWidget->geometry(), sharedOrig );
+ QCOMPARE( receivedVideoWidget->geometry(), recvOrig );
+ QCOMPARE( mEffectHandler->mSwapSharedCompleted, false );
+ QCOMPARE( mEffectHandler->mSwapReceivedCompleted, false );
+
+ // Swapping started, however geometry is change only once swapping completes
+ mEffectHandler->mSwapSharedCompleted = true;
+ mEffectHandler->mSwapReceivedCompleted = true;
+ mEffectHandler->swap();
+ QCOMPARE( sharedVideoWidget->geometry(), sharedOrig );
+ QCOMPARE( receivedVideoWidget->geometry(), recvOrig );
+ QCOMPARE( mEffectHandler->mSwapSharedCompleted, false );
+ QCOMPARE( mEffectHandler->mSwapReceivedCompleted, false );
+}
+
+void UT_LcEffectHandler::testShowSendWindow()
+{
+ // Shared video widget does not exist
+ setWidgets();
+ HbWidget* sharedVideoWidget = mEffectHandler->mSharedVideo;
+ QVERIFY( sharedVideoWidget != 0 );
+ sharedVideoWidget->hide();
+ QVERIFY( !sharedVideoWidget->isVisible() );
+ mEffectHandler->mSharedVideo = 0;
+ mEffectHandler->showSendWindow();
+ QVERIFY( !sharedVideoWidget->isVisible() );
+
+ // Shared video widget exists, effects running, dont show
+ HbEffect::mRunning = true;
+ mEffectHandler->mSharedVideo = sharedVideoWidget;
+ mEffectHandler->showSendWindow();
+ QVERIFY( !mEffectHandler->mSharedVideo->isVisible() );
+
+ // Shared video widget exists, show
+ HbEffect::mRunning = false;
+ mEffectHandler->mSharedVideo = sharedVideoWidget;
+ mEffectHandler->showSendWindow();
+ QVERIFY( mEffectHandler->mSharedVideo->isVisible() );
+}
+
+void UT_LcEffectHandler::testHideSendWindow()
+{
+ // Shared video widget does not exist
+ setWidgets();
+ HbWidget* sharedVideoWidget = mEffectHandler->mSharedVideo;
+ QVERIFY( sharedVideoWidget != 0 );
+ mEffectHandler->mSharedVideo = 0;
+ mEffectHandler->hideSendWindow();
+
+ // Shared video widget exists, show
+ mEffectHandler->mSharedVideo = sharedVideoWidget;
+ mEffectHandler->showSendWindow();
+ QVERIFY( mEffectHandler->mSharedVideo->isVisible() );
+
+ // Shared video widget exists, hide
+ mEffectHandler->hideSendWindow();
+ QVERIFY( !mEffectHandler->mSharedVideo->isVisible() );
+}
+
+void UT_LcEffectHandler::testShowReceiveWindow()
+{
+ // Shared video widget does not exist
+ setWidgets();
+ HbWidget* receivedVideoWidget = mEffectHandler->mReceivedVideo;
+ QVERIFY( receivedVideoWidget != 0 );
+ receivedVideoWidget->hide();
+ QVERIFY( !receivedVideoWidget->isVisible() );
+ mEffectHandler->mReceivedVideo = 0;
+ mEffectHandler->showReceiveWindow();
+ QVERIFY( !receivedVideoWidget->isVisible() );
+
+ // Received video widget exists, show
+ mEffectHandler->mReceivedVideo = receivedVideoWidget;
+ mEffectHandler->showReceiveWindow();
+ QVERIFY( mEffectHandler->mReceivedVideo->isVisible() );
+}
+
+void UT_LcEffectHandler::testHideReceiveWindow()
+{
+ // Shared video widget does not exist
+ setWidgets();
+ HbWidget* receivedVideoWidget = mEffectHandler->mReceivedVideo;
+ QVERIFY( receivedVideoWidget != 0 );
+ mEffectHandler->mReceivedVideo = 0;
+ mEffectHandler->hideReceiveWindow();
+
+
+ // Received video widget exists, show
+ mEffectHandler->mReceivedVideo = receivedVideoWidget;
+ mEffectHandler->showReceiveWindow();
+ QVERIFY( mEffectHandler->mReceivedVideo->isVisible() );
+
+ // Receive video widget exists, hide
+ mEffectHandler->hideReceiveWindow();
+ QVERIFY( !mEffectHandler->mReceivedVideo->isVisible() );
+}
+
+
+// windowFlipComplete
+// windowDisappearToFlipComplete
+// windowDisappearComplete
+// windowAppearComplete
+// WindowSwapSharedComplete
+// WindowSwapReceivedComplete
+
+void UT_LcEffectHandler::testEffectComplete()
+{
+ clearWidgets();
+
+ // Video widgets does not exist
+ HbEffect::EffectStatus status;
+ mEffectHandler->windowAppearComplete( status );
+ mEffectHandler->windowDisappearComplete( status );
+ mEffectHandler->windowDisappearToFlipComplete( status );
+ mEffectHandler->windowFlipComplete( status );
+
+ setWidgets();
+
+ HbWidget* sharedVideoWidget = mEffectHandler->mSharedVideo;
+ HbWidget* receivedVideoWidget = mEffectHandler->mReceivedVideo;
+ sharedVideoWidget->hide();
+ receivedVideoWidget->hide();
+
+ mEffectHandler->showSendWindow();
+ mEffectHandler->windowAppearComplete( status );
+ QVERIFY( sharedVideoWidget->isVisible() );
+
+ mEffectHandler->windowDisappearComplete( status );
+ QVERIFY( sharedVideoWidget->isVisible() );
+
+ mEffectHandler->windowDisappearToFlipComplete( status );
+ QVERIFY( !sharedVideoWidget->isVisible() );
+
+ lcutStub_LcUiEngine_setLocalPlaying( false );
+ mEffectHandler->windowFlipComplete( status );
+ QVERIFY( !sharedVideoWidget->isVisible() );
+
+ lcutStub_LcUiEngine_setLocalPlaying( true );
+ mEffectHandler->windowFlipComplete( status );
+ QVERIFY( sharedVideoWidget->isVisible() );
+
+ sharedVideoWidget->hide();
+ receivedVideoWidget->hide();
+ lcutStub_LcUiEngine_setLocalPlaying( true );
+ mEffectHandler->windowFlipComplete( status );
+ QVERIFY( sharedVideoWidget->isVisible() );
+
+ // Swapping, real video widgets are set visible only after
+ // both swap effects have completeded swapping completes and completion
+ // is also signal
+
+ // Geomerty changes are handled by the view using DoCML's
+ // when swapping completes and completion is also signal
+
+ QRectF pos1 = QRectF(5,100, 200, 200);
+ QRectF pos2 = QRectF(5,300, 400, 400);
+ mEffectHandler->mSharedVideo->setGeometry(pos1);
+ mEffectHandler->mReceivedVideo->setGeometry(pos2);
+ QSignalSpy spy( mEffectHandler, SIGNAL(swapCompleted()) );
+ sharedVideoWidget->hide();
+ receivedVideoWidget->hide();
+ lcutStub_LcUiEngine_setLocalPlaying( true );
+ mEffectHandler->windowSwapSharedComplete( status );
+ QVERIFY( !sharedVideoWidget->isVisible() );
+ QCOMPARE( spy.count(), 0 );
+
+ sharedVideoWidget->hide();
+ receivedVideoWidget->hide();
+ lcutStub_LcUiEngine_setRemotePlaying( true );
+ mEffectHandler->windowSwapReceivedComplete( status );
+ QVERIFY( receivedVideoWidget->isVisible() );
+ QVERIFY( sharedVideoWidget->isVisible() );
+ QCOMPARE( spy.count(), 1 );
+
+ // Players are disabled so even when swap completes, widgets are not set
+ // visible
+ sharedVideoWidget->hide();
+ receivedVideoWidget->hide();
+ lcutStub_LcUiEngine_setLocalPlaying( false );
+ mEffectHandler->windowSwapSharedComplete( status );
+ QVERIFY( !sharedVideoWidget->isVisible() );
+
+ sharedVideoWidget->hide();
+ receivedVideoWidget->hide();
+ lcutStub_LcUiEngine_setRemotePlaying( false );
+ mEffectHandler->windowSwapReceivedComplete( status );
+ QVERIFY( !receivedVideoWidget->isVisible() );
+ QVERIFY( !sharedVideoWidget->isVisible() );
+}
+
+void UT_LcEffectHandler::testStartEffect()
+{
+ clearWidgets();
+
+ const char *effectId = "myeffect";
+ const char *callBack = "mycallback";
+
+ QVERIFY( !mEffectHandler->mSharedVideo );
+ QVERIFY( !mEffectHandler->mSharedVideoOverlay );
+ mEffectHandler->startEffect( mEffectHandler->mSharedVideoOverlay,effectId, callBack);
+
+ setWidgets();
+
+ QVERIFY( mEffectHandler->mSharedVideo );
+ QVERIFY( mEffectHandler->mSharedVideoOverlay );
+
+ HbWidget* sharedVideoWidget = mEffectHandler->mSharedVideo;
+ HbWidget* sharedVideoWidget2 = mEffectHandler->mSharedVideoOverlay;
+ QRectF sharedOrig = mEffectHandler->mSharedVideo->geometry();
+
+ mEffectHandler->mSharedVideo = 0;
+ mEffectHandler->startEffect( mEffectHandler->mSharedVideoOverlay,effectId, callBack);
+
+ mEffectHandler->mSharedVideo = sharedVideoWidget;
+ mEffectHandler->mSharedVideoOverlay = 0;
+ mEffectHandler->startEffect( mEffectHandler->mSharedVideoOverlay,effectId, callBack);
+
+ mEffectHandler->mSharedVideo = sharedVideoWidget;
+ mEffectHandler->mSharedVideoOverlay = sharedVideoWidget2;
+ mEffectHandler->startEffect( mEffectHandler->mSharedVideoOverlay,effectId, callBack);
+
+ QCOMPARE( sharedVideoWidget->geometry(), sharedVideoWidget2->geometry() );
+}
+
+void UT_LcEffectHandler::testSetVisibility()
+{
+ setWidgets();
+
+ QVERIFY( mEffectHandler->mSharedVideo );
+ HbWidget* sharedVideoWidget = mEffectHandler->mSharedVideo;
+ sharedVideoWidget->setVisible(false);
+
+ //If Effects are not running than we can set the visibility of widget
+ mEffectHandler->setVisibility(sharedVideoWidget,true);
+ // TODO: setvisibility temporarily NOP
+ /*QVERIFY( mEffectHandler->mSharedVideo->isVisible() );
+
+ //If Effects are running we can not set the visibility of widget.
+ HbEffect::mRunning = true;
+ mEffectHandler->setVisibility(sharedVideoWidget,false);
+ QVERIFY( mEffectHandler->mSharedVideo->isVisible() );*/
+}
+
+void UT_LcEffectHandler::testSetDissappearEffect()
+{
+ QCOMPARE( mEffectHandler->mEffectCallBack,
+ QString::fromAscii(lcEffectWinDefaultCallback ));
+ mEffectHandler->setDissappearEffect(LcEffectHandler::DissappearToFlip );
+ QCOMPARE( mEffectHandler->mEffectCallBack,
+ QString::fromAscii("windowDisappearToFlipComplete" ));
+ mEffectHandler->setDissappearEffect(LcEffectHandler::NormalDissappear );
+ QCOMPARE( mEffectHandler->mEffectCallBack,
+ QString::fromAscii("windowDisappearComplete" ));
+}
+
+void UT_LcEffectHandler::testIsSharedVideoAtTop()
+{
+ setWidgets();
+
+ QRectF pos1 = QRectF(5,100, 200, 200);
+ QRectF pos2 = QRectF(5,300, 400, 400);
+ mEffectHandler->mSharedVideo->setGeometry(pos1);
+ mEffectHandler->mReceivedVideo->setGeometry(pos2);
+
+ QVERIFY( mEffectHandler->isSharedVideoAtTop() );
+
+ mEffectHandler->mSharedVideo->setGeometry(pos2);
+ mEffectHandler->mReceivedVideo->setGeometry(pos1);
+ QVERIFY( !mEffectHandler->isSharedVideoAtTop() );
+
+}
+
+void UT_LcEffectHandler::testVideosSideBySide()
+{
+ setWidgets();
+ QRectF pos1 = QRectF(5,100, 200, 200);
+ QRectF pos2 = QRectF(5,300, 400, 400);
+ QRectF pos3 = QRectF(5,100, 400, 400);
+
+ mEffectHandler->mSharedVideo->setGeometry(pos1);
+ mEffectHandler->mReceivedVideo->setGeometry(pos2);
+
+ QVERIFY( !mEffectHandler->videosSideBySide() );
+ mEffectHandler->mReceivedVideo->setGeometry(pos3);
+ QVERIFY( mEffectHandler->videosSideBySide() );
+}
+
+void UT_LcEffectHandler::testHandleSwapCompletion()
+{
+ QSignalSpy spy( mEffectHandler, SIGNAL(swapCompleted()) );
+ mEffectHandler->mSwapInProgress = true;
+ mEffectHandler->mSwapSharedCompleted = false;
+ mEffectHandler->mSwapReceivedCompleted = false;
+
+ // Test1: Swap is not completed.
+ mEffectHandler->handleSwapCompletion();
+ QVERIFY( mEffectHandler->mSwapInProgress );
+ QCOMPARE( spy.count(), 0 );
+
+ // Test2: Swap is partially completed.
+ mEffectHandler->mSwapSharedCompleted = true;
+ mEffectHandler->handleSwapCompletion();
+ QVERIFY( mEffectHandler->mSwapInProgress );
+ QCOMPARE( spy.count(), 0 );
+
+ // Test 3. Swap Completed completely.
+ mEffectHandler->mSwapSharedCompleted = true;
+ mEffectHandler->mSwapReceivedCompleted = true;
+ mEffectHandler->handleSwapCompletion();
+ QVERIFY( !mEffectHandler->mSwapInProgress );
+ QCOMPARE( spy.count(), 1 );
+
+ //Test 4. Local & Remote are player are availble.
+ lcutStub_LcUiEngine_setLocalPlaying( true );
+ lcutStub_LcUiEngine_setRemotePlaying( true );
+
+ mEffectHandler->handleSwapCompletion();
+ QVERIFY( mEffectHandler->mSharedVideo->isVisible() );
+ QVERIFY( mEffectHandler->mReceivedVideo->isVisible() );
+}
+
+void UT_LcEffectHandler::testIsSwapInProgress()
+{
+ QVERIFY( !mEffectHandler->isSwapInProgress() );
+ mEffectHandler->swap();
+ QVERIFY( mEffectHandler->isSwapInProgress() );
+}
+
+
+// Helper Utility Function for the Unit Test.
+void UT_LcEffectHandler::clearWidgets()
+{
+ mEffectHandler->mReceivedVideo = 0;
+ mEffectHandler->mReceivedVideoOverlay = 0;
+ mEffectHandler->mSharedVideo = 0;
+ mEffectHandler->mSharedVideoOverlay = 0;
+}
+
+void UT_LcEffectHandler::setWidgets()
+{
+ mEffectHandler->mReceivedVideo = mReceivedVideo;
+ mEffectHandler->mReceivedVideoOverlay = mReceivedVideoOverlay;
+ mEffectHandler->mSharedVideo = mSharedVideo;
+ mEffectHandler->mSharedVideoOverlay = mSharedVideoOverlay;
+}
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/src/ut_lcuicomponentrepository.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,322 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "ut_lcuicomponentrepository.h"
+#include "ut_lcuidefs.h"
+#include "lcuicomponentrepository.h"
+#include "lcuidefs.h"
+#include "lcview.h"
+#include "lcuiengine.h"
+#include <QtTest/QtTest>
+#include <QObjectList>
+#include <hbmainwindow.h>
+#include <QAction>
+#include <QString>
+#include <hbmenu.h>
+#include <hbtoolbar.h>
+#include <hbdialog.h>
+#include <hbaction.h>
+#include <hbinstance.h>
+#include <hbprogressdialog.h>
+
+#define UT_SET_ORIENTATION(orient) \
+HbInstance::instance()->allMainWindows().at(0)->setOrientation(orient);
+
+void UT_LcUiComponentRepository::initTestCase()
+{
+}
+
+void UT_LcUiComponentRepository::cleanupTestCase()
+{
+}
+
+
+void UT_LcUiComponentRepository::init()
+{
+ mEngine = new LcUiEngine( lcEngineName, lcDisplayName );
+ mRepository = new LcUiComponentRepository( *mEngine );
+}
+
+void UT_LcUiComponentRepository::cleanup()
+{
+ delete mRepository;
+ delete mEngine;
+}
+
+void UT_LcUiComponentRepository::testConstructor()
+{
+ QVERIFY( mRepository );
+ QVERIFY( !mRepository->mIdleView );
+ QVERIFY( !mRepository->mReceiveView );
+ QVERIFY( !mRepository->mReceiveOnlyView );
+ QVERIFY( !mRepository->mTwowayView );
+ QVERIFY( !mRepository->mSendView );
+ QVERIFY( !mRepository->mAllInOneView );
+ QVERIFY( !mRepository->mAcceptQuery );
+ QVERIFY( !mRepository->mInvitingNote );
+ QVERIFY( !mRepository->mWaitingNote );
+ QVERIFY( !mRepository->mRecipientQuery );
+
+}
+
+void UT_LcUiComponentRepository::testIdleView()
+{
+ // View not yet loaded
+ UT_SET_ORIENTATION( Qt::Horizontal );
+ QVERIFY( !mRepository->mIdleView );
+ LcView* view = mRepository->idleView();
+ QVERIFY( mRepository->mIdleView );
+ QCOMPARE( view->objectName(), QString( lcViewIdleId ) );
+
+ // View loaded
+ LcView* view2 = mRepository->idleView();
+ QVERIFY( view == view2 );
+}
+
+void UT_LcUiComponentRepository::testReceiveView()
+{
+ // View not yet loaded
+ // Landscape layout
+ UT_SET_ORIENTATION( Qt::Horizontal );
+ QVERIFY( !mRepository->mReceiveView );
+ LcView* view = mRepository->receiveView();
+ QVERIFY( mRepository->mReceiveView );
+ QCOMPARE( view->objectName(), QString( lcViewReceiveId ) );
+
+ // View loaded
+ LcView* view2 = mRepository->receiveView();
+ QVERIFY( view == view2 );
+}
+
+
+void UT_LcUiComponentRepository::testReceiveOnlyView()
+{
+ // View not yet loaded
+ QVERIFY( !mRepository->mReceiveOnlyView );
+ LcView* view = mRepository->receiveOnlyView();
+ QVERIFY( mRepository->mReceiveOnlyView );
+ QCOMPARE( view->objectName(), QString( lcViewReceiveOnlyId ) );
+
+ // View loaded
+ LcView* view2 = mRepository->receiveOnlyView();
+ QVERIFY( view == view2 );
+}
+
+
+void UT_LcUiComponentRepository::testTwowayView()
+{
+ // View not yet loaded
+ QVERIFY( !mRepository->mTwowayView );
+ LcView* view = mRepository->twowayView();
+ QVERIFY( mRepository->mTwowayView );
+ QCOMPARE( view->objectName(), QString( lcViewTwowayId ) );
+
+ // View loaded
+ LcView* view2 = mRepository->twowayView();
+ QVERIFY( view == view2 );
+}
+
+void UT_LcUiComponentRepository::testSendView()
+{
+ // View not yet loaded
+ QVERIFY( !mRepository->mSendView );
+ LcView* view = mRepository->sendView();
+ QVERIFY( mRepository->mSendView );
+ QCOMPARE( view->objectName(), QString( lcViewSendId ) );
+
+ // View loaded
+ LcView* view2 = mRepository->sendView();
+ QVERIFY( view == view2 );
+}
+
+void UT_LcUiComponentRepository::testAllInOneView()
+{
+ // View not yet loaded
+ UT_SET_ORIENTATION( Qt::Horizontal );
+ QVERIFY( !mRepository->mAllInOneView );
+ LcView* view = mRepository->allInOneView();
+ QVERIFY( mRepository->mAllInOneView );
+ QCOMPARE( view->objectName(), QString( lcViewAllInOneId ) );
+ QCOMPARE( mRepository->mLayoutSection, QString( lcLayoutLandscapeDefaultId ) );
+ // View loaded
+ LcView* view2 = mRepository->allInOneView();
+ QVERIFY( view == view2 );
+}
+
+void UT_LcUiComponentRepository::testAcceptQuery()
+{
+ // Query created and returned
+ QVERIFY( !mRepository->mAcceptQuery );
+ HbDialog* query = mRepository->acceptQuery();
+ QVERIFY( query );
+ QCOMPARE( query, mRepository->mAcceptQuery );
+ QVERIFY( !query->isVisible() );
+
+ // Existing query returned
+ HbDialog* query2 = mRepository->acceptQuery();
+ QVERIFY( query2 );
+ QVERIFY( query2 == query );
+}
+
+void UT_LcUiComponentRepository::testInvitingNote()
+{
+ // Note created and returned
+ QVERIFY( !mRepository->mInvitingNote );
+ HbDialog* note = mRepository->invitingNote();
+ QVERIFY( note );
+ QVERIFY( note == mRepository->mInvitingNote );
+ QVERIFY( !note->isVisible() );
+
+ // Existing note returned
+ HbDialog* note2 = mRepository->invitingNote();
+ QVERIFY( note2 );
+ QVERIFY( note2 == note );
+}
+
+void UT_LcUiComponentRepository::testWaitingNote()
+{
+ // Note created and returned
+ QVERIFY( !mRepository->mWaitingNote );
+ HbDialog* note = mRepository->waitingNote();
+ QVERIFY( note );
+ QVERIFY( note == mRepository->mWaitingNote );
+ QVERIFY( !note->isVisible() );
+
+ // Existing note returned
+ HbDialog* note2 = mRepository->waitingNote();
+ QVERIFY( note2 );
+ QVERIFY( note2 == note );
+}
+
+void UT_LcUiComponentRepository::testRecipientQuery()
+{
+ // Query created and returned
+ QVERIFY( !mRepository->mRecipientQuery );
+ HbDialog* query = mRepository->recipientQuery();
+ QVERIFY( mRepository->mRecipientQuery );
+ QCOMPARE( query, mRepository->mRecipientQuery );
+ QVERIFY( !query->isVisible() );
+
+ // Existing query returned
+ HbDialog* query2 = mRepository->recipientQuery();
+ QVERIFY( query2 == query );
+}
+
+void UT_LcUiComponentRepository::testShareOwnVideoQuery()
+{
+ // Query created and returned
+ QVERIFY( !mRepository->mShareOwnVideoQuery );
+ HbDialog* query = mRepository->shareOwnVideoQuery();
+ QVERIFY( mRepository->mShareOwnVideoQuery );
+ QCOMPARE( query, (HbDialog*)mRepository->mShareOwnVideoQuery );
+ QVERIFY( !query->isVisible() );
+
+ // Existing query returned
+ HbDialog* query2 = mRepository->shareOwnVideoQuery();
+ QVERIFY( query2 );
+ QVERIFY( query2 == query );
+}
+
+void UT_LcUiComponentRepository::testSharedVideoContextMenu()
+{
+ HbMenu* menu = new HbMenu();
+ QVERIFY( menu->isEmpty() );
+
+ QVERIFY( !mRepository->mAllInOneView );
+ LcView* view = mRepository->allInOneView();
+ QVERIFY( mRepository->mAllInOneView );
+ QCOMPARE( view->objectName(), QString( lcViewAllInOneId ) );
+
+ HbAction changeCamera( lcActChangeCameraId );
+ HbAction disableCam( lcActMenuDisableCameraId );
+ HbAction enableCam( lcActEnableCameraId );
+ HbAction changeCam( lcActMenuChangeCameraId );
+
+ mRepository->mActions.append( &changeCamera );
+ mRepository->mActions.append( &disableCam );
+ mRepository->mActions.append( &enableCam );
+ mRepository->mActions.append( &changeCam );
+
+ mRepository->sharedVideoContextMenuActions( menu, *view );
+ //TODO: stub implementation of void QGraphicsWidget::addAction(QAction *action);
+ //QVERIFY( !menu->isEmpty() );
+}
+
+
+void UT_LcUiComponentRepository::testLoadView_FileNotFound()
+{
+ QObjectList viewR;
+ const QString vid( "view");
+ const QString file( "file not found" );
+ QVERIFY( !mRepository->loadView( viewR, vid, file ) );
+}
+
+void UT_LcUiComponentRepository::testConnect()
+{
+ LcView* view = mRepository->idleView();
+ QVERIFY( view );
+ HbAction action;
+
+ // Existing action
+ action.setObjectName( QString( lcActMuteId ) );
+ QVERIFY( mRepository->connect( action, *view ) );
+
+ // Action not found
+ action.setObjectName( QString( "Action not defined" ) );
+ QVERIFY( !mRepository->connect( action, *view ) );
+}
+
+
+void UT_LcUiComponentRepository::testLoadLayout()
+{
+ bool ok( false );
+
+ // View not yet loaded
+ QVERIFY( mRepository->mLastLoadedView.length() == 0 );
+ ok = mRepository->loadLayout( lcLayoutLandscapeDefaultId );
+ QVERIFY( !ok );
+
+ // View is loaded
+ mRepository->mLastLoadedView = lcIdleViewFile;
+ ok = mRepository->loadLayout( lcLayoutLandscapeDefaultId );
+ QVERIFY( ok );
+
+ // Changing layout
+ ok = mRepository->loadLayout( lcLayoutLandscapeSwappedId );
+ QVERIFY( ok );
+ ok = mRepository->loadLayout( lcLayoutFullscreenId );
+ QVERIFY( ok );
+
+ // Loading non-existing section
+ ok = mRepository->loadLayout( QString("dummy_layout") );
+ QVERIFY( !ok );
+
+ // Check for current and previously loaded layout name
+ mRepository->mLastLoadedView = lcIdleViewFile;
+ ok = mRepository->loadLayout( lcLayoutLandscapeDefaultId );
+ QVERIFY( ok );
+ QVERIFY( mRepository->layout() == lcLayoutLandscapeDefaultId );
+ ok = mRepository->loadLayout( lcLayoutLandscapeDialpadId );
+ QVERIFY( ok );
+ QVERIFY( mRepository->layout() == lcLayoutLandscapeDialpadId );
+ QVERIFY( mRepository->previousLayout() == lcLayoutLandscapeDefaultId );
+ ok = mRepository->loadLayout( mRepository->previousLayout() );
+ QVERIFY( ok );
+ QVERIFY( mRepository->layout() == lcLayoutLandscapeDefaultId );
+ QVERIFY( mRepository->previousLayout() == lcLayoutLandscapeDialpadId );
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/src/ut_lcvideowidget.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+#include "ut_lcvideowidget.h"
+#include "ut_lcuidefs.h"
+#include "lcvideowidget.h"
+#include <QtTest/QtTest>
+#include <hbmainwindow.h>
+#include <QPainter>
+#include <QStyleOptionGraphicsItem>
+
+void UT_LcVideoWidget::initTestCase()
+{
+}
+
+void UT_LcVideoWidget::cleanupTestCase()
+{
+}
+
+
+void UT_LcVideoWidget::init()
+{
+ mVideoWidget = new LcVideoWidget();
+ mVideoWidget2 = new LcVideoWidget(0,false);
+}
+
+void UT_LcVideoWidget::cleanup()
+{
+ delete mVideoWidget;
+ delete mVideoWidget2;
+}
+
+void UT_LcVideoWidget::testConstructor()
+{
+ QVERIFY( mVideoWidget );
+ QVERIFY( mVideoWidget->isShowingVideo() );
+ QVERIFY( mVideoWidget2 );
+ QVERIFY( !mVideoWidget2->isShowingVideo() );
+}
+
+void UT_LcVideoWidget::testSetShowVideo()
+{
+ QVERIFY( mVideoWidget->isShowingVideo() );
+ mVideoWidget->setShowVideo(false);
+ QVERIFY( !mVideoWidget->isShowingVideo() );
+ mVideoWidget->setShowVideo(true);
+ QVERIFY( mVideoWidget->isShowingVideo() );
+}
+
+void UT_LcVideoWidget::testPaint()
+{
+ QPainter painter;
+ QStyleOptionGraphicsItem style;
+ mVideoWidget->setPos(QPointF(10,100));
+ mVideoWidget->paint(&painter,&style,0);
+ mVideoWidget2->paint(&painter,&style,0);
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/src/ut_lcview.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,911 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+#include "ut_lcview.h"
+#include "ut_lcuidefs.h"
+#include "lcview.h"
+#include "lcuiengine.h"
+#include "lcuicomponentrepository.h"
+#include "lcuidefs.h"
+#include "lcvideowidget.h"
+#include "lceffecthandler.h"
+#include <QtTest/QtTest>
+#include <hbmainwindow.h>
+#include <hblabel.h>
+#include <hbmessagebox.h>
+#include <hbaction.h>
+#include <hbtoolbar.h>
+#include <hbmenu.h>
+#include <hbinstance.h>
+#include <hblineedit.h>
+#include <hbpushbutton.h>
+#include <hbtransparentwindow.h>
+#include <qgraphicssceneevent.h>
+#include <qgraphicsitem.h>
+#include <QGesture.h>
+#include <dialpad.h>
+#include <dialpadvtkeyhandler.h>
+#include <HbTapGesture.h>
+
+// Stub Helper
+#include <hbstub_helper.h>
+
+#define UT_SET_ORIENTATION(orient) \
+HbInstance::instance()->allMainWindows().at(0)->setOrientation(orient);
+
+void UT_LcView::initTestCase()
+{
+ lcutStub_LcUiEngine_reset();
+ //must have main window, even if it not used
+ mMainWindow = new HbMainWindow();
+}
+
+void UT_LcView::cleanupTestCase()
+{
+ lcutStub_LcUiEngine_reset();
+ delete mMainWindow;
+}
+
+
+void UT_LcView::init()
+{
+ lcutStub_LcUiEngine_reset();
+ mRecipient = new HbLabel();
+ mEndCallButton = new HbPushButton();
+ mEngine = new LcUiEngine( lcEngineName, lcDisplayName );
+ mRepository = new LcUiComponentRepository( *mEngine );
+ mView = new LcView( *mEngine, *mRepository );
+ mView->mRecipient = mRecipient;
+ mView->mEndCallButton = mEndCallButton;
+ mView->mChangeCameraAction = new HbAction();
+ mView->mMuteAction = new HbAction();
+ mView->mSpeakerAction = new HbAction();
+ mView->mDisableCameraAction = new HbAction();
+ mView->mDisableCameraMenuAction = new HbAction();
+}
+
+void UT_LcView::cleanup()
+{
+ lcutStub_LcUiEngine_reset();
+ delete mRecipient;
+ delete mView;
+ delete mEngine;
+ delete mRepository;
+ delete mEndCallButton;
+}
+
+void UT_LcView::testConstructor()
+{
+ QVERIFY( mView );
+}
+
+void UT_LcView::testActivated()
+{
+ mView->init();
+ lcutStub_LcUiEngine_reset();
+ QVERIFY( lcutStub_LcUiEngine_getCurrentView() == 0 );
+ mView->activated();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_getCurrentView() == mView );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+
+ lcutStub_LcUiEngine_reset();
+ mView->activated();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+
+ lcutStub_LcUiEngine_reset();
+ lcutStub_LcUiEngine_setCameraMain( true);
+ lcutStub_LcUiEngine_setMuted( true);
+ lcutStub_LcUiEngine_setSpeaker( true );
+
+ mView->activated();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+
+ // normal scenario
+ lcutStub_LcUiEngine_reset();
+ mView->mChangeCameraAction = new HbAction();
+ mView->mMuteAction = new HbAction();
+ mView->mSpeakerAction = new HbAction();
+ mView->mDisableCameraAction = new HbAction();
+
+ mView->mEngine.setMainCamera( true );
+ lcutStub_LcUiEngine_setMuted( true);
+ lcutStub_LcUiEngine_setSpeaker( true );
+ lcutStub_LcUiEngine_setLocalPlaying( true );
+ mView->activated();
+ QVERIFY( mView->mChangeCameraAction );
+ QVERIFY( mView->mChangeCameraAction->icon() == HbIcon( lcIconNameSecondaryCamera ) );
+ QVERIFY( mView->mMuteAction );
+ QVERIFY( mView->mMuteAction->icon() == HbIcon( lcIconNameUnmuteMic ) );
+ QVERIFY( mView->mSpeakerAction );
+ QVERIFY( mView->mSpeakerAction->icon() == HbIcon( lcIconNameHandset ) );
+ QVERIFY( mView->mDisableCameraAction );
+ QVERIFY( mView->mDisableCameraAction->icon() == HbIcon( lcIconNameDisableCamera ) );
+
+ // dude trust me , ofcourse not everything normal everytime
+ mView->mEngine.setMainCamera( false );
+ lcutStub_LcUiEngine_setMuted( false );
+ lcutStub_LcUiEngine_setSpeaker( false );
+ lcutStub_LcUiEngine_setLocalPlaying( false );
+ mView->activated();
+ QVERIFY( mView->mChangeCameraAction );
+ QVERIFY( mView->mChangeCameraAction->icon() == HbIcon( lcIconNameMainCamera ) );
+ QVERIFY( mView->mMuteAction );
+ QVERIFY( mView->mMuteAction->icon() == HbIcon( lcIconNameMuteMic ) );
+ QVERIFY( mView->mSpeakerAction );
+ QVERIFY( mView->mSpeakerAction->icon() == HbIcon( lcIconNameLoudspeaker ) );
+ QVERIFY( mView->mDisableCameraAction );
+ QVERIFY( mView->mDisableCameraAction->icon() == HbIcon( lcIconNameEnableCamera ) );
+}
+
+void UT_LcView::testInit()
+{
+ mRepository->mReturnSendVideo = false;
+ mView->init();
+ QVERIFY( mView->mRecipient );
+ QVERIFY( !mView->mSharedVideoWidget );
+ QVERIFY( mView->mDialpad );
+ QVERIFY( mView->mDialpadVtKeyHandler );
+
+ mRepository->mReturnSendVideo = true;
+ mView->init();
+ QVERIFY( mView->mRecipient );
+ QVERIFY( mView->mSharedVideoWidget );
+ QVERIFY( mView->menu());
+ QVERIFY( mView->mDialpad );
+ QVERIFY( mView->mDialpadVtKeyHandler );
+
+ // emergency call
+ mView->mDialpadVtKeyHandler->contentChanged("112");
+ QVERIFY( mView->mDialpad->mIsCallButtonEnabled );
+ mView->mDialpadVtKeyHandler->contentChanged("100");
+ QVERIFY( !mView->mDialpad->mIsCallButtonEnabled );
+}
+
+void UT_LcView::testDeactivated()
+{
+ mView->deactivated();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas ) );
+}
+
+void UT_LcView::testSetCameraActionToMain()
+{
+ mView->setCameraActionToMain();
+ QVERIFY( mView->mChangeCameraAction->text().isEmpty() );
+ QCOMPARE( mView->mChangeCameraAction->icon(), HbIcon(lcIconNameMainCamera) );
+}
+
+void UT_LcView::testSetCameraActionToSecondary()
+{
+ mView->setCameraActionToSecondary();
+ QVERIFY( mView->mChangeCameraAction->text().isEmpty() );
+ QCOMPARE( mView->mChangeCameraAction->icon(), HbIcon(lcIconNameSecondaryCamera) );
+}
+
+void UT_LcView::testSetMuteActionToUnmute()
+{
+ mView->setMuteActionToUnmute();
+ QVERIFY( mView->mMuteAction->text().isEmpty() );
+ QCOMPARE (mView->mMuteAction->icon(), HbIcon(lcIconNameUnmuteMic));
+}
+
+void UT_LcView::testSetMuteActionToMute()
+{
+ mView->setMuteActionToMute();
+ QVERIFY( mView->mMuteAction->text().isEmpty() );
+ QCOMPARE (mView->mMuteAction->icon(), HbIcon(lcIconNameMuteMic));
+}
+
+void UT_LcView::testSetSpeakerActionToHandset()
+{
+ mView->setSpeakerActionToHandset();
+ QVERIFY( mView->mSpeakerAction->text().isEmpty() );
+ QCOMPARE( mView->mSpeakerAction->icon(), HbIcon(lcIconNameHandset) );
+}
+
+void UT_LcView::testSetSpeakerActionToSpeaker()
+{
+ mView->setSpeakerActionToSpeaker();
+ QVERIFY( mView->mSpeakerAction->text().isEmpty() );
+ QCOMPARE( mView->mSpeakerAction->icon(), HbIcon(lcIconNameLoudspeaker) );
+}
+
+void UT_LcView::testSetCameraActionToEnable()
+{
+ mView->setCameraActionToEnable();
+ QVERIFY( mView->mDisableCameraAction->text().isEmpty() );
+ QCOMPARE( mView->mDisableCameraAction->icon(), HbIcon(lcIconNameEnableCamera) );
+ QCOMPARE( mView->mDisableCameraMenuAction->text(), hbTrId( "txt_vt_menu_enable_camera" ) );
+}
+
+void UT_LcView::testSetCameraActionToDisable()
+{
+ mView->setCameraActionToDisable();
+ QVERIFY( mView->mDisableCameraAction->text().isEmpty() );
+ QCOMPARE( mView->mDisableCameraAction->icon(), HbIcon(lcIconNameDisableCamera) );
+ QCOMPARE( mView->mDisableCameraMenuAction->text(), hbTrId( "txt_vt_menu_disable_camera" ) );
+}
+
+
+void UT_LcView::testDisableControls()
+{
+ mView->disableControls();
+ QVERIFY( !mView->menu()->isEnabled() );
+ QVERIFY( !mView->toolBar()->isEnabled() );
+}
+
+void UT_LcView::testEnableControls()
+{
+ mView->menu()->setEnabled( false );
+ mView->toolBar()->setEnabled( false );
+
+ mView->enableControls();
+ QVERIFY( mView->menu()->isEnabled() );
+ QVERIFY( mView->toolBar()->isEnabled() );
+}
+
+
+void UT_LcView::testEndVideoSession()
+{
+ mView->endVideoSession();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_stop ) );
+}
+
+void UT_LcView::testMute()
+{
+ mView->mute();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_mute ) );
+ QVERIFY( !mView->timerId );
+ QVERIFY( !mEngine->fullScreenMode());
+}
+
+void UT_LcView::testChangeCamera()
+{
+ mView->init();
+ mView->changeCamera();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_toggleCamera ) );
+ QVERIFY( !mEngine->fullScreenMode() );
+}
+
+void UT_LcView::testSwitchToVoiceCall()
+{
+ mView->switchToVoiceCall();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_stop ) );
+}
+
+void UT_LcView::testDisableCameraWhenOnFullScreenMode()
+{
+ mView->init();
+ mEngine->setFullScreenMode(true);
+ mView->disableCamera();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_disableCamera ) );
+ QVERIFY( mEngine->fullScreenMode() );
+}
+
+void UT_LcView::testDisableCameraWhenNotOnFullScreenMode()
+{
+ mView->init();
+ mEngine->setFullScreenMode(false);
+ mView->disableCamera();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_disableCamera ) );
+ QVERIFY( !mEngine->fullScreenMode() );
+}
+
+void UT_LcView::testSpeaker()
+{
+ mView->init();
+ mView->speaker();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_speaker ) );
+ QVERIFY( !mEngine->fullScreenMode() );
+}
+
+void UT_LcView::testSwap()
+{
+ QVERIFY( !mView->mSharedVideoWidget );
+ QVERIFY( !mView->mReceivedVideoWidget );
+ mView->swap();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutNoCall ) );
+
+ lcutStub_LcUiEngine_reset();
+ mView->init();
+ mView->swap();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutNoCall ) );
+}
+
+void UT_LcView::testNotSupported()
+{
+ HbMainWindow mainWin;
+ QVERIFY( mView->mNotSupportedNote );
+ QVERIFY( !mView->mNotSupportedNote->isVisible() );
+ mView->notSupported();
+ QVERIFY( mView->mNotSupportedNote->isVisible() );
+}
+
+void UT_LcView::testUpdateVideoRects()
+{
+ mView->init();
+ LcVideoWidget* sharedVideoWidget = mView->mSharedVideoWidget;
+ LcVideoWidget* receivedVideoWidget = mView->mReceivedVideoWidget;
+
+ mView->mSharedVideoWidget = 0;
+ mView->mReceivedVideoWidget = 0;
+ mView->updateVideoRects();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+
+ mView->mSharedVideoWidget = sharedVideoWidget;
+ mView->mReceivedVideoWidget = 0;
+ mView->updateVideoRects();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+
+ mView->mSharedVideoWidget = 0;
+ mView->mReceivedVideoWidget = receivedVideoWidget;
+ mView->updateVideoRects();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+
+ mView->mSharedVideoWidget = sharedVideoWidget;
+ mView->mReceivedVideoWidget = receivedVideoWidget;
+ sharedVideoWidget->hide();
+ receivedVideoWidget->hide();
+ lcutStub_LcUiEngine_setLocalPlaying( false );
+ lcutStub_LcUiEngine_setRemotePlaying( false );
+ mView->updateVideoRects();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+ QVERIFY( !sharedVideoWidget->isVisible() );
+ QVERIFY( !receivedVideoWidget->isVisible() );
+
+ sharedVideoWidget->hide();
+ receivedVideoWidget->hide();
+ lcutStub_LcUiEngine_setLocalPlaying( true );
+ lcutStub_LcUiEngine_setRemotePlaying( true );
+ mView->updateVideoRects();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+
+ //Test: Shared video widgets and received video wigts are positioned at (0,0)
+ //It does not update.
+ lcutStub_LcUiEngine_reset();
+ mView->isViewReady = false;
+ mView->mSharedVideoWidget = sharedVideoWidget;
+ mView->mSharedVideoWidget->setPos(QPointF(0,0));
+ mView->mReceivedVideoWidget = receivedVideoWidget;
+ mView->mReceivedVideoWidget->setPos(QPointF(0,0));
+ mView->updateVideoRects();
+ QVERIFY( !lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( !lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( !lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+
+
+ //Test2: Shared video widgets positioned at (0,0) and other widgets is null
+ //It does not update.
+ lcutStub_LcUiEngine_reset();
+ mView->mSharedVideoWidget = sharedVideoWidget;
+ mView->mSharedVideoWidget->setPos(QPointF(0,0));
+ mView->mReceivedVideoWidget = 0;
+ mView->isViewReady = false;
+ mView->updateVideoRects();
+ QVERIFY( !lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( !lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( !lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+
+ //Test3: Shared video widgets positioned correctly and other widgets is null
+ //It update.
+ lcutStub_LcUiEngine_reset();
+ mView->mSharedVideoWidget = sharedVideoWidget;
+ mView->mSharedVideoWidget->setPos(QPointF(10,10));
+ mView->mReceivedVideoWidget = 0;
+ mView->isViewReady = false;
+ mView->updateVideoRects();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+}
+
+void UT_LcView::testCurrentLayout()
+{
+ mView->init();
+ QString layout;
+
+ //1. Landscape layout
+ UT_SET_ORIENTATION( Qt::Horizontal );
+ layout = mView->currentLayout();
+ QVERIFY( layout == lcLayoutLandscapeDefaultId );
+
+ //2. Landscape swapped layout
+ // Shared window x coordinate is higher than Received windows x coordinate.
+
+ QRectF pos1 = QRectF(100,300, 400, 400);
+ QRectF pos2 = QRectF(5,100, 200, 200);
+
+ UT_SET_ORIENTATION( Qt::Horizontal );
+ mView->mEffectHandler->mSwapInProgress = true;
+ mView->mSharedVideoWidget->setGeometry(pos1);
+ mView->mReceivedVideoWidget->setGeometry(pos2);
+
+ layout = mView->currentLayout();
+ QVERIFY( layout == lcLayoutLandscapeSwappedId );
+
+ //3. If it's already swapped, change to the normal landscape mode
+ mView->mSharedVideoWidget->setGeometry(pos2);
+ mView->mReceivedVideoWidget->setGeometry(pos1);
+ layout = mView->currentLayout();
+ QVERIFY( layout == lcLayoutLandscapeDefaultId );
+}
+
+
+void UT_LcView::testToFullScreen()
+{
+ QString layout;
+ UT_SET_ORIENTATION( Qt::Horizontal );
+
+ // Test1: to full screen
+ mView->init();
+ mView->menu()->setVisible( false );
+ mView->toFullScreen( true );
+ QVERIFY( mEngine->fullScreenMode() );
+ // Use the helper function do not invent new one
+ QVERIFY( !HbStubHelper::isTitleBarVisible() );
+ QVERIFY( !HbStubHelper::isStatusBarVisible() );
+ QVERIFY( !mView->toolBar()->isVisible() );
+ QVERIFY( !mView->mEndCallButton->isVisible() );
+ QVERIFY( !mView->mDuration->isVisible() );
+ QVERIFY( !mView->mRecipient->isVisible() );
+
+ // Test2 : not in full screen
+ mView->init();
+ mView->menu()->setVisible( false );
+ mView->toFullScreen( false );
+ QVERIFY( !mEngine->fullScreenMode() );
+ QVERIFY( HbStubHelper::isTitleBarVisible() );
+ QVERIFY( HbStubHelper::isStatusBarVisible() );
+ QVERIFY( mView->toolBar()->isVisible() );
+ QVERIFY( mView->mEndCallButton->isVisible() );
+ QVERIFY( mView->mDuration->isVisible() );
+ QVERIFY( mView->mRecipient->isVisible() );
+ int tId = mView->timerId;
+ mView->watchInactivity();
+ QVERIFY( mView->timerId != tId );
+
+ // Test3 : menu visible
+ mView->init();
+ mView->menu()->setVisible( false );
+ mView->toFullScreen( false );
+ mView->menu()->setVisible( true );
+ mView->toFullScreen( true );
+ QVERIFY( !mEngine->fullScreenMode() );
+ QVERIFY( HbStubHelper::isTitleBarVisible() );
+ QVERIFY( HbStubHelper::isStatusBarVisible() );
+ QVERIFY( mView->toolBar()->isVisible() );
+ QVERIFY( mView->mEndCallButton->isVisible() );
+ QVERIFY( mView->mDuration->isVisible() );
+ QVERIFY( mView->mRecipient->isVisible() );
+ tId = mView->timerId;
+ mView->watchInactivity();
+ QVERIFY( mView->timerId != tId );
+
+ // Test3 : dialpad visible
+ mView->init();
+ delete mView->mDialpad;
+ mView->mDialpad = new Dialpad();
+ mView->toFullScreen( true );
+ QVERIFY( !mEngine->fullScreenMode() );
+ QVERIFY( HbStubHelper::isTitleBarVisible() );
+ QVERIFY( HbStubHelper::isStatusBarVisible() );
+ QVERIFY( mView->toolBar()->isVisible() );
+ QVERIFY( mView->mEndCallButton->isVisible() );
+ QVERIFY( mView->mDuration->isVisible() );
+ QVERIFY( mView->mRecipient->isVisible() );
+ tId = mView->timerId;
+ mView->watchInactivity();
+ QVERIFY( mView->timerId == tId );
+}
+
+void UT_LcView::testGestureEvent()
+{
+ mView->init();
+ mView->menu()->setVisible(false);
+ UT_SET_ORIENTATION( Qt::Horizontal );
+
+ mView->mSharedVideoWidget->setGeometry(QRectF(5,50, 100, 100));
+ mView->mReceivedVideoWidget->setGeometry(QRectF(5,200, 200, 400));
+ QList<QGesture*> list;
+
+ // Test1: Short tap Event toggle the full screen mode
+ mEngine->setFullScreenMode(true);
+ QPointF sharedVideoPos(10,60);
+ QTapGesture *tapGesture = new QTapGesture();
+ tapGesture->setPosition(sharedVideoPos);
+ HbStubHelper::setGestureStyleHint(HbTapGesture::Tap);
+ HbStubHelper::setGestureState(Qt::GestureFinished);
+ list.append(tapGesture);
+ QGestureEvent event1(list);
+ mView->gestureEvent(&event1);
+ QVERIFY( !mEngine->fullScreenMode());
+ list.clear();
+
+ // Test2: Long tap event does not affect full screen mode.
+ QTapGesture *tapGesture2 = new QTapGesture();
+ QPointF receivedVideoPos(10,210);
+ tapGesture2->setPosition(receivedVideoPos);
+ HbStubHelper::setGestureState(Qt::GestureUpdated);
+ HbStubHelper::setGestureStyleHint(HbTapGesture::TapAndHold);
+ list.append(tapGesture2);
+ QGestureEvent event3(list);
+ mEngine->setFullScreenMode(true);
+ mView->gestureEvent(&event3);
+ // Ensure it does not affect full screen mode.
+ QVERIFY( mEngine->fullScreenMode());
+
+ //Test3: Not Handled States.
+ HbStubHelper::setGestureState(Qt::GestureStarted);
+ mEngine->setFullScreenMode(true);
+ mView->gestureEvent(&event3);
+ // Ensure its not handled everything remains same
+ QVERIFY( mEngine->fullScreenMode());
+ list.clear();
+
+ //Test4: Not Handled Event
+ QSwipeGesture *swipeGesture = new QSwipeGesture();
+ list.append(swipeGesture);
+ QGestureEvent event4(list);
+ mEngine->setFullScreenMode(true);
+ mView->gestureEvent(&event4);
+ // Ensure it does not affect full screen mode.
+ QVERIFY( mEngine->fullScreenMode());
+}
+
+void UT_LcView::testContextMenu()
+{
+ QVERIFY( !mView->mItemContextMenu );
+ mView->createContextMenu();
+ QVERIFY( mView->mItemContextMenu );
+ QVERIFY( mView->mItemContextMenu->isEmpty() );
+}
+
+void UT_LcView::testGestureLongPress()
+{
+ QVERIFY( !mView->mItemContextMenu );
+ QPointF coordsNoHit(10,10);
+ mView->gestureLongPress( coordsNoHit );
+ QVERIFY( !mView->mItemContextMenu );
+
+ mView->init();
+ HbTransparentWindow* sharedVideoWidget = mView->mSharedVideoWidget;
+ QVERIFY( sharedVideoWidget != NULL );
+ mView->mSharedVideoWidget->setGeometry(QRectF(5,100, 200, 200));
+
+ QPointF coordsHitSharedVideo(20,150);
+ mView->gestureLongPress( coordsHitSharedVideo );
+ QVERIFY( mView->mItemContextMenu );
+
+ delete mView->mItemContextMenu;
+ mView->mItemContextMenu = 0;
+
+ QPointF coordsNoHit2(10,400);
+ mView->gestureLongPress( coordsNoHit2 );
+ QVERIFY( !mView->mItemContextMenu );
+
+ HbTransparentWindow* receivedVideoWidget = mView->mReceivedVideoWidget;
+ QVERIFY( receivedVideoWidget != NULL );
+ mView->mReceivedVideoWidget->setGeometry(QRectF(5,350, 200, 200));
+
+ QPointF coordsHitRecievedVideo(10,400);
+ mView->gestureLongPress( coordsHitRecievedVideo );
+ QVERIFY( !mView->mItemContextMenu );
+}
+
+
+void UT_LcView::testGestureShortPress()
+{
+ mView->init();
+ mView->menu()->setVisible(false);
+ mView->mSharedVideoWidget->setGeometry(QRectF(5,50, 100, 100));
+ mView->mReceivedVideoWidget->setGeometry(QRectF(5,200, 200, 400));
+
+ UT_SET_ORIENTATION( Qt::Horizontal );
+ mEngine->setFullScreenMode(true);
+ mView->gestureShortPress();
+ QVERIFY( !mEngine->fullScreenMode());
+
+ // toggled
+ mView->gestureShortPress();
+ QVERIFY( mEngine->fullScreenMode());
+}
+
+
+void UT_LcView::testTimerEvent()
+{
+ mView->init();
+ // timer time out
+ QTimerEvent* event = new QTimerEvent( mView->timerId );
+ mView->menu()->setVisible(false);
+ mView->timerEvent( event );
+ QVERIFY( mEngine->fullScreenMode());
+ QVERIFY( !HbStubHelper::isTitleBarVisible() );
+ QVERIFY( !HbStubHelper::isStatusBarVisible() );
+ QVERIFY( !mView->toolBar()->isVisible() );
+ QVERIFY( !mView->mEndCallButton->isVisible());
+ QVERIFY( !mView->mDuration->isVisible());
+ QVERIFY( !mView->mRecipient->isVisible());
+ delete event;
+
+ // not a timer we want
+ mView->toFullScreen( false );
+ event = new QTimerEvent( 22222 ); // some number
+ mView->timerEvent( event );
+ QVERIFY( !mEngine->fullScreenMode() );
+ QVERIFY( HbStubHelper::isTitleBarVisible() );
+ QVERIFY( HbStubHelper::isStatusBarVisible() );
+ QVERIFY( mView->toolBar()->isVisible() );
+ QVERIFY( mView->mEndCallButton->isVisible());
+ QVERIFY( mView->mDuration->isVisible());
+ QVERIFY( mView->mRecipient->isVisible());
+ delete event;
+}
+
+void UT_LcView::testShareImage()
+{
+ QVERIFY( !lcutStub_LcUiEngine_isImageShared );
+ mView->shareImage();
+ //QVERIFY( lcutStub_LcUiEngine_isImageShared() );
+}
+
+void UT_LcView::testUpdateSwapLayout()
+{
+ mView->init();
+ mView->menu()->setVisible(false);
+ mView->mEndCallButton = mEndCallButton;
+ UT_SET_ORIENTATION( Qt::Horizontal );
+ mEngine->setFullScreenMode(true);
+ mView->updateSwapLayout();
+ QVERIFY( mEngine->fullScreenMode());
+ QVERIFY( !HbStubHelper::isTitleBarVisible() );
+ QVERIFY( !HbStubHelper::isStatusBarVisible() );
+ QVERIFY( !mView->isItemVisible(Hb::DockWidgetItem ) );
+ QVERIFY( !mView->mEndCallButton->isVisible());
+ QVERIFY( !mView->mDuration->isVisible());
+ QVERIFY( !mView->mRecipient->isVisible());
+}
+
+void UT_LcView::testMenuAboutToShow()
+{
+ mView->init();
+ mView->menu()->setVisible(false);
+ mView->toFullScreen( true );
+ mView->menuAboutToShow();
+ QVERIFY( !mEngine->fullScreenMode());
+ QVERIFY( HbStubHelper::isTitleBarVisible() );
+ QVERIFY( HbStubHelper::isStatusBarVisible() );
+ QVERIFY( mView->toolBar()->isVisible() );
+ QVERIFY( mView->mEndCallButton->isVisible());
+ QVERIFY( mView->mDuration->isVisible());
+ QVERIFY( mView->mRecipient->isVisible());
+ int tId = mView->timerId;
+ mView->watchInactivity();
+ QVERIFY( mView->timerId != tId );
+
+}
+
+void UT_LcView::testTranslateRectForOrientation()
+{
+ UT_SET_ORIENTATION( Qt::Horizontal );
+ QRectF origRect( 10, 10, 100, 200 );
+ QRectF modRect = mView->translateRectForOrientation(origRect);
+ QVERIFY( modRect.height() == origRect.width() );
+ QVERIFY( modRect.width() == origRect.height() );
+}
+
+void UT_LcView::testTranslatePointForOrientation()
+{
+ UT_SET_ORIENTATION( Qt::Horizontal );
+ QPointF origPoint( 10, 20 );
+ QPointF modPoint = mView->translatePointForOrientation(origPoint);
+ QVERIFY( origPoint != modPoint );
+}
+
+void UT_LcView::testOpenDialpad()
+{
+ delete mView;
+ mView = mRepository->twowayView();
+ HbMainWindow& window = *(HbInstance::instance()->allMainWindows().at(0));
+ QPointF pos = window.pos();
+ window.setOrientation(Qt::Horizontal);
+
+ // init
+ mView->mRepository.mLayoutSection = lcLayoutLandscapeDefaultId;
+ mView->menu()->setVisible(true);
+
+ mView->openDialpad();
+
+ QVERIFY(mView->mDialpad->isOpen());
+ QVERIFY(!mView->mDialpad->mIsCallButtonEnabled);
+ QVERIFY(mView->mRepository.mLayoutSection == lcLayoutLandscapeDialpadId);
+ QVERIFY( HbStubHelper::isTitleBarVisible() );
+ QVERIFY( HbStubHelper::isStatusBarVisible() );
+ QCOMPARE(mView->menu()->actions().size(), 0);
+ QVERIFY(!mView->mEngine.fullScreenMode());
+}
+
+void UT_LcView::testDialpadOpened()
+{
+ // no implementation
+}
+
+void UT_LcView::testDialpadClosed()
+{
+ delete mView;
+ mView = mRepository->twowayView();
+
+ // test : no fullscreen,landscape , open and close dialpad scenario
+ HbMainWindow& window = *(HbInstance::instance()->allMainWindows().at(0));
+ window.setOrientation( Qt::Horizontal );
+ mView->openDialpad();
+
+ // Enter some dummy text
+ mView->mDialpad->editor().setText( QString("1") );
+ mView->dialpadClosed();
+ // Ensure text is cleared.
+
+ QCOMPARE(mView->mDialpad->editor().text(), QString::fromAscii(""));
+ QVERIFY(!mView->mDialpad->editor().text().length());
+
+ // check that layout has changed
+ QVERIFY(mView->mRepository.layout()!= lcLayoutLandscapeDialpadId);
+ QVERIFY( HbStubHelper::isTitleBarVisible() );
+ QVERIFY( HbStubHelper::isStatusBarVisible() );
+ QVERIFY(mView->toolBar()->isVisible());
+ QVERIFY(mView->mEndCallButton->isVisible());
+ QVERIFY(mView->mRecipient->isVisible());
+ QVERIFY(mView->mDuration->isVisible());
+ QVERIFY(mView->menu()->isVisible());
+ QVERIFY(!mView->mEngine.fullScreenMode());
+
+ // test : swapped,fullscreen,landscape,open and close dialpad scenario
+ mView->mRepository.loadLayout( lcLayoutLandscapeSwappedId );
+ mView->openDialpad();
+ mView->dialpadClosed();
+ // check for swapped view appears
+ QVERIFY( mView->mRepository.layout()== lcLayoutLandscapeSwappedId );
+ // check titlebar invisible
+ QVERIFY( HbStubHelper::isTitleBarVisible() );
+ QVERIFY( HbStubHelper::isStatusBarVisible() );
+ // check toolbar invisible
+ QVERIFY( mView->toolBar()->isVisible() );
+ QVERIFY(!mView->mEngine.fullScreenMode());
+
+}
+
+
+void UT_LcView::testDialpadEditorTextChanged()
+{
+ delete mView;
+ mView = mRepository->twowayView();
+
+ mView->openDialpad();
+ //text editor is one character long
+ QVERIFY( lcutStub_LcUiEngine_getDialToneChar() == '0');
+ mView->mDialpad->editor().setText( QString("1") );
+ mView->dialpadEditorTextChanged();
+ QVERIFY( lcutStub_LcUiEngine_getDialToneChar() == '1' );
+
+ // We transmit dial tone character sepretly.
+ mView->mDialpad->editor().setText( QString("12345") );
+ mView->dialpadEditorTextChanged();
+ QVERIFY( lcutStub_LcUiEngine_getDialToneChar() == '5' );
+}
+
+void UT_LcView::testBack()
+{
+ delete mView;
+ mView = mRepository->twowayView();
+ mView->openDialpad();
+ mView->back();
+ QVERIFY( !mView->mDialpad->isOpen() );
+}
+
+void UT_LcView::testAddOptionsMenuActions()
+{
+ delete mView;
+ mView = mRepository->twowayView();
+
+ mView->addOptionsMenuActions();
+ //TODO: stub implementation of void QGraphicsWidget::addAction(QAction *action);
+ //QCOMPARE(mView->menu()->actions().size(), 2);
+}
+
+void UT_LcView::testWatchInactivity()
+{
+ mView->init();
+
+ // test : in fullscreen mode already, dont start timer again
+ int tid = mView->timerId ;
+ mView->mEngine.setFullScreenMode( true );
+ mView->watchInactivity();
+ QVERIFY( tid==mView->timerId );
+
+ // test : not in full screen but dialpad view. dont start timer
+ mView->mEngine.setFullScreenMode( false );
+ QVERIFY( mView->mDialpad );
+ mView->openDialpad();
+ mView->watchInactivity();
+ QVERIFY( tid==mView->timerId );
+
+ // test : not in full screen and no dialpad , start timer
+ mView->mEngine.setFullScreenMode( false );
+ QVERIFY( mView->mDialpad );
+ mView->mDialpad->closeDialpad();
+ mView->watchInactivity();
+ QVERIFY( tid!=mView->timerId );
+
+}
+
+
+
+void UT_LcView::testIsVideoPositionedCorrectly()
+{
+ //Test1: Null video Widget returns true
+ mRepository->mReturnSendVideo = false;
+ mView->init();
+ QVERIFY( !mView->mSharedVideoWidget );
+ QVERIFY(mView->isVideoPositionedCorrectly(mView->mSharedVideoWidget));
+
+ //Test2: Valid Video widgets with correct position returns true:
+ mRepository->mReturnSendVideo = true;
+ mView->init();
+ QVERIFY( mView->mSharedVideoWidget );
+ QVERIFY( mView->isVideoPositionedCorrectly(mView->mSharedVideoWidget ));
+
+ //Test3: Vaild video widgets withi co-ordinates returns false.
+ mView->mSharedVideoWidget->setPos(QPointF(0,0));
+ QVERIFY( mView->mSharedVideoWidget );
+ QVERIFY( !mView->isVideoPositionedCorrectly(mView->mSharedVideoWidget ));
+}
+
+
+void UT_LcView::testIsPositioned()
+{
+ //Test: isViewReady is true and proper co-ordinates
+ mRepository->mReturnSendVideo = true;
+ mView->init();
+ QVERIFY( !mView->isViewReady );
+ QVERIFY( mView->mSharedVideoWidget );
+ QVERIFY( mView->isVideoPositionedCorrectly(mView->mSharedVideoWidget ));
+ mView->isPositioned();
+ QVERIFY( mView->isViewReady );
+
+ //Test: isViewReady is false and its first time and co ordinates are 0,0
+ mView->isViewReady = false;
+ mView->mSharedVideoWidget->setPos(QPointF(0,0));
+ QVERIFY( mView->mSharedVideoWidget );
+ QVERIFY( !mView->isVideoPositionedCorrectly(mView->mSharedVideoWidget ));
+ mView->isPositioned();
+ QVERIFY( !mView->isViewReady );
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/src/ut_lcviewmanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,195 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <QtTest/QtTest>
+#include <hbmainwindow.h>
+#include <hbview.h>
+#include <hbactivitymanager.h>
+#include <HbApplication>
+#include "ut_lcviewmanager.h"
+#include "lcviewmanager.h"
+#include "lcviewmanager_p.h"
+#include "ut_lcuidefs.h"
+#include "lcuiengine.h"
+#include "lcuidefs.h"
+
+// Simulate completion of queued view change
+#define LC_VIEW_CHANGE_COMPLETE( startup ) \
+mViewManager->activateCurrentView( startup );
+
+void UT_LcUiViewManager::initTestCase()
+{
+ lcutStub_LcUiEngine_reset();
+
+}
+
+void UT_LcUiViewManager::cleanupTestCase()
+{
+ lcutStub_LcUiEngine_reset();
+
+}
+
+void UT_LcUiViewManager::init()
+{
+ lcutStub_LcUiEngine_reset();
+
+ mViewManagerDecorator = new LcViewManager( lcEngineName, lcDisplayName );
+ mViewManager = mViewManagerDecorator->d_ptr;
+}
+
+void UT_LcUiViewManager::cleanup()
+{
+ lcutStub_LcUiEngine_reset();
+ delete mViewManagerDecorator;
+}
+
+void UT_LcUiViewManager::testConstructor()
+{
+ QVERIFY( mViewManager );
+ QVERIFY( mViewManager->mRepository );
+ QVERIFY( mViewManager->mEngine );
+ QVERIFY( mViewManager->mMainWindow.viewCount() == 1 );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutNoCall ) );
+
+}
+
+void UT_LcUiViewManager::testChangeView()
+{
+ QVERIFY( mViewManager );
+ QVERIFY( mViewManager->mMainWindow.viewCount() == 1 );
+
+ mViewManager->changeView();
+ LC_VIEW_CHANGE_COMPLETE( false )
+ QVERIFY( mViewManager->mMainWindow.viewCount() == 1 );
+ QVERIFY( mViewManager->mMainWindow.currentView()->objectName() == lcViewIdleId );
+
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+ lcutStub_LcUiEngine_reset();
+
+ LC_VIEW_CHANGE_COMPLETE( true )
+ QVERIFY( mViewManager->mMainWindow.viewCount() == 1 );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_start ) );
+ lcutStub_LcUiEngine_reset();
+
+ lcutStub_LcUiEngine_setLayout( Lc_ReceivedViewLayout );
+ mViewManager->changeView();
+ LC_VIEW_CHANGE_COMPLETE( false )
+ QVERIFY( mViewManager->mMainWindow.viewCount() == 2 );
+ QVERIFY( mViewManager->mMainWindow.currentView()->objectName() == lcViewReceiveId );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+ lcutStub_LcUiEngine_reset();
+
+ lcutStub_LcUiEngine_setLayout( Lc_SharedViewLayout );
+ mViewManager->changeView();
+ LC_VIEW_CHANGE_COMPLETE( false )
+ QVERIFY( mViewManager->mMainWindow.viewCount() == 3 );
+ QVERIFY( mViewManager->mMainWindow.currentView()->objectName() == lcViewSendId );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+ lcutStub_LcUiEngine_reset();
+
+ lcutStub_LcUiEngine_setLayout( Lc_TwowayViewLayout );
+ mViewManager->changeView();
+ QVERIFY( mViewManager->mMainWindow.viewCount() == 4 );
+ QVERIFY( mViewManager->mMainWindow.currentView()->objectName() == lcViewTwowayId );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas ) );
+ lcutStub_LcUiEngine_reset();
+
+ lcutStub_LcUiEngine_setLayout( Lc_ReceivedOnlyViewLayout );
+ mViewManager->changeView();
+ QVERIFY( mViewManager->mMainWindow.viewCount() == 5 );
+ QVERIFY( mViewManager->mMainWindow.currentView()->objectName() == lcViewReceiveOnlyId );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas ) );
+ lcutStub_LcUiEngine_reset();
+
+ lcutStub_LcUiEngine_setLayout( Lc_AllInOneViewLayout );
+ mViewManager->changeView();
+ LC_VIEW_CHANGE_COMPLETE( false )
+ QVERIFY( mViewManager->mMainWindow.viewCount() == 6 );
+ QVERIFY( mViewManager->mMainWindow.currentView()->objectName() == lcViewAllInOneId );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+ lcutStub_LcUiEngine_reset();
+
+ lcutStub_LcUiEngine_setLayout( (LcViewLayoutHint)777 );
+ mViewManager->changeView();
+ LC_VIEW_CHANGE_COMPLETE( false )
+ QVERIFY( mViewManager->mMainWindow.viewCount() == 6 );
+ QVERIFY( mViewManager->mMainWindow.currentView()->objectName() == lcViewIdleId );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_updateSession, 0 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setOrientation, 1 ) );
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_setContentAreas, 2 ) );
+ lcutStub_LcUiEngine_reset();
+
+}
+
+void UT_LcUiViewManager::testTerminateSession()
+{
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutNoCall ) );
+ mViewManager->terminateSession();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_stop ) );
+
+
+ lcutStub_LcUiEngine_reset();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutNoCall ) );
+ mViewManagerDecorator->terminateSession();
+ QVERIFY( lcutStub_LcUiEngine_expectCall( lcutStub_LcUiEngine_stop ) );
+}
+
+void UT_LcUiViewManager::testPrepareOrientationChange()
+{
+ mViewManager->prepareOrientationChange();
+}
+
+void UT_LcUiViewManager::testMainWindowEvent()
+{
+ QSignalSpy spy( &mViewManager->mMainWindow, SIGNAL(appFocusGained()) );
+ // Not interesting event
+ QEvent event(QEvent::MaxUser);
+ mViewManager->mMainWindow.eventFilter(0, &event);
+ QVERIFY( spy.count() == 0 );
+
+ // Focus in event
+ QEvent event2(QEvent::ApplicationActivate);
+ mViewManager->mMainWindow.eventFilter(0, &event2);
+ QVERIFY( spy.count() == 1 );
+
+ // test: Complete focus lost
+ QSignalSpy spy2( &mViewManager->mMainWindow, SIGNAL(appFocusLost()) );
+ // Focus in event
+ QEvent event3(QEvent::ApplicationDeactivate);
+ mViewManager->mMainWindow.mSurface = 0;
+ mViewManager->mMainWindow.eventFilter(0, &event3);
+ QVERIFY( spy2.count() == 1 );
+
+ // test: partial focus lost i.e. in case of golbal popup.
+ QSignalSpy spy3( &mViewManager->mMainWindow, SIGNAL(appFocusLost()) );
+ // Partial focus in event i.e. Global popup
+ QEvent event4(QEvent::ApplicationDeactivate);
+ QWindowSurface surf;
+ mViewManager->mMainWindow.mSurface = &surf;
+ mViewManager->mMainWindow.eventFilter(0, &event4);
+ QVERIFY( spy3.count() == 0 );
+}
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcui/tsrc/ut_lcui/ut_lcui.pro Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,101 @@
+#
+# Copyright (c) 2009 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:
+#
+#
+
+TEMPLATE = app
+TARGET =
+
+QT += testlib xml
+CONFIG += hb qtestlib dll
+
+MUS_DIR = ../../../../..
+LCUI_DIR = ../..
+LCUIENGINE_DIR = ../../../lcuiengine
+
+RESOURCES += $$LCUI_DIR/livecommsui.qrc
+
+DEFINES += UNIT_TESTING
+DEFINES += QT_NO_DEBUG_OUTPUT
+
+DEPENDPATH += .
+INCLUDEPATH = hbstubs $$INCLUDEPATH
+INCLUDEPATH += .
+INCLUDEPATH += $$LCUI_DIR/inc
+INCLUDEPATH += $$MUS_DIR/tsrc/qtestutils/inc
+INCLUDEPATH += $$MUS_DIR/mmsharinguis_plat/live_comms_plugin_api/inc
+INCLUDEPATH += /epoc32/include/ecom
+INCLUDEPATH += /epoc32/include/platform/app
+
+# Input
+HEADERS += inc/ut_lcviewmanager.h
+HEADERS += $$LCUI_DIR/inc/lcviewmanager.h
+HEADERS += $$LCUI_DIR/inc/lcviewmanager_p.h
+HEADERS += inc/ut_lcuicomponentrepository.h
+HEADERS += $$LCUI_DIR/inc/lcuicomponentrepository.h
+HEADERS += inc/ut_lcview.h
+HEADERS += $$LCUI_DIR/inc/lcview.h
+HEADERS += inc/ut_lceffecthandler.h
+HEADERS += $$LCUI_DIR/inc/lceffecthandler.h
+HEADERS += inc/ut_lcvideowidget.h
+HEADERS += $$LCUI_DIR/inc/lcvideowidget.h
+HEADERS += $$LCUIENGINE_DIR/inc/lcuiengine.h
+HEADERS += ./hbstubs/dialpad.h
+HEADERS += ./hbstubs/dialpadvtkeyhandler.h
+HEADERS += ./hbstubs/hblineedit.h
+
+SOURCES += src/main.cpp
+SOURCES += hbstubs/hbstubs.cpp
+SOURCES += hbstubs/dialpad_stub.cpp
+SOURCES += hbstubs/dialpadvtkeyhandler_stub.cpp
+SOURCES += src/ut_lcviewmanager.cpp
+SOURCES += $$LCUI_DIR/src/lcviewmanager.cpp
+SOURCES += $$LCUI_DIR/src/lcviewmanager_p.cpp
+SOURCES += src/ut_lcuicomponentrepository.cpp
+SOURCES += $$LCUI_DIR/src/lcuicomponentrepository.cpp
+SOURCES += src/ut_lcview.cpp
+SOURCES += $$LCUI_DIR/src/lcview.cpp
+SOURCES += src/ut_lceffecthandler.cpp
+SOURCES += $$LCUI_DIR/src/lceffecthandler.cpp
+SOURCES += src/ut_lcvideowidget.cpp
+SOURCES += $$LCUI_DIR/src/lcvideowidget.cpp
+SOURCES += $$LCUIENGINE_DIR/src/lcuiengine.cpp
+SOURCES += $$MUS_DIR/tsrc/qtestutils/src/testresultxmlparser.cpp
+
+
+symbian: {
+ DEFINES += BUILD_SYMBIAN
+
+ INCLUDEPATH += $$LCUIENGINE_DIR/inc
+
+ SOURCES += lcuiengine_stub/symbian/stub_lcuiengine_p.cpp
+ HEADERS += $$LCUIENGINE_DIR/inc/lcuiengine_p.h
+
+ LIBS += -lecom -lflogger -lws32 -lbafl
+
+ TARGET.CAPABILITY = ALL -TCB
+ TARGET.EPOCALLOWDLLDATA = 1
+ TARGET.EPOCHEAPSIZE = 0x020000 0x800000
+}
+
+win32: {
+ INCLUDEPATH += $$LCUI_DIR/mmshlcuiengine/win32
+ INCLUDEPATH += inc
+ INCLUDEPATH += $$LCUIENGINE_DIR/tsrc/win32
+ INCLUDEPATH += $$LCUIENGINE_DIR/inc
+
+ SOURCES += lcuiengine_stub/win32/stub_lcuiengine_p.cpp
+ HEADERS += $$LCUIENGINE_DIR/tsrc/win32/lcuiengine_p.h
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/inc/lcactivitymanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2009 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 LCACTIVITYMANAGER_H
+#define LCACTIVITYMANAGER_H
+
+// INCLUDES
+#include <QObject>
+
+// FORWARD DECLARATION
+
+// CLASS DECLARATION
+
+/**
+ *
+ */
+class LcActivityManager : public QObject
+{
+ friend class UT_LcActivityManager;
+ Q_OBJECT
+
+public:
+
+ explicit LcActivityManager();
+ ~LcActivityManager();
+
+public slots:
+
+ void enableActivitySimulation(bool enable);
+
+public:
+
+ bool isActivitySimulationEnabled();
+
+
+private:
+
+ int initInactivityTimeout();
+ void stopTimer();
+ void restartTimer();
+
+ //from QObject
+ void timerEvent(QTimerEvent *event);
+
+private:
+
+ int mTimerId;
+ int mInactivityTimeout;
+
+};
+
+#endif // LCACTIVITYMANAGER_H
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/inc/lcuiengine.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,182 @@
+/*
+* Copyright (c) 2009 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 LCUIENGINE_H
+#define LCUIENGINE_H
+
+//USER
+
+//SYSTEM
+#include <QObject>
+#include <QString>
+#include <QTime>
+
+class QTimer;
+class HbProgressDialog;
+class HbDialog;
+class QRectF;
+class LcUiEnginePrivate;
+class HbView;
+
+const char lcEngSignalNameMuted[] = "muted";
+const char lcEngSignalNameUnmuted[] = "unmuted";
+const char lcEngSignalNameSpeakerEnabled[] = "speakerEnabled";
+const char lcEngSignalNameSpeakerDisabled[] = "speakerDisabled";
+const char lcEngSignalNameCameraChangedToMain[] = "cameraChangedToMain";
+const char lcEngSignalNameCameraChangedToSecondary[] = "cameraChangedToSecondary";
+const char lcEngSignalNameCameraEnabled[] = "cameraEnabled";
+const char lcEngSignalNameCameraDisabled[] = "cameraDisabled";
+
+
+/*
+ * Supported views
+ */
+enum LcViewLayoutHint {
+ Lc_NoViewLayout = -1,
+ Lc_IdleViewLayout,
+ Lc_SharedViewLayout,
+ Lc_ReceivedViewLayout,
+ Lc_ReceivedOnlyViewLayout,
+ Lc_TwowayViewLayout,
+ Lc_AllInOneViewLayout
+};
+
+
+/*
+ * Struct of values for control
+ */
+class LcControlValues {
+public:
+ int mMaxValue;
+ int mMinValue;
+ int mValue;
+};
+
+/*
+ * Live Comms UI Engine
+ */
+class LcUiEngine : public QObject
+{
+ Q_OBJECT
+ friend class UT_LcUiEngine;
+
+public:
+ //constructor
+ explicit LcUiEngine(const QString &engineName,
+ const QString &applicationDisplayName);
+ //destructor
+ ~LcUiEngine();
+
+signals:
+
+ //signaled when engine is stopped
+ void stopped();
+ //signaled when layout is changed
+ void layoutChanged();
+ //signaled when camera changes to main
+ void cameraChangedToMain();
+ //signaled when camera changes to secondary
+ void cameraChangedToSecondary();
+ //signaled when mic is muted
+ void muted();
+ //signaled when mic is unmuted
+ void unmuted();
+ //signaled when speaker is enabled
+ void speakerEnabled();
+ //signaled when speaker is disabled
+ void speakerDisabled();
+ //signaled when camera is disabled
+ void cameraDisabled();
+ //signaled when camera is enabled
+ void cameraEnabled();
+ //signaled when engine is blocked,
+ //no calls expected until signaled unblocked
+ void blocked();
+ //signaled when engine is free
+ void unblocked();
+ //signaled continuously while session is up and running
+ //carries current session duration
+ void sessionDurationChanged(const QString &duration);
+ void recipientChanged(const QString &recipient);
+ void phoneNumberChanged(const QString &number);
+ //signaled when player state changed
+ void localPlayerPlaying();
+ void remotePlayerPlaying();
+ void localPlayerPreparing();
+ void remotePlayerPreparing();
+ void localPlayerBuffering();
+ void remotePlayerBuffering();
+ void localPlayerPaused();
+ void remotePlayerPaused();
+ void localPlayerUnavailable();
+ void remotePlayerUnavailable();
+ void volumeChanged(int aVolumeLevel);
+
+
+public slots:
+
+ void zoom( int value );
+ void stop();
+ void minimize();
+ void maximize();
+
+public: // API
+
+ void start();
+ const QString& sessionTitle() const;
+ const QString& recipient() const;
+ const QString& phoneNumber() const;
+ LcViewLayoutHint viewLayout() const;
+ void setContentAreas(const QRectF& sharedContent,
+ const QRectF& receivedContent);
+ bool setOrientation(Qt::Orientation orientation);
+ void setUiComponents(HbProgressDialog* invitingNote,
+ HbProgressDialog* waitingNote,
+ HbDialog* acceptQuery,
+ HbDialog* recipientQuery,
+ HbDialog* shareOwnVideoQuery);
+ void toggleMute();
+ bool isMuted() const;
+ void toggleSpeaker();
+ bool isSpeakerOn() const;
+ int zoomValues(LcControlValues& values) const;
+ void toggleDisableCamera();
+ void setMainCamera(const bool aMainCamera);
+ bool mainCamera() const;
+ void toggleCamera();
+ bool fullScreenMode();
+ void setFullScreenMode(bool aMode);
+ void updateSession();
+ bool isLocalPlayerPlaying() const;
+ bool isRemotePlayerPlaying() const;
+ bool isMinimized()const;
+ bool isMaximized()const{return !isMinimized();};
+ void shareImage(const QString&);
+ void shareCamera();
+ void setCurrentView(HbView* view);
+ bool SendDialTone( const QChar aKey );
+
+private:
+
+ LcUiEnginePrivate* d;
+
+friend class LcUiEnginePrivate; // access to signals
+};
+
+#endif // LCUIENGINE_H
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/inc/lcuiengine_p.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,215 @@
+/*
+* Copyright (c) 2009 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 LCUIENGINEPRIVATE_H
+#define LCUIENGINEPRIVATE_H
+
+//USER
+#include "lcsessionobserver.h"
+#include "lcuiprovider.h"
+
+//SYSTEM
+#include <QObject>
+#include <QString>
+#include <QTime>
+#include <XQSettingsKey>
+#include <XQSettingsManager>
+#include <QVariant>
+#include <lcuiengine.h>
+#include <lcengine.h>
+
+
+class MLcSession;
+class MLcAudioControl;
+class MLcZoomControl;
+class HbDialog;
+class HbMessageBox;
+class QTimer;
+class QRectF;
+class LcUiEngine;
+class HbView;
+class LcActivityManager;
+
+/*
+ * Live Comms UI Engine
+ */
+class LcUiEnginePrivate : public QObject,
+ public MLcSessionObserver,
+ public MLcUiProvider
+{
+ Q_OBJECT
+ friend class UT_LcUiEngine;
+
+public:
+
+ explicit LcUiEnginePrivate(LcUiEngine& uiEngine,
+ const QString &engineName,
+ const QString &applicationDisplayName);
+ ~LcUiEnginePrivate();
+
+public slots:
+
+ void zoom( int value );
+ void stop();
+ void stopLocalVideo();
+ void startLocalVideo();
+
+public: // API
+
+ void start();
+ const QString& sessionTitle() const;
+ const QString& recipient() const;
+ const QString& phoneNumber() const;
+ LcViewLayoutHint viewLayout() const;
+ void setContentAreas(const QRectF& sharedContent,
+ const QRectF& receivedContent);
+ bool setOrientation(Qt::Orientation orientation );
+ void setUiComponents(HbProgressDialog* invitingNote,
+ HbProgressDialog* waitingNote,
+ HbDialog* acceptQuery,
+ HbDialog* recipientQuery,
+ HbDialog* shareOwnVideoQuery );
+ void toggleMute();
+ bool isMuted() const;
+ void toggleSpeaker();
+ bool isSpeakerOn() const;
+ int zoomValues( LcControlValues& values ) const;
+ void toggleDisableCamera();
+ void setMainCamera(const bool aMainCamera);
+ bool mainCamera() const;
+ void toggleCamera();
+ bool fullScreenMode();
+ void setFullScreenMode(bool aMode);
+ void updateSession();
+ bool isLocalPlayerPlaying() const;
+ bool isRemotePlayerPlaying() const;
+ bool isMinimized()const;
+ void minimize();
+ void maximize();
+ void shareImage(const QString&){};
+ void shareCamera(){};
+ void setCurrentView(HbView* view);
+ bool SendDialTone(const QChar aKey );
+
+protected: // From QObject
+
+ void timerEvent(QTimerEvent *event);
+
+private slots:
+
+ void startReceiving();
+ void stopForcefully();
+ void handleEngineForegroundStatus();
+ void volumeLevelChanged(const XQSettingsKey& aKey, const QVariant& aValue);
+
+private: // From MLcSessionObserver
+
+ void StateChanged( MLcSession& aSession );
+ void StateChanged( MLcVideoPlayer& aPlayer );
+ void Updated( MLcSession& aSession );
+ void Updated( MLcVideoPlayer& aPlayer );
+ void Failed( MLcSession& aSession, TInt aError );
+ void Failed( MLcVideoPlayer& aPlayer, TInt aError );
+ void SessionTimeChanged( MLcSession& aSession, const TTimeIntervalSeconds& aSeconds );
+
+private: // From MLcUiProvider
+
+ TBool SelectRecipient( MDesCArray& aRecipientAddresses, TDes& aSelectedRecipientAddress );
+ TBool InputRecipient( TDes& aRecipientAddress );
+ void HandleForegroundStatus( TBool aForeground );
+ void BlockUi( TBool aBlocked );
+
+private: // New functions
+
+ LcViewLayoutHint setViewLayout();
+ void emitViewLayoutChanged();
+ void startLiveContent();
+ void startPlayback();
+ void startRemoteVideo();
+ void startCloseTimer();
+ void cancelCloseTimer();
+ void hideNotes( bool hideWaitingNote );
+ void completeAction( const char* actionMethod );
+ void setPendingAction( const char* actionMethod );
+ void completePendingAction();
+ bool usingVideoTelephoneEngine();
+ MLcSession& session() const;
+ MLcVideoPlayer* visibleLocalPlayer() const;
+ MLcVideoPlayer* visibleRemotePlayer() const;
+ MLcAudioControl* audioControl() const;
+ MLcZoomControl* zoomControl() const;
+ bool featureSupported( CLcEngine::TLcFeature feature );
+ void startSessionDurationTimer();
+ void stopSessionDurationTimer();
+ void fillRemoteInfo(bool informChanges);
+ void startStopGuardTimer();
+ void showSendVideoQueryWhenNecessary();
+
+ void subscribeVolumeEvents();
+ void unSubscribeVolumeEvents();
+ void doUpdate( MLcVideoPlayer& aPlayer );
+ void doUpdate( MLcSession& aSession );
+
+private: // New functions wrapping the leaving functions in LC plug-in API
+
+ int establishSession();
+ int terminateSession();
+ int setWindowRect( MLcVideoPlayer* player, TRect rect );
+ int enableWindow( MLcVideoPlayer* player, bool enable );
+ int play( MLcVideoPlayer* player );
+ int pause( MLcVideoPlayer* player );
+ int enableSpeaker( bool enable );
+ int muteMic( bool mute );
+
+private: // Data
+
+ QByteArray mEngineName;
+ QString mSessionTitle;
+ QString mRecipient;
+ QString mPhoneNumber;
+ LcViewLayoutHint mViewLayout;
+ CLcEngine* mLiveCommsEngine;
+ QTimer* mCloseTimer;
+ HbProgressDialog* mInvitingNote; // Not owned
+ HbProgressDialog* mWaitingNote; // Not owned
+ HbDialog* mAcceptQuery; // Not owned
+ HbDialog* mRecipientQuery; // Not owned
+ HbDialog* mShareOwnVideoQuery; // Not Owned
+ QString mPendingAction;
+ bool mBlocked;
+ bool mFullScreen;
+ int mSessionDurationTimerId;
+ QTime mSessionDurationStartTime;
+ bool mMainCamera;
+ LcUiEngine& mUiEngine;
+ bool mIsMinimized;
+ bool mFirstForegroundSwitch;
+ HbView* mCurrentView; // Not owned
+ TRect mLocalRect;
+ TRect mRemoteRect;
+ LcActivityManager* mActivityManager;
+
+ XQSettingsManager* mSettingsMgr;
+ XQSettingsKey* mEarVolumeKey;
+ XQSettingsKey* mLoudSpeakerKey;
+
+friend class LcUiEngine;
+};
+
+#endif // LCUIENGINEPRIVATE_H
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/src/lcactivitymanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,138 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// INCLUDES
+#include <e32base.h>
+#include <centralrepository.h>
+#include <hwrmlightdomaincrkeys.h>
+#include <QtCore>
+#include "lcactivitymanager.h"
+#include "lclogger.h"
+
+
+const int lcDefaultInactivityTimeout = 5; //timeout in seconds, used if fetching
+ //value from cenrep fails
+const int lcInvalidTimerId = -1;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LcActivityManager::LcActivityManager() :
+ mTimerId(lcInvalidTimerId)
+{
+ if (initInactivityTimeout() != 0) {
+ mInactivityTimeout = lcDefaultInactivityTimeout;
+ }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LcActivityManager::~LcActivityManager()
+{
+ stopTimer();
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcActivityManager::enableActivitySimulation(bool enable)
+{
+ if (enable) {
+ restartTimer();
+ } else {
+ stopTimer();
+ }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+bool LcActivityManager::isActivitySimulationEnabled()
+{
+ return (mTimerId != lcInvalidTimerId);
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+int LcActivityManager::initInactivityTimeout()
+{
+ CRepository* repository = 0;
+ TRAPD(err, repository = CRepository::NewL(KCRUidLightSettings));
+ if (err == KErrNone) {
+ // Let's fetching display light timeout value (in seconds )
+ TInt displayTimeOut(0);
+ err = repository->Get(KDisplayLightsTimeout, displayTimeOut);
+ if (displayTimeOut > 2) {
+ //taking away 2 seconds just in case, to ensure we keep
+ //simulating user activity frequently enough
+ displayTimeOut -= 2;
+ }
+ mInactivityTimeout = displayTimeOut;
+ }
+ delete repository;
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcActivityManager::stopTimer()
+{
+ if (mTimerId != lcInvalidTimerId) {
+ killTimer(mTimerId);
+ mTimerId = lcInvalidTimerId;
+ }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcActivityManager::restartTimer()
+{
+ stopTimer();
+
+ int timeLeftInSeconds = mInactivityTimeout - User::InactivityTime().Int();
+ if ( timeLeftInSeconds < 1 ) {
+ User::ResetInactivityTime();
+ timeLeftInSeconds = mInactivityTimeout;
+ }
+
+ LC_QDEBUG_2( "livecomms [UI] -> LcActivityManager::startTimer(), interval: ", timeLeftInSeconds);
+
+ mTimerId = startTimer(timeLeftInSeconds*1000);
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcActivityManager::timerEvent(QTimerEvent* event)
+{
+ if (event->timerId() == mTimerId) {
+ LC_QDEBUG( "livecomms [UI] -> LcActivityManager::timerEvent()" );
+ restartTimer();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/src/lcuiengine.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,382 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+//USER
+#include "lcuiengine_p.h"
+#include "lcuiengine.h"
+#include "lclogger.h"
+
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::LcUiEngine
+// -----------------------------------------------------------------------------
+//
+LcUiEngine::LcUiEngine( const QString& engineName,
+ const QString& applicationDisplayName )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::LcUiEngine()" )
+ d = new LcUiEnginePrivate( *this,engineName,applicationDisplayName );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::LcUiEngine()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::~LcUiEngine
+// -----------------------------------------------------------------------------
+//
+LcUiEngine::~LcUiEngine()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::~LcUiEngine()" )
+ delete d;
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::~LcUiEngine()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::zoom
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::zoom( int value )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::zoom()" )
+ d->zoom(value);
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::zoom()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::stop
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::stop()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::stop()" )
+ d->stop();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::stop()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::start
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::start()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::start()" )
+ d->start();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::start()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::sessionTitle
+// -----------------------------------------------------------------------------
+//
+const QString& LcUiEngine::sessionTitle() const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::sessionTitle()" )
+ return d->sessionTitle();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::recipient
+// -----------------------------------------------------------------------------
+//
+const QString& LcUiEngine::recipient() const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::recipient()" )
+ return d->recipient();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::phoneNumber
+// -----------------------------------------------------------------------------
+//
+const QString& LcUiEngine::phoneNumber() const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::phoneNumber()" )
+ return d->phoneNumber();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::viewLayout
+// -----------------------------------------------------------------------------
+//
+LcViewLayoutHint LcUiEngine::viewLayout() const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::viewLayout()" )
+ return d->viewLayout();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::setContentAreas
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::setContentAreas( const QRectF& sharedContent,
+ const QRectF& receivedContent )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::setContentAreas()" )
+ d->setContentAreas( sharedContent,receivedContent );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::setContentAreas()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::setOrientation
+// -----------------------------------------------------------------------------
+//
+bool LcUiEngine::setOrientation( Qt::Orientation orientation )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::setOrientation()" )
+ bool ret = d->setOrientation( orientation );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::setOrientation()" )
+ return ret;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::setUiComponents
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::setUiComponents( HbProgressDialog* invitingNote,
+ HbProgressDialog* waitingNote,
+ HbDialog* acceptQuery,
+ HbDialog* recipientQuery,
+ HbDialog* shareOwnVideoQuery )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::setUiComponents()" )
+ d->setUiComponents( invitingNote,waitingNote,acceptQuery,recipientQuery,
+ shareOwnVideoQuery );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::setUiComponents()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::toggleMute
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::toggleMute()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::toggleMute()" )
+ d->toggleMute();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::toggleMute()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::isMuted
+// -----------------------------------------------------------------------------
+//
+bool LcUiEngine::isMuted() const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::isMuted()" )
+ return d->isMuted();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::toggleSpeaker
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::toggleSpeaker()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::toggleSpeaker()" )
+ d->toggleSpeaker();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::toggleSpeaker()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::isSpeakerOn
+// -----------------------------------------------------------------------------
+//
+bool LcUiEngine::isSpeakerOn() const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::isSpeakerOn()" )
+ return d->isSpeakerOn();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::zoomValues
+// -----------------------------------------------------------------------------
+//
+int LcUiEngine::zoomValues( LcControlValues& values ) const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::zoomValues()" )
+ return d->zoomValues(values);
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::toggleEnableCamera
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::toggleDisableCamera()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::toggleDisableCamera()" )
+ d->toggleDisableCamera();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::toggleDisableCamera()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::setCameraMain
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::setMainCamera(const bool aMainCamera)
+{
+ LC_QDEBUG_2( "livecomms [UI] -> LcUiEngine::setCameraMain()", aMainCamera )
+ d->setMainCamera( aMainCamera );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::setCameraMain()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::cameraIndex
+// -----------------------------------------------------------------------------
+//
+bool LcUiEngine::mainCamera() const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::mainCamera()" )
+ return d->mainCamera();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::toggleCamera
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::toggleCamera()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::toggleCamera()" )
+ d->toggleCamera();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::toggleCamera()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::fullScreenMode
+// -----------------------------------------------------------------------------
+//
+bool LcUiEngine::fullScreenMode()
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::fullScreenMode()" )
+ return d->fullScreenMode();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::setFullScreenMode
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::setFullScreenMode(bool aMode)
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::setFullScreenMode()" )
+ d->setFullScreenMode( aMode );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::setFullScreenMode()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::updateSession
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::updateSession()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngine::updateSession()" )
+ d->updateSession();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngine::updateSession()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::isLocalPlayerPlaying
+// -----------------------------------------------------------------------------
+//
+bool LcUiEngine::isLocalPlayerPlaying() const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::isLocalPlayerPlaying()" )
+ return d->isLocalPlayerPlaying();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::isRemotePlayerPlaying
+// -----------------------------------------------------------------------------
+//
+bool LcUiEngine::isRemotePlayerPlaying() const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::isRemotePlayerPlaying()" )
+ return d->isRemotePlayerPlaying();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::isMinimized
+// -----------------------------------------------------------------------------
+//
+bool LcUiEngine::isMinimized() const
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::isMinimized()" )
+ return d->isMinimized();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::minimize
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::minimize()
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::minimize()" )
+ // TODO : Remove this function when XqServiceUtil taken into use compleatly
+ d->minimize();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::maximize
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::maximize()
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::maximize()" )
+ // TODO : Remove this function when XqServiceUtil taken into use compleatly
+ d->maximize();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::shareImage
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::shareImage(const QString& fileName)
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::shareImage()" )
+ d->shareImage(fileName);
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::shareCamera
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::shareCamera()
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::shareCamera()" )
+ d->shareCamera();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::setCurrentView
+// -----------------------------------------------------------------------------
+//
+void LcUiEngine::setCurrentView(HbView* view)
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEngine::setCurrentView()" )
+ d->setCurrentView(view);
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiEngine::SendDialTone
+// -----------------------------------------------------------------------------
+//
+
+bool LcUiEngine::SendDialTone( const QChar aKey )
+{
+ return d->SendDialTone(aKey);
+}
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/src/lcuiengine_p.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,1547 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+//USER
+#include "lcuiengine_p.h"
+#include "lcuidefs.h"
+#include "lclogger.h"
+#include "lcactivitymanager.h"
+
+//SYSTEM
+#include <w32std.h>
+#include <e32err.h>
+#include <bacline.h>
+#include <coecntrl.h>
+#include <apgtask.h>
+#include <eikenv.h>
+
+#include <QTimer>
+#include <QChar>
+#include <hbdialog.h>
+#include <hbaction.h>
+#include <hblabel.h>
+#include <hblineedit.h>
+#include <hbinstance.h>
+#include <xqserviceutil.h>
+#include <QApplication>
+#include <hbview.h>
+#include <hbmessagebox.h>
+#include <hbprogressdialog.h>
+
+#include <lcvideoplayer.h>
+#include <lcwindow.h>
+#include <lcaudiocontrol.h>
+#include <lcsession.h>
+#include <lczoomcontrol.h>
+#include <lccameracontrol.h>
+#include <xqsettingsmanager.h>
+#include <xqsettingskey.h>
+#include <settingsinternalcrkeys.h>
+#include <telincallvolcntrlcrkeys.h>
+
+#define LC_VTPLUGIN_NAME "Videotelephony";
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::LcUiEnginePrivate
+// -----------------------------------------------------------------------------
+//
+LcUiEnginePrivate::LcUiEnginePrivate(LcUiEngine& uiEngine,
+ const QString& engineName,
+ const QString& applicationDisplayName)
+ : mEngineName( engineName.toUtf8() ),
+ mSessionTitle( applicationDisplayName ),
+ mViewLayout( Lc_IdleViewLayout ),
+ mLiveCommsEngine( 0 ),
+ mCloseTimer(0),
+ mInvitingNote(0),
+ mWaitingNote(0),
+ mAcceptQuery(0),
+ mRecipientQuery(0),
+ mShareOwnVideoQuery(0),
+ mBlocked(false),
+ mFullScreen(false),
+ mSessionDurationTimerId(0),
+ mMainCamera(true),
+ mUiEngine( uiEngine ),
+ mIsMinimized(false),
+ mFirstForegroundSwitch(true),
+ mCurrentView(0),
+ mActivityManager(0),
+ mSettingsMgr(0),
+ mEarVolumeKey(0),
+ mLoudSpeakerKey(0)
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::LcUiEnginePrivate()" )
+
+ mPendingAction.clear();
+
+ TPtrC8 name( reinterpret_cast< const TUint8* >( mEngineName.constData() ) );
+ // TODO:
+ // Replace the TRAPs with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ TRAPD( err, mLiveCommsEngine = CLcEngine::NewL( name ) );
+ if ( err != KErrNone ) {
+ // Cannot proceed with the execution, exit the application
+ LC_QDEBUG_2( "livecomms [UI] <- LcUiEnginePrivate::LcUiEnginePrivate(), failed:", err )
+ qApp->exit(err);
+ return;
+ }
+
+ mLiveCommsEngine->Session().SetLcSessionObserver( this );
+ mLiveCommsEngine->Session().SetLcUiProvider( this );
+
+ fillRemoteInfo( false );
+
+ if ( usingVideoTelephoneEngine() ) {
+ mViewLayout = Lc_AllInOneViewLayout;
+ }
+
+ LC_QDEBUG( "livecomms [UI] Setting window for plug-in" )
+ CCoeControl* coeControl =
+ reinterpret_cast<CCoeControl*>(
+ HbInstance::instance()->allMainWindows().at(0)->winId());
+ if ( coeControl ) {
+ TInt windowPtr = reinterpret_cast<TInt>(coeControl->DrawableWindow());
+ // Return value ignored as plugin may not be interested about window
+ mLiveCommsEngine->Session().SetParameter(0,windowPtr);
+ }
+
+ mActivityManager = new LcActivityManager;
+
+ mSettingsMgr = new XQSettingsManager(this);
+ mEarVolumeKey = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
+ KCRUidInCallVolume.iUid, KTelIncallEarVolume);
+ mLoudSpeakerKey = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
+ KCRUidInCallVolume.iUid,KTelIncallLoudspeakerVolume);
+
+ subscribeVolumeEvents();
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::LcUiEnginePrivate()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::~LcUiEnginePrivate
+// -----------------------------------------------------------------------------
+//
+LcUiEnginePrivate::~LcUiEnginePrivate()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::~LcUiEnginePrivate()" )
+
+ unSubscribeVolumeEvents();
+ delete mEarVolumeKey;
+ delete mLoudSpeakerKey;
+
+ delete mLiveCommsEngine;
+ delete mCloseTimer;
+ delete mActivityManager;
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::~LcUiEnginePrivate()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::zoom
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::zoom( int value )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::zoom()" )
+
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ MLcZoomControl* zoom = zoomControl();
+ if ( zoom ) {
+ TRAP_IGNORE( zoom->SetLcZoomValueL( value ) );
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::zoom()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::stop
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::stop()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::stop()" )
+
+ mActivityManager->enableActivitySimulation(false);
+
+ stopSessionDurationTimer();
+ cancelCloseTimer();
+ hideNotes( true );
+
+ // Start guard timer already before terminate call just in case
+ // something goes horribly wrong in termination
+ startStopGuardTimer();
+
+ int err = terminateSession();
+ LC_QDEBUG_2( "livecomms [UI] terminateSession error = ", err )
+ // if there is an error in terminating session
+ // or session state is already closed , stop ui
+ // else wait for session state events.
+ if( err || session().LcSessionState() == MLcSession::EClosed ){
+ LC_QDEBUG( "livecomms [UI] closing ui... ")
+ emit mUiEngine.stopped();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::stop()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::start
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::start()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::start()" )
+
+ mActivityManager->enableActivitySimulation(true);
+
+ if ( session().LcSessionState() != MLcSession::EReceived ) {
+ startLiveContent();
+ } else {
+ //wait callback
+ LC_QDEBUG( "livecomms [UI] MT start waiting callback" )
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::start()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::sessionTitle
+// -----------------------------------------------------------------------------
+//
+const QString& LcUiEnginePrivate::sessionTitle() const
+{
+ return mSessionTitle;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::recipient
+// -----------------------------------------------------------------------------
+//
+const QString& LcUiEnginePrivate::recipient() const
+{
+ return ( mRecipient.isEmpty() ) ? mPhoneNumber : mRecipient;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::phoneNumber
+// -----------------------------------------------------------------------------
+//
+const QString& LcUiEnginePrivate::phoneNumber() const
+{
+ return mPhoneNumber;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::viewLayout
+// -----------------------------------------------------------------------------
+//
+LcViewLayoutHint LcUiEnginePrivate::viewLayout() const
+{
+ return mViewLayout;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setContentAreas
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::setContentAreas( const QRectF& sharedContent,
+ const QRectF& receivedContent )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::setContentAreas()" )
+ LC_QDEBUG_2( "livecomms [UI] shared window: ", sharedContent )
+ LC_QDEBUG_2( "livecomms [UI] received window: ", receivedContent )
+
+ mLocalRect = TRect();
+ mRemoteRect = TRect();
+
+ if ( sharedContent.height() != 0 ) {
+ mLocalRect.SetRect( sharedContent.topLeft().x(),
+ sharedContent.topLeft().y(),
+ sharedContent.bottomRight().x(),
+ sharedContent.bottomRight().y() );
+ }
+
+ if ( receivedContent.height() != 0 ) {
+ mRemoteRect.SetRect( receivedContent.topLeft().x(),
+ receivedContent.topLeft().y(),
+ receivedContent.bottomRight().x(),
+ receivedContent.bottomRight().y() );
+ }
+
+ setWindowRect( session().LocalVideoPlayer(), mLocalRect );
+ setWindowRect( session().RemoteVideoPlayer(), mRemoteRect );
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::setContentAreas()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setOrientation
+// Currently the only supported orientation is landscape.
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::setOrientation( Qt::Orientation orientation )
+{
+ bool ok( false );
+ TInt error1( KErrNone );
+ TInt error2( KErrNone );
+ MLcVideoPlayer* localPlayer = session().LocalVideoPlayer();
+ MLcVideoPlayer* remotePlayer = session().RemoteVideoPlayer();
+
+ Q_UNUSED(orientation);
+
+ if ( localPlayer && localPlayer->LcWindow() ) {
+ TRAP(error1, localPlayer->LcWindow()->SetLcWindowOrientationL( MLcWindow::ELandscape ) );
+ }
+ if ( remotePlayer && remotePlayer->LcWindow() ) {
+ TRAP(error2, remotePlayer->LcWindow()->SetLcWindowOrientationL( MLcWindow::ELandscape ));
+ }
+
+ if ( (error1 == KErrNone) && (error2 == KErrNone) ) {
+ ok = true;
+ }
+
+ return ok;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setUiComponents
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::setUiComponents(
+ HbProgressDialog* invitingNote,
+ HbProgressDialog* waitingNote,
+ HbDialog* acceptQuery,
+ HbDialog* recipientQuery,
+ HbDialog* shareOwnVideoQuery )
+{
+ mInvitingNote = invitingNote;
+ mWaitingNote = waitingNote;
+ mAcceptQuery = acceptQuery;
+ mRecipientQuery = recipientQuery;
+ mShareOwnVideoQuery = shareOwnVideoQuery;
+
+ if (mAcceptQuery && (mAcceptQuery->actions().size() == 2)) {
+ connect(mAcceptQuery->actions().at(0), SIGNAL(triggered()),
+ this, SLOT(startReceiving()) );
+ connect(mAcceptQuery->actions().at(1), SIGNAL(triggered()),
+ this, SLOT(stop()) );
+ }
+
+ if (mInvitingNote && (mInvitingNote->actions().size() == 1)) {
+ connect(mInvitingNote->actions().at(0), SIGNAL(triggered()),
+ this, SLOT(stop()) );
+ }
+ if (mWaitingNote && (mWaitingNote->actions().size() == 1)) {
+ connect(mWaitingNote->actions().at(0), SIGNAL(triggered()),
+ this, SLOT(stop()) );
+ }
+ if(mShareOwnVideoQuery && (mShareOwnVideoQuery->actions().size() == 2)) {
+ connect(mShareOwnVideoQuery->actions().at(0), SIGNAL(triggered()),
+ this, SLOT(startLocalVideo()) );
+ connect(mShareOwnVideoQuery->actions().at(1), SIGNAL(triggered()),
+ this, SLOT(stopLocalVideo()) );
+
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::toggleMute
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::toggleMute()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::toggleMute()" )
+
+ bool mute( !isMuted() );
+ muteMic( mute );
+
+ // Muting / unmuting the microphone is an asynchronous operation.
+ // Assuming here that the operation will eventually succeed.
+ if ( mute ) {
+ completeAction( lcEngSignalNameMuted );
+ } else {
+ completeAction( lcEngSignalNameUnmuted );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::toggleMute()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isMuted
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::isMuted() const
+{
+ bool micMuted( false );
+ MLcAudioControl* audio = audioControl();
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ if ( audio ) {
+ TRAP_IGNORE( micMuted = audio->IsLcMicMutedL() );
+ }
+ return micMuted;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::toggleSpeaker
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::toggleSpeaker()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::toggleSpeaker()" )
+
+ bool enable( !isSpeakerOn() );
+ enableSpeaker( enable );
+
+ // Enabling / disabling the speaker is an asynchronous operation.
+ // Assuming here that the operation will eventually succeed.
+ if ( enable ) {
+ completeAction( lcEngSignalNameSpeakerEnabled );
+ } else {
+ completeAction( lcEngSignalNameSpeakerDisabled );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::toggleSpeaker()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isSpeakerOn
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::isSpeakerOn() const
+{
+ return audioControl()->IsLcLoudspeakerEnabled();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::zoomValues
+// -----------------------------------------------------------------------------
+//
+int LcUiEnginePrivate::zoomValues( LcControlValues& values ) const
+{
+ int err( -1 );
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ MLcZoomControl* zoom = zoomControl();
+ if ( zoom ) {
+ TRAP( err,
+ values.mMaxValue = zoom->MaxLcZoomL();
+ values.mMinValue = zoom->MinLcZoomL();
+ values.mValue = zoom->LcZoomValueL(); );
+ }
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::toggleEnableCamera
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::toggleDisableCamera()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::toggleDisableCamera()" )
+ MLcVideoPlayer* player = visibleLocalPlayer();
+ if( player ) {
+ pause( session().LocalVideoPlayer() );
+ completeAction( lcEngSignalNameCameraDisabled );
+ } else {
+ play( session().LocalVideoPlayer() );
+ completeAction( lcEngSignalNameCameraEnabled );
+ }
+ emitViewLayoutChanged();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::toggleDisableCamera()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setCameraMain
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::setMainCamera(const bool aMainCamera)
+{
+ LC_QDEBUG_2( "livecomms [UI] -> LcUiEnginePrivate::setCameraMain()", aMainCamera )
+ mMainCamera = aMainCamera;
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::setCameraMain()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::cameraIndex
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::mainCamera() const
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::mainCamera()" )
+ LC_QDEBUG_2( "livecomms [UI] <- LcUiEnginePrivate::mainCamera()", mMainCamera )
+ return mMainCamera;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::toggleCamera
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::toggleCamera()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::toggleCamera()" )
+
+ MLcVideoPlayer* localPlayer = session().LocalVideoPlayer();
+
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ if ( localPlayer && localPlayer->LcCameraControl() ) {
+ TRAP_IGNORE( localPlayer->LcCameraControl()->ToggleLcCameraL() );
+ }
+
+ setMainCamera( !mMainCamera );
+
+ // Enabling / disabling the camera is an asynchronous operation.
+ // Assuming here that the operation will eventually succeed.
+ if ( mMainCamera ) {
+ completeAction( lcEngSignalNameCameraChangedToMain );
+ } else {
+ completeAction( lcEngSignalNameCameraChangedToSecondary );
+ }
+
+ LC_QDEBUG_2( "livecomms [UI] <- LcUiEnginePrivate::toggleCamera(), mainCamera:", mMainCamera )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::fullScreenMode
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::fullScreenMode()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::fullScreenMode()" )
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::fullScreenMode()" )
+ return mFullScreen;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setFullScreenMode
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::setFullScreenMode(bool aMode)
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::setFullScreenMode()" )
+ mFullScreen = aMode;
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::setFullScreenMode()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::updateSession
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::updateSession()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::updateSession()" )
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ TRAP_IGNORE( session().UpdateLcSessionL() );
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::updateSession()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isLocalPlayerPlaying
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::isLocalPlayerPlaying() const
+{
+ MLcVideoPlayer* player = session().LocalVideoPlayer();
+ return ( player &&
+ player->LcVideoPlayerState() == MLcVideoPlayer::EPlaying );
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isRemotePlayerPlaying
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::isRemotePlayerPlaying() const
+{
+ MLcVideoPlayer* player = session().RemoteVideoPlayer();
+ return ( player &&
+ player->LcVideoPlayerState() == MLcVideoPlayer::EPlaying );
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::timerEvent
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::timerEvent(QTimerEvent *event)
+{
+ if ( event->timerId() == mSessionDurationTimerId ) {
+ QTime curr(0, 0, 0, 0);
+ curr = curr.addSecs(
+ mSessionDurationStartTime.secsTo( QTime::currentTime() ) );
+ emit mUiEngine.sessionDurationChanged(curr.toString());
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::startReceiving
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::startReceiving()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::startReceiving()" )
+
+ if ( mAcceptQuery ) {
+ mAcceptQuery->hide();
+ }
+
+ establishSession();
+
+ if ( mWaitingNote && featureSupported( CLcEngine::ELcShowWaitingNote ) ) {
+ mWaitingNote->show();
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::startReceiving()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::stopForcefully
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::stopForcefully()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::stopForcefully()" )
+
+ // This is only way to force exit in case CActiveScheduler is blocked
+ // by engine plugin.
+ User::Exit(0);
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::stopForcefully()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::StateChanged
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::StateChanged( MLcSession& aSession )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::StateChanged( session )" )
+ doUpdate( aSession );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::StateChanged( session )" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::StateChanged
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::StateChanged( MLcVideoPlayer& aPlayer )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::StateChanged( player )" )
+ emitViewLayoutChanged();
+ doUpdate( aPlayer );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::StateChanged( player )" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::Updated
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::Updated( MLcSession& aSession )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::Updated( session )" )
+ emitViewLayoutChanged();
+ doUpdate( aSession );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::Updated( session )" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::Updated
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::Updated( MLcVideoPlayer& aPlayer )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::Updated( player )" )
+ emitViewLayoutChanged();
+ doUpdate( aPlayer );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::Updated( player )" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::Failed
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::Failed( MLcSession& /*aSession*/, TInt /*aError*/ )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::Failed( session )" )
+ stop();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::Failed( session )" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::Failed
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::Failed( MLcVideoPlayer& /*aPlayer*/, TInt /*aError*/ )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::Failed( player )" )
+ stop();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::Failed( player )" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::SessionTimeChanged
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::SessionTimeChanged( MLcSession& /*aSession*/,
+ const TTimeIntervalSeconds& /*aSeconds*/ )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::SessionTimeChanged()" )
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::SessionTimeChanged()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::SelectRecipient
+// -----------------------------------------------------------------------------
+//
+TBool LcUiEnginePrivate::SelectRecipient( MDesCArray& aRecipientAddresses,
+ TDes& aSelectedRecipientAddress )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::SelectRecipient()" )
+ aSelectedRecipientAddress = aRecipientAddresses.MdcaPoint(0);
+ mRecipient = DESC_TO_QSTRING( aSelectedRecipientAddress );
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::SelectRecipient()" )
+ return ETrue;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::SelectRecipient
+// -----------------------------------------------------------------------------
+//
+TBool LcUiEnginePrivate::InputRecipient( TDes& aRecipientAddress )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::InputRecipient()" )
+
+ TBool answered( EFalse );
+
+ if ( mRecipientQuery ) {
+ mRecipient = DESC_TO_QSTRING( aRecipientAddress );
+ HbLineEdit* lineEdit = new HbLineEdit( mRecipient );
+ mRecipientQuery->setContentWidget( lineEdit );
+ mRecipientQuery->open();
+ TPtrC16 textPtr(
+ reinterpret_cast< const TUint16* >( mRecipient.utf16() ) );
+ aRecipientAddress.Copy( textPtr );
+ answered = ETrue;
+ }
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::InputRecipient()" )
+ return answered;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::HandleForegroundStatus
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::HandleForegroundStatus( TBool aForeground )
+{
+ LC_QDEBUG_2( "livecomms [UI] -> LcUiEnginePrivate::HandleForegroundStatus(), fg:",
+ aForeground )
+
+ mActivityManager->enableActivitySimulation(aForeground);
+
+ if ( aForeground && !HbInstance::instance()->allMainWindows().isEmpty() ){
+ HbInstance::instance()->allMainWindows().at(0)->show();
+ }
+ XQServiceUtil::toBackground(!aForeground);
+
+ mIsMinimized = !aForeground;
+
+ handleEngineForegroundStatus();
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::HandleForegroundStatus()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::BlockUi
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::BlockUi( TBool aBlocked )
+{
+ LC_QDEBUG_2( "livecomms [UI] -> LcUiEnginePrivate::BlockUi, blocked:", aBlocked )
+ mBlocked = aBlocked;
+
+ if ( mBlocked ){
+ emit mUiEngine.blocked();
+ }
+ else{
+ emit mUiEngine.unblocked();
+ completePendingAction();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::BlockUi()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setViewLayout
+// -----------------------------------------------------------------------------
+//
+LcViewLayoutHint LcUiEnginePrivate::setViewLayout()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::setViewLayout()" )
+
+ LcViewLayoutHint hint = (LcViewLayoutHint)Lc_NoViewLayout;
+
+ MLcVideoPlayer* localPlayer = visibleLocalPlayer();
+ MLcVideoPlayer* remotePlayer = visibleRemotePlayer();
+
+ if ( usingVideoTelephoneEngine() ) {
+ hint = Lc_AllInOneViewLayout;
+ LC_QDEBUG( "livecomms [UI] use Lc_AllInOneViewLayout" )
+ } else if ( localPlayer && remotePlayer ) {
+ hint = Lc_TwowayViewLayout;
+ LC_QDEBUG( "livecomms [UI] use Lc_TwowayViewLayout" )
+ } else if ( localPlayer ) {
+ hint = Lc_SharedViewLayout;
+ LC_QDEBUG( "livecomms [UI] use Lc_SharedViewLayout" )
+ } else if ( remotePlayer && !session().LocalVideoPlayer() ) {
+ hint = Lc_ReceivedOnlyViewLayout;
+ LC_QDEBUG( "livecomms [UI] use Lc_ReceivedOnlyViewLayout" )
+ } else if ( remotePlayer ) {
+ hint = Lc_ReceivedViewLayout;
+ LC_QDEBUG( "livecomms [UI] use Lc_ReceivedViewLayout" )
+ } else {
+ hint = Lc_IdleViewLayout;
+ LC_QDEBUG( "livecomms [UI] ! no players ! use Lc_IdleViewLayout" )
+ }
+
+ mViewLayout = hint;
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::setViewLayout()" )
+
+ return viewLayout();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::emitViewLayoutChanged
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::emitViewLayoutChanged()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::emitViewLayoutChanged()" )
+
+ LcViewLayoutHint oldLayout = viewLayout();
+ LcViewLayoutHint layout = setViewLayout();
+
+ if ( layout != oldLayout ) {
+ LC_QDEBUG( "livecomms [UI] layout has changed. signal" )
+ emit mUiEngine.layoutChanged();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::emitViewLayoutChanged()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::startLiveContent
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::startLiveContent()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::startLiveContent()" )
+
+ if ( mInvitingNote && featureSupported( CLcEngine::ELcShowInvitingNote ) ) {
+ mInvitingNote->show();
+ }
+ enableSpeaker( true );
+ establishSession();
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::startLiveContent()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::startPlayback
+// Utility style function to start both local and remote players if available.
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::startPlayback()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::startPlayback()" )
+ startLocalVideo();
+ startRemoteVideo();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::startPlayback()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::startRemoteVideo
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::startRemoteVideo()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::startRemotePlayback()" )
+ MLcVideoPlayer* remotePlayer = session().RemoteVideoPlayer();
+ if ( remotePlayer ) {
+ LC_QDEBUG( "livecomms [UI] enable remote player window" )
+ enableWindow( remotePlayer, true );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::startRemotePlayback()" )
+}
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::startCloseTimer
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::startCloseTimer()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::startCloseTimer()" )
+ delete mCloseTimer;
+ mCloseTimer = 0;
+ mCloseTimer = new QTimer(this);
+ mCloseTimer->setSingleShot(true);
+ connect(mCloseTimer, SIGNAL(timeout()), this, SLOT(stop()));
+ mCloseTimer->start(60000);
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::startCloseTimer()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::cancelCloseTimer
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::cancelCloseTimer()
+{
+ if ( mCloseTimer && mCloseTimer->isActive()) {
+ mCloseTimer->stop();
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::hideNotes
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::hideNotes( bool hideWaitingNote )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::hideNotes()" )
+ if ( mAcceptQuery ) {
+ mAcceptQuery->hide();
+ }
+ if ( mWaitingNote && hideWaitingNote ) {
+ mWaitingNote->hide();
+ }
+ if ( mInvitingNote ) {
+ mInvitingNote->hide();
+ }
+ if ( mRecipientQuery ) {
+ mRecipientQuery->hide();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::hideNotes()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::completeAction
+// Completes method passed as argument. If engine is in blocked state
+// action completion will be delayed until unblock occurs.
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::completeAction( const char* actionMethod )
+{
+ LC_QDEBUG_2( "livecomms [UI] -> LcUiEnginePrivate::completeAction :", actionMethod )
+ if ( mBlocked ) {
+ LC_QDEBUG( "livecomms [UI] Blocked, invoke later" )
+ // store action and invoke it once unblocked
+ setPendingAction( actionMethod );
+ }
+ else {
+ QMetaObject::invokeMethod( &mUiEngine, actionMethod );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::completeAction" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setPendingAction
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::setPendingAction( const char* actionMethod )
+{
+ mPendingAction = actionMethod;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::completePendingAction
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::completePendingAction()
+{
+ if ( !mPendingAction.isEmpty() ) {
+ completeAction( mPendingAction.toAscii().constData() );
+ mPendingAction.clear();
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::videoTelephoneLayout
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::usingVideoTelephoneEngine()
+{
+ return mEngineName == LC_VTPLUGIN_NAME;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::session
+// -----------------------------------------------------------------------------
+//
+MLcSession& LcUiEnginePrivate::session() const
+{
+ return mLiveCommsEngine->Session();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::visibleLocalPlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* LcUiEnginePrivate::visibleLocalPlayer() const
+{
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ MLcVideoPlayer* localPlayer = session().LocalVideoPlayer();
+ if ( localPlayer ) {
+ bool playing( true );
+ TRAP_IGNORE( playing = localPlayer->LcIsPlayingL() );
+ if ( !playing ) {
+ localPlayer = 0;
+ }
+ }
+ return localPlayer;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::visibleRemotePlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* LcUiEnginePrivate::visibleRemotePlayer() const
+{
+ MLcVideoPlayer* remotePlayer = session().RemoteVideoPlayer();
+ if ( remotePlayer &&
+ remotePlayer->LcVideoPlayerState() == MLcVideoPlayer::EPaused ) {
+ remotePlayer = 0;
+ }
+ return remotePlayer;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::audioControl
+// -----------------------------------------------------------------------------
+//
+MLcAudioControl* LcUiEnginePrivate::audioControl() const
+{
+ MLcAudioControl* audioControl( 0 );
+ if ( session().LocalVideoPlayer() ) {
+ audioControl = session().LocalVideoPlayer()->LcAudioControl();
+ }
+ if ( !audioControl && session().RemoteVideoPlayer() ) {
+ audioControl = session().RemoteVideoPlayer()->LcAudioControl();
+ }
+ return audioControl;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::zoomControl
+// -----------------------------------------------------------------------------
+//
+MLcZoomControl* LcUiEnginePrivate::zoomControl() const
+{
+ MLcZoomControl* zoomControl( 0 );
+ if ( session().LocalVideoPlayer() ) {
+ zoomControl = session().LocalVideoPlayer()->LcZoomControl();
+ }
+ return zoomControl;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isFeatureSupported
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::featureSupported( CLcEngine::TLcFeature feature )
+{
+ bool isSupported( false );
+ if ( mLiveCommsEngine ) {
+ isSupported = mLiveCommsEngine->IsFeatureSupported( feature );
+ }
+ return isSupported;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::startSessionDurationTimer
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::startSessionDurationTimer()
+{
+ const int sessionDurationTimerIntervalInMs = 1000;
+ if ( !mSessionDurationTimerId ){
+ mSessionDurationTimerId = startTimer( sessionDurationTimerIntervalInMs );
+ LC_QDEBUG_2( "livecomms [UI] -> duration timer id:", mSessionDurationTimerId )
+ mSessionDurationStartTime = QTime::currentTime();
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::stopSessionDurationTimer
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::stopSessionDurationTimer()
+{
+ if ( mSessionDurationTimerId ){
+ killTimer( mSessionDurationTimerId );
+ mSessionDurationTimerId = 0;
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::establishSession
+// -----------------------------------------------------------------------------
+//
+int LcUiEnginePrivate::establishSession()
+{
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ TRAPD( err, mLiveCommsEngine->Session().EstablishLcSessionL() );
+ if ( !err ) {
+ startCloseTimer();
+ }
+ LC_QDEBUG_2( "livecomms [UI] LcUiEnginePrivate::establishSession, err", err )
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::terminateSession
+// -----------------------------------------------------------------------------
+//
+int LcUiEnginePrivate::terminateSession()
+{
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ TRAPD( err, mLiveCommsEngine->Session().TerminateLcSessionL() );
+ LC_QDEBUG_2( "livecomms [UI] LcUiEnginePrivate::terminateSession, err", err )
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setWindowRect
+// -----------------------------------------------------------------------------
+//
+int LcUiEnginePrivate::setWindowRect( MLcVideoPlayer* player, TRect rect )
+{
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ int err( -1 );
+ if ( player &&
+ player->LcWindow() &&
+ player->LcWindow()->LcWindowRect() != rect ) {
+ TRAP( err, player->LcWindow()->SetLcWindowRectL( rect ) );
+ }
+ LC_QDEBUG_2( "livecomms [UI] LcUiEnginePrivate::setWindowRect, err", err )
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::enableWindow
+// -----------------------------------------------------------------------------
+//
+int LcUiEnginePrivate::enableWindow( MLcVideoPlayer* player, bool enable )
+{
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ int err( -1 );
+ if ( player &&
+ player->LcWindow() ) {
+ TRAP( err, player->LcWindow()->EnableLcWindowL( enable ) );
+ }
+ LC_QDEBUG_2( "livecomms [UI] LcUiEnginePrivate::enableWindow, err", err )
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::play
+// -----------------------------------------------------------------------------
+//
+int LcUiEnginePrivate::play( MLcVideoPlayer* player )
+{
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ int err( -1 );
+ if ( player ) {
+ TRAP( err, player->LcPlayL() );
+ }
+ LC_QDEBUG_2( "livecomms [UI] LcUiEnginePrivate::play, err", err )
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::pause
+// -----------------------------------------------------------------------------
+//
+int LcUiEnginePrivate::pause( MLcVideoPlayer* player )
+{
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ int err( -1 );
+ if ( player ) {
+ TRAP( err, player->LcPauseL() );
+ }
+ LC_QDEBUG_2( "livecomms [UI] LcUiEnginePrivate::pause, err", err )
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::enableSpeaker
+// -----------------------------------------------------------------------------
+//
+int LcUiEnginePrivate::enableSpeaker( bool enable )
+{
+ int err( -1 );
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ MLcAudioControl* audio = audioControl();
+ if ( audio ) {
+ TRAP( err, audio->EnableLcLoudspeakerL( enable ) );
+ }
+ LC_QDEBUG_2( "livecomms [UI] LcUiEnginePrivate::enableSpeaker, err", err )
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::muteMic
+// -----------------------------------------------------------------------------
+//
+int LcUiEnginePrivate::muteMic( bool mute )
+{
+ int err( -1 );
+ // TODO: Replace TRAP with QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION (Qt4.5.2)
+ MLcAudioControl* audio = audioControl();
+ if ( audio ) {
+ TRAP( err, audio->MuteLcMicL( mute ) );
+ }
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::fillRemoteInfo
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::fillRemoteInfo(bool informChanges)
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::fillRemoteInfo()" )
+
+ QString phoneNum = DESC_TO_QSTRING( session().RemoteDetails() );
+ if ( phoneNum != mPhoneNumber) {
+ LC_QDEBUG_2( "remote number:", phoneNum )
+ mPhoneNumber = phoneNum;
+ if ( informChanges ) {
+ emit mUiEngine.phoneNumberChanged(mPhoneNumber);
+ }
+ }
+ // If no recipient even at opened state and no phonenum, use unknown recipient
+ QString recipient = DESC_TO_QSTRING( session().RemoteDisplayName() );
+ if ( recipient.isEmpty() ){
+ recipient = mPhoneNumber;
+ }
+ if ( session().LcSessionState() == MLcSession::EOpen && recipient.isEmpty() ) {
+ recipient = hbTrId("txt_vt_custom_unknown_number");
+ }
+ if ( recipient != mRecipient ){
+ LC_QDEBUG_2( "remote name:", recipient )
+ mRecipient = recipient;
+ if ( informChanges ) {
+ emit mUiEngine.recipientChanged(mRecipient);
+ }
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::fillRemoteInfo()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isMinimized
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::isMinimized() const
+{
+ return mIsMinimized;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::minimize
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::minimize()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::minimize()" )
+
+ if ( !isMinimized() ){
+ TRect emptyRect;
+ setWindowRect( session().LocalVideoPlayer(), emptyRect );
+ setWindowRect( session().RemoteVideoPlayer(), emptyRect );
+ HandleForegroundStatus(EFalse);
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::minimize()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::maximize
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::maximize()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::maximize()" )
+ if ( isMinimized() ){
+ setWindowRect( session().LocalVideoPlayer(), mLocalRect );
+ setWindowRect( session().RemoteVideoPlayer(), mRemoteRect );
+ HandleForegroundStatus(ETrue);
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::maximize()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setCurrentView
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::setCurrentView(HbView* view)
+{
+ LC_QDEBUG( "livecomms [UI] <-> LcUiEnginePrivate::setCurrentView()" )
+ mCurrentView = view;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::startStopGuardTimer
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::startStopGuardTimer()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::startStopGuardTimer()" )
+ const int stoppingGuardTimerInMs = 5000;
+ QTimer::singleShot(stoppingGuardTimerInMs, this, SLOT(stopForcefully()));
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::startStopGuardTimer()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::handleEngineForegroundStatus
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::handleEngineForegroundStatus()
+{
+ bool foreground = !mIsMinimized;
+ LC_QDEBUG_2( "livecomms [UI] -> LcUiEnginePrivate::handleEngineForegroundStatus(), fg:",
+ foreground )
+ HbMainWindow *mainWindow = HbInstance::instance()->allMainWindows().at(0);
+
+ if ( mLiveCommsEngine ){
+ bool setStatusToEngine(true);
+ if ( foreground && mFirstForegroundSwitch ){
+ // Have to wait that first paint has occured, otherwise video
+ // windows are shown too early.
+ // TODO: wk8 does not yet have viewReady signal so simulate it
+ // by using timer. Timer can be removed later.
+ if ( mCurrentView ){
+ LC_QDEBUG( "livecomms [UI] Wait for first paint" )
+ connect( mainWindow, SIGNAL(viewReady()),
+ this, SLOT(handleEngineForegroundStatus()) );
+ setStatusToEngine = false;
+ }
+
+ }
+ if ( setStatusToEngine ) {
+ LC_QDEBUG( "livecomms [UI] Set fg status to engine plugin" )
+ session().SetForegroundStatus(foreground);
+ disconnect( mainWindow, SIGNAL(viewReady()),
+ this, SLOT(handleEngineForegroundStatus()) );
+ }
+ mFirstForegroundSwitch = false;
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::handleEngineForegroundStatus()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::SendDialTone
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::SendDialTone(const QChar aKey)
+{
+ if ( mLiveCommsEngine ){
+ const TChar dialChar = static_cast<TChar>(aKey.unicode());
+ return mLiveCommsEngine->Session().SendDialTone(dialChar);
+ }
+ return false;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isAllowedToShareVideo
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::showSendVideoQueryWhenNecessary()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::showSendVideoQueryWhenNecessary()" )
+ if (featureSupported( CLcEngine::ELcSendVideoQuery )) {
+ if (mShareOwnVideoQuery)
+ mShareOwnVideoQuery->show();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::showSendVideoQueryWhenNecessary()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::stopLocalVideo
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::stopLocalVideo()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::stopLocalVideo()" )
+ MLcVideoPlayer* localPlayer = session().LocalVideoPlayer();
+ if( localPlayer ) {
+ pause( localPlayer );
+ enableWindow( localPlayer, false );
+ completeAction( lcEngSignalNameCameraDisabled );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::stopLocalVideo()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::startLocalVideo
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::startLocalVideo()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::startLocalVideo()" )
+ MLcVideoPlayer* localPlayer = session().LocalVideoPlayer();
+ if( localPlayer ){
+ play( localPlayer );
+ enableWindow( localPlayer, true );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::startLocalVideo()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::subscribeVolumeEvents
+// -----------------------------------------------------------------------------
+//
+
+void LcUiEnginePrivate::subscribeVolumeEvents()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::subscribeVolumeEvents()" )
+ mSettingsMgr->startMonitoring( *mEarVolumeKey, XQSettingsManager::TypeInt );
+ mSettingsMgr->startMonitoring( *mLoudSpeakerKey, XQSettingsManager::TypeInt );
+ connect(mSettingsMgr,
+ SIGNAL(valueChanged(const XQSettingsKey&, const QVariant&)),
+ this, SLOT(volumeLevelChanged(const XQSettingsKey&, const QVariant&)));
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::subscribeVolumeEvents()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::unSubscribeVolumeEvents
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::unSubscribeVolumeEvents()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::unSubscribeVolumeEvents()")
+ mSettingsMgr->stopMonitoring( *mEarVolumeKey );
+ mSettingsMgr->stopMonitoring( *mLoudSpeakerKey );
+ disconnect(mSettingsMgr,
+ SIGNAL( valueChanged(const XQSettingsKey&, const QVariant& ) ),
+ this, SLOT(volumeLevelChanged(const XQSettingsKey&, const QVariant&)));
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::unSubscribeVolumeEvents()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::volumeLevelChanged
+// -----------------------------------------------------------------------------
+//
+
+void LcUiEnginePrivate::volumeLevelChanged( const XQSettingsKey& aKey,
+ const QVariant& aValue )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::volumeLevelChanged()" )
+
+ // Ensure We only send value for the valid keys.
+ if ((aKey.key() == mEarVolumeKey->key() && aKey.uid() == mEarVolumeKey->uid()) ||
+ (aKey.key() == mLoudSpeakerKey->key() && aKey.uid() == mLoudSpeakerKey->uid()) ) {
+
+ emit mUiEngine.volumeChanged( aValue.toInt() );
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::volumeLevelChanged()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::doUpdate( MLcVideoPlayer& aPlayer )
+// -----------------------------------------------------------------------------
+//
+
+void LcUiEnginePrivate::doUpdate( MLcVideoPlayer& aPlayer )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::doUpdate(), videoplayer" )
+ if ( aPlayer.LcVideoPlayerState() == MLcVideoPlayer::EPlaying ) {
+ if ( &aPlayer == session().RemoteVideoPlayer() ) {
+ if ( mWaitingNote ) {
+ mWaitingNote->hide();
+ }
+ emit mUiEngine.remotePlayerPlaying();
+ }
+ if ( &aPlayer == session().LocalVideoPlayer() ) {
+ emit mUiEngine.localPlayerPlaying();
+ }
+ } else if ( aPlayer.LcVideoPlayerState() == MLcVideoPlayer::EPreparing ) {
+ if ( &aPlayer == session().RemoteVideoPlayer() ) {
+ emit mUiEngine.remotePlayerPreparing();
+ }
+ if ( &aPlayer == session().LocalVideoPlayer() ) {
+ emit mUiEngine.localPlayerPreparing();
+ }
+ } else if ( aPlayer.LcVideoPlayerState() == MLcVideoPlayer::EBuffering ) {
+ if ( &aPlayer == session().RemoteVideoPlayer() ) {
+ emit mUiEngine.remotePlayerBuffering();
+ }
+ if ( &aPlayer == session().LocalVideoPlayer() ) {
+ emit mUiEngine.localPlayerBuffering();
+ }
+ } else if ( aPlayer.LcVideoPlayerState() == MLcVideoPlayer::EPaused ) {
+ if ( &aPlayer == session().RemoteVideoPlayer() ) {
+ emit mUiEngine.remotePlayerPaused();
+ }
+ if ( &aPlayer == session().LocalVideoPlayer() ) {
+ emit mUiEngine.localPlayerPaused();
+ }
+ } else if ( aPlayer.LcVideoPlayerState() == MLcVideoPlayer::EUnavailable ) {
+ if ( &aPlayer == session().RemoteVideoPlayer() ) {
+ emit mUiEngine.remotePlayerUnavailable();
+ }
+ if ( &aPlayer == session().LocalVideoPlayer() ) {
+ emit mUiEngine.localPlayerUnavailable();
+ }
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::doUpdate(),videoplayer" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::doUpdate( MLcSession& aSession )
+// -----------------------------------------------------------------------------
+//
+
+void LcUiEnginePrivate::doUpdate( MLcSession& aSession )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::doUpdate(),session" )
+ MLcSession::TLcSessionState newState = MLcSession::EUninitialized;
+ newState = aSession.LcSessionState();
+ LC_QDEBUG_2( "livecomms [UI] session state = ", newState )
+ if ( newState == MLcSession::EOpen ) {
+ LC_QDEBUG( "livecomms [UI] session state is MLcSession::EOpen" )
+ cancelCloseTimer();
+ hideNotes( false );
+ showSendVideoQueryWhenNecessary();
+ startRemoteVideo();
+ fillRemoteInfo( true );
+ emitViewLayoutChanged();
+ startSessionDurationTimer();
+
+ } else if ( newState == MLcSession::EReceived ) {
+ LC_QDEBUG( "livecomms [UI] state state is MLcSession::EReceived" )
+ mRecipient = DESC_TO_QSTRING( session().RemoteDisplayName() );
+ if ( mAcceptQuery &&
+ featureSupported( CLcEngine::ELcShowAcceptQuery ) ) {
+ mAcceptQuery->show();
+ } else {
+ startReceiving();
+ }
+ } else if ( newState == MLcSession::EClosed ) {
+ LC_QDEBUG( "livecomms [UI] state state is MLcSession::EClosed, closing UI..." )
+ emit mUiEngine.stopped();
+
+ } else if ( newState == MLcSession::EOpening ){
+ LC_QDEBUG( "livecomms [UI] state state is MLcSession::EOpening" )
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::doUpdate(),session" )
+}
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hbaction.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBACTION_H
+#define HBACTION_H
+
+#include <QAction>
+#include <hbnamespace.h>
+#include <hbglobal.h>
+#include <hbicon.h>
+
+
+class HbAction : public QAction
+{
+public:
+ explicit HbAction(QObject *parent = 0);
+ explicit HbAction(const QString &text, QObject *parent = 0);
+ virtual ~HbAction();
+
+private: // Data added for the unit testing stub
+ HbIcon mIcon;
+};
+
+#endif // HBACTION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hbdialog.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBDIALOG_H
+#define HBDIALOG_H
+
+#include <hbglobal.h>
+#include <hbwidget.h>
+
+
+class HbAction;
+
+
+class HbDialog : public HbWidget
+{
+public:
+ enum DismissPolicy
+ {
+ NoDismiss = 0,
+ TapInside = 1,
+ TapOutside = 2,
+ TapAnywhere = TapInside | TapOutside
+ };
+ enum DefaultTimeout
+ {
+ NoTimeout,
+ ConfirmationNoteTimeout,
+ StandardTimeout,
+ ContextMenuTimeout
+ };
+
+ explicit HbDialog(QGraphicsItem *parent = 0);
+ virtual ~HbDialog();
+
+ void setContentWidget(QGraphicsWidget *contentWidget);
+ enum { Type = Hb::ItemType_Popup };
+ void setTimeout( int timeout ) ;
+ void setDismissPolicy( HbDialog::DismissPolicy dismissPolicy );
+
+public slots:
+ void open(QObject* receiver = 0, const char* member = 0);
+protected:
+
+ QVariant itemChange ( GraphicsItemChange change, const QVariant & value );
+};
+
+
+#endif // HBDIALOG_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hbinstance.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBINSTANCE_H
+#define HBINSTANCE_H
+
+#include <hbglobal.h>
+#include <hbmainwindow.h>
+#include <QList.h>
+
+#define hbInstance (HbInstance::instance())
+
+class HbInstance
+{
+public:
+ static HbInstance *instance();
+ QList<HbMainWindow *> allMainWindows() const;
+
+private:
+ HbInstance();
+ ~HbInstance();
+
+private: // Data added for the unit testing stub
+ QList<HbMainWindow *> mAllMainWindows;
+};
+
+#endif // HBINSTANCE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hblabel.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBLABEL_H
+#define HBLABEL_H
+
+#include <hbglobal.h>
+#include <hbnamespace.h>
+#include <hbwidget.h>
+
+class QGraphicsItem;
+
+
+class HbLabel : public HbWidget
+{
+public:
+ explicit HbLabel (QGraphicsItem *parent = 0);
+ explicit HbLabel (const QString &displayText, QGraphicsItem *parent = 0);
+ ~HbLabel ();
+
+ enum { Type = Hb::ItemType_Label };
+};
+
+#endif // HBLABEL_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hblineedit.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+
+#ifndef HBLINEEDIT_H
+#define HBLINEEDIT_H
+
+#include <hbglobal.h>
+#include <hbnamespace.h>
+#include <hbwidget.h>
+
+
+class HbLineEdit: public HbWidget
+{
+public:
+
+ explicit HbLineEdit(const QString &text, QGraphicsItem *parent = 0);
+ virtual ~HbLineEdit();
+
+ enum {
+ Type = Hb::ItemType_LineEdit
+ };
+
+};
+
+#endif // HBLINEEDIT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hbmainwindow.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+
+#ifndef HBMAINWINDOW_H
+#define HBMAINWINDOW_H
+
+#include <QGraphicsView>
+#include <hbglobal.h>
+#include <hbnamespace.h>
+
+class QGraphicsWidget;
+class HbAction;
+class HbView;
+
+
+class HbMainWindow : public QGraphicsView
+{
+public:
+ explicit HbMainWindow(QWidget *parent = 0, Hb::WindowFlags windowFlags = Hb::WindowFlagNone);
+ ~HbMainWindow();
+};
+
+#endif // HBMAINWINDOW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hbmessagebox.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+
+#ifndef HBMESSAGEBOX_H
+#define HBMESSAGEBOX_H
+
+#include <hbglobal.h>
+#include <hbdialog.h>
+#include <hbicon.h>
+
+class HbMessageBoxPrivate;
+class HbStyleOptionMessageBox;
+
+class HB_WIDGETS_EXPORT HbMessageBox : public HbDialog
+{
+
+public:
+ enum MessageBoxType {
+ MessageTypeInformation,
+ MessageTypeQuestion,
+ MessageTypeWarning
+ };
+ explicit HbMessageBox(MessageBoxType type=MessageTypeInformation,QGraphicsItem *parent = 0);
+ explicit HbMessageBox(const QString &text,MessageBoxType type =MessageTypeInformation, QGraphicsItem *parent = 0);
+ virtual ~HbMessageBox();
+
+ void setText(const QString &text);
+ QString text() const;
+
+ void setIcon(const HbIcon &icon);
+ HbIcon icon() const;
+
+ void setIconAlignment(Qt::Alignment align);
+ Qt::Alignment iconAlignment() const;
+
+ enum { Type = Hb::ItemType_MessageBox };
+ int type() const { return Type; }
+
+public:
+ static bool launchQuestionMessageBox(const QString &questionText,
+ const QString &primaryButtonText = tr("Yes"),
+ const QString &secondaryButtonText = tr("No"),
+ QGraphicsWidget *headWidget = 0,
+ QGraphicsScene *scene = 0,
+ QGraphicsItem *parent = 0 );
+
+ static void launchInformationMessageBox(const QString &informationText,
+ QGraphicsWidget *headWidget = 0,
+ QGraphicsScene *scene = 0,
+ QGraphicsItem *parent = 0 );
+
+ static void launchWarningMessageBox(const QString &warningText,
+ QGraphicsWidget *headWidget = 0,
+ QGraphicsScene *scene = 0,
+ QGraphicsItem *parent = 0 );
+
+public slots:
+ void updatePrimitives();
+
+protected:
+ HbMessageBox(HbMessageBoxPrivate &dd, QGraphicsItem *parent);
+ void initStyleOption(HbStyleOptionMessageBox *option) const;
+ void keyPressEvent(QKeyEvent *event);
+};
+
+#endif // HB_MESSAGEBOX_H
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hbnote.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBNOTE_H
+#define HBNOTE_H
+
+#include <hbglobal.h>
+#include <hbpopup.h>
+
+
+class HbNote : public HbPopup
+{
+public:
+ explicit HbNote(QGraphicsItem *parent = 0);
+ HbNote(const QString &text, QGraphicsItem *parent = 0);
+ virtual ~HbNote();
+
+ enum { Type = Hb::ItemType_Note };
+
+protected:
+ QVariant itemChange(GraphicsItemChange change, const QVariant &value);
+};
+
+#endif // HBNOTE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hbprogressdialog.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBPROGRESSDIALOG_H
+#define HBPROGRESSDIALOG_H
+
+#include <hbdialog.h>
+
+class HbProgressDialog : public HbDialog
+{
+public:
+
+ enum ProgressDialogType { ProgressNote,WaitNote };
+ explicit HbProgressDialog(QGraphicsItem *parent = 0);
+
+ enum { Type = Hb::ItemType_ProgressDialog };
+
+protected:
+ QVariant itemChange(GraphicsItemChange change, const QVariant& value);
+};
+
+#endif // HBPROGRESSDIALOG_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hbstubs.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,377 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// Orbit classes
+#include <hbinstance.h>
+#include <hbmainwindow.h>
+#include <hbwidget.h>
+#include <hbdialog.h>
+#include <hbaction.h>
+#include <hblabel.h>
+#include <hbprogressdialog.h>
+#include <hblineedit.h>
+#include <hbview.h>
+
+// Static data that simulates HbInstance and HbMainWindow
+static HbInstance* hbInstanceSingleton = 0;
+
+// HbInstance
+
+// -----------------------------------------------------------------------------
+// HbInstance::instance
+// -----------------------------------------------------------------------------
+//
+HbInstance* HbInstance::instance()
+{
+ if (!hbInstanceSingleton)
+ hbInstanceSingleton = new HbInstance;
+ return hbInstanceSingleton;
+}
+
+// -----------------------------------------------------------------------------
+// HbInstance::allMainWindows
+// -----------------------------------------------------------------------------
+//
+QList<HbMainWindow *> HbInstance::allMainWindows() const
+{
+ return mAllMainWindows;
+}
+
+// -----------------------------------------------------------------------------
+// HbInstance::HbInstance
+// -----------------------------------------------------------------------------
+//
+HbInstance::HbInstance()
+{
+ HbMainWindow *mainWindow = new HbMainWindow;
+ mAllMainWindows.append(mainWindow);
+}
+
+// -----------------------------------------------------------------------------
+// HbInstance::~HbInstance
+// -----------------------------------------------------------------------------
+//
+HbInstance::~HbInstance()
+{
+ mAllMainWindows.clear();
+}
+
+
+// HbMainWindow
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::HbMainWindow
+// -----------------------------------------------------------------------------
+//
+HbMainWindow::HbMainWindow(QWidget *parent,Hb::WindowFlags windowFlags)
+: QGraphicsView(parent)
+{
+ Q_UNUSED(windowFlags)
+}
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::~HbMainWindow
+// -----------------------------------------------------------------------------
+//
+HbMainWindow::~HbMainWindow()
+{
+}
+
+// HbDialog
+
+// -----------------------------------------------------------------------------
+// HbDialog::HbDialog
+// -----------------------------------------------------------------------------
+//
+HbDialog::HbDialog(QGraphicsItem *parent) : HbWidget(parent)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::~HbDialog
+// -----------------------------------------------------------------------------
+//
+HbDialog::~HbDialog()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::open()
+// -----------------------------------------------------------------------------
+//
+void HbDialog::open(QObject* receiver, const char* member)
+{
+ Q_UNUSED(receiver);
+ Q_UNUSED(member);
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::setContentWidget
+// -----------------------------------------------------------------------------
+//
+void HbDialog::setContentWidget(QGraphicsWidget *contentWidget)
+{
+ Q_UNUSED(contentWidget)
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::itemChange
+// -----------------------------------------------------------------------------
+//
+QVariant HbDialog::itemChange(GraphicsItemChange change, const QVariant& value)
+{
+ Q_UNUSED(change)
+ return QVariant(value);
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::setTimeout
+// -----------------------------------------------------------------------------
+//
+void HbDialog::setTimeout(int timeout )
+{
+ Q_UNUSED(timeout)
+}
+
+// -----------------------------------------------------------------------------
+// HbDialog::setDismissPolicy
+// -----------------------------------------------------------------------------
+//
+void HbDialog::setDismissPolicy( HbDialog::DismissPolicy dismissPolicy )
+{
+ Q_UNUSED(dismissPolicy)
+}
+
+// HbAction
+
+// -----------------------------------------------------------------------------
+// HbAction::HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::HbAction(QObject *parent)
+: QAction(parent), mIcon(QString())
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbAction::HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::HbAction(const QString &text, QObject *parent)
+: QAction(text,parent), mIcon(QString())
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbAction::~HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::~HbAction()
+{
+}
+
+
+// HbLabel
+
+// -----------------------------------------------------------------------------
+// HbLabel::HbLabel
+// -----------------------------------------------------------------------------
+//
+HbLabel::HbLabel(QGraphicsItem *parent) : HbWidget(parent)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbLabel::HbLabel
+// -----------------------------------------------------------------------------
+//
+HbLabel::HbLabel(const QString &displayText, QGraphicsItem *parent)
+: HbWidget(parent)
+{
+ Q_UNUSED(displayText)
+}
+
+// -----------------------------------------------------------------------------
+// HbLabel::~HbLabel
+// -----------------------------------------------------------------------------
+//
+HbLabel::~HbLabel()
+{
+}
+
+
+// -----------------------------------------------------------------------------
+// HbProgressDialog
+
+// -----------------------------------------------------------------------------
+// HbProgressDialog::HbProgressDialog
+// -----------------------------------------------------------------------------
+//
+HbProgressDialog::HbProgressDialog(QGraphicsItem *parent) : HbDialog(parent)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbProgressDialog::itemChange
+// -----------------------------------------------------------------------------
+//
+QVariant HbProgressDialog::itemChange(GraphicsItemChange change, const QVariant& value)
+{
+ Q_UNUSED(change)
+ return QVariant(value);
+}
+
+
+// HbLineEdit
+
+// -----------------------------------------------------------------------------
+// HbLineEdit::HbLineEdit
+// -----------------------------------------------------------------------------
+//
+HbLineEdit::HbLineEdit(const QString &text, QGraphicsItem *parent)
+: HbWidget(parent)
+{
+ Q_UNUSED(text)
+}
+
+// -----------------------------------------------------------------------------
+// HbLineEdit::~HbLineEdit
+// -----------------------------------------------------------------------------
+//
+HbLineEdit::~HbLineEdit()
+{
+}
+
+// HbWidget
+
+// -----------------------------------------------------------------------------
+// HbWidget::HbWidget
+// -----------------------------------------------------------------------------
+//
+HbWidget::HbWidget(QGraphicsItem *parent, Qt::WindowFlags wFlags)
+: QGraphicsWidget(parent,wFlags)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbWidget::~HbWidget
+// -----------------------------------------------------------------------------
+//
+HbWidget::~HbWidget()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbWidget::clearActions
+// -----------------------------------------------------------------------------
+//
+void HbWidget::clearActions()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbWidget::itemChange
+// -----------------------------------------------------------------------------
+//
+QVariant HbWidget::itemChange(GraphicsItemChange change, const QVariant& value)
+{
+ Q_UNUSED(change)
+ return QVariant(value);
+}
+
+
+// HbView
+
+// -----------------------------------------------------------------------------
+// HbView::HbView
+// -----------------------------------------------------------------------------
+//
+HbView::HbView(QGraphicsItem *parent) : HbWidget(parent)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbView::~HbView
+// -----------------------------------------------------------------------------
+//
+HbView::~HbView()
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbView::menu
+// -----------------------------------------------------------------------------
+//
+HbMenu* HbView::menu() const
+{
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+// HbView::toolBar
+// -----------------------------------------------------------------------------
+//
+HbToolBar* HbView::toolBar() const
+{
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+// HbView::setTitle
+// -----------------------------------------------------------------------------
+//
+void HbView::setTitle(const QString &title)
+{
+ Q_UNUSED(title)
+}
+
+// -----------------------------------------------------------------------------
+// HbView::setContentFullScreen
+// -----------------------------------------------------------------------------
+//
+void HbView::setContentFullScreen(bool /*enable*/)
+{
+}
+
+// -----------------------------------------------------------------------------
+// HbView::navigationAction
+// -----------------------------------------------------------------------------
+//
+HbAction *HbView::navigationAction() const
+{
+ return 0;
+}
+
+// -----------------------------------------------------------------------------
+// HbView::setNavigationAction
+// -----------------------------------------------------------------------------
+//
+void HbView::setNavigationAction(HbAction *action)
+{
+ Q_UNUSED(action);
+}
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+QString hbTrId(const char *id, int n)
+{
+ Q_UNUSED(n);
+ return QString(id);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hbview.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+#ifndef HBVIEW_H
+#define HBVIEW_H
+
+#include <hbwidget.h>
+#include <hbglobal.h>
+#include <hbnamespace.h>
+
+class HbMenu;
+class HbToolBar;
+class HbAction;
+
+class HbView : public HbWidget
+{
+public:
+ explicit HbView(QGraphicsItem *parent = 0);
+ virtual ~HbView();
+
+ HbMenu *menu() const;
+ HbToolBar *toolBar() const;
+
+ void setContentFullScreen(bool enable = true);
+ HbAction *navigationAction() const;
+ void setNavigationAction(HbAction *action);
+
+public slots:
+ void setTitle(const QString &title);
+
+private: // Data added for the unit testing stub
+ HbMenu* mMenu;
+ HbToolBar* mToolBar;
+ bool mTitlePaneItem;
+ bool mIndicatorItems;
+ bool mSecondarySoftKeyItem;
+};
+
+#endif // HBVIEW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/hbwidget.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 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: Orbit stubs for Live Comms UI unit tests
+*
+*/
+
+#ifndef HBWIDGET_H
+#define HBWIDGET_H
+
+#include <hbglobal.h>
+#include <hbstyle.h>
+#include <hbnamespace.h>
+#include <QGraphicsWidget>
+
+class HbEvent;
+
+
+class HbWidget : public QGraphicsWidget
+{
+public:
+ explicit HbWidget( QGraphicsItem *parent=0, Qt::WindowFlags wFlags=0 );
+ virtual ~HbWidget();
+ void clearActions();
+
+protected:
+ QVariant itemChange ( GraphicsItemChange change, const QVariant & value );
+};
+
+#endif // HBWIDGET_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/qthighway_stub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,139 @@
+/*
+* Copyright (c) 2008-2009 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:
+*
+*/
+
+#include <qglobal.h>
+#include <xqserviceprovider.h>
+#include <xqservicerequest.h>
+#include <xqserviceutil.h>
+#include "qthighway_stub_helper.h"
+
+QString qtHighwayStubService;
+QString qtHighwayStubMessage;
+bool qtHighwayStubIsBg;
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+void QtHighwayStubHelper::reset()
+{
+ qtHighwayStubService.clear();
+ qtHighwayStubMessage.clear();
+ qtHighwayStubIsBg = false;
+}
+
+QString QtHighwayStubHelper::service()
+{
+ return qtHighwayStubService;
+}
+
+QString QtHighwayStubHelper::message()
+{
+ return qtHighwayStubMessage;
+}
+
+bool QtHighwayStubHelper::isAtBg()
+{
+ return qtHighwayStubIsBg;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+XQServiceProvider::XQServiceProvider( const QString& service, QObject *parent )
+{
+ Q_UNUSED(service);
+ Q_UNUSED(parent);
+}
+
+XQServiceProvider::~XQServiceProvider()
+{
+
+}
+
+void XQServiceProvider::SetPlugin(QObject* impl_plugin)
+{
+ Q_UNUSED(impl_plugin);
+}
+
+void XQServiceProvider::publishAll()
+{
+
+}
+
+int XQServiceProvider::setCurrentRequestAsync()
+{
+ return 0;
+}
+
+bool XQServiceProvider::completeRequest(int index, const QVariant& retValue)
+{
+ Q_UNUSED(index);
+ Q_UNUSED(retValue);
+ return true;
+}
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+XQServiceRequest::XQServiceRequest(
+ const QString& service, const QString& message, const bool& synchronous)
+{
+ qtHighwayStubService = service;
+ qtHighwayStubMessage = message;
+}
+
+XQServiceRequest::~XQServiceRequest()
+{
+
+}
+
+
+void XQServiceRequest::setArguments(const QList<QVariant> &arguments)
+{
+ Q_UNUSED(arguments)
+}
+
+QString XQServiceRequest::service() const
+{
+ return qtHighwayStubService;
+}
+
+QString XQServiceRequest::message() const
+{
+ return qtHighwayStubMessage;
+}
+
+bool XQServiceRequest::send(QVariant& retValue)
+{
+ Q_UNUSED(retValue);
+ return true;
+}
+void XQServiceRequest::addArg(const QVariant& v)
+{
+ Q_UNUSED(v);
+}
+
+void XQServiceUtil::toBackground(bool value)
+{
+ qtHighwayStubIsBg = value;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/hbstubs/qthighway_stub_helper.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+/**
+* Helper class to control logcli stub behavior
+*
+*/
+class QtHighwayStubHelper{
+ public:
+ static void reset();
+ static QString service();
+ static QString message();
+ static bool isAtBg();
+};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/inc/ut_lcactivitymanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 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 UT_LCACTIVITYMANAGER_H
+#define UT_LCACTIVITYMANAGER_H
+
+#include <QObject>
+class LcActivityManager;
+
+
+class UT_LcActivityManager : public QObject
+{
+ Q_OBJECT
+
+private slots:
+
+/*
+ * In addition, there are four private slots that are not treated as testfunctions.
+ * They will be executed by the testing framework and can be used to initialize and clean up
+ * either the entire test or the current test function.
+ *
+ * initTestCase() will be called before the first testfunction is executed.
+ * cleanupTestCase() will be called after the last testfunction was executed.
+ * init() will be called before each testfunction is executed.
+ * cleanup() will be called after every testfunction.
+*/
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots: //test methods
+
+ void testConstructor();
+ void testInitInactivityTimeout();
+ void testEnableActivitySimulation();
+ void testIsActivitySimulationEnabled();
+ void testTimerEvent();
+
+private:
+
+ LcActivityManager* mActivityManager;
+};
+
+
+
+
+#endif //UT_LCACTIVITYMANAGER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/inc/ut_lcuiengine.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,110 @@
+/*
+* Copyright (c) 2009 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 UT_LCUIENGINE_H
+#define UT_LCUIENGINE_H
+
+#include <QObject>
+class LcUiEngine;
+class HbProgressDialog;
+class HbDialog;
+class HbMainWindow;
+class LcSignalSink;
+
+
+class UT_LcUiEngine : public QObject
+{
+ Q_OBJECT
+
+private slots:
+
+/*
+ * In addition, there are four private slots that are not treated as testfunctions.
+ * They will be executed by the testing framework and can be used to initialize and clean up
+ * either the entire test or the current test function.
+ *
+ * initTestCase() will be called before the first testfunction is executed.
+ * cleanupTestCase() will be called after the last testfunction was executed.
+ * init() will be called before each testfunction is executed.
+ * cleanup() will be called after every testfunction.
+*/
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots: //test methods
+
+ void testConstructor();
+ void testFeatureSupported();
+ void testEstablishSession();
+ void testTerminateSession();
+ void testSetWindowRect();
+ void testEnableWindow();
+ void testPlay();
+ void testPause();
+ void testEnableSpeaker();
+ void testMuteMic();
+ void testStartLiveContent();
+ void testStart();
+ void testSetContentAreas();
+ void testSetOrientation();
+ void testToggleMute();
+ void testToggleSpeaker();
+ void testToggleDisableCamera();
+ void testToggleCamera();
+ void testSessionStateChanged();
+ void testPlayerStateChanged();
+ void testStartReceiving();
+ void testStartPlayback();
+ void testStop();
+ void testSetViewLayout();
+ void testHideNotes();
+ void testSetUiComponents();
+ void testZoom();
+ void testBlockUi();
+ void testCloseTimer();
+ void testfullScreenMode();
+ void testsetFullScreenMode();
+ void testTimerEvent();
+ void testFillRemoteInfo();
+ void testUpdateSession();
+ void testIsLocalPlayerPlaying();
+ void testIsRemotePlayerPlaying();
+ void testMinimized();
+ void testMaximized();
+ void testIsMinimized();
+ void testHandleForegroundStatus();
+ void testSendDialTone();
+ void testShareVideoIsAllowedShownAutomatically();
+ void testShareVideoIsNotAllowedShown();
+ void testShareVideoPermissionAskedAlways();
+ void testVolumeLevelChanged();
+
+private:
+
+ LcUiEngine* mEngine;
+ HbProgressDialog* mInvitingNote;
+ HbProgressDialog* mWaitingNote;
+ HbDialog* mAcceptQuery;
+ HbDialog* mRecipientQuery;
+ HbDialog* mShareOwnVideoQuery;
+};
+
+
+
+
+#endif //UT_LCUIENGINE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/data/10203399.rss Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "registryinfov2.rh"
+
+RESOURCE REGISTRY_INFO theInfo
+ {
+ resource_format_version = RESOURCE_FORMAT_VERSION_2;
+ dll_uid = 0x10203399;
+ interfaces =
+ {
+ INTERFACE_INFO
+ {
+ interface_uid = 0x20021340;
+ implementations =
+ {
+ IMPLEMENTATION_INFO
+ {
+ implementation_uid = 0x10203399;
+ version_no = 1;
+ default_data = "MultimediaSharing";
+ }
+ };
+ }
+ };
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_MMPFILES
+lcenginepluginstub.mmp
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/group/lcenginepluginstub.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+
+#include <platform_paths.hrh>
+
+TARGET lcenginepluginstub.dll
+TARGETTYPE PLUGIN
+UID 0x10009d8d 0x10203399
+VENDORID VID_DEFAULT
+CAPABILITY CAP_ECOM_PLUGIN
+
+
+SOURCEPATH ../data
+START RESOURCE 10203399.rss
+TARGET lcenginepluginstub.rsc
+END
+
+SOURCEPATH ../src
+SOURCE dllentry.cpp
+SOURCE lcvideoplayerstub.cpp
+SOURCE lcenginestub.cpp
+SOURCE lcsessionstub.cpp
+
+USERINCLUDE ../inc
+USERINCLUDE ../../../../../../mmsharing/inc
+USERINCLUDE ../../../../../../inc
+
+
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/ecom
+
+LIBRARY euser.lib
+LIBRARY ecom.lib
+LIBRARY insock.lib
+
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/inc/centralrepository_stub_helper.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2004-2006 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 __CENTRALREPOSITORYHELPER_H__
+#define __CENTRALREPOSITORYHELPER_H__
+
+class CentralRepositoryStubHelper{
+
+public: // Stub data
+
+ static void reset();
+ static void setFailCode(TInt err);
+ static void setCurrentVal(TInt val);
+ static TInt currentVal();
+
+};
+
+#endif // __CENTRALREPOSITORYHELPER_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/inc/lcenginestub.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2009 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 LCENGINESTUB_H
+#define LCENGINESTUB_H
+
+
+extern void lcutStub_LcEngine_reset();
+extern void lcutStub_LcEngine_setFailure( int failure );
+extern int lcutStub_LcEngine_failure();
+extern void lcutStub_LcEngine_setLcFeatureSupported( bool supported );
+
+// INCLUDES
+#include "lcengine.h"
+
+// FORWARD DECLARATIONS
+class CLcSession;
+class MLcUiProvider;
+
+class CLcEngineStub : public CLcEngine
+ {
+ public:
+
+ static CLcEngineStub* NewL();
+ ~CLcEngineStub();
+
+ public: // From CLcEngine
+
+ MLcSession& Session();
+
+ TBool IsFeatureSupported( TLcFeature aLcFeature );
+
+ private: // Constructors
+
+ CLcEngineStub();
+ void ConstructL();
+
+ private: // New functions
+
+ CLcSession* CreateMusSessionL( int aUseCase );
+
+ public: // Data
+
+ CLcSession* iSession;
+ };
+#endif // LCENGINESTUB_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/inc/lcsessionstub.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) 2009 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 LCSESSIONSTUB_H
+#define LCSESSIONSTUB_H
+
+#include <QString>
+#include <QMap>
+#include <e32std.h>
+
+class MLcUiProvider;
+
+extern bool lcutStub_LcSession_expectCall( const QString& call, int callNdx = 0);
+extern void lcutStub_LcSession_reset();
+extern MLcUiProvider* lcutStub_LcSession_lcUiProvider();
+
+const char lcutStub_LcSession_NoCall[] = "NOCALL";
+const char lcutStub_LcSession_establishSession[] = "LcEngine::EstablishLcSessionL";
+const char lcutStub_LcSession_terminateSession[] = "LcEngine::TerminateLcSessionL";
+const char lcutStub_LcSession_updateSession[] = "LcEngine::UpdateLcSessionL";
+
+_LIT( KLcStubLocalDisplayName, "local");
+_LIT( KLcStubRemoteDisplayName, "remote");
+_LIT( KLcStubRemoteDetails, "112233459");
+
+// INCLUDES
+#include "lcsession.h"
+
+#include <e32std.h>
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class MLcSessionObserver;
+class MLcUiProvider;
+class CLcVideoPlayer;
+
+
+// CLASS DECLARATION
+/**
+* A class representing a Live Comms session.
+*/
+class CLcSession : public CBase,
+ public MLcSession
+ {
+public:
+ /**
+ * Creates new CLcSession.
+ *
+ * @return CLcSession* New instanse of specified class
+ */
+ static CLcSession* NewL();
+
+
+public:
+
+ /**
+ * Destructor
+ */
+ ~CLcSession();
+
+public: // from MLcSession
+
+ /**
+ * Returns the current session state.
+ * @return the session state
+ */
+ TLcSessionState LcSessionState() const;
+
+ /**
+ * Sets the observer for the session related events.
+ * @param aObserver the observer
+ */
+ void SetLcSessionObserver( MLcSessionObserver* aObserver );
+
+ /**
+ * Sets the callback for the UI prompts.
+ * @param aUiProvider callback for UI prompts
+ */
+ void SetLcUiProvider( MLcUiProvider* aUiProvider );
+
+ /**
+ * Establishes the session.
+ * In case of a MO session initiates the session negotiation.
+ * In case of a MT session accepts the incoming session.
+ */
+ void EstablishLcSessionL();
+
+ /**
+ * Terminates the session.
+ * Can be used for terminating an existing session as well as
+ * cancelling a MO session that has not yet been established.
+ * Can also be used for rejecting an incoming session.
+ */
+ void TerminateLcSessionL();
+
+ /**
+ * Returns the video player for the received media.
+ * Is present if the session contains video
+ * received from the remote participant.
+ * @return the remote video player or NULL if not present
+ */
+ MLcVideoPlayer* RemoteVideoPlayer();
+
+ /**
+ * Returns the video player for the media that is being sent.
+ * Is present if the session contains outgoing video.
+ * @return the local video player or NULL if not present
+ */
+ MLcVideoPlayer* LocalVideoPlayer();
+
+ /**
+ * Returns the own display name for the session.
+ * @return the local display name
+ */
+ const TDesC& LocalDisplayName();
+
+ /**
+ * Returns the remote party's display name for the session.
+ * @return the remote display name
+ */
+ const TDesC& RemoteDisplayName();
+
+ /**
+ * Sets a parameter for the session.
+ * The parameters can be plug-in specific.
+ * @param aId the identifier for the parameter
+ * @param aValue the value for the parameter
+ */
+ TInt SetParameter( TInt aId, TInt aValue );
+
+ /**
+ * Returns a value for a session parameter.
+ * @param aId the identifier for the parameter
+ * @return the value for the parameter or an error if not present
+ */
+ TInt ParameterValue( TInt aId );
+
+ /**
+ * Checks whether application should be started in background mode.
+ * In background mode session will be pre-set up without user
+ * interaction and will be in paused state.
+ * @return ETrue if background mode should be used
+ */
+ TBool IsBackgroundStartup();
+
+ /**
+ * Engine can be informed about application foreground status via
+ * this method.
+ * @param aIsForeground ETrue if application is at foreground, EFalse
+ * if at background
+ * @return KErrNone if succesfully handled
+ */
+ TInt SetForegroundStatus( TBool aIsForeground );
+
+ /**
+ * Returns remote party details for the session
+ * @return remote party details or KNullDesC if those are not known
+ */
+ const TDesC& RemoteDetails();
+
+ /**
+ * Updates established session.
+ * All the changes, if they are not yet delivered, to players, windows
+ * and session parameters has been commited after the call.
+ */
+ void UpdateLcSessionL();
+
+ /**
+ * Send DTMF signals.
+ * @param aKey Key pressed from dialpad. Key can be [0-9],*,#,A,B,C,D.
+ * which is 16 key combination of DTMF.
+ * Send DTMF signals to remote party.
+ * @return ETrue upon success else EFalse.
+ */
+ TBool SendDialTone( TChar aKey);
+
+
+protected:
+
+ /**
+ * Constructor
+ */
+ CLcSession( );
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+public:
+
+ MLcSessionObserver* iSessionObserver;
+ MLcUiProvider* iLcUiProvider;
+ HBufC* iLocalDisplayName;
+ HBufC* iRemoteDisplayName;
+ HBufC* iRemoteDetails;
+ CLcVideoPlayer* iLocalPlayer;
+ CLcVideoPlayer* iRemotePlayer;
+ TBool iIsForeground;
+ TBool iForegroundChange;
+ TLcSessionState iState;
+
+ QMap<int, int> mParams;
+
+ };
+
+#endif // LCSESSIONSTUB_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/inc/lcvideoplayerstub.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,217 @@
+/*
+* Copyright (c) 2009 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 LCVIDEOPLAYERSTUB_H
+#define LCVIDEOPLAYERSTUB_H
+
+#include <e32base.h> // CBase
+
+// USER
+#include "lcvideoplayer.h"
+#include "lcaudiocontrol.h"
+#include "lcwindow.h"
+#include "lccameracontrol.h"
+#include "lczoomcontrol.h"
+#include "lcbrightnesscontrol.h"
+
+class MLcSourceFileControl;
+class MLcDestinationFileControl;
+
+
+#include <QString>
+
+extern bool lcutStub_LcPlayer_expectCall( const QString& call, int callNdx = 0);
+extern void lcutStub_LcPlayer_reset();
+extern void lcutStub_LcPlayer_asyncCompletion( bool async );
+
+const char lcutStub_LcPlayer_NoCall[] = "NOCALL";
+const char lcutStub_LcPlayer_LcPlayL[] = "LcPlayer::LcPlayL";
+const char lcutStub_LcPlayer_LcPauseL[] = "LcPlayer::LcPauseL";
+const char lcutStub_LcPlayer_SetLcWindowRectL[] = "LcWindow::SetLcWindowRectL";
+const char lcutStub_LcPlayer_EnableLcWindowL[] = "LcPlayer::EnableLcWindowL";
+const char lcutStub_LcPlayer_DecreaseLcBrightnessL[] = "LcPlayer::DecreaseLcBrightnessL";
+const char lcutStub_LcPlayer_EnableLcLoudspeakerL[] = "LcPlayer::EnableLcLoudspeakerL";
+const char lcutStub_LcPlayer_LcZoomInL[] = "LcPlayer::LcZoomInL";
+const char lcutStub_LcPlayer_LcZoomOutL[] = "LcPlayer::LcZoomOutL";
+const char lcutStub_LcPlayer_MuteLcAudioL[] = "LcPlayer::MuteLcAudioL";
+const char lcutStub_LcPlayer_MuteLcMicL[] = "LcPlayer::MuteLcMicL";
+const char lcutStub_LcPlayer_SetLcBrightnessL[] = "LcPlayer::SetLcBrightnessL";
+const char lcutStub_LcPlayer_IncreaseLcBrightnessL[] = "LcPlayer::IncreaseLcBrightnessL";
+const char lcutStub_LcPlayer_SetLcZoomValueL[] = "LcPlayer::SetLcZoomValueL";
+const char lcutStub_LcPlayer_ToggleLcCameraL[] = "LcPlayer::ToggleLcCameraL";
+const char lcutStub_LcPlayer_SetLcWindowOrientationL[] = "LcWindow::SetLcWindowOrientationL";
+
+
+// CLASS DECLARATION
+/**
+*
+*/
+class CLcVideoPlayer : public CBase,
+ public MLcVideoPlayer,
+ public MLcAudioControl,
+ public MLcWindow,
+ public MLcCameraControl,
+ public MLcZoomControl,
+ public MLcBrightnessControl
+ {
+ public:
+ /**
+ * Creates new CLcSession.
+ *
+ * @return CLcSession* New instanse of specified class
+ */
+ static CLcVideoPlayer* NewL();
+
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CLcVideoPlayer();
+
+
+ public: // from MLcVideoPlayer
+
+ TLcVideoPlayerState LcVideoPlayerState() const;
+
+ TBool LcIsPlayingL();
+
+ void LcPlayL(TLcVideoPlayerSource aSource=ECameraSource );
+
+ void LcPauseL();
+
+ MLcWindow* LcWindow();
+
+ MLcCameraControl* LcCameraControl();
+
+ MLcSourceFileControl* LcSourceFileControl();
+
+ MLcDestinationFileControl* LcDestinationFileControl();
+
+ MLcAudioControl* LcAudioControl();
+
+ MLcZoomControl* LcZoomControl();
+
+ MLcBrightnessControl* LcBrightnessControl();
+
+public: // from MLcWindow
+
+ void EnableLcWindowL( TBool aEnable );
+
+ TBool IsLcWindowEnabled();
+
+ void SetLcWindowRectL( TRect aRect );
+
+ TRect LcWindowRect();
+
+ void SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation );
+
+ TLcWindowOrientation LcWindowOrientationL();
+
+public: // from MLcAudioControl
+
+ TBool IsLcAudioMutedL();
+
+ void MuteLcAudioL( TBool aMute );
+
+ TBool IsLcMicMutedL();
+
+ void MuteLcMicL( TBool aMute );
+
+ TBool IsLcLoudspeakerEnabled();
+
+ void EnableLcLoudspeakerL( TBool aEnabled );
+
+ TBool IsEnablingLcLoudspeakerAllowed();
+
+ TInt LcVolumeL();
+
+ void SetLcVolumeL( TInt aValue );
+
+ void IncreaseLcVolumeL();
+
+ void DecreaseLcVolumeL();
+
+
+public: //from MLcCameraControl
+
+ TInt LcCameraCountL();
+ TInt CurrentLcCameraIndex();
+ void ToggleLcCameraL();
+
+public: //from MLcZoomControl
+
+ TInt MinLcZoomL();
+ TInt MaxLcZoomL();
+ TInt LcZoomValueL();
+ void SetLcZoomValueL( TInt aValue );
+ void LcZoomInL();
+ void LcZoomOutL();
+
+public: //from MLcBrightnessControl
+
+ TInt MinLcBrightnessL();
+ TInt MaxLcBrightnessL();
+ TInt LcBrightnessL();
+ void SetLcBrightnessL( TInt aValue );
+ void IncreaseLcBrightnessL();
+ void DecreaseLcBrightnessL();
+
+ protected: // CONSTRUCTORS
+
+ /**
+ * Constructor
+ *
+ */
+ CLcVideoPlayer( );
+
+ /**
+ * Second-phase constructor
+ *
+ */
+ void ConstructL();
+
+
+ public:
+
+ /**
+ * Drawing area rect.
+ */
+ TRect iRect;
+
+ MLcWindow::TLcWindowOrientation iOrientation;
+
+ TBool iWindowEnabled;
+
+ TBool iMuted;
+
+ TBool iMicMuted;
+
+ TBool iLoudspeakerEnabled;
+
+ TBool iEnablingLoudspeakerAllowed;
+
+ TInt iVolume;
+
+ MLcVideoPlayer::TLcVideoPlayerState iState;
+ TBool iPlaying;
+
+
+ };
+
+#endif //LCVIDEOPLAYERSTUB_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/src/DllEntry.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "lcenginestub.h"
+#include <ECom.h>
+#include <ImplementationProxy.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+const TImplementationProxy KMusEnginePluginImplementationTableStub[] =
+ {
+ IMPLEMENTATION_PROXY_ENTRY( 0x20021340, CLcEngineStub::NewL )
+ };
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+ {
+ aTableCount = sizeof( KMusEnginePluginImplementationTableStub ) /
+ sizeof( TImplementationProxy );
+
+ return KMusEnginePluginImplementationTableStub;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/src/centralrepository_stub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* 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:
+*
+*/
+
+
+#include <centralrepository.h>
+#include "centralrepository_stub_helper.h"
+
+TInt mFailCode = KErrNone;
+TInt mCurrentVal = 0;
+
+void CentralRepositoryStubHelper::reset()
+{
+ mFailCode = KErrNone;
+ mCurrentVal = 0;
+}
+void CentralRepositoryStubHelper::setFailCode(TInt err)
+{
+ mFailCode = err;
+}
+void CentralRepositoryStubHelper::setCurrentVal(TInt val)
+{
+ mCurrentVal = val;
+}
+TInt CentralRepositoryStubHelper::currentVal()
+{
+ return mCurrentVal;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CRepository* CRepository::NewL( TUid aRepositoryUid )
+ {
+ CRepository* self = CRepository::NewLC( aRepositoryUid );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CRepository* CRepository::NewLC( TUid /*aRepositoryUid*/ )
+ {
+ CRepository* self = new (ELeave) CRepository();
+ if (mFailCode == KErrNoMemory) {
+ User::Leave(KErrNoMemory);
+ }
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CRepository::~CRepository()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Get(TUint32 /*aKey*/, TInt& aValue)
+ {
+ aValue = mCurrentVal;
+ return mFailCode;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Set(TUint32 /*aKey*/, TInt aValue)
+ {
+ if ( mFailCode == KErrNone )
+ {
+ mCurrentVal = aValue;
+ }
+ return mFailCode;
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/src/lcenginestub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+#include "lcenginestub.h"
+#include "lcsessionstub.h"
+#include "mussessionproperties.h"
+#include "lcsessionobserver.h"
+#include "lcuiprovider.h"
+#include "lcvideoplayerstub.h"
+#include "musmanagercommon.h"
+
+static int lcutStub_LcEngine_failureValue = 0;
+static bool lcutStub_LcEngine_lcFeatureSupported = false;
+
+
+TAny* REComSession::CreateImplementationL( TUid /*aInterfaceUid*/,
+ TInt32 /*aKeyOffset*/,
+ const TEComResolverParams& /*aResolutionParameters*/ )
+{
+ User::LeaveIfError( lcutStub_LcEngine_failureValue );
+ return CLcEngineStub::NewL();
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcEngineStub* CLcEngineStub::NewL()
+ {
+
+ CLcEngineStub* self = new( ELeave )CLcEngineStub();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcEngineStub::~CLcEngineStub()
+ {
+ delete iSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcEngineStub::CLcEngineStub( )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcEngineStub::ConstructL()
+ {
+ iSession = CLcSession::NewL();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MLcSession& CLcEngineStub::Session()
+ {
+ return *iSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CLcEngineStub::IsFeatureSupported( TLcFeature aLcFeature )
+ {
+ return lcutStub_LcEngine_lcFeatureSupported;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcSession* CLcEngineStub::CreateMusSessionL( int aUseCase )
+ {
+ CLcSession* session;
+ switch ( aUseCase )
+ {
+ case MultimediaSharing::EMusReceive:
+ {
+ session = CLcSession::NewL();
+ session->iRemotePlayer = CLcVideoPlayer::NewL();
+ break;
+ }
+
+ case MultimediaSharing::EMusLiveVideo:
+ {
+ session = CLcSession::NewL();
+ session->iLocalPlayer = CLcVideoPlayer::NewL();
+ break;
+ }
+ case MultimediaSharing::EMusTwoWayVideo:
+ case MultimediaSharing::EMusReceiveTwoWayVideo:
+ {
+ session = CLcSession::NewL();
+ session->iLocalPlayer = CLcVideoPlayer::NewL();
+ session->iRemotePlayer = CLcVideoPlayer::NewL();
+ break;
+ }
+
+ default:
+ User::Leave( KErrNotSupported );
+ break;
+ }
+ return session;
+ }
+
+
+//stub control
+
+
+void lcutStub_LcEngine_reset()
+ {
+ lcutStub_LcEngine_failureValue = 0;
+ lcutStub_LcEngine_lcFeatureSupported = false;
+ }
+
+void lcutStub_LcEngine_setFailure( int failure )
+ {
+ lcutStub_LcEngine_failureValue = failure;
+ }
+
+int lcutStub_LcEngine_failure()
+ {
+ return lcutStub_LcEngine_failureValue;
+ }
+
+void lcutStub_LcEngine_setLcFeatureSupported( bool supported )
+ {
+ lcutStub_LcEngine_lcFeatureSupported = supported;
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/src/lcsessionstub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,260 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "lcenginestub.h"
+#include "lcsessionstub.h"
+#include "lcvideoplayer.h"
+#include "lcsessionobserver.h"
+#include "lcuiprovider.h"
+#include "lcvideoplayerstub.h"
+
+// SYSTEM
+#include <QStringList>
+
+
+static QStringList lcutStub_LcSession_calledMethods;
+static MLcUiProvider* lcutStub_LcSession_uiProvider = 0;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcSession* CLcSession::NewL( )
+ {
+ CLcSession* self = new( ELeave ) CLcSession( );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcSession::~CLcSession()
+ {
+ //delete iRemoteDisplayName;
+ delete iRemotePlayer;
+ delete iLocalPlayer;
+ delete iLocalDisplayName;
+ delete iRemoteDisplayName;
+ delete iRemoteDetails;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+
+ MLcSession::TLcSessionState CLcSession::LcSessionState() const
+ {
+ return iState;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CLcSession::SetLcSessionObserver( MLcSessionObserver* aObserver )
+ {
+ iSessionObserver = aObserver;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CLcSession::SetLcUiProvider( MLcUiProvider* aUiProvider )
+ {
+ iLcUiProvider = aUiProvider;
+ lcutStub_LcSession_uiProvider = aUiProvider;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CLcSession::EstablishLcSessionL( )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcSession_calledMethods.insert(0,lcutStub_LcSession_establishSession );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CLcSession::TerminateLcSessionL( )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcSession_calledMethods.insert(0,lcutStub_LcSession_terminateSession );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CLcSession::UpdateLcSessionL( )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcSession_calledMethods.insert(0,lcutStub_LcSession_updateSession );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+
+TBool CLcSession::SendDialTone( TChar /*aKey*/)
+ {
+ return ETrue;
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CLcSession::RemoteVideoPlayer( )
+ {
+ return iRemotePlayer;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CLcSession::LocalVideoPlayer( )
+ {
+ return iLocalPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CLcSession::LocalDisplayName( )
+ {
+ return *iLocalDisplayName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CLcSession::RemoteDisplayName( )
+ {
+ return *iRemoteDisplayName;
+ }
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+ TInt CLcSession::SetParameter( TInt aId, TInt aValue )
+ {
+ mParams.insert( aId, aValue );
+ return 0;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TInt CLcSession::ParameterValue( TInt /*aId*/ )
+ {
+ return 0;
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+ TBool CLcSession::IsBackgroundStartup()
+ {
+ return iIsForeground;
+ }
+
+ // -----------------------------------------------------------------------------
+ // From MLcSession
+ // -----------------------------------------------------------------------------
+ //
+TInt CLcSession::SetForegroundStatus( TBool aIsForeground )
+ {
+ iIsForeground = aIsForeground;
+ return iForegroundChange;
+ }
+
+ // -----------------------------------------------------------------------------
+ // From MLcSession
+ // -----------------------------------------------------------------------------
+ //
+const TDesC& CLcSession::RemoteDetails()
+ {
+ return *iRemoteDetails;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcSession::CLcSession( )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcSession::ConstructL()
+ {
+ iLocalDisplayName = KLcStubLocalDisplayName().AllocL();
+ iRemoteDisplayName = KLcStubRemoteDisplayName().AllocL();
+ iLocalPlayer = CLcVideoPlayer::NewL();
+ iRemotePlayer = CLcVideoPlayer::NewL();
+ iRemoteDetails = KLcStubRemoteDetails().AllocL();
+ }
+
+
+//stub control
+
+bool lcutStub_LcSession_expectCall( const QString& call, int callNdx )
+{
+ if ( callNdx >= lcutStub_LcSession_calledMethods.count() ) {
+ return call == lcutStub_LcSession_NoCall;
+ }
+
+ return lcutStub_LcSession_calledMethods.count() > 0 ?
+ lcutStub_LcSession_calledMethods[callNdx] == call :
+ call == lcutStub_LcSession_NoCall;
+}
+
+
+void lcutStub_LcSession_reset()
+{
+ lcutStub_LcSession_calledMethods.clear();
+}
+
+MLcUiProvider* lcutStub_LcSession_lcUiProvider()
+{
+ return lcutStub_LcSession_uiProvider;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/lcstub/src/lcvideoplayerstub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,485 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "lcenginestub.h"
+#include "lcvideoplayerstub.h"
+#include "lcvideoplayer.h"
+#include "lcaudiocontrol.h"
+#include "lccameracontrol.h"
+#include "lczoomcontrol.h"
+#include "lcbrightnesscontrol.h"
+#include "lcsessionstub.h"
+#include "lcuiprovider.h"
+
+#include <QStringList>
+
+static QStringList lcutStub_LcPlayer_calledMethods;
+static bool lcutStub_LcPlayer_asyncCompletionEnabled = false;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcVideoPlayer* CLcVideoPlayer::NewL()
+ {
+ CLcVideoPlayer* self = new( ELeave )CLcVideoPlayer();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcVideoPlayer::CLcVideoPlayer()
+ : iRect( TRect(10,10,50,100))
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::ConstructL()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcVideoPlayer::~CLcVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer::TLcVideoPlayerState CLcVideoPlayer::LcVideoPlayerState() const
+ {
+ return iState;
+ }
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CLcVideoPlayer::LcIsPlayingL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return iPlaying;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::LcPlayL(TLcVideoPlayerSource /*aSource*/)
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ iPlaying = ETrue;
+ iState = MLcVideoPlayer::EPlaying;
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_LcPlayL );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::LcPauseL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ iPlaying = EFalse;
+ iState = MLcVideoPlayer::EPaused;
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_LcPauseL );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcWindow* CLcVideoPlayer::LcWindow()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcCameraControl* CLcVideoPlayer::LcCameraControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcSourceFileControl* CLcVideoPlayer::LcSourceFileControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcDestinationFileControl* CLcVideoPlayer::LcDestinationFileControl()
+ {
+ return NULL;
+ }
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcAudioControl* CLcVideoPlayer::LcAudioControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcZoomControl* CLcVideoPlayer::LcZoomControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcBrightnessControl* CLcVideoPlayer::LcBrightnessControl()
+ {
+ return this;
+ }
+
+//-----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::EnableLcWindowL( TBool aEnable )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ iWindowEnabled = aEnable;
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_EnableLcWindowL );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TBool CLcVideoPlayer::IsLcWindowEnabled()
+ {
+ return iWindowEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::SetLcWindowRectL( TRect aRect )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ iRect = aRect;
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_SetLcWindowRectL );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TRect CLcVideoPlayer::LcWindowRect()
+ {
+ return iRect;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ iOrientation = aOrientation;
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_SetLcWindowOrientationL );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+MLcWindow::TLcWindowOrientation CLcVideoPlayer::LcWindowOrientationL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ MLcWindow::TLcWindowOrientation orientation;
+ if ( iOrientation == ELandscape )
+ {
+ orientation = MLcWindow::ELandscape;
+ }
+ else
+ {
+ orientation = MLcWindow::EPortrait;
+ }
+ return orientation;
+ }
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CLcVideoPlayer::IsLcAudioMutedL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return iMuted;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::MuteLcAudioL( TBool aMute )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_MuteLcAudioL );
+ iMuted = aMute;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CLcVideoPlayer::IsEnablingLcLoudspeakerAllowed()
+ {
+ return iEnablingLoudspeakerAllowed;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CLcVideoPlayer::IsLcMicMutedL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return iMicMuted;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::MuteLcMicL( TBool aMute )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_MuteLcMicL );
+ iMicMuted = aMute;
+
+ if ( lcutStub_LcPlayer_asyncCompletionEnabled &&
+ lcutStub_LcSession_lcUiProvider() )
+ {
+ lcutStub_LcSession_lcUiProvider()->BlockUi( ETrue );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CLcVideoPlayer::IsLcLoudspeakerEnabled()
+ {
+ return iLoudspeakerEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::EnableLcLoudspeakerL( TBool aEnabled )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_EnableLcLoudspeakerL );
+ iLoudspeakerEnabled = aEnabled;
+
+ if ( lcutStub_LcPlayer_asyncCompletionEnabled &&
+ lcutStub_LcSession_lcUiProvider() )
+ {
+ lcutStub_LcSession_lcUiProvider()->BlockUi( ETrue );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TInt CLcVideoPlayer::LcVolumeL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return iVolume;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::SetLcVolumeL( TInt aValue )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ iVolume = aValue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::IncreaseLcVolumeL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ iVolume++;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CLcVideoPlayer::DecreaseLcVolumeL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ iVolume--;
+ }
+
+TInt CLcVideoPlayer::LcCameraCountL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return 2;
+ }
+
+TInt CLcVideoPlayer::CurrentLcCameraIndex()
+ {
+ return 0;
+ }
+
+void CLcVideoPlayer::ToggleLcCameraL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_ToggleLcCameraL );
+ }
+
+TInt CLcVideoPlayer::MinLcZoomL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return 0;
+ }
+
+TInt CLcVideoPlayer::MaxLcZoomL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return 10;
+ }
+
+TInt CLcVideoPlayer::LcZoomValueL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return 0;
+ }
+
+void CLcVideoPlayer::SetLcZoomValueL( TInt /*aValue*/ )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_SetLcZoomValueL );
+ }
+
+void CLcVideoPlayer::LcZoomInL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_LcZoomInL );
+ }
+
+void CLcVideoPlayer::LcZoomOutL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_LcZoomOutL );
+ }
+
+TInt CLcVideoPlayer::MinLcBrightnessL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return 0;
+ }
+
+TInt CLcVideoPlayer::MaxLcBrightnessL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return 20;
+ }
+
+TInt CLcVideoPlayer::LcBrightnessL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ return 10;
+ }
+
+void CLcVideoPlayer::SetLcBrightnessL( TInt /*aValue*/ )
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_SetLcBrightnessL );
+ }
+
+void CLcVideoPlayer::IncreaseLcBrightnessL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_IncreaseLcBrightnessL );
+ }
+
+void CLcVideoPlayer::DecreaseLcBrightnessL()
+ {
+ User::LeaveIfError( lcutStub_LcEngine_failure() );
+ lcutStub_LcPlayer_calledMethods.insert(0,lcutStub_LcPlayer_DecreaseLcBrightnessL );
+ }
+
+
+//stub control
+
+bool lcutStub_LcPlayer_expectCall( const QString& call, int callNdx )
+{
+ if ( callNdx >= lcutStub_LcPlayer_calledMethods.count() ) {
+ return call == lcutStub_LcPlayer_NoCall;
+ }
+ return lcutStub_LcPlayer_calledMethods.count() > 0 ?
+ lcutStub_LcPlayer_calledMethods[callNdx] == call :
+ call == lcutStub_LcPlayer_NoCall;
+}
+
+
+void lcutStub_LcPlayer_reset()
+{
+ lcutStub_LcPlayer_calledMethods.clear();
+ lcutStub_LcPlayer_asyncCompletion( false );
+}
+
+void lcutStub_LcPlayer_asyncCompletion( bool async )
+{
+ lcutStub_LcPlayer_asyncCompletionEnabled = async;
+}
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/runtest.cmd Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,22 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+#call qmake
+#call bldmake bldfiles
+#call abld build winscw udeb
+call \epoc32\release\winscw\udeb\ut_lcuieng.exe -xml -o c:\ut_lcuieng.xml
+call copy R:\epoc32\winscw\c\ut_lcuieng.xml .
+call type ut_lcuieng.xml
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/src/main.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+#include <QtTest/QtTest>
+
+#include "ut_lcuiengine.h"
+#include "testresultxmlparser.h"
+
+#if defined(Q_OS_SYMBIAN)
+#include "ut_lcactivitymanager.h"
+#endif
+
+int main(int argc, char *argv[])
+{
+ bool promptOnExit(true);
+ for (int i=0; i<argc; i++) {
+ if (QString(argv[i]) == "-noprompt")
+ promptOnExit = false;
+ }
+ printf("Running tests...\n");
+
+ QApplication app(argc, argv);
+ TestResultXmlParser parser;
+
+ UT_LcUiEngine ut_lcUiEngine;
+ QString resultFileName = "c:/ut_lcui_lcUiEngine.xml";
+ QStringList args_lcUiEngine( "ut_lcuiengine");
+ args_lcUiEngine << "-xml" << "-o" << resultFileName;
+ QTest::qExec(&ut_lcUiEngine, args_lcUiEngine);
+ parser.parseAndPrintResults(resultFileName,true);
+
+#if defined(Q_OS_SYMBIAN)
+ UT_LcActivityManager ut_lcActivityManager;
+ resultFileName = "c:/ut_lcui_lcActivityManager.xml";
+ QStringList args_lcActivityManager( "ut_lcuiengine");
+ args_lcActivityManager << "-xml" << "-o" << resultFileName;
+ QTest::qExec(&ut_lcActivityManager, args_lcActivityManager);
+ parser.parseAndPrintResults(resultFileName,true);
+#endif
+
+ if (promptOnExit) {
+ printf("Press any key...\n");
+ getchar();
+ }
+ return 0;
+}
+
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/src/ut_lcactivitymanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,159 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+#include "ut_lcactivitymanager.h"
+#include "lcactivitymanager.h"
+#include "centralrepository_stub_helper.h"
+#include <QtTest/QtTest>
+
+const int utDisplayTimeout = 10;
+
+//////////////////////////////////////////////////////////////////////////////
+// Stub of User::InactivityTime() and User::ResetInactivityTime()
+TTimeIntervalSeconds utInactivityInterval = 0;
+
+TTimeIntervalSeconds User::InactivityTime()
+{
+ return utInactivityInterval;
+}
+
+void User::ResetInactivityTime()
+{
+ utInactivityInterval = 0;
+}
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+void UT_LcActivityManager::initTestCase()
+{
+}
+
+void UT_LcActivityManager::cleanupTestCase()
+{
+}
+
+
+void UT_LcActivityManager::init()
+{
+ CentralRepositoryStubHelper::reset();
+ CentralRepositoryStubHelper::setCurrentVal(utDisplayTimeout);
+ mActivityManager = new LcActivityManager;
+}
+
+void UT_LcActivityManager::cleanup()
+{
+ delete mActivityManager;
+}
+
+void UT_LcActivityManager::testConstructor()
+{
+ // Inactivity timeout initialized with value from cenrep
+ QVERIFY( mActivityManager );
+ QVERIFY( mActivityManager->mTimerId == -1 );
+ QVERIFY( mActivityManager->mInactivityTimeout == utDisplayTimeout - 2 );
+
+ // Fetching value from cenrep failed, timeout initialized with default value
+ delete mActivityManager;
+ mActivityManager = 0;
+ CentralRepositoryStubHelper::setFailCode(-1);
+ mActivityManager = new LcActivityManager;
+ QVERIFY( mActivityManager->mTimerId == -1 );
+ QVERIFY( mActivityManager->mInactivityTimeout == 5 ); //see lcDefaultInactivityTimeout
+ QVERIFY( mActivityManager->mInactivityTimeout != utDisplayTimeout - 2 );
+}
+
+void UT_LcActivityManager::testInitInactivityTimeout()
+{
+ // Creation of cenrep failed, timeout value not changed
+ QVERIFY( mActivityManager->mTimerId == -1 );
+ QVERIFY( mActivityManager->mInactivityTimeout == utDisplayTimeout - 2 );
+ CentralRepositoryStubHelper::setFailCode(KErrNoMemory);
+ CentralRepositoryStubHelper::setCurrentVal(2);
+ QVERIFY( mActivityManager->initInactivityTimeout() == KErrNoMemory );
+ QVERIFY( mActivityManager->mTimerId == -1 );
+ QVERIFY( mActivityManager->mInactivityTimeout
+ != CentralRepositoryStubHelper::currentVal() - 2 );
+ QVERIFY( mActivityManager->mInactivityTimeout == utDisplayTimeout - 2 );
+
+ // Fetching value from cenrep failed
+ CentralRepositoryStubHelper::setFailCode(KErrNotFound);
+ CentralRepositoryStubHelper::setCurrentVal(3);
+ QVERIFY( mActivityManager->initInactivityTimeout() == KErrNotFound );
+ QVERIFY( mActivityManager->mTimerId == -1 );
+ QVERIFY( mActivityManager->mInactivityTimeout
+ == CentralRepositoryStubHelper::currentVal() - 2 );
+
+ // Timeout initialized with cenrep value
+ CentralRepositoryStubHelper::reset();
+ CentralRepositoryStubHelper::setCurrentVal(2);
+ QVERIFY( mActivityManager->initInactivityTimeout() == KErrNone );
+ QVERIFY( mActivityManager->mTimerId == -1 );
+ QVERIFY( mActivityManager->mInactivityTimeout
+ == CentralRepositoryStubHelper::currentVal() );
+}
+
+void UT_LcActivityManager::testEnableActivitySimulation()
+{
+ // Starting activity simulation for the 1st time
+ QVERIFY( mActivityManager->mTimerId == -1 );
+ mActivityManager->mInactivityTimeout = 5;
+ utInactivityInterval = 1;
+ QVERIFY( User::InactivityTime().Int() == 1 );
+ mActivityManager->enableActivitySimulation(true);
+ QVERIFY( mActivityManager->mTimerId > 0 );
+ QVERIFY( User::InactivityTime().Int() == 1 );
+
+ // Starting activity simulation again, user inactivity reached threshold
+ utInactivityInterval = mActivityManager->mInactivityTimeout = 5;
+ QVERIFY( User::InactivityTime().Int() == 5 );
+ mActivityManager->enableActivitySimulation(true);
+ QVERIFY( mActivityManager->mTimerId > 0 );
+ QVERIFY( User::InactivityTime().Int() == 0 );
+
+ // Disabling ongoing activity simulation
+ QVERIFY( mActivityManager->mTimerId > 0 );
+ mActivityManager->enableActivitySimulation(false);
+ QVERIFY( mActivityManager->mTimerId == -1 );
+
+ // Disabling when no activity simulation running
+ QVERIFY( mActivityManager->mTimerId == -1 );
+ mActivityManager->enableActivitySimulation(false);
+ QVERIFY( mActivityManager->mTimerId == -1 );
+}
+
+void UT_LcActivityManager::testIsActivitySimulationEnabled()
+{
+ QVERIFY( mActivityManager->mTimerId == -1 );
+ QVERIFY( !mActivityManager->isActivitySimulationEnabled() );
+
+ mActivityManager->mTimerId = 1;
+ QVERIFY( mActivityManager->isActivitySimulationEnabled() );
+}
+
+void UT_LcActivityManager::testTimerEvent()
+{
+ // Time event for some other timer, nothing to do
+ mActivityManager->mTimerId = 10;
+ QTimerEvent dummyTimerEvent(5);
+ mActivityManager->timerEvent(&dummyTimerEvent);
+ QVERIFY( mActivityManager->mTimerId == 10 );
+
+ // Time event for inactivity timer, timer is restarted
+ QTimerEvent inactivityTimerEvent(mActivityManager->mTimerId);
+ mActivityManager->timerEvent(&inactivityTimerEvent);
+ QVERIFY( mActivityManager->mTimerId != 10 );
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/src/ut_lcuiengine.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,1276 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+#include "ut_lcuiengine.h"
+#include "lcuiengine.h"
+#include "lcuiengine_p.h"
+#include "lcactivitymanager.h"
+
+#include "lcenginestub.h"
+#include "lcsessionstub.h"
+#include "lcvideoplayerstub.h"
+#include "lcuidefs.h"
+#include "qthighway_stub_helper.h"
+
+#include <QtTest/QtTest>
+#include <QMap>
+
+#include <hbmainwindow.h>
+#include <hbdialog.h>
+#include <hbprogressdialog.h>
+#include <hbmessagebox.h>
+#include <hbaction.h>
+#include <hblabel.h>
+#include <QSignalSpy>
+#include <hbview.h>
+
+#include <xqsettingsmanager.h>
+#include <xqsettingskey.h>
+#include <settingsinternalcrkeys.h>
+#include <telincallvolcntrlcrkeys.h>
+
+const char lcutMultimediaSharingEng[] = "MultimediaSharing";
+const char lcutVideotelephonyEng[] = "Videotelephony";
+
+const char lcutMultimediaSharingApp[] = "Multimedia Sharing";
+const char lcutVideotelephonyApp[] = "Videotelephony";
+
+#define LC_ENGINE( uiengine )\
+ (static_cast<CLcEngineStub*>( uiengine->d->mLiveCommsEngine ) )
+
+#define LC_SESSION( uiengine )\
+ (LC_ENGINE(uiengine)->iSession)
+
+void UT_LcUiEngine::initTestCase()
+{
+ lcutStub_LcEngine_reset();
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+
+}
+
+void UT_LcUiEngine::cleanupTestCase()
+{
+ lcutStub_LcEngine_reset();
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+}
+
+
+void UT_LcUiEngine::init()
+{
+ lcutStub_LcEngine_reset();
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ mEngine = new LcUiEngine( lcutMultimediaSharingEng,
+ lcutMultimediaSharingApp );
+ mInvitingNote = new HbProgressDialog();
+ mWaitingNote = new HbProgressDialog();
+ mAcceptQuery = new HbDialog();
+ mRecipientQuery = new HbDialog();
+ mShareOwnVideoQuery = new HbDialog();
+
+}
+
+void UT_LcUiEngine::cleanup()
+{
+ lcutStub_LcEngine_reset();
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ delete mEngine;
+ delete mInvitingNote;
+ delete mWaitingNote;
+ delete mAcceptQuery;
+ delete mRecipientQuery;
+ delete mShareOwnVideoQuery;
+}
+
+void UT_LcUiEngine::testConstructor()
+{
+ // "MuS plug-in" loaded
+ QVERIFY( mEngine );
+ QCOMPARE( mEngine->d->mViewLayout, Lc_IdleViewLayout );
+ QVERIFY( !mEngine->d->mInvitingNote );
+ QVERIFY( !mEngine->d->mWaitingNote );
+ QVERIFY( !mEngine->d->mAcceptQuery );
+ QVERIFY( !mEngine->d->mRecipientQuery );
+ QVERIFY( !mEngine->d->mCloseTimer );
+ QVERIFY( mEngine->d->mLiveCommsEngine );
+ QCOMPARE( mEngine->d->mEngineName, QByteArray( lcutMultimediaSharingEng ) );
+ QVERIFY( mEngine->d->recipient() != hbTrId("txt_vt_custom_unknown_number") );
+ QCOMPARE( mEngine->d->sessionTitle(), QString( lcutMultimediaSharingApp ) );
+ int engineWindowParam = 0;
+ QVERIFY( LC_SESSION( mEngine )->mParams.contains( engineWindowParam ) );
+ QVERIFY( mEngine->d->mActivityManager );
+ QVERIFY( !mEngine->d->mActivityManager->isActivitySimulationEnabled() );
+ QVERIFY( !mEngine->d->mShareOwnVideoQuery );
+
+ // "VT plug-in" loaded
+ lcutStub_LcEngine_reset();
+ lcutStub_LcSession_reset();
+ delete mEngine;
+ mEngine = 0;
+ mEngine = new LcUiEngine( lcutVideotelephonyEng,
+ lcutVideotelephonyApp );
+ QVERIFY( mEngine );
+ QCOMPARE( mEngine->d->mViewLayout, Lc_AllInOneViewLayout );
+ QVERIFY( !mEngine->d->mInvitingNote );
+ QVERIFY( !mEngine->d->mWaitingNote );
+ QVERIFY( !mEngine->d->mAcceptQuery );
+ QVERIFY( !mEngine->d->mRecipientQuery );
+ QVERIFY( !mEngine->d->mCloseTimer );
+ QVERIFY( mEngine->d->mLiveCommsEngine );
+ QCOMPARE( mEngine->d->mEngineName, QByteArray( lcutVideotelephonyEng ) );
+ QVERIFY( mEngine->d->recipient() != hbTrId("txt_vt_custom_unknown_number") );
+ QCOMPARE( mEngine->d->sessionTitle(), QString( lcutVideotelephonyApp ) );
+ QVERIFY( LC_SESSION( mEngine )->mParams.contains( engineWindowParam ) );
+ QVERIFY( !mEngine->d->mFullScreen );
+ QVERIFY( mEngine->d->mActivityManager );
+ QVERIFY( !mEngine->d->mActivityManager->isActivitySimulationEnabled() );
+ QVERIFY( !mEngine->d->mShareOwnVideoQuery );
+}
+
+void UT_LcUiEngine::testFeatureSupported()
+{
+ // Engine not loaded
+ CLcEngine* enginePtr = mEngine->d->mLiveCommsEngine;
+ mEngine->d->mLiveCommsEngine = 0;
+ QVERIFY( !mEngine->d->featureSupported( CLcEngine::ELcShowAcceptQuery ) );
+
+ // Engine loaded, feature not supported
+ mEngine->d->mLiveCommsEngine = enginePtr;
+ QVERIFY( !mEngine->d->featureSupported( CLcEngine::ELcShowAcceptQuery ) );
+
+ // Feature supported
+ lcutStub_LcEngine_setLcFeatureSupported( true );
+ QVERIFY( mEngine->d->featureSupported( CLcEngine::ELcShowAcceptQuery ) );
+}
+
+void UT_LcUiEngine::testEstablishSession()
+{
+ // Leave
+ lcutStub_LcEngine_setFailure( -1 );
+ QCOMPARE( mEngine->d->establishSession(), -1 );
+ QVERIFY( !mEngine->d->mCloseTimer );
+
+ // No leave
+ lcutStub_LcEngine_reset();
+ QCOMPARE( mEngine->d->establishSession(), 0 );
+ QVERIFY( mEngine->d->mCloseTimer );
+}
+
+void UT_LcUiEngine::testTerminateSession()
+{
+ // Leave
+ lcutStub_LcEngine_setFailure( -1 );
+ QCOMPARE( mEngine->d->terminateSession(), -1 );
+
+ // No leave
+ lcutStub_LcEngine_reset();
+ QCOMPARE( mEngine->d->establishSession(), 0 );
+}
+
+void UT_LcUiEngine::testSetWindowRect()
+{
+ TRect rect;
+ MLcVideoPlayer* player =
+ mEngine->d->mLiveCommsEngine->Session().LocalVideoPlayer();
+
+ // No player
+ QCOMPARE( mEngine->d->setWindowRect( 0, rect ), -1 );
+
+ // Leave
+ lcutStub_LcEngine_setFailure( -2 );
+ QCOMPARE( mEngine->d->setWindowRect( player, rect ), -2 );
+
+ // No leave
+ lcutStub_LcEngine_reset();
+ QCOMPARE( mEngine->d->setWindowRect( player, rect ), 0 );
+}
+
+void UT_LcUiEngine::testEnableWindow()
+{
+ MLcVideoPlayer* player =
+ mEngine->d->mLiveCommsEngine->Session().LocalVideoPlayer();
+
+ // No player
+ QCOMPARE( mEngine->d->enableWindow( 0, true ), -1 );
+
+ // Leave
+ lcutStub_LcEngine_setFailure( -2 );
+ QCOMPARE( mEngine->d->enableWindow( player, true ), -2 );
+
+ // No leave
+ lcutStub_LcEngine_reset();
+ QCOMPARE( mEngine->d->enableWindow( player, true ), 0 );
+}
+
+void UT_LcUiEngine::testPlay()
+{
+ MLcVideoPlayer* player =
+ mEngine->d->mLiveCommsEngine->Session().LocalVideoPlayer();
+
+ // No player
+ QCOMPARE( mEngine->d->play( 0 ), -1 );
+
+ // Leave
+ lcutStub_LcEngine_setFailure( -2 );
+ QCOMPARE( mEngine->d->play( player ), -2 );
+
+ // No leave
+ lcutStub_LcEngine_reset();
+ QVERIFY( !player->LcIsPlayingL() );
+ QCOMPARE( mEngine->d->play( player ), 0 );
+ QVERIFY( player->LcIsPlayingL() );
+}
+
+void UT_LcUiEngine::testPause()
+{
+ MLcVideoPlayer* player =
+ mEngine->d->mLiveCommsEngine->Session().LocalVideoPlayer();
+
+ // No player
+ QCOMPARE( mEngine->d->pause( 0 ), -1 );
+
+ // Leave
+ lcutStub_LcEngine_setFailure( -2 );
+ QCOMPARE( mEngine->d->pause( player ), -2 );
+
+ // No leave
+ lcutStub_LcEngine_reset();
+ QCOMPARE( mEngine->d->play( player ), 0 );
+ QVERIFY( player->LcIsPlayingL() );
+ QCOMPARE( mEngine->d->pause( player ), 0 );
+ QVERIFY( !player->LcIsPlayingL() );
+}
+
+void UT_LcUiEngine::testEnableSpeaker()
+{
+ // Leave
+ lcutStub_LcEngine_setFailure( -1 );
+ QCOMPARE( mEngine->d->enableSpeaker( true ), -1 );
+ QVERIFY( !mEngine->d->isSpeakerOn() );
+
+ // No leave
+ lcutStub_LcEngine_reset();
+ QCOMPARE( mEngine->d->enableSpeaker( true ), 0 );
+ QVERIFY( mEngine->d->isSpeakerOn() );
+}
+
+void UT_LcUiEngine::testMuteMic()
+{
+ // Leave
+ lcutStub_LcEngine_setFailure( -1 );
+ QCOMPARE( mEngine->d->muteMic( true ), -1 );
+ lcutStub_LcEngine_reset();
+ QVERIFY( !mEngine->d->isMuted() );
+
+ // No leave
+ QCOMPARE( mEngine->d->muteMic( true ), 0 );
+ QVERIFY( mEngine->d->isMuted() );
+}
+
+void UT_LcUiEngine::testStartLiveContent()
+{
+ // mInvitingNote not set
+ mInvitingNote->hide();
+ mEngine->d->startLiveContent();
+ QVERIFY( !mInvitingNote->isVisible() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+
+ // mInvitingNote set, but the engine does not support the feature
+ lcutStub_LcSession_reset();
+ mEngine->d->mInvitingNote = mInvitingNote;
+ mEngine->d->startLiveContent();
+ QVERIFY( !mInvitingNote->isVisible() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+
+ // mInvitingNote set and the engine supports the feature
+ lcutStub_LcSession_reset();
+ lcutStub_LcEngine_setLcFeatureSupported( true );
+ mEngine->d->startLiveContent();
+ QVERIFY( mInvitingNote->isVisible() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+}
+
+void UT_LcUiEngine::testStart()
+{
+ LC_SESSION( mEngine )->iState = MLcSession::EReceived;
+ mEngine->d->start();
+ QVERIFY( mEngine->d->mActivityManager->isActivitySimulationEnabled() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+
+ LC_SESSION( mEngine )->iState = MLcSession::EInitialized;
+ mEngine->d->start();
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+
+ mEngine->d->setUiComponents( mInvitingNote, mWaitingNote,
+ mAcceptQuery, mRecipientQuery,mShareOwnVideoQuery );
+ LC_SESSION( mEngine )->iState = MLcSession::EInitialized;
+ mEngine->d->start();
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+}
+
+void UT_LcUiEngine::testSetUiComponents()
+{
+ QVERIFY( !mEngine->d->mInvitingNote );
+ QVERIFY( !mEngine->d->mWaitingNote );
+ QVERIFY( !mEngine->d->mAcceptQuery );
+ QVERIFY( !mEngine->d->mRecipientQuery );
+
+ mEngine->d->setUiComponents(0,0,0,0,0);
+
+ QVERIFY( !mEngine->d->mInvitingNote );
+ QVERIFY( !mEngine->d->mWaitingNote );
+ QVERIFY( !mEngine->d->mAcceptQuery );
+ QVERIFY( !mEngine->d->mRecipientQuery );
+
+ mEngine->d->setUiComponents(mInvitingNote,mWaitingNote,mAcceptQuery,mRecipientQuery,mShareOwnVideoQuery);
+ QVERIFY( mEngine->d->mInvitingNote );
+ QVERIFY( mEngine->d->mWaitingNote );
+ QVERIFY( mEngine->d->mAcceptQuery );
+ QVERIFY( mEngine->d->mRecipientQuery );
+}
+
+void UT_LcUiEngine::testSessionStateChanged()
+{
+ LC_SESSION( mEngine )->iState = MLcSession::EUninitialized;
+ mEngine->d->StateChanged( *LC_SESSION( mEngine ) );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+
+ QVERIFY( mEngine->d->mSessionDurationTimerId == 0 );
+ LC_SESSION( mEngine )->iState = MLcSession::EOpen;
+ mEngine->d->StateChanged( *LC_SESSION( mEngine ) );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_EnableLcWindowL ) );
+ // Session duration is started when session opened
+ QVERIFY( mEngine->d->mSessionDurationTimerId != 0 );
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+
+ LC_SESSION( mEngine )->iState = MLcSession::EClosed;
+ QSignalSpy spy(mEngine, SIGNAL(stopped()));
+ mEngine->d->StateChanged( *LC_SESSION( mEngine ) );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+ QCOMPARE( spy.count(), 1 );
+
+ // mAcceptQuery not set
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ mAcceptQuery->hide();
+ LC_SESSION( mEngine )->iState = MLcSession::EReceived;
+ mEngine->d->StateChanged( *LC_SESSION( mEngine ) );
+ QVERIFY( !mAcceptQuery->isVisible() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+
+ // mAcceptQuery set, but the engine does not support the feature
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ LC_SESSION( mEngine )->iState = MLcSession::EReceived;
+ mEngine->d->mAcceptQuery = mAcceptQuery;
+ mEngine->d->StateChanged( *LC_SESSION( mEngine ) );
+ QVERIFY( !mAcceptQuery->isVisible() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+
+ // mAcceptQuery set and the engine supports the feature
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ LC_SESSION( mEngine )->iState = MLcSession::EReceived;
+ lcutStub_LcEngine_setLcFeatureSupported( true );
+ mEngine->d->StateChanged( *LC_SESSION( mEngine ) );
+ QVERIFY( mAcceptQuery->isVisible() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+
+ // MT call and sharing own video not allowed by default , popup query shown
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ mShareOwnVideoQuery->hide();
+ mEngine->d->setUiComponents(mInvitingNote,mWaitingNote,mAcceptQuery,mRecipientQuery,mShareOwnVideoQuery);
+ LC_SESSION( mEngine )->iState = MLcSession::EOpen;
+ lcutStub_LcEngine_setLcFeatureSupported( true );
+ mEngine->d->StateChanged( *LC_SESSION( mEngine ) );
+ QVERIFY( mEngine->d->mShareOwnVideoQuery );
+ QVERIFY( mEngine->d->mShareOwnVideoQuery->isVisible() );
+ CLcVideoPlayer* localPlayer = LC_SESSION( mEngine )->iLocalPlayer;
+ localPlayer = 0;
+
+ // MO call and sharing own video allowed by default , popup query not shown
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ mShareOwnVideoQuery->hide();
+ mEngine->d->setUiComponents(mInvitingNote,mWaitingNote,mAcceptQuery,mRecipientQuery,mShareOwnVideoQuery);
+ LC_SESSION( mEngine )->iState = MLcSession::EOpen;
+ lcutStub_LcEngine_setLcFeatureSupported( false );
+ mEngine->d->StateChanged( *LC_SESSION( mEngine ) );
+ QVERIFY( mEngine->d->mShareOwnVideoQuery );
+ QVERIFY( !mEngine->d->mShareOwnVideoQuery->isVisible() );
+
+}
+
+void UT_LcUiEngine::testPlayerStateChanged()
+{
+ CLcVideoPlayer* localPlayer = LC_SESSION( mEngine )->iLocalPlayer;
+ QVERIFY( localPlayer != NULL );
+ QSignalSpy localPlayerSignalSpy( mEngine, SIGNAL( localPlayerPlaying() ) );
+ QSignalSpy localPlayerSignalSpy2( mEngine, SIGNAL( localPlayerPreparing() ) );
+ QSignalSpy localPlayerSignalSpy3( mEngine, SIGNAL( localPlayerBuffering() ) );
+ QSignalSpy localPlayerSignalSpy4( mEngine, SIGNAL( localPlayerPaused() ) );
+ QSignalSpy localPlayerSignalSpy5( mEngine, SIGNAL( localPlayerUnavailable() ) );
+
+ CLcVideoPlayer* remotePlayer = LC_SESSION( mEngine )->iRemotePlayer;
+ QVERIFY( remotePlayer != NULL );
+ QSignalSpy remotePlayerSignalSpy( mEngine, SIGNAL( remotePlayerPlaying() ) );
+ QSignalSpy remotePlayerSignalSpy2( mEngine, SIGNAL( remotePlayerPreparing() ) );
+ QSignalSpy remotePlayerSignalSpy3( mEngine, SIGNAL( remotePlayerBuffering() ) );
+ QSignalSpy remotePlayerSignalSpy4( mEngine, SIGNAL( remotePlayerPaused() ) );
+ QSignalSpy remotePlayerSignalSpy5( mEngine, SIGNAL( remotePlayerUnavailable() ) );
+
+ // Use local player, player not playing
+ mEngine->d->StateChanged( *localPlayer );
+ QCOMPARE( localPlayerSignalSpy.count(), 0 );
+ QCOMPARE( localPlayerSignalSpy2.count(), 0 );
+ QCOMPARE( localPlayerSignalSpy3.count(), 0 );
+ QCOMPARE( localPlayerSignalSpy4.count(), 0 );
+ QCOMPARE( localPlayerSignalSpy5.count(), 0 );
+
+ // Use local player, player preparing
+ localPlayer->iState = MLcVideoPlayer::EPreparing;
+ mEngine->d->StateChanged( *localPlayer );
+ QCOMPARE( localPlayerSignalSpy2.count(), 1 );
+
+ // Use local player, player buffering
+ localPlayer->iState = MLcVideoPlayer::EBuffering;
+ mEngine->d->StateChanged( *localPlayer );
+ QCOMPARE( localPlayerSignalSpy3.count(), 1 );
+
+ // Use local player, player playing
+ localPlayer->iState = MLcVideoPlayer::EPlaying;
+ mEngine->d->StateChanged( *localPlayer );
+ QCOMPARE( localPlayerSignalSpy.count(), 1 );
+
+ // Use local player, player paused
+ localPlayer->iState = MLcVideoPlayer::EPaused;
+ mEngine->d->StateChanged( *localPlayer );
+ QCOMPARE( localPlayerSignalSpy4.count(), 1 );
+
+ // Use local player, player unavailable
+ localPlayer->iState = MLcVideoPlayer::EUnavailable;
+ mEngine->d->StateChanged( *localPlayer );
+ QCOMPARE( localPlayerSignalSpy5.count(), 1 );
+
+ // Use remote player, no waiting note
+ mEngine->d->StateChanged( *remotePlayer );
+ QVERIFY( mWaitingNote->isVisible() );
+ QCOMPARE( remotePlayerSignalSpy.count(), 0 );
+ QCOMPARE( remotePlayerSignalSpy2.count(), 0 );
+ QCOMPARE( remotePlayerSignalSpy3.count(), 0 );
+ QCOMPARE( remotePlayerSignalSpy4.count(), 0 );
+ QCOMPARE( remotePlayerSignalSpy5.count(), 0 );
+
+ // Use remote player, waiting note present, player not playing
+ mEngine->d->mWaitingNote = mWaitingNote;
+ mEngine->d->StateChanged( *remotePlayer );
+ QVERIFY( mWaitingNote->isVisible() );
+ QCOMPARE( remotePlayerSignalSpy.count(), 0 );
+ QCOMPARE( remotePlayerSignalSpy2.count(), 0 );
+ QCOMPARE( remotePlayerSignalSpy3.count(), 0 );
+ QCOMPARE( remotePlayerSignalSpy4.count(), 0 );
+ QCOMPARE( remotePlayerSignalSpy5.count(), 0 );
+
+ // Use remote player, player preparing
+ remotePlayer->iState = MLcVideoPlayer::EPreparing;
+ mEngine->d->StateChanged( *remotePlayer );
+ QVERIFY( mWaitingNote->isVisible() );
+ QCOMPARE( remotePlayerSignalSpy2.count(), 1 );
+
+ // Use remote player, player buffering
+ remotePlayer->iState = MLcVideoPlayer::EBuffering;
+ mEngine->d->StateChanged( *remotePlayer );
+ QVERIFY( mWaitingNote->isVisible() );
+ QCOMPARE( remotePlayerSignalSpy3.count(), 1 );
+
+ // Use remote player, waiting note present, player playing
+ remotePlayer->iState = MLcVideoPlayer::EPlaying;
+ mEngine->d->StateChanged( *remotePlayer );
+ QVERIFY( !mWaitingNote->isVisible() );
+ QCOMPARE( remotePlayerSignalSpy.count(), 1 );
+
+ // Use remote player, waiting note present, player playing
+ remotePlayer->iState = MLcVideoPlayer::EUnavailable;
+ mEngine->d->StateChanged( *remotePlayer );
+ QVERIFY( !mWaitingNote->isVisible() );
+ QCOMPARE( remotePlayerSignalSpy5.count(), 1 );
+
+ // Use remote player, player paused
+ remotePlayer->iState = MLcVideoPlayer::EPaused;
+ mEngine->d->StateChanged( *remotePlayer );
+ QVERIFY( !mWaitingNote->isVisible() );
+ QCOMPARE( remotePlayerSignalSpy4.count(), 1 );
+
+ QCOMPARE( localPlayerSignalSpy.count(), 1 );
+ QCOMPARE( localPlayerSignalSpy2.count(), 1 );
+ QCOMPARE( localPlayerSignalSpy3.count(), 1 );
+ QCOMPARE( localPlayerSignalSpy4.count(), 1 );
+ QCOMPARE( localPlayerSignalSpy5.count(), 1 );
+
+ QCOMPARE( remotePlayerSignalSpy.count(), 1 );
+ QCOMPARE( remotePlayerSignalSpy2.count(), 1 );
+ QCOMPARE( remotePlayerSignalSpy3.count(), 1 );
+ QCOMPARE( remotePlayerSignalSpy4.count(), 1 );
+ QCOMPARE( remotePlayerSignalSpy5.count(), 1 );
+
+}
+
+void UT_LcUiEngine::testSetContentAreas()
+{
+ QRectF shared;
+ QRectF received;
+
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer );
+ QVERIFY( LC_SESSION( mEngine )->iRemotePlayer );
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer->iRect.iTl.iX != 0);
+ QVERIFY( LC_SESSION( mEngine )->iRemotePlayer->iRect.iTl.iX != 0);
+
+ mEngine->d->setContentAreas( shared, received );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_SetLcWindowRectL ) );
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer->iRect.iTl.iX == 0);
+ QVERIFY( LC_SESSION( mEngine )->iRemotePlayer->iRect.iTl.iX == 0);
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+
+ mEngine->d->setContentAreas( shared, received );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+
+ shared.setHeight(100);
+ received.setHeight(100);
+
+ mEngine->d->setContentAreas( shared, received );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_SetLcWindowRectL ) );
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+
+ delete LC_SESSION( mEngine )->iLocalPlayer;
+ LC_SESSION( mEngine )->iLocalPlayer = 0;
+ delete LC_SESSION( mEngine )->iRemotePlayer;
+ LC_SESSION( mEngine )->iRemotePlayer = 0;
+
+ mEngine->d->setContentAreas( shared, received );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+}
+
+void UT_LcUiEngine::testSetOrientation()
+{
+ bool ok( false );
+
+ //1. setting landscape
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer );
+ QVERIFY( LC_SESSION( mEngine )->iRemotePlayer );
+
+ ok = mEngine->d->setOrientation( Qt::Horizontal );
+ QVERIFY( ok );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_SetLcWindowOrientationL ) );
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer->iOrientation == MLcWindow::ELandscape );
+ QVERIFY( LC_SESSION( mEngine )->iRemotePlayer->iOrientation == MLcWindow::ELandscape );
+
+ //2. setting layout failed
+ // Leave
+ lcutStub_LcEngine_setFailure( -1 );
+ lcutStub_LcPlayer_reset();
+ ok = mEngine->d->setOrientation( Qt::Horizontal );
+ QVERIFY( !ok );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+
+ //3. setting layout with no players
+ lcutStub_LcEngine_reset();
+ lcutStub_LcPlayer_reset();
+ delete LC_SESSION( mEngine )->iLocalPlayer;
+ LC_SESSION( mEngine )->iLocalPlayer = 0;
+ delete LC_SESSION( mEngine )->iRemotePlayer;
+ LC_SESSION( mEngine )->iRemotePlayer = 0;
+
+ ok = mEngine->d->setOrientation( Qt::Horizontal );
+ QVERIFY( ok );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+}
+
+
+void UT_LcUiEngine::testToggleMute()
+{
+ QSignalSpy mutedSpy(mEngine, SIGNAL(muted()));
+ QSignalSpy unmutedSpy(mEngine, SIGNAL(unmuted()));
+
+
+ // Leave from isMuted
+ mEngine->d->toggleMute();
+ QVERIFY( mEngine->d->isMuted() );
+ lcutStub_LcEngine_setFailure( -2 );
+ QVERIFY( !mEngine->d->isMuted() );
+
+ // No leave
+ lcutStub_LcEngine_reset();
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ mutedSpy.clear();
+ unmutedSpy.clear();
+
+ mEngine->d->toggleMute();
+ QVERIFY( !mEngine->d->isMuted() );
+ mutedSpy.clear();
+ unmutedSpy.clear();
+
+ mEngine->d->toggleMute();
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_MuteLcMicL ) );
+ QVERIFY( mEngine->d->isMuted() );
+ QCOMPARE(mutedSpy.count(), 1); // make sure the signal was emitted exactly one time
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ mutedSpy.clear();
+ unmutedSpy.clear();
+
+ mEngine->d->toggleMute();
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_MuteLcMicL ) );
+ QVERIFY( !mEngine->d->isMuted() );
+ QCOMPARE(unmutedSpy.count(), 1); // make sure the signal was emitted exactly one time
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ mutedSpy.clear();
+ unmutedSpy.clear();
+
+ // test async mute
+ lcutStub_LcPlayer_asyncCompletion( true );
+ mEngine->d->toggleMute();
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_MuteLcMicL ) );
+ QVERIFY( mEngine->d->isMuted() );
+ QVERIFY( mEngine->d->mBlocked );
+ QVERIFY( mEngine->d->mPendingAction == "muted" );
+
+ // nothing yet signaled as completion is pending
+ QCOMPARE(mutedSpy.count(), 0);
+ QCOMPARE(unmutedSpy.count(), 0);
+
+
+ lcutStub_LcPlayer_asyncCompletion( false );
+}
+
+void UT_LcUiEngine::testToggleSpeaker()
+{
+ QSignalSpy speakerEnabledSpy(mEngine, SIGNAL(speakerEnabled()));
+ QSignalSpy speakerDisabledSpy(mEngine, SIGNAL(speakerDisabled()));
+
+ QVERIFY( !mEngine->d->isSpeakerOn() );
+
+ mEngine->d->toggleSpeaker();
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_EnableLcLoudspeakerL ) );
+ QVERIFY( mEngine->d->isSpeakerOn() );
+ QCOMPARE(speakerEnabledSpy.count(), 1);
+
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ speakerEnabledSpy.clear();
+ speakerDisabledSpy.clear();
+
+ mEngine->d->toggleSpeaker();
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_EnableLcLoudspeakerL ) );
+ QVERIFY( !mEngine->d->isSpeakerOn() );
+ QCOMPARE(speakerDisabledSpy.count(), 1);
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ speakerEnabledSpy.clear();
+ speakerDisabledSpy.clear();
+
+ // test asynch speaker functionality.
+
+ lcutStub_LcPlayer_asyncCompletion( true );
+ mEngine->d->toggleSpeaker();
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_EnableLcLoudspeakerL ) );
+ QVERIFY( mEngine->d->isSpeakerOn() );
+ QVERIFY( mEngine->d->mBlocked );
+ QVERIFY( mEngine->d->mPendingAction == "speakerEnabled" );
+
+ // nothing yet signaled as completion is pending
+ QCOMPARE(speakerEnabledSpy.count(), 0);
+ QCOMPARE(speakerDisabledSpy.count(), 0);
+
+ lcutStub_LcPlayer_asyncCompletion( false );
+}
+
+void UT_LcUiEngine::testToggleDisableCamera()
+{
+ QSignalSpy enabledSpy(mEngine, SIGNAL(cameraEnabled()));
+ QSignalSpy disabledSpy(mEngine, SIGNAL(cameraDisabled()));
+
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer );
+ LC_SESSION( mEngine )->iLocalPlayer->iPlaying = ETrue;
+ LC_SESSION( mEngine )->iRemotePlayer->iState = MLcVideoPlayer::EPlaying;
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer->iPlaying );
+
+ mEngine->d->toggleDisableCamera();
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_LcPauseL ) );
+ QVERIFY( !LC_SESSION( mEngine )->iLocalPlayer->iPlaying );
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer->iState == MLcVideoPlayer::EPaused );
+ QCOMPARE(enabledSpy.count(), 0);
+ QCOMPARE(disabledSpy.count(), 1);
+
+ mEngine->d->toggleDisableCamera();
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_LcPlayL ) );
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer->iPlaying );
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer->iState == MLcVideoPlayer::EPlaying );
+ QCOMPARE(enabledSpy.count(), 1);
+ QCOMPARE(disabledSpy.count(), 1);
+}
+
+void UT_LcUiEngine::testToggleCamera()
+{
+ // Leave
+ lcutStub_LcEngine_setFailure( -1 );
+ mEngine->d->toggleCamera();
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+
+ // No leave
+ lcutStub_LcEngine_reset();
+ mEngine->d->toggleCamera();
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_ToggleLcCameraL ) );
+}
+
+void UT_LcUiEngine::testStartReceiving()
+{
+ // mAcceptQuery not set, mWaitingNote not set
+ mAcceptQuery->show();
+ mWaitingNote->hide();
+ mEngine->d->startReceiving();
+ QVERIFY( mAcceptQuery->isVisible() );
+ QVERIFY( !mWaitingNote->isVisible() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+
+ // mAcceptQuery set, mWaitingNote not set
+ lcutStub_LcSession_reset();
+ mEngine->d->mAcceptQuery = mAcceptQuery;
+ mEngine->d->startReceiving();
+ QVERIFY( !mAcceptQuery->isVisible() );
+ QVERIFY( !mWaitingNote->isVisible() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+
+ // mWaitingNote set, but the engine does not support the feature
+ lcutStub_LcSession_reset();
+ mEngine->d->mWaitingNote = mWaitingNote;
+ mEngine->d->startReceiving();
+ QVERIFY( !mAcceptQuery->isVisible() );
+ QVERIFY( !mWaitingNote->isVisible() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+
+ // mWaitingNote set and the engine supports the feature
+ lcutStub_LcSession_reset();
+ lcutStub_LcEngine_setLcFeatureSupported( true );
+ mEngine->d->startReceiving();
+ QVERIFY( !mAcceptQuery->isVisible() );
+ QVERIFY( mWaitingNote->isVisible() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_establishSession ) );
+}
+
+void UT_LcUiEngine::testStartPlayback()
+{
+ mEngine->d->startPlayback();
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_EnableLcWindowL,0 ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_EnableLcWindowL,1 ) );
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+
+ delete LC_SESSION( mEngine )->iLocalPlayer;
+ LC_SESSION( mEngine )->iLocalPlayer = 0;
+ mEngine->d->startPlayback();
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_EnableLcWindowL,0 ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall,1 ) );
+
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+
+ delete LC_SESSION( mEngine )->iRemotePlayer;
+ LC_SESSION( mEngine )->iRemotePlayer = 0;
+
+ mEngine->d->startPlayback();
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall,0 ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall,1 ) );
+}
+
+void UT_LcUiEngine::testStop()
+{
+ // Ensure that in MLcSession::EOpen state, "stopped" signal won't be emited
+ // Check also that session duration timer is stopped
+ LC_SESSION( mEngine )->iState = MLcSession::EOpen;
+ mEngine->d->startSessionDurationTimer();
+ QVERIFY( mEngine->d->mSessionDurationTimerId != 0 );
+ QSignalSpy spy(mEngine, SIGNAL(stopped()));
+ mEngine->d->mActivityManager->enableActivitySimulation(true);
+ mEngine->d->stop();
+ QVERIFY( !mEngine->d->mActivityManager->isActivitySimulationEnabled() );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_terminateSession ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+ QCOMPARE( spy.count(), 0 );
+ QVERIFY( mEngine->d->mSessionDurationTimerId == 0 );
+
+ // Ensure that MLcSession::EClosed, will cause emition of "stopped" signal
+ lcutStub_LcSession_reset();
+ lcutStub_LcPlayer_reset();
+ LC_SESSION( mEngine )->iState = MLcSession::EClosed;
+ mEngine->d->stop();
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_terminateSession ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+ QCOMPARE( spy.count(), 1 );
+}
+
+void UT_LcUiEngine::testSetViewLayout()
+{
+ QVERIFY( LC_SESSION( mEngine )->iLocalPlayer );
+ QVERIFY( LC_SESSION( mEngine )->iRemotePlayer );
+ QVERIFY( !LC_SESSION( mEngine )->iLocalPlayer->iPlaying );
+ QVERIFY( !LC_SESSION( mEngine )->iRemotePlayer->iPlaying );
+ LC_SESSION( mEngine )->iRemotePlayer->iState = MLcVideoPlayer::EPaused;
+ QVERIFY( !mEngine->d->usingVideoTelephoneEngine() );
+
+ mEngine->d->setViewLayout();
+ QVERIFY( mEngine->d->viewLayout() == Lc_IdleViewLayout );
+
+ LC_SESSION( mEngine )->iLocalPlayer->iPlaying = ETrue;
+
+ mEngine->d->setViewLayout();
+ QVERIFY( mEngine->d->viewLayout() == Lc_SharedViewLayout );
+
+ LC_SESSION( mEngine )->iLocalPlayer->iPlaying = EFalse;
+ LC_SESSION( mEngine )->iRemotePlayer->iState = MLcVideoPlayer::EPlaying;
+
+ mEngine->d->setViewLayout();
+ QVERIFY( mEngine->d->viewLayout() == Lc_ReceivedViewLayout );
+
+ LC_SESSION( mEngine )->iLocalPlayer->iPlaying = ETrue;
+ LC_SESSION( mEngine )->iRemotePlayer->iState = MLcVideoPlayer::EPlaying;
+
+ mEngine->d->setViewLayout();
+ QVERIFY( mEngine->d->viewLayout() == Lc_TwowayViewLayout );
+
+ delete LC_SESSION( mEngine )->iLocalPlayer;
+ LC_SESSION( mEngine )->iLocalPlayer = 0;
+
+ mEngine->d->setViewLayout();
+ QVERIFY( mEngine->d->viewLayout() == Lc_ReceivedOnlyViewLayout );
+
+ delete LC_SESSION( mEngine )->iRemotePlayer;
+ LC_SESSION( mEngine )->iRemotePlayer = 0;
+
+ mEngine->d->setViewLayout();
+ QVERIFY( mEngine->d->viewLayout() == Lc_IdleViewLayout );
+
+ mEngine->d->mEngineName = lcutVideotelephonyApp;
+ QVERIFY( mEngine->d->usingVideoTelephoneEngine() );
+
+ mEngine->d->setViewLayout();
+ QVERIFY( mEngine->d->viewLayout() == Lc_AllInOneViewLayout );
+}
+
+void UT_LcUiEngine::testHideNotes()
+{
+ // Notes not set
+ mEngine->d->hideNotes( true );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+ QVERIFY( mInvitingNote->isVisible() );
+ QVERIFY( mWaitingNote->isVisible() );
+ QVERIFY( mAcceptQuery->isVisible() );
+ QVERIFY( mRecipientQuery->isVisible() );
+
+ // Notes set, hide all
+ mEngine->d->setUiComponents( mInvitingNote, mWaitingNote,
+ mAcceptQuery, mRecipientQuery,mShareOwnVideoQuery );
+ mEngine->d->hideNotes( true );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+ QVERIFY( !mInvitingNote->isVisible() );
+ QVERIFY( !mWaitingNote->isVisible() );
+ QVERIFY( !mAcceptQuery->isVisible() );
+ QVERIFY( !mRecipientQuery->isVisible() );
+
+ // Notes not set, do not hide waiting note
+ mInvitingNote->show();
+ mWaitingNote->show();
+ mAcceptQuery->show();
+ mRecipientQuery->show();
+ mEngine->d->hideNotes( false );
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_NoCall ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+ QVERIFY( !mInvitingNote->isVisible() );
+ QVERIFY( mWaitingNote->isVisible() );
+ QVERIFY( !mAcceptQuery->isVisible() );
+ QVERIFY( !mRecipientQuery->isVisible() );
+}
+
+void UT_LcUiEngine::testZoom()
+{
+ LcControlValues zoomData;
+
+ // Leave
+ lcutStub_LcEngine_setFailure( -1 );
+ mEngine->d->zoom( 1 );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+ QCOMPARE( mEngine->d->zoomValues( zoomData ), -1 );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_NoCall ) );
+
+ // No leave
+ lcutStub_LcEngine_reset();
+ lcutStub_LcPlayer_reset();
+ QCOMPARE( mEngine->d->zoomValues( zoomData ), 0 );
+ mEngine->d->zoom( 2 );
+ mEngine->d->zoom( 1 );
+ mEngine->d->zoom( 3 );
+
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_SetLcZoomValueL, 0 ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_SetLcZoomValueL, 1 ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcPlayer_SetLcZoomValueL, 2 ) );
+ QVERIFY( lcutStub_LcPlayer_expectCall( lcutStub_LcSession_NoCall, 3 ) );
+}
+
+void UT_LcUiEngine::testBlockUi()
+{
+ QSignalSpy blockedSpy(mEngine, SIGNAL(blocked()));
+ QSignalSpy unblockedSpy(mEngine, SIGNAL(unblocked()));
+ QSignalSpy mutedSpy(mEngine, SIGNAL(muted()));
+
+ mEngine->d->BlockUi( ETrue );
+
+ QCOMPARE(blockedSpy.count(), 1);
+ QCOMPARE(unblockedSpy.count(), 0);
+ QCOMPARE(mutedSpy.count(), 0);
+
+ // no pending action once unblocked
+ blockedSpy.clear();
+
+ mEngine->d->BlockUi( EFalse );
+ QCOMPARE(blockedSpy.count(), 0);
+ QCOMPARE(unblockedSpy.count(), 1);
+ QCOMPARE(mutedSpy.count(), 0);
+
+
+ // pending action once unblocked
+ unblockedSpy.clear();
+ mEngine->d->setPendingAction( "muted" );
+ mEngine->d->BlockUi( EFalse );
+ QCOMPARE(blockedSpy.count(), 0);
+ QCOMPARE(unblockedSpy.count(), 1);
+ QCOMPARE(mutedSpy.count(), 1);
+ QVERIFY( mEngine->d->mPendingAction.isEmpty() );
+}
+
+void UT_LcUiEngine::testCloseTimer()
+{
+ // Try to cancel without timer
+ mEngine->d->cancelCloseTimer();
+ QVERIFY( !mEngine->d->mCloseTimer );
+
+ // Try to cancel without timer being active
+ mEngine->d->startCloseTimer();
+ QVERIFY( mEngine->d->mCloseTimer );
+ QVERIFY( mEngine->d->mCloseTimer->isActive() );
+ mEngine->d->mCloseTimer->stop();
+ QVERIFY( !mEngine->d->mCloseTimer->isActive() );
+ mEngine->d->cancelCloseTimer();
+ QVERIFY( mEngine->d->mCloseTimer );
+ QVERIFY( !mEngine->d->mCloseTimer->isActive() );
+
+ // Cancel an active timer
+ mEngine->d->startCloseTimer();
+ QVERIFY( mEngine->d->mCloseTimer );
+ QVERIFY( mEngine->d->mCloseTimer->isActive() );
+ mEngine->d->cancelCloseTimer();
+ QVERIFY( mEngine->d->mCloseTimer );
+ QVERIFY( !mEngine->d->mCloseTimer->isActive() );
+}
+
+
+void UT_LcUiEngine::testfullScreenMode()
+{
+ QVERIFY( !mEngine->d->fullScreenMode() );
+}
+
+
+void UT_LcUiEngine::testsetFullScreenMode()
+{
+ mEngine->d->setFullScreenMode(true);
+ QVERIFY( mEngine->d->fullScreenMode() );
+}
+
+void UT_LcUiEngine::testTimerEvent()
+{
+ mEngine->d->startSessionDurationTimer();
+ QSignalSpy spy(mEngine, SIGNAL(sessionDurationChanged(const QString &)));
+
+ QTimerEvent wrongTimerEvent(9999);
+ mEngine->d->timerEvent(&wrongTimerEvent);
+ QVERIFY( spy.count() == 0 );
+
+ QTimerEvent correctTimerEvent(mEngine->d->mSessionDurationTimerId);
+ mEngine->d->timerEvent(&correctTimerEvent);
+ QVERIFY( spy.count() == 1 );
+ QVERIFY( spy.at(0).count() == 1 ); // one arg which is duration as string
+ QTime currDuration = QTime::fromString(spy.at(0).at(0).toString());
+ QVERIFY( currDuration.isValid() );
+}
+
+void UT_LcUiEngine::testFillRemoteInfo()
+{
+ QSignalSpy recipientSpy(mEngine, SIGNAL(recipientChanged(const QString &)));
+ QSignalSpy numberSpy(mEngine, SIGNAL(phoneNumberChanged(const QString &)));
+
+ // test filling without signal emitting
+
+ // number and name changed
+ mEngine->d->mRecipient = "";
+ mEngine->d->mPhoneNumber = "";
+ mEngine->d->fillRemoteInfo( false );
+ QVERIFY( mEngine->d->mRecipient.length() > 0 );
+ QVERIFY( mEngine->d->mPhoneNumber.length() > 0 );
+ QVERIFY( recipientSpy.count() == 0 );
+ QVERIFY( numberSpy.count() == 0 );
+
+ // nothing changed
+ QString prevRecipient = mEngine->d->mRecipient;
+ QString prevNumber = mEngine->d->mPhoneNumber;
+ mEngine->d->fillRemoteInfo( false );
+ QVERIFY( mEngine->d->mRecipient == prevRecipient );
+ QVERIFY( mEngine->d->mPhoneNumber == prevNumber );
+ QVERIFY( recipientSpy.count() == 0 );
+ QVERIFY( numberSpy.count() == 0 );
+
+ // test filling with signal emitting
+
+ // number and name changed
+ mEngine->d->mRecipient = "";
+ mEngine->d->mPhoneNumber = "";
+ mEngine->d->fillRemoteInfo( true );
+ QVERIFY( mEngine->d->mRecipient == prevRecipient );
+ QVERIFY( mEngine->d->mPhoneNumber == prevNumber );
+ QVERIFY( recipientSpy.count() == 1 );
+ QVERIFY( numberSpy.count() == 1 );
+
+ // state is opened and name not found and no number, unknown name is used
+ LC_SESSION( mEngine )->iState = MLcSession::EOpen;
+ delete LC_SESSION( mEngine )->iRemoteDisplayName;
+ LC_SESSION( mEngine )->iRemoteDisplayName = NULL;
+ LC_SESSION( mEngine )->iRemoteDisplayName = KNullDesC().AllocL();
+ delete LC_SESSION( mEngine )->iRemoteDetails;
+ LC_SESSION( mEngine )->iRemoteDetails = NULL;
+ LC_SESSION( mEngine )->iRemoteDetails = KNullDesC().AllocL();
+ mEngine->d->mPhoneNumber = "";
+ mEngine->d->fillRemoteInfo( true );
+ QVERIFY( mEngine->d->mRecipient == hbTrId("txt_vt_custom_unknown_number") );
+ QVERIFY( mEngine->d->mPhoneNumber.isEmpty() );
+ QVERIFY( recipientSpy.count() == 2 );
+ QVERIFY( numberSpy.count() == 1 );
+
+ // name not found but number exists, number is used at opened state as recipient
+ mEngine->d->mRecipient = "";
+ mEngine->d->mPhoneNumber = "";
+ delete LC_SESSION( mEngine )->iRemoteDetails;
+ LC_SESSION( mEngine )->iRemoteDetails = NULL;
+ LC_SESSION( mEngine )->iRemoteDetails = _L("123445").AllocL();
+ mEngine->d->fillRemoteInfo( true );
+ QVERIFY( mEngine->d->mRecipient == "123445" );
+ QVERIFY( mEngine->d->mPhoneNumber == "123445" );
+ QVERIFY( recipientSpy.count() == 3 );
+ QVERIFY( numberSpy.count() == 2 );
+
+}
+
+void UT_LcUiEngine::testUpdateSession()
+{
+ mEngine->d->updateSession();
+ QVERIFY( lcutStub_LcSession_expectCall( lcutStub_LcSession_updateSession ) );
+}
+
+void UT_LcUiEngine::testIsLocalPlayerPlaying()
+{
+ // Not playing
+ QVERIFY( !mEngine->d->isLocalPlayerPlaying() );
+
+ // Playing
+ LC_SESSION( mEngine )->iLocalPlayer->LcPlayL();
+ QVERIFY( mEngine->d->isLocalPlayerPlaying() );
+}
+
+void UT_LcUiEngine::testIsRemotePlayerPlaying()
+{
+ // Not playing
+ QVERIFY( !mEngine->d->isRemotePlayerPlaying() );
+
+ // Playing
+ LC_SESSION( mEngine )->iRemotePlayer->LcPlayL();
+ QVERIFY( mEngine->d->isRemotePlayerPlaying() );
+}
+
+void UT_LcUiEngine::testMinimized()
+{
+ mEngine->minimize();
+ QVERIFY( mEngine->isMinimized() );
+ mEngine->minimize(); // Doing nothing
+ QVERIFY( mEngine->isMinimized() );
+}
+
+void UT_LcUiEngine::testMaximized()
+{
+ mEngine->maximize();
+ QVERIFY(mEngine->isMaximized() );
+ mEngine->maximize(); // Doing nothing
+ QVERIFY(mEngine->isMaximized() );
+}
+
+void UT_LcUiEngine::testIsMinimized()
+{
+ mEngine->minimize();
+ QVERIFY( mEngine->isMinimized() );
+}
+
+void UT_LcUiEngine::testHandleForegroundStatus()
+{
+ QtHighwayStubHelper::reset();
+
+ // First time to foreground, engine is not set to foreground until viewReady signal
+ HbView currView;
+ mEngine->d->setCurrentView(&currView);
+ QVERIFY( mEngine->d->mFirstForegroundSwitch );
+ QVERIFY( !mEngine->d->mActivityManager->isActivitySimulationEnabled() );
+
+ mEngine->d->HandleForegroundStatus(ETrue);
+ QVERIFY( mEngine->d->mActivityManager->isActivitySimulationEnabled() );
+ QVERIFY( !mEngine->d->session().IsBackgroundStartup() ); // Stub returns fg status in this
+ QVERIFY( !QtHighwayStubHelper::isAtBg() );
+ QVERIFY( !mEngine->d->mFirstForegroundSwitch );
+
+ //Simulate viewReady signal happens, funciton will be called again.
+ mEngine->d->HandleForegroundStatus(ETrue);
+ QVERIFY( mEngine->d->session().IsBackgroundStartup() ); // Stub returns fg status in this
+ QVERIFY( !mEngine->d->mFirstForegroundSwitch );
+
+ // Bg switch
+ QtHighwayStubHelper::reset();
+ QVERIFY( mEngine->d->mActivityManager->isActivitySimulationEnabled() );
+ mEngine->d->HandleForegroundStatus(EFalse);
+ QVERIFY( !mEngine->d->mActivityManager->isActivitySimulationEnabled() );
+ QVERIFY( QtHighwayStubHelper::isAtBg() );
+ QVERIFY( !mEngine->d->session().IsBackgroundStartup() ); // Stub returns fg status in this
+
+}
+
+
+void UT_LcUiEngine::testSendDialTone()
+{
+ //Dumy test: Ensure Conversion does not cause any problem.
+ QVERIFY( mEngine->d->SendDialTone('3') );
+}
+
+
+void UT_LcUiEngine::testShareVideoIsAllowedShownAutomatically()
+{
+ lcutStub_LcEngine_setLcFeatureSupported( false );
+ mShareOwnVideoQuery->hide();
+ mEngine->d->setUiComponents(mInvitingNote,mWaitingNote,mAcceptQuery,mRecipientQuery,mShareOwnVideoQuery);
+ mEngine->d->showSendVideoQueryWhenNecessary();
+ QVERIFY(mEngine->d->mShareOwnVideoQuery && !mEngine->d->mShareOwnVideoQuery->isVisible());
+}
+
+
+void UT_LcUiEngine::testShareVideoIsNotAllowedShown()
+{
+ lcutStub_LcEngine_setLcFeatureSupported( false );
+ mShareOwnVideoQuery->hide();
+ mEngine->d->setUiComponents(mInvitingNote,mWaitingNote,mAcceptQuery,mRecipientQuery,mShareOwnVideoQuery);
+ mEngine->d->showSendVideoQueryWhenNecessary();
+ QVERIFY(mEngine->d->mShareOwnVideoQuery && !mEngine->d->mShareOwnVideoQuery->isVisible());
+}
+
+
+void UT_LcUiEngine::testShareVideoPermissionAskedAlways()
+{
+ lcutStub_LcEngine_setLcFeatureSupported( true );
+ mShareOwnVideoQuery->hide();
+ mEngine->d->setUiComponents(mInvitingNote,mWaitingNote,mAcceptQuery,mRecipientQuery,mShareOwnVideoQuery);
+ mEngine->d->showSendVideoQueryWhenNecessary();
+ QVERIFY(mEngine->d->mShareOwnVideoQuery && mEngine->d->mShareOwnVideoQuery->isVisible());
+}
+
+
+void UT_LcUiEngine::testVolumeLevelChanged()
+{
+ // Subscribe to the events.
+ mEngine->d->subscribeVolumeEvents();
+
+ QSignalSpy spy(mEngine, SIGNAL(volumeChanged(int)));
+ QCOMPARE( spy.count(), 0 );
+
+
+ //Test1: Known Key Event handled
+ QVariant value;
+ value.setValue(5);
+
+ XQSettingsKey validKey1(XQSettingsKey::TargetCentralRepository,
+ KCRUidInCallVolume.iUid, KTelIncallEarVolume);
+ mEngine->d->volumeLevelChanged(validKey1, value);
+ QCOMPARE( spy.count(), 1 );
+ spy.clear();
+
+
+ //Test2: Known Key Event-2 handled
+ XQSettingsKey validKey2(XQSettingsKey::TargetCentralRepository,
+ KCRUidInCallVolume.iUid,KTelIncallLoudspeakerVolume);
+ mEngine->d->volumeLevelChanged(validKey2, value);
+ QCOMPARE( spy.count(), 1 );
+ spy.clear();
+
+ //Test3: Unknow Key Event Ignored.
+ XQSettingsKey unKnownKey(XQSettingsKey::TargetCentralRepository,
+ 787,899);
+ mEngine->d->volumeLevelChanged(unKnownKey, value);
+ QCOMPARE( spy.count(), 0 );
+
+ // Un-Subscribe Events.
+ mEngine->d->unSubscribeVolumeEvents();
+}
+
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/ut_lcuieng/ut_lcuieng.pro Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,65 @@
+######################################################################
+# Automatically generated by qmake (2.01a) Fri May 22 10:46:25 2009
+######################################################################
+
+TEMPLATE = app
+TARGET =
+
+QT += testlib xml
+CONFIG += qtestlib
+
+MUS_DIR = ../../../../..
+LCUI_DIR = ../../../lcui
+LCUIENGINE_DIR = ../..
+
+DEPENDPATH += .
+
+INCLUDEPATH += .
+INCLUDEPATH += hbstubs
+INCLUDEPATH += /epoc32/include
+INCLUDEPATH += /epoc32/include/platform/app
+INCLUDEPATH += /epoc32/include/ecom
+INCLUDEPATH += inc
+INCLUDEPATH += $$LCUIENGINE_DIR
+INCLUDEPATH += $$LCUIENGINE_DIR/inc
+INCLUDEPATH += $$LCUI_DIR/mmshlcuiengine/tsrc/lcstub/inc
+INCLUDEPATH += $$LCUI_DIR/inc
+INCLUDEPATH += $$LCUI_DIR/../inc
+INCLUDEPATH += lcstub/inc
+INCLUDEPATH += $$MUS_DIR/tsrc/qtestutils/inc
+INCLUDEPATH += $$MUS_DIR/inc
+
+CONFIG += hb
+
+DEFINES += QT_NO_DEBUG_OUTPUT
+
+# Input
+HEADERS += inc/ut_lcuiengine.h
+HEADERS += $$LCUIENGINE_DIR/inc/lcuiengine.h
+
+SOURCES += src/main.cpp
+SOURCES += src/ut_lcuiengine.cpp
+SOURCES += $$LCUIENGINE_DIR/src/lcuiengine.cpp
+SOURCES += hbstubs/hbstubs.cpp
+SOURCES += hbstubs/qthighway_stub.cpp
+SOURCES += lcstub/src/lcsessionstub.cpp
+SOURCES += lcstub/src/lcvideoplayerstub.cpp
+SOURCES += lcstub/src/lcenginestub.cpp
+SOURCES += $$MUS_DIR/tsrc/qtestutils/src/testresultxmlparser.cpp
+
+symbian: {
+ INCLUDEPATH += $$LCUIENGINE_DIR/inc
+ HEADERS += inc/ut_lcactivitymanager.h
+ HEADERS += $$LCUIENGINE_DIR/inc/lcuiengine_p.h
+ HEADERS += $$LCUIENGINE_DIR/inc/lcactivitymanager.h
+ SOURCES += src/ut_lcactivitymanager.cpp
+ SOURCES += $$LCUIENGINE_DIR/src/lcuiengine_p.cpp
+ SOURCES += $$LCUIENGINE_DIR/src/lcactivitymanager.cpp
+ SOURCES += lcstub/src/centralrepository_stub.cpp
+
+ TARGET.UID2 = 0x100039CE
+ TARGET.UID3 = 0xEfa329b2
+ TARGET.CAPABILITY = ALL -TCB
+ LIBS += -lecom -lflogger -lws32 -lbafl -lxqservice -lxqserviceutil -lcone -lxqsettingsmanager
+ TARGET.EPOCALLOWDLLDATA = 1
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/win32/launch.bat Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,17 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+musui.exe -1 -2 -3
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/win32/lcconfig.xml Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<setup layout="5" sessionname="HomerSimpson" phoneno="+358504867872" remote="sip:marchsimpson@springfiled.com"></setup>
+<timer duration="2" >in seconds</timer>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/win32/lcconfiguration.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "LcConfiguration.h"
+#include <stdio.h>
+
+// File name
+const char fileName[] = "c:\\data\\lcconfig.xml";
+
+// XML configuration elements
+const char setupElement[] = "setup";
+const char timerElement[] = "timer";
+
+// XML configuration attriputes
+const char layoutAttr[] = "layout";
+const char sessionNameAttr[] = "sessionname";
+const char phoneNoAttr[] = "phoneno";
+const char remoteAttr[] = "remote";
+const char durationAttr[] = "duration";
+
+
+// -----------------------------------------------------------------------------
+// LcConfiguration::LcConfiguration
+// -----------------------------------------------------------------------------
+//
+LcConfiguration::LcConfiguration()
+ :mLayout(5),
+ mSessionTitle(QString::fromAscii("Homer Simpson")),
+ mRecipient(QString::fromAscii("sip:march@simpsons.com")),
+ mPhoneNumber(QString::fromAscii("+35850898282")),
+ mTimerDuration(4*1000)
+{
+}
+
+// -----------------------------------------------------------------------------
+// LcConfiguration::LcConfiguration
+// -----------------------------------------------------------------------------
+//
+LcConfiguration::~LcConfiguration()
+{
+}
+
+// -----------------------------------------------------------------------------
+// TestResultXmlParser::parse
+// -----------------------------------------------------------------------------
+//
+int LcConfiguration::parse()
+{
+ QFile file(fileName);
+ QXmlInputSource inputSource(&file);
+ QXmlSimpleReader reader;
+ reader.setContentHandler(this);
+ return reader.parse(inputSource);
+}
+
+// -----------------------------------------------------------------------------
+// LcConfiguration::startElement
+// -----------------------------------------------------------------------------
+//
+bool LcConfiguration::startElement(
+ const QString& /*namespaceURI*/,
+ const QString& /*localName*/,
+ const QString& qName,
+ const QXmlAttributes& atts)
+{
+ if( qName == setupElement) {
+ mLayout = atts.value(layoutAttr).toInt();
+ mSessionTitle = atts.value(sessionNameAttr);
+ mRecipient = atts.value(phoneNoAttr);
+ mPhoneNumber = atts.value(durationAttr);
+ }
+ else if (qName == timerElement) {
+ mTimerDuration = atts.value(durationAttr).toInt()*1000;// ms to s
+ }
+ return true;
+}
+
+// End of File.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/win32/lcconfiguration.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2009 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 LCCONFIGURATION_H
+#define LCCONFIGURATION_H
+
+#include <QXmlDefaultHandler>
+
+
+class LcConfiguration : public QXmlDefaultHandler
+{
+public: // Constructors and destructor
+ LcConfiguration();
+ ~LcConfiguration();
+
+public:
+ int parse();
+
+protected: // From QXmlContentHandler
+ bool startElement(
+ const QString& namespaceURI,
+ const QString& localName,
+ const QString& qName,
+ const QXmlAttributes& atts);
+
+public: // Data
+ int mLayout;
+ QString mSessionTitle;
+ QString mRecipient;
+ QString mPhoneNumber;
+ int mTimerDuration;
+};
+
+
+#endif // LCCONFIGURATION_H
+
+
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/win32/lcuiengine_p.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,480 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+//USER
+#include "lcuiengine_p.h"
+#include "lcuidefs.h"
+#include "lclogger.h"
+#include "lcuienginesimulator.h"
+
+//SYSTEM
+#include <QTimer>
+#include <hbdialog.h>
+#include <hblineedit.h>
+#include <hbinstance.h>
+
+
+#define LC_VTPLUGIN_NAME "Videotelephony";
+
+const char localMovieName[] = "c:\\data\\local.3gp";
+const char local2MovieName[] = "c:\\data\\local2.mpeg";
+const char remoteMovieName[] = "c:\\data\\remote.3gp";
+const char mPlayer[] = "c:\\data\\mplayer.exe";
+const char msPaint[] = "mspaint";
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::LcUiEnginePrivate
+// -----------------------------------------------------------------------------
+//
+LcUiEnginePrivate::LcUiEnginePrivate( LcUiEngine& uiEngine,
+ const QString& engineName,
+ const QString& applicationDisplayName)
+ :mUiEngine( uiEngine )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::LcUiEnginePrivate()" )
+ mSimulator = new LcUiEngineSimulator( *this );
+ mViewLayout = (LcViewLayoutHint)mSimulator->layout();
+ mSessionTitle = mSimulator->sessionTitle();
+ mRecipient = mSimulator->remoteAddress();
+ mPhoneNumber = mSimulator->phoneNo();
+ mLocalPlayerProcess = new QProcess();
+ mRemotePlayerProcess = new QProcess();
+ mProgram = QString::fromAscii(mPlayer);
+ mProgramImage = QString::fromAscii(msPaint);
+ mLocalMovieName = QString::fromAscii(localMovieName);
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::LcUiEnginePrivate()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::~LcUiEnginePrivate
+// -----------------------------------------------------------------------------
+//
+LcUiEnginePrivate::~LcUiEnginePrivate()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::~LcUiEnginePrivate()" )
+ delete mSimulator;
+ delete mLocalPlayerProcess;
+ delete mRemotePlayerProcess;
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::~LcUiEnginePrivate()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::zoom
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::zoom( int value )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::zoom()" )
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::zoom()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::stop
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::stop()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::stop()" )
+ mSimulator->stop();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::stop()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::start
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::start()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::start()" )
+ mSimulator->start();
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::start()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::sessionTitle
+// -----------------------------------------------------------------------------
+//
+const QString& LcUiEnginePrivate::sessionTitle() const
+{
+ return mSessionTitle;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::recipient
+// -----------------------------------------------------------------------------
+//
+const QString& LcUiEnginePrivate::recipient() const
+{
+ return mRecipient;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::phoneNumber
+// -----------------------------------------------------------------------------
+//
+const QString& LcUiEnginePrivate::phoneNumber() const
+{
+ return mPhoneNumber;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::viewLayout
+// -----------------------------------------------------------------------------
+//
+LcViewLayoutHint LcUiEnginePrivate::viewLayout() const
+{
+ return mViewLayout;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setContentAreas
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::setContentAreas( const QRectF& sharedContent,
+ const QRectF& receivedContent )
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::setContentAreas()" )
+ LC_QDEBUG_2( "livecomms [UI] shared window: ", sharedContent )
+ LC_QDEBUG_2( "livecomms [UI] received window: ", receivedContent )
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::setContentAreas()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setOrientation
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::setOrientation( Qt::Orientation orientation )
+{
+ bool ok( false );
+ return ok;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setUiComponents
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::setUiComponents(
+ HbDialog* invitingNote,
+ HbDialog* waitingNote,
+ HbDialog* acceptQuery,
+ HbDialog* recipientQuery )
+{
+ mInvitingNote = invitingNote;
+ mWaitingNote = waitingNote;
+ mAcceptQuery = acceptQuery;
+ mRecipientQuery = recipientQuery;
+
+
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::toggleMute
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::toggleMute()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::toggleMute()" )
+ if( mMuteState ){
+ unmuted();
+ }else{
+ muted();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::toggleMute()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isMuted
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::isMuted() const
+{
+ return mMuteState;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::toggleSpeaker
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::toggleSpeaker()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::toggleSpeaker()" )
+ if ( mSpeakerState ){
+ speakerDisabled();
+ }else{
+ speakerEnabled();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::toggleSpeaker()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isSpeakerOn
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::isSpeakerOn() const
+{
+ return mSpeakerState;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::zoomValues
+// -----------------------------------------------------------------------------
+//
+int LcUiEnginePrivate::zoomValues( LcControlValues& values ) const
+{
+ int err( 1 );
+ return err;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::toggleEnableCamera
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::toggleDisableCamera()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::toggleDisableCamera()" )
+ if( mPlayerStateLocal == EPlaying ){
+ localPlayerPaused();
+ cameraDisabled();
+ }else if( mPlayerStateLocal == EPaused){
+ localPlayerPlaying();
+ cameraEnabled();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::toggleDisableCamera()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setCameraMain
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::setMainCamera(const bool aMainCamera)
+{
+ LC_QDEBUG_2( "livecomms [UI] -> LcUiEnginePrivate::setCameraMain()", aMainCamera )
+ if(aMainCamera){
+ cameraChangedToMain();
+ }else{
+ cameraChangedToSecondary();
+ }
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::setCameraMain()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::cameraIndex
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::mainCamera() const
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::mainCamera()" )
+ LC_QDEBUG_2( "livecomms [UI] <- LcUiEnginePrivate::mainCamera()", mMainCamera )
+ return mMainCamera;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::toggleCamera
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::toggleCamera()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::toggleCamera()" )
+ if( mMainCamera ){
+ cameraChangedToSecondary();
+ }else{
+ cameraChangedToMain();
+ }
+ if( mPlayerStateLocal==EPlaying ){
+ localPlayerPaused();
+ mSimulator->setSimulation(2);
+ mSimulator->start();
+ }
+ LC_QDEBUG_2( "livecomms [UI] <- LcUiEnginePrivate::toggleCamera(), mainCamera:", mMainCamera )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::fullScreenMode
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::fullScreenMode()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::fullScreenMode()" )
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::fullScreenMode()" )
+ return mFullScreen;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::setFullScreenMode
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::setFullScreenMode(bool aMode)
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::setFullScreenMode()" )
+ mFullScreen = aMode;
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::setFullScreenMode()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::updateSession
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::updateSession()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEnginePrivate::updateSession()" )
+
+ LC_QDEBUG( "livecomms [UI] <- LcUiEnginePrivate::updateSession()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isLocalPlayerPlaying
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::isLocalPlayerPlaying() const
+{
+ return ( mPlayerStateLocal == EPlaying )? true : false;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isRemotePlayerPlaying
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::isRemotePlayerPlaying() const
+{
+ return ( mSimulatorRemote == EPlaying )? true : false;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::localPlayerPlaying
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::localPlayerPlaying()
+{
+ QStringList args;
+ args << mLocalMovieName;
+ mLocalPlayerProcess->start(mProgram,args);
+ mPlayerStateLocal=EPlaying;
+ emit mUiEngine.localPlayerPlaying();
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::remotePlayerPlaying
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::remotePlayerPlaying()
+{
+ QStringList args;
+ args << QString::fromAscii(remoteMovieName);
+ mRemotePlayerProcess->start(mProgram,args);
+ mSimulatorRemote=EPlaying;
+ emit mUiEngine.remotePlayerPlaying();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::localPlayerPaused
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::localPlayerPaused()
+{
+ mLocalPlayerProcess->close();
+ mPlayerStateLocal=EPaused;
+ emit mUiEngine.localPlayerPaused();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::remotePlayerPaused
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::remotePlayerPaused()
+{
+ mRemotePlayerProcess->close();
+ mSimulatorRemote=EPaused;
+ emit mUiEngine.remotePlayerPaused();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::cameraChangedToSecondary
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::cameraChangedToSecondary()
+{
+ mLocalMovieName= QString::fromAscii(local2MovieName);
+ mMainCamera=false;
+ emit mUiEngine.cameraChangedToSecondary();
+}
+
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::cameraChangedToSecondary
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::cameraChangedToMain()
+{
+ mLocalMovieName= QString::fromAscii(localMovieName);
+ mMainCamera=true;
+ emit mUiEngine.cameraChangedToMain();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::isMinimized
+// -----------------------------------------------------------------------------
+//
+bool LcUiEnginePrivate::isMinimized() const
+{
+ return (QApplication::activeWindow()->windowState()==Qt::WindowMinimized);
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::minimize
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::minimize()
+{
+ QApplication::activeWindow()->setWindowState(Qt::WindowMinimized);
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::maximize
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::maximize()
+{
+ QApplication::activeWindow()->setWindowState(Qt::WindowMaximized);
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::shareImage
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::shareImage(const QString& fileName)
+{
+ localPlayerPaused();
+ QStringList args;
+ args << fileName;
+ mLocalPlayerProcess->start(mProgramImage,args);
+ mPlayerStateLocal=EPlaying;
+ emit mUiEngine.localPlayerPlaying();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEnginePrivate::shareCamera
+// -----------------------------------------------------------------------------
+//
+void LcUiEnginePrivate::shareCamera()
+{
+ localPlayerPaused();
+ localPlayerPlaying();
+}
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/win32/lcuiengine_p.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,180 @@
+/*
+* Copyright (c) 2009 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 LCUIENGINEPRIVATE_H
+#define LCUIENGINEPRIVATE_H
+
+//SYSTEM
+#include <QObject>
+#include <QString>
+#include <QTime>
+#include <QProcess>
+#include <lcuiengine.h>
+
+class QTimer;
+class QRectF;
+class HbDialog;
+class LcUiEngine;
+class LcUiEngineSimulator;
+
+enum simulationState {
+ ENone,
+ EPreparing,
+ EBuffering,
+ EPlaying,
+ EPaused,
+ EStopped,
+ EUnavailable
+};
+
+/*
+ * Live Comms UI Engine
+ */
+class LcUiEnginePrivate
+
+{
+
+public:
+
+ LcUiEnginePrivate ( LcUiEngine& uiEngine,
+ const QString &engineName,
+ const QString &applicationDisplayName );
+ ~LcUiEnginePrivate ();
+
+public :
+
+ void zoom( int value );
+ void stop();
+
+private:
+
+ //signaled when engine is stopped
+ void stopped(){ emit mUiEngine.stopped();};
+ //signaled when layout is changed
+ void layoutChanged(){ emit mUiEngine.layoutChanged();};
+ //signaled when camera changes to main
+ void cameraChangedToMain();
+ //signaled when camera changes to secondary
+ void cameraChangedToSecondary();
+ //signaled when mic is muted
+ void muted(){ mMuteState = true; emit mUiEngine.muted();};
+ //signaled when mic is unmuted
+ void unmuted(){ mMuteState = false; emit mUiEngine.unmuted();};
+ //signaled when speaker is enabled
+ void speakerEnabled(){ mSpeakerState = true; emit mUiEngine.speakerEnabled();};
+ //signaled when speaker is disabled
+ void speakerDisabled(){ mSpeakerState = false; emit mUiEngine.speakerDisabled();};
+ //signaled when camera is disabled
+ void cameraDisabled(){ mPlayerStateLocal = EPaused; emit mUiEngine.cameraDisabled();};
+ //signaled when camera is enabled
+ void cameraEnabled(){ mPlayerStateLocal = EPlaying; emit mUiEngine.cameraEnabled();};
+ //signaled when engine is blocked,
+ //no calls expected until signaled unblocked
+ void blocked(){ emit mUiEngine.blocked();};
+ //signaled when engine is free
+ void unblocked(){ emit mUiEngine.unblocked();};
+ //signaled continuously while session is up and running
+ //carries current session duration
+ void sessionDurationChanged(const QString &duration){ emit mUiEngine.sessionDurationChanged(duration);};
+ void recipientChanged(const QString &recipient){ emit mUiEngine.recipientChanged(recipient);};
+ void phoneNumberChanged(const QString &number){ emit mUiEngine.phoneNumberChanged(number);};
+ //signaled when player state changed
+ void localPlayerPlaying();
+ void remotePlayerPlaying();
+ void localPlayerPreparing(){ mPlayerStateLocal=EPreparing;emit mUiEngine.localPlayerPreparing();};
+ void remotePlayerPreparing(){ mSimulatorRemote=EPreparing;emit mUiEngine.remotePlayerPreparing();};
+ void localPlayerBuffering(){ mPlayerStateLocal=EBuffering;emit mUiEngine.localPlayerBuffering();};
+ void remotePlayerBuffering(){ mSimulatorRemote=EBuffering;emit mUiEngine.remotePlayerBuffering();};
+ void localPlayerPaused();
+ void remotePlayerPaused();
+ void localPlayerUnavailable(){ mPlayerStateLocal=EUnavailable;emit mUiEngine.localPlayerUnavailable();};
+ void remotePlayerUnavailable(){ mSimulatorRemote=EUnavailable;emit mUiEngine.remotePlayerUnavailable();};
+
+public:
+
+ void start();
+ const QString& sessionTitle() const;
+ const QString& recipient() const;
+ const QString& phoneNumber() const;
+ LcViewLayoutHint viewLayout() const;
+ void setContentAreas( const QRectF& sharedContent,
+ const QRectF& receivedContent );
+ bool setOrientation( Qt::Orientation orientation );
+ void setUiComponents(HbDialog* invitingNote,
+ HbDialog* waitingNote,
+ HbDialog* acceptQuery,
+ HbDialog* recipientQuery);
+ void toggleMute();
+ bool isMuted() const;
+ void toggleSpeaker();
+ bool isSpeakerOn() const;
+ int zoomValues( LcControlValues& values ) const;
+ void toggleDisableCamera();
+ void setMainCamera(const bool aMainCamera);
+ bool mainCamera() const;
+ void toggleCamera();
+ bool fullScreenMode();
+ void setFullScreenMode(bool aMode);
+ void updateSession();
+ bool isLocalPlayerPlaying() const;
+ bool isRemotePlayerPlaying() const;
+ bool isMinimized()const;
+ void minimize();
+ void maximize();
+ void shareImage(const QString&);
+ void shareCamera();
+
+public: // Data
+
+ QByteArray mEngineName;
+ QString mSessionTitle;
+ QString mRecipient;
+ QString mPhoneNumber;
+ LcViewLayoutHint mViewLayout;
+ QTimer* mCloseTimer;
+ HbDialog* mInvitingNote; // Not owned
+ HbDialog* mWaitingNote; // Not owned
+ HbDialog* mAcceptQuery; // Not owned
+ HbDialog* mRecipientQuery; // Not owned
+ QString mPendingAction;
+ bool mBlocked;
+ bool mFullScreen;
+ int mSessionDurationTimerId;
+ QTime mSessionDurationStartTime;
+ LcUiEngine& mUiEngine;
+
+public:
+ simulationState mPlayerStateLocal;
+ simulationState mSimulatorRemote;
+ bool mSpeakerState;
+ bool mMuteState;
+ bool mMainCamera;
+ QProcess *mLocalPlayerProcess;
+ QProcess *mRemotePlayerProcess;
+ QString mProgram;
+ QString mProgramImage;
+ QString mLocalMovieName;
+
+private:
+ LcUiEngineSimulator* mSimulator;
+
+friend class LcUiEngineSimulator;
+};
+
+#endif // LCUIENGINEPRIVATE_H
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/win32/lcuienginesimulator.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,281 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+//USER
+#include "lcconfiguration.h"
+#include "LcUiEngine_p.h"
+#include "lcuidefs.h"
+#include "lclogger.h"
+#include "lcuienginesimulator.h"
+
+
+//SYSTEM
+#include <QTimer>
+#include <hbdialog.h>
+#include <hbaction.h>
+#include <hblabel.h>
+#include <hblineedit.h>
+#include <hbinstance.h>
+#include <hbmessagebox.h>
+
+
+#define LC_VTPLUGIN_NAME "Videotelephony";
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::LcUiEngineSimulator
+// -----------------------------------------------------------------------------
+//
+LcUiEngineSimulator::LcUiEngineSimulator( LcUiEnginePrivate& uiEngine)
+ :mUiEngine( uiEngine )
+{
+ mConfig = new LcConfiguration();
+ mConfig->parse();
+ mTimer = new QTimer( this );
+ connect( mTimer, SIGNAL(timeout()), this, SLOT(timerEvent()) );
+ iSimulatorCount = 0;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::~LcUiEngineSimulator
+// -----------------------------------------------------------------------------
+//
+LcUiEngineSimulator::~LcUiEngineSimulator()
+{
+ LC_QDEBUG( "livecomms [UI] -> LcUiEngineSimulator::~LcUiEngineSimulator()" )
+ delete mConfig;
+ delete mTimer;
+ LC_QDEBUG( "livecomms [UI] <- LcUiEngineSimulator::~LcUiEngineSimulator()" )
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::~LcUiEngineSimulator
+// -----------------------------------------------------------------------------
+//
+void LcUiEngineSimulator::start()
+{
+ mTimer->start(mConfig->mTimerDuration);
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::~LcUiEngineSimulator
+// -----------------------------------------------------------------------------
+//
+void LcUiEngineSimulator::stop()
+{
+ mTimer->stop();
+ mUiEngine.stopped();
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::~LcUiEngineSimulator
+// -----------------------------------------------------------------------------
+//
+int LcUiEngineSimulator::layout()
+{
+ return mConfig->mLayout;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::~LcUiEngineSimulator
+// -----------------------------------------------------------------------------
+//
+QString LcUiEngineSimulator::phoneNo()
+{
+ return mConfig->mPhoneNumber;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::~LcUiEngineSimulator
+// -----------------------------------------------------------------------------
+//
+QString LcUiEngineSimulator::sessionTitle()
+{
+ return mConfig->mSessionTitle;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::~LcUiEngineSimulator
+// -----------------------------------------------------------------------------
+//
+QString LcUiEngineSimulator::remoteAddress()
+{
+ return mConfig->mRecipient;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::zoom
+// -----------------------------------------------------------------------------
+//
+void LcUiEngineSimulator::timerEvent()
+{
+ switch( mConfig->mLayout ){
+ case 0 : {
+ break;
+ }
+ case 1:{
+ simulateLiveSharingSend();
+ break;
+ }
+ case 2:{
+ simulateLiveSharingReceive();
+ break;
+ }
+ case 3:{
+ // TODO : Add simulation
+ break;
+ }
+ case 4:{
+ simulateTwoWaySharing();
+ break;
+ }
+ case 5:{
+ simulateVideoTelephony();
+ break;
+ }
+ default:{
+
+ break;
+ }
+ }
+
+ iSimulatorCount++;
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::zoom
+// -----------------------------------------------------------------------------
+//
+void LcUiEngineSimulator::simulateLiveSharingSend()
+{
+ switch ( iSimulatorCount ){
+ case 0:{
+ mUiEngine.mInvitingNote->show();
+ mUiEngine.localPlayerPreparing();
+ break;
+ }
+ case 1:{
+ mUiEngine.mInvitingNote->hide();;
+ mUiEngine.localPlayerBuffering();
+ break;
+ }
+ case 2:{
+ mUiEngine.localPlayerPlaying();
+ break;
+ }
+ default:{
+ mUiEngine.sessionDurationChanged(QString::number(iSimulatorCount));
+ break;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::zoom
+// -----------------------------------------------------------------------------
+//
+void LcUiEngineSimulator::simulateLiveSharingReceive()
+{
+ switch ( iSimulatorCount ){
+ case 0:{
+ mUiEngine.mAcceptQuery->show();
+ mUiEngine.remotePlayerPreparing();
+ break;
+ }
+ case 1:{
+ mUiEngine.mAcceptQuery->hide();
+ mUiEngine.mWaitingNote->show();
+ mUiEngine.remotePlayerBuffering();
+ break;
+ }
+ case 2:{
+ mUiEngine.mWaitingNote->hide();
+ mUiEngine.remotePlayerPlaying();
+ break;
+ }
+ default:{
+ mUiEngine.sessionDurationChanged(QString::number(iSimulatorCount));
+ break;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::zoom
+// -----------------------------------------------------------------------------
+//
+void LcUiEngineSimulator::simulateTwoWaySharing()
+{
+ switch ( iSimulatorCount ){
+ case 0:{
+ mUiEngine.localPlayerPreparing();
+ mUiEngine.remotePlayerPreparing();
+ break;
+ }
+ case 1:{
+ mUiEngine.localPlayerBuffering();
+ mUiEngine.remotePlayerBuffering();
+ break;
+ }
+ case 2:{
+ mUiEngine.localPlayerPlaying();
+ mUiEngine.remotePlayerPlaying();
+ break;
+ }
+ default:{
+ mUiEngine.sessionDurationChanged(QString::number(iSimulatorCount));
+ break;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+// LcUiEngineSimulator::zoom
+// -----------------------------------------------------------------------------
+//
+void LcUiEngineSimulator::simulateVideoTelephony()
+{
+ switch ( iSimulatorCount ){
+ case 0:{
+ mUiEngine.localPlayerPreparing();
+ mUiEngine.remotePlayerPreparing();
+ break;
+ }
+ case 1:{
+ mUiEngine.localPlayerBuffering();
+ mUiEngine.remotePlayerBuffering();
+ break;
+ }
+ case 2:{
+ if( !mUiEngine.isRemotePlayerPlaying() ){
+ mUiEngine.remotePlayerPlaying();
+ }
+ break;
+ }
+ case 3:{
+ if( !mUiEngine.isLocalPlayerPlaying() ){
+ mUiEngine.localPlayerPlaying();
+ }
+ break;
+ }
+ default:{
+ mUiEngine.sessionDurationChanged(QString::number(iSimulatorCount));
+ break;
+ }
+ }
+}
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/win32/lcuienginesimulator.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2009 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 LCUIENGINESIMULATOR_H
+#define LCUIENGINESIMULATOR_H
+
+//SYSTEM
+#include <QObject>
+#include <QString>
+#include <QTime>
+
+class QTimer;
+class LcUiEnginePrivate;
+class LcConfiguration;
+
+/*
+ * Live Comms simulator
+ */
+class LcUiEngineSimulator : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ LcUiEngineSimulator ( LcUiEnginePrivate& uiEngine );
+ ~LcUiEngineSimulator ();
+ int layout();
+ QString sessionTitle();
+ QString remoteAddress();
+ QString phoneNo();
+ void setSimulation(int index){iSimulatorCount = index;};
+ int simulation(){return iSimulatorCount;};
+public:
+ void start();
+ void stop();
+
+public slots:
+
+ void timerEvent();
+
+private:
+ void simulateLiveSharingSend();
+ void simulateLiveSharingReceive();
+ void simulateTwoWaySharing();
+ void simulateVideoTelephony();
+
+private: // Data
+
+ QTimer* mTimer;
+ LcConfiguration* mConfig;
+ LcUiEnginePrivate& mUiEngine;
+ int iSimulatorCount;
+
+};
+
+#endif // LCUIENGINESIMULATOR_H
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/win32/lcvideowidget.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+//USER
+#include "lcvideowidget.h"
+
+//SYSTEM
+#include <QPainter>
+
+const qreal lcVideoWidgetCornerRounding = 10.0;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LcVideoWidget::LcVideoWidget(QGraphicsItem *parent, bool showVideo) :
+ HbTransparentWindow(parent),
+ mShowVideo(showVideo)
+{
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LcVideoWidget::~LcVideoWidget()
+{
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcVideoWidget::paint(
+ QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+ Q_UNUSED(widget)
+ if ( mShowVideo ){
+ QPainter::CompositionMode origCompositionMode = painter->compositionMode();
+ QPoint point(10,10);
+ QString str = QString::fromAscii("Playing...");
+ if( mLocalPlayer ){
+ painter->setBrush( Qt::red );
+ }else{
+ painter->setBrush( Qt::green );
+ }
+ painter->setPen( Qt::white );
+ painter->drawRoundedRect( option->exposedRect,
+ lcVideoWidgetCornerRounding, lcVideoWidgetCornerRounding);
+ painter->drawText(option->exposedRect.center(),str);
+ painter->setCompositionMode(origCompositionMode); // restore
+ } else {
+ painter->setBrush(QColor(0,0,0,255));
+ painter->drawRoundedRect( option->exposedRect,
+ lcVideoWidgetCornerRounding, lcVideoWidgetCornerRounding);
+ }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LcVideoWidget::setShowVideo(bool showVideo)
+{
+ mShowVideo = showVideo;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+bool LcVideoWidget::isShowingVideo()
+{
+ return mShowVideo;
+}
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/lcuiengine/tsrc/win32/package.bat Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,65 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+@goto invoke_perl
+
+#!perl
+#line 5
+
+################################################################################################################
+# This Script will package livecomms ui compoenents to run in windows environment
+################################################################################################################
+
+# Packages needed
+use File::Find; # File operations
+File::Spec::Win32; # File operartions
+use Getopt::Long; # parameter handling
+use Cwd; # Directory operations
+Getopt::Long::Configure( "bundling_override","ignore_case_always" );
+
+# Global variables
+my $orbit_bin_dir = "c:\\hb\\bin";
+my $qt_bin_dir = "C:\\Qt\\4.6.0-beta1\\bin";
+my $mingw_dll = "C:\\MinGW\\bin\\mingwm10.dll";
+my $livecomms_ui_exe = "$qt_bin_dir\\musui.exe";
+my $livecomms_ui_dll = "$qt_bin_dir\\livecommsui.dll";
+my $package_name = "livecommsui_win";
+my $launch_bat = "launch.bat";
+my $config_file = "lcconfig.xml";
+
+
+opendir(DIR,$orbit_bin_dir) or die "Can't find dir: $!\n";
+closedir(DIR);
+opendir(DIR,$qt_bin_dir) or die "Can't find dir: $!\n";
+closedir(DIR);
+die "$livecomms_ui_exe Doesn't Exist!" unless (-e $livecomms_ui_exe) ;
+die "$livecomms_ui_dll Doesn't Exist!" unless (-e $livecomms_ui_dll);
+die "$mingw_dll Doesn't Exist!" unless (-e $mingw_dll);
+opendir(DIR,$package_name) or system("mkdir $package_name");
+closedir(DIR);
+system("copy $orbit_bin_dir $package_name\\*");
+system("copy $qt_bin_dir $package_name\\*");
+system("copy $mingw_dll $package_name\\*");
+system("copy $launch_bat $package_name\\*");
+system("copy $config_file $package_name\\*");
+system("del $package_name\.zip") if( -e "$package_name\.zip" );
+system("zip $package_name $package_name\\*");
+system("rmdir /s/q $package_name");
+
+__END__
+
+:invoke_perl
+@perl -x -S C:\SynergyWorkArea\Mercurial\mmsharinguis\mmsharing\mmshlcui\mmshlcuiengine\win32\package.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/livecommsui.pro Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,97 @@
+# Copyright (c) 2009 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:
+
+TEMPLATE = lib
+TARGET = livecommsui
+CONFIG += hb \
+ dll \
+ svg
+
+QT += xml
+
+DEFINES += LIVECOMMSUI_LIB
+TRANSLATIONS = dialer.ts
+
+LCUI_DIR = lcui
+LCUIENGINE_DIR = lcuiengine
+DOCML_DIR = lcui/resources/lcviews
+
+DOCML += $$DOCML_DIR/lcidleview.docml
+DOCML += $$DOCML_DIR/lcreceiveview.docml
+DOCML += $$DOCML_DIR/lcreceiveonlyview.docml
+DOCML += $$DOCML_DIR/lcsendview.docml
+DOCML += $$DOCML_DIR/lctwowayview.docml
+DOCML += $$DOCML_DIR/lcvtview.docml
+
+RESOURCES += $$LCUI_DIR/livecommsui.qrc
+
+INCLUDEPATH += $$LCUI_DIR/inc
+INCLUDEPATH += $$LCUIENGINE_DIR/inc
+INCLUDEPATH += ../inc
+
+# Input
+HEADERS += $$LCUI_DIR/inc/lcviewmanager.h
+HEADERS += $$LCUI_DIR/inc/lcviewmanager_p.h
+HEADERS += $$LCUI_DIR/inc/lcview.h
+HEADERS += $$LCUI_DIR/inc/lcuicomponentrepository.h
+HEADERS += $$LCUI_DIR/inc/lceffecthandler.h
+HEADERS += $$LCUI_DIR/inc/lcvideowidget.h
+HEADERS += $$LCUIENGINE_DIR/inc/lcuiengine.h
+
+SOURCES += $$LCUI_DIR/src/lcviewmanager.cpp
+SOURCES += $$LCUI_DIR/src/lcviewmanager_p.cpp
+SOURCES += $$LCUI_DIR/src/lcview.cpp
+SOURCES += $$LCUI_DIR/src/lcuicomponentrepository.cpp
+SOURCES += $$LCUI_DIR/src/lceffecthandler.cpp
+SOURCES += $$LCUIENGINE_DIR/src/lcuiengine.cpp
+
+libFiles.sources = livecommsui.dll
+DEPLOYMENT += libFiles
+
+symbian: {
+
+ INCLUDEPATH += /epoc32/include/ecom
+ INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+ HEADERS += $$LCUIENGINE_DIR/inc/lcuiengine_p.h
+ HEADERS += $$LCUIENGINE_DIR/inc/lcactivitymanager.h
+
+ SOURCES += $$LCUIENGINE_DIR/src/lcuiengine_p.cpp
+ SOURCES += $$LCUIENGINE_DIR/src/lcactivitymanager.cpp
+ SOURCES += $$LCUI_DIR/src/lcvideowidget.cpp
+
+ TARGET.UID2 = 0x1000008d
+ TARGET.UID3 = 0x2002434D
+ TARGET.CAPABILITY = CAP_GENERAL_DLL
+ TARGET.EPOCALLOWDLLDATA = 1
+
+ libFiles.path = "!:/sys/bin"
+ LIBS += -lecom \
+ -lflogger \
+ -lws32 \
+ -lbafl \
+ -lcone \
+ -lcentralrepository \
+ -lxqserviceutil \
+ -ldialpad \
+ -lxqsettingsmanager
+
+ defFiles = "$${LITERAL_HASH}ifdef WINS" \
+ "DEFFILE bwins/livecommsui.def" \
+ "$${LITERAL_HASH}else" \
+ "DEFFILE eabi/livecommsui.def" \
+ "$${LITERAL_HASH}endif"
+ MMP_RULES += defFiles
+
+ :BLD_INF_RULES.prj_exports += "$$LCUI_DIR/inc/lcviewmanager.h /epoc32/include/lcviewmanager.h"
+ :BLD_INF_RULES.prj_exports += "$$LCUI_DIR/inc/lcexport.h /epoc32/include/lcexport.h"
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/livecommsui/tsrc/win32/livecommsui.pro Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,61 @@
+# Copyright (c) 2009 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:
+
+TEMPLATE = lib
+TARGET = livecommsui
+CONFIG += hb \
+ dll \
+ svg
+
+QT += xml
+
+DEFINES += LIVECOMMSUI_LIB
+
+LCUI_DIR = ../../lcui
+LCUIENGINE_DIR = ../../lcuiengine
+LCUIENGINE_WIN32_DIR = $$LCUIENGINE_DIR/tsrc/win32
+
+RESOURCES += $$LCUI_DIR/livecommsui.qrc
+
+INCLUDEPATH += $$LCUI_DIR/inc
+INCLUDEPATH += $$LCUIENGINE_WIN32_DIR
+INCLUDEPATH += $$LCUIENGINE_DIR/inc
+
+# Input
+HEADERS += $$LCUI_DIR/inc/lcviewmanager.h
+HEADERS += $$LCUI_DIR/inc/lcviewmanager_p.h
+HEADERS += $$LCUI_DIR/inc/lcview.h
+HEADERS += $$LCUI_DIR/inc/lcuicomponentrepository.h
+HEADERS += $$LCUI_DIR/inc/lceffecthandler.h
+HEADERS += $$LCUI_DIR/inc/lcvideowidget.h
+HEADERS += $$LCUIENGINE_DIR/inc/lcuiengine.h
+
+SOURCES += $$LCUI_DIR/src/lcviewmanager.cpp
+SOURCES += $$LCUI_DIR/src/lcviewmanager_p.cpp
+SOURCES += $$LCUI_DIR/src/lcview.cpp
+SOURCES += $$LCUI_DIR/src/lcuicomponentrepository.cpp
+SOURCES += $$LCUI_DIR/src/lceffecthandler.cpp
+SOURCES += $$LCUIENGINE_DIR/src/lcuiengine.cpp
+
+libFiles.sources = livecommsui.dll
+DEPLOYMENT += libFiles
+
+win32: {
+ INCLUDEPATH += $$LCUIENGINE_WIN32_DIR
+
+ HEADERS += $$LCUIENGINE_WIN32_DIR/lcuiengine_p.h
+ HEADERS += $$LCUIENGINE_WIN32_DIR/lcuienginesimulator.h
+ HEADERS += $$LCUIENGINE_WIN32_DIR/lcconfiguration.h
+ SOURCES += $$LCUIENGINE_WIN32_DIR/lcuiengine_p.cpp
+ SOURCES += $$LCUIENGINE_WIN32_DIR/lcuienginesimulator.cpp
+ SOURCES += $$LCUIENGINE_WIN32_DIR/lcconfiguration.cpp
+ SOURCES += $$LCUIENGINE_WIN32_DIR/lcvideowidget.cpp
+}
Binary file mmsharing/mmshapp/help/data/xhtml.zip has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/help/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2009 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:
+* Export help related files.
+*
+*/
+
+#include <platform_paths.hrh>
+PRJ_EXPORTS
+:zip ../data/xhtml.zip /epoc32/data/z/resource/ overwrite
+:zip ../data/xhtml.zip /epoc32/winscw/c/resource/ overwrite
+
+../inc/msh.hlp.hrh MW_LAYER_PLATFORM_EXPORT_PATH(csxhelp/msh.hlp.hrh)
+../rom/mmshuihelps_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(mmshuihelps_variant.iby)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/help/inc/msh.hlp.hrh Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,17 @@
+//
+// msh.hlp.hrh
+//
+
+//
+// File generated by CSXHelp Utilities on 2009-04-17
+//
+
+#ifndef __MSH_HLP_HRH__
+#define __MSH_HLP_HRH__
+
+_LIT(KMSH_HLP_LIVE, "MSH_HLP_LIVE"); //
+_LIT(KMSH_HLP_CLIP, "MSH_HLP_CLIP"); //
+_LIT(KMSH_HLP_SETTINGS, "MSH_HLP_SETTINGS"); //
+_LIT(KMSH_HLP_RECEIVE, "MSH_HLP_RECEIVE"); //
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/help/rom/mmshuihelps_variant.iby Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* 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 __MMSHUIHELPS_VARIANT_IBY__
+#define __MMSHUIHELPS_VARIANT_IBY__
+
+#if defined(FF_S60_HELPS_IN_USE) && defined(__MULTIMEDIA_SHARING)
+ data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x10282391\contents.zip, RESOURCE_FILES_DIR\xhtml\%02d\0x10282391\contents.zip)
+ data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x10282391\index.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x10282391\index.xml)
+ data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x10282391\keywords.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x10282391\keywords.xml)
+ data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x10282391\meta.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x10282391\meta.xml)
+#endif
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/inc/lcapplication.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2009 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 LCAPPLICATION_H
+#define LCAPPLICATION_H
+
+#include <hbapplication.h>
+
+class LcHbApplication : public HbApplication
+{
+ Q_OBJECT
+ friend class UT_LcApplication;
+
+public:
+
+ LcHbApplication(int &argc, char *argv[]);
+ ~LcHbApplication();
+
+signals:
+
+ void handleQuit();
+
+public slots:
+
+ //from QCoreApplication
+ static void quit();
+
+private: //data
+
+ static LcHbApplication* self;
+};
+
+
+#endif //LCAPPLICATION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/mmshapp.pro Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2009 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:
+#
+#
+
+TEMPLATE = app
+TARGET = musui
+CONFIG += hb
+
+# Input
+HEADERS += inc/lcapplication.h
+
+SOURCES += src/main.cpp
+SOURCES += src/lcapplication.cpp
+
+LIBS += -llivecommsui
+
+symbian: {
+ TARGET.UID2 = 0x100039CE
+ TARGET.UID3 = 0x10282391
+ TARGET.CAPABILITY = CAP_APPLICATION NetworkControl SwEvent Location MultimediaDD
+ RSS_RULES += "hidden = KAppIsHidden;"
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/src/lcapplication.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+//USER
+#include "lcapplication.h"
+
+//SYSTEM
+#include <QDebug>
+
+LcHbApplication* LcHbApplication::self = 0;
+
+
+// -----------------------------------------------------------------------------
+// LcHbApplication::LcHbApplication
+// -----------------------------------------------------------------------------
+//
+LcHbApplication::LcHbApplication(int &argc, char *argv[]) :
+ HbApplication(argc, argv)
+{
+ self = this;
+}
+
+// -----------------------------------------------------------------------------
+// LcHbApplication::~LcHbApplication
+// -----------------------------------------------------------------------------
+//
+LcHbApplication::~LcHbApplication()
+{
+ self = 0;
+}
+
+
+// -----------------------------------------------------------------------------
+// LcHbApplication::quit
+// -----------------------------------------------------------------------------
+//
+void LcHbApplication::quit()
+{
+ qDebug() << "LcHbApplication::quit()";
+ if (self) {
+ emit self->handleQuit();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/src/main.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+//USER
+#include "lcapplication.h"
+
+//SYSTEM
+#include <hbmainwindow.h>
+#include <lcviewmanager.h>
+#include <QObject>
+
+int main(int argc, char *argv[])
+{
+ int err=-1;
+ if (argc >= 2)
+ {
+ LcHbApplication app(argc, argv);
+ QString engineName(QString::fromUtf8(argv[1]));
+ QString applicationName("Video Sharing");
+ LcViewManager viewManager(engineName,applicationName);
+
+ QObject::connect( &app, SIGNAL( handleQuit() ),
+ &viewManager, SLOT( terminateSession() ),
+ Qt::QueuedConnection );
+
+ err = app.exec();
+ }
+ return err;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/tsrc/ut_mmshapp/inc/ut_lcapplication.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2009 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 UT_LCAPPLICATION_H
+#define UT_LCAPPLICATION_H
+
+
+#include <QObject>
+
+class LcHbApplication;
+
+class UT_LcApplication : public QObject
+{
+ Q_OBJECT
+
+private slots:
+
+/*
+ * In addition, there are four private slots that are not treated as testfunctions.
+ * They will be executed by the testing framework and can be used to initialize and clean up
+ * either the entire test or the current test function.
+ *
+ * initTestCase() will be called before the first testfunction is executed.
+ * cleanupTestCase() will be called after the last testfunction was executed.
+ * init() will be called before each testfunction is executed.
+ * cleanup() will be called after every testfunction.
+*/
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+
+private slots: //test methods
+
+ void testConstructorDestructor();
+ void testQuit();
+
+private:
+
+ LcHbApplication* mLcApplication;
+ int mArgc;
+};
+
+#endif //UT_LCAPPLICATION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/tsrc/ut_mmshapp/src/main.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <QtTest/QtTest>
+
+#include "ut_lcapplication.h"
+#include "testresultxmlparser.h"
+
+
+int main(int argc, char *argv[])
+{
+ bool promptOnExit(true);
+ for (int i=0; i<argc; i++) {
+ if (QString(argv[i]) == "-noprompt")
+ promptOnExit = false;
+ }
+ printf("Running tests...\n");
+
+ QApplication app(argc, argv);
+ TestResultXmlParser parser;
+
+ UT_LcApplication ut_lcApplication;
+ QString resultFileName = "c:/ut_lcapplication.xml";
+ QStringList args_lcApplication( "ut_lcapplication");
+ args_lcApplication << "-xml" << "-o" << resultFileName;
+ QTest::qExec(&ut_lcApplication, args_lcApplication);
+ parser.parseAndPrintResults(resultFileName,true);
+
+ if (promptOnExit) {
+ printf("Press any key...\n");
+ getchar();
+ }
+ return 0;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/tsrc/ut_mmshapp/src/ut_lcapplication.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+//USER
+#include "lcapplication.h"
+#include "ut_lcapplication.h"
+
+#include <QtTest/QtTest>
+
+
+void UT_LcApplication::initTestCase()
+{
+}
+
+void UT_LcApplication::cleanupTestCase()
+{
+}
+
+
+void UT_LcApplication::init()
+{
+ mArgc = 0;
+ mLcApplication = new LcHbApplication( mArgc, 0 );
+}
+
+void UT_LcApplication::cleanup()
+{
+ delete mLcApplication;
+}
+
+void UT_LcApplication::testConstructorDestructor()
+ {
+ QVERIFY( mLcApplication );
+ QVERIFY( LcHbApplication::self == mLcApplication );
+
+ delete mLcApplication;
+ mLcApplication = 0;
+ QVERIFY( !LcHbApplication::self );
+ }
+
+void UT_LcApplication::testQuit()
+{
+ QSignalSpy spy( mLcApplication, SIGNAL(handleQuit()) );
+ LcHbApplication::quit();
+ QCOMPARE( spy.count(), 1 );
+
+ mLcApplication->self = 0;
+ spy.clear();
+ LcHbApplication::quit();
+ QCOMPARE( spy.count(), 0 );
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/tsrc/ut_mmshapp/stubs/hbapplication.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2009 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 HBAPPLICATION_H
+#define HBAPPLICATION_H
+
+#include <qobject.h>
+#include <qglobal.h>
+
+class HbApplication : public QObject
+{
+public:
+ HbApplication(int &/*argc*/, char */*argv*/[]){};
+ ~HbApplication(){};
+};
+
+#endif//HBAPPLICATION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshapp/tsrc/ut_mmshapp/ut_mmshapp.pro Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,50 @@
+#
+# Copyright (c) 2009 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:
+#
+#
+
+TEMPLATE = app
+TARGET =
+
+CONFIG += hb
+QT += testlib xml
+#CONFIG += qtestlib
+
+MUSAPP_DIR = ../..
+MUS_DIR = ../../../..
+
+DEPENDPATH += .
+
+INCLUDEPATH += inc
+INCLUDEPATH += stubs
+INCLUDEPATH += $$MUSAPP_DIR/inc
+INCLUDEPATH += $$MUS_DIR/tsrc/qtestutils/inc
+
+# Input
+HEADERS += inc/ut_lcapplication.h
+HEADERS += $$MUSAPP_DIR/inc/lcapplication.h
+
+SOURCES += src/main.cpp
+SOURCES += src/ut_lcapplication.cpp
+SOURCES += $$MUSAPP_DIR/src/lcapplication.cpp
+SOURCES += $$MUS_DIR/tsrc/qtestutils/src/testresultxmlparser.cpp
+
+
+symbian: {
+ TARGET.UID2 = 0x100039CE
+ TARGET.UID3 = 0xE5923aef
+ TARGET.CAPABILITY = ALL -TCB
+ TARGET.EPOCALLOWDLLDATA = 1
+}
--- a/mmsharing/mmshavailability/group/musavailabilityplugin.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/group/musavailabilityplugin.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -91,8 +91,6 @@
LIBRARY sipprofile.lib
LIBRARY sipprofilecli.lib
LIBRARY centralrepository.lib
-LIBRARY pbkeng.lib
-LIBRARY phoneengine.lib
LIBRARY cntmodel.lib // Contact Model
LIBRARY sipcodec.lib
LIBRARY sdpcodec.lib // SDP Codec
@@ -104,6 +102,6 @@
LIBRARY inetprotutil.lib
LIBRARY estor.lib
DEBUGLIBRARY flogger.lib
-LIBRARY insock.lib
+LIBRARY insock.lib
PAGED
--- a/mmsharing/mmshavailability/inc/mmusavacapabilityqueryobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/mmusavacapabilityqueryobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -20,6 +20,7 @@
#include <sipstrconsts.h>
#include <bamdesca.h>
+#include <mussettingskeys.h>
class CMusAvaCapabilityQueryBase;
@@ -67,6 +68,10 @@
virtual TBool CapabilityQueryAnswered( TBool aAnswered = EFalse ) = 0;
+ /**
+ * Advertise about fast mode capability
+ */
+ virtual void FastModeResolved( MusSettingsKeys::TFastMode aMode ) = 0;
};
--- a/mmsharing/mmshavailability/inc/musavaavailability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavaavailability.h Tue Aug 31 15:12:07 2010 +0300
@@ -147,16 +147,7 @@
}
MUS_LOG( "mus: [MUSAVA] <- CMusAvaAvailability::SetState" )
}
-
- /**
- * Calculate the availabilited to decide to show the toolbar or not.
- *
- */
- void AvailabilitiesAbleToShowIndicator()
- {
- iObserver.AvailabilitiesAbleToShowIndicator();
- }
-
+
/**
* Returns specific availability state.
*
@@ -167,7 +158,14 @@
return iObserver.Available( aAvailability );
}
-
+ /**
+ * Invitation has been received.
+ */
+ virtual void PrepareForReceivedInviteL()
+ {
+ MUS_LOG( "mus: [MUSAVA] <-> CMusAvaAvailability::PrepareForReceivedInviteL" )
+ }
+
virtual ~CMusAvaAvailability() {};
protected:
@@ -189,4 +187,4 @@
};
-#endif // __CMUSAVAAVAILABILITY_H__
\ No newline at end of file
+#endif // __CMUSAVAAVAILABILITY_H__
--- a/mmsharing/mmshavailability/inc/musavaavailabilityobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavaavailabilityobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -57,8 +57,6 @@
virtual MMusAvaObserver::TAvailabilityStatus
AvailabilityPluginState() = 0;
-
- virtual void AvailabilitiesAbleToShowIndicator() = 0;
};
--- a/mmsharing/mmshavailability/inc/musavacalleventmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavacalleventmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -49,16 +49,9 @@
* @return call direction
*/
TInt CallDirectionL();
-
- /**
- * get call Privacy
- *
- * @return call privacy
- */
- TInt CallPrivacyL();
- void GetTelNumberL( TDes& aTelNumber );
+ void GetTelNumberL( TDes& aTelNumber, TBool& aIsSipUri );
/**
* Start to monitoring call state events
@@ -117,6 +110,7 @@
*/
void ConstructL();
+ TBool IsSipUri( const TDesC& aTelNumber ) const;
private: // data
--- a/mmsharing/mmshavailability/inc/musavacapability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavacapability.h Tue Aug 31 15:12:07 2010 +0300
@@ -25,7 +25,7 @@
#include <sdpcodecstringpool.h>
#include <badesca.h>
#include "musunittesting.h"
-
+#include "mussettingskeys.h"
class CMusAvaCapabilityExchange;
class CSIPServerTransaction;
@@ -47,6 +47,7 @@
_LIT8( KCapabilitySwisFormatList, "98 96" );
_LIT8( KCapabilitySwisFormatListH263Only, "96" );
_LIT8( KCapabilitySDPAttributeCodecH264, "H264" );
+_LIT8( KCapabilitySDPAttributeFastMode, "fastmode" ); //a=keywds:fastmode, see RFC 4566
const TUint64 KCapabilitySDPAttributeClockrate = 90000;
const TUint64 KCapabilitySDPAttributePayloadType = 96;
@@ -169,6 +170,18 @@
static const CSdpAttributeField* Attribute( const RStringF& aMedia,
const RStringF& aAttribute,
CSdpDocument& aSDP );
+
+ /**
+ * Finds fast mode value from the SDP document
+ */
+ static MusSettingsKeys::TFastMode ResolveFastModeL( CSdpDocument& aSdp );
+
+ /**
+ * Add fast mode related attribute to SDP, if fast mode is supported
+ */
+ static void AddFastModeL( CSdpDocument& aSdp );
+
+
public://new functions
/**
--- a/mmsharing/mmshavailability/inc/musavacapabilityquerybase.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavacapabilityquerybase.h Tue Aug 31 15:12:07 2010 +0300
@@ -44,7 +44,7 @@
const TInt KCapabilityCapabilitesReady = 1;
const TInt KCapabilityCapabilitesNotFound = 2;
const TInt KCapabilityCapabilitiesForbidden = 3;
-const TInt KMaxRemoteUriLength = 512;
+
/**
* Sent capability query (OPTIONS)
@@ -113,12 +113,6 @@
*/
HBufC8* ContentLC();
- /**
- * Check if Recipient address is same as that in profile.
- *
- */
- TBool ValidateUri();
-
public: // new functions
@@ -220,18 +214,10 @@
CUri8* iRegisteredContact;
CUri8* iOriginator;
CSIPClientTransaction* iTrx;
- TBuf8<KMaxRemoteUriLength> iRemoteUri;
//for unit testing
CAPABILITY_UT_DEFINITIONS
-private: // Friend classes
-
-#ifdef EUNIT_TEST
- friend class UT_CMusAvaCapabilityQuery;
- friend class UT_CMusAvaCapabilityQueryBase;
-#endif
-
};
--- a/mmsharing/mmshavailability/inc/musavacapabilitytimer.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavacapabilitytimer.h Tue Aug 31 15:12:07 2010 +0300
@@ -45,10 +45,6 @@
protected: // From CTimer
void RunL();
-
-protected: // from CActive
-
- TInt RunError( TInt aError );
private:
--- a/mmsharing/mmshavailability/inc/musavaconnectionavailability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavaconnectionavailability.h Tue Aug 31 15:12:07 2010 +0300
@@ -25,7 +25,6 @@
#include "musavatelephonystatusobserver.h"
#include "musavaconnectionmonitorobserver.h"
#include "musunittesting.h"
-
#include <e32base.h>
#include <etelmm.h>
@@ -51,10 +50,9 @@
class CMusAvaConnectionAvailability : public CMusAvaAvailability,
public MMusAvaTelephonyStatusObserver,
public MMusAvaConnectionMonitorObserver
- {
-public:
-
- /**
+ {
+ public:
+ /**
* Two-phased constructor
*
* @since S60 v3.2
@@ -64,26 +62,27 @@
* @return Returns pointer to CMusAvaInterface object
*/
static CMusAvaConnectionAvailability* NewL( MMusAvaAvailabilityObserver& aObserver,
- CMusAvaSettingsImp& aSettings );
+ CMusAvaSettingsImp& aSettings );
- static CMusAvaConnectionAvailability* NewLC( MMusAvaAvailabilityObserver& aObserver,
- CMusAvaSettingsImp& aSettings );
+ static CMusAvaConnectionAvailability* NewLC( MMusAvaAvailabilityObserver& aObserver,
+ CMusAvaSettingsImp& aSettings );
- /**
+ /**
* Destructor
*/
+
~CMusAvaConnectionAvailability();
protected:
- CMusAvaConnectionAvailability( MMusAvaAvailabilityObserver& aObserver,
- CMusAvaSettingsImp& aSettings );
+ CMusAvaConnectionAvailability( MMusAvaAvailabilityObserver& aObserver,
+ CMusAvaSettingsImp& aSettings );
- void ConstructL();
-
+ void ConstructL();
-public:// from base class CMusAvaAvailability
+// from base class CMusAvaAvailability
+public:
/**
* Executes for the availability.
@@ -109,15 +108,14 @@
public: // from MMusAvaTelephonyStatusObserver
- /**
- * Current Network Mode Status
- *
- * @since S60 v3.2
- * @return
- */
+ /**
+ * Current Network Mode Status
+ *
+ * @since S60 v3.2
+ * @return
+ */
void PhoneNetworkModeStatus(
- RMobilePhone::TMobilePhoneNetworkMode aStatus );
-
+ RMobilePhone::TMobilePhoneNetworkMode aStatus );
/**
* Current Network Registration Status
*
@@ -125,25 +123,27 @@
* @return
*/
void NetworkRegistrationStatus(
- RMobilePhone::TMobilePhoneRegistrationStatus aRegStatus );
+ RMobilePhone::TMobilePhoneRegistrationStatus aRegStatus );
public: //from MMusAvaConnectionMonitorObserver
- /**
- * Event from connection monitor server
- *
- */
+ /**
+ * Event from connection monitor server
+ *
+ */
void EventL(const CConnMonEventBase& aConnMonEvent);
+
+
private:
- /**
- * Check needs to have manual activation
- *
- * @since S60 v3.2
- * @return TAvailabilityStatus is returned
- */
- MMusAvaObserver::TAvailabilityStatus ManualActivationL();
+ /**
+ * Check needs to have manual activation
+ *
+ * @since S60 v3.2
+ * @return TAvailabilityStatus is returned
+ */
+ MMusAvaObserver::TAvailabilityStatus ManualActivationL();
/**
* Current test network registration agains the settings
@@ -153,8 +153,6 @@
*/
MMusAvaObserver::TAvailabilityStatus NetworkRegistrationAndSettingsL();
- static TBool OperatorVariant();
-
private: // data
/**
@@ -187,7 +185,6 @@
*/
CMusAvaSettingsImp& iSettings;
-
MUS_UNITTEST( UT_CMusAvaConnectionAvailability )
};
--- a/mmsharing/mmshavailability/inc/musavacontactavailability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavacontactavailability.h Tue Aug 31 15:12:07 2010 +0300
@@ -22,19 +22,16 @@
#include "musavaavailability.h"
#include "musunittesting.h"
#include "mussettingskeys.h"
-#include "muscallmonitorobserver.h"
+
#include <badesca.h>
-#include <PbkFields.hrh>
class MMusAvaAvailabilityObserver;
class MMusAvaObserver;
class CMusAvaSharedObject;
-class CPbkContactEngine;
class CContactIdArray;
-class CPbkContactItem;
class CContactItem;
class CMusAvaSettingsImp;
-class CMusAvaCallEventMonitor;
+
/**
* Implemets register vailability.
@@ -43,8 +40,7 @@
*
* @lib musavailabilityplugin.lib
*/
-class CMusAvaContactAvailability : public CMusAvaAvailability,
- public MMusCallMonitorObserver
+class CMusAvaContactAvailability : public CMusAvaAvailability
{
public:
@@ -99,118 +95,23 @@
* @return Name of *this* availability.
*/
virtual MMusAvaObserver::TAvailabilityName Name();
- // from class MMusCallMonitorObserver
- /**
- * Call connected
- *
- * @since S60 v3.2
- * @return
- */
- virtual void CallConnectedL( const TDesC& aTelNumber );
-
- /**
- * Call on hold
- *
- * @since S60 v3.2
- * @return
- */
- virtual void CallHoldL( const TDesC& aTelNumber );
-
- /**
- * Call disconnected
- *
- * @since S60 v3.2
- * @return
- */
- virtual void NoActiveCallL();
-
- /**
- * Call on hold
- *
- * @since S60 v3.2
- * @return
- */
- virtual void ConferenceCallL();
-
-
- virtual void ConferenceCallLTerminated();
private:
/**
*
*/
- TBool ActiveCallL( CDesCArrayFlat*& aContactsArray );
-
- /**
- *
- */
- TBool ContactL( CContactIdArray*& aContactIdArray,
- CPbkContactEngine& aPbkContactEngine );
-
- /**
- *
- */
- void UpdateContactNameL( CContactItem& aContactItem );
-
- /**
- *
- */
- TInt ContactArrayL( CContactIdArray*& aContactIdArray,
- CPbkContactEngine& aPbkContactEngine );
-
- /**
- *
- */
- TInt ContactItem( CContactIdArray& aContactIdArray,
- CPbkContactItem*& aPbkContactItem,
- CPbkContactEngine& aPbkContactEngine );
-
- /**
- *
- */
- TBool ContactId( CPbkContactItem& aPbkItem,
- TPbkFieldId aTPbkFieldId );
- /**
- *
- */
- TPbkFieldId ContactIdSearch( CContactIdArray& aContactIdArray,
- CPbkContactEngine& aPbkContactEngine );
-
- /**
- *
- */
- TBool PhoneResolutionL( CPbkContactItem& aPbkItem,
- CDesCArrayFlat*& aContactsArray );
+ TBool ActiveCallL( CDesCArrayFlat*& aContactsArray );
/**
*
*/
- TBool ResolveAddressesL( CPbkContactItem& aPbkItem,
- CDesCArrayFlat*& aContactsArray,
- TPbkFieldId aTPbkFieldId );
-
- /**
- *
- */
- TBool ResolvePhoneContactL( CPbkContactItem& aPbkItem,
- CDesCArrayFlat*& aContactsArray );
+ TBool ResolveAddressesL( const TDesC& aContactId,
+ CDesCArrayFlat*& aContactsArray );
- /* -------------------------------------------------------------------------
- * Checks that whether aDesItem present in aDesArray.
- * Utility function used to avoid dublication.
- * -------------------------------------------------------------------------
- */
- TBool IsExistAlready(const MDesCArray& aDesArray,
- const TDesC& aDesItem);
-
+
private:
- /**
- * iPhoneStatus subscribe property resource. When the resource
- * changed somewhere,availability will get notification.
- */
- CMusAvaCallEventMonitor* iPhoneStatus;
/**
* resolved contact name
@@ -236,4 +137,4 @@
};
-#endif // __MUSAVACONTACTAVAILABILITY_H__
\ No newline at end of file
+#endif // __MUSAVACONTACTAVAILABILITY_H__
--- a/mmsharing/mmshavailability/inc/musavadefaultimp.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavadefaultimp.h Tue Aug 31 15:12:07 2010 +0300
@@ -162,7 +162,8 @@
virtual TBool MandatoryAvailability();
virtual TBool ExtensionAvailability();
virtual MMusAvaObserver::TAvailabilityStatus AvailabilityState( MMusAvaObserver::TAvailabilityName aAvailability );
-
+ virtual void PrepareForReceivedInviteL();
+
public: // from base class MMusAvaAvailabilityObserver
/**
@@ -189,8 +190,6 @@
virtual MMusAvaObserver::TAvailabilityStatus AvailabilityPluginState();
- virtual void AvailabilitiesAbleToShowIndicator();
-
private: // data
--- a/mmsharing/mmshavailability/inc/musavanetworkavailability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavanetworkavailability.h Tue Aug 31 15:12:07 2010 +0300
@@ -21,7 +21,6 @@
#include "musavaavailability.h"
#include "muscallmonitorobserver.h"
-#include "musunittesting.h"
#include <sipprofileregistryobserver.h>
#include <e32base.h>
@@ -46,8 +45,6 @@
class CMusAvaNetworkAvailability : public CMusAvaAvailability,
public MMusCallMonitorObserver
{
- MUS_UNITTEST( UT_CMusAvaNetworkAvailability )
-
public:
/**
* Two-phased constructor
@@ -126,7 +123,7 @@
* @since S60 v3.2
* @return
*/
- void CallConnectedL( const TDesC& aTelNumber );
+ void CallConnectedL( const TDesC& aTelNumber, TBool aIsSipUri );
/**
* Call on hold
@@ -134,7 +131,7 @@
* @since S60 v3.2
* @return
*/
- virtual void CallHoldL( const TDesC& aTelNumber );
+ virtual void CallHoldL( const TDesC& aTelNumber, TBool aIsSipUri );
/**
* Call disconnected
@@ -151,15 +148,10 @@
* @return
*/
virtual void ConferenceCallL();
-
-
- /**
- * Call on conf Terminated
- *
- * @since S60 v3.2
- * @return
- */
- virtual void ConferenceCallLTerminated();
+
+private:
+
+ void SetRemoteHostL( const TDesC& aTelNumber, TBool aIsSipUri );
private: // data
@@ -178,8 +170,8 @@
*/
CMusAvaSettingsImp& iSettings;
- TBool iConfcall;
+ MUS_UNITTEST( UT_CMusAvaNetworkAvailability )
};
-#endif // __MUSAVANETWORKAVAILABILITY_H__
\ No newline at end of file
+#endif // __MUSAVANETWORKAVAILABILITY_H__
--- a/mmsharing/mmshavailability/inc/musavaoptionhandler.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavaoptionhandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -124,6 +124,11 @@
*/
virtual MMusAvaObserver::TAvailabilityName Name();
+ /**
+ * Invitation has been received.
+ */
+ virtual void PrepareForReceivedInviteL();
+
public: // functions from base class MMusAvaCapabilityQueryObserver
@@ -158,9 +163,45 @@
*/
void VideoCodecsResolvedL( const MDesCArray& aVideoCodecs );
-
TBool CapabilityQueryAnswered( TBool aAnswered );
+ void FastModeResolved( MusSettingsKeys::TFastMode aMode );
+
+private:
+
+ /**
+ * Change state.
+ * @param aNewState, proposed new state
+ * @return KErrNone if successfull
+ */
+ TInt DoSetState( MMusAvaObserver::TAvailabilityStatus aNewState );
+
+ /**
+ * Handle state change in fast mode, state change may be modified
+ * based on fast mode session setup progress.
+ * @param aNewState, proposed new state
+ * @param aCouldNotProceed, ETrue if state change occured because
+ * couldn't proceed (e.g. missing information)
+ * @return new state to set
+ */
+ MMusAvaObserver::TAvailabilityStatus HandleFastModeL(
+ MMusAvaObserver::TAvailabilityStatus aNewState );
+
+ MMusAvaObserver::TAvailabilityStatus HandleFastModeAvailableL(
+ MMusAvaObserver::TAvailabilityStatus aNewState );
+
+ MMusAvaObserver::TAvailabilityStatus HandleFastModeOptionsNotSentL(
+ MMusAvaObserver::TAvailabilityStatus aNewState );
+
+ MMusAvaObserver::TAvailabilityStatus HandleFastModeOptionNotAvailableL(
+ MMusAvaObserver::TAvailabilityStatus aNewState );
+
+ void HandleFastModeQueryAnswered();
+
+ TBool FastModeNegotiatedByAnswerMT();
+
+ TBool FastModeNegotiationFailedMO();
+
private:
/**
@@ -179,6 +220,9 @@
TBool iCapabilitiesRequestAnswered;
TBool iCapabilityQueryAnswered;
+ TBool iFastModeCapable;
+ TBool iFastModeAvailabilityDelayed;
+
MUS_UNITTEST ( UT_CMusAvaOptionHandler )
MUS_UNITTEST ( UT_CMusAvaCapabilityExchange )
MUS_UNITTEST ( UT_CMusAvaCapability )
@@ -187,4 +231,4 @@
MUS_UNITTEST ( UT_CMusAvaCapabilityQuery )
};
-#endif // __MUSAVAOPTIONHANDLER_H__
\ No newline at end of file
+#endif // __MUSAVAOPTIONHANDLER_H__
--- a/mmsharing/mmshavailability/inc/musavaregisteravailability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavaregisteravailability.h Tue Aug 31 15:12:07 2010 +0300
@@ -5,7 +5,7 @@
* 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".
-* Version : %version: 15.1.4 % << Don't touch! Updated by Synergy at check-out.
+* Version : %version: 15.1.5 % << Don't touch! Updated by Synergy at check-out.
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
@@ -26,7 +26,6 @@
#include "musavaavailability.h"
#include "musavasipconnectionadapter.h"
#include "musavasipprofileregistryadapter.h"
-#include "mussettingskeys.h"
#include <sipprofileregistryobserver.h>
#include <e32base.h>
@@ -204,7 +203,7 @@
* EFalse otherwise
*/
TBool RegistrationStatusL();
-
+
private: // Data
/**
@@ -227,9 +226,9 @@
*/
CSIPConnection* iConnection;
- MusSettingsKeys::TOperatorVariant iOperatorVariant;
+
MUS_UNITTEST( UT_CMusAvaRegisterAvailability )
};
-#endif // __MUSAVAREGISTERAVAILABILITY_H__
+#endif // __MUSAVAREGISTERAVAILABILITY_H__
\ No newline at end of file
--- a/mmsharing/mmshavailability/inc/musavasettingsimp.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavasettingsimp.h Tue Aug 31 15:12:07 2010 +0300
@@ -61,7 +61,13 @@
public: // from MMusAvaSettings
- /**
+ /**
+ * Returns the fast mode value.
+ */
+
+ virtual MusSettingsKeys::TFastMode FastMode() const;
+
+ /**
* Returns the manual activation
*
*/
@@ -129,22 +135,18 @@
* @param aObserver Pointer to observer intercase
*/
virtual void SetObserver( MMusAvaSettingsObserver& aObserver );
+
+ /*
+ * Gets the settings observer pointer
+ *
+ */
+ virtual MMusAvaSettingsObserver* Observer();
/**
* Sets the for the manual activation
*
*/
virtual void SetManualActivation( TManualActivation aManualActivation );
-
-
- /**
- * Returns the direction of the mobile call.
- *
- * @return 0, if the direction of the call is unknown.
- * 1, call is from public number.
- * 2, call is from private number
- */
- virtual TInt CallPrivacy();
public:
@@ -242,15 +244,6 @@
* @param aProfileId the SIP profile id.
*/
void SetSipProfileId( TInt aProfileId );
-
-
- /**
- * Sets the call privacy e.g. current call number is from private number,
- * should be shown on MT.
- *
- * @param aPrivacy the SIP profile id.
- */
- void SetCallPrivacy( TInt aPrivacy );
/**
* Returns the id of the preferable SIP profile.
@@ -258,15 +251,21 @@
* @return The SIP profile id.
*/
CMusAvaSip& Sip();
-
- void SetOptionSentNumber( const TDesC& aTelNumber );
-
- const TDesC& OptionSentTelNumber() const;
+
+ /**
+ * Sets the fast mode value
+ */
+ void SetFastMode( MusSettingsKeys::TFastMode aMode );
- void ReleaseOptionSentNumber();
+ /**
+ * Sets contact resolving uri
+ */
+ void SetUriForContactResolvingL( const TDesC& aRemoteUri );
-
-
+ /**
+ * Gets contact resolving uri
+ */
+ TPtrC ContactResolvingUri();
private:
@@ -297,9 +296,6 @@
* Owns.
*/
HBufC* iTelNumber;
-
- HBufC* iOptionSentTelNumber;
-
/**
* Current Call Direction
@@ -358,15 +354,17 @@
TManualActivation iManualActivation;
/**
- * Call privacy indicator
- *
- */
-
- TInt iCallPrivacy;
+ * Fast mode
+ */
+ MusSettingsKeys::TFastMode iFastMode;
+
+ /**
+ * Contact resolving
+ */
+ HBufC* iContactResolvingUri;
MUS_UNITTEST( UT_CMusAvaSettingsImp )
MUS_UNITTEST( UT_CMusAvaOptionHandler )
- MUS_UNITTEST( UT_CMusAvaTerminal )
};
#endif __MUSAVASETTINGSIMP_H__
--- a/mmsharing/mmshavailability/inc/musavasip.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavasip.h Tue Aug 31 15:12:07 2010 +0300
@@ -12,7 +12,7 @@
* Contributors:
*
* Description: This is client interface class for SIP-server
-* Version : %version: 23 % << Don't touch! Updated by Synergy at check-out.
+* Version : %version: 24 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -223,11 +223,6 @@
* that this pointer is NULL.
*/
CMusAvaClientResolverUtil* ClientResolverUtil() const;
-
- /**
- * Deletes unnecessary CSIPConnection
- */
- void DeleteSIPConnection();
private:
--- a/mmsharing/mmshavailability/inc/musavasipheaderutil.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavasipheaderutil.h Tue Aug 31 15:12:07 2010 +0300
@@ -115,14 +115,6 @@
static void AddAcceptSdpHeaderL(RPointerArray<CSIPHeaderBase>& aRequestHeaders );
- /**
- * Utility class to add SIP privacy header when the PS key
- * NMusSessionInformationApi::KMusClirSetting PS indicates so.
- * @lib AlwaysOnlinePlugin.dll
- */
- static void AddPrivacyHeaderL(
- RPointerArray<CSIPHeaderBase>& aRequestHeaders );
-
};
--- a/mmsharing/mmshavailability/src/musavacalleventmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavacalleventmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -117,66 +117,39 @@
CallDirectionL" )
return direction;
}
-
+
// --------------------------------------------------------------------------
-// Returns the direction of connected call.
+// aTelNumber will be filled with telephone number or SIP URI of current
+// connected call
// --------------------------------------------------------------------------
//
-TInt CMusAvaCallEventMonitor::CallPrivacyL()
- {
- MUS_LOG( "mus: [CMusAvaCallEventMonitor] -> CMusAvaCallEventMonitor::\
- CallPrivacyL" )
- // retrieve call count
- TInt privacy( 0 );
- User::LeaveIfError( RProperty::Get(
- NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSPrivacy,
- privacy ) );
+void
+CMusAvaCallEventMonitor::GetTelNumberL( TDes& aTelNumber, TBool& aIsSipUri )
- MUS_LOG1( "mus: [CMusAvaCallEventMonitor] Call privacy = %d ",
- privacy )
- MUS_LOG( "mus: [CMusAvaCallEventMonitor] <- CMusAvaCallEventMonitor::\
- CallPrivacyL" )
- return privacy;
- }
-
-// --------------------------------------------------------------------------
-// aTelNumber will be filled with telephone number of current connected call
-// --------------------------------------------------------------------------
-//
-void CMusAvaCallEventMonitor::GetTelNumberL( TDes& aTelNumber )
{
MUS_LOG( "mus: [CMusAvaCallEventMonitor] -> CMusAvaCallEventMonitor::\
GetTelNumberL" )
- TBuf<KMusTelNumberMaxLength> telNumber;
- MUS_LOG( "mus: [CMusAvaCallEventMonitor] CMusAvaCallEventMonitor::\
- GetTelNumberL - a" )
- TInt error = RProperty::Get(
- NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusTelNumber,
- telNumber );
+ TInt error = RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ aTelNumber );
MUS_LOG1( "mus: [CMusAvaCallEventMonitor] CMusAvaCallEventMonitor::\
GetTelNumberL (%d)", error )
- if ( error != KErrOverflow )
- {
- User::LeaveIfError( error );
- }
-
- TInt length = telNumber.Length();
- TInt maxLength = aTelNumber.MaxLength();
- if ( maxLength < length )
+ if ( error == KErrOverflow )
{
- // buffer is too small for returned tel number.
- MUS_LOG2( "mus: [CMusAvaCallEventMonitor] CMusAvaCallEventMonitor::\
- GetTelNumberL - Buffer too small (%d, %d), leave",
- maxLength, length )
- User::Leave( KErrOverflow );
+ MUS_LOG1( "mus: [CMusAvaCallEventMonitor] CMusAvaCallEventMonitor::\
+ GetTelNumberL - Buffer too small (%d), leave",
+ aTelNumber.MaxLength() )
+ User::Leave( error );
}
-
- aTelNumber.Copy( telNumber );
+ User::LeaveIfError( error );
+
+ aIsSipUri = IsSipUri( aTelNumber );
+ MUS_LOG1( "mus: [CMusAvaCallEventMonitor] CMusAvaCallEventMonitor::\
+ GetTelNumberL (is SIP URI=%d)", aIsSipUri )
+
MUS_LOG( "mus: [CMusAvaCallEventMonitor] <- CMusAvaCallEventMonitor::\
GetTelNumberL" )
}
@@ -248,38 +221,19 @@
case NMusSessionInformationApi::ECallConnected:
{
- // retrieve telnumber
- TInt error;
TBuf<KMusTelNumberMaxLength> telNumber;
- error = RProperty::Get(
- NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusTelNumber,
- telNumber );
-
- if ( error != KErrOverflow )
- {
- User::LeaveIfError( error );
- }
-
- iObserver.CallConnectedL( telNumber );
+ TBool isSipUri( EFalse );
+ GetTelNumberL( telNumber, isSipUri );
+ iObserver.CallConnectedL( telNumber, isSipUri );
break;
}
case NMusSessionInformationApi::ECallHold:
{
- // retrieve telnumber
- TInt error;
TBuf<KMusTelNumberMaxLength> telNumber;
- error = RProperty::Get(
- NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusTelNumber,
- telNumber );
-
- if ( error != KErrOverflow )
- {
- User::LeaveIfError( error );
- }
- iObserver.CallHoldL( telNumber );
+ TBool isSipUri( EFalse );
+ GetTelNumberL( telNumber, isSipUri );
+ iObserver.CallHoldL( telNumber, isSipUri );
break;
}
@@ -288,11 +242,6 @@
iObserver.ConferenceCallL();
break;
}
- case NMusSessionInformationApi::EConferenceTerminated:
- {
- iObserver.ConferenceCallLTerminated();
- break;
- }
default:
{
@@ -322,3 +271,15 @@
MUS_LOG( "mus: [MUSAOP] <- CMusAvaCallEventMonitor::RunError" )
return aError;
}
+
+
+// --------------------------------------------------------------------------
+// CMusAvaCallEventMonitor::IsSipUri()
+// --------------------------------------------------------------------------
+//
+TBool CMusAvaCallEventMonitor::IsSipUri( const TDesC& aTelNumber ) const
+ {
+ _LIT( KSipPrefix, "sip:" );
+ TPtrC prefix = aTelNumber.Left( KSipPrefix().Length() );
+ return prefix.Compare( KSipPrefix ) == 0;
+ }
--- a/mmsharing/mmshavailability/src/musavacapability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavacapability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -23,14 +23,11 @@
#include "musavacapabilitycontext.h"
#include "mmusavacapabilityqueryobserver.h"
#include "mussettings.h"
-#include "mussettingskeys.h"
#include <e32math.h>
#include <uri8.h>
#include <escapeutils.h>
-//#include <sip.h>
#include <sipservertransaction.h>
-//#include <sipclienttransaction.h>
#include <sipacceptcontactheader.h>
#include <sipcontactheader.h>
#include <siprequestelements.h>
@@ -209,6 +206,9 @@
aResponseContent.AttributeFields().AppendL( type );
CleanupStack::Pop( type );
+ //Add fast startup mode, if supported
+ AddFastModeL( aResponseContent );
+
MUS_LOG( "mus: [MUSAVA] Adding media line to SDP" )
//media line
CSdpMediaField* mediaLine = MediaLineLC(
@@ -340,6 +340,54 @@
return codecs;
}
+// -----------------------------------------------------------------------------
+// CMusAvaCapability::ResolveFastModeL
+// -----------------------------------------------------------------------------
+//
+MusSettingsKeys::TFastMode CMusAvaCapability::ResolveFastModeL(
+ CSdpDocument& aSDP )
+ {
+ MUS_LOG( "mus: [MUSAVA]: -> CMusAvaCapability::ResolveFastModeL" )
+ MusSettingsKeys::TFastMode mode = MusSettingsKeys::EFastModeOff;
+ if ( MultimediaSharingSettings::FastStartupModeL() ==
+ MusSettingsKeys::EFastModeOn )
+ {
+ MUS_LOG( "mus: [MUSAVA] Checking if a=keywds:fastmode present..." )
+ const CSdpAttributeField* keywds = CMusAvaCapability::Attribute(
+ MusAvaCapabilityContext::SDPStringL(
+ SdpCodecStringConstants::EAttributeKeywds ),
+ aSDP );
+ if ( keywds &&
+ keywds->Value().Compare( KCapabilitySDPAttributeFastMode ) == 0 )
+ {
+ mode = MusSettingsKeys::EFastModeOn;
+ }
+ }
+ MUS_LOG( "mus: [MUSAVA]: <- CMusAvaCapability::ResolveFastModeL" )
+ return mode;
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAvaCapability::ResolveFastModeL
+// -----------------------------------------------------------------------------
+//
+void CMusAvaCapability::AddFastModeL( CSdpDocument& aSdp )
+ {
+ MUS_LOG( "mus: [MUSAVA]: -> CMusAvaCapability::AddFastModeL" )
+ if ( MultimediaSharingSettings::FastStartupModeL() ==
+ MusSettingsKeys::EFastModeOn )
+ {
+ CSdpAttributeField* fastmode = CSdpAttributeField::NewLC(
+ MusAvaCapabilityContext::SDPStringL(
+ SdpCodecStringConstants::EAttributeKeywds ),
+ KCapabilitySDPAttributeFastMode );
+
+ aSdp.AttributeFields().AppendL( fastmode );
+ CleanupStack::Pop( fastmode );
+ }
+ MUS_LOG( "mus: [MUSAVA]: <- CMusAvaCapability::AddFastModeL" )
+ }
+
// -----------------------------------------------------------------------------
// CMusAvaCapability::Attribute
--- a/mmsharing/mmshavailability/src/musavacapabilityquery.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavacapabilityquery.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -366,7 +366,10 @@
type->Value().Compare( KCapabilitySDPAttributeType ) == 0 ) ;
}
-
+
+ MusSettingsKeys::TFastMode mode = CMusAvaCapability::ResolveFastModeL( aSDP );
+ Capability().Exchange().QueryObserver().FastModeResolved( mode );
+
return valid;
}
--- a/mmsharing/mmshavailability/src/musavacapabilityquerybase.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavacapabilityquerybase.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -32,14 +32,13 @@
#include <sipstrconsts.h>
#include <sipresponseelements.h>
#include <sipaddress.h>
-#include <sipfromheader.h>
#include <sdpdocument.h>
#include <sdporiginfield.h>
#include <sdpconnectionfield.h>
#include <sdpattributefield.h>
#include <sdpmediafield.h>
#include <e32math.h>
-#include <e32property.h>
+
#include "mussettings.h"
#include "muslogger.h"
@@ -49,14 +48,6 @@
#include "musavaterminal.h"
#include "musavacapabilitycontext.h"
#include "musavasipheaderutil.h"
-#include "mussesseioninformationapi.h"
-
-_LIT8( KMusSipPrefix, "sip:" );
-_LIT8( KMusTelPrefix, "tel:" );
-_LIT8( KMusPlusSign, "+" );
-_LIT8( KMusAtSign, "@" );
-
-const TInt KMusMinDigitCountInTelNumber = 7;
// --------------------------------------------------------------------------
// C++ constructor
@@ -161,7 +152,6 @@
CleanupStack::PopAndDestroy(sipAddress);
HBufC8* sipAddress8 = EscapeUtils::ConvertFromUnicodeToUtf8L( aSipAddress );
- iRemoteUri.Copy( sipAddress8->Des() ) ;
CleanupStack::PushL( sipAddress8 );
iTerminal = &Capability().Exchange().TerminalL( sipAddress8->Des() );
CleanupStack::PopAndDestroy( sipAddress8 ) ;
@@ -240,24 +230,7 @@
iOriginator->Uri().UriDes());
MUS_LOG( "mus: [MUSAVA] AddPreferredIdentityHeaderL -> Success ")
AddContactHeaderL( headers );
- MUS_LOG( "mus: [MUSAVA] AddContactHeaderL -> Success ")
-
- TBool usePrivacy = MultimediaSharingSettings::PrivacySetting();
- if ( usePrivacy )
- {
- NMusSessionInformationApi::TMusClirSetting clir =
- NMusSessionInformationApi::ESendOwnNumber;
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusClirSetting,
- reinterpret_cast<TInt&>( clir ) );
- usePrivacy = ( clir == NMusSessionInformationApi::EDoNotSendOwnNumber );
- }
-
- if (usePrivacy)
- {
- CMusAvaSipheaderUtil::AddPrivacyHeaderL( headers );
- MUS_LOG( "mus: [MUSAVA] AddPrivacyHeaderL -> Success ")
- }
+ MUS_LOG( "mus: [MUSAVA] AddContactHeaderL -> Success ")
//terminal ID
if ( Capability().Exchange().TerminalId().Length() > 0 )
{
@@ -278,16 +251,6 @@
CleanupStack::Pop( remoteUri );
CleanupStack::PushL( request );
- if (usePrivacy)
- {
- _LIT8( KAnonymous,
- "\"Anonymous\" <sip:anonymous@anonymous.invalid>" );
- CSIPFromHeader* from = CSIPFromHeader::DecodeL( KAnonymous );
- CleanupStack::PushL( from );
- request->SetFromHeaderL( from );
- CleanupStack::Pop( from );
- }
-
request->SetMethodL(
SIPStrings::StringF( SipStrConsts::EOptions ) );
@@ -507,7 +470,7 @@
//application
CSdpAttributeField* application = CSdpAttributeField::NewLC(
MusAvaCapabilityContext::SDPStringL(
- SdpCodecStringConstants::EMediaApplication ),
+ SdpCodecStringConstants::EMediaApplication ),
KCapabilitySwisApplication );
aResponseContent.AttributeFields().AppendL( application );
@@ -526,13 +489,16 @@
aResponseContent.AttributeFields().AppendL( type );
CleanupStack::Pop( type );
+ // Fast startup mode
+ CMusAvaCapability::AddFastModeL( aResponseContent );
+
MUS_LOG( "mus: [MUSAVA] Adding media line to SDP" )
//media line
- CSdpMediaField* mediaLine=CSdpMediaField::NewLC(
- MusAvaCapabilityContext::SDPStringL
+ CSdpMediaField* mediaLine = CSdpMediaField::NewLC(
+ MusAvaCapabilityContext::SDPStringL
(SdpCodecStringConstants::EMediaVideo ),
NULL,
- MusAvaCapabilityContext::SDPStringL
+ MusAvaCapabilityContext::SDPStringL
(SdpCodecStringConstants::EProtocolRtpAvp ),
KCapabilitySwisFormatListH263Only );
@@ -572,111 +538,7 @@
aResponseContent.MediaFields().AppendL( mediaLine );
CleanupStack::Pop( mediaLine );
-
MUS_LOG( "mus: [MUSAVA] <- CMusAvaCapabilityQueryBase::OtherSDPHeadersL" )
}
-// --------------------------------------------------------------------------
-// CMusAvaCapabilityQueryBase::ValidateUri
-// --------------------------------------------------------------------------
-//
-TBool CMusAvaCapabilityQueryBase::ValidateUri()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaCapabilityQueryBase::ValidateUri" )
-
- TBool valid = ETrue;
-
- const TDesC8& originator = iOriginator->Uri().UriDes();
- MUS_LOG_TDESC8( "mus: [MUSAVA] originator uri: ", originator )
- TBuf8<KMaxRemoteUriLength> sipUri;
- TBuf8<KMaxRemoteUriLength> telUri;
-
- if ( iRemoteUri.FindF( KMusSipPrefix ) != KErrNotFound )
- {
- sipUri.Copy( iRemoteUri );
- MUS_LOG_TDESC8( "mus: [MUSAVA] sip uri: ", sipUri )
- }
- else if ( iRemoteUri.FindF( KMusTelPrefix ) != KErrNotFound )
- {
- telUri.Copy( iRemoteUri );
- MUS_LOG_TDESC8( "mus: [MUSAVA] tel uri: ", telUri )
- }
-
- // Tel Uri case
- if ( telUri.Length() > 0 )
- {
- telUri.Trim();
-
- // Remove prefix and plus sign from remote uri if there is
- TPtrC8 telUriWithoutPrefix =
- telUri.Right( telUri.Length() - KMusTelPrefix().Length() );
- MUS_LOG_TDESC8( "mus: [MUSAVA] telUriWithoutPrefix: ", telUriWithoutPrefix )
-
- TPtrC8 numberPartOfTelUri =
- telUriWithoutPrefix.Find( KMusPlusSign ) == 0 ?
- telUriWithoutPrefix.Right( telUriWithoutPrefix.Length() - 1 ) :
- telUriWithoutPrefix;
- MUS_LOG_TDESC8( "mus: [MUSAVA] numberPartOfTelUri: ", numberPartOfTelUri )
-
- // Remove prefix and domain part from uri in profile
- TPtrC8 originatorWithoutPrefix =
- originator.Right( originator.Length() - KMusSipPrefix().Length() );
- MUS_LOG_TDESC8( "mus: [MUSAVA] originatorWithoutPrefix: ", originatorWithoutPrefix )
-
- TPtrC8 usernameOfOriginator =
- originatorWithoutPrefix.Find( KMusPlusSign ) == 0 ?
- originatorWithoutPrefix.Right( originatorWithoutPrefix.Length() - 1 ) :
- originatorWithoutPrefix;
-
- TInt posOfAtSign = originatorWithoutPrefix.Find( KMusAtSign );
-
- if ( posOfAtSign >= KMusMinDigitCountInTelNumber )
- {
- usernameOfOriginator.Set(
- originatorWithoutPrefix.Mid( (originatorWithoutPrefix.Find( KMusAtSign )
- - KMusMinDigitCountInTelNumber), KMusMinDigitCountInTelNumber ) );
- MUS_LOG_TDESC8( "mus: [MUSAVA] usernameOfOriginator: ", usernameOfOriginator )
- }
-
- else
- {
- usernameOfOriginator.Set( originatorWithoutPrefix.Left( posOfAtSign ) );
- MUS_LOG_TDESC8( "mus: [MUSAVA] usernameOfOriginator: ", usernameOfOriginator )
- }
-
- if ( numberPartOfTelUri.Length() >= KMusMinDigitCountInTelNumber )
- {
- numberPartOfTelUri.Set( numberPartOfTelUri.Right( KMusMinDigitCountInTelNumber ) );
- MUS_LOG_TDESC8( "mus: [MUSAVA] numberPartOfTelUri: ", numberPartOfTelUri )
- }
-
-
- if ( numberPartOfTelUri == usernameOfOriginator )
- {
- MUS_LOG( "mus: Recipient address is evaluated to be same as in profile.\
- We do not send OPTIONS")
- valid = EFalse;
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaCapabilityQueryBase::ValidateUri" )
- return valid;
- }
- }
-
- // SIP Uri case
- if ( sipUri.Length() > 0 )
- {
- if ( !originator.Compare( sipUri ) )
- {
- MUS_LOG( "mus: Recipient address is evaluated to be same as in profile.\
- We do not send OPTIONS")
- valid = EFalse;
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaCapabilityQueryBase::ValidateUri" )
- return valid;
- }
- }
-
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaCapabilityQueryBase::ValidateUri" )
- return valid;
- }
-
-
--- a/mmsharing/mmshavailability/src/musavacapabilitysipagent.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavacapabilitysipagent.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -30,7 +30,6 @@
#include <sipstrconsts.h>
#include <sipresponseelements.h>
-#include "mussettings.h"
#include "muslogger.h"
#include "musavacapabilityexchange.h"
#include "musavacapabilityquery.h"
@@ -165,25 +164,12 @@
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaCapabilitySipAgent::IncomingRequest" )
TInt retval = KErrNone;
- MusSettingsKeys::TOperatorVariant variantValue = MusSettingsKeys::EStandard;
- TRAPD( error, variantValue =
- MultimediaSharingSettings::OperatorVariantSettingL() );
- if( error )
- {
- MUS_LOG("CMusAvaCapabilitySipAgent::IncomingRequest\
- Get OperatorVariantSettingL worng");
- }
-
if ( aTransaction->Type() ==
SIPStrings::StringF( SipStrConsts::EOptions ) )
{
- // Answer 200OK when CS call remain at Availability States
- //or at EMusAvaOptionNotAvailable State in operatorspecific mode
+ // Answer 200OK only when CS call remain at Availability States
if ( MMusAvaObserver::EMusAvaStatusNotExecuted <=
- iAvailabilityObserver.AvailabilityPluginState()
- ||( ( iAvailabilityObserver.AvailabilityPluginState() ==
- MMusAvaObserver::EMusAvaOptionNotAvailable )
- && ( variantValue == MusSettingsKeys::EOperatorSpecific )))
+ iAvailabilityObserver.AvailabilityPluginState() )
{
retval =
iCapabilityExchange.QueryObserver().CapabilityQueryAnswered() ?
--- a/mmsharing/mmshavailability/src/musavacapabilitytimer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavacapabilitytimer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -56,18 +56,6 @@
{
iNotify->OnExpiredL( iStatus.Int() );
}
-
-// -------------------------------------------------------------------------
-// If RunL() leaves,It should be handled here.
-// -------------------------------------------------------------------------
-//
-TInt CMusAvaCapabilityTimer::RunError( TInt aError )
- {
- // Nothing can be done here.
- aError = KErrNone;
-
- return aError;
- }
// ---------------------------------------------------------------------------
--- a/mmsharing/mmshavailability/src/musavaconnectionavailability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavaconnectionavailability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -30,6 +30,7 @@
#include "mussettings.h"
#include "mussettingskeys.h"
#include "muslogger.h"
+#include "musfactorysettings.h"
#include <e32base.h>
#include <rconnmon.h>
@@ -126,9 +127,10 @@
// ---------------------------------------------------------------------------
// From CMusAvaAvailability.
-// Executes for the availability.
+// Executes for the availability
// ---------------------------------------------------------------------------
//
+
void CMusAvaConnectionAvailability::DoExecuteL()
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaConnectionAvailability::DoExecuteL()" )
@@ -136,36 +138,23 @@
MUS_LOG( "mus: [MUSAVA] Check network mode" )
RMobilePhone::TMobilePhoneNetworkMode networkmode =
iNetworkModeStatus->PhoneNetworkMode();
- if ( networkmode == RMobilePhone::ENetworkModeWcdma||
- networkmode == RMobilePhone::ENetworkModeTdcdma ||
- networkmode == RMobilePhone::ENetworkModeCdma95 ||
- networkmode == RMobilePhone::ENetworkModeCdma2000 )
+
+ TBool SupportedNetwork = EFalse;
+
+ TRAPD( err, SupportedNetwork = MusFactorySettings::IsSupportedL(networkmode) );
+
+
+ if ( err != KErrNone )
+ {
+ MUS_LOG1( "mus: [MUSAVA] Reading activation setting error:%d", err )
+ SetState( MMusAvaObserver::EMusActivationError );
+ }
+
+ else if ( SupportedNetwork )
{
- status = NetworkRegistrationAndSettingsL();
- if ( status == MMusAvaObserver::EMusAvaStatusAvailable )
- {
- MUS_LOG( "mus: [MUSAVA] Network available" )
- SetState( status );
- }
- else
- {
- MUS_LOG1( "mus: [MUSAVA] Activation error: %d", status )
- SetState( status );
- }
- }
- else if( networkmode == RMobilePhone::ENetworkModeGsm)
- {
- TInt edgeDtmSupport = KErrNone;
- TRAPD( err, edgeDtmSupport =
- MultimediaSharingSettings::EdgeDtmSupportSettingL() );
- if( err != KErrNone )
- {
- MUS_LOG1( "mus: [MUSAVA] Reading activation setting error:%d", err )
- SetState( MMusAvaObserver::EMusActivationError );
- }
- else if( edgeDtmSupport == MusSettingsKeys::EDtmModeAllowed )
- {
- MUS_LOG( "mus: [MUSAVA] Edge Network Mode allowed in settings " )
+ if ( networkmode == RMobilePhone::ENetworkModeGsm )
+ {
+ MUS_LOG( "mus: [MUSAVA] Edge Network Mode allowed in settings " )
if( iConnectionMonitor->ConnectionCount() > 0)
{
MUS_LOG( "mus: [MUSAVA] Atlease one packect connection exists " )
@@ -175,39 +164,27 @@
{
MUS_LOG( "mus: [MUSAVA] No Packet connection exists now." )
SetState( MMusAvaObserver::EMusAvaEdgeDtmStatusUnknown );
- }
- }
- else
- {
- MUS_LOG( "mus: [MUSAVA] Edge Network Mode Not allowed in settings " )
- SetState( MMusAvaObserver::EMusAvaNetworkType );
- }
- }
- else
- {
+ }
+ }
+
+ else
+ {
+ status = NetworkRegistrationAndSettingsL();
+ MUS_LOG1( "mus: [MUSAVA] Activation Status: %d", status )
+ SetState( status );
+ }
+ }
+ else
+ {
MUS_LOG( "mus: [MUSAVA] Network not available" )
SetState( MMusAvaObserver::EMusAvaNetworkType );
- }
-
+ }
+
MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::DoExecuteL()" )
}
// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-TBool CMusAvaConnectionAvailability::OperatorVariant()
- {
- MusSettingsKeys::TOperatorVariant variantValue = MusSettingsKeys::EStandard;
- TRAPD( error, variantValue =
- MultimediaSharingSettings::OperatorVariantSettingL() );
-
- return ( variantValue == MusSettingsKeys::EOperatorSpecific &&
- error == KErrNone );
-
- }
-
-// ---------------------------------------------------------------------------
// From CMusAvaAvailability.
// Stops execution.
// ---------------------------------------------------------------------------
@@ -235,9 +212,8 @@
return MMusAvaObserver::EMusAvaBearerStatus;
}
-
// ---------------------------------------------------------------------------
-// CMusAvaConnectionAvailability::PhoneNetworkModeStatus
+// CMusAvaConnectionAvailability::PhoneNetworkModeStatus
//
// ---------------------------------------------------------------------------
//
@@ -247,51 +223,28 @@
MUS_LOG( "mus: [MUSAVA] -> CMusAvaConnectionAvailability::\
PhoneNetworkModeStatus()" )
MUS_LOG1( "mus: [MUSAVA] Mobile Phone Network Status = ", aStatus )
+
+ TBool SupportedNetwork = EFalse;
+
+ TRAPD( err, SupportedNetwork = MusFactorySettings::IsSupportedL(aStatus) );
+
+ if ( err != KErrNone || !SupportedNetwork )
+ {
+ MUS_LOG( "mus: [MUSAVA] Network not available" )
+ SetState( MMusAvaObserver::EMusAvaNetworkType );
+ }
+ else
+ {
+ MMusAvaObserver::TAvailabilityStatus status =
+ MMusAvaObserver::EMusActivationError;
+ TRAP_IGNORE( status = NetworkRegistrationAndSettingsL() );
+ SetState( status );
+ }
- switch ( aStatus )
- {
- case RMobilePhone::ENetworkModeWcdma :
- case RMobilePhone::ENetworkModeTdcdma :
- case RMobilePhone::ENetworkModeCdma95:
- case RMobilePhone::ENetworkModeCdma2000:
- {
- MMusAvaObserver::TAvailabilityStatus status =
- MMusAvaObserver::EMusActivationError;
- TRAP_IGNORE( status = NetworkRegistrationAndSettingsL() );
- SetState( status );
- break;
- }
- case RMobilePhone::ENetworkModeGsm : // For EDGE /DTM support
- {
- TInt edgeDtmSupport = 0;
- TRAPD( err, edgeDtmSupport =
- MultimediaSharingSettings::EdgeDtmSupportSettingL() );
- if( err != KErrNone )
- {
- MUS_LOG1( "mus: [MUSAVA] Reading activation setting error:%d", err )
- SetState( MMusAvaObserver::EMusActivationError );
- }
- else if( edgeDtmSupport == MusSettingsKeys::EDtmModeAllowed )
- {
- MUS_LOG( "mus: [MUSAVA] Edge Network supported " )
- SetState( MMusAvaObserver::EMusAvaEdgeDtmStatusUnknown );
- }
- else
- {
- SetState( MMusAvaObserver::EMusAvaNetworkType );
- }
- break;
- }
- default :
- {
- SetState( MMusAvaObserver::EMusAvaNetworkType );
- }
- }
MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::\
PhoneNetworkModeStatus()" )
}
-
// ---------------------------------------------------------------------------
// CMusAvaConnectionAvailability::NetworkRegistrationStatus
//
@@ -301,18 +254,30 @@
RMobilePhone::TMobilePhoneRegistrationStatus aRegStatus )
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaConnectionAvailability::\
-NetworkRegistrationStatus()" )
+ NetworkRegistrationStatus()" )
MUS_LOG1( "Mobile Phone Network Status = ", aRegStatus )
-
- if( OperatorVariant() &&
+
+ MusSettingsKeys::TActivation activation = MusSettingsKeys::ENever;
+
+ TRAPD( err, activation = MultimediaSharingSettings::ActivationSettingL() );
+ if( err != KErrNone )
+ {
+ MUS_LOG1( "mus: [MUSAVA] Reading activation setting error:%d", err )
+ SetState( MMusAvaObserver::EMusActivationError );
+ }
+ else
+ {
+ if( activation == MusSettingsKeys::EActiveInHomeNetworks &&
aRegStatus != RMobilePhone::ERegisteredOnHomeNetwork )
- {
- MUS_LOG( "mus: [MUSAVA] Roaming not allowed" )
- SetState( MMusAvaObserver::EMusAvaRoamingError );
+ {
+ MUS_LOG( "mus: [MUSAVA] -> CMusAvaConnectionAvailability::\
+ NetworkRegistrationStatus()" )
+ SetState( MMusAvaObserver::EMusAvaRoamingError );
+ }
}
MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::\
-NetworkRegistrationStatus()" )
+ NetworkRegistrationStatus()" )
}
@@ -349,9 +314,9 @@
SetState( MMusAvaObserver::EMusAvaConnectionErr );
}
else
- {
- iConnectionMonitor->SetConnectionID( connectionId );
- }
+ {
+ iConnectionMonitor->SetConnectionID( connectionId );
+ }
}
break;
}
@@ -362,12 +327,13 @@
{
SetState( MMusAvaObserver::EMusAvaConnectionErr );
}
- break;
- }
- case EConnMonConnectionStatusChange:
+ break;
+ }
+
+ case EConnMonConnectionStatusChange:
{
MUS_LOG( "mus: [MUSAVA] Event type = \
-EConnMonConnectionStatusChange" )
+ EConnMonConnectionStatusChange" )
const CConnMonConnectionStatusChange* connectionStatusChange
= (const CConnMonConnectionStatusChange*)(&aConnMonEvent);
TInt connStatus = connectionStatusChange->ConnectionStatus();
@@ -391,7 +357,7 @@
}
break;
}
- case EConnMonNetworkStatusChange:
+ case EConnMonNetworkStatusChange:
{
MUS_LOG( "mus: [MUSAVA] Event type = EConnMonNetworkStatusChange" )
const CConnMonNetworkStatusChange* networkStatusChange
@@ -402,36 +368,36 @@
{
if( EConnMonStatusAttached == networkStatus ||
EConnMonStatusActive == networkStatus )
- {
- SetState( NetworkRegistrationAndSettingsL() );
- }
+ {
+ SetState( NetworkRegistrationAndSettingsL() );
+ }
else
- {
- SetState( MMusAvaObserver::EMusAvaConnectionErr );
- }
+ {
+ SetState( MMusAvaObserver::EMusAvaConnectionErr );
+ }
}
break;
}
case EConnMonNetworkRegistrationChange:
{
MUS_LOG( "mus: [MUSAVA] Event type = \
-EConnMonNetworkRegistrationChange" )
+ EConnMonNetworkRegistrationChange" )
const CConnMonNetworkRegistrationChange* registrationChange
= (const CConnMonNetworkRegistrationChange*)(&aConnMonEvent);
TInt registrationStatus = registrationChange->RegistrationStatus();
MUS_LOG1( "mus: [MUSAVA] RegistrationStatus = %d",
registrationStatus )
- if( connId == EBearerIdWCDMA || connId == EBearerIdWcdmaCSD )
- {
- if ( ENetworkRegistrationRoaming == registrationStatus )
- {
- SetState( MMusAvaObserver::EMusAvaRoamingError );
+ if( connId == EBearerIdWCDMA || connId == EBearerIdWcdmaCSD )
+ {
+ if ( ENetworkRegistrationRoaming == registrationStatus )
+ {
+ SetState( MMusAvaObserver::EMusAvaRoamingError );
+ }
+ else
+ {
+ SetState( NetworkRegistrationAndSettingsL() );
+ }
}
- else
- {
- SetState( NetworkRegistrationAndSettingsL() );
- }
- }
break;
}
case EConnMonBearerChange:
@@ -467,8 +433,17 @@
case EConnMonPacketDataUnavailable:
{
- SetState( MMusAvaObserver::EMusAvaNetworkType );
- MUS_LOG( "mus: [MUSAVA] EConnMonPacketDataUnavailable" )
+ if( connId == musConnID )
+ {
+ SetState( MMusAvaObserver::EMusAvaNetworkType );
+ MUS_LOG( "mus: [MUSAVA] EConnMonPacketDataUnavailable" )
+ }
+ else
+ {
+ MUS_LOG2(
+"mus: [MUSAVA] different connId (%d,%d) ignore EConnMonPacketDataUnavailable",
+ musConnID, connId )
+ }
break;
}
@@ -495,44 +470,48 @@
//
MMusAvaObserver::TAvailabilityStatus CMusAvaConnectionAvailability::
ManualActivationL()
- {
+ {
MUS_LOG( "mus: [MUSAVA] -> CMusAvaConnectionAvailability::\
-ManualActivationL()" )
+ ManualActivationL()" )
- if( OperatorVariant() )
+ MusSettingsKeys::TOperatorVariant operatorVariant =
+ MusSettingsKeys::EStandard;
+ operatorVariant = MultimediaSharingSettings::OperatorVariantSettingL();
+
+ if( operatorVariant == MusSettingsKeys::EOperatorSpecific )
{
MUS_LOG( "mus: [MUSAVA] Operator Specific No Manual query" )
MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::\
-NetworkRegistrationAndSettingsL()" )
+ NetworkRegistrationAndSettingsL()" )
return MMusAvaObserver::EMusActivationError;
}
- else
- {
- if ( iSettings.ManualActivation() ==
- MMusAvaSettings::EActivationAllowed )
- {
- MUS_LOG( "mus: [MUSAVA] Manual activation allowed" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::\
-ManualActivationL()" )
- return MMusAvaObserver::EMusAvaStatusAvailable;
- }
- else if ( iSettings.ManualActivation() ==
- MMusAvaSettings::EActivationNotExecuted )
- {
- MUS_LOG( "mus: [MUSAVA] Manual activation is not executed" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::\
-ManualActivationL()" )
- return MMusAvaObserver::EMusAvaManualActivation;
- }
- else
- {
- MUS_LOG( "mus: [MUSAVA] Activation error" )
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::\
-ManualActivationL()" )
- return MMusAvaObserver::EMusActivationError;
- }
- }
- }
+ else
+ {
+ if ( iSettings.ManualActivation() ==
+ MMusAvaSettings::EActivationAllowed )
+ {
+ MUS_LOG( "mus: [MUSAVA] Manual activation allowed" )
+ MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::\
+ ManualActivationL()" )
+ return MMusAvaObserver::EMusAvaStatusAvailable;
+ }
+ else if ( iSettings.ManualActivation() ==
+ MMusAvaSettings::EActivationNotExecuted )
+ {
+ MUS_LOG( "mus: [MUSAVA] Manual activation is not executed" )
+ MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::\
+ ManualActivationL()" )
+ return MMusAvaObserver::EMusAvaManualActivation;
+ }
+ else
+ {
+ MUS_LOG( "mus: [MUSAVA] Activation error" )
+ MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::\
+ ManualActivationL()" )
+ return MMusAvaObserver::EMusActivationError;
+ }
+ }
+ }
// -------------------------------------------------------------------------
// CMusAvaConnectionAvailability::NetworkRegistrationAndSettingsL
@@ -543,7 +522,7 @@
NetworkRegistrationAndSettingsL()
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaConnectionAvailability::\
-NetworkRegistrationAndSettingsL()" )
+ NetworkRegistrationAndSettingsL()" )
MUS_LOG( "mus: [MUSAVA] Check registration network status" )
MUS_LOG( "mus: [MUSAVA] Check roaming" )
@@ -556,35 +535,33 @@
MusSettingsKeys::TActivation activation = MusSettingsKeys::EAlwaysActive;
activation = MultimediaSharingSettings::ActivationSettingL();
- TBool operatorVariant = OperatorVariant();
-
+
MUS_LOG1( "mus: [MUSAVA] ActivationSetting returned %d",
activation )
-
- //VS off
- if ( activation != MusSettingsKeys::EAlwaysActive )
+
+ if ( activation == MusSettingsKeys::EAlwaysActive )
+ {
+ status = MMusAvaObserver::EMusAvaStatusAvailable;
+ }
+ else if ( activation == MusSettingsKeys::EActiveInHomeNetworks &&
+ regStatus == RMobilePhone::ERegisteredOnHomeNetwork )
+ {
+ status = MMusAvaObserver::EMusAvaStatusAvailable;
+ }
+ else if( activation == MusSettingsKeys::EActiveInHomeNetworks &&
+ regStatus == RMobilePhone::ERegisteredRoaming )
+ {
+ status = ManualActivationL();
+ }
+ else
{
status = MMusAvaObserver::EMusActivationError;
}
- //VS on
- else
- {
- //roaming
- if( regStatus == RMobilePhone::ERegisteredRoaming )
- {
- status = ManualActivationL();
- }
- //other states including also not registered states, thus
- //failing of PDP context activation will be detected elsewhere
- else
- {
- status = MMusAvaObserver::EMusAvaStatusAvailable;
- }
- }
MUS_LOG( "mus: [MUSAVA] <- CMusAvaConnectionAvailability::\
-NetworkRegistrationAndSettingsL()" )
+ NetworkRegistrationAndSettingsL()" )
return status;
}
+// End of File
--- a/mmsharing/mmshavailability/src/musavacontactavailability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavacontactavailability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -16,36 +16,22 @@
*/
-
#include "musavacontactavailability.h"
#include "musavaavailabilityobserver.h"
#include "musavasettingsimp.h"
#include "musavaobserver.h"
#include "muslogger.h"
#include "mussettings.h"
-#include "musavacalleventmonitor.h"
-#include <CPbkContactItem.h>
-#include <CPbkContactEngine.h>
-#include <CPbkFieldInfo.h>
-#include <TPbkContactItemField.h>
#include <cntviewbase.h>
#ifdef UNIT_TESTING // if unit testing
#include <digia/eunit/eunitdecorators.h>
#endif // UNIT_TESTING
-const TInt KNumberMatchingDigitsRequired = 7;
const TInt KContactsArraySize = 10;
-
-_LIT( KMusAvaSip, "sip:" );
_LIT( KMusAvaTel, "tel:" );
_LIT( KMusAvaPlus, "+" );
-_LIT( KMusAvaAtSign , "@" );
-_LIT( KMusEmptyStringSymbol, "" );
-_LIT( KMusSpaceSymbol, " " );
-_LIT( KMusAvaTestString, "*#" );
-
CMusAvaContactAvailability* CMusAvaContactAvailability::NewL(
MMusAvaAvailabilityObserver& aObserver,
@@ -87,12 +73,6 @@
~CMusAvaContactAvailability()" )
delete iContactName;
iContactName = NULL;
- if ( iPhoneStatus )
- {
- iPhoneStatus->Cancel();
- }
- delete iPhoneStatus;
- iPhoneStatus = NULL;
MUS_LOG( "mus: [MUSAVA] <- CMusAvaContactAvailability::\
~CMusAvaContactAvailability()" )
}
@@ -112,7 +92,6 @@
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::ConstructL()" )
iOperatorVariant = MultimediaSharingSettings::OperatorVariantSettingL();
- iPhoneStatus = CMusAvaCallEventMonitor::NewL( *this );
MUS_LOG( "mus: [MUSAVA] <- CMusAvaContactAvailability::ConstructL()" )
}
@@ -124,94 +103,12 @@
void CMusAvaContactAvailability::DoExecuteL()
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::DoExecuteL()" )
- iPhoneStatus->StartMonitoringL();
-
- CContactIdArray* idArray = NULL;
-
- #ifdef UNIT_TESTING // if unit testing
- EUNIT_DISABLE_ALLOC_DECORATOR;
- #endif // UNIT_TESTING
- CPbkContactEngine* pbkContactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( pbkContactEngine );
-
- // resolve the name order
- CContactViewBase& contactView = pbkContactEngine->AllContactsView();
- const RContactViewSortOrder& sortOrder = contactView.SortOrderL();
- #ifdef UNIT_TESTING // if unit testing
- EUNIT_ENABLE_ALLOC_DECORATOR;
- #endif // UNIT_TESTING
-
- iBeginWithFirstName = ETrue;
- TBool foundOrder = EFalse;
- for( TInt i = 0; i < sortOrder.Count() && !foundOrder; ++i )
- {
- if ( sortOrder[i] == KUidContactFieldFamilyName )
- {
- iBeginWithFirstName = EFalse;
- foundOrder = ETrue;
- }
- else if ( sortOrder[i] == KUidContactFieldGivenName )
- {
- iBeginWithFirstName = ETrue;
- foundOrder = ETrue;
- }
- }
CDesCArrayFlat* contactsArray
= new ( ELeave ) CDesCArrayFlat( KContactsArraySize );
CleanupStack::PushL( contactsArray );
- if ( ContactL( idArray, *pbkContactEngine ) )
- {
- CleanupStack::PushL( idArray );
-
- TInt idArrayCount = idArray->Count();
- MUS_LOG1( "mus: [MUSAVA] idArray->Count %d", idArrayCount )
- CPbkContactItem* pbkItem = NULL;
- TPbkFieldId fieldId = ContactIdSearch( *idArray, *pbkContactEngine );
-
- for ( TInt i = 0; i < idArrayCount; i++ )
- {
- MUS_LOG1( "mus: [MUSAVA] i %d", i )
- TContactItemId itemId( KErrNotFound );
- itemId = ( *idArray )[i];
-
- TRAPD( error, pbkItem = pbkContactEngine->ReadContactL( itemId ) );
-
- if ( !error )
- {
- TBool found = EFalse;
- if ( fieldId == EPbkFieldIdShareView )
- {
- found = ResolveAddressesL(
- *pbkItem, contactsArray, EPbkFieldIdShareView );
- }
- else if( fieldId == EPbkFieldIdSIPID)
- {
- found = ResolveAddressesL(
- *pbkItem, contactsArray, EPbkFieldIdSIPID );
- }
-
- if ( !found )
- {
- PhoneResolutionL( *pbkItem, contactsArray );
- }
-
- // tbd: causes test case to fail
- // break;
- }
-
- delete pbkItem;
- pbkItem = NULL;
- }
-
- idArray->Reset();
- CleanupStack::PopAndDestroy( idArray );
- }
- else
- {
- ActiveCallL( contactsArray );
- }
+ ActiveCallL( contactsArray );
iSettings.SetSipAddressesL( *contactsArray );
@@ -219,55 +116,11 @@
CleanupStack::PopAndDestroy( contactsArray );
- CleanupStack::PopAndDestroy( pbkContactEngine );
-
SetState( MMusAvaObserver::EMusAvaStatusAvailable );
MUS_LOG( "mus: [MUSAVA] <- CMusAvaContactAvailability::DoExecuteL()" )
}
-// -------------------------------------------------------------------------
-// This function is called when a cs call is connected.
-// -------------------------------------------------------------------------
-//
-void CMusAvaContactAvailability::CallConnectedL( const TDesC& aTelNumber )
- {
- MUS_LOG( "mus: [MUSAVA] \
- -> CMusAvaContactAvailability::CallConnectedL()" )
-
- iSettings.SetTelNumberL(aTelNumber);
- DoExecuteL();
-
- MUS_LOG( "mus: [MUSAVA] \
- <- CMusAvaContactAvailability::CallConnectedL()" )
- }
-void CMusAvaContactAvailability::ConferenceCallL()
- {
- }
-
-
-// -------------------------------------------------------------------------
-// This function is called when a cs call goes hold
-// -------------------------------------------------------------------------
-//
-void CMusAvaContactAvailability::CallHoldL( const TDesC& /*aTelNumber*/ )
- {
- }
-
-
-// -------------------------------------------------------------------------
-// This function is called when a cs call goes into a state
-// that is not connected.
-// -------------------------------------------------------------------------
-//
-void CMusAvaContactAvailability::NoActiveCallL()
- {
- }
-
-
-void CMusAvaContactAvailability::ConferenceCallLTerminated ()
- {
- }
// -------------------------------------------------------------------------
//
@@ -279,6 +132,8 @@
const TDesC& phoneNumber = iSettings.TelNumber();
TInt retval = EFalse;
+ const MDesCArray& addresses = iSettings.SipAddresses();
+ TInt addressesCount = addresses.MdcaCount();
if ( phoneNumber.Length() > 0 &&
( iOperatorVariant == MusSettingsKeys::EOperatorSpecific ||
@@ -299,9 +154,19 @@
CleanupStack::PopAndDestroy( tmpDescriptor );
retval = ETrue;
}
+ else if ( addressesCount > 0 )
+ {
+ MUS_LOG1( "mus: [MUSAVA] addresses.MdcaCount() %d",
+ addressesCount )
+ const TDesC& sipAddress = addresses.MdcaPoint( 0 );
+ MUS_LOG_TDESC( "mus: [MUSAVA] SIP Address: ",
+ sipAddress )
+ aContactsArray->AppendL( sipAddress );
+ retval = ETrue;
+ }
else
{
- MUS_LOG( "mus: [MUSAVA] Phone number not found " )
+ MUS_LOG( "mus: [MUSAVA] Phone number or SIP URL not found " )
retval = EFalse;
}
MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\
@@ -310,575 +175,12 @@
return retval;
}
-
-// -------------------------------------------------------------------------
-//
-// -------------------------------------------------------------------------
-//
-TBool CMusAvaContactAvailability::ContactL(
- CContactIdArray*& aContactIdArray,
- CPbkContactEngine& aPbkContactEngine )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::ContactL()" )
- CPbkContactItem* pbkContactItem = NULL;
-
- TInt conRes = EFalse;
-
- TInt err = ContactArrayL( aContactIdArray, aPbkContactEngine );
- if ( !err )
- {
- err = ContactItem( *aContactIdArray, pbkContactItem, aPbkContactEngine );
- // NOTE: KErrNotSupported means there is more than one contact id.
- if ( err == KErrNotSupported )
- {
- iSettings.SetContactId( KErrNotSupported );
- conRes = ETrue;
- }
- else if( err != KErrNone )
- {
- MUS_LOG( "mus: [MUSAVA] No contact item found; contact id = \
- KErrNotFound" )
- conRes = EFalse;
- }
- else
- {
- TContactItemId itemId = pbkContactItem->Id();
- MUS_LOG1( "mus: [MUSAVA] Setting contact id to be %d",
- itemId )
- CleanupStack::PushL( pbkContactItem );
- iSettings.SetContactId( itemId );
- UpdateContactNameL( pbkContactItem->ContactItem() );
- CleanupStack::Pop( pbkContactItem );
- conRes = ETrue;
- }
- }
- MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\
- ContactL return %d", conRes )
-
- delete pbkContactItem;
- pbkContactItem = NULL;
-
- return conRes;
- }
-
-
-// -------------------------------------------------------------------------
-//
-// -------------------------------------------------------------------------
-//
-void CMusAvaContactAvailability::UpdateContactNameL(
- CContactItem& aContactItem )
- {
- MUS_LOG( "mus: [MUSAVA ] -> CMusAvaContactAvailability::\
- UpdateContactName" )
- //TBuf<KMusNameFieldMaxLength> givenName;
- //TBuf<KMusNameFieldMaxLength> familyName;
-
- HBufC* givenName = NULL;
- HBufC* familyName = NULL;
-
- delete iContactName;
- iContactName = NULL;
- iContactName = HBufC::NewL( 0 );
-
- CContactItemFieldSet& fieldSet = aContactItem.CardFields();
-
- TInt pos = fieldSet.Find( KUidContactFieldGivenName );
- if ( pos != KErrNotFound )
- {
- CContactItemField& itemField = fieldSet[pos];
- //givenName = HBufC::NewL( itemField.TextStorage()->Text().Length() );
-
- //givenName.Copy( itemField.TextStorage()->Text().Alloc() );
- givenName = itemField.TextStorage()->Text().AllocLC();
-
- }
- else
- {
- //givenName = KMusEmptyStringSymbol;
- givenName = KMusEmptyStringSymbol().AllocLC();
- }
-
- pos = fieldSet.Find( KUidContactFieldFamilyName );
- if ( pos != KErrNotFound )
- {
- CContactItemField& itemField = fieldSet[pos];
- //familyName = HBufC::NewL( itemField.TextStorage()->Text().Length() );
- //familyName.Copy( field.TextStorage()->Text() );
- familyName = itemField.TextStorage()->Text().AllocLC();
- }
- else
- {
- familyName = KMusEmptyStringSymbol().AllocLC();
- }
-
- TInt strLength = NULL;
- TBool bothNames = givenName->Length() > 0 && familyName->Length() > 0;
-
- if ( bothNames )
- {
- strLength = givenName->Length() +
- KMusSpaceSymbol().Length() +
- familyName->Length();
- }
- else
- {
- strLength = givenName->Length() + familyName->Length();
- }
-
- if ( strLength > iContactName->Length() )
- {
- iContactName = iContactName->ReAllocL( strLength );
- }
-
- if ( strLength > 0 )
- {
- TPtr ptr = iContactName->Des();
- if ( iBeginWithFirstName )
- {
- if ( bothNames )
- {
- ptr.Append( givenName->Des() );
- ptr.Append( KMusSpaceSymbol );
- ptr.Append( familyName->Des() );
- }
- else
- {
- ptr.Append( givenName->Des() );
- ptr.Append( familyName->Des() );
- }
- }
- else
- {
- if ( bothNames )
- {
- ptr.Append( familyName->Des() );
- ptr.Append( KMusSpaceSymbol );
- ptr.Append( givenName->Des() );
- }
- else
- {
- ptr.Append( familyName->Des() );
- ptr.Append( givenName->Des() );
- }
- }
- }
-
- CleanupStack::PopAndDestroy( familyName );
- CleanupStack::PopAndDestroy( givenName );
-
- TRAP_IGNORE( iSettings.SetContactNameL( iContactName->Des() ) )
-
- MUS_LOG( "mus: [MUSAVA ] <- CMusAvaContactAvailability::\
- UpdateContactName" )
- }
-
-
-// -------------------------------------------------------------------------
-//
-// -------------------------------------------------------------------------
-//
-TInt CMusAvaContactAvailability::ContactArrayL(
- CContactIdArray*& aContactIdArray,
- CPbkContactEngine& aPbkContactEngine )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::ContactArrayL()" )
-
- const TDesC& phoneNumber = iSettings.TelNumber();
- TInt retval = KErrNotFound;
-
- if ( phoneNumber.Length() > 0 )
- {
- MUS_LOG( "mus: [MUSAVA] Phone number found " )
- // Instantiate a PhonebookContactEngine object, which represents a
- // connection to the Phonebook contact database:
- #ifdef UNIT_TESTING // if unit testing
- EUNIT_DISABLE_ALLOC_DECORATOR;
- #endif // UNIT_TESTING
- CContactIdArray* tmpContactIdArray =
- aPbkContactEngine.MatchPhoneNumberL(
- phoneNumber,
- KNumberMatchingDigitsRequired );
- #ifdef UNIT_TESTING // if unit testing
- EUNIT_ENABLE_ALLOC_DECORATOR;
- #endif // UNIT_TESTING
- if ( tmpContactIdArray->Count() > 0 )
- {
- aContactIdArray = tmpContactIdArray;
- retval = KErrNone;
- }
- else
- {
- tmpContactIdArray->Reset();
- delete tmpContactIdArray;
- MUS_LOG(
- "mus: [MUSAVA] Phone number not found in CPbkContactEngine" )
- }
- }
- else
- {
- MUS_LOG( "mus: [MUSAVA] Phone number not found " )
- }
-
- MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\
- ContactArrayL return %d", retval )
-
- return retval;
- }
-
-
-// -------------------------------------------------------------------------
-//
-// -------------------------------------------------------------------------
-//
-TInt CMusAvaContactAvailability::ContactItem(
- CContactIdArray& aContactIdArray,
- CPbkContactItem*& aPbkContactItem,
- CPbkContactEngine& aPbkContactEngine )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::ContactItem()" )
- CPbkContactItem* pbkItem = NULL;
- TInt retval = KErrNotFound;
- TInt contactIdsCount = aContactIdArray.Count();
-
- if( contactIdsCount > 1 )
- {
- // NOTE: KErrNotSupported means there is more than one contact id.
- MUS_LOG( "mus: [MUSAVA] More than one Contact ID found." )
- retval = KErrNotSupported;
- }
- else if ( contactIdsCount == 1 )
- {
- // Contact card whose phone number matches that of the other party
- // was found. The ID(s) of the contacts are recorded in iIdArray.
- MUS_LOG( "mus: [MUSAVA] Contact ID found." )
-
- TContactItemId itemId( KErrNotFound );
-
- MUS_LOG1( "mus: [MUSAVA] ID array has <%d> elements",
- contactIdsCount )
- // iterate through the contact cards we consider as belonging to
- // the other party, that is, those saved in iIdArray:
- for ( TInt i = 0; i < contactIdsCount; i++ )
- {
- itemId = ( aContactIdArray )[i];
- MUS_LOG2( "mus: [MUSAVA] Current array index == <%d>, \
- contact ID == <%d>", i, itemId )
- TRAPD( pbkFailure, pbkItem =
- aPbkContactEngine.ReadContactL( itemId ) );
-
- if ( pbkFailure )
- {
- // Contact lookup failed.
- MUS_LOG1( "mus: [MUSAVA] Leave code <%d> occurred at call \
- of ReadContactL.", pbkFailure )
- }
- else
- {
- aPbkContactItem = pbkItem;
- retval = KErrNone;
- }
- }
- }
- else
- {
- MUS_LOG( "mus: [MUSAVA] No contact card whose phone number\
- matches that of the other party" )
- }
-
- MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\
- ContactItem() return %d", retval )
-
- return retval;
- }
-
-// -------------------------------------------------------------------------
-//
-// -------------------------------------------------------------------------
-//
-TBool CMusAvaContactAvailability::PhoneResolutionL( CPbkContactItem& aPbkItem,
- CDesCArrayFlat*& aContactsArray )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::PhoneResolutionL()" )
- TInt retval = ETrue;
- if ( ResolvePhoneContactL( aPbkItem, aContactsArray ) )
- {
- MUS_LOG( "mus: [MUSAVA] Stop Execution" )
- }
- else
- {
- if ( ActiveCallL( aContactsArray ) )
- {
- MUS_LOG( "mus: [MUSAVA] Stop Execution" )
- }
- else
- {
- MUS_LOG( "mus: [MUSAVA] Stop Execution" )
- retval = EFalse;
- }
- }
-
- MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\
- PhoneResolutionL() return %d", retval )
- return retval;
- }
-
-
-// -------------------------------------------------------------------------
-//
-// -------------------------------------------------------------------------
-//
-TBool CMusAvaContactAvailability::ContactId( CPbkContactItem& aPbkItem,
- TPbkFieldId aTPbkFieldId )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::ContactId()" )
-
- CPbkFieldArray& fieldArray = aPbkItem.CardFields();
- TPbkContactItemField itemField;
- TBool returnValue = EFalse;
-
- // Get the number of detail fields of the phonebook contact item.
- const TInt fieldCount( fieldArray.Count() );
-
- for ( TInt index = 0; index < fieldCount && returnValue == EFalse;
- index++ )
- {
- itemField = fieldArray.At( index );
-
- if ( itemField.FieldInfo().Match( aTPbkFieldId ) &&
- itemField.Text().Find( KMusAvaAtSign() ) != KErrNotFound )
- {
- returnValue = ETrue;
- MUS_LOG( "mus: [MUSAVA] Contact id found" )
- }
- }
- MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\
- ContactId() return %d", returnValue )
- return returnValue;
- }
-
-
-// -------------------------------------------------------------------------
-//
-// -------------------------------------------------------------------------
-//
-TPbkFieldId CMusAvaContactAvailability::ContactIdSearch(
- CContactIdArray& aContactIdArray,
- CPbkContactEngine& aPbkContactEngine )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::\
- ContactIdSearch()" )
-
- TInt contactIdsCount = aContactIdArray.Count();
- MUS_LOG1( "mus: [MUSAVA] aContactIdArray.Count %d", \
- contactIdsCount )
-
- CPbkContactItem* pbkItem = NULL;
- TPbkFieldId retFieldId = EPbkFieldIdNone;
-
- for ( TInt i = 0;
- i < contactIdsCount && retFieldId == EPbkFieldIdNone;
- i++ )
- {
- MUS_LOG1( "mus: [MUSAVA] i %d", i )
- TContactItemId itemId( KErrNotFound );
- itemId = ( aContactIdArray )[i];
-
- #ifdef UNIT_TESTING // if unit testing
- EUNIT_DISABLE_ALLOC_DECORATOR;
- #endif // UNIT_TESTING
- TRAPD( error, pbkItem = aPbkContactEngine.ReadContactL( itemId ) )
- #ifdef UNIT_TESTING // if unit testing
- EUNIT_ENABLE_ALLOC_DECORATOR;
- #endif // UNIT_TESTING
- if ( error != KErrNone )
- {
- return retFieldId;
- }
- if ( ContactId( *pbkItem, EPbkFieldIdShareView ) )
- {
- MUS_LOG( "mus: [MUSAVA] Contact have a prefix = \
- EPbkFieldIdShareView" )
- delete pbkItem;
- retFieldId = EPbkFieldIdShareView;
- }
- else if ( ContactId( *pbkItem, EPbkFieldIdSIPID ) )
- {
- MUS_LOG( "mus: [MUSAVA] Contact have a prefix = \
- EPbkFieldIdSIPID" )
- delete pbkItem;
- retFieldId = EPbkFieldIdSIPID;
- }
- else if ( ContactId( *pbkItem, EPbkFieldIdPhoneNumberGeneral ) )
- {
- // this part never run!!!!
- MUS_LOG( "mus: [MUSAVA] Contact have a prefix = \
- EPbkFieldIdPhoneNumberGeneral" )
- delete pbkItem;
- retFieldId = EPbkFieldIdPhoneNumberGeneral;
- }
- else
- {
- MUS_LOG( "mus: [MUSAVA] Contact have no prefix " )
- delete pbkItem;
- }
- }
- return retFieldId;
- }
-
-
-// -------------------------------------------------------------------------
-//
-// -------------------------------------------------------------------------
-//
-TBool CMusAvaContactAvailability::ResolveAddressesL( CPbkContactItem& aPbkItem,
- CDesCArrayFlat*& aContactsArray,
- TPbkFieldId aTPbkFieldId )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::\
- ResolveAddressesL()" )
-
- CPbkFieldArray& fieldArray = aPbkItem.CardFields();
- TPbkContactItemField itemField;
- HBufC* tmpDescriptor( NULL );
- TBool returnValue( EFalse );
-
- // Get the number of detail fields of the phonebook contact item.
- const TInt fieldCount( fieldArray.Count() );
-
- for ( TInt index = 0; index < fieldCount; index++ )
- {
- itemField = fieldArray.At( index );
-
- if ( itemField.FieldInfo().Match( aTPbkFieldId ) &&
- itemField.Text().Find( KMusAvaAtSign() ) != KErrNotFound &&
- ( iOperatorVariant != MusSettingsKeys::EOperatorSpecific ||
- itemField.Text().Find( KMusAvaTestString() ) != KErrNotFound ) )
- {
- returnValue = ETrue;
- MUS_LOG( "mus: [MUSAVA] Contact id found" )
-
- HBufC* sipAddress;
- if ( iOperatorVariant == MusSettingsKeys::EOperatorSpecific )
- {
- sipAddress = HBufC::NewLC( itemField.Text().Length() -
- KMusAvaTestString().Length() );
- TInt pos = itemField.Text().Find( KMusAvaTestString() );
- sipAddress->Des().Append( itemField.Text().Left( pos ) );
- sipAddress->Des().Append( itemField.Text().Right(
- itemField.Text().Length() -
- pos - KMusAvaTestString().Length() ) );
- }
- else
- {
- sipAddress = itemField.Text().AllocLC();
- }
-
- if ( sipAddress->Find( KMusAvaSip() ) == KErrNotFound )
- {
- // No, it doesn't, so add the prefix to the new address.
- MUS_LOG( "mus: [MUSAVA] Prefix to the new address is added" )
- tmpDescriptor = HBufC::NewLC( KMusAvaSip().Length() +
- sipAddress->Length() );
- tmpDescriptor->Des().Append( KMusAvaSip() );
- tmpDescriptor->Des().Append( *sipAddress );
- // if multiple contact have same phone number then
- // sip address can be repeated . To avoid this check
- // whether sip address exist already in array
- // it not exist then add it to array.
- if(! IsExistAlready(*aContactsArray,*tmpDescriptor))
- {
- aContactsArray->AppendL( *tmpDescriptor );
- }
- CleanupStack::PopAndDestroy( tmpDescriptor );
- }
- else
- {
- MUS_LOG( "mus: [MUSAVA] Contact have a prefix" )
- // if multiple contact have same phone number then
- // sip address can be repeated . To avoid this check
- // whether sip address exist already in array
- // it not exist then add it to array.
- if(! IsExistAlready(*aContactsArray,*sipAddress))
- {
- aContactsArray->AppendL( *sipAddress );
- }
- }
-
- CleanupStack::PopAndDestroy( sipAddress );
- }
- }
- MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\
- ResolveAddressesL() return %d", returnValue )
- return returnValue;
- }
-
-
-// -------------------------------------------------------------------------
-//
-// -------------------------------------------------------------------------
-//
-TBool CMusAvaContactAvailability::ResolvePhoneContactL(
- CPbkContactItem& aPbkItem,
- CDesCArrayFlat*& aContactsArray )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::\
- ResolvePhoneContactL()" )
- CPbkFieldArray& fieldArray = aPbkItem.CardFields();
- TPbkContactItemField itemField;
- HBufC* tmpDescriptor( NULL );
- TBool returnValue = EFalse;
-
- // Get the number of detail fields of the phonebook contact item.
- const TInt fieldCount( fieldArray.Count() );
-
- for ( TInt index = 0; index < fieldCount; index++ )
- {
- itemField = fieldArray.At( index );
-
- if ( itemField.FieldInfo().IsPhoneNumberField() &&
- ( iOperatorVariant == MusSettingsKeys::EOperatorSpecific ||
- itemField.Text().Left(1) == KMusAvaPlus() ) )
- {
- MUS_LOG( "mus: [MUSAVA] Contact id found" )
- // No, it doesn't, so add the prefix to the new address.
- MUS_LOG( "mus: [MUSAVA] Prefix to the new address is added" )
- tmpDescriptor = HBufC::NewLC( KMusAvaTel().Length() +
- itemField.Text().Length() );
- tmpDescriptor->Des().Append( KMusAvaTel() );
- tmpDescriptor->Des().Append( itemField.Text() );
- aContactsArray->AppendL( *tmpDescriptor );
- CleanupStack::PopAndDestroy( tmpDescriptor );
- returnValue = ETrue;
- }
- }
-
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaContactAvailability::\
- ResolvePhoneContactL()" )
- return returnValue;
- }
-
-
MMusAvaObserver::TAvailabilityName CMusAvaContactAvailability::Name()
{
return MMusAvaObserver::EMusAvaNameContactStatus;
}
-// -------------------------------------------------------------------------
-// Checks that whether aDesItem present in aDesArray.
-// Utility function used to avoid dublication.
-// -------------------------------------------------------------------------
-//
-TBool CMusAvaContactAvailability::IsExistAlready(const MDesCArray& aDesArray,
- const TDesC& aDesItem)
- {
- for ( TInt i=0;i<aDesArray.MdcaCount();i++)
- {
- if (! aDesArray.MdcaPoint(i).Compare( aDesItem ) )
- {
- return ETrue;
- }
- }
- return EFalse;
- }
+
+
+// End of file
--- a/mmsharing/mmshavailability/src/musavadefaultimp.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavadefaultimp.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -368,11 +368,6 @@
}
-void CMusAvaDefaultImp::AvailabilitiesAbleToShowIndicator()
- {
- iObserver->AvailabilitiesAbleToShowIndicator();
- }
-
// -----------------------------------------------------------------------------
// Availability error.
// -----------------------------------------------------------------------------
@@ -516,3 +511,17 @@
retval )
return retval;
}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusAvaDefaultImp::PrepareForReceivedInviteL()
+ {
+ for ( TInt i = 0; i < iAvailabilities.Count(); i++ )
+ {
+ iAvailabilities[i]->PrepareForReceivedInviteL();
+ }
+ }
+
+// End of file
--- a/mmsharing/mmshavailability/src/musavadefaultoptionhandler.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavadefaultoptionhandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -26,6 +26,7 @@
#include "musavacapability.h"
#include "musavacapabilitycontext.h"
#include "musavanetworkmodestatus.h"
+
#include <sipstrings.h>
#include <siptransactionbase.h>
#include <sipheaderbase.h>
@@ -419,9 +420,6 @@
LocalHostL( aTransaction,localHost,hostType);
CSdpOriginField* originField = CreateOriginFieldL(localHost,hostType);
sdpDocument->SetOriginField(originField);
- //session name
- _LIT8(KSessionName, "-");
- sdpDocument->SetSessionNameL(KSessionName);
// Connection field
CSdpConnectionField* connectionField =
CSdpConnectionField::NewL( netType, hostType, localHost );
@@ -449,6 +447,8 @@
sdpDocument->AttributeFields().AppendL( type );
CleanupStack::Pop( type );
+ // Fast startup mode
+ CMusAvaCapability::AddFastModeL( *sdpDocument );
MUS_LOG( "mus: [MUSAVA] Adding media line to SDP" )
//media line
--- a/mmsharing/mmshavailability/src/musavanetworkavailability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavanetworkavailability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -29,6 +29,7 @@
#include <e32base.h>
+const TInt KSipUriArrayGranularity = 1;
CMusAvaNetworkAvailability* CMusAvaNetworkAvailability::NewL(
MMusAvaAvailabilityObserver& aObserver,
@@ -74,8 +75,7 @@
MMusAvaAvailabilityObserver& aObserver,
CMusAvaSettingsImp& aSettings )
:CMusAvaAvailability( aObserver ),
- iSettings( aSettings ),
- iConfcall( EFalse )
+ iSettings( aSettings )
{
}
@@ -101,14 +101,13 @@
{
case NMusSessionInformationApi::ECallConnected:
{
- TBuf<CMusAvaCallEventMonitor::KMusTelNumberMaxLength> telNumber;
- iPhoneStatus->GetTelNumberL( telNumber );
- iSettings.SetTelNumberL( telNumber );
- iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
- iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
-
- SetState( MMusAvaObserver::EMusAvaStatusAvailable );
- break;
+ TBuf<CMusAvaCallEventMonitor::KMusTelNumberMaxLength> telNumber;
+ TBool isSipUri( EFalse );
+ iPhoneStatus->GetTelNumberL( telNumber, isSipUri );
+ SetRemoteHostL( telNumber, isSipUri );
+ iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
+ SetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ break;
}
case NMusSessionInformationApi::ECallHold:
SetState( MMusAvaObserver::EMusAvaStatusCallOnHold );
@@ -148,31 +147,15 @@
// This function is called when a cs call is connected.
// -------------------------------------------------------------------------
//
-void CMusAvaNetworkAvailability::CallConnectedL( const TDesC& aTelNumber )
+void CMusAvaNetworkAvailability::CallConnectedL( const TDesC& aTelNumber,
+ TBool aIsSipUri)
{
MUS_LOG( "mus: [MUSAVA] \
-> CMusAvaNetworkAvailability::CallConnectedL()" )
-
-// try to resolve to contact information of the remote host
- iSettings.SetTelNumberL( aTelNumber );
- iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
- iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
-
- //isn't the phone sent option successfully
- if ( ( aTelNumber != iSettings.OptionSentTelNumber()
- || iSettings.OptionSentTelNumber() == KNullDesC() )
- && iConfcall )
- {
- MUS_LOG("CMusAvaNetworkAvailability::CallConnectedL EMusAvaStatusInProgress");
- iSettings.ReleaseOptionSentNumber();
- SetState( MMusAvaObserver::EMusAvaStatusInProgress );
- }
- else
- {
- SetState( MMusAvaObserver::EMusAvaStatusAvailable );
- MUS_LOG("CMusAvaNetworkAvailability::CallConnectedL EMusAvaStatusAvailable");
-
- }
+ // try to resolve to contact information of the remote host
+ SetRemoteHostL( aTelNumber, aIsSipUri );
+ iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
+ SetState( MMusAvaObserver::EMusAvaStatusAvailable );
MUS_LOG( "mus: [MUSAVA] \
<- CMusAvaNetworkAvailability::CallConnectedL()" )
@@ -189,7 +172,6 @@
MUS_LOG( "mus: [MUSAVA] \
-> CMusAvaNetworkAvailability::ConferenceCallL()" )
//Report line status
- iConfcall = ETrue;
SetState( MMusAvaObserver::EMusAvaStatusConferenceCall );
MUS_LOG( "mus: [MUSAVA] \
<- CMusAvaNetworkAvailability::ConferenceCallL()" )
@@ -200,13 +182,13 @@
// This function is called when a cs call goes hold
// -------------------------------------------------------------------------
//
-void CMusAvaNetworkAvailability::CallHoldL( const TDesC& aTelNumber )
+void CMusAvaNetworkAvailability::CallHoldL( const TDesC& aTelNumber,
+ TBool aIsSipUri)
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::CallHoldL()" )
//Report line status
- iSettings.SetTelNumberL( aTelNumber );
+ SetRemoteHostL( aTelNumber, aIsSipUri );
iSettings.SetCallDirection( iPhoneStatus->CallDirectionL() );
- iSettings.SetCallPrivacy( iPhoneStatus->CallPrivacyL() );
SetState( MMusAvaObserver::EMusAvaStatusCallOnHold );
MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::CallHoldL()" )
}
@@ -222,6 +204,11 @@
MUS_LOG( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::NoActiveCallL()" )
iSettings.SetTelNumberL( KNullDesC() );
+ CDesCArrayFlat* sipUris =
+ new ( ELeave ) CDesCArrayFlat( KSipUriArrayGranularity );
+ CleanupStack::PushL( sipUris );
+ iSettings.SetSipAddressesL( sipUris );
+ CleanupStack::Pop( sipUris );
//Report line status
//Availability status
@@ -230,19 +217,28 @@
MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::NoActiveCallL()" )
}
-// -------------------------------------------------------------------------
-//This function is called when conference call terminted
-//
-// -------------------------------------------------------------------------
-//
-void CMusAvaNetworkAvailability::ConferenceCallLTerminated()
+
+void CMusAvaNetworkAvailability::SetRemoteHostL( const TDesC& aTelNumber,
+ TBool aIsSipUri )
{
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::ConferenceCallLTerminated()" )
- if ( iConfcall )
- {
- iConfcall = EFalse;
- }
- AvailabilitiesAbleToShowIndicator();
+ MUS_LOG1( "mus: [MUSAVA] -> CMusAvaNetworkAvailability::SetRemoteHostL(%d)",
+ aIsSipUri )
+
+ if ( aIsSipUri )
+ {
+ CDesCArrayFlat* sipUris =
+ new ( ELeave ) CDesCArrayFlat( KSipUriArrayGranularity );
+ CleanupStack::PushL( sipUris );
+ sipUris->AppendL( aTelNumber );
+ iSettings.SetSipAddressesL( sipUris );
+ CleanupStack::Pop( sipUris );
+
+ iSettings.SetUriForContactResolvingL( aTelNumber );
+ }
+ else
+ {
+ iSettings.SetTelNumberL( aTelNumber );
+ }
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::ConferenceCallLTerminated()" )
+ MUS_LOG( "mus: [MUSAVA] <- CMusAvaNetworkAvailability::SetRemoteHostL()" )
}
--- a/mmsharing/mmshavailability/src/musavanetworkmodestatus.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavanetworkmodestatus.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -54,11 +54,8 @@
iObserver.Reset();
iObserver.Close();
iPhone.Close();
- if( iTelServer.Handle() )
- {
- iTelServer.UnloadPhoneModule( KMmTsyModuleName );
- iTelServer.Close();
- }
+ iTelServer.UnloadPhoneModule( KMmTsyModuleName );
+ iTelServer.Close();
}
--- a/mmsharing/mmshavailability/src/musavanetworkregistrationstatus.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavanetworkregistrationstatus.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -51,11 +51,8 @@
iObserver.Reset();
iObserver.Close();
iPhone.Close();
- if( iTelServer.Handle() )
- {
- iTelServer.UnloadPhoneModule( KMmTsyModuleName );
- iTelServer.Close();
- }
+ iTelServer.UnloadPhoneModule( KMmTsyModuleName );
+ iTelServer.Close();
}
--- a/mmsharing/mmshavailability/src/musavaoptionhandler.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavaoptionhandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -33,6 +33,7 @@
#include "musavaterminal.h"
#include "mussettingskeys.h"
#include "mussettings.h"
+#include "mussesseioninformationapi.h"
_LIT( KMusSipPrefix, "sip:" );
@@ -141,6 +142,21 @@
( MMusAvaSipAdapter& ) *iSipAgent,
KMusOptionsHandlerIndex );
+ MUS_LOG( "mus: [MUSAVA] Check fast mode capability" )
+
+ TRAPD( err,
+ iFastModeCapable =
+ MultimediaSharingSettings::FastStartupModeL() == MusSettingsKeys::EFastModeOn &&
+ MultimediaSharingSettings::VideoDirectionL() == MusSettingsKeys::ETwoWayVideo &&
+ MultimediaSharingSettings::CapabilityQuerySettingL() == MusSettingsKeys::EParallel );
+ if ( err == KErrNoMemory )
+ {
+ User::Leave( err );
+ }
+
+ MUS_LOG2( "mus: [MUSAVA] Fast mode check, err:%d, capable:%d",
+ err, iFastModeCapable )
+
MUS_LOG( "mus: [MUSAVA] <- CMusAvaOptionHandler::ConstructL()" )
}
@@ -151,8 +167,13 @@
//
TBool CMusAvaOptionHandler::CapabilityQueryAnswered( TBool aAnswered )
{
+ MUS_LOG1( "mus: [MUSAVA] <-> CMusAvaOptionHandler::CapabilityQueryAnswered():%d",
+ aAnswered )
+
iCapabilityQueryAnswered = aAnswered ? aAnswered : iCapabilityQueryAnswered;
+ HandleFastModeQueryAnswered();
+
return iCapabilityQueryAnswered;
}
@@ -231,13 +252,13 @@
if ( variantSetting == MusSettingsKeys::EOperatorSpecific
&& iSettings.CallDirection() == 2 && !iCapabilitiesRequestAnswered )
{ // terminated party
- SetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
}
else if ( MusSettingsKeys::ESequential ==
MultimediaSharingSettings::CapabilityQuerySettingL()
&& iSettings.CallDirection() == 2 && !iCapabilitiesRequestAnswered )
{ // terminated party
- SetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
}
else
{
@@ -268,11 +289,11 @@
if ( iCapabilityExchange->
TerminalL( sipAddress8->Des() ).QueryExecuting() )
{
- SetState( MMusAvaObserver::EMusAvaStatusOptionsSent );
+ DoSetState( MMusAvaObserver::EMusAvaStatusOptionsSent );
}
else
{
- SetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ DoSetState( MMusAvaObserver::EMusAvaStatusAvailable );
}
CleanupStack::PopAndDestroy( sipAddress8 );
}
@@ -281,24 +302,24 @@
// since we did not send any options set the state EMusAvaStatusNotExecuted.
else if( err == KErrSIPInvalidRegistrationState )
{
- SetState( MMusAvaObserver::EMusAvaStatusNotExecuted );
+ DoSetState( MMusAvaObserver::EMusAvaStatusNotExecuted );
}
// anything other than this should be considered default , means options sent
// and was not successful.
else
{
- SetState( MMusAvaObserver::EMusAvaOptionNotAvailable );
+ DoSetState( MMusAvaObserver::EMusAvaOptionNotAvailable );
}
}
else
{
- SetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
}
}
else
{
// option sending not needed
- SetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
}
}
@@ -327,6 +348,23 @@
return MMusAvaObserver::EMusAvaOptionHandler;
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusAvaOptionHandler::PrepareForReceivedInviteL()
+ {
+ MUS_LOG( "mus: [MUSAVA] -> CMusAvaOptionHandler::PrepareForReceivedInviteL()" )
+
+ if ( iFastModeAvailabilityDelayed )
+ {
+ MUS_LOG( "mus: [MUSAVA] Set delayed availability" )
+ SetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ iFastModeAvailabilityDelayed = EFalse;
+ }
+
+ MUS_LOG( "mus: [MUSAVA] <- CMusAvaOptionHandler::PrepareForReceivedInviteL()" )
+ }
// -----------------------------------------------------------------------------
//
@@ -341,19 +379,17 @@
{
// tell the upper layer that
// query was succesfull. VS is available
- //record the number
- iSettings.SetOptionSentNumber( iSettings.TelNumber() );
- SetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ DoSetState( MMusAvaObserver::EMusAvaStatusAvailable );
}
else if ( aSentQuery.Result() == KCapabilityCapabilitiesForbidden )
{
// query returned with response "403 Forbidden". VS is NOT available
- SetState( MMusAvaObserver::EMusAvaFailureCode );
+ DoSetState( MMusAvaObserver::EMusAvaFailureCode );
}
else
{
//query failed. VS is NOT available
- SetState( MMusAvaObserver::EMusAvaOptionNotAvailable );
+ DoSetState( MMusAvaObserver::EMusAvaOptionNotAvailable );
}
MUS_LOG(
@@ -400,6 +436,7 @@
"mus: [MUSAVA] -> CMusAvaOptionHandler::\
SetCapabilitiesResolvedForCingular()" )
iCapabilitiesRequestAnswered = ETrue;
+
TRAPD( error, DoExecuteL() );
if ( error )
{
@@ -534,8 +571,214 @@
{
MUS_LOG("mus: [MUSAVA] -> CMusAvaOptionHandler::VideoCodecsResolvedL()" )
- iSettings.SetVideoCodecsL(aVideoCodecs);
+ iSettings.SetVideoCodecsL( aVideoCodecs );
MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::VideoCodecsResolvedL()" )
}
+
+// -----------------------------------------------------------------------------
+// If MO side fast mode negotiation has failed, cannot change the value anymore
+// as it is very likely that automatic invitation fails as well.
+// -----------------------------------------------------------------------------
+//
+void CMusAvaOptionHandler::FastModeResolved( MusSettingsKeys::TFastMode aMode )
+ {
+ MUS_LOG1("mus: [MUSAVA] -> CMusAvaOptionHandler::FastModeResolved():%d",
+ aMode )
+
+ if ( FastModeNegotiationFailedMO() )
+ {
+ MUS_LOG("mus: [MUSAVA] Ignore setting as failed already" )
+ }
+ else
+ {
+ iSettings.SetFastMode( aMode );
+ }
+
+ MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::FastModeResolved()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CMusAvaOptionHandler::DoSetState( MMusAvaObserver::TAvailabilityStatus aNewState )
+ {
+ MUS_LOG1( "mus: [MUSAVA] -> CMusAvaOptionHandler::DoSetState() state:%d",
+ aNewState )
+ TInt err( KErrNone );
+
+ if ( iFastModeCapable )
+ {
+ TRAP( err, aNewState = HandleFastModeL( aNewState ) );
+ }
+
+ SetState( aNewState );
+
+ MUS_LOG1("mus: [MUSAVA] <- CMusAvaOptionHandler::DoSetState(), err:%d", err )
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MMusAvaObserver::TAvailabilityStatus CMusAvaOptionHandler::HandleFastModeL(
+ MMusAvaObserver::TAvailabilityStatus aNewState )
+ {
+ MUS_LOG("mus: [MUSAVA] -> CMusAvaOptionHandler::HandleFastModeL()" )
+
+ switch ( aNewState )
+ {
+ case MMusAvaObserver::EMusAvaOptionNotAvailable:
+ {
+ aNewState = HandleFastModeOptionNotAvailableL( aNewState );
+ break;
+ }
+ case MMusAvaObserver::EMusAvaStatusOptionsNotSent:
+ {
+ aNewState = HandleFastModeOptionsNotSentL( aNewState );
+ break;
+ }
+ case MMusAvaObserver::EMusAvaStatusAvailable:
+ {
+ aNewState = HandleFastModeAvailableL( aNewState );
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+
+ MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::HandleFastModeL()" )
+
+ return aNewState;
+ }
+
+// -----------------------------------------------------------------------------
+// If fast mode and call originator, application is started
+// automatically at background with two-way MO use case. If fast mode is
+// negotiated, availability publishing is delayed at MT side until invitation
+// is received (as MO will send invite automatically).
+// -----------------------------------------------------------------------------
+//
+MMusAvaObserver::TAvailabilityStatus CMusAvaOptionHandler::HandleFastModeAvailableL(
+ MMusAvaObserver::TAvailabilityStatus aNewState )
+ {
+ MUS_LOG("mus: [MUSAVA] -> CMusAvaOptionHandler::HandleFastModeAvailableL()" )
+
+ __ASSERT_ALWAYS( iSettings.Observer(), User::Leave( KErrNotReady ) );
+
+ if ( State() != MMusAvaObserver::EMusAvaStatusAvailable &&
+ iSettings.FastMode() == MusSettingsKeys::EFastModeOn )
+ {
+ if ( iSettings.CallDirection() == NMusSessionInformationApi::ECallOrginated )
+ {
+ MUS_LOG("mus: [MUSAVA] Starting application at background" )
+ iSettings.Observer()->StartApplicationL( MultimediaSharing::EMusTwoWayVideo );
+ }
+ else
+ {
+ MUS_LOG("mus: [MUSAVA] Delay availability publishing" )
+ iFastModeAvailabilityDelayed = ETrue;
+ aNewState = State();
+ }
+ }
+
+ MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::HandleFastModeAvailableL()" )
+
+ return aNewState;
+ }
+
+// -----------------------------------------------------------------------------
+// If fast mode and call terminated side, answering to 200 ok is already enough
+// to set us available in delayed manner as other end can start sending
+// invitation already after getting fast mode information in answer.
+// -----------------------------------------------------------------------------
+//
+void CMusAvaOptionHandler::HandleFastModeQueryAnswered()
+ {
+ if ( FastModeNegotiatedByAnswerMT() )
+ {
+ MUS_LOG( "mus: [MUSAVA] Set fastmode available already as answered" )
+
+ // Will result delayed availability handling
+ DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// If options wasn't sent because of missing information, state can be set to
+// available immediately as MT cannot start waiting for invite unless it is
+// sure that other end is about to send it.
+// -----------------------------------------------------------------------------
+//
+MMusAvaObserver::TAvailabilityStatus
+CMusAvaOptionHandler::HandleFastModeOptionsNotSentL(
+ MMusAvaObserver::TAvailabilityStatus aNewState )
+ {
+ MUS_LOG("mus: [MUSAVA] -> CMusAvaOptionHandler::HandleFastModeOptionsNotSentL()" )
+
+ if ( FastModeNegotiatedByAnswerMT() )
+ {
+ MUS_LOG("mus: [MUSAVA] Answered already, set available" )
+ // Make available but start waiting for invitation
+ aNewState = HandleFastModeAvailableL( MMusAvaObserver::EMusAvaStatusAvailable );
+ }
+
+ MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::HandleFastModeOptionsNotSentL()" )
+
+ return aNewState;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MMusAvaObserver::TAvailabilityStatus
+CMusAvaOptionHandler::HandleFastModeOptionNotAvailableL(
+ MMusAvaObserver::TAvailabilityStatus aNewState )
+ {
+ MUS_LOG("mus: [MUSAVA] -> CMusAvaOptionHandler::HandleFastModeOptionNotAvailableL()" )
+
+ if ( iFastModeAvailabilityDelayed ||
+ State() == MMusAvaObserver::EMusAvaStatusAvailable )
+ {
+ MUS_LOG("mus: [MUSAVA] In delayed mode or available, ignore" )
+ aNewState = State();
+ }
+
+ MUS_LOG("mus: [MUSAVA] <- CMusAvaOptionHandler::HandleFastModeOptionNotAvailableL()" )
+
+ return aNewState;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusAvaOptionHandler::FastModeNegotiatedByAnswerMT()
+ {
+ return ( iFastModeCapable &&
+ iCapabilityQueryAnswered &&
+ iSettings.FastMode() == MusSettingsKeys::EFastModeOn &&
+ iSettings.CallDirection() == NMusSessionInformationApi::ECallTerminated );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusAvaOptionHandler::FastModeNegotiationFailedMO()
+ {
+ return ( iFastModeCapable &&
+ iSettings.FastMode() != MusSettingsKeys::EFastModeOn &&
+ iSettings.CallDirection() == NMusSessionInformationApi::ECallOrginated &&
+ State() != MMusAvaObserver::EMusAvaStatusAvailable &&
+ State() != MMusAvaObserver::EMusAvaStatusOptionsSent );
+ }
+
+// End of file
--- a/mmsharing/mmshavailability/src/musavaregisteravailability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavaregisteravailability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -5,7 +5,6 @@
* 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".
-* Version : %version: be1sipx1#42.1.4.1.4 % << Don't touch! Updated by Synergy at check-out.
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
@@ -95,7 +94,6 @@
{
iSharedObj = CMusAvaSharedObject::GetSingletonL();
iSharedObj->MusAvaSip().AddAdapterL( *this );
- iOperatorVariant = MultimediaSharingSettings::OperatorVariantSettingL();
}
@@ -120,11 +118,7 @@
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaRegisterAvailability::DoExecuteL " )
SetState( MMusAvaObserver::EMusAvaStatusInProgress );
- TRAPD( err, RegisterL() );
- if( err != KErrNone )
- {
- SetState( MMusAvaObserver::EMusAvaStatusNotRegistered );
- }
+ RegisterL();
// TBD: SetState( MMusAvaObserver::EMusAvaNameRegistration );
MUS_LOG( "mus: [MUSAVA] <- CMusAvaRegisterAvailability::DoExecuteL " )
@@ -284,7 +278,6 @@
{
MUS_LOG( "mus: [MUSAVA] Profile is deregistered" )
SetState( MMusAvaObserver::EMusAvaStatusNotRegistered );
- iSharedObj->MusAvaSip().DeleteSIPConnection();
}
break;
@@ -317,7 +310,7 @@
//
void CMusAvaRegisterAvailability::ProfileRegistryErrorOccurred(
TUint32 aProfileId,
- TInt aError )
+ TInt /* aError */ )
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaRegisterAvailability::\
ProfileRegistryErrorOccurred" )
@@ -334,17 +327,7 @@
if( profileId == aProfileId )
{
- if ( iOperatorVariant == MusSettingsKeys::EOperatorSpecific &&
- aError == KErrGeneral )
- {
- MUS_LOG( "SIP profile is disabled by the user" )
- SetState( MMusAvaObserver::EMusActivationError );
- }
- else
- {
- MUS_LOG1("Error %d",aError )
- SetState( MMusAvaObserver::EMusAvaStatusNotRegistered );
- }
+ SetState( MMusAvaObserver::EMusAvaStatusNotRegistered );
}
MUS_LOG( "mus: [MUSAVA] <- CMusAvaRegisterAvailability::\
@@ -503,29 +486,29 @@
MUS_LOG( "mus: [MUSAVA] -> CMusAvaRegisterAvailability::EnableRegisterL " )
MUS_LOG( "mus: [MUSAVA] Fetch SIP ProfileRegistry" )
- CSIPProfileRegistry& registry = iSharedObj->MusAvaSip().ProfileRegistryL();
+ CSIPProfileRegistry& registry = iSharedObj->MusAvaSip().ProfileRegistryL();
MUS_LOG( "mus: [MUSAVA] Profile status" )
if ( !registry.IsEnabled( *iSharedObj->MusAvaSip().Profile() ) )
- {
- MUS_LOG("mus: [MUSAVA] Calling EnableL()" )
- registry.EnableL( *iSharedObj->MusAvaSip().Profile(),
- iSharedObj->MusAvaSip().ConnectionObserver() );
- }
-
+ {
+ MUS_LOG("mus: [MUSAVA] Calling EnableL()" )
+ registry.EnableL( *iSharedObj->MusAvaSip().Profile(),
+ iSharedObj->MusAvaSip().ConnectionObserver() );
+ }
+
// Try to write client information to CenRep of client resolver.
// This functionality is needed in __VOIP enabled terminals.
// In __VOIP disabled builds this will fail because of a lack of needed
// CenRep UID. To avoid branching, we just try to do this and let it fail
// in normal build.
CMusAvaClientResolverUtil* resolver =
- iSharedObj->MusAvaSip().ClientResolverUtil();
+ iSharedObj->MusAvaSip().ClientResolverUtil();
if ( resolver )
- {
- TRAP_IGNORE( resolver->RegisterClientWithUserL(
- *iSharedObj->MusAvaSip().Profile() ) )
- }
-
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaRegisterAvailability::EnableRegisterL " )
+ {
+ TRAP_IGNORE( resolver->RegisterClientWithUserL(
+ *iSharedObj->MusAvaSip().Profile() ) )
+ }
+
+ MUS_LOG( "mus: [MUSAVA] <- CMusAvaRegisterAvailability::EnableRegisterL " )
}
@@ -601,3 +584,4 @@
}
}
+
--- a/mmsharing/mmshavailability/src/musavasettingavailability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavasettingavailability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -131,10 +131,10 @@
switch( activation )
{
case MusSettingsKeys::ENever:
- case MusSettingsKeys::EActiveInHomeNetworks:
iState = MMusAvaObserver::EMusActivationError ;
break;
- case MusSettingsKeys::EAlwaysActive:
+ case MusSettingsKeys::EAlwaysActive:
+ case MusSettingsKeys::EActiveInHomeNetworks:
default:
if ( !IsForbiddenByOptionsResponse())
{
--- a/mmsharing/mmshavailability/src/musavasettingsimp.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavasettingsimp.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -56,9 +56,6 @@
delete iContactName;
iContactName = NULL;
-
- delete iOptionSentTelNumber;
- iOptionSentTelNumber = NULL ;
delete iSipAddressProposal;
iSipAddressProposal = NULL ;
@@ -84,7 +81,8 @@
iAudioCodecs = NULL ;
}
-
+ delete iContactResolvingUri;
+
MUS_LOG( "mus: [MUSAVA] <- CMusAvaSettingsImp::~CMusAvaSettingsImp()" )
}
@@ -92,9 +90,9 @@
// C++ Constructor
// -----------------------------------------------------------------------------
//
-CMusAvaSettingsImp::CMusAvaSettingsImp()
+CMusAvaSettingsImp::CMusAvaSettingsImp() :
+ iFastMode( MusSettingsKeys::EFastModeOff )
{
-
}
// -----------------------------------------------------------------------------
@@ -105,8 +103,6 @@
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaSettingsImp::ConstructL()" )
iTelNumber = HBufC::NewL( 0 );
-
- iOptionSentTelNumber = HBufC::NewL( 0 );
iContactName = HBufC::NewL( 0 );
@@ -123,8 +119,7 @@
iAudioCodecs = new( ELeave ) CDesCArrayFlat( 1 );
MUS_LOG( "mus: [MUSAVA] <- CMusAvaSettingsImp::ConstructL()" )
- }
-
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -133,7 +128,6 @@
{
return iManualActivation;
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -149,51 +143,6 @@
//
// -----------------------------------------------------------------------------
//
-void CMusAvaSettingsImp::SetOptionSentNumber( const TDesC& aTelNumber )
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSettingsImp::SetOptionSentNumber() " )
- MUS_LOG_TDESC( "mus: [MUSAVA] aTelNumber = ", aTelNumber )
- delete iOptionSentTelNumber;
- iOptionSentTelNumber = NULL ;
- TRAPD ( error , iOptionSentTelNumber = aTelNumber.AllocL() );
- if ( error )
- {
- MUS_LOG1("CMusAvaSettingsImp::SetOptionSentNumber() leave code: %d ", error);
- }
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSettingsImp::SetOptionSentNumber() " )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMusAvaSettingsImp::OptionSentTelNumber() const
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSettingsImp::OptionSentTelNumber() " )
- return *iOptionSentTelNumber;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusAvaSettingsImp::ReleaseOptionSentNumber ()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSettingsImp::ReleaseOptionSentNumber() " )
- delete iOptionSentTelNumber;
- iOptionSentTelNumber = NULL;
- TRAPD ( err , iOptionSentTelNumber = HBufC::NewL( 0 ) );
- if ( err )
- {
- MUS_LOG1("CMusAvaSettingsImp::ReleaseOptionSentNumber() leave code: %d ", err);
- }
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSettingsImp::ReleaseOptionSentNumber() " )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
const TDesC& CMusAvaSettingsImp::ContactName() const
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaSettingsImp::ContactName()" )
@@ -445,6 +394,15 @@
//
// -----------------------------------------------------------------------------
//
+MMusAvaSettingsObserver* CMusAvaSettingsImp::Observer()
+ {
+ return iObserver;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
void CMusAvaSettingsImp::SetManualActivation( TManualActivation aManualActivation )
{
MUS_LOG( "mus: [MUSAVA] -> CMusAvaSettingsImp::SetManualActivation" )
@@ -471,6 +429,7 @@
return state;
}
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -488,23 +447,48 @@
{
iCallDirection = aDirection;
}
-
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusAvaSettingsImp::SetFastMode( MusSettingsKeys::TFastMode aMode )
+ {
+ iFastMode = aMode;
+ }
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-TInt CMusAvaSettingsImp::CallPrivacy()
- {
- return iCallPrivacy;
- }
-
+MusSettingsKeys::TFastMode CMusAvaSettingsImp::FastMode() const
+ {
+ return iFastMode;
+ }
+
+// -----------------------------------------------------------------------------
+// In case of not having tel number, contact for remote end may be searched
+// based on sip uri
// -----------------------------------------------------------------------------
//
+void CMusAvaSettingsImp::SetUriForContactResolvingL(
+ const TDesC& aRemoteUri )
+ {
+ HBufC* tempResolvingUri = aRemoteUri.AllocL();
+ delete iContactResolvingUri;
+ iContactResolvingUri = tempResolvingUri;
+ }
+
+// -----------------------------------------------------------------------------
+//
// -----------------------------------------------------------------------------
//
-void CMusAvaSettingsImp:: SetCallPrivacy( TInt aPrivacy )
- {
- iCallPrivacy = aPrivacy;
- }
-
-// end of file
+TPtrC CMusAvaSettingsImp::ContactResolvingUri()
+ {
+ TPtrC resolvingUri( KNullDesC );
+ if ( iContactResolvingUri )
+ {
+ resolvingUri.Set( iContactResolvingUri->Des() );
+ }
+ return resolvingUri;
+ }
--- a/mmsharing/mmshavailability/src/musavasip.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavasip.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -5,7 +5,7 @@
* 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".
-* Version : %version: 30.1.4 % << Don't touch! Updated by Synergy at check-out.
+* Version : %version: 30.1.5 % << Don't touch! Updated by Synergy at check-out.
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
@@ -406,15 +406,6 @@
{
return iClientResolverUtil;
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-void CMusAvaSip::DeleteSIPConnection()
- {
- MUS_LOG( "mus: [MUSAVA] -> CMusAvaSip::DeleteSIPConnection()" )
- delete iSipConnection; iSipConnection = NULL;
- MUS_LOG( "mus: [MUSAVA] <- CMusAvaSip::DeleteSIPConnection()" )
- }
// -----------------------------------------------------------------------------
--- a/mmsharing/mmshavailability/src/musavasipheaderutil.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavasipheaderutil.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -19,8 +19,6 @@
#include "musavasipheaderutil.h"
#include "muscleanupresetanddestroy.h"
-#include "mussesseioninformationapi.h"
-#include <e32property.h>
#include <escapeutils.h>
#include <sipconnection.h>
#include <sipprofile.h>
@@ -228,29 +226,6 @@
"mus: [MUSAVA] <- CMusAvaSipheaderUtil::AddAcceptSDPHeaderL" )
}
-// --------------------------------------------------------------------------
-// CMusAvaSipheaderUtil::AddPrivacyHeaderL
-// --------------------------------------------------------------------------
-//
-void CMusAvaSipheaderUtil::AddPrivacyHeaderL(
- RPointerArray<CSIPHeaderBase>& aRequestHeaders )
- {
- MUS_LOG( "mus: [MUSAVA] -> AddPrivacyHeaderL()" )
- NMusSessionInformationApi::TMusClirSetting clir =
- NMusSessionInformationApi::ESendOwnNumber;
- // Ignore RProperty::Get return value.Incase of error it should behave default.
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusClirSetting,
- reinterpret_cast<TInt&>( clir ) );
- MUS_LOG1( "mus: [MUSAVA] - clir setting = %d", clir )
- if ( clir == NMusSessionInformationApi::EDoNotSendOwnNumber )
- {
- _LIT8( KMusPrivacyHeader, "Privacy" );
- _LIT8( KMusPrivacyHeaderValue, "id" );
- CSIPExtensionHeader* header = CSIPExtensionHeader::NewLC(
- KMusPrivacyHeader, KMusPrivacyHeaderValue );
- aRequestHeaders.AppendL( header );
- CleanupStack::Pop( header );
- }
- MUS_LOG( "mus: [MUSAVA] <- AddPrivacyHeaderL()" )
- }
+
+
+
--- a/mmsharing/mmshavailability/src/musavaterminal.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavaterminal.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -189,15 +189,7 @@
ResetAndDestroyQuery();
- if( aQuery->ValidateUri() )
- {
- aQuery->ExecuteL();
- }
-
- else
- {
- User::Leave( KErrNotSupported );
- }
+ aQuery->ExecuteL();
iQuery = aQuery;
@@ -521,7 +513,12 @@
CleanupStack::PushL( videoCodecs );
capability->Exchange().QueryObserver().VideoCodecsResolvedL( *videoCodecs );
CleanupStack::PopAndDestroy( videoCodecs );
-
+
+ //store fast startup mode if present
+ MusSettingsKeys::TFastMode mode =
+ CMusAvaCapability::ResolveFastModeL( *sdp );
+ capability->Exchange().QueryObserver().FastModeResolved( mode );
+
CleanupStack::PopAndDestroy( sdp );
capability->PopulateResponseL( aQuery,
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -24,5 +24,5 @@
PRJ_EXPORTS
-PRJ_TESTMMPFILES
+PRJ_MMPFILES
ut_availability.mmp
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Group/ut_availability.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Group/ut_availability.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -27,8 +27,8 @@
MACRO UNIT_TESTING
//epocallowdlldata
-CAPABILITY EUNIT_CAPS
+CAPABILITY EUNIT_CAPS
VENDORID VID_DEFAULT
// Test sources
@@ -59,7 +59,8 @@
SOURCE UT_CMusAvaSipprofileAvailability.cpp
SOURCE UT_CMusAvaSipProfileRegistryObserver.cpp
SOURCE UT_CMusAvaNetworkAvailability.cpp
-SOURCE UT_CMusAvaSettingAvailability.cpp
+SOURCE UT_CMusAvaSettingAvailability.cpp
+SOURCE UT_CMusAvaCallEventMonitor.cpp
SOURCE UT_CMusAvaSipheaderUtil.cpp
SOURCE ut_cmusavaclientresolverutil.cpp
SOURCE musavacapabilitytesthelper.cpp
@@ -126,7 +127,8 @@
SOURCE centralrepositorystub.cpp
SOURCE sipprofileregistrystub.cpp
SOURCE sipprofilestub.cpp
-SOURCE csipcontactheaderstub.cpp
+SOURCE csipcontactheaderstub.cpp
+SOURCE musavacallmonitorobserver.cpp
SOURCE muscallmonitorstub.cpp
SOURCEPATH ../../../../../tsrc/sipprofilestub/src
@@ -147,7 +149,6 @@
SOURCEPATH ../../../../../mmshplugins/mmshaoplugin/src
SOURCE muscalleventmonitor.cpp
SOURCE muscallmonitor.cpp
-SOURCE musclirmonitor.cpp
//SOURCE musconferencecallmonitor.cpp
// Using RProperty Stubs
@@ -168,12 +169,16 @@
USERINCLUDE ../../../../../mmshplugins/mmshaoplugin/inc
USERINCLUDE ../../../../../tsrc/propertystub/inc
USERINCLUDE ../../../../../tsrc/sipclientstub/inc
+USERINCLUDE ../../../../../tsrc/musavaailabilitystub/inc
+USERINCLUDE ../../../../../tsrc/centralrepositorystub/inc
+USERINCLUDE ../../../../../tsrc/sipprofilestub/inc
SYSTEMINCLUDE ../../../../../tsrc/sipprofilestub/inc
SYSTEMINCLUDE ../../../../../tsrc/sipclientstub/inc
SYSTEMINCLUDE ../../../../../tsrc/musavaailabilitystub/inc
SYSTEMINCLUDE ../../../../../tsrc/centralrepositorystub/inc
SYSTEMINCLUDE ../../../../../tsrc/propertystub/inc
+SYSTEMINCLUDE /epoc32/include/platform/digia/eunit
APP_LAYER_SYSTEMINCLUDE
@@ -194,7 +199,6 @@
LIBRARY insock.lib
LIBRARY sdpcodec.lib
LIBRARY sipcodec.lib
-LIBRARY PbkEng.lib
LIBRARY connmon.lib
LIBRARY etelmm.lib
LIBRARY etel.lib
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Group/ut_availability.pkg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-;
-; Copyright (c) 2009 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:
-;
-
-;Languages
-&EN
-
-;Header
-#{"EUnit: MMSHAvail"},(0x01700000),1,0,0
-
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique vendor name
-:"Nokia"
-
-;DLL files
-"\epoc32\release\armv5\urel\ut_availability.dll"-"c:\sys\bin\ut_availability.dll"
-
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/musavaavailabilityobserverimp.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/musavaavailabilityobserverimp.h Tue Aug 31 15:12:07 2010 +0300
@@ -118,9 +118,6 @@
virtual MMusAvaObserver::TAvailabilityStatus AvailabilityPluginState();
-
-
- virtual void AvailabilitiesAbleToShowIndicator();
/**
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/musavacallmonitorobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2009 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: Unit test stub of MMusCallMonitorObserver
+*
+*/
+
+
+#ifndef __MUSAVACALLMONITOROBSERVER_H__
+#define __MUSAVACALLMONITOROBSERVER_H__
+
+#include "musavaavailabilityobserver.h"
+#include "muscallmonitorobserver.h"
+#include <e32base.h>
+
+/**
+ * Test stub of MMusCallMonitorObserver
+ */
+class CMusAvaCallMonitorObserverStub :
+ public CBase,
+ public MMusCallMonitorObserver
+ {
+public:
+
+ /**
+ * Two-phased constructor
+ *
+ * @return New CMusAvaCallMonitorObserverStub instance
+ */
+ static CMusAvaCallMonitorObserverStub* NewL();
+
+ /**
+ * Destructor
+ */
+ ~CMusAvaCallMonitorObserverStub();
+
+public: // From MMusCallMonitorObserver
+
+ void CallConnectedL( const TDesC& aTelNumber, TBool aIsSipUri );
+
+ void CallHoldL( const TDesC& aTelNumber, TBool aIsSipUri );
+
+ void ConferenceCallL();
+
+ void NoActiveCallL();
+
+private:
+ /**
+ * Constructor
+ */
+ CMusAvaCallMonitorObserverStub();
+
+ /**
+ * Perform the second phase construction
+ */
+ void ConstructL();
+
+ void CopyDescriptorL( const TDesC& aSource );
+
+public:
+
+ // Most recently received tel number. Owned.
+ HBufC* iTelNumber;
+
+ // Contains the most recent value a of aIsSipUri parameter, from
+ // CallConnectedL or CallHoldL.
+ TBool iIsSipUri;
+ };
+
+
+#endif // __MUSAVACALLMONITOROBSERVER_H__
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/musavacapabilityqueryobserverimp.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/musavacapabilityqueryobserverimp.h Tue Aug 31 15:12:07 2010 +0300
@@ -20,6 +20,7 @@
#define __MUSAVACAPABQUERYOBSERVERIMP_H__
#include <e32base.h>
+#include <mussettingskeys.h>
#include "mmusavacapabilityqueryobserver.h"
class CMusAvaCapabilityQueryObserverImp : public CBase,
@@ -47,6 +48,7 @@
TBool CapabilityQueryAnswered( TBool aAnswered = EFalse );
+ void FastModeResolved( MusSettingsKeys::TFastMode aMode );
};
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/musavaobserverimp.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/musavaobserverimp.h Tue Aug 31 15:12:07 2010 +0300
@@ -108,8 +108,6 @@
virtual void AvailabilityError(
MMusAvaObserver::TAvailabilityName aName,
MMusAvaObserver::TAvailabilityStatus aStatus );
-
- virtual void AvailabilitiesAbleToShowIndicator();
public:
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/musavasettingsobserverimp.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/musavasettingsobserverimp.h Tue Aug 31 15:12:07 2010 +0300
@@ -96,9 +96,13 @@
TBool OptionAllowed();
+ void StartApplicationL( MultimediaSharing::TMusUseCase aUseCase );
+
public: //data
TBool iOptionAllowed;
+
+ TBool iApplicationStarted;
};
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/CMusAvaAvailabilityObserverImp.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/CMusAvaAvailabilityObserverImp.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -113,8 +113,3 @@
&& MMusAvaObserver::EMusAvaStatusAvailable == iStatus );
}
-void CMusAvaAvailabilityObserverImp::AvailabilitiesAbleToShowIndicator()
- {
- //nothing to do
- }
-
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/CSipSseTestTls.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/CSipSseTestTls.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -36,7 +36,7 @@
self->ClientRequest( NULL );
self->ClientResponse( SIPStrings::StringF( SipStrConsts::EEmpty ), NULL );
Dll::SetTls( self );
-
+
User::LeaveIfError( self->Set ( MusSettingsKeys::KActivation,
MusSettingsKeys::EAlwaysActive ) );
User::LeaveIfError( self->Set ( MusSettingsKeys::KAuditoryNotification,
@@ -57,7 +57,9 @@
MusSettingsKeys::EPortrait ) );
User::LeaveIfError( self->Set ( MusSettingsKeys::KCapabilityQuery,
MusSettingsKeys::ENoOptions ) );
-
+ User::LeaveIfError( self->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowedAllBearers ) );
+
}
void CSipSseTestTls::Close ()
@@ -108,6 +110,9 @@
MusSettingsKeys::EPortrait );
Storage()->Set ( MusSettingsKeys::KCapabilityQuery,
MusSettingsKeys::ENoOptions );
+
+ Storage()->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowedAllBearers );
iRegistryBehavior = 0;
iProfileBehavior = 0;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/musavacallmonitorobserver.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* Copyright (c) 2009 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: Unit test stub of MMusCallMonitorObserver
+*
+*/
+
+
+#include "musavacallmonitorobserver.h"
+#include <e32base.h>
+
+
+// -----------------------------------------------------------------------------
+// CMusAvaCallMonitorObserverStub::NewL()
+// -----------------------------------------------------------------------------
+//
+CMusAvaCallMonitorObserverStub* CMusAvaCallMonitorObserverStub::NewL()
+ {
+ CMusAvaCallMonitorObserverStub* self =
+ new ( ELeave ) CMusAvaCallMonitorObserverStub();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAvaCallMonitorObserverStub::~CMusAvaCallMonitorObserverStub()
+// -----------------------------------------------------------------------------
+//
+CMusAvaCallMonitorObserverStub::~CMusAvaCallMonitorObserverStub()
+ {
+ delete iTelNumber;
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAvaCallMonitorObserverStub::CallConnectedL()
+// -----------------------------------------------------------------------------
+//
+void CMusAvaCallMonitorObserverStub::CallConnectedL( const TDesC& aTelNumber,
+ TBool aIsSipUri )
+ {
+ CopyDescriptorL( aTelNumber );
+ iIsSipUri = aIsSipUri;
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAvaCallMonitorObserverStub::CallHoldL()
+// -----------------------------------------------------------------------------
+//
+void CMusAvaCallMonitorObserverStub::CallHoldL( const TDesC& aTelNumber,
+ TBool aIsSipUri )
+ {
+ CopyDescriptorL( aTelNumber );
+ iIsSipUri = aIsSipUri;
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAvaCallMonitorObserverStub::ConferenceCallL()
+// -----------------------------------------------------------------------------
+//
+void CMusAvaCallMonitorObserverStub::ConferenceCallL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAvaCallMonitorObserverStub::NoActiveCallL()
+// -----------------------------------------------------------------------------
+//
+void CMusAvaCallMonitorObserverStub::NoActiveCallL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAvaCallMonitorObserverStub::CMusAvaCallMonitorObserverStub()
+// -----------------------------------------------------------------------------
+//
+CMusAvaCallMonitorObserverStub::CMusAvaCallMonitorObserverStub()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAvaCallMonitorObserverStub::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CMusAvaCallMonitorObserverStub::ConstructL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAvaCallMonitorObserverStub::CopyDescriptorL()
+// -----------------------------------------------------------------------------
+//
+void CMusAvaCallMonitorObserverStub::CopyDescriptorL( const TDesC& aSource )
+ {
+ HBufC* newDescriptor = aSource.AllocL();
+ delete iTelNumber;
+ iTelNumber = newDescriptor;
+ }
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/musavacapabilityqueryobserverimp.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/musavacapabilityqueryobserverimp.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -77,3 +77,9 @@
{
return EFalse;
}
+
+void CMusAvaCapabilityQueryObserverImp::FastModeResolved(
+ MusSettingsKeys::TFastMode /*aMode*/ )
+ {
+
+ }
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/musavaobserverimp.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/musavaobserverimp.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -93,8 +93,4 @@
}
- void CMusAvaObserverImp::AvailabilitiesAbleToShowIndicator()
- {
- //nothing to do
- }
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/musavasettingsobserverimp.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/musavasettingsobserverimp.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -97,6 +97,15 @@
MUS_LOG( " [MUSAVA ] -> CMusAvaSettingsObserverImp::OptionAllowed" );
MUS_LOG( " [MUSAVA ] <- CMusAvaSettingsObserverImp::OptionAllowed" );
return iOptionAllowed;
- }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusAvaSettingsObserverImp::StartApplicationL( MultimediaSharing::TMusUseCase /*aUseCase*/ )
+ {
+ iApplicationStarted = ETrue;
+ }
--- a/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/muscallmonitorstub.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/src/muscallmonitorstub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -35,8 +35,10 @@
// C++ constructor.
// -----------------------------------------------------------------------------
//
-CMusCallMonitorBase::CMusCallMonitorBase(const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver )
- : CActive( EPriorityNormal ),iCall(aCall),iTsyObserver( aObserver )
+CMusCallMonitorBase::CMusCallMonitorBase(const RMobileCall& aCall,
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver )
+ : CActive( EPriorityNormal ),iCall(aCall),iTsyObserver( aObserver ),iCallStateObserver( aCallStateObserver )
{
}
@@ -72,7 +74,14 @@
{
}
-CMusCallStatusMonitor* CMusCallStatusMonitor::NewL(const RMobileCall&, MMusTsyPropertyObserver& )
+
+// -----------------------------------------------------------------------------
+// MusCallStatusMonitor
+// -----------------------------------------------------------------------------
+//
+
+CMusCallStatusMonitor* CMusCallStatusMonitor::NewL(const RMobileCall&, MMusTsyPropertyObserver&,
+ MMusCallStateObserver& )
{
return NULL;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaCallEventMonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 2004 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 __UT_CMUSAVACALLEVENTMONITOR_H__
+#define __UT_CMUSAVACALLEVENTMONITOR_H__
+
+#ifdef __MWERKS__
+#pragma warn_emptydecl off
+#pragma warn_illtokenpasting off
+#endif
+
+// EXTERNAL INCLUDES
+#include <CEUnitTestSuiteClass.h>
+
+// INTERNAL INCLUDES
+
+// FORWARD DECLARATIONS
+class CMusAvaCallEventMonitor;
+class CMusAvaCallMonitorObserverStub;
+
+
+#include <e32def.h>
+#ifndef NONSHARABLE_CLASS
+ #define NONSHARABLE_CLASS(x) class x
+#endif
+
+// CLASS DEFINITION
+/**
+ *
+ * EUnitWizard generated test class.
+ *
+ */
+NONSHARABLE_CLASS( UT_CMusAvaCallEventMonitor )
+ : public CEUnitTestSuiteClass
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Two phase construction
+ */
+ static UT_CMusAvaCallEventMonitor* NewL();
+ static UT_CMusAvaCallEventMonitor* NewLC();
+ /**
+ * Destructor
+ */
+ ~UT_CMusAvaCallEventMonitor();
+
+ private: // Constructors and destructors
+
+ UT_CMusAvaCallEventMonitor();
+ void ConstructL();
+
+ public: // From observer interface
+
+
+
+ private: // New methods
+
+ void SetupL();
+
+ void Teardown();
+
+ void UT_CMusAvaCallEventMonitor_GetTelNumberLL();
+
+
+ private: // Data
+
+ EUNIT_DECLARE_TEST_TABLE;
+
+ // Owned
+ CMusAvaCallEventMonitor* iCallEventMonitor;
+
+ // Owned
+ CMusAvaCallMonitorObserverStub* iObserver;
+ };
+
+#endif // __UT_CMUSAVACALLEVENTMONITOR_H__
+
+// End of file
--- a/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaCapability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaCapability.h Tue Aug 31 15:12:07 2010 +0300
@@ -43,6 +43,7 @@
class CMusAvaSettingsImp;
class CMusAvaAvailabilityObserverImp;
class CMusAvaCapabilityQueryObserverImp;
+class CSipSseTestTls;
#include <e32def.h>
#ifndef NONSHARABLE_CLASS
@@ -101,13 +102,19 @@
void UT_CMusAvaCapability_PopulateResponseL_OpSpecificL();
+ void UT_CMusAvaCapability_ResolveFastModeLL();
+
+ void UT_CMusAvaCapability_AddFastModeLL();
+
+
private: // Data
EUNIT_DECLARE_TEST_TABLE;
CMusAvaCapabilityExchange* iExchange;
-
+ CSipSseTestTls* iStorage;
+
CSIP* iSIP;
CSIPConnection* iSIPConnection;
CSIPProfile* iProfile;
--- a/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaCapabilityQuery.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaCapabilityQuery.h Tue Aug 31 15:12:07 2010 +0300
@@ -82,8 +82,6 @@
void UT_CMusAvaCapabilityQuery_ExecuteLL();
- void UT_CMusAvaCapabilityQuery_ValidateUriL();
-
void UT_CMusAvaCapabilityQuery_CanceledL();
void UT_CMusAvaCapabilityQuery_CompletedLL();
@@ -104,8 +102,6 @@
void UT_CMusAvaCapabilityQuery_DoCompleted200OKLL();
- void UT_CMusAvaCapabilityOtherSDPHeadersLL();
-
EUNIT_DECLARE_TEST_TABLE;
CMusAvaOptionHandler* iOptionHandler;
--- a/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaConnectionAvailability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaConnectionAvailability.h Tue Aug 31 15:12:07 2010 +0300
@@ -72,6 +72,7 @@
void UT_CMusAvaConnectionAvailability_NewLL();
void UT_CMusAvaConnectionAvailability_DoExecuteLL();
+ void UT_CMusAvaConnectionAvailability_DoExecuteLL2();
void UT_CMusAvaConnectionAvailability_NameL();
--- a/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaContactAvailability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaContactAvailability.h Tue Aug 31 15:12:07 2010 +0300
@@ -26,7 +26,7 @@
// INTERNAL INCLUDES
#include <e32def.h>
-#include <PbkFields.hrh>
+#include <cntdef.h>
// FORWARD DECLARATIONS
class CMusAvaAvailabilityObserverImp;
@@ -36,6 +36,8 @@
class CContactTextField;
class CPbkContactItem;
class CPbkContactEngine;
+
+
// CLASS DEFINITION
/**
*
@@ -81,6 +83,8 @@
void UT_CMusAvaController_DoExecuteL1_L();
void UT_CMusAvaController_DoExecuteL2_L();
+
+ void UT_CMusAvaController_DoExecuteL3_L();
void UT_CMusAvaController_NameL();
@@ -116,23 +120,6 @@
void UT_CMusAvaController_UpdateContactNameLL();
- void UT_CMusAvaController_CallConnectedLL();
- CContactTextField* EditableContactFieldL( CPbkContactEngine& aContactEngine,
- CPbkContactItem& aContact,
- TPbkFieldId aFieldId );
-
- void AddFields(CPbkContactEngine& aContactEngine,
- CPbkContactItem& contact,
- const TDesC& aText,
- TPbkFieldId aFieldId);
-
- void AddToMyContact( CPbkContactEngine& aContactEngine,
- const TDesC& aText,
- TPbkFieldId aFieldId,
- const TDesC& aText2,
- TPbkFieldId aFieldId2 );
-
-
private: // Data
EUNIT_DECLARE_TEST_TABLE;
--- a/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaNetworkAvailability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaNetworkAvailability.h Tue Aug 31 15:12:07 2010 +0300
@@ -80,6 +80,8 @@
void UT_CMusAvaNetworkAvailability_DoExecuteLL();
+ void UT_CMusAvaNetworkAvailability_DoExecuteL_SipUriL();
+
void UT_CMusAvaNetworkAvailability_StopL();
void UT_CMusAvaNetworkAvailability_NameL();
@@ -91,6 +93,8 @@
void UT_CMusAvaNetworkAvailability_CallHoldLL();
void UT_CMusAvaNetworkAvailability_NoActiveCallLL();
+
+ void UT_CMusAvaNetworkAvailability_SetRemoteHostLL();
private: // Data
--- a/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaOptionHandler.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaOptionHandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -35,6 +35,7 @@
class CMusAvaSettingsImp;
class CMusAvaSharedObject;
class CMusAvaAvailabilityObserverImp;
+class CMusAvaSettingsObserverImp;
// CLASS DEFINITION
/**
@@ -89,6 +90,14 @@
void UT_CMusAvaOptionHandler_SipHeadersL();
void UT_CMusAvaOptionHandler_VideoCodecsResolvedLL();
+
+ void UT_CMusAvaOptionHandler_DoSetStateL();
+
+ void UT_CMusAvaOptionHandler_DoSetStateFastModeL();
+
+ void UT_CMusAvaOptionHandler_FastModeResolvedL();
+
+ void UT_CMusAvaOptionHandler_CapabilityQueryAnsweredL();
EUNIT_DECLARE_TEST_TABLE;
@@ -104,6 +113,8 @@
CSIPProfile* iProfile;
+ CMusAvaSettingsObserverImp* iSettingsObserver;
+
};
#endif // __UT_CMUSAVAOPTIONHANDLER_H__
--- a/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaRegisterAvailability.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaRegisterAvailability.h Tue Aug 31 15:12:07 2010 +0300
@@ -24,7 +24,6 @@
// INTERNAL INCLUDES
#include <e32def.h>
-#include <PbkFields.hrh>
// FORWARD DECLARATIONS
class CMusAvaAvailabilityObserverImp;
--- a/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaSettingsImp.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaSettingsImp.h Tue Aug 31 15:12:07 2010 +0300
@@ -111,11 +111,6 @@
void UT_CMusAvaSettingsImp_CopyDescArrayLL();
- void UT_CMusAvaSettingsImp_SetOptionSentNumber();
-
- const UT_CMusAvaSettingsImp_OptionSentTelNumber();
-
- void UT_CMusAvaSettingsImp_ReleaseOptionSentNumber();
EUNIT_DECLARE_TEST_TABLE;
--- a/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaTerminal.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/UT_CMusAvaTerminal.h Tue Aug 31 15:12:07 2010 +0300
@@ -41,6 +41,7 @@
class CMusAvaObserverImp;
class CMusAvaSettingsImp;
class CMusAvaAvailabilityObserverImp;
+class CSipSseTestTls;
#include <e32def.h>
#ifndef NONSHARABLE_CLASS
@@ -117,6 +118,7 @@
private: // NOT owned
CMusAvaCapability* iCapability;
+ CSipSseTestTls* iStorage;
};
--- a/mmsharing/mmshavailability/tsrc/ut_availability/inc/musavacapabilitytesthelper.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/inc/musavacapabilitytesthelper.h Tue Aug 31 15:12:07 2010 +0300
@@ -194,6 +194,18 @@
a=rtpmap:96 H263-2000/90000\r\n\
a=rtpmap:99 MPEG4/90000\r\n");
+_LIT8( KCapabilityTestSDPFastMode,"v=0\r\n\
+o=- 452027953 452027953 IN IP4 foobar.com\r\n\
+s=-\r\n\
+c=IN IP4 foobar.com\r\n\
+t=0 0\r\n\
+a=application:com.gsma.rts\r\n\
+a=type:videolive\r\n\
+a=keywds:fastmode\r\n\
+m=video 0 RTP/AVP 96\r\n\
+a=rtpmap:96 H263-2000/90000\r\n");
+
+
_LIT8( KCapabilityTestContentTypeOther, "application/text");
_LIT8( KRegisteredContact, "sip:registeredcontact@domain.com" );
@@ -241,7 +253,7 @@
const TDesC8& aAcceptContact,
const TDesC8& aContact,
const TDesC8& aAccept,
- const TDesC8& aUserAgent);
+ const TDesC8& aUserAgent );
static CSIPServerTransaction* OptionsRequestL( const TDesC8& aRequestUri,
const TDesC8& aFrom,
@@ -249,8 +261,7 @@
const TDesC8& aContact,
const TDesC8& aAccept,
const TDesC8& aUserAgent,
- const TDesC8& aAssertId,
- const TDesC8& aSdp = KNullDesC8);
+ const TDesC8& aAssertId);
static CSIPClientTransaction* OptionsResponseL( TUint aResponse,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaCallEventMonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,146 @@
+/*
+* Copyright (c) 2004 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:
+*
+*/
+
+
+// CLASS HEADER
+#include "UT_CMusAvaCallEventMonitor.h"
+
+// EXTERNAL INCLUDES
+#include <EUnitMacros.h>
+
+// INTERNAL INCLUDES
+#include "musavacalleventmonitor.h"
+#include "musavacallmonitorobserver.h"
+#include "mussesseioninformationapi.h"
+
+
+// CONSTRUCTION
+UT_CMusAvaCallEventMonitor* UT_CMusAvaCallEventMonitor::NewL()
+ {
+ UT_CMusAvaCallEventMonitor* self = UT_CMusAvaCallEventMonitor::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+UT_CMusAvaCallEventMonitor* UT_CMusAvaCallEventMonitor::NewLC()
+ {
+ UT_CMusAvaCallEventMonitor* self = new( ELeave ) UT_CMusAvaCallEventMonitor();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// Destructor (virtual by CBase)
+UT_CMusAvaCallEventMonitor::~UT_CMusAvaCallEventMonitor()
+ {
+ }
+
+// Default constructor
+UT_CMusAvaCallEventMonitor::UT_CMusAvaCallEventMonitor()
+ {
+ }
+
+// Second phase construct
+void UT_CMusAvaCallEventMonitor::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+
+// METHODS
+
+
+void UT_CMusAvaCallEventMonitor::SetupL()
+ {
+ iObserver = CMusAvaCallMonitorObserverStub::NewL();
+ iCallEventMonitor = CMusAvaCallEventMonitor::NewL( *iObserver );
+ }
+
+void UT_CMusAvaCallEventMonitor::Teardown()
+ {
+ delete iObserver;
+ iObserver = NULL;
+ delete iCallEventMonitor;
+ iCallEventMonitor = NULL;
+ }
+
+void UT_CMusAvaCallEventMonitor::UT_CMusAvaCallEventMonitor_GetTelNumberLL()
+ {
+ // Test tel number
+ _LIT( KTelNbr, "12345678" );
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KTelNbr ) );
+
+ TBuf<CMusAvaCallEventMonitor::KMusTelNumberMaxLength> telNumber;
+ TBool isSipUri( ETrue );
+
+ iCallEventMonitor->GetTelNumberL( telNumber, isSipUri );
+
+ EUNIT_ASSERT( !isSipUri );
+ EUNIT_ASSERT_EQUALS( telNumber, KTelNbr );
+
+
+ // Test SIP URI
+ _LIT( KSipUri, "sip:12345678@host" );
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KSipUri) );
+ iCallEventMonitor->GetTelNumberL( telNumber, isSipUri );
+ EUNIT_ASSERT( isSipUri );
+ EUNIT_ASSERT_EQUALS( telNumber, KSipUri );
+
+
+#if 0
+ // This case can't be run since Unit tests use a stub of RProperty::Get
+ // and the stub doesn't return KErrOverflow, but results USER 11 panic
+ // if the value does not fit into given buffer.
+
+
+ // Test with a SIP URI that is too long to fit into telNumber buffer
+ _LIT( KLongSipUri,
+ "sip:567890@domain.9012345678901234567890123456789012345678901234567890\
+1234567890123456789012345678901" );
+
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KLongSipUri) );
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iCallEventMonitor->GetTelNumberL( telNumber, isSipUri ), KErrOverflow );
+#endif
+ }
+
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusAvaCallEventMonitor,
+ "CMusAvaCallEventMonitor",
+ "UNIT" )
+
+EUNIT_TEST(
+ "GetTelNumberL - test ",
+ "CMusAvaCapability",
+ "GetTelNumberL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAvaCallEventMonitor_GetTelNumberLL, Teardown )
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaCapability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaCapability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -22,6 +22,7 @@
// EXTERNAL INCLUDES
#include <digia/eunit/eunitmacros.h>
#include <sdpmediafield.h>
+#include <sdpattributefield.h>
// INTERNAL INCLUDES
@@ -110,7 +111,9 @@
iCapability = iOptionHandler->iSwisCapability;
CSipSseTestTls::OpenL();
-
+ iStorage = CSipSseTestTls::Storage();
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
}
void UT_CMusAvaCapability::Teardown( )
@@ -118,8 +121,13 @@
delete iOptionHandler;
delete iAvailabilityObserver;
delete iConcreteSettings;
- CSipSseTestTls::Close();
-
+ if ( iStorage )
+ {
+ iStorage->Clear();
+ CSipSseTestTls::Close();
+ iStorage = NULL;
+ }
+
delete iSIPConnection;
delete iProfile;
delete iSIP;
@@ -173,11 +181,9 @@
KCapabilityTestTerminalID_B );
CleanupStack::PushL( options );
- // Test : AVC enabled => H263 & H264
- TInt32 KMusDisableAVC = 0x0ffffff1; // some value other than disable magic value
- MultimediaSharingSettings::SetPropertyValueL(MusSettingsKeys::KEncodingDevice,
- KMusDisableAVC );
- CSdpDocument* sdpContent = CMusAvaCapability::ResponseContentLC( *options );
+ CSdpDocument* sdpContent =
+ CMusAvaCapability::ResponseContentLC( *options );
+
RPointerArray<CSIPHeaderBase> responseHeaders;
CSIPHeaderBase::PushLC( &responseHeaders );
@@ -187,20 +193,7 @@
EUNIT_ASSERT( sdpContent->AttributeFields().Count() == 2 );
EUNIT_ASSERT( sdpContent->MediaFields().Count() == 1 );
EUNIT_ASSERT( sdpContent->MediaFields()[0]->FormatAttributeFields().Count() == 2 );
- CleanupStack::PopAndDestroy( &responseHeaders );
- CleanupStack::PopAndDestroy( sdpContent );
-
- // Test : AVC disabled => H263
- KMusDisableAVC = 0x0fffffff; // disable magic value
- MultimediaSharingSettings::SetPropertyValueL(MusSettingsKeys::KEncodingDevice,
- KMusDisableAVC );
- sdpContent = CMusAvaCapability::ResponseContentLC( *options );
- CSIPHeaderBase::PushLC( &responseHeaders );
- iCapability->PopulateResponseL( *options, responseHeaders, *sdpContent );
- EUNIT_ASSERT( responseHeaders.Count() == 1 );
- EUNIT_ASSERT( sdpContent->AttributeFields().Count() == 2 );
- EUNIT_ASSERT( sdpContent->MediaFields().Count() == 1 );
- EUNIT_ASSERT( sdpContent->MediaFields()[0]->FormatAttributeFields().Count() == 1 );
+
CleanupStack::PopAndDestroy( &responseHeaders );
CleanupStack::PopAndDestroy( sdpContent );
CleanupStack::PopAndDestroy( options );
@@ -216,11 +209,19 @@
iExchange = CMusAvaCapabilityExchange::NewL( KTestTerminalId, *iCapabQueryObserver );
iCapability = CMusAvaCapability::NewL( *iExchange );
CSipSseTestTls::OpenL();
+ iStorage = CSipSseTestTls::Storage();
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
}
void UT_CMusAvaCapability::Teardown1( )
{
- CSipSseTestTls::Close();
+ if ( iStorage )
+ {
+ iStorage->Clear();
+ CSipSseTestTls::Close();
+ iStorage = NULL;
+ }
delete iCapability;
delete iExchange;
delete iCapabQueryObserver;
@@ -344,6 +345,49 @@
}
+void UT_CMusAvaCapability::UT_CMusAvaCapability_ResolveFastModeLL()
+ {
+ // Fast mode feature is disabled in cenrep, fast mode is present in SDP
+ CSdpDocument* sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPFastMode );
+ MusSettingsKeys::TFastMode mode = iCapability->ResolveFastModeL( *sdpContent );
+ EUNIT_ASSERT( mode == MusSettingsKeys::EFastModeOff );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // Fast mode feature is enabled in cenrep, fast mode is present in SDP
+ iStorage->Set( MusSettingsKeys::KFastStartupMode, MusSettingsKeys::EFastModeOn );
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDPFastMode );
+ mode = iCapability->ResolveFastModeL( *sdpContent );
+ EUNIT_ASSERT( mode == MusSettingsKeys::EFastModeOn );
+ CleanupStack::PopAndDestroy( sdpContent );
+
+ // Fast mode feature is enabled in cenrep, fast mode isn't present in SDP
+ sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDP );
+ mode = iCapability->ResolveFastModeL( *sdpContent );
+ EUNIT_ASSERT( mode == MusSettingsKeys::EFastModeOff );
+ CleanupStack::PopAndDestroy( sdpContent );
+ }
+
+void UT_CMusAvaCapability::UT_CMusAvaCapability_AddFastModeLL()
+ {
+ // Fast mode feature is disabled in cenrep
+ CSdpDocument* sdpContent = CSdpDocument::DecodeLC( KCapabilityTestSDP );
+ EUNIT_ASSERT( sdpContent->AttributeFields().Count() == 2 );
+ iCapability->AddFastModeL( *sdpContent );
+ EUNIT_ASSERT( sdpContent->AttributeFields().Count() == 2 );
+
+ // Fast mode feature is enabled in cenrep, a=keywds:fastmode added
+ iStorage->Set( MusSettingsKeys::KFastStartupMode, MusSettingsKeys::EFastModeOn );
+ iCapability->AddFastModeL( *sdpContent );
+ EUNIT_ASSERT( sdpContent->AttributeFields().Count() == 3 );
+ const CSdpAttributeField* field = sdpContent->AttributeFields()[2];
+ RStringF keywds = MusAvaCapabilityContext::SDPStringL(
+ SdpCodecStringConstants::EAttributeKeywds );
+ EUNIT_ASSERT( field->Attribute() == keywds );
+ EUNIT_ASSERT( field->Value().Compare( KCapabilitySDPAttributeFastMode ) == 0 );
+ CleanupStack::PopAndDestroy( sdpContent );
+ }
+
+
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -392,7 +436,20 @@
"PopulateResponseL",
"FUNCTIONALITY",
Setup1L, UT_CMusAvaCapability_PopulateResponseL_OpSpecificL, Teardown1 )
+
+EUNIT_TEST(
+ "ResolveFastModeL - test ",
+ "CMusAvaCapability",
+ "ResolveFastModeL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAvaCapability_ResolveFastModeLL, Teardown)
+EUNIT_TEST(
+ "AddFastModeL - test ",
+ "CMusAvaCapability",
+ "AddFastModeL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAvaCapability_AddFastModeLL, Teardown)
EUNIT_END_TEST_TABLE
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaCapabilityExchange.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaCapabilityExchange.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -41,7 +41,6 @@
#include "CSipSseTestTls.h"
#include "musavaoptionhandler.h"
#include "musavasettingsimp.h"
-#include "CSipSseTestTls.h"
#include "musavacapabilityquery.h"
#include "mussettings.h"
#include "mussettingskeys.h"
@@ -120,6 +119,8 @@
CSipSseTestTls::OpenL();
iStorage = CSipSseTestTls::Storage();
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
}
void UT_CMusAvaCapabilityExchange::Teardown( )
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaCapabilityQuery.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaCapabilityQuery.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -33,12 +33,6 @@
#include <stringpool.h>
#include <sipservertransaction.h>
#include <siptransactionbase.h>
-#include <sdpfmtattributefield.h>
-#include <SdpMediaField.h>
-#include <SdpRtpmapValue.h>
-
-#include <e32debug.h>
-
// INTERNAL INCLUDES
#include "musavaoptionhandler.h"
#include "musavacapabilitytesthelper.h"
@@ -54,12 +48,6 @@
#include "musavasip.h"
#include "musavacapabilityqueryobserverimp.h"
-_LIT8( KRTPCapabilitySDPAttributeClockrate, "90000" );
-_LIT8( KRTPCapabilitySDPAttributePayloadTypeH264, "98" );
-_LIT8( KRTPCapabilitySDPAttributeCodec, "H264" );
-
-_LIT8( KRTPCapabilitySDPAttributePayloadTypeH263, "96" );
-_LIT8( KRTPCapabilitySDPAttributeCodecH263, "H263-2000" );
// CONSTRUCTION
UT_CMusAvaCapabilityQuery* UT_CMusAvaCapabilityQuery::NewL()
@@ -142,6 +130,8 @@
CSipSseTestTls::OpenL();
iStorage = CSipSseTestTls::Storage();
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
iOpVariantSetting = MultimediaSharingSettings::OperatorVariantSettingL();
}
@@ -392,62 +382,6 @@
CleanupStack::PopAndDestroy( capabQueryObserver );
}
-
-void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_ValidateUriL()
- {
- if( iQuery->iOriginator )
- {
- delete iQuery->iOriginator;
- }
-
- //SIP Uri case, identical
- CSIPAddress* iOriginatorSipAddress = CSIPAddress::DecodeL( _L8("sip:username111@domain.com") );
- CleanupStack::PushL( iOriginatorSipAddress );
-
- iQuery->iOriginator = CUri8::NewL( iOriginatorSipAddress->Uri8().Uri() );
- iQuery->iRemoteUri.Copy( _L8("sip:username111@domain.com") );
-
- EUNIT_ASSERT( iQuery->ValidateUri() == EFalse );
-
- CleanupStack::PopAndDestroy(iOriginatorSipAddress);
-
- delete iQuery->iOriginator;
-
- //SIP Uri case, not identical
- iOriginatorSipAddress = CSIPAddress::DecodeL( _L8("sip:username111@domain.com") );
- CleanupStack::PushL( iOriginatorSipAddress );
-
- iQuery->iOriginator = CUri8::NewL( iOriginatorSipAddress->Uri8().Uri() );
- iQuery->iRemoteUri.Copy( _L8("sip:username222@domain.com") );
-
- EUNIT_ASSERT( iQuery->ValidateUri() == ETrue );
- CleanupStack::PopAndDestroy(iOriginatorSipAddress);
-
- delete iQuery->iOriginator;
-
- //TEL Uri, identical
- iOriginatorSipAddress = CSIPAddress::DecodeL( _L8("sip:18586037801@domain.com") );
- CleanupStack::PushL( iOriginatorSipAddress );
-
- iQuery->iOriginator = CUri8::NewL( iOriginatorSipAddress->Uri8().Uri() );
- iQuery->iRemoteUri.Copy( _L8("tel:8586037801") );
-
- EUNIT_ASSERT( iQuery->ValidateUri() == EFalse );
- CleanupStack::PopAndDestroy(iOriginatorSipAddress);
-
- delete iQuery->iOriginator;
-
- //TEL Uri, not identical
- iOriginatorSipAddress = CSIPAddress::DecodeL( _L8("sip:18586037801@domain.com") );
- CleanupStack::PushL( iOriginatorSipAddress );
-
- iQuery->iOriginator = CUri8::NewL( iOriginatorSipAddress->Uri8().Uri() );
- iQuery->iRemoteUri.Copy( _L8("tel:9876543210") );
-
- EUNIT_ASSERT( iQuery->ValidateUri() == ETrue );
- CleanupStack::PopAndDestroy(iOriginatorSipAddress);
- }
-
void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityQuery_CanceledL( )
{
@@ -1130,76 +1064,6 @@
}
-void UT_CMusAvaCapabilityQuery::UT_CMusAvaCapabilityOtherSDPHeadersLL()
- {
- CSdpDocument* content = CSdpDocument::NewLC();
- //AVC Disabled
- MultimediaSharingSettings::SetPropertyValueL(MusSettingsKeys::KEncodingDevice,
- KMusDisableAVC );
- iQuery->OtherSDPHeadersL(*content);
-
- RStringF media = MusAvaCapabilityContext::SDPStringL(
- SdpCodecStringConstants::EMediaVideo );
- RStringF rtpmap = MusAvaCapabilityContext::SDPStringL(
- SdpCodecStringConstants::EAttributeRtpmap );
-
- RPointerArray<CSdpMediaField>& mediaFields = content->MediaFields();
-
- for ( TInt i=0; i < mediaFields.Count(); i++ )
- {
- if ( mediaFields[ i ]->Media() == media )
- {
- EUNIT_ASSERT( mediaFields[ i ]->FormatList().Find( KCapabilitySwisFormatListH263Only ) >= KErrNone );
- RPointerArray<CSdpFmtAttributeField>& fmtLines =
- mediaFields[ i ]->FormatAttributeFields();
- EUNIT_ASSERT( fmtLines.Count() == 1 );
- for ( TInt j=0; j < fmtLines.Count(); j++ )
- {
- if ( fmtLines[ j ]->Attribute() == rtpmap )
- {
- EUNIT_ASSERT(fmtLines[ j ]->Value().Find( KRTPCapabilitySDPAttributeCodecH263 ) == 0 );
- EUNIT_ASSERT(fmtLines[ j ]->Format().Find( KRTPCapabilitySDPAttributePayloadTypeH263 ) == 0 );
- }
- }
- }
- }
- CleanupStack::PopAndDestroy(content );
- //AVC Enabled
- content = CSdpDocument::NewLC();
- MultimediaSharingSettings::SetPropertyValueL(MusSettingsKeys::KEncodingDevice,
- KMusDisableAVC - 1 );
- iQuery->OtherSDPHeadersL(*content);
-
- mediaFields = content->MediaFields();
-
- for ( TInt i=0; i < mediaFields.Count(); i++ )
- {
- if ( mediaFields[ i ]->Media() == media )
- {
- EUNIT_ASSERT( mediaFields[ i ]->FormatList().Find( KCapabilitySwisFormatList ) >= KErrNone );
- RPointerArray<CSdpFmtAttributeField>& fmtLines =
- mediaFields[ i ]->FormatAttributeFields();
- EUNIT_ASSERT( fmtLines.Count() == 2 )
- for ( TInt j=0; j < fmtLines.Count(); j++ )
- {
- if ( fmtLines[ j ]->Attribute() == rtpmap )
- {
- if ( j == 0 ) //AVC first i.e. prefered
- {
- EUNIT_ASSERT(fmtLines[ j ]->Value().Find( KRTPCapabilitySDPAttributeCodec ) == 0 );
- EUNIT_ASSERT(fmtLines[ j ]->Format().Find( KRTPCapabilitySDPAttributePayloadTypeH264 ) == 0 );
- }
- else
- {
- EUNIT_ASSERT(fmtLines[ j ]->Value().Find( KRTPCapabilitySDPAttributeCodecH263 ) == 0 );
- EUNIT_ASSERT(fmtLines[ j ]->Format().Find( KRTPCapabilitySDPAttributePayloadTypeH263 ) == 0 );
- }
- }
- }
- }
- }
- CleanupStack::PopAndDestroy(content );
- }
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -1220,14 +1084,7 @@
"ExecuteL",
"FUNCTIONALITY",
SetupL,UT_CMusAvaCapabilityQuery_ExecuteLL, Teardown)
-
-EUNIT_TEST(
- "ValidateUri - test ",
- "CMusAvaCapabilityQuery",
- "ValidateUri",
- "FUNCTIONALITY",
- SetupL,UT_CMusAvaCapabilityQuery_ValidateUriL, Teardown)
-
+
EUNIT_TEST(
"Canceled - test ",
"CMusAvaCapabilityQuery",
@@ -1298,14 +1155,6 @@
"FUNCTIONALITY",
SetupL,UT_CMusAvaCapabilityQuery_DoCompleted200OKLL, Teardown)
-EUNIT_TEST(
- "OtherSDPHeadersL - test ",
- "CMusAvaCapabilityQuery",
- "OtherSDPHeadersL",
- "FUNCTIONALITY",
- SetupL,UT_CMusAvaCapabilityOtherSDPHeadersLL, Teardown)
-
-
EUNIT_END_TEST_TABLE
// END OF FILE
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaCapabilitySipAgent.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaCapabilitySipAgent.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -125,13 +125,11 @@
{
iProfile->iRegisteredContact = KRegisteredContact().AllocL();
}
- if ( !iProfile->iRegisteredContact )
- {
- iProfile->iRegisteredContact = KRegisteredContact().AllocL();
- }
CSipSseTestTls::OpenL();
iStorage = CSipSseTestTls::Storage();
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
iProfileId = MultimediaSharingSettings::SipProfileSettingL();
}
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaConnectionAvailability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaConnectionAvailability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -135,28 +135,14 @@
void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_DoExecuteLL()
{
- TInt ret = 0;
- iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
- iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
- MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
- MultimediaSharingSettings::SetEdgeDtmSupportSettingL( MusSettingsKeys::EDtmModeNotAllowed );
- TRAPD( error, iConnectionAvailability->DoExecuteL() );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( error == KErrNone );
+ // Test: VS is allowed in All Netwoks by Default.
- TInt count = 0;
- EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
- if ( count > 0 && iConnectionAvailability->State()
- == MMusAvaObserver::EMusActivationError )
- {
- User::Leave( KErrNoMemory );
- }
- EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType );
+ // Test1: VS in 3G Always Allowed.
+ TInt error = KErrArgument;
+ TInt count = KErrNone;
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
- MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
- MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
-
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
TRAP( error, iConnectionAvailability->DoExecuteL() );
if ( error == KErrNoMemory ) User::Leave( error );
EUNIT_ASSERT ( error == KErrNone );
@@ -169,27 +155,131 @@
}
EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaStatusAvailable );
- // No roaming for operator variant
+
+ //Test2 : VS is even allowed when Network type is Unknown
+ iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeUnknown );
+ iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
- MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EOperatorSpecific );
- iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+ CMusAvaConnectionMonitor& avaConnectionMonitor = iSharedObject->ConnectionMonitor();
+ avaConnectionMonitor.iConnectionMonitor.iConnectionId = 1;
+ avaConnectionMonitor.iConnectionMonitor.iConnectionCounter = 1;
+ avaConnectionMonitor.iConnectionMonitor.iUintAttributeValue = 1;
+ avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNone;
+
+ //EUNIT_DISABLE_ALLOC_DECORATOR;
TRAP( error, iConnectionAvailability->DoExecuteL() );
if ( error == KErrNoMemory ) User::Leave( error );
+
+ //EUNIT_DISABLE_ALLOC_DECORATOR;
+
EUNIT_ASSERT ( error == KErrNone );
EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+
+ //HKK Define own error condition in which it can fil.
+
+
+ if ( count > 0 && ( iConnectionAvailability->State()
+ == MMusAvaObserver::EMusActivationError) ||
+ (iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType ))
+ {
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaStatusAvailable );
+
+ // Test3: VS in GSM Network is Allowed Ensure, PDP Context Need to be up to ensure network does
+ // support data connection; Note DTM Flag is not needed anymore since VS is allowed in all network.
+ iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+ iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+ avaConnectionMonitor.iConnectionMonitor.iConnectionId = 1;
+ avaConnectionMonitor.iConnectionMonitor.iConnectionCounter = 1;
+ avaConnectionMonitor.iConnectionMonitor.iUintAttributeValue = 1;
+ avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNone;
+ TRAP( error, iConnectionAvailability->DoExecuteL() );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ if ( count > 0 && ( iConnectionAvailability->State()
+ == MMusAvaObserver::EMusActivationError ) ||
+ (iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType ))
+
+ {
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaStatusAvailable );
+
+
+ // Test4: VS in GSM Network is dis-allowed if PDP context is not up.
+ iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+ iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+ avaConnectionMonitor.iConnectionMonitor.iConnectionId = 1;
+ avaConnectionMonitor.iConnectionMonitor.iConnectionCounter = 0;
+ avaConnectionMonitor.iConnectionMonitor.iUintAttributeValue = 1;
+ avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNone;
+ TRAP( error, iConnectionAvailability->DoExecuteL() );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ if ( count > 0 && ( iConnectionAvailability->State()
+ == MMusAvaObserver::EMusActivationError ) ||
+ (iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType ))
+
+ {
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaEdgeDtmStatusUnknown );
+ }
+
+
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_DoExecuteLL2()
+ {
+ // Restrict VS to be only Used in 3G mode,
+
+ iStorage->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowed3GOnly );
+
+ // Test: In GSM VS is not Allowed when its restricted to be only used in 3G
+
+ TInt ret = 0;
+ iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+ iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+ MultimediaSharingSettings::SetEdgeDtmSupportSettingL( MusSettingsKeys::EDtmModeNotAllowed );
+ TRAPD( error, iConnectionAvailability->DoExecuteL() );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ TInt count = 0;
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ if ( count > 0 &&
+ iConnectionAvailability->State() != MMusAvaObserver::EMusAvaNetworkType )
+ {
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType );
+
+ // Test2: In 3G VS is allowed.
+
+ iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+ iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+ TRAP( error, iConnectionAvailability->DoExecuteL() );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
if ( count > 0 && iConnectionAvailability->State()
== MMusAvaObserver::EMusActivationError )
{
User::Leave( KErrNoMemory );
}
- EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusActivationError );
+ EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaStatusAvailable );
- // operator variant OK
- MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
- MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EOperatorSpecific );
- iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
-
+ // Test3: Active in home networks
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
TRAP( error, iConnectionAvailability->DoExecuteL() );
if ( error == KErrNoMemory ) User::Leave( error );
EUNIT_ASSERT ( error == KErrNone );
@@ -200,9 +290,8 @@
User::Leave( KErrNoMemory );
}
EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaStatusAvailable );
- MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
- // activation set off
+ //Test4: activation set off
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::ENever );
@@ -211,7 +300,7 @@
EUNIT_ASSERT ( error == KErrNone );
EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusActivationError );
- //Edge/Dtm activation settings
+ // Test5: Edge/Dtm activation settings
// case 1 Dtm mode allowed and atleast one pdp context exist
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
@@ -233,6 +322,7 @@
}
EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaStatusAvailable );
+ // Test5: Edge DTM is allowed but no pdp context
// case 2 Dtm mode allowed and no pdp context exist
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
@@ -253,7 +343,7 @@
}
EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaEdgeDtmStatusUnknown );
- // case 2 Dtm mode not allowed
+ // Test6: case 2 Dtm mode not allowed
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
@@ -268,6 +358,12 @@
User::Leave( KErrNoMemory );
}
EUNIT_ASSERT( iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType );
+
+ // Reset the Central Reppository to the default value to avoid
+ // poluting common storage.
+
+ iStorage->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowedAllBearers );
}
void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_NameL()
@@ -283,26 +379,80 @@
void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_PhoneNetworkModeStatusL()
{
+ //Test1: VS by default would allow all type of Networks.
+ // Unknow Network Type : Allowed
iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeUnknown );
- EUNIT_ASSERT( iConnectionAvailability->iState == MMusAvaObserver::EMusAvaNetworkType );
+ TInt count = 0;
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ if ( count > 0 && ( iConnectionAvailability->State() == MMusAvaObserver::EMusActivationError ) ||
+ (iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType ))
+ {
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( iConnectionAvailability->iState == MMusAvaObserver::EMusAvaStatusAvailable );
+
+ //GSM Network is Allowed:
+ iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+
+ count = 0;
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ if ( count > 0 && ( iConnectionAvailability->State() == MMusAvaObserver::EMusActivationError ) ||
+ (iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType ))
+ {
+ User::Leave( KErrNoMemory );
+ }
+
+ EUNIT_ASSERT( iConnectionAvailability->iState == MMusAvaObserver::EMusAvaStatusAvailable );
+
+ //WCDMA: 3G is Allowed
iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
MMusAvaObserver::TAvailabilityStatus state = MMusAvaObserver::EMusAvaStatusNotExecuted;
state = iConnectionAvailability->State();
- TInt count = 0;
+ count = 0;
EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
- if ( count > 0 && state == MMusAvaObserver::EMusActivationError )
+ if ( count > 0 && (state == MMusAvaObserver::EMusActivationError ) ||
+ ( state == MMusAvaObserver::EMusAvaNetworkType ))
{
User::Leave( KErrNoMemory );
}
EUNIT_ASSERT( state == MMusAvaObserver::EMusAvaStatusAvailable );
+
+ //Test2: Restrict VS to be only used in 3G
+ iStorage->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowed3GOnly );
+
+ //Unknown Network DisAllowed
+ iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeUnknown );
+ EUNIT_ASSERT( iConnectionAvailability->iState == MMusAvaObserver::EMusAvaNetworkType );
+
+ //GSM Network is Dis-Allowed:
+ iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+ EUNIT_ASSERT( iConnectionAvailability->iState == MMusAvaObserver::EMusAvaNetworkType );
+
+
+ //3G is Allowed:
+ iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+ MMusAvaObserver::TAvailabilityStatus state1 = MMusAvaObserver::EMusAvaStatusNotExecuted;
+ state1 = iConnectionAvailability->State();
+ TInt count1 = 0;
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ if ( count1 > 0 && state1 == MMusAvaObserver::EMusActivationError )
+ {
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( state1 == MMusAvaObserver::EMusAvaStatusAvailable );
+
+ //Reset the key to the default value.
+ iStorage->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowedAllBearers );
}
void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_NetworkRegistrationStatusL()
{
- MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EOperatorSpecific );
- MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
iConnectionAvailability->iState = MMusAvaObserver::EMusAvaStatusAvailable;
iConnectionAvailability->NetworkRegistrationStatus( RMobilePhone::ERegistrationUnknown );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
TInt count = 0;
EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
if ( count > 0 && iConnectionAvailability->iState
@@ -312,8 +462,7 @@
}
EUNIT_ASSERT( iConnectionAvailability->iState == MMusAvaObserver::EMusAvaRoamingError );
iConnectionAvailability->iState = MMusAvaObserver::EMusAvaStatusAvailable;
- MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
- MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
iConnectionAvailability->NetworkRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
if ( count > 0 && iConnectionAvailability->iState
@@ -586,6 +735,12 @@
== MMusAvaObserver::EMusAvaStatusAvailable );
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+ iStorage->SetRegistrationStatus( RMobilePhone::ERegistrationUnknown );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+ EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+ == MMusAvaObserver::EMusActivationError );
+
+ iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::ENever );
EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
@@ -593,7 +748,7 @@
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
- MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
== MMusAvaObserver::EMusAvaStatusAvailable );
@@ -608,7 +763,7 @@
iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationAllowed);
MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
- == MMusAvaObserver::EMusActivationError );
+ == MMusAvaObserver::EMusAvaStatusAvailable );
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
@@ -618,7 +773,6 @@
== MMusAvaObserver::EMusAvaStatusAvailable );
- MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
@@ -637,12 +791,20 @@
iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationExecuted);
MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
- == MMusAvaObserver::EMusActivationError );
+ == MMusAvaObserver::EMusAvaStatusAvailable );
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+ iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationExecuted);
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+ EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+ == MMusAvaObserver::EMusActivationError );
+
+ MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
+ iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+ iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationNotExecuted);
- MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
== MMusAvaObserver::EMusAvaManualActivation );
@@ -660,13 +822,21 @@
iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationNotAllowed);
MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+ == MMusAvaObserver::EMusAvaStatusAvailable );
+
+ MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
+ iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+ iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+ iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationNotAllowed);
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+ EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
== MMusAvaObserver::EMusActivationError );
MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationNotExecuted);
- MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
== MMusAvaObserver::EMusAvaManualActivation );
@@ -674,7 +844,7 @@
iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationAllowed);
- MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+ MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
== MMusAvaObserver::EMusAvaStatusAvailable );
}
@@ -718,6 +888,14 @@
SetupL, UT_CMusAvaConnectionAvailability_DoExecuteLL, Teardown)
EUNIT_TEST(
+ "DoExecuteL - test 3G Restricted",
+ "CMusAvaConnectionAvailability",
+ "DoExecuteL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAvaConnectionAvailability_DoExecuteLL2, Teardown)
+
+
+EUNIT_TEST(
"Name - test ",
"CMusAvaConnectionAvailability",
"Name",
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaContactAvailability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaContactAvailability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -30,13 +30,8 @@
// EXTERNAL INCLUDES
#include <digia/eunit/eunitmacros.h>
-#include <CPbkContactItem.h>
-#include <CPbkContactEngine.h>
-#include <CPbkFieldInfo.h>
#include <cntfldst.h>
#include <cntfield.h>
-#include <PbkFields.hrh>
-#include <CPbkFieldsInfo.h>
#include <cntfilt.h>
#include <digia/eunit/eunitdecorators.h>
@@ -52,7 +47,6 @@
_LIT(KLastName,"Meikalainen");
_LIT(KFirstLastName,"Matti Meikalainen");
_LIT(KLastFirstName,"Meikalainen Matti");
-_LIT( KTelNumber, "12345" );
// CONSTRUCTION
UT_CMusAvaContactAvailability* UT_CMusAvaContactAvailability::NewL()
@@ -180,73 +174,11 @@
void UT_CMusAvaContactAvailability::UT_CMusAvaController_DoExecuteL1_L()
{
- CContactIdArray* contactIdArray = NULL;
- CPbkContactItem* contactItem = NULL;
- CPbkContactItem* contactItemTmp = NULL;
-
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
-
- // dummy initialization, other ways CPbkContactEngine leaks memory
- CPbkContactItem* pbkItem = NULL;
- TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
- delete pbkItem;
-
- contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- //contact
- TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
-
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iConcreteSettings->SetTelNumberL( KPlusNumber() );
-
- TRAPD( error, iContactAvailability->DoExecuteL() );
- if ( error == KErrNoMemory ) User::Leave( error );
- TInt count;
- EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
- if ( count > 0 && error != KErrNone )
- {
- User::Leave( KErrNoMemory );
- }
- CleanupStack::PopAndDestroy( contactItem );
- CleanupStack::PopAndDestroy( contactEngine );
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_DoExecuteL2_L()
{
- CContactIdArray* contactIdArray = NULL;
- CPbkContactItem* contactItem = NULL;
- CPbkContactItem* contactItemTmp = NULL;
-
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
-
- // dummy initialization, other ways CPbkContactEngine leaks memory
- CPbkContactItem* pbkItem = NULL;
- TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
- delete pbkItem;
-
- contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- CContactTextField* urlAtSignField =
- EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdSIPID );
- if ( urlAtSignField )
- {
- urlAtSignField->SetTextL( _L("sip:test@10.21.30.50") );
- }
- else
- {
- EUNIT_ASSERT( !urlAtSignField );
- }
- EUNIT_ENABLE_ALLOC_DECORATOR;
iConcreteSettings->SetTelNumberL( KPlusNumber );
@@ -269,20 +201,35 @@
{
User::Leave( KErrNoMemory );
}
+ }
- CleanupStack::PopAndDestroy( contactItem );
- CleanupStack::PopAndDestroy( contactEngine );
- }
-void UT_CMusAvaContactAvailability::UT_CMusAvaController_CallConnectedLL()
+void UT_CMusAvaContactAvailability::UT_CMusAvaController_DoExecuteL3_L()
{
- TRAPD( error, iContactAvailability->CallConnectedL( KTelNumber ) );
- if ( error == KErrNone )
- {
- EUNIT_ASSERT_EQUALS( iContactAvailability->State(),
- MMusAvaObserver::EMusAvaStatusAvailable );
- EUNIT_ASSERT_EQUALS( iConcreteSettings->TelNumber(), KTelNumber );
- }
+ iConcreteSettings->SetTelNumberL( KPlusNumber );
+
+ TRAPD( error, iContactAvailability->DoExecuteL() );
+ EUNIT_ASSERT( error == KErrNoMemory || error == KErrNone );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ TInt count;
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ if ( count > 0 && error != KErrNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
+
+ iConcreteSettings->SetTelNumberL( KPlusNumber );
+
+ TRAP( error, iContactAvailability->DoExecuteL() );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ if ( count > 0 && error != KErrNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
+
}
+
+
void UT_CMusAvaContactAvailability::UT_CMusAvaController_NameL()
{
EUNIT_ASSERT( iContactAvailability->Name() == MMusAvaObserver::EMusAvaNameContactStatus );
@@ -349,1138 +296,52 @@
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ContactLL()
{
- CContactIdArray* contactIdArray = NULL;
- CPbkContactItem* contactItem = NULL;
+ }
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- EUNIT_ENABLE_ALLOC_DECORATOR;
- CleanupStack::PushL( contactEngine );
-
- // Non cont or phone number added to contact DB
- TBool ret;
- TRAPD( error, ret = iContactAvailability->ContactL( contactIdArray, *contactEngine ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( !ret );
- EUNIT_ASSERT( contactIdArray == NULL );
-
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- //contact
- TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
-
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iConcreteSettings->SetTelNumberL( KPlusNumber );
-
- TRAP( error, ret = iContactAvailability->ContactL( contactIdArray, *contactEngine ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( ret );
- EUNIT_ASSERT( contactIdArray != NULL );
-
- delete contactIdArray;
- contactIdArray = NULL;
-
- CleanupStack::PopAndDestroy( contactItem );
- CleanupStack::PopAndDestroy( contactEngine );
-
- }
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ContactArrayLL()
{
- CContactIdArray* array = NULL;
-
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* pbkContactEngine = CPbkContactEngine::NewL();
- EUNIT_ENABLE_ALLOC_DECORATOR;
- CleanupStack::PushL( pbkContactEngine );
-
- //No number found
- TInt ret = NULL;
- TRAPD( error, ret = iContactAvailability->ContactArrayL( array,
- *pbkContactEngine ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( error == KErrNone );
- EUNIT_ASSERT( ret == KErrNotFound );
- EUNIT_ASSERT( array == NULL );
- //Number length 0
- iConcreteSettings->SetTelNumberL( _L("") );
- TRAP( error, ret = iContactAvailability->ContactArrayL( array,
- *pbkContactEngine ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( error == KErrNone );
- EUNIT_ASSERT( ret == KErrNotFound );
- EUNIT_ASSERT( array == NULL );
- //Number found
- iConcreteSettings->SetTelNumberL( KNumber );
- TRAP( error, ret = iContactAvailability->ContactArrayL( array,
- *pbkContactEngine ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( ret == KErrNone );
- EUNIT_ASSERT( array != NULL );
- EUNIT_ASSERT( array->Count() > 0 );
+ }
- CleanupStack::PopAndDestroy( pbkContactEngine );
-
- delete array;
- array = NULL;
- }
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ContactItemL()
{
- CPbkContactItem* tmpItem = NULL;
- CContactIdArray* tmpContactIdArray = NULL;
-
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
-
- CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- // CContactIdArray == 0
- //tmpContactIdArray = CContactIdArray::NewLC();
- //EUNIT_ASSERT_EQUALS( KErrNotFound, iContactAvailability->ContactItem(
- //*tmpContactIdArray, tmpItem ) );
- //CleanupStack::PopAndDestroy( );
-
-
- // CContactIdArray > 0
- TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
- contactEngine->AddNewContactL( *contactItem );
+ }
- CContactDatabase* contactDatabase = CContactDatabase::OpenL();
- CleanupStack::PushL( contactDatabase );
- CCntFilter* newFilter = CCntFilter::NewL();
- CleanupStack::PushL( newFilter );
- newFilter->Reset();
- newFilter->SetContactFilterTypeALL( ETrue );
- contactDatabase->FilterDatabaseL( *newFilter );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- //CContactIdArray* tmpaArray = newFilter->iIds;
- //Item found
-
- TInt err = iContactAvailability->ContactItem( *( newFilter->iIds ), tmpItem, *contactEngine );
- // NOTE: Multiple contact id's could be in database and KErrNotSupported is
- // returned if more than one. Maybe first run could get result KErrNone and
- // then KErrNotSupported
- EUNIT_ASSERT( ( KErrNotSupported == err ) || ( KErrNone == err ) );
-
- //EUNIT_ASSERT( tmpItem != NULL );
- //delete tmpaArray;
- //contactDatabase->CommitContactL( *tmpItem );
- delete tmpItem;
- //tmpItem = NULL;
- //End test
-
- CleanupStack::PopAndDestroy( newFilter );
-
- contactDatabase->CloseTables();
-
- CleanupStack::PopAndDestroy( contactDatabase );
- CleanupStack::PopAndDestroy( contactItem );
- CleanupStack::PopAndDestroy( contactEngine );
-
-
-
- }
void UT_CMusAvaContactAvailability::UT_CMusAvaController_PhoneResulutionLL()
{
- CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( 10 );
- CleanupStack::PushL( array );
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
- CPbkContactItem* contactItem = contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- // dummy initialization, other ways CPbkContactEngine leaks memory
- CPbkContactItem* pbkItem = NULL;
- TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
- delete pbkItem;
-
- //No prefix
- contactItem->RemoveDefaultPhoneNumberField();
- EUNIT_ENABLE_ALLOC_DECORATOR;
- iConcreteSettings->SetTelNumberL( KNumber );
- TBool ret;
- TRAPD( error, ret = iContactAvailability->PhoneResolutionL( *contactItem, array ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( !ret );
-
- EUNIT_ASSERT( array->MdcaCount() == 0);
-
- //Prefix
- iConcreteSettings->SetTelNumberL( KPlusNumber );
-
- TRAP( error, ret = iContactAvailability->PhoneResolutionL( *contactItem, array ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( ret );
- EUNIT_ASSERT( array->MdcaCount() > 0 );
- //remove object from the array
- array->Reset();
-
- ///Number plan is in national mode
- EUNIT_DISABLE_ALLOC_DECORATOR;
- TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KNumber() );
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iConcreteSettings->ReleseTelNumberL();
- TRAP( error, ret = iContactAvailability->PhoneResolutionL( *contactItem, array ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( !ret );
- EUNIT_ASSERT( array->MdcaCount() == 0 );
-
-
- //Number plan is in internatiolan mode
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem->RemoveDefaultPhoneNumberField();
- fieldMobile = contactItem->FindField( EPbkFieldIdPhoneNumberMobile );
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
- iConcreteSettings->ReleseTelNumberL();
- TRAP( error, ret = iContactAvailability->PhoneResolutionL( *contactItem, array ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( ret );
- EUNIT_ASSERT( array->MdcaCount() > 0 );
-
- CleanupStack::PopAndDestroy( contactItem );
- CleanupStack::PopAndDestroy( contactEngine );
- CleanupStack::PopAndDestroy( array );
}
-
-
-
-
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ContactIdL()
{
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
-
- CPbkContactItem* contactItem = NULL;
-
- // dummy initialization, other ways CPbkContactEngine leaks memory
- TRAP_IGNORE( contactItem = contactEngine->ReadContactL( 1 ) );
- delete contactItem;
-
- contactItem = contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- //Contact field not created
- EUNIT_ASSERT( !iContactAvailability->ContactId( *contactItem, EPbkFieldIdSIPID ) );
-
- //Contact URi not defined
- CContactTextField* urlFieldNotDefined =
- EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdShareView );
- if ( urlFieldNotDefined )
- {
- urlFieldNotDefined->SetTextL( _L("sip:10.21.32.51") );
- }
- else
- {
- EUNIT_ASSERT( !urlFieldNotDefined );
- }
-
- EUNIT_ASSERT( !iContactAvailability->ContactId( *contactItem, EPbkFieldIdShareView ) );
-
- //Contact field not found
- CContactTextField* urlField =
- EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdShareView );
- if ( urlField )
- {
- urlField->SetTextL( _L("test@10.21.32.51") );
- }
- else
- {
- EUNIT_ASSERT( !urlField );
- }
-
- EUNIT_ASSERT( !iContactAvailability->ContactId( *contactItem, EPbkFieldIdSIPID ) );
-
- //Contact field found
- EUNIT_ASSERT( iContactAvailability->ContactId( *contactItem, EPbkFieldIdShareView ) );
-
- CleanupStack::PopAndDestroy( contactItem );
- CleanupStack::PopAndDestroy( contactEngine );
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ContactIdSearchL()
{
- CPbkContactItem* contactItem = NULL;
- CContactIdArray* contactIdArray = NULL;
- CContactTextField* phoneNumberMobiled = NULL;
- CContactTextField* country = NULL;
- CContactTextField* urlFieldNotDefined = NULL;
- CPbkContactEngine* contactEngine = NULL;
-
-
- //No contact //////////////////////////////////////////////////////////////
- //General info
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
-
- //Clear contacts
- contactIdArray = contactEngine->MatchPhoneNumberL(
- KNumber(),
- KNumberMatchingDigitsRequired );
- CleanupStack::PushL( contactIdArray );
- contactEngine->DeleteContactsL( *contactIdArray );
-
- CleanupStack::PopAndDestroy( contactIdArray );
-
-
- // dummy initialization, other ways CPbkContactEngine leaks memory
- TRAP_IGNORE( contactItem = contactEngine->ReadContactL( 1 ) );
- delete contactItem;
-
- AddToMyContact( *contactEngine,
- KNumber(),
- EPbkFieldIdPhoneNumberMobile,
- _L("nokia"),
- EPbkFieldIdCompanyName );
-
- contactIdArray = contactEngine->MatchPhoneNumberL(
- KNumber(),
- KNumberMatchingDigitsRequired );
- CleanupStack::PushL( contactIdArray );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- EUNIT_ASSERT(
- iContactAvailability->ContactIdSearch( *contactIdArray, *contactEngine ) ==
- EPbkFieldIdNone );
-
- contactEngine->DeleteContactsL( *contactIdArray );
- CleanupStack::PopAndDestroy( contactIdArray );
-
- // Field Phone number general found /////////////////////////////////////////////////////////
-
- //Clear contacts
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactIdArray = contactEngine->MatchPhoneNumberL(
- KNumber(),
- KNumberMatchingDigitsRequired );
- CleanupStack::PushL( contactIdArray );
- contactEngine->DeleteContactsL( *contactIdArray );
-
- CleanupStack::PopAndDestroy( contactIdArray );
-
- AddToMyContact( *contactEngine,
- KNumber(),
- EPbkFieldIdPhoneNumberMobile,
- _L("+35805123456789"),
- EPbkFieldIdPhoneNumberGeneral );
-
- contactIdArray = contactEngine->MatchPhoneNumberL(
- KNumber(),
- KNumberMatchingDigitsRequired );
-
- CleanupStack::PushL( contactIdArray );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- EUNIT_ASSERT(
- iContactAvailability->ContactIdSearch( *contactIdArray, *contactEngine ) ==
- EPbkFieldIdNone );
- //EUNIT_ASSERT( ret == EPbkFieldIdPhoneNumberGeneral );
- contactEngine->DeleteContactsL( *contactIdArray );
- CleanupStack::PopAndDestroy( contactIdArray );
-
- // Field SIP id found /////////////////////////////////////////////////////////
-
- //Clear contacts
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactIdArray = contactEngine->MatchPhoneNumberL(
- KNumber(),
- KNumberMatchingDigitsRequired );
- CleanupStack::PushL( contactIdArray );
- contactEngine->DeleteContactsL( *contactIdArray );
-
- CleanupStack::PopAndDestroy( contactIdArray );
-
- AddToMyContact( *contactEngine,
- KNumber(),
- EPbkFieldIdPhoneNumberMobile,
- _L("test@10.21.32.51"),
- EPbkFieldIdSIPID );
-
- contactIdArray = contactEngine->MatchPhoneNumberL(
- KNumber(),
- KNumberMatchingDigitsRequired );
-
- CleanupStack::PushL( contactIdArray );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- TPbkFieldId ret = iContactAvailability->ContactIdSearch( *contactIdArray, *contactEngine );
- if ( ret == EPbkFieldIdNone )
- {
- User::Leave( KErrNoMemory );
- }
- EUNIT_ASSERT( ret == EPbkFieldIdSIPID );
- contactEngine->DeleteContactsL( *contactIdArray );
- CleanupStack::PopAndDestroy( contactIdArray );
-
- // Share View found
- //Clear contacts
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactIdArray = contactEngine->MatchPhoneNumberL(
- KNumber(),
- KNumberMatchingDigitsRequired );
- CleanupStack::PushL( contactIdArray );
- contactEngine->DeleteContactsL( *contactIdArray );
-
- CleanupStack::PopAndDestroy( contactIdArray );
-
- AddToMyContact( *contactEngine,
- KNumber(),
- EPbkFieldIdPhoneNumberMobile,
- _L("test@10.21.32.51"),
- EPbkFieldIdShareView );
-
- contactIdArray = contactEngine->MatchPhoneNumberL(
- KNumber(),
- KNumberMatchingDigitsRequired );
-
- CleanupStack::PushL( contactIdArray );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- ret = iContactAvailability->ContactIdSearch( *contactIdArray, *contactEngine );
- if ( ret == EPbkFieldIdNone )
- {
- User::Leave( KErrNoMemory );
- }
- EUNIT_ASSERT( ret == EPbkFieldIdShareView );
-
- contactEngine->DeleteContactsL( *contactIdArray );
- CleanupStack::PopAndDestroy( contactIdArray );
- CleanupStack::PopAndDestroy( contactEngine );
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ResolveAddressesLL()
{
- CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( 10 );
- CleanupStack::PushL( array );
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
-
- // dummy initialization, other ways CPbkContactEngine leaks memory
- CPbkContactItem* pbkItem = NULL;
- TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
- delete pbkItem;
-
- CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- //Test cases
- //Sip Uri without At sign
- CContactTextField* urlSipField =
- EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdSIPID );
-
-
- if ( urlSipField )
- {
- urlSipField->SetTextL( _L("sip:10.21.32.51") );
- }
- else
- {
- EUNIT_ASSERT( !urlSipField );
- }
-
- TBool ret;
- TRAPD( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
- array,
- EPbkFieldIdSIPID ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( !ret );
- EUNIT_ASSERT( array->Count() == 0 );
-
-
- //Undefined Uri
- CContactTextField* urlUndefinedField =
- EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdPushToTalk );
- if ( urlUndefinedField )
- {
- urlUndefinedField->SetTextL( _L("test@10.21.32.51") );
- }
- else
- {
- EUNIT_ASSERT( !urlUndefinedField );
- }
- contactEngine->AddNewContactL( *contactItem );
- TRAP( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
- array,
- EPbkFieldIdSIPID ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( !ret );
-
- EUNIT_ASSERT( array->Count() == 0 );
-
- //Sip Uri
- CContactTextField* urlAtSignField =
- EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdSIPID );
- if ( urlAtSignField )
- {
- urlAtSignField->SetTextL( _L("sip:test@10.21.32.51") );
- }
- else
- {
- EUNIT_ASSERT( !urlAtSignField );
- }
- contactEngine->AddNewContactL( *contactItem );
- TRAP( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
- array,
- EPbkFieldIdSIPID ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( ret );
- EUNIT_ASSERT( array->Count() > 0 );
-
- //Clear array
- array->Reset();
-
- //ShareView Uri
- CContactTextField* urlShareViewField =
- EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdShareView );
- if ( urlShareViewField )
- {
- urlShareViewField->SetTextL( _L("test@10.21.32.51") );
- }
- else
- {
- EUNIT_ASSERT( !urlShareViewField );
- }
-
- TRAP( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
- array,
- EPbkFieldIdShareView ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( ret );
- EUNIT_ASSERT( array != NULL );
- EUNIT_ASSERT( array->Count() > 0 );
- array->Reset();
-
-
- //End test
- CleanupStack::PopAndDestroy( contactItem );
- CleanupStack::PopAndDestroy( contactEngine );
- CleanupStack::PopAndDestroy( array );
-
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ResolveAddressesLOpSpecificL()
{
- CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( 10 );
- CleanupStack::PushL( array );
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
-
- // dummy initialization, other ways CPbkContactEngine leaks memory
- CPbkContactItem* pbkItem = NULL;
- TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
- delete pbkItem;
-
- CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- //Test cases
- //Sip Uri without test string
- CContactTextField* urlAtSignField =
- EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdSIPID );
- if ( urlAtSignField )
- {
- urlAtSignField->SetTextL( _L("sip:test@10.21.32.51") );
- }
- else
- {
- EUNIT_ASSERT( !urlAtSignField );
- }
- contactEngine->AddNewContactL( *contactItem );
- TBool ret;
- TRAPD( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
- array,
- EPbkFieldIdSIPID ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( !ret );
- EUNIT_ASSERT_EQUALS( array->Count(), 0 );
-
- //Clear array
- array->Reset();
-
- //Sip Uri with test string (*#)
- urlAtSignField =
- EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdSIPID );
- if ( urlAtSignField )
- {
- urlAtSignField->SetTextL( _L("sip:test*#@10.21.32.51") );
- }
- else
- {
- EUNIT_ASSERT( !urlAtSignField );
- }
- contactEngine->AddNewContactL( *contactItem );
- TRAP( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
- array,
- EPbkFieldIdSIPID ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT ( ret );
- EUNIT_ASSERT( array->Count() > 0 );
-
- //Clear array
- array->Reset();
-
- //End test
- CleanupStack::PopAndDestroy( contactItem );
- CleanupStack::PopAndDestroy( contactEngine );
- CleanupStack::PopAndDestroy( array );
-
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ResolvePhoneContactLL()
{
- CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( 10 );
- CleanupStack::PushL( array );
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
-
- CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
- ///Number plan is in national mode
- TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL(_L("0401234567"));
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iContactAvailability->ResolvePhoneContactL( *contactItem, array );
- EUNIT_ASSERT( array->MdcaCount() == 0 );
- //Number plan is in internatiolan mode
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem->RemoveDefaultPhoneNumberField();
- fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL(_L("+358401234567"));
- EUNIT_ENABLE_ALLOC_DECORATOR;
- iContactAvailability->ResolvePhoneContactL( *contactItem, array );
- EUNIT_ASSERT( array->MdcaCount() > 0 );
- array->Reset();
-
- //tel uri
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem->RemoveDefaultPhoneNumberField();
- fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL(_L("tel:+358401234567"));
- EUNIT_ENABLE_ALLOC_DECORATOR;
- iContactAvailability->ResolvePhoneContactL( *contactItem, array );
- EUNIT_ASSERT( array->Count() == 0 );
-
- //End test
- CleanupStack::PopAndDestroy( contactItem );
- CleanupStack::PopAndDestroy( contactEngine );
- CleanupStack::PopAndDestroy( array );
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ResolvePhoneContactLOpSpecificL()
{
- CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( 10 );
- CleanupStack::PushL( array );
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
-
- CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
- ///Number plan is in national mode
- TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL(_L("0401234567"));
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iContactAvailability->ResolvePhoneContactL( *contactItem, array );
- EUNIT_ASSERT( array->MdcaCount() > 0 );
- //Number plan is in internatiolan mode
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem->RemoveDefaultPhoneNumberField();
- fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL(_L("+358401234567"));
- EUNIT_ENABLE_ALLOC_DECORATOR;
- iContactAvailability->ResolvePhoneContactL( *contactItem, array );
- EUNIT_ASSERT( array->MdcaCount() > 0 );
- array->Reset();
-
- //tel uri
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem->RemoveDefaultPhoneNumberField();
- fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL(_L("tel:+358401234567"));
- EUNIT_ENABLE_ALLOC_DECORATOR;
- iContactAvailability->ResolvePhoneContactL( *contactItem, array );
- EUNIT_ASSERT( array->Count() > 0 );
-
- //End test
- CleanupStack::PopAndDestroy( contactItem );
- CleanupStack::PopAndDestroy( contactEngine );
- CleanupStack::PopAndDestroy( array );
- }
-
-CContactTextField* UT_CMusAvaContactAvailability::EditableContactFieldL(
- CPbkContactEngine& aContactEngine,
- CPbkContactItem& aContact,
- TPbkFieldId aFieldId )
- {
- /* CContactDatabase* contactDatabase = NULL;
- contactDatabase = CContactDatabase::OpenL();
- CleanupStack::PushL( contactDatabase );
- CCntFilter* newFilter = CCntFilter::NewLC();
- newFilter->Reset();
- newFilter->SetContactFilterTypeALL( ETrue );
- contactDatabase->FilterDatabaseL( *newFilter );
-
- CContactIdArray* contactsId = newFilter->iIds;
- if ( contactsId->Count() )
- {
- aContactEngine.DeleteContactsL( *contactsId );
- }
- //contactDatabase->CommitContactL():
-
- CleanupStack::PopAndDestroy( 2 );
- CleanupStack::PopAndDestroy( contactDatabase );*/
-
- EUNIT_DISABLE_ALLOC_DECORATOR;
- const CPbkFieldsInfo& fieldsInfo = aContactEngine.FieldsInfo();
- // Try to get the SIP URI storage field for this contact
- TPbkContactItemField* itemField = aContact.FindField( aFieldId );
-
- if ( !itemField )
- {
- CPbkFieldInfo* fieldInfo = fieldsInfo.Find( aFieldId );
- // Add field to this contact
- if ( fieldInfo )
- {
- CleanupStack::PushL( fieldInfo );
- // Contact takes ownership of the field.
- aContact.AddFieldL( *fieldInfo );
- CleanupStack::Pop( fieldInfo );
- itemField = aContact.FindField( aFieldId );
- if ( itemField )
- {
- return itemField->TextStorage();
- }
- else
- {
- EUNIT_ASSERT( !itemField );
- }
- }
- else
- {
- EUNIT_ASSERT( !fieldInfo );
- }
- }
- else
- {
- return itemField->TextStorage();
- }
- EUNIT_ENABLE_ALLOC_DECORATOR;
- return NULL; // Should never reach here, just to avoid warnings.
}
-void UT_CMusAvaContactAvailability::AddFields( CPbkContactEngine& aContactEngine,
- CPbkContactItem& contact,
- const TDesC& aText,
- TPbkFieldId aFieldId )
- {
- const CPbkFieldsInfo& fieldsInfo = aContactEngine.FieldsInfo();
- // Try to get the storage field for this contact
- TPbkContactItemField* itemField = contact.FindField( aFieldId );
-
- if ( itemField == NULL )
- {
- CPbkFieldInfo* fieldInfo = fieldsInfo.Find( aFieldId );
- // Add field to this contact
- if ( fieldInfo )
- {
- CleanupStack::PushL( fieldInfo );
- // Contact takes ownership of the field.
- contact.AddFieldL( *fieldInfo );
- CleanupStack::Pop( fieldInfo );
- itemField = contact.FindField( aFieldId );
- if ( itemField )
- {
- itemField->TextStorage()->SetTextL( aText );
- }
- else
- {
- EUNIT_ASSERT( !itemField );
- }
- }
- else
- {
- EUNIT_ASSERT( !fieldInfo );
- }
- }
- else
- {
- // Set some default fields
- itemField->TextStorage()->SetTextL(aText );
- }
- }
-
-void UT_CMusAvaContactAvailability::AddToMyContact( CPbkContactEngine& aContactEngine,
- const TDesC& aText,
- TPbkFieldId aFieldId,
- const TDesC& aText2,
- TPbkFieldId aFieldId2 )
- {
- // Create a contact with few default fields
- // All the default fields are empty and won't be displayed
- // until some information is stored in them
- /*CPbkContactItem* contact = aContactEngine.CreateEmptyContactL();
- CleanupStack::PushL( contact );
-
- // Set some default fields
- contact->FindField( aFieldId )->TextStorage()->SetTextL(aText );
- // Set some default fields
- contact->FindField( aFieldId2 )->TextStorage()->SetTextL(aText2 );
-
- // Store the contact to the phonebook
- aContactEngine.AddNewContactL( *contact );
- CleanupStack::PopAndDestroy( contact );*/
-
- /*CPbkContactItem* contact = aContactEngine.CreateEmptyContactL();
- CleanupStack::PushL( contact );
-
- const CPbkFieldsInfo& fieldsInfo = aContactEngine.FieldsInfo();
- // Try to get the storage field for this contact
- TPbkContactItemField* itemField = contact->FindField( aFieldId );
-
- if ( itemField == NULL )
- {
- CPbkFieldInfo* fieldInfo = fieldsInfo.Find( aFieldId );
- // Add field to this contact
- if ( fieldInfo )
- {
- CleanupStack::PushL( fieldInfo );
- // Contact takes ownership of the field.
- contact->AddFieldL( *fieldInfo );
- CleanupStack::Pop( fieldInfo );
- itemField = contact->FindField( aFieldId );
- if ( itemField )
- {
- itemField->TextStorage()->SetTextL( aText );
- }
- else
- {
- EUNIT_ASSERT( !itemField );
- }
- }
- else
- {
- EUNIT_ASSERT( !fieldInfo );
- }
- }
- else
- {
- // Set some default fields
- itemField->TextStorage()->SetTextL(aText );
- }
- // Store the contact to the phonebook
- aContactEngine.AddNewContactL( *contact );
- CleanupStack::PopAndDestroy( contact );*/
-
- CPbkContactItem* contact = aContactEngine.CreateEmptyContactL();
- CleanupStack::PushL( contact );
-
- AddFields( aContactEngine, *contact, aText, aFieldId );
- AddFields( aContactEngine, *contact, aText2, aFieldId2 );
- // Store the contact to the phonebook
- aContactEngine.AddNewContactL( *contact );
- CleanupStack::PopAndDestroy( contact );
-
- }
-
void UT_CMusAvaContactAvailability::UT_CMusAvaController_IsExistAlreadyL()
{
- _LIT( KTestUri1, "sip:1@test.net");
- _LIT( KTestUri2, "sip:2@test.net");
- _LIT( KTestUri3, "sip:3@test.net");
- _LIT( KTestUri5, "sip:5@test.net");
-
- TBufC16<16> str1(KTestUri1);
- HBufC16* ptr1;
- ptr1 = str1.AllocLC();
-
- TBufC16<16> str2(KTestUri2);
- HBufC16* ptr2;
- ptr2 = str2.AllocLC();
-
- TBufC16<16> str3(KTestUri3);
- HBufC16* ptr3;
- ptr3 = str3.AllocLC();
-
- CDesCArrayFlat* array = new( ELeave ) CDesCArrayFlat(1);
- CleanupStack::PushL(array);
- array->AppendL(*ptr1);
- array->AppendL(*ptr2);
- array->AppendL(*ptr3);
-
- TBool exist = EFalse;
-
- // Test 1 :
- exist = iContactAvailability->IsExistAlready(*array,KTestUri1);
- EUNIT_ASSERT(exist);
- // Test 2 :
- exist = iContactAvailability->IsExistAlready(*array,KTestUri5);
- EUNIT_ASSERT(!exist);
-
- array->Reset();
- CleanupStack::PopAndDestroy(array);
- CleanupStack::PopAndDestroy(ptr3);
- CleanupStack::PopAndDestroy(ptr2);
- CleanupStack::PopAndDestroy(ptr1);
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_UpdateContactNameLL()
{
- CPbkContactItem* contactItem = NULL;
-
- EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( contactEngine );
-
- // dummy initialization, other ways CPbkContactEngine leaks memory
- CPbkContactItem* pbkItem = NULL;
- TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
- delete pbkItem;
-
- contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- //contact firstname && iBeginWithFirstName = ETrue
- TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
-
- TPbkContactItemField* fieldMobile1 = contactItem->FindField(EPbkFieldIdFirstName);
- fieldMobile1->TextStorage()->SetTextL( KFirstName() );
-
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iConcreteSettings->SetTelNumberL( KPlusNumber() );
-
- iContactAvailability->iBeginWithFirstName = ETrue;
- TRAPD( error,
- iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( error == KErrNone );
- EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KFirstName ) == NULL );
-
- CleanupStack::PopAndDestroy( contactItem );
- CContactIdArray* array = NULL;
- iContactAvailability->ContactArrayL( array, *contactEngine );
- CleanupStack::PushL( array );
- contactEngine->DeleteContactsL( *array, ETrue );
- CleanupStack::PopAndDestroy( array );
-
- //contact firstname && iBeginWithFirstName = EFalse
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
-
- fieldMobile1 = contactItem->FindField(EPbkFieldIdFirstName);
- fieldMobile1->TextStorage()->SetTextL( KFirstName() );
-
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iConcreteSettings->SetTelNumberL( KPlusNumber() );
-
- iContactAvailability->iBeginWithFirstName = EFalse;
- TRAP( error,
- iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( error == KErrNone );
- EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KFirstName ) == NULL );
-
- CleanupStack::PopAndDestroy( contactItem );
- array = NULL;
- iContactAvailability->ContactArrayL( array, *contactEngine );
- CleanupStack::PushL( array );
- contactEngine->DeleteContactsL( *array, ETrue );
- CleanupStack::PopAndDestroy( array );
-
- //contact lastname && iBeginWithFirstName = ETrue
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
-
- fieldMobile1 = contactItem->FindField(EPbkFieldIdLastName);
- fieldMobile1->TextStorage()->SetTextL( KLastName() );
-
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iConcreteSettings->SetTelNumberL( KPlusNumber() );
-
- iContactAvailability->iBeginWithFirstName = ETrue;
- TRAP( error,
- iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( error == KErrNone );
- EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KLastName ) == NULL );
-
- CleanupStack::PopAndDestroy( contactItem );
- array = NULL;
- iContactAvailability->ContactArrayL( array, *contactEngine );
- CleanupStack::PushL( array );
- contactEngine->DeleteContactsL( *array, ETrue );
- CleanupStack::PopAndDestroy( array );
-
- //contact lastname && iBeginWithFirstName = EFalse
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
+ }
- fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
-
- fieldMobile1 = contactItem->FindField(EPbkFieldIdLastName);
- fieldMobile1->TextStorage()->SetTextL( KLastName() );
-
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iConcreteSettings->SetTelNumberL( KPlusNumber() );
-
- iContactAvailability->iBeginWithFirstName = EFalse;
- TRAP( error,
- iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( error == KErrNone );
- EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KLastName ) == NULL );
-
- CleanupStack::PopAndDestroy( contactItem );
- array = NULL;
- iContactAvailability->ContactArrayL( array, *contactEngine );
- CleanupStack::PushL( array );
- contactEngine->DeleteContactsL( *array, ETrue );
- CleanupStack::PopAndDestroy( array );
-
- //contact firstname && lastname && iBeginWithFirstName = ETrue
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
-
- fieldMobile1 = contactItem->FindField(EPbkFieldIdFirstName);
- fieldMobile1->TextStorage()->SetTextL( KFirstName() );
-
- TPbkContactItemField* fieldMobile2 = contactItem->FindField(EPbkFieldIdLastName);
- fieldMobile2->TextStorage()->SetTextL( KLastName() );
-
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iConcreteSettings->SetTelNumberL( KPlusNumber() );
-
- iContactAvailability->iBeginWithFirstName = ETrue;
- TRAP( error,
- iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( error == KErrNone );
- EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KFirstLastName ) == NULL );
-//
- CleanupStack::PopAndDestroy( contactItem );
- array = NULL;
- iContactAvailability->ContactArrayL( array, *contactEngine );
- CleanupStack::PushL( array );
- contactEngine->DeleteContactsL( *array, ETrue );
- CleanupStack::PopAndDestroy( array );
-
- //contact firstname && lastname && iBeginWithFirstName = EFalse
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
-
- fieldMobile1 = contactItem->FindField(EPbkFieldIdFirstName);
- fieldMobile1->TextStorage()->SetTextL( KFirstName() );
-
- fieldMobile2 = contactItem->FindField(EPbkFieldIdLastName);
- fieldMobile2->TextStorage()->SetTextL( KLastName() );
-
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iConcreteSettings->SetTelNumberL( KPlusNumber() );
-
- iContactAvailability->iBeginWithFirstName = EFalse;
- TRAP( error,
- iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( error == KErrNone );
- EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KLastFirstName ) == NULL );
-
- CleanupStack::PopAndDestroy( contactItem );
- array = NULL;
- iContactAvailability->ContactArrayL( array, *contactEngine );
- CleanupStack::PushL( array );
- contactEngine->DeleteContactsL( *array, ETrue );
- CleanupStack::PopAndDestroy( array );
-
- // contact name only contain 1 character
- _LIT(KNameWithOneChar,"M");
- for (int i = 0; i < 1; ++i )
- {
- EUNIT_DISABLE_ALLOC_DECORATOR;
- contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
-
- fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
-
- fieldMobile1 = contactItem->FindField(EPbkFieldIdFirstName);
- fieldMobile1->TextStorage()->SetTextL( KNameWithOneChar() );
-
- contactEngine->AddNewContactL( *contactItem );
- EUNIT_ENABLE_ALLOC_DECORATOR;
-
- iConcreteSettings->SetTelNumberL( KPlusNumber() );
-
- iContactAvailability->iBeginWithFirstName = i;
- TRAP( error,
- iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_ASSERT( error == KErrNone );
- EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KNameWithOneChar ) == 0 );
-
- CleanupStack::PopAndDestroy( contactItem );
- array = NULL;
- iContactAvailability->ContactArrayL( array, *contactEngine );
- CleanupStack::PushL( array );
- contactEngine->DeleteContactsL( *array, ETrue );
- CleanupStack::PopAndDestroy( array );
- }
-
- CleanupStack::PopAndDestroy( contactEngine );
- }
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -1515,6 +376,13 @@
"DoExecuteL_2",
"FUNCTIONALITY",
SetupL, UT_CMusAvaController_DoExecuteL2_L, Teardown)
+
+EUNIT_TEST(
+ "DoExecuteL_3 - test ",
+ "CMusAvaContactAvailability",
+ "DoExecuteL_3",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAvaController_DoExecuteL3_L, Teardown)
EUNIT_TEST(
"Name - test ",
@@ -1635,12 +503,6 @@
"FUNCTIONALITY",
SetupL, UT_CMusAvaController_UpdateContactNameLL, Teardown)
-EUNIT_TEST(
- "UpdateContactNameL - test ",
- "CMusAvaContactAvailability",
- "UpdateContactNameL",
- "FUNCTIONALITY",
- SetupL, UT_CMusAvaController_CallConnectedLL, Teardown)
EUNIT_END_TEST_TABLE
// END OF FILE
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaDefaultImp.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaDefaultImp.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -33,8 +33,6 @@
// EXTERNAL INCLUDES
#include <digia/eunit/eunitmacros.h>
-#include <CPbkContactItem.h>
-#include <CPbkContactEngine.h>
#include <sipstrings.h>
#include <digia/eunit/eunitdecorators.h>
@@ -385,26 +383,13 @@
}
EUNIT_DISABLE_ALLOC_DECORATOR;
- CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
EUNIT_ENABLE_ALLOC_DECORATOR;
- CleanupStack::PushL( contactEngine );
// dummy initialization, other ways CPbkContactEngine leaks memory
- CPbkContactItem* pbkItem = NULL;
- TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
- delete pbkItem;
-
- CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
- CleanupStack::PushL( contactItem );
//contact
- TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
- fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
-
EUNIT_DISABLE_ALLOC_DECORATOR;
- contactEngine->AddNewContactL( *contactItem );
EUNIT_ENABLE_ALLOC_DECORATOR;
- CleanupStack::PopAndDestroy( contactItem );
iConcreteSettings->SetTelNumberL( KPlusNumber() );
@@ -415,7 +400,6 @@
EUNIT_ASSERT( iDefaultImp->AvailabilityState(
MMusAvaObserver::EMusAvaInviteHandler)
== MMusAvaObserver::EMusAvaStatusAvailable );
- CleanupStack::PopAndDestroy( contactEngine );
}
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaDefaultOptionHandler.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaDefaultOptionHandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -93,6 +93,11 @@
TRAP_IGNORE( SIPStrings::OpenL() )
CSipSseTestTls::OpenL();
iStorage = CSipSseTestTls::Storage();
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
+
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
MultimediaSharingSettings::SetEdgeDtmSupportSettingL( MusSettingsKeys::EDtmModeAllowed );
iAvailabilityObserver = CMusAvaAvailabilityObserverImp::NewL();
@@ -110,6 +115,9 @@
TRAP_IGNORE( SIPStrings::OpenL() )
CSipSseTestTls::OpenL();
iStorage = CSipSseTestTls::Storage();
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
+
MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EOperatorSpecific );
MultimediaSharingSettings::SetEdgeDtmSupportSettingL( MusSettingsKeys::EDtmModeAllowed );
iAvailabilityObserver = CMusAvaAvailabilityObserverImp::NewL();
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaNetworkAvailability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaNetworkAvailability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -32,7 +32,7 @@
#include "mussesseioninformationapi.h"
_LIT( KTelNumber, "12345" );
-_LIT( KAnotherTelNumber, "54321" );
+_LIT( KSipUri, "sip:uri@host" );
// CONSTRUCTION
UT_CMusAvaNetworkAvailability* UT_CMusAvaNetworkAvailability::NewL()
@@ -86,12 +86,6 @@
NMusSessionInformationApi::KMusCallDirection,
RProperty::EInt,
0 );
-
-
- RProperty::Define( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSPrivacy,
- RProperty::EInt,
- 0 );
}
@@ -123,10 +117,6 @@
User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
0 ));
-
- User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSPrivacy,
- 0 ));
iNetworkAvailability->DoExecuteL();
EUNIT_ASSERT_EQUALS( iNetworkAvailability->State(),
@@ -138,22 +128,50 @@
NMusSessionInformationApi::KMusCallEvent,
1 ));
- User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusTelNumber,
- KTelNumber ));
-
- User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallDirection,
- 0 ));
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KTelNumber ));
+
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallDirection,
+ 0 ));
iNetworkAvailability->DoExecuteL();
EUNIT_ASSERT_EQUALS( iNetworkAvailability->State(),
MMusAvaObserver::EMusAvaStatusAvailable );
EUNIT_ASSERT_EQUALS( iSettings->TelNumber(), KTelNumber );
+ const MDesCArray& sipAddresses = iSettings->SipAddresses();
+ EUNIT_ASSERT_EQUALS( sipAddresses.MdcaCount(), 0 );
EUNIT_ASSERT_EQUALS( iSettings->CallDirection(), 0 );
-
}
+void UT_CMusAvaNetworkAvailability::UT_CMusAvaNetworkAvailability_DoExecuteL_SipUriL()
+ {
+ // one call, SIP URI given
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ 1 ));
+
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KSipUri ));
+
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallDirection,
+ 0 ));
+
+ iNetworkAvailability->DoExecuteL();
+ EUNIT_ASSERT_EQUALS( iNetworkAvailability->State(),
+ MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT_EQUALS( iSettings->TelNumber(), KNullDesC );
+
+ const MDesCArray& sipAddresses = iSettings->SipAddresses();
+ EUNIT_ASSERT_EQUALS( sipAddresses.MdcaCount(), 1 );
+ EUNIT_ASSERT_EQUALS( sipAddresses.MdcaPoint( 0 ), KSipUri );
+
+ EUNIT_ASSERT_EQUALS( iSettings->CallDirection(), 0 );
+ }
+
void UT_CMusAvaNetworkAvailability::UT_CMusAvaNetworkAvailability_StopL()
{
iNetworkAvailability->Stop();
@@ -172,26 +190,20 @@
User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallDirection,
0 ));
-
- User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSPrivacy,
- 0 ));
-
- iNetworkAvailability->iConfcall = ETrue;
- iNetworkAvailability->iSettings.SetOptionSentNumber( KTelNumber );
- iNetworkAvailability->CallConnectedL( KTelNumber );
+
+ iNetworkAvailability->CallConnectedL( KTelNumber, EFalse );
EUNIT_ASSERT_EQUALS( iNetworkAvailability->State(),
MMusAvaObserver::EMusAvaStatusAvailable );
-
+ EUNIT_ASSERT_EQUALS( iSettings->TelNumber(), KTelNumber );
- iNetworkAvailability->iSettings.SetOptionSentNumber( KAnotherTelNumber );
- iNetworkAvailability->CallConnectedL( KTelNumber );
- EUNIT_ASSERT_EQUALS( iNetworkAvailability->State(),
- MMusAvaObserver::EMusAvaStatusInProgress );
- EUNIT_ASSERT( iNetworkAvailability->iSettings.OptionSentTelNumber().Length() == 0 );
-
-
- EUNIT_ASSERT_EQUALS( iSettings->TelNumber(), KTelNumber );
+
+ // Test SIP URI
+ iNetworkAvailability->CallConnectedL( KSipUri, ETrue );
+ // Tel number should not have been modified
+ EUNIT_ASSERT_EQUALS( iSettings->TelNumber(), KTelNumber );
+ const MDesCArray& sipAddresses = iSettings->SipAddresses();
+ EUNIT_ASSERT_EQUALS( sipAddresses.MdcaCount(), 1 );
+ EUNIT_ASSERT_EQUALS( sipAddresses.MdcaPoint( 0 ), KSipUri );
}
void UT_CMusAvaNetworkAvailability::UT_CMusAvaNetworkAvailability_ConferenceCallLL()
@@ -206,17 +218,21 @@
User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallDirection,
0 ));
- User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSPrivacy,
- 0 ));
-
- iNetworkAvailability->CallHoldL( KTelNumber );
+ iNetworkAvailability->CallHoldL( KTelNumber, EFalse );
EUNIT_ASSERT_EQUALS( iNetworkAvailability->State(),
MMusAvaObserver::EMusAvaStatusCallOnHold );
- EUNIT_ASSERT_EQUALS( iSettings->TelNumber(), KTelNumber );
+ EUNIT_ASSERT_EQUALS( iSettings->TelNumber(), KTelNumber );
+
+ // Test SIP URI
+ iNetworkAvailability->CallConnectedL( KSipUri, ETrue );
+ // Tel number should not have been modified
+ EUNIT_ASSERT_EQUALS( iSettings->TelNumber(), KTelNumber );
+ const MDesCArray& sipAddresses = iSettings->SipAddresses();
+ EUNIT_ASSERT_EQUALS( sipAddresses.MdcaCount(), 1 );
+ EUNIT_ASSERT_EQUALS( sipAddresses.MdcaPoint( 0 ), KSipUri );
}
-
+
void UT_CMusAvaNetworkAvailability::UT_CMusAvaNetworkAvailability_NoActiveCallLL()
{
iNetworkAvailability->NoActiveCallL();
@@ -225,6 +241,17 @@
EUNIT_ASSERT_EQUALS( iSettings->TelNumber(), KNullDesC );
}
+void UT_CMusAvaNetworkAvailability::UT_CMusAvaNetworkAvailability_SetRemoteHostLL()
+ {
+ _LIT( KMusTestPhoneNum, "12341234" );
+ iNetworkAvailability->SetRemoteHostL( KMusTestPhoneNum(), EFalse );
+ EUNIT_ASSERT_EQUALS( iSettings->TelNumber(), KMusTestPhoneNum );
+ EUNIT_ASSERT_EQUALS( iSettings->ContactResolvingUri(), KNullDesC );
+
+ _LIT( KMusTestSipUri, "sip:12341234@1.2.3.4" );
+ iNetworkAvailability->SetRemoteHostL( KMusTestSipUri(), ETrue );
+ EUNIT_ASSERT_EQUALS( iSettings->ContactResolvingUri(), KMusTestSipUri );
+ }
// TEST TABLE
@@ -242,6 +269,13 @@
SetupL, UT_CMusAvaNetworkAvailability_DoExecuteLL, Teardown)
EUNIT_TEST(
+ "DoExecuteL - test SIP URI ",
+ "CMusAvaNetworkAvailability",
+ "DoExecuteL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAvaNetworkAvailability_DoExecuteL_SipUriL, Teardown)
+
+EUNIT_TEST(
"Stop - test ",
"CMusAvaNetworkAvailability",
"Stop",
@@ -282,6 +316,13 @@
"NoActiveCallL",
"FUNCTIONALITY",
SetupL, UT_CMusAvaNetworkAvailability_NoActiveCallLL, Teardown )
+
+EUNIT_TEST(
+ "SetRemoteHostL - test ",
+ "CMusAvaNetworkAvailability",
+ "SetRemoteHostL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAvaNetworkAvailability_SetRemoteHostLL, Teardown )
EUNIT_END_TEST_TABLE
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaOptionHandler.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaOptionHandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -42,6 +42,7 @@
#include "musavasip.h"
#include "CSipSseTestTls.h"
#include "musavacapabilitytesthelper.h"
+#include "musavasettingsobserverimp.h"
// CONSTRUCTION
@@ -86,7 +87,9 @@
{
iSharedObject = CMusAvaSharedObject::GetSingletonL();
iAvailabilityObserver = CMusAvaAvailabilityObserverImp::NewL();
+ iSettingsObserver = CMusAvaSettingsObserverImp::NewL();
iConcreteSettings = CMusAvaSettingsImp::NewL();
+ iConcreteSettings->SetObserver( *iSettingsObserver );
iOptionHandler = CMusAvaOptionHandler::NewL( *iAvailabilityObserver,
*iConcreteSettings );
@@ -95,6 +98,9 @@
CSIP& sip = iSharedObject->MusAvaSip().Sip();
CSipSseTestTls::OpenL();
iStorage = CSipSseTestTls::Storage();
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
+
iSharedObject->MusAvaSip().CreateProfileL();
iProfile = iSharedObject->MusAvaSip().Profile();
iSharedObject->MusAvaSip().ConnectionL( );
@@ -125,6 +131,9 @@
iStorage = NULL;
}
delete iOptionHandler;
+ delete iSettingsObserver;
+
+ PropertyHelper::Close();
}
void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_NewLL( )
@@ -322,6 +331,143 @@
}
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_DoSetStateL()
+ {
+ // Set some state which does not cause special handling
+ iOptionHandler->iFastModeCapable = EFalse;
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusOptionsSent );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusOptionsSent );
+
+ // Set special handling state, but fast mode is not enabled
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT( !iSettingsObserver->iApplicationStarted );
+
+ // Set special handling state, fast capable but mode is not enabled
+ iOptionHandler->iFastModeCapable = ETrue;
+ iConcreteSettings->SetFastMode( MusSettingsKeys::EFastModeOff );
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT( !iSettingsObserver->iApplicationStarted );
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_DoSetStateFastModeL()
+ {
+ iOptionHandler->iFastModeCapable = ETrue;
+ iConcreteSettings->SetFastMode( MusSettingsKeys::EFastModeOn );
+ iOptionHandler->iSettings.SetCallDirection( 1 );
+
+ // State which does not have special handling
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaFailureCode );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaFailureCode );
+ EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed );
+
+ // OptionsNotSent handling
+ //
+
+ // MT, not answered
+ iOptionHandler->iSettings.SetCallDirection( 2 );
+ iOptionHandler->iCapabilityQueryAnswered = EFalse;
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed );
+
+ // MT, answered (makes state available delayed)
+ iOptionHandler->iCapabilityQueryAnswered = ETrue;
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ EUNIT_ASSERT( iOptionHandler->iFastModeAvailabilityDelayed );
+
+ // Available handling
+ //
+
+ // MO, start app
+ iOptionHandler->iSettings.SetCallDirection( 1 );
+ iSettingsObserver->iApplicationStarted = EFalse;
+ iOptionHandler->iFastModeAvailabilityDelayed = EFalse;
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed );
+ EUNIT_ASSERT( iSettingsObserver->iApplicationStarted );
+
+ // App already started by going to available state, do not do twice
+ iSettingsObserver->iApplicationStarted = EFalse;
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed );
+ EUNIT_ASSERT( !iSettingsObserver->iApplicationStarted );
+
+ // MT, delayed availability publishing (state not changed yet)
+ iOptionHandler->iSettings.SetCallDirection( 2 );
+ iOptionHandler->iFastModeAvailabilityDelayed = EFalse;
+ iSettingsObserver->iApplicationStarted = EFalse;
+ iOptionHandler->iState = MMusAvaObserver::EMusAvaStatusOptionsNotSent;
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ EUNIT_ASSERT( iOptionHandler->iFastModeAvailabilityDelayed );
+ EUNIT_ASSERT( !iSettingsObserver->iApplicationStarted );
+
+ // Invite ends availability delaying
+ iOptionHandler->PrepareForReceivedInviteL();
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed );
+
+ // No effect if no delay pending
+ iOptionHandler->iState = MMusAvaObserver::EMusAvaStatusOptionsNotSent;
+ iOptionHandler->PrepareForReceivedInviteL();
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+
+ // OptionNotAvailable handling
+ //
+
+ // Normal handling when no pending availabilty publishing nor state is
+ // not already available
+ iOptionHandler->iFastModeAvailabilityDelayed = EFalse;
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaOptionNotAvailable );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaOptionNotAvailable );
+
+ // If already set to available by succesfull answer, sending failure
+ // does not clear availability
+ iOptionHandler->iState = MMusAvaObserver::EMusAvaStatusAvailable;
+ iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaOptionNotAvailable );
+ EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable );
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_FastModeResolvedL()
+ {
+ iOptionHandler->iFastModeCapable = ETrue;
+
+ // Normal case
+ iOptionHandler->iSettings.SetFastMode( MusSettingsKeys::EFastModeOff );
+ iOptionHandler->FastModeResolved( MusSettingsKeys::EFastModeOn );
+ EUNIT_ASSERT( iOptionHandler->iSettings.FastMode() == MusSettingsKeys::EFastModeOn )
+
+ // MO side fast mode negotiation has failed, value is not set
+ iOptionHandler->iSettings.SetFastMode( MusSettingsKeys::EFastModeOff );
+ iOptionHandler->iSettings.SetCallDirection( 1 );
+ iOptionHandler->iState = MMusAvaObserver::EMusAvaOptionNotAvailable;
+ iOptionHandler->FastModeResolved( MusSettingsKeys::EFastModeOn );
+ EUNIT_ASSERT( iOptionHandler->iSettings.FastMode() == MusSettingsKeys::EFastModeOff )
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_CapabilityQueryAnsweredL()
+ {
+ iOptionHandler->iFastModeCapable = ETrue;
+
+ // If fast mode MO side, no special handling for answer
+ iOptionHandler->CapabilityQueryAnswered( ETrue );
+ EUNIT_ASSERT( iOptionHandler->iCapabilityQueryAnswered )
+ EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed );
+
+ // If fast mode MT side, MT can start waiting for invite already after answering
+ iOptionHandler->iCapabilityQueryAnswered = EFalse;
+ iOptionHandler->iSettings.SetFastMode( MusSettingsKeys::EFastModeOn );
+ iOptionHandler->iSettings.SetCallDirection( 2 );
+ iOptionHandler->CapabilityQueryAnswered( ETrue );
+ EUNIT_ASSERT( iOptionHandler->iCapabilityQueryAnswered )
+ EUNIT_ASSERT( iOptionHandler->iFastModeAvailabilityDelayed );
+ }
+
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -396,6 +542,38 @@
SetupL,UT_CMusAvaOptionHandler_VideoCodecsResolvedLL,
Teardown)
+EUNIT_TEST(
+ "DoSetState - test ",
+ "CMusAvaOptionHandler",
+ "DoSetState",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_DoSetStateL,
+ Teardown)
+
+EUNIT_TEST(
+ "DoSetState - fastmode test ",
+ "CMusAvaOptionHandler",
+ "DoSetState",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_DoSetStateFastModeL,
+ Teardown)
+
+EUNIT_TEST(
+ "FastModeResolved - test ",
+ "CMusAvaOptionHandler",
+ "FastModeResolved",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_FastModeResolvedL,
+ Teardown)
+
+EUNIT_TEST(
+ "CapabilityQueryAnswered - test ",
+ "CMusAvaOptionHandler",
+ "CapabilityQueryAnswered",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_CapabilityQueryAnsweredL,
+ Teardown)
+
EUNIT_END_TEST_TABLE
// END OF FILE
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaRegisterAvailability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaRegisterAvailability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -219,12 +219,6 @@
EUNIT_ASSERT( iAvailabilityObserver->iStatus == MMusAvaObserver::EMusAvaStatusNotRegistered );
EUNIT_ASSERT( iAvailabilityObserver->iName == MMusAvaObserver::EMusAvaNameRegistration );
- EUNIT_ASSERT( iSharedObj->MusAvaSip().iSipConnection == NULL );
-
- iRegisterAvailability->ProfileRegistryEventOccurred( 1, MSIPProfileRegistryObserver::EProfileRegistered );
- EUNIT_ASSERT( iAvailabilityObserver->iStatus == MMusAvaObserver::EMusAvaStatusAvailable );
- EUNIT_ASSERT( iAvailabilityObserver->iName == MMusAvaObserver::EMusAvaNameRegistration );
- EUNIT_ASSERT( iSharedObj->MusAvaSip().iSipConnection != NULL );
iRegisterAvailability->ProfileRegistryEventOccurred( 1, MSIPProfileRegistryObserver::EProfileDestroyed );
EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusAvaStatusNotRegistered );
@@ -276,45 +270,19 @@
void UT_CMusAvaRegisterAvailability::UT_CMusAvaRegisterAvailability_ProfileRegistryErrorOccurredL()
{
- iRegisterAvailability->iOperatorVariant = MusSettingsKeys::EOperatorSpecific;
iRegisterAvailability->ProfileRegistryErrorOccurred(5, -5 );
- EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusAvaStatusNotExecuted );
- iRegisterAvailability->ProfileRegistryErrorOccurred(5, KErrGeneral );
- EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusAvaStatusNotExecuted );
-
- iRegisterAvailability->iOperatorVariant = MusSettingsKeys::EStandard;
- iRegisterAvailability->ProfileRegistryErrorOccurred(5, -5 );
- EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusAvaStatusNotExecuted );
- iRegisterAvailability->ProfileRegistryErrorOccurred(5, KErrGeneral );
- EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusAvaStatusNotExecuted );
-
+
// Test Profile
TRAPD( error, iSharedObj->MusAvaSip().CreateProfileL() );
if ( error == KErrNoMemory ) User::Leave( error );
EUNIT_ASSERT ( error == KErrNone );
//Profile created
iRegisterAvailability->ProfileRegistryErrorOccurred(5, -5 );
- EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusAvaStatusNotExecuted );
-
- iRegisterAvailability->iOperatorVariant = MusSettingsKeys::EOperatorSpecific;
- iRegisterAvailability->ProfileRegistryErrorOccurred(5, KErrGeneral );
- EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusAvaStatusNotExecuted );
-
- iRegisterAvailability->iOperatorVariant = MusSettingsKeys::EStandard;
- iRegisterAvailability->ProfileRegistryErrorOccurred(5, KErrGeneral );
- EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusAvaStatusNotExecuted );
MultimediaSharingSettings::SetSipProfileSettingL( 1 );
iRegisterAvailability->ProfileRegistryErrorOccurred(1, -5 );
EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusAvaStatusNotRegistered );
-
- iRegisterAvailability->ProfileRegistryErrorOccurred(1, KErrGeneral );
- EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusAvaStatusNotRegistered );
- //Operator variant. SIP profile disabled.
- iRegisterAvailability->iOperatorVariant = MusSettingsKeys::EOperatorSpecific;
- iRegisterAvailability->ProfileRegistryErrorOccurred(1, KErrGeneral );
- EUNIT_ASSERT( iRegisterAvailability->State() == MMusAvaObserver::EMusActivationError );
}
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaSettingAvailability.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaSettingAvailability.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -132,7 +132,13 @@
MultimediaSharingSettings::SetActivationSettingL(MusSettingsKeys::EActiveInHomeNetworks);
iSettingAvailability->CheckActivationState();
- EUNIT_ASSERT( iSettingAvailability->iState == MMusAvaObserver::EMusActivationError );
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ if ( count > 0 && iSettingAvailability->iState
+ == MMusAvaObserver::EMusActivationError )
+ {
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( iSettingAvailability->iState == MMusAvaObserver::EMusAvaStatusAvailable );
MultimediaSharingSettings::SetActivationSettingL(MusSettingsKeys::ENever);
iSettingAvailability->CheckActivationState();
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaSettingsImp.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaSettingsImp.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -197,28 +197,6 @@
EUNIT_ASSERT( iSettingsImp->iTelNumber->Compare( KNumber ) == 0 );
}
-
-void UT_CMusAvaSettingsImp::UT_CMusAvaSettingsImp_SetOptionSentNumber()
- {
- _LIT( KNumber , "123456789" );
- iSettingsImp->SetOptionSentNumber( KNumber );
- EUNIT_ASSERT( iSettingsImp->iOptionSentTelNumber->Compare( KNumber ) == 0 );
- }
-
-const UT_CMusAvaSettingsImp::UT_CMusAvaSettingsImp_OptionSentTelNumber()
- {
- EUNIT_ASSERT( iSettingsImp->OptionSentTelNumber().Length() == 0 );
- }
-
-void UT_CMusAvaSettingsImp::UT_CMusAvaSettingsImp_ReleaseOptionSentNumber()
- {
- _LIT( KNumber , "123456789" );
- iSettingsImp->SetOptionSentNumber( KNumber );
- EUNIT_ASSERT( iSettingsImp->iOptionSentTelNumber->Compare( KNumber ) == 0 );
- iSettingsImp->ReleaseOptionSentNumber();
- EUNIT_ASSERT( iSettingsImp->iOptionSentTelNumber->Length() == 0 )
- }
-
void UT_CMusAvaSettingsImp::UT_CMusAvaSettingsImp_SetSipAddressProposalLL( )
{
_LIT( KNumber , "123456789" );
@@ -536,28 +514,6 @@
"Sip",
"FUNCTIONALITY",
SetupL, UT_CMusAvaSettingsImp_CopyDescArrayLL, Teardown)
-
-EUNIT_TEST(
- "SetOptionSentNumber - test ",
- "CMusAvaSettingsImp",
- "SetOptionSentNumber",
- "FUNCTIONALITY",
- SetupL, UT_CMusAvaSettingsImp_SetOptionSentNumber, Teardown)
-
-EUNIT_TEST(
- "OptionSentTelNumber - test ",
- "CMusAvaSettingsImp",
- "OptionSentTelNumber",
- "FUNCTIONALITY",
- SetupL, UT_CMusAvaSettingsImp_OptionSentTelNumber, Teardown)
-
-EUNIT_TEST(
- "ReleaseOptionSentNumber - test ",
- "CMusAvaSettingsImp",
- "ReleaseOptionSentNumber",
- "FUNCTIONALITY",
- SetupL, UT_CMusAvaSettingsImp_ReleaseOptionSentNumber, Teardown)
-
EUNIT_END_TEST_TABLE
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaTerminal.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaTerminal.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -40,7 +40,6 @@
#include "musavasharedobject.h"
#include "mussettings.h"
-_LIT8( KCapabilityTestOriginatorSIPAddressUri8, "sip:user@domain.com");
// CONSTRUCTION
UT_CMusAvaTerminal* UT_CMusAvaTerminal::NewL()
@@ -118,13 +117,21 @@
}
CSipSseTestTls::OpenL();
+ iStorage = CSipSseTestTls::Storage();
+ iStorage->Set( MusSettingsKeys::KFastStartupMode,
+ MusSettingsKeys::EFastModeOff );
}
void UT_CMusAvaTerminal::Teardown( )
{
+ if ( iStorage )
+ {
+ iStorage->Clear();
+ CSipSseTestTls::Close();
+ iStorage = NULL;
+ }
- CSipSseTestTls::Close();
delete iTerminal;
delete iOptionHandler;
delete iConcreteSettings;
@@ -219,7 +226,7 @@
if ( !iProfile->iArray )
{
iProfile->iArray = new ( ELeave ) CDesC8ArrayFlat( 1 );
- iProfile->iArray->AppendL( KCapabilityTestOriginatorSIPAddressUri8 );
+ iProfile->iArray->AppendL( _L8("sip:user@domain.com") );
}
EUNIT_ASSERT( iExchange->Terminals().Count() == 0 );
@@ -258,8 +265,6 @@
EUNIT_ASSERT( terminal.iQueries == 1 );
EUNIT_ASSERT( terminal.iQuery == query );
-
- CMusAvaCapabilityQuery* tmpQuery = query;
query = CMusAvaCapabilityQuery::NewL( *iCapability,
*iSIPConnection,
*iProfile,
@@ -267,22 +272,12 @@
CleanupStack::PushL( query );
EUNIT_ASSERT( iExchange->Terminals().Count() == 1 );
EUNIT_ASSERT( terminal.iQueries == 2 );
-
-
+
//Second query cannot be executed
EUNIT_ASSERT_SPECIFIC_LEAVE( terminal.ExecuteQueryL( query ),
KErrAlreadyExists )
EUNIT_ASSERT( terminal.iQuery != query );
-
-
- //Uri identical case
- terminal.iQuery = NULL;
- query->iRemoteUri.Copy( KCapabilityTestOriginatorSIPAddressUri8 );
- EUNIT_ASSERT_SPECIFIC_LEAVE( terminal.ExecuteQueryL( query ),
- KErrNotSupported )
-
CleanupStack::PopAndDestroy( query );
- delete tmpQuery;
}
@@ -459,7 +454,7 @@
CleanupStack::PopAndDestroy( options );
- // with Asserted Identity, check also that SDP of received request is used
+ // with Asserted Identity
options =
CapabilityTestHelper::OptionsRequestL( KCapabilityTestAddress_A,
KCapabilityTestAddress_B,
@@ -467,41 +462,15 @@
KCapabilitySwisFeature,
KCapabilityTestAcceptHeader,
KCapabilityTestTerminalID_B,
- KCapabilityPAssertedIdentity,
- KCapabilityTestSDP);
+ KCapabilityPAssertedIdentity );
CleanupStack::PushL( options );
- iTerminal->QueryRequestedL( *options );
-
-
+ iTerminal->QueryRequestedL( *options );
EUNIT_ASSERT( iConcreteSettings->SipAddresses().MdcaCount() == 1 );
- EUNIT_ASSERT_EQUALS( iConcreteSettings->iVideoCodecs->MdcaCount(), 1 );
- EUNIT_ASSERT_EQUALS( iConcreteSettings->iVideoCodecs->MdcaPoint(0), _L("H263-2000/90000") );
CleanupStack::PopAndDestroy( options );
+
CSipSseTestTls* server = CSipSseTestTls::Storage();
CSipSseTestTls::Storage()->Clear();
- iTerminal->iRequestedQuery = NULL;
- EUNIT_ASSERT( iTerminal->RequestedQuery() == NULL );
-
- // with Asserted Identity, check also that SDP of received request is used
- options =
- CapabilityTestHelper::OptionsRequestL( KCapabilityTestAddress_A,
- KCapabilityTestAddress_B,
- KCapabilitySwisFeature,
- KCapabilitySwisFeature,
- KCapabilityTestAcceptHeader,
- KCapabilityTestTerminalID_B,
- KCapabilityPAssertedIdentity,
- KCapabilityTestSDP264And263);
- CleanupStack::PushL( options );
- iTerminal->QueryRequestedL( *options );
- EUNIT_ASSERT( iConcreteSettings->SipAddresses().MdcaCount() == 1 );
- EUNIT_ASSERT_EQUALS( iConcreteSettings->iVideoCodecs->MdcaCount(), 2 );
- EUNIT_ASSERT_EQUALS( iConcreteSettings->iVideoCodecs->MdcaPoint(0), _L("H264/90000") );
- EUNIT_ASSERT_EQUALS( iConcreteSettings->iVideoCodecs->MdcaPoint(1), _L("H263-2000/90000") );
- CleanupStack::PopAndDestroy( options );
-
- CSipSseTestTls::Storage()->Clear();
iTerminal->iRequestedQuery = NULL;
EUNIT_ASSERT( iTerminal->RequestedQuery() == NULL );
@@ -512,7 +481,7 @@
KCapabilityTestDataFeature,
KCapabilitySwisFeature,
KCapabilityTestAcceptHeader,
- KCapabilityTestTerminalID_B);
+ KCapabilityTestTerminalID_B );
CleanupStack::PushL( options );
iTerminal->QueryRequestedL( *options );
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_availabilityDllMain.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_availabilityDllMain.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -46,6 +46,7 @@
#include "UT_CMusAvaSipProfileRegistryObserver.h"
#include "UT_CMusAvaSipheaderUtil.h"
#include "UT_CMusAvaClientResolverUtil.h"
+#include "UT_CMusAvaCallEventMonitor.h"
// EXTERNAL INCLUDES
@@ -138,18 +139,13 @@
rootSuite->AddL( UT_CMusAvaClientResolverUtil::NewLC() );
CleanupStack::Pop();
-
+
+ rootSuite->AddL( UT_CMusAvaCallEventMonitor::NewLC() );
+ CleanupStack::Pop();
+
CleanupStack::Pop(); // rootSuite
return rootSuite;
}
-
-
// END OF FILE
-
-
-
-
-
-
--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/musavacapabilitytesthelper.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/musavacapabilitytesthelper.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -26,7 +26,7 @@
const TDesC8& aAcceptContact,
const TDesC8& aContact,
const TDesC8& aAccept,
- const TDesC8& aUserAgent)
+ const TDesC8& aUserAgent )
{
CSIPServerTransaction* srvtransaction =
@@ -113,7 +113,8 @@
CleanupStack::Pop( fromheader );
requestelements->SetToHeaderL(toheader);
CleanupStack::Pop( toheader );
-
+
+
requestelements->SetMethodL( SIPStrings::StringF( SipStrConsts::EOptions ) );
srvtransaction->SetRequestElements( requestelements );
@@ -132,8 +133,7 @@
const TDesC8& aContact,
const TDesC8& aAccept,
const TDesC8& aUserAgent,
- const TDesC8& aAssertId,
- const TDesC8& aSdp)
+ const TDesC8& aAssertId )
{
CSIPServerTransaction* srvtransaction =
@@ -233,19 +233,6 @@
requestelements->SetMethodL( SIPStrings::StringF( SipStrConsts::EOptions ) );
- CSIPMessageElements& message = requestelements->MessageElements();
- if ( aSdp.Length() > 0 )
- {
- CSIPContentTypeHeader* contenttype =
- CSIPContentTypeHeader::NewLC( KMUSAVASIPMediaTypeApplication,
- KMUSAVASIPMediaSubTypeSDP );
- HBufC8* content = aSdp.AllocLC();
-
- message.SetContentL( content, contenttype );
- CleanupStack::Pop( content );
- CleanupStack::Pop( contenttype );
- }
-
srvtransaction->SetRequestElements( requestelements );
CleanupStack::Pop( requestelements );
CleanupStack::Pop( srvtransaction );
--- a/mmsharing/mmshengine/bwins/musengineu.def Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-EXPORTS
- ?SetAudioRoutingObserver@CMusEngSession@@QAEXPAVMMusEngAudioRoutingObserver@@@Z @ 1 NONAME ; void CMusEngSession::SetAudioRoutingObserver(class MMusEngAudioRoutingObserver *)
- ?ParseUriL@TMusEngUriParser@@QAEXXZ @ 2 NONAME ; void TMusEngUriParser::ParseUriL(void)
- ?EnableLoudspeakerL@CMusEngSession@@QAEXHH@Z @ 3 NONAME ; void CMusEngSession::EnableLoudspeakerL(int, int)
- ?CancelInviteL@CMusEngMceOutSession@@QAEXXZ @ 4 NONAME ; void CMusEngMceOutSession::CancelInviteL(void)
- ?SetClipL@CMusEngClipSession@@QAEXABVTDesC16@@@Z @ 5 NONAME ; void CMusEngClipSession::SetClipL(class TDesC16 const &)
- ?VolumeL@CMusEngSession@@QBEHXZ @ 6 NONAME ; int CMusEngSession::VolumeL(void) const
- ?IsMicMutedL@CMusEngSession@@QAEHXZ @ 7 NONAME ; int CMusEngSession::IsMicMutedL(void)
- ?FastRewindL@CMusEngClipSession@@QAEXH@Z @ 8 NONAME ; void CMusEngClipSession::FastRewindL(int)
- ?ZoomDefaultL@CMusEngLiveSession@@QAEXXZ @ 9 NONAME ; void CMusEngLiveSession::ZoomDefaultL(void)
- ?GetUri16L@TMusEngUriParser@@QAEPAVHBufC16@@H@Z @ 10 NONAME ; class HBufC16 * TMusEngUriParser::GetUri16L(int)
- ?VolumeUpL@CMusEngSession@@UAEXXZ @ 11 NONAME ; void CMusEngSession::VolumeUpL(void)
- ?SetVolumeChangeObserver@CMusEngSession@@QAEXPAVMMusEngVolumeChangeObserver@@@Z @ 12 NONAME ; void CMusEngSession::SetVolumeChangeObserver(class MMusEngVolumeChangeObserver *)
- ?UriType@TMusEngUriParser@@QAE?AW4TMusEngUriType@1@XZ @ 13 NONAME ; enum TMusEngUriParser::TMusEngUriType TMusEngUriParser::UriType(void)
- ?IsMutedL@CMusEngMceSession@@QAEHXZ @ 14 NONAME ; int CMusEngMceSession::IsMutedL(void)
- ?DurationL@CMusEngClipSession@@QAE?AVTTimeIntervalSeconds@@XZ @ 15 NONAME ; class TTimeIntervalSeconds CMusEngClipSession::DurationL(void)
- ??0TMusEngUriParser@@QAE@ABVTDesC16@@@Z @ 16 NONAME ; TMusEngUriParser::TMusEngUriParser(class TDesC16 const &)
- ?AcceptInvitationL@CMusEngReceiveSession@@QAEXABH@Z @ 17 NONAME ; void CMusEngReceiveSession::AcceptInvitationL(int const &)
- ?CurrentZoomL@CMusEngLiveSession@@QBEHXZ @ 18 NONAME ; int CMusEngLiveSession::CurrentZoomL(void) const
- ?MinBrightnessL@CMusEngLiveSession@@QBEHXZ @ 19 NONAME ; int CMusEngLiveSession::MinBrightnessL(void) const
- ?GetUri8L@TMusEngUriParser@@QAEPAVHBufC8@@XZ @ 20 NONAME ; class HBufC8 * TMusEngUriParser::GetUri8L(void)
- ?NewL@CMusEngLiveSession@@SAPAV1@ABVTRect@@AAVMMusEngSessionObserver@@AAVMMusEngOutSessionObserver@@AAVMMusEngLiveSessionObserver@@I@Z @ 21 NONAME ; class CMusEngLiveSession * CMusEngLiveSession::NewL(class TRect const &, class MMusEngSessionObserver &, class MMusEngOutSessionObserver &, class MMusEngLiveSessionObserver &, unsigned int)
- ?UnmuteL@CMusEngMceSession@@UAEXXZ @ 22 NONAME ; void CMusEngMceSession::UnmuteL(void)
- ?MaxBrightnessL@CMusEngLiveSession@@QBEHXZ @ 23 NONAME ; int CMusEngLiveSession::MaxBrightnessL(void) const
- ?MinZoomL@CMusEngLiveSession@@QBEHXZ @ 24 NONAME ; int CMusEngLiveSession::MinZoomL(void) const
- ?VolumeDownL@CMusEngSession@@UAEXXZ @ 25 NONAME ; void CMusEngSession::VolumeDownL(void)
- ?OrientationL@CMusEngMceSession@@QAE?AW4TDisplayOrientation@1@XZ @ 26 NONAME ; enum CMusEngMceSession::TDisplayOrientation CMusEngMceSession::OrientationL(void)
- ?SetSupportedVideoCodecListL@CMusEngMceOutSession@@QAEXABVTDesC16@@@Z @ 27 NONAME ; void CMusEngMceOutSession::SetSupportedVideoCodecListL(class TDesC16 const &)
- ?MuteL@CMusEngMceSession@@UAEXXZ @ 28 NONAME ; void CMusEngMceSession::MuteL(void)
- ?IsRecording@CMusEngLiveSession@@QAEHXZ @ 29 NONAME ; int CMusEngLiveSession::IsRecording(void)
- ?SetVolumeL@CMusEngSession@@UAEXH@Z @ 30 NONAME ; void CMusEngSession::SetVolumeL(int)
- ?DecreaseBrightnessL@CMusEngLiveSession@@QAEXXZ @ 31 NONAME ; void CMusEngLiveSession::DecreaseBrightnessL(void)
- ?CancelTranscodeL@CMusEngClipSession@@QAEXXZ @ 32 NONAME ; void CMusEngClipSession::CancelTranscodeL(void)
- ?IsAudioRoutingHeadset@CMusEngSession@@QBEHXZ @ 33 NONAME ; int CMusEngSession::IsAudioRoutingHeadset(void) const
- ?PauseL@CMusEngClipSession@@UAEXXZ @ 34 NONAME ; void CMusEngClipSession::PauseL(void)
- ?BrightnessDefaultL@CMusEngLiveSession@@QAEXXZ @ 35 NONAME ; void CMusEngLiveSession::BrightnessDefaultL(void)
- ?FastForwardL@CMusEngClipSession@@QAEXH@Z @ 36 NONAME ; void CMusEngClipSession::FastForwardL(int)
- ?SetZoomL@CMusEngLiveSession@@QAEXH@Z @ 37 NONAME ; void CMusEngLiveSession::SetZoomL(int)
- ?SetRectL@CMusEngSession@@QAEXABVTRect@@@Z @ 38 NONAME ; void CMusEngSession::SetRectL(class TRect const &)
- ?NewL@CMusEngClipSession@@SAPAV1@ABVTRect@@AAVMMusEngSessionObserver@@AAVMMusEngOutSessionObserver@@AAVMMusEngClipSessionObserver@@I@Z @ 39 NONAME ; class CMusEngClipSession * CMusEngClipSession::NewL(class TRect const &, class MMusEngSessionObserver &, class MMusEngOutSessionObserver &, class MMusEngClipSessionObserver &, unsigned int)
- ?BrightnessAutoL@CMusEngLiveSession@@QAEXXZ @ 40 NONAME ; void CMusEngLiveSession::BrightnessAutoL(void)
- ?IncreaseBrightnessL@CMusEngLiveSession@@QAEXXZ @ 41 NONAME ; void CMusEngLiveSession::IncreaseBrightnessL(void)
- ?InviteL@CMusEngMceOutSession@@QAEXABVTDesC16@@@Z @ 42 NONAME ; void CMusEngMceOutSession::InviteL(class TDesC16 const &)
- ?SetOrientationL@CMusEngMceSession@@QAEXW4TDisplayOrientation@1@@Z @ 43 NONAME ; void CMusEngMceSession::SetOrientationL(enum CMusEngMceSession::TDisplayOrientation)
- ?IsLoudSpeakerEnabled@CMusEngSession@@QBEHXZ @ 44 NONAME ; int CMusEngSession::IsLoudSpeakerEnabled(void) const
- ?ContainsAudioL@CMusEngMceSession@@QAEHXZ @ 45 NONAME ; int CMusEngMceSession::ContainsAudioL(void)
- ?NewL@CMusEngReceiveSession@@SAPAV1@ABVTRect@@AAVMMusEngSessionObserver@@AAVMMusEngReceiveSessionObserver@@@Z @ 46 NONAME ; class CMusEngReceiveSession * CMusEngReceiveSession::NewL(class TRect const &, class MMusEngSessionObserver &, class MMusEngReceiveSessionObserver &)
- ?VolumeUpL@CMusEngMceSession@@UAEXXZ @ 47 NONAME ; void CMusEngMceSession::VolumeUpL(void)
- ?IsPlayingL@CMusEngClipSession@@UAEHXZ @ 48 NONAME ; int CMusEngClipSession::IsPlayingL(void)
- ?PlayL@CMusEngClipSession@@UAEXXZ @ 49 NONAME ; void CMusEngClipSession::PlayL(void)
- ?ZoomInL@CMusEngLiveSession@@QAEXXZ @ 50 NONAME ; void CMusEngLiveSession::ZoomInL(void)
- ?PauseL@CMusEngLiveSession@@UAEXXZ @ 51 NONAME ; void CMusEngLiveSession::PauseL(void)
- ?GetSessionTime@CMusEngMceSession@@QBE?AVTTimeIntervalSeconds@@XZ @ 52 NONAME ; class TTimeIntervalSeconds CMusEngMceSession::GetSessionTime(void) const
- ?SetVolumeL@CMusEngMceSession@@UAEXH@Z @ 53 NONAME ; void CMusEngMceSession::SetVolumeL(int)
- ?Rect@CMusEngSession@@QBE?AVTRect@@XZ @ 54 NONAME ; class TRect CMusEngSession::Rect(void) const
- ?IsDisplayEnabledL@CMusEngMceSession@@QAEHXZ @ 55 NONAME ; int CMusEngMceSession::IsDisplayEnabledL(void)
- ?IsAudioRoutingLoudSpeaker@CMusEngSession@@QBEHXZ @ 56 NONAME ; int CMusEngSession::IsAudioRoutingLoudSpeaker(void) const
- ?SetBrightnessL@CMusEngLiveSession@@QBEXH@Z @ 57 NONAME ; void CMusEngLiveSession::SetBrightnessL(int) const
- ?TranscodeL@CMusEngClipSession@@QAEXABV?$TBuf@$0BAA@@@@Z @ 58 NONAME ; void CMusEngClipSession::TranscodeL(class TBuf<256> const &)
- ?MaxZoomL@CMusEngLiveSession@@QBEHXZ @ 59 NONAME ; int CMusEngLiveSession::MaxZoomL(void) const
- ?VolumeDownL@CMusEngMceSession@@UAEXXZ @ 60 NONAME ; void CMusEngMceSession::VolumeDownL(void)
- ?ZoomOutL@CMusEngLiveSession@@QAEXXZ @ 61 NONAME ; void CMusEngLiveSession::ZoomOutL(void)
- ?ConnectionActive@CMusEngMceSession@@QBEHXZ @ 62 NONAME ; int CMusEngMceSession::ConnectionActive(void) const
- ?PositionL@CMusEngClipSession@@QAE?AVTTimeIntervalSeconds@@XZ @ 63 NONAME ; class TTimeIntervalSeconds CMusEngClipSession::PositionL(void)
- ?AudioRoutingCanBeChanged@CMusEngSession@@QBEHXZ @ 64 NONAME ; int CMusEngSession::AudioRoutingCanBeChanged(void) const
- ?MuteMicL@CMusEngSession@@QAEXH@Z @ 65 NONAME ; void CMusEngSession::MuteMicL(int)
- ?NewL@CMusEngLiveSession@@SAPAV1@ABVTDesC16@@ABVTRect@@AAVMMusEngSessionObserver@@AAVMMusEngOutSessionObserver@@AAVMMusEngLiveSessionObserver@@I@Z @ 66 NONAME ; class CMusEngLiveSession * CMusEngLiveSession::NewL(class TDesC16 const &, class TRect const &, class MMusEngSessionObserver &, class MMusEngOutSessionObserver &, class MMusEngLiveSessionObserver &, unsigned int)
- ?EnableDisplayL@CMusEngMceSession@@UAEXH@Z @ 67 NONAME ; void CMusEngMceSession::EnableDisplayL(int)
- ?CurrentBrightnessL@CMusEngLiveSession@@QBEHXZ @ 68 NONAME ; int CMusEngLiveSession::CurrentBrightnessL(void) const
- ?RecordL@CMusEngLiveSession@@QAEXH@Z @ 69 NONAME ; void CMusEngLiveSession::RecordL(int)
- ?IsPlayingL@CMusEngLiveSession@@UAEHXZ @ 70 NONAME ; int CMusEngLiveSession::IsPlayingL(void)
- ?TerminateL@CMusEngMceSession@@QAEXXZ @ 71 NONAME ; void CMusEngMceSession::TerminateL(void)
- ?PlayL@CMusEngLiveSession@@UAEXXZ @ 72 NONAME ; void CMusEngLiveSession::PlayL(void)
- ?SetPositionL@CMusEngClipSession@@QAEXABVTTimeIntervalSeconds@@@Z @ 73 NONAME ; void CMusEngClipSession::SetPositionL(class TTimeIntervalSeconds const &)
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/data/20021341.rss Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "registryinfov2.rh"
+
+RESOURCE REGISTRY_INFO theInfo
+ {
+ resource_format_version = RESOURCE_FORMAT_VERSION_2;
+ dll_uid = 0x20021341;
+ interfaces =
+ {
+ INTERFACE_INFO
+ {
+ interface_uid = 0x20021340;
+ implementations =
+ {
+ IMPLEMENTATION_INFO
+ {
+ implementation_uid = 0x20021341;
+ version_no = 1;
+ default_data = "MultimediaSharing";
+ }
+ };
+ }
+ };
+ }
--- a/mmsharing/mmshengine/eabi/musengineu.def Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-EXPORTS
- _ZN14CMusEngSession10SetVolumeLEi @ 1 NONAME
- _ZN14CMusEngSession11IsMicMutedLEv @ 2 NONAME
- _ZN14CMusEngSession11VolumeDownLEv @ 3 NONAME
- _ZN14CMusEngSession18EnableLoudspeakerLEii @ 4 NONAME
- _ZN14CMusEngSession23SetAudioRoutingObserverEP27MMusEngAudioRoutingObserver @ 5 NONAME
- _ZN14CMusEngSession23SetVolumeChangeObserverEP27MMusEngVolumeChangeObserver @ 6 NONAME
- _ZN14CMusEngSession8MuteMicLEi @ 7 NONAME
- _ZN14CMusEngSession8SetRectLERK5TRect @ 8 NONAME
- _ZN14CMusEngSession9VolumeUpLEv @ 9 NONAME
- _ZN16TMusEngUriParser7UriTypeEv @ 10 NONAME
- _ZN16TMusEngUriParser8GetUri8LEv @ 11 NONAME
- _ZN16TMusEngUriParser9GetUri16LEi @ 12 NONAME
- _ZN16TMusEngUriParser9ParseUriLEv @ 13 NONAME
- _ZN16TMusEngUriParserC1ERK7TDesC16 @ 14 NONAME
- _ZN16TMusEngUriParserC2ERK7TDesC16 @ 15 NONAME
- _ZN17CMusEngMceSession10SetVolumeLEi @ 16 NONAME
- _ZN17CMusEngMceSession10TerminateLEv @ 17 NONAME
- _ZN17CMusEngMceSession11VolumeDownLEv @ 18 NONAME
- _ZN17CMusEngMceSession12OrientationLEv @ 19 NONAME
- _ZN17CMusEngMceSession14ContainsAudioLEv @ 20 NONAME
- _ZN17CMusEngMceSession14EnableDisplayLEi @ 21 NONAME
- _ZN17CMusEngMceSession15SetOrientationLENS_19TDisplayOrientationE @ 22 NONAME
- _ZN17CMusEngMceSession17IsDisplayEnabledLEv @ 23 NONAME
- _ZN17CMusEngMceSession5MuteLEv @ 24 NONAME
- _ZN17CMusEngMceSession7UnmuteLEv @ 25 NONAME
- _ZN17CMusEngMceSession8IsMutedLEv @ 26 NONAME
- _ZN17CMusEngMceSession9VolumeUpLEv @ 27 NONAME
- _ZN18CMusEngClipSession10IsPlayingLEv @ 28 NONAME
- _ZN18CMusEngClipSession10TranscodeLERK4TBufILi256EE @ 29 NONAME
- _ZN18CMusEngClipSession11FastRewindLEi @ 30 NONAME
- _ZN18CMusEngClipSession12FastForwardLEi @ 31 NONAME
- _ZN18CMusEngClipSession12SetPositionLERK20TTimeIntervalSeconds @ 32 NONAME
- _ZN18CMusEngClipSession16CancelTranscodeLEv @ 33 NONAME
- _ZN18CMusEngClipSession4NewLERK5TRectR22MMusEngSessionObserverR25MMusEngOutSessionObserverR26MMusEngClipSessionObserverj @ 34 NONAME
- _ZN18CMusEngClipSession5PlayLEv @ 35 NONAME
- _ZN18CMusEngClipSession6PauseLEv @ 36 NONAME
- _ZN18CMusEngClipSession8SetClipLERK7TDesC16 @ 37 NONAME
- _ZN18CMusEngClipSession9DurationLEv @ 38 NONAME
- _ZN18CMusEngClipSession9PositionLEv @ 39 NONAME
- _ZN18CMusEngLiveSession10IsPlayingLEv @ 40 NONAME
- _ZN18CMusEngLiveSession11IsRecordingEv @ 41 NONAME
- _ZN18CMusEngLiveSession12ZoomDefaultLEv @ 42 NONAME
- _ZN18CMusEngLiveSession15BrightnessAutoLEv @ 43 NONAME
- _ZN18CMusEngLiveSession18BrightnessDefaultLEv @ 44 NONAME
- _ZN18CMusEngLiveSession19DecreaseBrightnessLEv @ 45 NONAME
- _ZN18CMusEngLiveSession19IncreaseBrightnessLEv @ 46 NONAME
- _ZN18CMusEngLiveSession4NewLERK5TRectR22MMusEngSessionObserverR25MMusEngOutSessionObserverR26MMusEngLiveSessionObserverj @ 47 NONAME
- _ZN18CMusEngLiveSession4NewLERK7TDesC16RK5TRectR22MMusEngSessionObserverR25MMusEngOutSessionObserverR26MMusEngLiveSessionObserverj @ 48 NONAME
- _ZN18CMusEngLiveSession5PlayLEv @ 49 NONAME
- _ZN18CMusEngLiveSession6PauseLEv @ 50 NONAME
- _ZN18CMusEngLiveSession7RecordLEi @ 51 NONAME
- _ZN18CMusEngLiveSession7ZoomInLEv @ 52 NONAME
- _ZN18CMusEngLiveSession8SetZoomLEi @ 53 NONAME
- _ZN18CMusEngLiveSession8ZoomOutLEv @ 54 NONAME
- _ZN20CMusEngMceOutSession13CancelInviteLEv @ 55 NONAME
- _ZN20CMusEngMceOutSession27SetSupportedVideoCodecListLERK7TDesC16 @ 56 NONAME
- _ZN20CMusEngMceOutSession7InviteLERK7TDesC16 @ 57 NONAME
- _ZN21CMusEngReceiveSession17AcceptInvitationLERKi @ 58 NONAME
- _ZN21CMusEngReceiveSession4NewLERK5TRectR22MMusEngSessionObserverR29MMusEngReceiveSessionObserver @ 59 NONAME
- _ZNK14CMusEngSession20IsLoudSpeakerEnabledEv @ 60 NONAME
- _ZNK14CMusEngSession21IsAudioRoutingHeadsetEv @ 61 NONAME
- _ZNK14CMusEngSession24AudioRoutingCanBeChangedEv @ 62 NONAME
- _ZNK14CMusEngSession4RectEv @ 63 NONAME
- _ZNK14CMusEngSession7VolumeLEv @ 64 NONAME
- _ZNK17CMusEngMceSession14GetSessionTimeEv @ 65 NONAME
- _ZNK17CMusEngMceSession16ConnectionActiveEv @ 66 NONAME
- _ZNK18CMusEngLiveSession12CurrentZoomLEv @ 67 NONAME
- _ZNK18CMusEngLiveSession14MaxBrightnessLEv @ 68 NONAME
- _ZNK18CMusEngLiveSession14MinBrightnessLEv @ 69 NONAME
- _ZNK18CMusEngLiveSession14SetBrightnessLEi @ 70 NONAME
- _ZNK18CMusEngLiveSession18CurrentBrightnessLEv @ 71 NONAME
- _ZNK18CMusEngLiveSession8MaxZoomLEv @ 72 NONAME
- _ZNK18CMusEngLiveSession8MinZoomLEv @ 73 NONAME
- _ZTI14CMusEngSession @ 74 NONAME
- _ZTI17CMusEngMceSession @ 75 NONAME
- _ZTI18CMusEngClipSession @ 76 NONAME
- _ZTI18CMusEngLiveSession @ 77 NONAME
- _ZTI20CMusEngMceOutSession @ 78 NONAME
- _ZTI21CMusEngReceiveSession @ 79 NONAME
- _ZTI21CMusEngTelephoneUtils @ 80 NONAME
- _ZTI21CMusSipProfileHandler @ 81 NONAME
- _ZTI27CMusEngSessionDurationTimer @ 82 NONAME
- _ZTV14CMusEngSession @ 83 NONAME
- _ZTV17CMusEngMceSession @ 84 NONAME
- _ZTV18CMusEngClipSession @ 85 NONAME
- _ZTV18CMusEngLiveSession @ 86 NONAME
- _ZTV20CMusEngMceOutSession @ 87 NONAME
- _ZTV21CMusEngReceiveSession @ 88 NONAME
- _ZTV21CMusEngTelephoneUtils @ 89 NONAME
- _ZTV21CMusSipProfileHandler @ 90 NONAME
- _ZTV27CMusEngSessionDurationTimer @ 91 NONAME
- _ZNK14CMusEngSession25IsAudioRoutingLoudSpeakerEv @ 92 NONAME
-
--- a/mmsharing/mmshengine/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -18,4 +18,6 @@
#include <platform_paths.hrh>
PRJ_MMPFILES
-musengine.mmp
+musengineplugin.mmp
+
+
--- a/mmsharing/mmshengine/group/musengine.mmp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
-* Copyright (c) 2006 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:
-*
-*/
-
-// using relative paths for sourcepath and user includes
-// exports are unfrozen
-
-#include <platform_paths.hrh>
-
-#include "../../../inc/musuid.hrh"
-
-// Capability assignment.
-CAPABILITY CAP_GENERAL_DLL
-
-// Vendor ID assignment.
-VENDORID VID_DEFAULT
-
-
-TARGET musengine.dll
-TARGETTYPE dll
-UID 0x1000008d KMusEngineUid // 0x10282392
-
-//DOCUMENT Generic_Symbian_DLL_ReadMe.txt
-
-SOURCEPATH ../src
-SOURCE musengsession.cpp
-SOURCE musengmcesession.cpp
-SOURCE musengmceoutsession.cpp
-SOURCE musenglivesession.cpp
-SOURCE musengreceivesession.cpp
-SOURCE musengtelephoneutils.cpp
-SOURCE musengsessiondurationtimer.cpp
-SOURCE musengclipsession.cpp
-SOURCE musenguriparser.cpp
-SOURCE musengmceutils.cpp
-SOURCE musengorientationhandler.cpp
-
-// SIP API
-SOURCE mussipprofilehandler.cpp
-
-
-USERINCLUDE ../inc
-USERINCLUDE ../../mmshshared/inc
-USERINCLUDE ../../inc
-USERINCLUDE ../../../inc
-
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY euser.lib
-LIBRARY bafl.lib
-LIBRARY inetprotutil.lib
-LIBRARY phoneclient.lib
-LIBRARY centralrepository.lib
-
-LIBRARY sipprofilecli.lib
-LIBRARY sipclient.lib
-LIBRARY sipcodec.lib
-LIBRARY mceclient.lib
-LIBRARY drmcommon.lib
-LIBRARY charconv.lib
-LIBRARY telephonyaudiorouting.lib
-LIBRARY efsrv.lib
-LIBRARY cenrepnotifhandler.lib
-
-DEBUGLIBRARY flogger.lib
-
-PAGED
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/group/musengineplugin.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET musengineplugin.dll
+TARGETTYPE PLUGIN
+UID 0x10009D8D 0x20021341
+VENDORID VID_DEFAULT
+CAPABILITY CAP_ECOM_PLUGIN
+
+SOURCEPATH ../data
+START RESOURCE 20021341.rss
+TARGET musengineplugin.rsc
+END
+
+SOURCEPATH ../src
+SOURCE musenginepluginentry.cpp
+SOURCE musengsessionmanager.cpp
+SOURCE musengmcesession.cpp
+SOURCE musengmceoutsession.cpp
+SOURCE musenglivesession.cpp
+SOURCE musengreceivesession.cpp
+SOURCE musengtwowaysession.cpp
+SOURCE musengtwowayrecvsession.cpp
+SOURCE musengtelephoneutils.cpp
+SOURCE musengsessiondurationtimer.cpp
+SOURCE musengclipsession.cpp
+SOURCE musenguriparser.cpp
+SOURCE musengmceutils.cpp
+SOURCE mussipprofilehandler.cpp
+SOURCE musengcamerahandler.cpp
+SOURCE musengvideoplayerbase.cpp
+SOURCE musenglocalvideoplayer.cpp
+SOURCE musenglivevideoplayer.cpp
+SOURCE musengremotevideoplayer.cpp
+SOURCE musengclipvideoplayer.cpp
+
+SOURCEPATH ../../mmshshared/src
+SOURCE muspropertywatch.cpp
+
+USERINCLUDE ../inc
+USERINCLUDE ../../mmshshared/inc
+USERINCLUDE ../../inc
+USERINCLUDE ../../../inc
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/ecom
+
+LIBRARY euser.lib
+LIBRARY bafl.lib
+LIBRARY inetprotutil.lib
+LIBRARY phoneclient.lib
+LIBRARY centralrepository.lib
+LIBRARY sipprofilecli.lib
+LIBRARY sipclient.lib
+LIBRARY sipcodec.lib
+LIBRARY mceclient.lib
+LIBRARY drmcommon.lib
+LIBRARY charconv.lib
+LIBRARY telephonyaudiorouting.lib
+LIBRARY cntmodel.lib ecom.lib
+DEBUGLIBRARY flogger.lib
--- a/mmsharing/mmshengine/inc/musengaudioroutingobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengaudioroutingobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -19,13 +19,13 @@
#ifndef MUSENGAUDIOROUTINGOBSERVER_H
#define MUSENGAUDIOROUTINGOBSERVER_H
+// INCLUDES
+#include <e32std.h>
// CLASS DECLARATION
/**
-* An interface to be implemented by users of Multimedia Sharing Engine if
-* they wish to be notified about changes in audio routing.
-*
+* An interface to get notifcations when the audio routing changes
*/
class MMusEngAudioRoutingObserver
{
@@ -33,21 +33,10 @@
public:
/**
- * Indicates that some other application has changed audio routing.
- * @param aShowNote ETrue if notification of current change should be
- * shown.
- *
+ * The audio routing has changed.
*/
- virtual void AudioRoutingChanged( TBool aShowNote ) = 0;
-
- /**
- * Observer is required to give information whether audio route change
- * is allowed currently.
- * @param ETrue if change is allowed, otherwise EFalse
- *
- */
- virtual TBool AudioRouteChangeAllowed() const = 0;
+ virtual void AudioRoutingChanged() = 0;
};
-#endif // INCLUDE GUARD
\ No newline at end of file
+#endif // MUSENGAUDIOROUTINGOBSERVER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musengcamerahandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,159 @@
+/*
+* 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 MUSHENGCAMERAHANDLER_H
+#define MUSHENGCAMERAHANDLER_H
+
+// USER
+#include "musunittesting.h"
+#include "mussettings.h"
+
+// SYSTEM
+#include <lccameracontrol.h>
+#include <lcbrightnesscontrol.h>
+#include <lczoomcontrol.h>
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class CMceCameraSource;
+class CMceSession;
+
+// CLASS
+
+class TMusEngCameraHandler :
+ public MLcCameraControl,
+ public MLcBrightnessControl,
+ public MLcZoomControl
+ {
+ MUS_UNITTEST( UT_CMusEngOutSession )
+ MUS_UNITTEST( UT_CMusEngLiveSession )
+ MUS_UNITTEST( UT_CMusEngTwoWaySession )
+ MUS_UNITTEST( UT_CMusEngTwoWayRecvSession )
+ MUS_UNITTEST( UT_TMusEngCameraHandler )
+
+ public: // From MLcCameraControl
+
+ TInt LcCameraCountL();
+
+ TInt CurrentLcCameraIndex();
+
+ void ToggleLcCameraL();
+
+ public: // From MLcBrightnessControl
+
+ TInt MinLcBrightnessL();
+
+ TInt MaxLcBrightnessL();
+
+ TInt LcBrightnessL();
+
+ void SetLcBrightnessL( TInt aValue );
+
+ void IncreaseLcBrightnessL();
+
+ void DecreaseLcBrightnessL();
+
+ public: // From MLcZoomControl
+
+ TInt MinLcZoomL();
+
+ TInt MaxLcZoomL();
+
+ TInt LcZoomValueL();
+
+ void SetLcZoomValueL( TInt aValue );
+
+ void LcZoomInL();
+
+ void LcZoomOutL();
+
+ public:
+
+ /**
+ * Resumes previously paused session.
+ * Continues using viewfinder and enables streaming video.
+ *
+ */
+ void PlayL();
+
+ /**
+ * Pauses session.
+ * Holds display and disables streaming video to network.
+ *
+ */
+ void PauseL();
+
+ /**
+ * Tells whether session is paused or not
+ */
+ TBool IsPlayingL();
+
+ public:
+
+ TMusEngCameraHandler();
+
+ void SetSession( CMceSession* aSession );
+
+ void InitializeL( CMceCameraSource& aCamera );
+
+ void InitializeZoomStepSize();
+
+ void ReadCameraUsageKeyL();
+
+ TInt ZoomStepSize( TInt64& aTime );
+
+ private:
+
+ enum TCurrentCamera
+ {
+ ECameraNotAvailable = KErrNotFound,
+ EBackCamera = 0,
+ EFrontCamera = 1
+ };
+
+ private: // New functions
+
+ TInt CamerasAvailableL( TCurrentCamera& aCurrentCamera );
+
+ void ChangeCameraL( TCurrentCamera aCurrentCamera );
+
+ void ChangeActiveCameraL( TCurrentCamera aNewCamera );
+
+ private: // Data
+
+ CMceSession* iSession; // Not owned
+
+ TCameraInfo iCameraInfo;
+
+ TInt iDefaultBrightness;
+
+ TInt64 iZoomInTime;
+
+ TInt64 iZoomOutTime;
+
+ TInt iSmallZoomStep;
+
+ TInt iBigZoomStep;
+
+ TCurrentCamera iCurrentCamera;
+
+ MusSettingsKeys::TUseCamera iCameraUsage;
+ };
+
+#endif
+
--- a/mmsharing/mmshengine/inc/musengclipsession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengclipsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -23,116 +23,35 @@
#include "musengmceoutsession.h"
#include "musunittesting.h"
-
class MMusEngClipSessionObserver;
class CMusEngLiveSession;
class CMceFileSource;
class CMceAudioStream;
class CMceVideoStream;
class CMceAudioCodec;
+class CMusEngClipVideoPlayer;
+
class CMusEngClipSession : public CMusEngMceOutSession
{
MUS_UNITTEST( UT_CMusEngClipSession )
+ MUS_UNITTEST( UT_CMusEngMceSession )
- public:
+ public: // Constructors and destructor
/**
- *
+ * Constructor
*/
- IMPORT_C static CMusEngClipSession* NewL(
- const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver,
- MMusEngClipSessionObserver& aClipSessionObserver,
- TUint aSipProfileId = 0 );
+ static CMusEngClipSession* NewL();
/**
- *
+ * Destructor
*/
~CMusEngClipSession();
-
- public: // new API
-
- /**
- * Sets file to be shared during session.
- * @pre File cannot be DRM protected
- * @post InviteL can be called
- * @leave One of the system wide error codes
- * @param aFileName Name of the file to be shared
- */
- IMPORT_C void SetClipL( const TDesC& aFileName );
-
- /**
- * Starts or stops fast forwarding the clip. Clip is left paused after
- * stopping the fast forwarding.
- * @pre Session is ongoing
- * @param aUseFFWD ETrue to start FFWD, EFalse to stop it.
- */
- IMPORT_C void FastForwardL( TBool aUseFFWD );
-
- /**
- * Starts or stops fast rewinding the clip. Clip is left paused after
- * stopping the fast rewinding.
- * @pre Session is ongoing
- * @param aUseFRWD ETrue to start FRWD, EFalse to stop it.
- */
- IMPORT_C void FastRewindL( TBool aUseFRWD );
-
- /**
- * Returns current position as time interval.
- */
- IMPORT_C TTimeIntervalSeconds PositionL();
-
- /**
- * Returns duration of current clip as time interval
- */
- IMPORT_C TTimeIntervalSeconds DurationL();
-
- /**
- *
- */
- IMPORT_C void SetPositionL (const TTimeIntervalSeconds &aPosition);
-
- /**
- * Starts transcoding of file. After the transcoding is complete,
- * file to be shared is changed into the transcoded file.
- * @pre MMusEngClipSessionObserver::TranscodingNeeded is called
- * @param aFileName Name of the transcoding output file.
- */
- IMPORT_C void TranscodeL( const TFileName& aFileName );
-
- /**
- * Cancels transcoding of file.
- * @pre TranscodeL has been called succesfully and transcoding
- * is not completed
- */
- IMPORT_C void CancelTranscodeL();
-
-
- public: // implementation of virtual API from CMusEngMceOutSession
-
- /**
- * Resumes previously paused session.
- * Continues showing file on display, resumes clip's audio, continues
- * playing file and enables streaming to network.
- * @leave KErrNotReady if called during FFWD or FRWD
- */
- IMPORT_C void PlayL();
-
- /**
- * Pauses session.
- * Holds display, mutes clip's audio, pauses file and
- * disables all streaming to network.
- * @leave KErrNotReady if called during FFWD or FRWD
- */
- IMPORT_C void PauseL();
-
- /**
- * Tells whether session is paused or not
- */
- IMPORT_C TBool IsPlayingL();
+ public: // from MLcSession
+
+ MLcVideoPlayer* LocalVideoPlayer();
protected: // implementation of virtual helper from CMusEngMceOutSession
@@ -173,86 +92,26 @@
private:
- /**
- *
- */
- CMusEngClipSession( MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver,
- MMusEngClipSessionObserver& aClipSessionObserver,
- const TRect& aRect );
+ CMusEngClipSession();
- /**
- * @leave KErrPermissionDenied if file is DRM protected
- */
- void ConstructL( TUint aSipProfileId );
+ void ConstructL();
private: // HELPERS
-
- /**
- *
- */
- TBool IsProtectedFileL( const TDesC& aClipFile );
void AddAmrCodecL( CMceAudioStream& aAudioStream );
- void AddVideoCodecL( CMceVideoStream& aVideoStream, TBool aIgnoreNegotiated = EFalse );
-
- TBool HasClipEnded();
+ void AddVideoCodecL( CMceVideoStream& aVideoStream );
- TBool IsRewindFromEnd();
-
- /**
- * Returns current position as microseconds.
- */
- TTimeIntervalMicroSeconds PositionMicroSecondsL();
-
- /**
- * Constructs audio stream structure during session completion and adds
- * it to session.
- * @param aLocalBundle All local streams are supposed to be added to
- * this bundle
- * @pre iSession != NULL
- */
void ConstructAudioStructureL( CMceStreamBundle& aLocalBundle );
- void DetermineBufferingPeriod( CMceMediaStream& aStream );
-
- TBool IsH264Supported() const;
-
- void HandleTranscodingFailureL( TInt aError );
-
- TInt DoCompleteTranscoding();
-
- void DeleteTranscodingDestinationFileL();
+ void DetermineBufferingPeriod( CMceMediaStream& aStream );
private: // Data
-
- /**
- * Reference to live session observer interface.
- */
- MMusEngClipSessionObserver& iClipSessionObserver;
- TFileName iFileName;
-
- TBool iTranscodingOngoing;
-
- TTime iFFWDStartTime;
- TTime iFRWDStartTime;
-
+ CMusEngClipVideoPlayer* iClipVideoPlayer;
TTime iBufferingStartedTime;
- TTimeIntervalMicroSeconds iBufferingPeriod;
-
- TTimeIntervalMicroSeconds iDelayFileEndingPos;
- TTimeIntervalMicroSeconds iPreviousPos;
- TBool iClipEnded;
-
- TFileName iTranscodingDestFileName;
- TBool iRewindedToBeginning;
- TBool iTranscodingRequiredDueMissingOptions;
- TBool iPause;
-
};
-#endif
+#endif // MUSHENGCLIPSESSION_H
--- a/mmsharing/mmshengine/inc/musengclipsessionobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
-* 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 MUSENGCLIPSESSIONOBSERVER_H
-#define MUSENGCLIPSESSIONOBSERVER_H
-
-// INCLUDES
-#include <e32def.h>
-
-// CLASS DECLARATION
-
-/**
-* An interface to be implemented by users of Multimedia Sharing Engine
-* if they wish to receive clip sharing specific events.
-*
-* This observer is set using CMusEngClipSession::SetSessionObserver function.
-*
-*/
-class MMusEngClipSessionObserver
- {
- public:
-
- /**
- * Indicates that shared clip has ended.
- */
- virtual void EndOfClip() = 0;
-
- /**
- * Indicates that chosen clip must be transcoded before sharing.
- * @param aDueUnknownRemoteCapabilities, ETrue if transcoding is needed because
- * it is unknown whether remote end can support current format of clip.
- */
- virtual void TranscodingNeeded(TBool aDueUnknownRemoteCapabilities) = 0;
-
- /**
- * Indicates that transcoding has progressed.
- * @param aPercentage Percentage of completion
- */
- virtual void TranscodingProgressed( TInt aPercentage ) = 0;
-
- /**
- * Indicates that transcoding has successfully complited
- * but session establishment is not yet proceeding.
- */
- virtual void TranscodingCompletedInit() = 0;
-
- /**
- * Indicates that transcoding has successfully complited
- * and session establishment continues.
- */
- virtual void TranscodingCompletedFinalize() = 0;
-
- /**
- * Indicates that transcoding has failed.
- */
- virtual void TranscodingFailed() = 0;
-
- /**
- * Handle specific case that rewinding from end of file.
- */
- virtual void RewindFromEndL() = 0;
- };
-
-#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musengclipvideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2009 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 MUSHENGCLIPVIDEOPLAYER_H
+#define MUSHENGCLIPVIDEOPLAYER_H
+
+// INCLUDES
+#include "musenglocalvideoplayer.h"
+#include "musunittesting.h"
+#include <lcsourcefilecontrol.h>
+
+// CLASS DECLARATION
+class CMusEngClipVideoPlayer :
+ public CMusEngLocalVideoPlayer,
+ public MLcSourceFileControl
+ {
+ MUS_UNITTEST( UT_CMusEngClipVideoPlayer )
+
+ public: // Constructors and destructor
+
+ static CMusEngClipVideoPlayer* NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ ~CMusEngClipVideoPlayer();
+
+ public: // New functions
+
+ TBool HasClipEnded();
+
+ void SetBufferingPeriod( const TTimeIntervalMicroSeconds& aPeriod );
+
+ public: // From MLcVideoPlayer
+
+ TBool LcIsPlayingL();
+
+ void LcPlayL();
+
+ void LcPauseL();
+
+ MLcSourceFileControl* LcSourceFileControl();
+
+ public: // From MLcSourceFileControl
+
+ void SetLcFileNameL( const TFileName& aFileName );
+
+ TFileName& LcFileName();
+
+ void LcFastForwardL( TBool aUseFFWD );
+
+ void LcFastRewindL( TBool aUseFRWD );
+
+ TTimeIntervalSeconds LcFileDurationL();
+
+ TTimeIntervalSeconds LcFilePositionL();
+
+ void SetLcFilePositionL( const TTimeIntervalSeconds& aPosition );
+
+ private: // Constructors
+
+ CMusEngClipVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ private: // Helper functions
+
+ TBool IsProtectedFileL( const TDesC& aClipFile );
+
+ TTimeIntervalMicroSeconds PositionMicroSecondsL(
+ TBool aActualPosition = EFalse );
+
+ TTimeIntervalMicroSeconds GetVideoSinkRelativeFilePos(
+ const TTimeIntervalMicroSeconds& aActualPosition,
+ const TTimeIntervalMicroSeconds& aDuration );
+
+ private: // Data
+
+ TFileName iFileName;
+ TTime iFFWDStartTime;
+ TTime iFRWDStartTime;
+ TTimeIntervalMicroSeconds iBufferingPeriod;
+ TTimeIntervalMicroSeconds iDelayFileEndingPos;
+ TTimeIntervalMicroSeconds iPreviousPos;
+ TBool iRewindedToBeginning;
+ };
+
+#endif // MUSHENGCLIPVIDEOPLAYER_H
+
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musengdisplayhandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* 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 MUSHENGDISPLAYHANDLER_H
+#define MUSHENGDISPLAYHANDLER_H
+
+
+#include <e32std.h>
+
+// CLASS DECLARATION
+
+/**
+* An Interface for display services
+*
+* @lib museng.lib
+* @since S60 v3.2
+*/
+class MMusEngDisplayHandler
+ {
+
+ public:
+
+ /*
+ * Defines possible rotations
+ */
+ enum TDisplayOrientation
+ {
+ EPortrait, // Normal
+ ELandscape // 90 degree's clockwise rotation
+ };
+
+ /**
+ * Returns currently assigned drawing area
+ *
+ * @return TRect This session drawing area rectangle
+ */
+ virtual TRect Rect() const = 0;
+
+ /**
+ * Sets new drawing area
+ *
+ * @param TRect This session new drawing area rectangle
+ */
+ virtual void SetRectL( const TRect& aRect ) = 0;
+
+ /**
+ * Sets secondary rect (e.g. viewfinder in twoway session)
+ * @param TRect This session new secondary drawing area rectangle
+ */
+ virtual void SetSecondaryRectL( const TRect& aSecondaryRect ) = 0;
+
+ /**
+ * Gets secondary rect.
+ * @return TRect This session secondary drawing area rectangle
+ */
+ virtual TRect SecondaryRect() const = 0;
+
+ /**
+ * Enables or disables display. Call to this function is considered
+ * as a permission or denial to draw to the display.
+ */
+ virtual void EnableDisplayL( TBool aEnable ) = 0;
+
+ /**
+ * Check whether display is enabled
+ */
+ virtual TBool IsDisplayEnabled() = 0;
+
+ /**
+ * Returns current display orientation.
+ *
+ * @pre Session is ongoing
+ * @return Current display orientation
+ * @leave KErrNotReady if precondition is not fullfilled
+ */
+ virtual TDisplayOrientation OrientationL() = 0;
+
+ /**
+ * Sets display orientation.
+ *
+ * @pre Session is ongoing
+ * @return Sets display orientation
+ * @leave KErrNotReady if precondition is not fullfilled
+ */
+ virtual void SetOrientationL( TDisplayOrientation aOrientation ) = 0;
+
+ /**
+ * Check if display is actively displaying content
+ * @return ETrue if is displaying content, otherwise EFalse
+ */
+ virtual TBool IsDisplayActive() = 0;
+ };
+
+#endif
--- a/mmsharing/mmshengine/inc/musenglivesession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musenglivesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -16,66 +16,37 @@
*/
-#ifndef MUSHENGLIVESESSION_H
-#define MUSHENGLIVESESSION_H
+#ifndef MUSENGLIVESESSION_H
+#define MUSENGLIVESESSION_H
// USER
#include "musengmceoutsession.h"
#include "musunittesting.h"
+#include "mussettings.h"
+#include "musengcamerahandler.h"
// SYSTEM
-#include <ecam.h>
+#include <lcvideoplayer.h>
// FORWARD DECLARATIONS
class MMusEngLiveSessionObserver;
-class CMusEngOrientationHandler;
+class CMusEngLiveVideoPlayer;
+
-class CMusEngLiveSession : public CMusEngMceOutSession
+class CMusEngLiveSession :
+ public CMusEngMceOutSession
{
+ MUS_UNITTEST( UT_CMusEngMceSession )
MUS_UNITTEST( UT_CMusEngOutSession )
MUS_UNITTEST( UT_CMusEngLiveSession )
- MUS_UNITTEST( UT_CMusEngOrientationHandler )
-
+
public:
-
- /**
- * Creates new MultimediaSharing Live session.
- *
- * @param aFileName Media filename
- * @param aRect UI drawing area. It is allowed handle from engine
- * @param aSessionObserver Interface for session specific callbacks
- * @param aOutSessionObserver Interface for outsession specific callbacks
- * @param aLiveSessionObserver interface for live session specific
- * callbacks
- * @param aSipProfileId SIP profile to be used, 0 is default profile
- * @return CMusEngLiveSession* New instanse of specified class
- */
- IMPORT_C static CMusEngLiveSession* NewL(
- const TDesC& aFileName,
- const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver,
- MMusEngLiveSessionObserver& aLiveSessionObserver,
- TUint aSipProfileId = 0);
/**
* Creates new MultimediaSharing Live session.
- *
- * @param aRect UI drawing area. It is allowed handle from engine
- * @param aSessionObserver Interface for session specific callbacks
- * @param aOutSessionObserver Interface for outsession specific callbacks
- * @param aLiveSessionObserver interface for live session specific
- * callbacks
- * @param aSipProfileId SIP profile to be used, 0 is default profile
* @return CMusEngLiveSession* New instanse of specified class
*/
- IMPORT_C static CMusEngLiveSession* NewL(
- const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver,
- MMusEngLiveSessionObserver& aLiveSessionObserver,
- TUint aSipProfileId = 0 );
-
+ static CMusEngLiveSession* NewL();
public:
@@ -84,169 +55,10 @@
*/
~CMusEngLiveSession();
-
-
- public: // NEW LIVE SESSION SPECIFIC API FUNCTIONS
-
- /**
- * Gets current zoom factor
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C TInt CurrentZoomL() const;
-
- /**
- * Sets new zoom factor
- *
- * @pre Session is established
- * @pre MinZoomL <= aNewZoomFactor <= MaxZoomL
- * @leave KErrNotReady if session is not established
- */
- IMPORT_C void SetZoomL( TInt aNewZoomFactor );
-
- /**
- * Gets minimum zoom factor
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C TInt MinZoomL() const;
-
- /**
- * Gets maximum zoom factor
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C TInt MaxZoomL() const;
+ public: // from MLcSession
+
+ MLcVideoPlayer* LocalVideoPlayer();
- /**
- * Increases zoom factor by one.
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C void ZoomInL();
-
- /**
- * Decreases zoom factor by one.
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C void ZoomOutL();
-
- /**
- * Sets zoom factor to default.
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C void ZoomDefaultL();
-
- /**
- * Sets current brightness
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C void SetBrightnessL( TInt aBrightness ) const;
-
-
- /**
- * Gets current brightness
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C TInt CurrentBrightnessL() const;
-
- /**
- * Gets maximum brightness
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C TInt MaxBrightnessL() const;
-
- /**
- * Gets minimum brightness
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C TInt MinBrightnessL() const;
-
- /**
- * Increases brightness by one.
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C void IncreaseBrightnessL();
-
- /**
- * Decreases brightness by one.
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C void DecreaseBrightnessL();
-
- /**
- * Sets brightness factor to default.
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C void BrightnessDefaultL();
-
- /**
- * Sets brightness to automatic.
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- */
- IMPORT_C void BrightnessAutoL();
-
- /**
- * Starts or pauses recording
- */
- IMPORT_C void RecordL( TBool aRecord );
-
- /**
- * Tells whether recording is paused or not
- */
- IMPORT_C TBool IsRecording();
-
-
- public: // implementation of virtual API from CMusEngMceOutSession
-
- /**
- * Resumes previously paused session.
- * Continues using viewfinder and enables streaming video.
- *
- */
- IMPORT_C void PlayL();
-
- /**
- * Pauses session.
- * Holds display and disables streaming video to network.
- *
- */
- IMPORT_C void PauseL();
-
- /**
- * Tells whether session is paused or not
- */
- IMPORT_C TBool IsPlayingL();
-
- void EnableDisplayL( TBool aEnable );
-
- void RefreshOrientationL();
-
-
protected: // inherited from CMusEngMceOutSession
/**
@@ -256,15 +68,7 @@
void CompleteSessionStructureL( CMceStreamBundle& aLocalBundle );
- private: // overrides ancestor class versions
-
- /**
- * The state of the session has changed
- * @param aSession, the session that has changed.
- */
- virtual void HandleSessionStateChanged( CMceSession& aSession,
- TInt aStatusCode,
- const TDesC8& aReasonPhrase );
+ protected: // overrides ancestor class versions
/**
* Sets Multimediasharing specific video codec settings like video
@@ -272,7 +76,8 @@
* in session. This function overrides function in ancestor classes.
* Function calls also overridden version.
*/
- virtual void AdjustVideoCodecL( CMceVideoCodec& aVideoCodec );
+ virtual void AdjustVideoCodecL( CMceVideoCodec& aVideoCodec,
+ TMceSourceType aSourceType );
/**
* Sets Multimediasharing specific audio codec settings. This functions
@@ -287,7 +92,7 @@
virtual void DoCodecSelectionL( CMceVideoStream& aVideoStream );
- private: // from MMceStreamObserver,
+ protected: // from MMceStreamObserver,
// overrides the function in CMusEngMceSession
/**
@@ -300,124 +105,24 @@
CMceMediaSink& aSink );
- private:
+ protected:
/**
* Constructor
*/
- CMusEngLiveSession( MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver,
- MMusEngLiveSessionObserver& aLiveSessionObserver,
- const TRect& aRect,
- const TDesC& aRecordedFile = KNullDesC );
+ CMusEngLiveSession();
/**
* Second-phase constructor
*/
- void ConstructL( TUint aSipProfileId );
-
-
- private: // Helpers
-
- /**
- * Reads from CenRep and sets encoding device for a codec.
- */
- void SetEncodingDeviceL( CMceVideoCodec& aVideoCodec );
+ void ConstructL();
- /**
- * Sets configuration key for a codec
- */
- void SetCodecConfigKeyL( CMceVideoCodec& aVideoCodec );
-
- /**
- * Reads proper configuration key for a codec. NULL if not available.
- * Ownership is transferred.
- */
- HBufC8* ReadCodecConfigKeyL( const CMceVideoCodec& aVideoCodec ) const;
-
- /**
- * Constructs and stores to cenrep a concatenation of all AVC config keys.
- */
- void StoreEncoderConfigInfoL() const;
-
- /**
- * Returns config key id for the provided codec. Ownership is transferred
- */
- const TPtrC8 ConfigKeyIdL( const CMceVideoCodec& aVideoCodec ) const;
-
-
- /**
- * Calculate the zoom step size based time escaped.
- *
- * @param aTime, start time. pass iZoomInTime or iZoomOutTime as parameter
- * @return TInt, return calculate result of the step size
- */
- TInt ZoomStepSize( TInt64& aTime );
-
- /**
- * Calculates iMinZoomStep and iMaxZoomStep zoom step sizes,
- * should be called before first ZoomIn()/ZoomOut() call
- */
- void InitializeZoomStepSize();
-
-
- private:
- /**
- * Reference to live session observer interface.
- */
- MMusEngLiveSessionObserver& iLiveSessionObserver;
-
- /**
- *
- */
- TCameraInfo iCameraInfo;
-
- /**
- *
- */
- TInt iDefaultZoomFactor;
-
- /**
- *
- */
- TInt iDefaultBrightness;
-
- /**
- * File name for recording. If KNullDesC no recording performed.
- */
- TFileName iRecordedFile;
+ protected:
- /**
- * If true, configuration key of current AVC codec must be written to
- * CenRep after session establishment.
- */
- TBool iStoreEncoderConfigInfo;
-
- /**
- * latest Zoomin time
- */
-
- TInt64 iZoomInTime;
-
- /**
- * latest Zoomout time
- */
- TInt64 iZoomOutTime;
-
- /**
- *
- */
- TInt iSmallZoomStep;
-
- /**
- *
- */
- TInt iBigZoomStep;
-
- CMusEngOrientationHandler* iOrientationHandler;
-
+ TMusEngCameraHandler iCameraHandler;
+ CMusEngLiveVideoPlayer* iLiveVideoPlayer;
};
-#endif
+#endif // MUSENGLIVESESSION_H
--- a/mmsharing/mmshengine/inc/musenglivesessionobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* 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 MUSHENGLIVESESSIONOBSERVER_H
-#define MUSHENGLIVESESSIONOBSERVER_H
-
-
-
-// CLASS DECLARATION
-
-/**
-* An interface to be implemented by clients of Multimedia Sharing Engine if
-* they wish to receive events about live sharing specific event.
-*/
-class MMusEngLiveSessionObserver
- {
-
- public:
-
- /**
- * Indicates that disk has run out of space during recording.
- */
- virtual void DiskFull() = 0;
-
- /**
- * Orientation refresh ended.
- */
- virtual void OrientationRefreshEnded() = 0;
-
- };
-
-#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musenglivevideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2009 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 MUSHENGLIVEVIDEOPLAYER_H
+#define MUSHENGLIVEVIDEOPLAYER_H
+
+// INCLUDES
+#include "musenglocalvideoplayer.h"
+#include <lcdestinationfilecontrol.h>
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class TMusEngCameraHandler;
+
+// CLASS DECLARATION
+class CMusEngLiveVideoPlayer :
+ public CMusEngLocalVideoPlayer,
+ public MLcDestinationFileControl
+ {
+ public: // Constructors and destructor
+
+ static CMusEngLiveVideoPlayer* NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ ~CMusEngLiveVideoPlayer();
+
+ public: // From MLcVideoPlayer
+
+ TBool LcIsPlayingL();
+
+ void LcPlayL( TLcVideoPlayerSource aSource=ECameraSource );
+
+ void LcPauseL();
+
+ MLcCameraControl* LcCameraControl();
+
+ MLcDestinationFileControl* LcDestinationFileControl();
+
+ MLcZoomControl* LcZoomControl();
+
+ MLcBrightnessControl* LcBrightnessControl();
+
+ public: // From MLcDestinationFileControl
+
+ void SetLcFileNameL( const TFileName& aFileName );
+
+ TFileName& LcFileName();
+
+ void LcRecordL( TBool aRecord );
+
+ TBool LcIsRecording();
+
+ private: // Constructors
+
+ CMusEngLiveVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ private: // Data
+
+ TFileName iFileName;
+ TMusEngCameraHandler& iCameraHandler;
+ };
+
+#endif // MUSHENGLIVEVIDEOPLAYER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musenglocalvideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2009 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 MUSHENGLOCALVIDEOPLAYER_H
+#define MUSHENGLOCALVIDEOPLAYER_H
+
+// INCLUDES
+#include "musengvideoplayerbase.h"
+
+// CLASS DECLARATION
+class CMusEngLocalVideoPlayer : public CMusEngVideoPlayerBase
+ {
+ public: // Constructors and destructor
+
+ ~CMusEngLocalVideoPlayer();
+
+ public: // from CMusEngVideoPlayerBase
+
+ TLcVideoPlayerState LcVideoPlayerState() const;
+
+ void SetLcWindowRectL( TRect aRect );
+
+ TRect LcWindowRect();
+
+ protected: // Constructors
+
+ CMusEngLocalVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+ };
+
+#endif // MUSHENGLOCALVIDEOPLAYER_H
--- a/mmsharing/mmshengine/inc/musengmceoutsession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengmceoutsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -23,9 +23,8 @@
#include "musengmcesession.h"
#include "musunittesting.h"
-
// FORWARD DECLARATIONS
-class MMusEngOutSessionObserver;
+class MLcUiProvider;
class CMceStreamBundle;
// CLASS DECLARATION
@@ -46,54 +45,14 @@
*/
~CMusEngMceOutSession();
-
- public: // NEW API FUNCTIONS
-
- /**
- * Sends invite to specified address. Session establishment is done in
- * pause mode meaning that no RTP will be sent to network as a
- * consequence of established session. PlayL() can be called any time
- * during session establishment or after that in order to allow
- * RTP sending.
- * @leave KErrAlreadyExists if session establishment is already
- * in progress
- */
- IMPORT_C void InviteL( const TDesC& aRecipient );
-
- /**
- * Cancels Invite.
- * @pre Invite is sent
- */
- IMPORT_C void CancelInviteL( );
+ public: // From MLcSession
+
+ const TDesC& RemoteDisplayName();
- /**
- * If codecs supported by recipient are known e.g. because of OPTIONS
- * query, they can be communicated to engine via this function
- * @param aVideoCodecs Comma separated list of supported codecs
- */
- IMPORT_C void SetSupportedVideoCodecListL( const TDesC& aVideoCodecs );
-
-
- public: // VIRTUAL API
-
- /**
- * Resumes previously paused session. Exact behavior depends on
- * exact session type.
- */
- virtual void PlayL() = 0;
-
- /**
- * Pauses session. Exact behavior depends on exact session type.
- */
- virtual void PauseL() = 0;
-
- /**
- * Tells whether session is paused or not
- * @pre Call of InviteL has been completed
- */
- virtual TBool IsPlayingL() = 0;
-
-
+ void EstablishLcSessionL();
+
+ void TerminateLcSessionL();
+
protected: // Must be implemented in derived class
/**
@@ -103,6 +62,7 @@
virtual void CompleteSessionStructureL(
CMceStreamBundle& aLocalBundle ) = 0;
+ virtual void AddDisplayL( CMceMediaStream& aStream );
protected: // May be overridden in derived classes
@@ -115,7 +75,15 @@
*/
virtual void EstablishSessionL();
+ TBool IsH264Supported() const;
+ /**
+ *
+ */
+ virtual void CreateMceSessionStructureL( TBool aForceSdpBandwidth =
+ EFalse );
+
+
protected: // helper function inherited from CMusEngMceSession
/**
@@ -129,7 +97,8 @@
* session. This function overrides function in base class and may
* be further overridden. Function calls also overridden version.
*/
- void AdjustVideoCodecL( CMceVideoCodec& aVideoCodec );
+ void AdjustVideoCodecL( CMceVideoCodec& aVideoCodec,
+ TMceSourceType aSourceType );
/**
* Sets Multimediasharing specific audio codec settings like audio and
@@ -145,60 +114,66 @@
/**
* Constructor
*/
- CMusEngMceOutSession( const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver );
+ CMusEngMceOutSession();
/**
* Second-phase constructor
*/
- void ConstructL( TUint aSipProfileId );
-
-
- private:
+ void ConstructL();
- /**
- *
- */
- void CreateMceSessionStructureL();
+
+ private: // from MMusSipProfileUser, overrides base class definition
+
+ virtual void ProfileRegistered();
+
- /**
- * Add privacy sip header if call privacy is switched on else otherwise.
- */
- void AddPrivacyHeaderL( CDesC8Array& aHeaders );
+ private:
+ void DoInviteL( const TDesC& aRecipient = KNullDesC );
+
+ HBufC* ResolveRecipientLC();
+
+ static TInt AsyncBrakeCompleted( TAny* aPtr );
- protected: // DATA
+ static TInt RegistrationTimerExpired( TAny* aPtr );
- /**
- * Callback reference to outsession observer interface.
- */
- MMusEngOutSessionObserver& iOutSessionObserver;
+ static TInt InvitationResponseTimerExpired( TAny* aPtr );
+
+ void InitRecipientNotFoundHandling();
+
+ void HandleRecipientNotFound();
- /**
- * ETrue if operator specific behavior is expected
- */
- TBool iPrivate;
+ TBool DoSyncRetryL();
+
+ void SplitL( const TDesC& aDes, const TDesC& aChar, CDesCArray* aArray );
- /**
- * ETrue if private number is turn on
- */
- TBool iPrivateNumber;
+ HBufC* ReadDescPropertyL( TUint aKey );
+
+ TBool IgnoreErrorNote();
+ HBufC* RemoteAddressL() const;
+
+ void InputRecipientL( TDes& aRecipientAddress );
protected: // DATA
- /**
- * Recipient of session to be constructed
- */
- HBufC8* iRecipient;
-
+ HBufC* iRemoteDisplayName;
+ HBufC8* iRecipient;
HBufC8* iVideoCodecList;
-
+ TInt iTriedInvitations;
+ HBufC* iRemoteSipAddressProposal;
+ CDeltaTimer* iDeltaTimer;
+ TCallBack iAsyncBrakeCallBack;
+ TDeltaTimerEntry iAsyncBrakeEntry;
+ TCallBack iRegistrationCallBack;
+ TCallBack iInvitationResponseCallBack;
+ TDeltaTimerEntry iRegistrationEntry;
+ TDeltaTimerEntry iInvitationResponseEntry;
+ TBool iRegistrationPending;
+ TBool iAddressQueried;
private:
MUS_UNITTEST ( UT_CMusEngOutSession )
-
};
#endif //MUSHENGMCESESSION_H
--- a/mmsharing/mmshengine/inc/musengmcesession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengmcesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -16,22 +16,27 @@
*/
-#ifndef MUSHENGMCESESSION_H
-#define MUSHENGMCESESSION_H
+#ifndef MUSENGMCESESSION_H
+#define MUSENGMCESESSION_H
// USER
-#include "musengsession.h"
#include "musengsessiondurationtimerobserver.h"
#include "musunittesting.h"
#include "mussipprofileuser.h"
+#include "musengdisplayhandler.h"
+#include "musengaudioroutingobserver.h"
// SYSTEM
+#include <lcsession.h>
+#include <lcaudiocontrol.h>
#include <mcesessionobserver.h>
#include <mceinsessionobserver.h>
#include <mcestreamobserver.h>
#include <mcertpobserver.h>
#include <mcetransactiondatacontainer.h>
+#include <mcemediasource.h>
+// FORWARD DECLARATIONS
class CMceManager;
class CMceSession;
class CMceVideoStream;
@@ -39,8 +44,10 @@
class CMceVideoCodec;
class CMceAudioCodec;
class CMusEngSessionDurationTimer;
-class MMusEngSessionObserver;
class CMusSipProfileHandler;
+class CMusEngTelephoneUtils;
+class MMusEngAudioRoutingObserver;
+class MLcSessionObserver;
// CONSTANTS
@@ -51,14 +58,20 @@
_LIT8( KMusEngSessionSdpLineXApplication, "a=X-application:com.nokia.rtvs\r\n" );
_LIT8( KMusEngSessionSdpLineApplication , "a=application:com.gsma.rts\r\n" );
_LIT8( KMusEngSessionSdpLineType, "a=type:videolive\r\n" );
-_LIT8( KMusEngSessionSdpLineBandwidthLine , "b=AS" );
+_LIT8( KMusEngSessionSdpLineBandwidthLine , "b=AS:" );
_LIT8( KMusEngSessionSdpLineBandwidthField , "b=AS:85\r\n" );
+_LIT8( KMusEngSessionSdpLineTiasLine , "b=TIAS:" );
_LIT8( KMusPPreferredIdentity, "P-Preferred-Identity" );
-_LIT8( KMusPrivacyHeader, "Privacy" );
-_LIT8( KMusAnonymousHeader, "\"Anonymous\" <sip:anonymous@anonymous.invalid>" );
+_LIT8( KMusEngNewLine , "\r\n" );
-const TInt KMusEngMaxVolume = 10;
-const TInt KMusEngMinVolume = 0;
+const TInt KMusTiasMultiplier = 1000;
+const TUint8 KMusEngRtpKeepAliveTimer = 5;
+const TUint8 KMusEngKeepAlivePayloadTypeVideoH263 = 96;
+const TUint8 KMusEngKeepAlivePayloadTypeAudio = 97;
+const TUint8 KMusEngKeepAlivePayloadTypeVideoAvc = 98;
+
+// Value for uninitialized rect
+const TInt KMusEngRectNotInit = 1000;
// CLASS DECLARATION
@@ -72,26 +85,18 @@
*
* @lib musengine.lib
*/
-class CMusEngMceSession : public CMusEngSession,
+class CMusEngMceSession : public CBase,
+ public MLcSession,
+ public MLcAudioControl,
public MMceSessionObserver,
public MMceInSessionObserver,
public MMceStreamObserver,
public MMceRtpObserver,
public MMusEngSessionDurationTimerObserver,
- public MMusSipProfileUser
+ public MMusSipProfileUser,
+ public MMusEngDisplayHandler,
+ public MMusEngAudioRoutingObserver
{
-
- public:
-
- /*
- * Defines possible rotations
- */
- enum TDisplayOrientation
- {
- EPortrait, // Normal
- ELandscape // 90 degree's clockwise rotation
- };
-
public:
/**
@@ -99,51 +104,35 @@
*/
~CMusEngMceSession();
-
- public: // API FUNCTIONS
-
- /**
- * Terminates session.
- *
- * @pre Session is established
- * @post Session is ready to be deleted
- * @leave KErrNotReady if precondition is not fullfilled
- */
- IMPORT_C void TerminateL();
-
- /**
- * Get session time return estabilished session time
- *
- * @return TTime returns time if connection established else < 0
- */
- IMPORT_C TTimeIntervalSeconds GetSessionTime() const;
+
+ public: // from MMusEngDisplayHandler
/**
- * Returns current connection state
+ * Returns currently assigned drawing area
*
- * @return TBool returns current connection state
+ * @return TRect This session drawing area rectangle
*/
- IMPORT_C TBool ConnectionActive() const;
-
- /**
- * Returns presence or absence of audio in session.
- *
- * @pre Session is ongoing
- * @return ETrue if session contains audio.
- * @leave KErrNotReady if precondition is not fullfilled
- */
- IMPORT_C TBool ContainsAudioL();
+ TRect Rect() const;
/**
- * Returns state of local playback meaning if playback is muted or not.
+ * Sets new drawing area
*
- * @pre Session is ongoing
- * @return ETrue if session does not contain audio or contained
- * audio is muted.
- * @leave KErrNotReady if precondition is not fullfilled
+ * @param TRect This session new drawing area rectangle
+ */
+ void SetRectL( const TRect& aRect );
+
+ /**
+ * Sets secondary rect (e.g. viewfinder in twoway session)
+ * @param TRect This session new secondary drawing area rectangle
*/
- IMPORT_C TBool IsMutedL();
-
+ void SetSecondaryRectL( const TRect& aSecondaryRect );
+
+ /**
+ * Gets secondary rect.
+ * @return TRect This session secondary drawing area rectangle
+ */
+ virtual TRect SecondaryRect() const;
+
/**
* Returns current display orientation.
*
@@ -151,7 +140,7 @@
* @return Current display orientation
* @leave KErrNotReady if precondition is not fullfilled
*/
- IMPORT_C TDisplayOrientation OrientationL();
+ TDisplayOrientation OrientationL();
/**
* Sets display orientation.
@@ -160,79 +149,106 @@
* @return Sets display orientation
* @leave KErrNotReady if precondition is not fullfilled
*/
- IMPORT_C void SetOrientationL( TDisplayOrientation aOrientation );
-
- /**
- * Returns state of the screen device.
- *
- * @pre Session is ongoing
- */
- IMPORT_C TBool IsDisplayEnabledL();
-
- public: // VIRTUAL API
-
- // No virtual api
-
-
- public: // from CMusEngSession
-
- /**
- * Increases volume level by one
- *
- * @pre Session is ongoing
- */
- IMPORT_C void VolumeUpL();
-
- /**
- * Decreases volume level by one
- *
- * @pre Session is ongoing
- */
- IMPORT_C void VolumeDownL();
-
- /**
- * Set volume value
- * @pre Session is ongoing
- * @param aVal the value of volume
- */
- IMPORT_C void SetVolumeL( TInt aVal );
+ void SetOrientationL( TDisplayOrientation aOrientation );
/**
* Permission to draw on screen device.
*
* @pre Session is ongoing
*/
- IMPORT_C void EnableDisplayL( TBool aEnable );
-
+ void EnableDisplayL( TBool aEnable );
+
/**
- * Implements virtual from CMusEngSession
+ * Implements virtual from MMusEngDisplayHandler
+ *
+ * @pre Session is ongoing
+ */
+ TBool IsDisplayEnabled();
+
+ /**
+ * Implements virtual from MMusEngDisplayHandler
*
* @pre Session is ongoing
*/
- IMPORT_C void MuteL();
+ TBool IsDisplayActive();
+
+
+ public: // From MMusEngAudioRoutingObserver
+
+ void AudioRoutingChanged();
+
+
+ public: // From MLcSession
+
+ virtual TLcSessionState LcSessionState() const;
+
+ void SetLcSessionObserver( MLcSessionObserver* aObserver );
+
+ void SetLcUiProvider( MLcUiProvider* aUiProvider );
+
+ virtual MLcVideoPlayer* RemoteVideoPlayer();
+
+ virtual MLcVideoPlayer* LocalVideoPlayer();
+
+ virtual const TDesC& LocalDisplayName();
+
+ virtual const TDesC& RemoteDisplayName();
+
+ TInt SetParameter( TInt aId, TInt aValue );
- /**
- * Implements virtual from CMusEngSession
- *
- * @pre Session is ongoing
- */
- IMPORT_C void UnmuteL();
+ TInt ParameterValue( TInt aId );
+
+ TBool IsBackgroundStartup();
+
+ TInt SetForegroundStatus( TBool aIsForeground );
+
+ const TDesC& RemoteDetails();
+
+ void UpdateLcSessionL();
+
+ TBool SendDialTone( TChar aKey);
+
+
+ public: // From MLcAudioControl
- void RefreshOrientationL();
+ TBool IsLcAudioMutedL();
+
+ void MuteLcAudioL( TBool aMute );
+
+ TBool IsLcMicMutedL();
+
+ void MuteLcMicL( TBool aMute );
+
+ TBool IsEnablingLcLoudspeakerAllowed();
+
+ void EnableLcLoudspeakerL( TBool aEnabled );
+ TBool IsLcLoudspeakerEnabled();
+ TInt LcVolumeL();
+
+ void SetLcVolumeL( TInt aValue );
+
+ void IncreaseLcVolumeL();
+
+ void DecreaseLcVolumeL();
+
+ public:
+
+ MLcSessionObserver* LcSessionObserver();
+
+ MLcUiProvider* LcUiProvider();
+
protected: // CONSTRUCTORS
/**
* Constructor
*
*/
- CMusEngMceSession( const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver );
+ CMusEngMceSession();
/**
* Second-phase constructor
- *
*/
void ConstructL();
@@ -258,7 +274,8 @@
* gets called for every video codec in session. To be overridden in
* sibling classes if needed.
*/
- virtual void AdjustVideoCodecL( CMceVideoCodec& aVideoCodec );
+ virtual void AdjustVideoCodecL( CMceVideoCodec& aVideoCodec,
+ TMceSourceType aSourceType );
/**
* Sets Multimediasharing specific audio codec settings like audio MMF
@@ -274,13 +291,27 @@
*/
virtual void DoCodecSelectionL( CMceVideoStream& aVideoStream );
+ virtual void RectChangedL();
protected: // HELPER FUNCTIONS
- /**
- *
- */
- void RectChangedL();
+ void InformObserverAboutSessionStateChange();
+
+ void InformObserverAboutSessionUpdate();
+
+ void InformObserverAboutSessionFailure( TInt aReason );
+
+ void InformObserverAboutPlayerStateChange( MLcVideoPlayer* aPlayer );
+
+ void InformObserverAboutPlayerUpdate( MLcVideoPlayer* aPlayer );
+
+ void InformObserverAboutPlayerFailure(
+ MLcVideoPlayer* aPlayer,
+ TInt aReason );
+
+ void InformUiProviderAboutReceivingStart();
+
+ MLcUiProvider& LcUiProviderL();
/**
* Sets session specific SDP lines to a session.
@@ -323,15 +354,9 @@
void Reject( CMceInSession& aSession,
const TDesC8& aReason = KNullDesC8(),
TUint32 aCode = 0 );
-
- protected: // from CMusEngSession
-
- /**
- *
- */
- void VolumeChanged( TInt aVolume, TBool aAudioRouteChanged );
-
-
+
+ void SaveContactL( const TDesC8& aAddress );
+
protected: // from MMceInSessionObserver
/**
@@ -485,14 +510,30 @@
void SsrcRemoved( CMceMediaStream& aStream,
CMceRtpSource& aSource,
TUint aSsrc );
-
- private: // from MMusSipProfileUser
+
+
+ private: // from MMusSipProfileUser
+
+ virtual TBool IsRoamingBetweenAPsAllowed();
+
+ virtual void ProfileRegistered();
+
- TBool IsRoamingBetweenAPsAllowed();
-
private: // HELPER FUNCTIONS
/**
+ * Adds b=AS and b=TIAS lines to the array
+ */
+ void AddSdpBandwidthAttributesL( CDesC8Array& aSdpLinesArray,
+ TInt aBandwidthAs );
+
+ /**
+ * Checks whether AS or TIAS bandwidth attributes present in the array
+ */
+ TBool IsBandwidthAttributeSet( MDesC8Array* aSdpLinesArray );
+
+
+ /**
* Callback
*/
void UpdateTimerEvent();
@@ -518,19 +559,58 @@
const CMceVideoCodec& aBestBitrateVideoCodec );
void DoCodecModeBasedRemovalL( CMceVideoStream& aVideoStream );
+
/**
- * This function currently used to remove the AVC codec support based on
- * cenrep encoder device uid value.
- */
- void DoCodecConfigurationBasedRemovalL( CMceVideoStream& aVideoStream );
-
-
- protected: // MEMBERS
+ * Get session time return estabilished session time
+ * @return TTime returns time if connection established else < 0
+ */
+ TTimeIntervalSeconds GetSessionTime() const;
+
+ protected:
+
+ /**
+ * Reads from CenRep and sets encoding device for a codec.
+ */
+ void SetEncodingDeviceL( CMceVideoCodec& aVideoCodec );
/**
- * Callback reference to session observer interface.
+ * Sets configuration key for a codec
+ */
+ void SetCodecConfigKeyL( CMceVideoCodec& aVideoCodec );
+
+ /**
+ * Reads proper configuration key for a codec. NULL if not available.
+ * Ownership is transferred.
+ */
+ HBufC8* ReadCodecConfigKeyL( const CMceVideoCodec& aVideoCodec ) const;
+
+ /**
+ * Constructs and stores to cenrep a concatenation of all AVC config keys.
+ */
+ void StoreEncoderConfigInfoL() const;
+
+ /**
+ * Returns config key id for the provided codec. Ownership is transferred
*/
- MMusEngSessionObserver& iSessionObserver;
+ const TPtrC8 ConfigKeyIdL( const CMceVideoCodec& aVideoCodec ) const;
+
+
+ protected: // Data
+
+ /**
+ * Drawing area rect.
+ */
+ TRect iRect;
+
+ /**
+ * Telephone utilities.
+ */
+ CMusEngTelephoneUtils* iTelephoneUtils;
+
+ /**
+ * UID used to identify application, needed to create MCE manager
+ */
+ TUid iMceManagerUid;
/**
* Class for connecting to MCE server.
@@ -559,14 +639,44 @@
*/
TBool iOperatorVariant;
- /**
+ /**
* The handler for the SIP profile related to this session
*/
CMusSipProfileHandler* iSipProfileHandler;
- private:
+ /**
+ * Session state for MLcSession
+ */
+ MLcSession::TLcSessionState iLcSessionState;
+
+ /**
+ * If true, configuration key of current AVC codec must be written to
+ * CenRep after session establishment.
+ */
+ TBool iStoreEncoderConfigInfo;
+
+ /**
+ * Remote details
+ */
+ HBufC* iRemoteDetails;
+
+ private: // New functions
+
+ void StreamStreaming( CMceMediaStream& aStream );
+
+ private: // Data
/**
+ * The session observer, if present.
+ */
+ MLcSessionObserver* iLcSessionObserver;
+
+ /**
+ * The UI provider, if present.
+ */
+ MLcUiProvider* iLcUiProvider;
+
+ /**
* It is assumed, that user has only one instance of this class.
* The same instance is passed between MCE and user, but the data
* inside of this container is just updated for each event.
@@ -578,7 +688,7 @@
*/
TTime iStartTime;
- CMusEngSessionDurationTimer* iUpdateTimer;
+ CMusEngSessionDurationTimer* iUpdateTimer;
/**
* Value indicating seconds gone since last received RTCP sender or
@@ -591,11 +701,18 @@
* muted as part of disabling bundled display sink
*/
TBool iExplicitlyMuted;
-
-
+
+ /**
+ * Value indicates whether session was started in background mode.
+ * (see IsBackgroundStartup()). Once application comes to foreground,
+ * iBackground is set to EFalse
+ */
+ TBool iBackground;
+
MUS_UNITTEST( UT_CMusEngSession )
MUS_UNITTEST( UT_CMusEngMceSession )
MUS_UNITTEST( UT_CMusEngReceiveSession )
+ MUS_UNITTEST( UT_CMusEngSessionManager )
};
-#endif //MUSHENGMCESESSION_H
+#endif // MUSENGMCESESSION_H
--- a/mmsharing/mmshengine/inc/musengmceutils.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengmceutils.h Tue Aug 31 15:12:07 2010 +0300
@@ -24,6 +24,7 @@
#include <mcemediastream.h>
#include <mcemediasink.h>
+#include <mcemediasource.h>
class CMceSession;
@@ -33,6 +34,7 @@
class CMceVideoStream;
class CMceSpeakerSink;
+const TUint KMusEngNoAssociatedSourceType = KMaxTUint;
/**
* Static class including utility methods to locate and manipulate MCE
@@ -53,6 +55,14 @@
static TBool IsVideoInStream( CMceMediaStream& aStream );
/**
+ * Tells if a stream is a video stream with rtp sink.
+ *
+ * @param aStream Stream to be investigated
+ * @return ETrue if parameter is a video stream with a RTP sink
+ */
+ static TBool IsVideoOutStream( CMceMediaStream& aStream );
+
+ /**
* Tells if a stream is an audio stream with rtp source.
*
* @param aStream Stream to be investigated
@@ -93,44 +103,62 @@
/**
* Gets handle to a media sink of spesified type contained by
* a mediastream. If there are several sink instances, first one is
- * returned. Ownership is not transferred.
+ * returned. If associated source type is defined, sink in stream having
+ * the source is tried to be searched. If no such match, first matching
+ * sink is returned. Ownership is not transferred.
*
* @return Media sink of the spesified type. NULL if none exists
*/
- static CMceMediaSink* GetMediaSink( CMceMediaStream& aStream,
- TMceSinkType aType );
+ static CMceMediaSink* GetMediaSink(
+ CMceMediaStream& aStream,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType = KMusEngNoAssociatedSourceType );
/**
* Gets handle to a media sink of spesified type contained by
* a mediastream. If there are several sink instances, first one is
- * returned. Ownership is not transferred.
+ * returned. If associated source type is defined, sink in stream having
+ * the source is tried to be searched. If no such match, first matching
+ * sink is returned. Ownership is not transferred.
*
* @return Media sink of the spesified type.
* @leave KErrNotFound if there is no sink of spesified type
*/
- static CMceMediaSink* GetMediaSinkL( CMceMediaStream& aStream,
- TMceSinkType aType );
+ static CMceMediaSink* GetMediaSinkL(
+ CMceMediaStream& aStream,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType = KMusEngNoAssociatedSourceType );
/**
* Gets handle to a media sink of spesified type contained by
* a session. If there are several sink instances, first one is
- * returned. Ownership is not transferred.
+ * returned. If associated source type is defined, sink in stream having
+ * the source is tried to be searched. If no such match, first matching
+ * sink is returned. Ownership is not transferred.
*
* @return Media sink of the spesified type. NULL if none exists
*/
- static CMceMediaSink* GetMediaSink( CMceSession& aSession,
- TMceSinkType aType );
+ static CMceMediaSink* GetMediaSink(
+ CMceSession& aSession,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType = KMusEngNoAssociatedSourceType,
+ TBool aStrictMatch = EFalse );
/**
* Gets handle to a media sink of spesified type contained by
* a session. If there are several sink instances, first one is
- * returned. Ownership is not transferred.
+ * returned. If associated source type is defined, sink in stream having
+ * the source is tried to be searched. If no such match, first matching
+ * sink is returned. Ownership is not transferred.
*
* @return Media sink of the spesified type.
* @leave KErrNotFound if there is no sink of spesified type
*/
- static CMceMediaSink* GetMediaSinkL( CMceSession& aSession,
- TMceSinkType aType );
+ static CMceMediaSink* GetMediaSinkL(
+ CMceSession& aSession,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType = KMusEngNoAssociatedSourceType,
+ TBool aStrictMatch = EFalse );
/**
* Gets handle to a speaker sink contained by specified stream
@@ -161,19 +189,44 @@
*
* @return Display sink, NULL if none exists
*/
- static CMceDisplaySink* GetDisplay( CMceSession& aSession );
+ static CMceDisplaySink* GetDisplay( CMceSession& aSession,
+ TBool aPreferViewFinder = ETrue );
/**
* Gets handle to a display sink. If there are several display
- * sink instances, first one is returned.
+ * sink instances view finder is preferred with default arguments.
* Ownership is not transferred.
*
* @return Display sink
* @leave KErrNotFound if there is no display
*/
- static CMceDisplaySink* GetDisplayL( CMceSession& aSession );
+ static CMceDisplaySink* GetDisplayL( CMceSession& aSession,
+ TBool aPreferViewFinder = ETrue );
/**
+ * Gets handle to a display sink. Ownership is not transferred.
+ *
+ * @return Display sink, NULL if none exists
+ */
+ static CMceDisplaySink* GetReceivingDisplay( CMceSession& aSession );
+
+ /**
+ * Gets handle to a receiving display sink. Ownership is not transferred.
+ *
+ * @return Display sink
+ * @leave KErrNotFound if there is no display
+ */
+ static CMceDisplaySink* GetReceivingDisplayL( CMceSession& aSession );
+
+ /**
+ * Gets handle to a viewfinder display sink. Ownership is not transferred.
+ *
+ * @return Display sink
+ * @leave KErrNotFound if there is no display
+ */
+ static CMceDisplaySink* GetVfDisplay( CMceSession& aSession );
+
+ /**
* Adds display sink to specified stream if one does not exist already.
* Display rect is set in both cases to a specified one.
* Display is disabled by default.
@@ -185,7 +238,8 @@
*/
static void AddDisplayL( CMceMediaStream& aStream,
CMceManager& aManager,
- const TRect& aDisplayRect );
+ const TRect& aDisplayRect,
+ TBool aDisable = EFalse );
/**
* Adds speaker sink to specified stream if one does not exist already.
@@ -203,6 +257,18 @@
*/
static void DisableStreamL( CMceMediaStream& aStream );
+ /**
+ * Enables or disables display sink. If the state is already correct,
+ * nothing is done.
+ */
+ static void DoEnableDisplayL( CMceDisplaySink& aDisplay, TBool aEnable );
+
+ /**
+ * Enables inactivity timer if possible.
+ */
+ static TInt EnableInactivityTimer( CMceSession& aSession,
+ TUint32 aInactivityTimeout );
+
};
--- a/mmsharing/mmshengine/inc/musengorientationhandler.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 MUSENGORIENTATIONHANDLER_H
-#define MUSENGORIENTATIONHANDLER_H
-
-
-// INTERNAL INCLUDE
-#include "musunittesting.h"
-
-// SYSTEM INCLUDE
-#include <e32base.h>
-
-class CMusEngLiveSession;
-class MMusEngLiveSessionObserver;
-
-/**
-*
-* @lib musengine.lib
-*/
-NONSHARABLE_CLASS(CMusEngOrientationHandler) : public CTimer
-
- {
- MUS_UNITTEST( UT_CMusEngOrientationHandler )
-
- public:
-
- /**
- * Creates new instance of CMusEngOrientationHandler
- */
- static CMusEngOrientationHandler* NewL( CMusEngLiveSession& aSession,
- MMusEngLiveSessionObserver& aSessionObserver );
-
- /**
- * Destructor
- *
- */
- ~CMusEngOrientationHandler();
-
-
- public: // API
-
- void RefreshOrientationL();
- void UpdateL();
-
- protected:
-
- void RunL();
- TInt RunError( TInt aError );
-
- private:
-
- CMusEngOrientationHandler( CMusEngLiveSession& aSession,
- MMusEngLiveSessionObserver& aSessionObserver );
- void ConstructL();
-
- void DoDelayedResumeL();
-
- private: // DATA
-
- CMusEngLiveSession& iSession;
- MMusEngLiveSessionObserver& iSessionObserver;
- TBool iRefreshBeginStateCamera;
- TBool iRefreshBeginStateDisplay;
-
- };
-
-#endif // MUSENGORIENTATIONHANDLER_H
--- a/mmsharing/mmshengine/inc/musengoutsessionobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* 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 MUSENGOUTSESSIONOBSERVER_H
-#define MUSENGOUTSESSIONOBSERVER_H
-
-// INCLUDES
-
-// CLASS DECLARATION
-
-/**
-* An interface to be implemented by users of Multimedia Sharing Engine if they
-* wish to receive feedback from outsent INVITE. All the callback functions
-* represent an answer from network to sent INVITE.
-*/
-class MMusEngOutSessionObserver
- {
- public:
-
- /**
- * Indicates that MT has rejected session. ( e.g. 603 DECLINE ).
- */
- virtual void SessionRejected() = 0;
-
- /**
- * The following functions represent a specific reason in answer
- * to sent INVITE.
- */
-
- virtual void SessionBadRequest() = 0; // 400
- virtual void SessionUnauthorized() = 0; // 401
- virtual void SessionPaymentRequired() = 0; // 402
- virtual void SessionRecipientNotFound() = 0; // 404
- virtual void SessionProxyAuthenticationRequired() = 0; // 407
- virtual void SessionRequestTimeOut() = 0; // 408
- virtual void SessionUnsupportedMediaType() = 0; // 415
- virtual void SessionBusyHere() = 0; // 486
- virtual void SessionRequestCancelled() = 0; // 487
- virtual void SessionTemporarilyNotAvailable() = 0; // 480
- };
-
-#endif
\ No newline at end of file
--- a/mmsharing/mmshengine/inc/musengreceivesession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengreceivesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -19,18 +19,20 @@
#ifndef MUSHENGREVEIVESESSION_H
#define MUSHENGREVEIVESESSION_H
-
-
+// INCLUDES
#include "musengmcesession.h"
#include "musenguriparser.h"
#include "musunittesting.h"
-
#include <mcemediasink.h>
+// FORWARD DECLARATIONS
class MMusEngReceiveSessionObserver;
class CMceInSession;
+class CMusEngRemoteVideoPlayer;
-class CMusEngReceiveSession : public CMusEngMceSession
+
+class CMusEngReceiveSession :
+ public CMusEngMceSession
{
MUS_UNITTEST( UT_CMusEngMceSession )
MUS_UNITTEST( UT_CMusEngReceiveSession )
@@ -39,36 +41,30 @@
/**
* Creates new MultimediaSharing Receive session.
- *
- * @param aRect UI drawing area. It is allowed handle from engine
- * @param aEngObserver Engine specific callbacks
- * @param aSessionObserver Session specific callbacks
* @return CMusEngReceiveSession* New instanse of specified class
*/
- IMPORT_C static CMusEngReceiveSession* NewL(
- const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver,
- MMusEngReceiveSessionObserver& aReceiveSessionObserver );
+ static CMusEngReceiveSession* NewL();
+
/**
* Destructor
*
* @since S60 v3.2
*/
~CMusEngReceiveSession();
-
+
+ public: // From MLcSession
+
+ TLcSessionState LcSessionState() const;
+
+ void EstablishLcSessionL();
- public: // API
-
- /**
- * Accept or deny processed invitation
- *
- * @param aAccept ETrue if session is to be accepted and EFalse if
- * to be rejected.
- */
- IMPORT_C void AcceptInvitationL(const TBool& aAccept);
-
-
- private: // Overrides function in CMusEngMceSession
+ void TerminateLcSessionL();
+
+ MLcVideoPlayer* RemoteVideoPlayer();
+
+ const TDesC& RemoteDisplayName();
+
+ protected: // Overrides function in CMusEngMceSession
/**
* The state of the session has changed.
@@ -86,7 +82,8 @@
* session. This function overrides function in base class.
* Function calls also overridden version.
*/
- virtual void AdjustVideoCodecL( CMceVideoCodec& aVideoCodec );
+ virtual void AdjustVideoCodecL( CMceVideoCodec& aVideoCodec,
+ TMceSourceType aSourceType );
/**
* Sets Multimediasharing specific audio codec settings like keepalive
@@ -104,10 +101,9 @@
* @param aVideoStream
*/
virtual void DoCodecSelectionL( CMceVideoStream& aVideoStream );
-
-
- private: // from MMceInSessionObserver
- // overrides the function in CMusEngMceSession
+
+ protected: // from MMceInSessionObserver
+ // overrides the function in CMusEngMceSession
/**
* Incoming session invitation. The CMCEInSession is given to the
@@ -138,7 +134,7 @@
TMceTransactionDataContainer* aContainer );
- private: // from MMceStreamObserver,
+ protected: // from MMceStreamObserver,
// overrides the function in CMusEngMceSession
/**
@@ -148,25 +144,28 @@
* @param aStream, the stream that uses the source.
*/
void StreamStateChanged( CMceMediaStream& aStream );
+
+ protected: // from MMceRtpObserver
+
+ void InactivityTimeout( CMceMediaStream& aStream,
+ CMceRtpSource& aSource );
- private: // CONSTRUCTORS
+
+ protected: // CONSTRUCTORS
- CMusEngReceiveSession(
- MMusEngSessionObserver& aSessionObserver,
- MMusEngReceiveSessionObserver& aReceiveSessionObserver,
- const TRect& aRect );
+ CMusEngReceiveSession();
void ConstructL();
- private: // HELPERS
+ protected: // HELPERS
CMceInSession* InSession();
void PrepareToRequire100RelL(
- TMceTransactionDataContainer* aContainer);
+ TMceTransactionDataContainer* aContainer );
- void CompleteSessionStructureL();
+ virtual void CompleteSessionStructureL();
/**
* Parse P-Asserted-Identity header.
@@ -174,18 +173,50 @@
* if tel uri not found it suppose that telephone number
* is in sip url.
*/
- void ParseAssertedIdentity(
- TMceTransactionDataContainer* aContainer );
+ void ParseAssertedIdentity( TMceTransactionDataContainer* aContainer );
+ /*
+ * Checks for buffering event happened & receiving already not started
+ * If yes, start the RTP inactivity timer and indicate to observer
+ * about videoplayer state change.
+ * else will not do anything. Bascially ignores the event.
+ */
+ void ReceivingStarted();
- private: // DATA
-
- MMusEngReceiveSessionObserver& iReceiveSessionObserver;
+ /**
+ * Checks for receiving already started and display sink is enabled
+ * If yes ETrue else otherwise.
+ */
+ TBool IsDisplayActive();
+
+ protected: // DATA
// Set to ETrue if CMceInSession::RingL has already been called
TBool iRingLCalled;
// identity of originator parsed form P-Asserted-Identity field
TBuf8<KMaxUriLength> iIdentity;
+
+ HBufC8* iOriginator;
+
+ HBufC* iRemoteDisplayName;
+
+ /// The remote video player implementing MLcVideoPlayer
+ CMusEngRemoteVideoPlayer* iRemoteVideoPlayer;
+
+ TUint32 iReceivingInactivityTimeout;
+
+ TUint8 iKeepaliveTimer;
+
+ private:
+ /* Flag for whether receiving started. It will go EFalse
+ * when RTP inactivity timeout happen.
+ */
+ TBool iReceiving;
+ /* Flag to indicate buffering event happened. This flag is for
+ * optimization purpose since buffering event is the only place
+ * we can be sure about some packets were received.
+ */
+ TBool iBuffered;
};
#endif
--- a/mmsharing/mmshengine/inc/musengreceivesessionobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* 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 MUSHENGRECEIVESESSIONOBSERVER_H
-#define MUSHENGRECEIVESESSIONOBSERVER_H
-
-// INCLUDES
-
-#include <e32cmn.h>
-
-// CLASS DECLARATION
-
-/**
-* Observer interface to be implemented by clients interested about notifications
-* of receiving (MT) side session specific events.
-*/
-class MMusEngReceiveSessionObserver
- {
-
- public:
-
- /**
- * There is new incoming session.
- * Session is not yet handled in any way and cannot yet be accepted
- * or rejected. User should not be notified at this stage.
- */
- virtual void IncomingSessionPreNotification() = 0;
-
- /**
- * There is new incoming session ready to be accepted or rejected.
- * User can be notified.
- */
- virtual void IncomingSession( const TDesC& aOriginator,
- const TDesC& aOriginatorIdentity ) = 0;
-
- /**
- * Current receiving session is buffering received RTP.
- */
- virtual void StreamBuffering() = 0;
-
- };
-
-#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musengremotevideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2009 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 MUSHENGREMOTEVIDEOPLAYER_H
+#define MUSHENGREMOTEVIDEOPLAYER_H
+
+// INCLUDES
+#include <e32base.h>
+#include "musengvideoplayerbase.h"
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class MLcWindow;
+class MLcAudioControl;
+
+// CLASS DECLARATION
+class CMusEngRemoteVideoPlayer : public CMusEngVideoPlayerBase
+ {
+ public: // Constructors and destructor
+
+ static CMusEngRemoteVideoPlayer* NewL( MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ ~CMusEngRemoteVideoPlayer();
+
+
+ public: // from CMusEngVideoPlayerBase
+
+ TLcVideoPlayerState LcVideoPlayerState() const;
+
+ TBool LcIsPlayingL();
+
+ private: // Constructors
+
+ CMusEngRemoteVideoPlayer( MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+ void ConstructL();
+
+ private: // Data
+
+ };
+
+#endif // MUSHENGREMOTEVIDEOPLAYER_H
--- a/mmsharing/mmshengine/inc/musengsession.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,231 +0,0 @@
-/*
-* 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 MUSENGSESSION_H
-#define MUSENGSESSION_H
-
-// USER INCLUDES
-#include "musunittesting.h"
-#include "musengvolumechangeobserver.h"
-
-//SYSTEM INCLUDES
-#include <e32base.h>
-
-
-// FORWARD DECLARATIONS
-class CMusEngTelephoneUtils;
-class CMusSipProfileHandler;
-class CRepository;
-class MMusEngAudioRoutingObserver;
-class MMusEngVolumeChangeObserver;
-
-// CLASS DECLARATION
-
-/**
-* Base class for Multimedia Sharing Engine sessions, inherited by
-* CMusEngMceSession.
-*
-* CMusEngSession encapsulates all common activities example using
-* resources.
-*
-* @lib musengine.lib
-*/
-class CMusEngSession : public CBase,
- public MMusEngVolumeChangeObserver
- {
- MUS_UNITTEST( UT_CMusEngSession )
-
- public:
-
- /**
- * Desctructor, finalize session
- *
- */
- ~CMusEngSession();
-
-
- public: // API FUNCTIONS
-
- /**
- * Returns currently assigned drawing area
- *
- * @return TRect This session drawing area recttangle
- */
- IMPORT_C TRect Rect() const;
-
- /**
- * Sets new drawing area
- *
- * @param TRect This session new drawing area rectangle
- */
- IMPORT_C void SetRectL( const TRect& aRect );
-
- /**
- * Checks if audio routing can be changed using EnableLoudspeakerL
- *
- * @return ETrue if audio routing can be changed using EnableLoudspeakerL
- */
- IMPORT_C TBool AudioRoutingCanBeChanged() const;
-
- /**
- * Checks if audio routing is headset
- *
- * @return ETrue if audio routing is headset
- */
- IMPORT_C TBool IsAudioRoutingHeadset() const;
-
- /**
- * Checks if audio routing is LoudSpeaker
- *
- * @return ETrue if audio routing is LoudSpeaker and
- * currentMode != iAudioOutputAtStartup
- */
- IMPORT_C TBool IsAudioRoutingLoudSpeaker() const;
- /**
- * Activates/deactivates loadspeaker
- *
- * @param TBool Enable or disable loudspeaker
- * @param TBool Show activation dialog
- */
- IMPORT_C void EnableLoudspeakerL( TBool aEnable, TBool aShowDialog );
-
- /**
- * Checks is loudspeaker enabled or disabled.
- *
- * @return TBool true if enabled
- */
- IMPORT_C TBool IsLoudSpeakerEnabled() const;
-
- /**
- * Returns current volume level
- */
- IMPORT_C TInt VolumeL() const;
-
- /**
- * Mutes CS call microphone.
- */
- IMPORT_C void MuteMicL( TBool aMute );
-
- /**
- * Returns current CS call mic mute state.
- */
- IMPORT_C TBool IsMicMutedL();
-
- /**
- * Sets audio routing observer. Can be set to NULL in order to indicate
- * ending of observing changes in audio routing.
- */
- IMPORT_C void SetAudioRoutingObserver(
- MMusEngAudioRoutingObserver* aObserver );
-
- /**
- * Sets volume level change observer. Can be set to NULL in order to indicate
- * ending of observing changes in volume level.
- */
- IMPORT_C void SetVolumeChangeObserver(
- MMusEngVolumeChangeObserver* aObserver );
-
- public: // VIRTUAL API FUNCTIONS
-
- /**
- * Increases volume level by one.
- */
- IMPORT_C virtual void VolumeUpL();
-
- /**
- * Decreases volume level by one.
- */
- IMPORT_C virtual void VolumeDownL();
-
- /**
- * Set volume value
- * @param aVal the value of volume
- */
- IMPORT_C virtual void SetVolumeL( TInt aVal );
-
- /**
- * Enables or disables display. Call to this function is considered
- * as a permission or denial to draw to the display.
- */
- virtual void EnableDisplayL( TBool aEnable ) = 0;
-
- /**
- * Mutes current audio stream meaning that any audio is not played or
- * sent to network.
- */
- virtual void MuteL() = 0;
-
- /**
- * Unmute current audio stream meaning that all the audio is played
- * and if needed also sent to network.
- */
- virtual void UnmuteL() = 0;
-
- /**
- *
- */
- virtual void RefreshOrientationL() = 0;
-
-
- protected: // INTERNAL
-
- virtual void RectChangedL() = 0;
-
-
- //from MMusEngVolumeChangeObserver
- virtual void VolumeChanged( TInt aVolume, TBool aAudioRouteChanged );
-
- protected:
-
- /**
- * Constructor, private cannot be instantiate
- *
- * @param aRect reserved drawing area for this session
- */
- CMusEngSession( const TRect& aRect );
-
-
- protected:
-
- /**
- * second-phase constructor, called by those session specific
- * constructors
- */
- void ConstructL();
-
-
- private: // MEMBERS
-
- /**
- * Drawing area rect.
- */
- TRect iRect;
-
- /**
- * Telephone utilities.
- */
- CMusEngTelephoneUtils* iTelephoneUtils;
-
- /**
- * Volume change observer
- */
- MMusEngVolumeChangeObserver* iVolumeObserver;
-
- };
-
-#endif //MUSENGSESSION_H
--- a/mmsharing/mmshengine/inc/musengsessiondurationtimer.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengsessiondurationtimer.h Tue Aug 31 15:12:07 2010 +0300
@@ -87,12 +87,6 @@
* @since S60 v3.2
*/
void DoCancel();
-
- /**
- *
- * @since S60 v3.2
- */
- TInt RunError( TInt aError );
private: // DATA
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musengsessionmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2009 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 CMUSENGSESSIONMANAGER_H
+#define CMUSENGSESSIONMANAGER_H
+
+// INCLUDES
+#include "musunittesting.h"
+#include "muspropertyobserver.h"
+#include <lcengine.h>
+#include <musmanagercommon.h>
+
+// FORWARD DECLARATIONS
+class MLcSession;
+class CMusEngMceSession;
+class MLcUiProvider;
+class CMusPropertyWatch;
+
+
+class CMusEngSessionManager : public CLcEngine, public MMusPropertyObserver
+ {
+ public:
+
+ static CMusEngSessionManager* NewL();
+ ~CMusEngSessionManager();
+
+ public: // From CLcEngine
+
+ MLcSession& Session();
+
+ TBool IsFeatureSupported( TLcFeature aLcFeature );
+
+ public: // From MMusPropertyObserver
+
+ virtual void PropertyChanged( const TUint aKey, const TInt aValue );
+
+ virtual void HandlePropertyError( const TInt aReason );
+
+ private: // Constructors
+
+ CMusEngSessionManager();
+ void ConstructL();
+
+ private: // New functions
+
+ CMusEngMceSession* CreateMusSessionL(
+ MultimediaSharing::TMusUseCase aUseCase );
+
+ private: // Data
+
+ CMusEngMceSession* iSession;
+
+ CMusPropertyWatch* iUseCaseWatch;
+
+ MultimediaSharing::TMusUseCase iCurrentUseCase;
+
+ MUS_UNITTEST( UT_CMusEngSessionManager )
+ };
+
+#endif // CMUSENGSESSIONMANAGER_H
+
+// end of file
--- a/mmsharing/mmshengine/inc/musengsessionobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
-* 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 MUSHENGSESSIONOBSERVER_H
-#define MUSHENGSESSIONOBSERVER_H
-
-
-#include <e32std.h>
-
-// CLASS DECLARATION
-
-/**
-* An interface to be implemented by users of Multimedia Sharing Engine if
-* they wish to receive events from session and streaming state changes.
-*
-* @lib museng.lib
-* @since S60 v3.2
-*/
-class MMusEngSessionObserver
- {
-
- public:
-
- /**
- * Indicates that incoming or outgoing session has been established.
- *
- * @since S60 v3.2
- */
- virtual void SessionEstablished() = 0;
-
- /**
- * Indicates that session has been terminated.
- * After this function call session object must deleted.
- * Function is synchronous, use active object which actives
- * delete.
- *
- * @since S60 v3.2
- */
- virtual void SessionTerminated() = 0;
-
- /**
- * Current session has lost network connection.
- *
- * @since S60 v3.2
- */
- virtual void SessionConnectionLost() = 0;
-
- /**
- * Undefined exception has occurred. Session is useless and must be
- * deleted. Function is synchronous, use active object which actives
- * delete.
- *
- * @since S60 v3.2
- */
- virtual void SessionFailed() = 0;
-
- /**
- * Current stream state is changed to idle meaning that
- * we are not sending or receiving RTP.
- *
- * @since S60 v3.2
- */
- virtual void StreamIdle() = 0;
-
- /**
- * Current session state is changed to idle.
- *
- * @since S60 v3.2
- */
- virtual void StreamStreaming() = 0;
-
- /**
- * Update time information of this session
- *
- * @since S60 v3.2
- */
- virtual void SessionTimeChanged( const TTimeIntervalSeconds& aSeconds ) = 0;
-
- /**
- * RTCP inactivity timeout has occurred.
- *
- * @since S60 v3.2
- */
- virtual void InactivityTimeout() = 0;
- };
-
-#endif
\ No newline at end of file
--- a/mmsharing/mmshengine/inc/musengtelephoneutils.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengtelephoneutils.h Tue Aug 31 15:12:07 2010 +0300
@@ -27,22 +27,19 @@
#include <MTelephonyAudioRoutingObserver.h>
#include <TelephonyAudioRouting.h>
#include <RPhCltServer.h>
-#include <cenrepnotifyhandler.h>
// FORWARD DECLARATIONS
class CRepository;
class CTelephonyAudioRouting;
class CPhCltCommandHandler;
class MMusEngAudioRoutingObserver;
-class MMusEngVolumeChangeObserver;
/**
* Utility class to handle all phone related requests:
* Audio routing, volume control and microphone muting.
*/
class CMusEngTelephoneUtils : public CActive,
- public MTelephonyAudioRoutingObserver,
- public MCenRepNotifyHandlerCallback
+ public MTelephonyAudioRoutingObserver
{
MUS_UNITTEST( UT_CMusEngTelephoneUtils )
MUS_UNITTEST( UT_CMusEngSession )
@@ -52,14 +49,14 @@
/**
*
*/
- static CMusEngTelephoneUtils* NewL();
+ static CMusEngTelephoneUtils* NewL(
+ MMusEngAudioRoutingObserver& aAudioRoutingObserver );
/**
*
*/
~CMusEngTelephoneUtils();
-
public: // API
/**
@@ -67,29 +64,12 @@
*
* @return ETrue if audio routing can be changed using LoudspeakerL
*/
- TBool AudioRoutingCanBeChanged() const;
-
- /**
- * Checks if audio routing is headset
- *
- * @return ETrue if audio routing is headset
- */
- TBool IsAudioRoutingHeadset() const;
-
- /**
- * Checks if audio routing is LoudSpeaker
- *
- * @return ETrue if audio routing is LoudSpeaker and
- * currentMode != iAudioOutputAtStartup
- */
- TBool IsAudioRoutingLoudSpeaker() const;
-
+ TBool AudioRoutingCanBeChanged();
+
/**
* Changes the audio routing between loudspeaker and handset.
- *
- * @param aShowDialog if ETrue, user is notified about new audio routing
*/
- void LoudspeakerL( TBool aEnable, TBool aShowDialog );
+ void LoudspeakerL( TBool aEnable );
/**
*
@@ -97,15 +77,10 @@
TBool IsLoudSpeakerEnabled() const;
/**
- * Returns current CS call volume level from central repository
+ *
*/
TInt GetVolumeL() const;
- /**
- * Returns locally cached CS call volume level
- */
- TInt GetVolume() const;
-
/**
*
*/
@@ -119,19 +94,7 @@
/**
* Returns current CS call mic mute state.
*/
- TBool IsMicMutedL();
-
- /**
- * Sets audio routing observer. Can be set to NULL in order to indicate
- * ending of observing changes in audio routing.
- */
- void SetAudioRoutingObserver( MMusEngAudioRoutingObserver* aObserver );
-
- /**
- * Sets volume level observer. Can be set to NULL in order to indicate
- * ending of observing changes in volume level.
- */
- void SetVolumeChangeObserver( MMusEngVolumeChangeObserver* aObserver );
+ TBool IsMicMutedL();
private: // inherited from CActive
@@ -139,7 +102,6 @@
*
*/
void RunL();
- TInt RunError( TInt aError );
/**
* Cancels outstanding request to phone client
@@ -153,37 +115,28 @@
* Available outputs have changed
*/
void AvailableOutputsChanged(
- CTelephonyAudioRouting& aTelephonyAudioRouting );
+ CTelephonyAudioRouting& aTelephonyAudioRouting );
/**
* Some other application has changed audio output routing
*/
void OutputChanged(
- CTelephonyAudioRouting& aTelephonyAudioRouting );
+ CTelephonyAudioRouting& aTelephonyAudioRouting );
/**
* Our request to change audio output routing has completed
*/
void SetOutputComplete(
- CTelephonyAudioRouting& aTelephonyAudioRouting,
- TInt aError );
-
- /**
- * Set output if setting is currently allowed. Leaves with KErrAccessDenied
- * if setting is not allowed.
- */
- void DoSetOutputL( CTelephonyAudioRouting::TAudioOutput aAudioOutput );
-
- private:// From MCenRepNotifyHandlerCallback
-
- void HandleNotifyGeneric( TUint32 aId );
+ CTelephonyAudioRouting& aTelephonyAudioRouting,
+ TInt aError );
private:
/**
* Default C++ constructor
*/
- CMusEngTelephoneUtils();
+ CMusEngTelephoneUtils(
+ MMusEngAudioRoutingObserver& aAudioRoutingObserver );
/**
* 2nd phase constructor
@@ -200,14 +153,10 @@
*/
TInt ValidateVolume( const TInt aVolume ) const;
- /**
- * Checks current volume level and notifies observer, if volume changed
- * @param aAudioRouteChanged, ETrue if volume check should be done
- * because of audio route change
- */
- void UpdateCurrentVolume( TBool aAudioRouteChanged );
-
+
private: // DATA
+
+ MMusEngAudioRoutingObserver& iAudioRoutingObserver;
/**
* Stores the audio routing state at startup.
@@ -228,27 +177,6 @@
* Command handler for muting the microphone
*/
CPhCltCommandHandler* iPhoneCommandHandler;
-
- /**
- * Not owned.
- */
- MMusEngAudioRoutingObserver* iAudioRoutingObserver;
-
- TBool iShowDialog;
-
- /**
- * Central repository notifier instance. Owned.
- */
- CCenRepNotifyHandler* iNotifier;
-
- /**
- * Volume change observer
- * Used to inform session about volume updates
- */
- MMusEngVolumeChangeObserver* iVolumeObserver;
-
- TInt iCurrentVolume;
};
-
-#endif // MUSENGTELEPHONEUTILS_H
\ No newline at end of file
+#endif // MUSENGTELEPHONEUTILS_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musengtwowayrecvsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,143 @@
+/*
+* 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 MUSHENGTWOWAYRECVSESSION_H
+#define MUSHENGTWOWAYRECVSESSION_H
+
+// USER
+#include "musengreceivesession.h"
+#include "musunittesting.h"
+#include "mussettings.h"
+#include "musengcamerahandler.h"
+
+// SYSTEM
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class CMceDisplaySink;
+class CMceStreamBundle;
+class CMusEngLiveVideoPlayer;
+
+
+class CMusEngTwoWayRecvSession : public CMusEngReceiveSession
+ {
+ MUS_UNITTEST( UT_CMusEngTwoWayRecvSession )
+
+
+ public:
+ /**
+ * Creates new MultimediaSharing two-way receive session.
+ * @return CMusEngTwoWayRecvSession* New instanse of specified class
+ */
+ static CMusEngTwoWayRecvSession* NewL();
+
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngTwoWayRecvSession();
+
+ public:
+
+ void EnableDisplayL( TBool aEnable );
+
+ TBool IsDisplayEnabled();
+
+ CMusEngMceSession::TDisplayOrientation OrientationL();
+
+ void SetOrientationL( TDisplayOrientation aOrientation );
+
+ public:
+
+ /**
+ * Sets both remote (receiving video) and local (viewfinder) rects.
+ *
+ */
+ void SetRectsL( const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ /**
+ * Gets camera handler (can be used for zooming etc.)
+ */
+ TMusEngCameraHandler& Camera();
+
+ public: // from MLcSession
+
+ MLcVideoPlayer* LocalVideoPlayer();
+
+ protected: // From CMusEngReceiveSession
+
+ /**
+ * Sets local rect (viewfinder).
+ *
+ */
+ void SetSecondaryRectL( const TRect& aSecondaryRect );
+
+ /**
+ * Gets local rect (viewfinder).
+ *
+ */
+ TRect SecondaryRect() const;
+
+ void CompleteSessionStructureL();
+
+ void RectChangedL();
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMusEngTwoWayRecvSession();
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ private:
+
+ void CompleteSessionStructureAudioPartL(
+ const RPointerArray<CMceMediaStream>& aStreams,
+ CMceStreamBundle& aLocalBundle,
+ CMceMediaStream* aVideoInStream,
+ CMceMediaStream* aVideoOutStream );
+
+ void CompleteSessionStructureInStreamL( CMceMediaStream& aVideoInStream,
+ CMceStreamBundle& aLocalBundle );
+
+ void CompleteSessionStructureOutStreamL( CMceMediaStream& aVideoOutStream );
+
+
+ private:
+
+ TRect iLocalRect;
+
+ TMusEngCameraHandler iCameraHandler;
+
+ /// The live video player implementing MLcVideoPlayer
+ CMusEngLiveVideoPlayer* iLiveVideoPlayer;
+
+ TRect iSetRemoteRect;
+ TRect iSetLocalRect;
+
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musengtwowaysession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,179 @@
+/*
+* 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 MUSHENGTWOWAYSESSION_H
+#define MUSHENGTWOWAYSESSION_H
+
+// USER
+#include "musenglivesession.h"
+#include "musunittesting.h"
+#include "mussettings.h"
+
+// SYSTEM
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class MMusEngLiveSessionObserver;
+class CMceDisplaySink;
+class MMusEngTwoWaySessionObserver;
+class CMusEngRemoteVideoPlayer;
+
+
+class CMusEngTwoWaySession : public CMusEngLiveSession
+ {
+ MUS_UNITTEST( UT_CMusEngOutSession )
+ MUS_UNITTEST( UT_CMusEngTwoWaySession )
+
+
+ public:
+ /**
+ * Creates new MultimediaSharing Live session.
+ * @return CMusEngTwoWaySession* New instanse of specified class
+ */
+ static CMusEngTwoWaySession* NewL();
+
+
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngTwoWaySession();
+
+ public:
+
+ void EnableDisplayL( TBool aEnable );
+
+ void SetOrientationL( TDisplayOrientation aOrientation );
+
+ public:
+
+ /**
+ * Sets both remote (receiving video) and local (viewfinder) rects.
+ *
+ */
+ void SetRectsL( const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ public: // From MLcSession
+
+ MLcVideoPlayer* RemoteVideoPlayer();
+
+ public: // from MLcFileControl
+
+ void EnableLcFileL( TBool aEnable );
+
+ protected: // inherited from CMusEngMceOutSession
+
+ /**
+ * Sets local rect (viewfinder).
+ *
+ */
+ void SetSecondaryRectL( const TRect& aSecondaryRect );
+
+ /**
+ * Gets local rect (viewfinder).
+ *
+ */
+ TRect SecondaryRect() const;
+
+ /**
+ *
+ */
+ TBool IsDisplayEnabled();
+
+ /**
+ * Checks if displaying remote video.
+ *
+ */
+ TBool IsDisplayActive();
+
+ void RectChangedL();
+
+ /**
+ * @param aLocalBundle All local streams are supposed to be added to
+ * this bundle
+ */
+ void CompleteSessionStructureL( CMceStreamBundle& aLocalBundle );
+
+ void AddDisplayL( CMceMediaStream& aStream );
+
+ void CreateMceSessionStructureL( TBool aForceSdpBandwidth =
+ EFalse );
+
+
+ protected: // overrides ancestor class versions
+
+ /**
+ * The state of the session has changed
+ * @param aSession, the session that has changed.
+ */
+ virtual void HandleSessionStateChanged( CMceSession& aSession,
+ TInt aStatusCode,
+ const TDesC8& aReasonPhrase );
+
+ /**
+ * Sets Multimediasharing specific video codec settings like video
+ * bitrate maxbitrate. This functions gets called for every video codec
+ * in session. This function overrides function in ancestor classes.
+ * Function calls also overridden version.
+ */
+ virtual void AdjustVideoCodecL( CMceVideoCodec& aVideoCodec,
+ TMceSourceType aSourceType );
+
+ private: // from MMceStreamObserver,
+ // overrides the function in CMusEngMceSession
+
+ void StreamStateChanged( CMceMediaStream& aStream );
+
+ void InactivityTimeout( CMceMediaStream& aStream,
+ CMceRtpSource& aSource );
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMusEngTwoWaySession();
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ private:
+
+ void ReceivingStarted();
+
+ private: // Data
+
+ TRect iLocalRect;
+
+ TBool iReceiving;
+
+ TBool iBuffered;
+
+ /// The remote video player implementing MLcVideoPlayer
+ CMusEngRemoteVideoPlayer* iRemoteVideoPlayer;
+
+ TRect iSetRemoteRect;
+ TRect iSetLocalRect;
+ };
+
+#endif
+
--- a/mmsharing/mmshengine/inc/musenguriparser.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musenguriparser.h Tue Aug 31 15:12:07 2010 +0300
@@ -54,12 +54,12 @@
/**
* Default constructor
*/
- IMPORT_C TMusEngUriParser( const TDesC16& aUri );
+ TMusEngUriParser( const TDesC16& aUri );
/**
* @returns Uri type
*/
- IMPORT_C TMusEngUriType UriType();
+ TMusEngUriType UriType();
/**
* @returns Parsed and validated 8-bit version of contained URI
@@ -67,7 +67,7 @@
* @pre UriType() != ENotParsed
* @leave KErrNotReady if precondition is not fulfilled
*/
- IMPORT_C HBufC8* GetUri8L();
+ HBufC8* GetUri8L();
/**
* @param aPrefix if ETrue, also sip: or tel:prefix is returned
@@ -76,14 +76,14 @@
* @pre UriType() != ENotParsed
* @leave KErrNotReady if precondition is not fulfilled
*/
- IMPORT_C HBufC16* GetUri16L( TBool aPrefix );
+ HBufC16* GetUri16L( TBool aPrefix );
/**
* Parses and validates contained URI
* @leave KErrCorrupt if URI is not valid SIP or TEL URI
* @post UriType() != ENotParsed
*/
- IMPORT_C void ParseUriL();
+ void ParseUriL();
private:
@@ -92,11 +92,10 @@
void HandleTelUriL();
void HandleLocalTelUriL();
-
+ private: // Data
+
TBuf8<KMaxUriLength> iUri;
-
- TMusEngUriType iUriType;
-
+ TMusEngUriType iUriType;
};
-#endif
+#endif // MUSENGURIPARSER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musengvideoplayerbase.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2009 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 MUSHENGVIDEOPLAYERBASE_H
+#define MUSHENGVIDEOPLAYERBASE_H
+
+// INCLUDES
+#include <e32base.h>
+#include <lcvideoplayer.h>
+#include <lcwindow.h>
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class TMusEngCameraHandler;
+class MMusEngDisplayHandler;
+
+// CLASS DECLARATION
+class CMusEngVideoPlayerBase :
+ public CBase, public MLcVideoPlayer, public MLcWindow
+ {
+ public: // Constructors and destructor
+
+ ~CMusEngVideoPlayerBase();
+
+ public: // New functions
+
+ void SetMceSession( CMceSession* aMceSession );
+
+ public: // From MLcVideoPlayer
+
+ virtual void LcPlayL( TLcVideoPlayerSource aSource=ECameraSource );
+
+ virtual void LcPauseL();
+
+ MLcWindow* LcWindow();
+
+ virtual MLcCameraControl* LcCameraControl();
+
+ virtual MLcSourceFileControl* LcSourceFileControl();
+
+ virtual MLcDestinationFileControl* LcDestinationFileControl();
+
+ MLcAudioControl* LcAudioControl();
+
+ virtual MLcZoomControl* LcZoomControl();
+
+ virtual MLcBrightnessControl* LcBrightnessControl();
+
+ public: // from MLcWindow
+
+ void EnableLcWindowL( TBool aEnable );
+
+ TBool IsLcWindowEnabled();
+
+ void SetLcWindowRectL( TRect aRect );
+
+ TRect LcWindowRect();
+
+ void SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation );
+
+ TLcWindowOrientation LcWindowOrientationL();
+
+ protected: // Constructors
+
+ CMusEngVideoPlayerBase(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl );
+
+ protected: // Data
+
+ MMusEngDisplayHandler& iDisplayHandler;
+ MLcAudioControl& iLcAudioControl;
+
+ CMceSession* iMceSession; // Not owned
+ };
+
+#endif // MUSHENGVIDEOPLAYERBASE_H
--- a/mmsharing/mmshengine/inc/musengvolumechangeobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* 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 MUSENGVOLUMECHANGEOBSERVER_H
-#define MUSENGVOLUMECHANGEOBSERVER_H
-
-// INCLUDES
-#include <e32def.h>
-
-// CLASS DECLARATION
-
-/**
-* An interface to be implemented by users of Multimedia Sharing Engine if
-* they wish to be notified about volume level CenRep keys change
-*
-*/
-class MMusEngVolumeChangeObserver
- {
- public:
-
- /**
- * Indicates that volume level was changed either by some other
- * application or due to audio route change
- * @param aVolume new volume level
- * @param aAudioRouteChanged indicates whether volume level changed due
- * to audio route change
- */
- virtual void VolumeChanged( TInt aVolume, TBool aAudioRouteChanged ) = 0;
- };
-
-#endif
--- a/mmsharing/mmshengine/inc/mussipprofilehandler.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/mussipprofilehandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -12,10 +12,12 @@
* Contributors:
*
* Description:
+* Version : %version: 6.1.4 % << Don't touch! Updated by Synergy at check-out.
*
*/
+
#ifndef MUSSIPPROFILEHANDLER_H
#define MUSSIPPROFILEHANDLER_H
@@ -45,14 +47,13 @@
public MSIPProfileRegistryObserver,
public MSIPObserver,
public MSIPConnectionObserver,
- public MSipProfileAlrObserver
-
+ public MSipProfileAlrObserver
{
MUS_UNITTEST( UT_CMusEngSipProfileHandler )
public:
- /**
+ /**
* Creates new instance of CMusSipProfileHandler
* @param aSipProfileId profile id of requested profile
*/
@@ -66,8 +67,8 @@
public: // API
-
- /**
+
+ /**
* Creates the SIP profile used.
* @param aSipProfileId profile ID of requested SIP profile
*/
@@ -94,22 +95,25 @@
* Should be called when a MuS session terminates.
*/
void RefreshIapAvailabilities();
+
+ /**
+ * @return ETrue if SIP profile returned by Profile() is registered
+ */
+ TBool IsRegistered();
+
private:
/**
* Constructor
- *
*/
CMusSipProfileHandler( MMusSipProfileUser& aUser );
/**
* Second-phase constructor
- *
*/
void ConstructL();
-
private: // From MSIPProfileRegistryObserver
/**
@@ -134,15 +138,15 @@
TUint32 aProfileId,
TInt aError );
- private: // From MSIPObserver
-
+ private: // From MSIPObserver
+
void IncomingRequest( TUint32 aIapId,
CSIPServerTransaction* aTransaction );
void TimedOut( CSIPServerTransaction& aTransaction );
- private: // MSIPConnectionObserver must be implemented to enable SIP profile
-
+ private: // MSIPConnectionObserver must be implemented to enable SIP profile
+
void IncomingRequest (CSIPServerTransaction* aTransaction );
void IncomingRequest (CSIPServerTransaction* aTransaction,
@@ -168,10 +172,10 @@
void ErrorOccured( TInt aError,
CSIPTransactionBase& aTransaction,
CSIPDialogAssocBase& aDialogAssoc );
-
+
void ErrorOccured( TInt aError, CSIPRefresh& aSIPRefresh );
- void ErrorOccured( TInt aError,
+ void ErrorOccured( TInt aError,
CSIPRegistrationBinding& aRegistration );
void ErrorOccured( TInt aError, CSIPDialogAssocBase& aDialogAssoc );
@@ -179,10 +183,10 @@
void InviteCompleted( CSIPClientTransaction& aTransaction );
void InviteCanceled( CSIPServerTransaction& aTransaction );
-
- void ConnectionStateChanged( CSIPConnection::TState aState );
-
- private: // From MSipProfileAlrObserver
+
+ void ConnectionStateChanged( CSIPConnection::TState aState );
+
+ private: // From MSipProfileAlrObserver
void AlrEvent( MSipProfileAlrObserver::TEvent aEvent,
TUint32 aProfileId,
@@ -192,19 +196,20 @@
void AlrError( TInt aError,
TUint32 aProfileId,
TUint32 aSnapId,
- TUint32 aIapId );
-
- private: // New functions
+ TUint32 aIapId );
+
+ private: // New functions
TUint32 ProfileId() const;
-
+
private: // DATA
-
- MMusSipProfileUser& iUser;
+
+ MMusSipProfileUser& iUser;
CSIP* iSip;
CSIPProfileRegistry* iProfileRegistry;
CSipProfileAlrController* iProfileAlrController;
CSIPProfile* iSipProfile;
};
+
#endif // MUSSIPPROFILEHANDLER_H
--- a/mmsharing/mmshengine/inc/mussipprofileuser.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/mussipprofileuser.h Tue Aug 31 15:12:07 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008 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"
@@ -11,7 +11,7 @@
*
* Contributors:
*
-* Description:
+* Description:
*
*/
@@ -35,7 +35,13 @@
* Checks whether roaming between access points is allowed.
* @return ETrue is roaming is allowed, otherwise EFalse.
*/
- virtual TBool IsRoamingBetweenAPsAllowed() = 0;
+ virtual TBool IsRoamingBetweenAPsAllowed() = 0;
+
+ /**
+ * Indicates that SIP profile has been registered.
+ */
+ virtual void ProfileRegistered() = 0;
+
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musengcamerahandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,681 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengcamerahandler.h"
+#include "musunittesting.h"
+#include "musengmceutils.h"
+#include "musenglogger.h"
+
+// SYSTEM
+#include <mcemanager.h>
+#include <mcecamerasource.h>
+#include <mcevideostream.h>
+#include <mcertpsink.h>
+#include <mcedisplaysink.h>
+#include <mcefilesink.h>
+#include <mcesession.h>
+
+const TInt KMaxBrightness = 100;
+const TInt KMinBrightness = -100;
+const TInt KBrightnessStepSize = 10;
+
+
+//Number of big and small zoom steps on Zoom scale
+const TInt KZoomBigStepCount = 15;
+const TInt KZoomSmallStepCount = KZoomBigStepCount*2;
+const TInt KZoomStepMinSize = 1;
+
+const TInt64 KZoomFasterTime = 333333; // 1/3 second
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TMusEngCameraHandler::TMusEngCameraHandler() :
+ iSession( NULL ),
+ iDefaultBrightness( 0 ),
+ iZoomInTime(0),
+ iZoomOutTime(0),
+ iSmallZoomStep( KZoomStepMinSize ),
+ iBigZoomStep( KZoomStepMinSize ),
+ iCurrentCamera( TMusEngCameraHandler::ECameraNotAvailable ),
+ iCameraUsage( MusSettingsKeys::EUseCameraSwapping )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::LcCameraCountL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcCameraCountL()" )
+ __ASSERT_ALWAYS( iSession != NULL, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ __ASSERT_ALWAYS( camera != NULL, User::Leave( KErrNotReady ) );
+ TInt camerasAvailable = camera->CamerasAvailable();
+
+ if ( camerasAvailable > 1 &&
+ iCameraUsage != MusSettingsKeys::EUseCameraSwapping )
+ {
+ camerasAvailable = 1;
+ }
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::LcCameraCountL()",
+ camerasAvailable );
+ return camerasAvailable;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::CurrentLcCameraIndex()
+ {
+ return iCurrentCamera;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::ToggleLcCameraL()
+ {
+ TCurrentCamera newCamera( TMusEngCameraHandler::EBackCamera );
+ if ( iCurrentCamera == TMusEngCameraHandler::EBackCamera )
+ {
+ newCamera = TMusEngCameraHandler::EFrontCamera;
+ }
+ ChangeCameraL( newCamera );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MinLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MinLcBrightnessL()" )
+
+ // minimum brightness is not in camera info, but a constant
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MinLcBrightnessL(): %d",
+ KMinBrightness )
+
+ return KMinBrightness;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MaxLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MaxLcBrightnessL()" )
+
+ // maximum brightness is not in camera info, but a constant
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MaxLcBrightnessL(): %d",
+ KMaxBrightness )
+
+ return KMaxBrightness;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::LcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcBrightnessL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ TInt brightness = camera->BrightnessL();
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::LcBrightnessL(): %d",
+ brightness )
+
+ return brightness;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::SetLcBrightnessL( TInt aValue )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> TMusEngCameraHandler::SetLcBrightnessL( %d )",
+ aValue )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ camera->SetBrightnessL( aValue );
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::SetLcBrightnessL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::IncreaseLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::IncreaseLcBrightnessL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ TInt newBrightness = camera->BrightnessL() + KBrightnessStepSize;
+
+ if ( newBrightness < KMaxBrightness )
+ {
+ camera->SetBrightnessL( newBrightness );
+ }
+ else
+ {
+ camera->SetBrightnessL( KMaxBrightness );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::IncreaseLcBrightnessL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::DecreaseLcBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::DecreaseLcBrightnessL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ TInt newBrightness = camera->BrightnessL() - KBrightnessStepSize;
+
+ if ( newBrightness > KMinBrightness )
+ {
+ camera->SetBrightnessL( newBrightness );
+ }
+ else
+ {
+ camera->SetBrightnessL( KMinBrightness );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::DecreaseLcBrightnessL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MinLcZoomL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MinLcZoomL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ // Although we do not need camera for return value, we have to have it in
+ // order to have proper iCameraInfo
+ MusEngMceUtils::GetCameraL( *iSession );
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MinLcZoomL( %d )",
+ iCameraInfo.iMinZoom )
+
+ return iCameraInfo.iMinZoom;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::MaxLcZoomL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MaxLcZoomL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ // Although we do not need camera for return value, we have to have it in
+ // order to have proper iCameraInfo
+ MusEngMceUtils::GetCameraL( *iSession );
+
+ TInt maxZoom = iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom;
+
+ MUS_LOG1( "mus: [ENGINE] Max optical zoom( %d )",
+ iCameraInfo.iMaxZoom )
+ MUS_LOG1( "mus: [ENGINE] Max digital zoom( %d )",
+ iCameraInfo.iMaxDigitalZoom )
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MaxLcZoomL( %d )",
+ maxZoom )
+
+ return maxZoom;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::LcZoomValueL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcZoomValueL" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ TInt currentZoom = camera->ZoomFactorL() + camera->DigitalZoomFactorL();
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::LcZoomValueL( %d )",
+ currentZoom )
+
+ return currentZoom;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::SetLcZoomValueL( TInt aValue )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> TMusEngCameraHandler::SetLcZoomValueL( %d )",
+ aValue )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+ __ASSERT_ALWAYS( aValue <= MaxLcZoomL() && aValue >= MinLcZoomL(),
+ User::Leave( KErrArgument ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ if ( aValue <= iCameraInfo.iMaxZoom )
+ {
+ MUS_LOG( "mus: [ENGINE] Optical zoom factor increased" )
+ camera->SetZoomFactorL( aValue );
+ }
+
+ if ( aValue - iCameraInfo.iMaxZoom > 0 )
+ {
+ camera->SetDigitalZoomFactorL( aValue - iCameraInfo.iMaxZoom );
+ MUS_LOG1( "mus: [ENGINE] Digital zoom factor increased to %d",
+ aValue - iCameraInfo.iMaxZoom )
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngCameraHandler::SetLcZoomValueL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::LcZoomInL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcZoomInL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ // First try to increase optical zoom factor. If in maximum value, try to
+ // increase digital zoom factor.
+ TInt stepSize = ZoomStepSize( iZoomInTime );
+ TInt zoomFactor = camera->ZoomFactorL();
+ TInt zoomDigitalFactor = camera->DigitalZoomFactorL();
+
+ //increate optical zoom factor
+ if ( zoomFactor + stepSize <= iCameraInfo.iMaxZoom )
+ {
+ //optical zoom factor is enough
+ camera->SetZoomFactorL( zoomFactor + stepSize );
+ stepSize = 0;
+ }
+ else if (zoomFactor < iCameraInfo.iMaxZoom)
+ {
+ stepSize -= iCameraInfo.iMaxZoom - zoomFactor;
+ camera->SetZoomFactorL( iCameraInfo.iMaxZoom );
+ }
+
+ //increate digital zoom factor
+ if (stepSize > 0)
+ {
+ if ( zoomDigitalFactor + stepSize <= iCameraInfo.iMaxDigitalZoom )
+ {
+ camera->SetDigitalZoomFactorL( zoomDigitalFactor + stepSize );
+ }
+ else
+ {
+ camera->SetDigitalZoomFactorL( iCameraInfo.iMaxDigitalZoom );
+ MUS_LOG( "mus: [ENGINE] TMusEngCameraHandler::ZoomInL(): \
+ Optical and digital zoom factors are in maximum value" )
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::LcZoomInL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::LcZoomOutL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::LcZoomOutL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ // First try to decrease digital zoom factor. If already zero, try to
+ // decrease optical zoom factor.
+ TInt stepSize = ZoomStepSize( iZoomOutTime );
+ TInt zoomFactor = camera->ZoomFactorL();
+ TInt zoomDigitalFactor = camera->DigitalZoomFactorL();
+
+ //decreate digital zoom factor firstly
+ if ( zoomDigitalFactor - stepSize >= 0 )
+ {
+ //digital zoom factor is enough
+ camera->SetDigitalZoomFactorL( zoomDigitalFactor - stepSize );
+ stepSize = 0;
+ }
+ else if ( zoomDigitalFactor > 0 )
+ {
+ stepSize -= zoomDigitalFactor;
+ camera->SetDigitalZoomFactorL( 0 );
+ MUS_LOG("mus: [ENGINE] Digigal Factor to zero")
+ }
+
+ //decreate optical zoom factor firstly
+ if ( stepSize > 0 )
+ {
+ if ( zoomFactor - stepSize > iCameraInfo.iMinZoom )
+ {
+ camera->SetZoomFactorL( zoomFactor - stepSize );
+ }
+ else
+ {
+ MUS_LOG( "mus: [ENGINE] TMusEngCameraHandler::LcZoomOutL():\
+ Optical and digital zoom factors are in minimum value" )
+ camera->SetZoomFactorL( iCameraInfo.iMinZoom );
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::LcZoomOutL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::SetSession( CMceSession* aSession )
+ {
+ iSession = aSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::InitializeL( CMceCameraSource& aCamera )
+ {
+ aCamera.GetCameraInfo( iCameraInfo );
+
+ InitializeZoomStepSize();
+
+ iCurrentCamera = EBackCamera;
+ if ( iCameraUsage == MusSettingsKeys::EUseOnlySecondaryCamera )
+ {
+ iCurrentCamera = EFrontCamera;
+ }
+ aCamera.SetCameraIndexL( (TInt)iCurrentCamera );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::PlayL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::PlayL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ if ( !camera->IsEnabled() )
+ {
+ camera->EnableL();
+ }
+ else
+ {
+ MUS_LOG( "mus: [ENGINE] Camera already enabled, ignore request" )
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::PlayL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Disable camera if not already disabled
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::PauseL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::PauseL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ if ( camera->IsEnabled() )
+ {
+ camera->DisableL();
+ }
+ else
+ {
+ MUS_LOG( "mus: [ENGINE] Camera already disabled, ignore request" )
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::PauseL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool TMusEngCameraHandler::IsPlayingL()
+ {
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ return ( MusEngMceUtils::GetCameraL( *iSession )->IsEnabled() );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::InitializeZoomStepSize()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::InitializeZoomStepSize()" )
+ MUS_LOG2( "iMaxZoom = %d, iMinZoom = %d", iCameraInfo.iMaxZoom, iCameraInfo.iMinZoom);
+ MUS_LOG2( "iMaxDigitalZoom = %d, iMaxDigitalZoomFactor = %d",
+ iCameraInfo.iMaxDigitalZoom, iCameraInfo.iMaxDigitalZoomFactor);
+
+ iBigZoomStep = ( iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom -
+ iCameraInfo.iMinZoom ) / KZoomBigStepCount;
+
+ if ( iBigZoomStep < KZoomStepMinSize )
+ iBigZoomStep = KZoomStepMinSize;
+
+ iSmallZoomStep = ( iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom -
+ iCameraInfo.iMinZoom ) / KZoomSmallStepCount;
+
+ if ( iSmallZoomStep < KZoomStepMinSize )
+ iSmallZoomStep = KZoomStepMinSize;
+
+ MUS_LOG2( "mus: [ENGINE] iSmallZoomStep = %d, iBigZoomStep = %d",
+ iSmallZoomStep, iBigZoomStep )
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::InitializeZoomStepSize()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::ReadCameraUsageKeyL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::ReadCameraUsageKeyL()" )
+
+ // We try to read camera usage. If we do not succeed, we use default
+ iCameraUsage = MusSettingsKeys::EUseCameraSwapping;
+ TRAPD( error,
+ iCameraUsage = MultimediaSharingSettings::CameraUsageL() )
+ __ASSERT_ALWAYS( error == KErrNone || error == KErrNotFound,
+ User::Leave( error ) );
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::ReadCameraUsageKeyL()" )
+
+ }
+
+// -----------------------------------------------------------------------------
+// Calculate the zoom step based time escaped
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::ZoomStepSize( TInt64& aTime )
+ {
+ TTime now;
+ now.HomeTime();
+ TInt64 timeNow = now.Int64();
+ TInt stepSize = ( ( timeNow - aTime ) <= KZoomFasterTime ) ? iBigZoomStep : iSmallZoomStep;
+
+ aTime = now.Int64();
+
+ MUS_LOG1( "mus: [ENGINE] stepSize = %d", stepSize );
+
+ return stepSize;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt TMusEngCameraHandler::CamerasAvailableL(
+ TMusEngCameraHandler::TCurrentCamera& aCurrentCamera )
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::CamerasAvailableL()" )
+ __ASSERT_ALWAYS( iSession != NULL, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ __ASSERT_ALWAYS( camera != NULL, User::Leave( KErrNotReady ) );
+ aCurrentCamera = iCurrentCamera;
+ TInt camerasAvailable = camera->CamerasAvailable();
+
+ if ( camerasAvailable > 1 &&
+ iCameraUsage != MusSettingsKeys::EUseCameraSwapping )
+ {
+ camerasAvailable = 1;
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::CamerasAvailable()" )
+ return camerasAvailable;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::ChangeCameraL( TCurrentCamera aCurrentCamera )
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::ChangeCameraL()" )
+ __ASSERT_ALWAYS( iSession != NULL, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ CMceDisplaySink* display = MusEngMceUtils::GetDisplayL( *iSession );
+
+ if ( camera->CamerasAvailable() )
+ {
+ if ( TMusEngCameraHandler::EFrontCamera == aCurrentCamera &&
+ TMusEngCameraHandler::EFrontCamera != iCurrentCamera )
+ {
+ MUS_LOG( "mus: [ENGINE] Set Front camera" )
+ iCurrentCamera = TMusEngCameraHandler::EFrontCamera;
+ ChangeActiveCameraL( iCurrentCamera );
+ }
+ else if ( TMusEngCameraHandler::EBackCamera == aCurrentCamera &&
+ TMusEngCameraHandler::EBackCamera != iCurrentCamera )
+ {
+ MUS_LOG( "mus: [ENGINE] Set Back camera " )
+ iCurrentCamera = TMusEngCameraHandler::EBackCamera;
+ ChangeActiveCameraL( iCurrentCamera );
+ }
+ else if ( TMusEngCameraHandler::ECameraNotAvailable == aCurrentCamera )
+ {
+ if ( iCurrentCamera == TMusEngCameraHandler::EBackCamera )
+ {
+ iCurrentCamera = TMusEngCameraHandler::EFrontCamera;
+ }
+ else
+ {
+ iCurrentCamera = TMusEngCameraHandler::EBackCamera;
+ }
+ ChangeActiveCameraL( iCurrentCamera );
+ }
+ }
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::ChangeCameraL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// Disable camera before it changes it. It enables camera after change.
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::ChangeActiveCameraL( TCurrentCamera aNewCamera )
+ {
+ MUS_LOG( "mus: [ENGINE] -> ChangeActiveCamera()" )
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ CMceDisplaySink* display = MusEngMceUtils::GetDisplayL( *iSession );
+ MUS_LOG( "mus: [ENGINE] Camera enabled ?" )
+ if ( camera->IsEnabled() )
+ {
+ MUS_LOG( "mus: [ENGINE] Is view finder enabled? " )
+ if ( display->IsEnabled() )
+ {
+ MUS_LOG( "mus: [ENGINE] Disable view finder" )
+ display->DisableL();
+ }
+ MUS_LOG( "mus: [ENGINE] Disable camera" )
+ camera->DisableL();
+ camera->SetCameraIndexL( aNewCamera );
+ camera->EnableL();
+ display->EnableL();
+ }
+ else
+ {
+ if ( display->IsEnabled() )
+ {
+ MUS_LOG( "mus: [ENGINE] Disable view finder" )
+ display->DisableL();
+ }
+ MUS_LOG( "mus: [ENGINE] set camera index" )
+ camera->SetCameraIndexL( aNewCamera );
+ MUS_LOG( "mus: [ENGINE] Enable camera" )
+ display->EnableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] -> fetching new iCameraInfo..." )
+ camera->GetCameraInfo( iCameraInfo );
+ InitializeZoomStepSize();
+ }
--- a/mmsharing/mmshengine/src/musengclipsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengclipsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,14 +18,14 @@
// USER
#include "musengclipsession.h"
-#include "musengclipsessionobserver.h"
-#include "musengsessionobserver.h"
#include "musengmceoutsession.h"
#include "musenglivesession.h"
#include "musengmceutils.h"
#include "musenglogger.h"
+#include "musengclipvideoplayer.h"
// SYSTEM
+#include <lcsessionobserver.h>
#include <mcemanager.h>
#include <mcesession.h>
#include <mcestreambundle.h>
@@ -39,39 +39,49 @@
#include <mceamrcodec.h>
#include <mcevideocodec.h>
#include <DRMCommon.h>
-#include <f32file.h>
// CONSTANTS
-
-const TInt64 KMicroSecondsInOneSecond = 1000000;
const TInt KMusEngAmrBitRate = KMceAmrNbBitrate475;
const TUint KMusEngAllowedAmrBitrates = KMceAllowedAmrNbBitrate475;
-const TInt KFastWindingFactor = 4;
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C CMusEngClipSession* CMusEngClipSession::NewL(
- const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver,
- MMusEngClipSessionObserver& aClipSessionObserver,
- TUint aSipProfileId )
+CMusEngClipSession* CMusEngClipSession::NewL()
{
- CMusEngClipSession* self = new( ELeave ) CMusEngClipSession(
- aSessionObserver,
- aOutSessionObserver,
- aClipSessionObserver,
- aRect );
+ CMusEngClipSession* self = new( ELeave )CMusEngClipSession();
CleanupStack::PushL( self );
- self->ConstructL( aSipProfileId );
+ self->ConstructL();
CleanupStack::Pop( self );
return self;
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngClipSession::CMusEngClipSession()
+ : CMusEngMceOutSession()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::ConstructL(...)" )
+
+ CMusEngMceOutSession::ConstructL();
+
+ iClipVideoPlayer = CMusEngClipVideoPlayer::NewL( *this, *this );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::ConstructL(...)" )
+ }
// -----------------------------------------------------------------------------
//
@@ -80,362 +90,31 @@
CMusEngClipSession::~CMusEngClipSession()
{
MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::~CMusEngClipSession()" )
+
+ delete iClipVideoPlayer;
+
MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::~CMusEngClipSession()" )
}
-
// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::SetClipL( const TDesC& aFileName )
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::SetClipL(...)" )
-
- __ASSERT_ALWAYS( !IsProtectedFileL( aFileName ),
- User::Leave( KErrPermissionDenied ) );
-
- if ( iSession )
- {
- CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
- file->UpdateL( aFileName );
- }
-
- iFileName = aFileName;
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::SetClipL(...)" )
-
- }
-
-
-// -----------------------------------------------------------------------------
-// Since MCE does not at the moment support SetFastForwardL function, this
-// functionality is implemented by taking a timestamp when forwarding is
-// started and calculating a new position when it is ended.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::FastForwardL( TBool aUseFFWD )
- {
- MUS_LOG1( "mus: [ENGINE] -> CMusEngClipSession::FastForward(%d)", aUseFFWD )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
-
- if ( aUseFFWD )
- {
- // Ignore if we are already fastforwarding
- if ( iFFWDStartTime.Int64() > 0 )
- {
- return;
- }
-
- // Stop rewinding if ongoing, else just pause file source
- if ( iFRWDStartTime.Int64() > 0 )
- {
- FastRewindL( EFalse );
- }
- else
- {
- file->DisableL();
- }
-
- // Get timestamp for starttime
- iFFWDStartTime.HomeTime();
- }
- else
- {
- // Leave if we are not fastforwarding
- if ( iFFWDStartTime.Int64() == 0 )
- {
- User::Leave( KErrAlreadyExists );
- }
-
- // Set new position
- file->SetPositionL( PositionMicroSecondsL() );
- MUS_LOG( " SetPositionL returned without error " )
-
- // Reset timer
- iFFWDStartTime = TTime( 0 );
- }
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngClipSession::FastForward(%d)", aUseFFWD )
- }
-
-
-// -----------------------------------------------------------------------------
-// Since MCE does not at the moment support SetFastRewindL function, this
-// functionality is implemented by taking a timestamp when rewinding is
-// started and calculating a new position when it is ended.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::FastRewindL( TBool aUseFRWD )
- {
- MUS_LOG1( "mus: [ENGINE] -> CMusEngClipSession::FastRewind(%d)", aUseFRWD )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
-
- if ( aUseFRWD )
- {
- // Ignore if we are already fastrewinding
- if ( iFRWDStartTime.Int64() > 0 )
- {
- return;
- }
-
- // Stop fastforwarding if ongoing, else just pause file source
- if ( iFFWDStartTime.Int64() > 0 )
- {
- FastForwardL( EFalse );
- }
- else
- {
- file->DisableL();
- }
-
- // Get timestamp for starttime
- iFRWDStartTime.HomeTime();
- }
- else
- {
- // Leave if we are not fastrewinding
- if ( iFRWDStartTime.Int64() == 0 )
- {
- User::Leave( KErrAlreadyExists );
- }
-
- // Set new position
- file->SetPositionL( PositionMicroSecondsL() );
- MUS_LOG( " SetPositionL returned without error " )
-
- // Reset timer
- iFRWDStartTime = TTime( 0 );
- }
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngClipSession::FastRewind(%d)", aUseFRWD )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TTimeIntervalSeconds CMusEngClipSession::PositionL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::PositionL()" )
-
- TTimeIntervalMicroSeconds currentPosition = PositionMicroSecondsL();
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngClipSession::PositionL(), pos:%d",
- currentPosition.Int64() )
- return TTimeIntervalSeconds( static_cast<TInt>(
- currentPosition.Int64() / KMicroSecondsInOneSecond ) );
- }
-
-
-// -----------------------------------------------------------------------------
-//
+// From MLcSession
// -----------------------------------------------------------------------------
//
-EXPORT_C TTimeIntervalSeconds CMusEngClipSession::DurationL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::DurationL()" )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
-
- TTimeIntervalMicroSeconds duration = file->DurationL();
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::DurationL()" )
- return TTimeIntervalSeconds(
- static_cast<TInt>( duration.Int64() / KMicroSecondsInOneSecond ) );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::SetPositionL (
- const TTimeIntervalSeconds& aPosition )
- {
- MUS_LOG1( "mus: [ENGINE] -> CMusEngClipSession::SetPositionL (%d)",
- aPosition.Int() )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
-
- TTimeIntervalMicroSeconds position(
- KMicroSecondsInOneSecond * static_cast<TInt64>(aPosition.Int()) );
-
- if ( position == 0 )
- {
- iRewindedToBeginning = ETrue;
- }
-
- file->SetPositionL( position );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::SetPositionL ()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::TranscodeL( const TFileName& aFileName )
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::TranscodeL(...)" )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
-
- const RPointerArray<CMceMediaStream>& streams = iSession->Streams();
-
- for ( TInt i = 0; i < streams.Count(); ++i )
- {
- if ( streams[i]->State() == CMceMediaStream::ETranscodingRequired )
- {
- if ( streams[i]->Type() == KMceAudio )
- {
- AddAmrCodecL( static_cast<CMceAudioStream&>( *streams[i] ) );
- }
- else
- {
- AddVideoCodecL( static_cast<CMceVideoStream&>( *streams[i] ) );
- }
- }
- }
-
- // Set dest file already before transcoding as output file is deleted in failure case
- iTranscodingDestFileName = aFileName;
- TRAPD( err, file->TranscodeL( aFileName ) );
- HandleTranscodingFailureL( err );
- iTranscodingOngoing = ETrue;
-
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::TranscodeL(...)" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::CancelTranscodeL()
+MLcVideoPlayer* CMusEngClipSession::LocalVideoPlayer()
{
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::CancelTranscodeL()" )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
-
- TRAPD( err, file->CancelTranscodeL() );
- err = err; // Silence warning in UREL build
- MUS_LOG1( "mus: [ENGINE] - cancel result %d", err )
- // Even if cancel fails, try to delete the partial clip
-
- MUS_LOG( "mus: [ENGINE] - delete the partially converted clip" )
-
- DeleteTranscodingDestinationFileL();
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::CancelTranscodeL()" )
+ return iClipVideoPlayer;
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::PlayL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::PlayL()" )
-
- __ASSERT_ALWAYS( iSession &&
- iFFWDStartTime.Int64() == 0 &&
- iFRWDStartTime.Int64() == 0,
- User::Leave( KErrNotReady ) );
-
- iPause = EFalse;
- CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
-
- if ( !file->IsEnabled() )
- {
- file->EnableL();
-
- iClipEnded = EFalse;
- // No need to enable audio separarely
- }
- else
- {
- MUS_LOG( "mus: [ENGINE] File is already enabled, ignore request" )
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::PlayL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::PauseL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::PauseL()" )
-
- __ASSERT_ALWAYS( iSession &&
- iFFWDStartTime.Int64() == 0 &&
- iFRWDStartTime.Int64() == 0,
- User::Leave( KErrNotReady ) );
-
-
- iPause = ETrue;
- CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
-
- if ( file->IsEnabled() )
- {
- file->DisableL();
-
- // No need to disable audio separarely
- }
- else
- {
- MUS_LOG( "mus: [ENGINE] File is already disabled, ignore request" )
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::PauseL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CMusEngClipSession::IsPlayingL()
- {
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- return ( MusEngMceUtils::GetFileSourceL( *iSession )->IsEnabled() );
- }
-
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void CMusEngClipSession::CompleteSessionStructureL(
- CMceStreamBundle& aLocalBundle )
+ CMceStreamBundle& aLocalBundle )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::CompleteSessionStructureL()" )
__ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
- __ASSERT_ALWAYS( iFileName != KNullDesC(), User::Leave( KErrNotReady ) );
// Create outgoing video stream
CMceVideoStream* videoStream = CMceVideoStream::NewLC();
@@ -444,8 +123,8 @@
videoStream->AddSinkL( rtpsink );
CleanupStack::Pop( rtpsink );
- CMceFileSource* fileSource = CMceFileSource::NewLC( *iManager,
- iFileName );
+ CMceFileSource* fileSource =
+ CMceFileSource::NewLC( *iManager, iClipVideoPlayer->LcFileName() );
fileSource->DisableL(); // Start session in pause mode.
videoStream->SetSourceL( fileSource );
CleanupStack::Pop( fileSource );
@@ -454,11 +133,12 @@
CleanupStack::Pop( videoStream );
ConstructAudioStructureL( aLocalBundle );
+
+ iClipVideoPlayer->SetMceSession( iSession );
MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::CompleteSessionStructureL()" )
}
-
// -----------------------------------------------------------------------------
// Checks that that there is no need for transcoding before calling
// overridden base class variant of this function.
@@ -472,9 +152,6 @@
const RPointerArray<CMceMediaStream>& streams = iSession->Streams();
- TBool transcodingRequired = EFalse;
- TBool transcodingRequiredDueUnknownCaps = EFalse;
-
if ( iVideoCodecList )
{
MUS_LOG_TDESC8( "iVideoCodecList: ", iVideoCodecList->Des() )
@@ -483,58 +160,33 @@
CMceVideoStream* videoStream = NULL;
for ( TInt i = 0; i < streams.Count(); ++i )
{
- videoStream = static_cast<CMceVideoStream*>( streams[i] );
-
- if ( iTranscodingRequiredDueMissingOptions )
+ if ( streams[i]->State() == CMceMediaStream::ETranscodingRequired )
{
- MUS_LOG( " -> establish with current codec, remote capa unknown!!!" )
- TBool ignoreOptionsQueryCodecs( ETrue );
- AddVideoCodecL( *videoStream, ignoreOptionsQueryCodecs );
+ User::Leave( KErrNotSupported );
}
- else if ( streams[i]->State() == CMceMediaStream::ETranscodingRequired )
- {
- transcodingRequired = ETrue;
- }
- else if ( streams[i]->Type() == KMceVideo && !IsH264Supported() )
+ else if ( streams[i]->Type() == KMceVideo &&
+ !IsH264Supported() )
{
MUS_LOG( " -> video stream found!!!" )
+ videoStream = static_cast<CMceVideoStream*>( streams[i] );
//transcoding of H264 is not needed only if we know explicitly
- //that the peer supports it (from OPTIONS response)
+ //that the peer supports it (from OPTIONS response)
+
const RPointerArray<CMceVideoCodec>& codecs = videoStream->Codecs();
for ( TInt codecIndex = 0; codecIndex < codecs.Count(); ++codecIndex )
{
if ( codecs[codecIndex]->SdpName() == KMceSDPNameH264() )
{
- transcodingRequired = ETrue;
- transcodingRequiredDueUnknownCaps = !iVideoCodecList;
- MUS_LOG( " -> Removing H264 codec from video stream" )
- videoStream->RemoveCodecL( *codecs[codecIndex] );
- codecIndex = 0;
+ User::Leave( KErrNotSupported );
}
- }
-
- if ( codecs.Count() == 0)
- {
- // At least one codec should be in the stream list.
- MUS_LOG( " -> Adding codec, since codecs list is empty " )
- AddVideoCodecL( *videoStream );
- }
+ }
}
}
- iTranscodingRequiredDueMissingOptions = transcodingRequiredDueUnknownCaps;
-
- if ( transcodingRequired )
- {
- iClipSessionObserver.TranscodingNeeded(iTranscodingRequiredDueMissingOptions);
- }
- else
- {
- CMusEngMceOutSession::EstablishSessionL();
- // Now session state is right to adjust volume
- SetSpeakerVolumeL( VolumeL() );
- }
+ CMusEngMceOutSession::EstablishSessionL();
+ // Now session state is right to adjust volume
+ SetSpeakerVolumeL( LcVolumeL() );
MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::EstablishSessionL()" )
}
@@ -577,49 +229,11 @@
DetermineBufferingPeriod( aStream );
- if ( aStream.State() == CMceMediaStream::ETranscoding )
- {
- CMceFileSource* file = static_cast<CMceFileSource*>(aStream.Source());
- TInt progressPercentage = 0;
- TRAP_IGNORE( progressPercentage = file->TranscodingProgressL() )
- iClipSessionObserver.TranscodingProgressed( progressPercentage );
- }
- else if ( aStream.State() == CMceMediaStream::EInitialized )
- {
- if ( iTranscodingOngoing )
- {
- MUS_LOG( "mus: [ENGINE] Transcoding completed." )
-
- // Filename has been updated in MCE side but unfortunately
- // there's no getter for the filename in API.
- iFileName = iTranscodingDestFileName;
-
- DoCompleteTranscoding();
- }
- }
- else if ( aStream.State() == CMceMediaStream::ETranscodingRequired &&
- iTranscodingOngoing )
- {
- MUS_LOG( "mus: [ENGINE] Transcoding failed." )
-
- iClipSessionObserver.TranscodingFailed();
- iTranscodingOngoing = EFalse;
- iTranscodingRequiredDueMissingOptions = EFalse;
- }
- else if ( HasClipEnded() )
+ if ( iClipVideoPlayer->HasClipEnded() )
{
MUS_LOG( "mus: [ENGINE] Clip ended." )
-
- iDelayFileEndingPos = 0;
- iClipEnded = ETrue;
-
- iClipSessionObserver.EndOfClip();
+ InformObserverAboutPlayerStateChange( iClipVideoPlayer );
}
- else if ( IsRewindFromEnd() )
- {
- TRAP_IGNORE( iClipSessionObserver.RewindFromEndL() );
- }
-
else
{
// Cannot handle, forward to the ancestor class
@@ -633,77 +247,19 @@
//
// -----------------------------------------------------------------------------
//
-CMusEngClipSession::CMusEngClipSession(
- MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver,
- MMusEngClipSessionObserver& aClipSessionObserver,
- const TRect& aRect )
- : CMusEngMceOutSession( aRect,
- aSessionObserver,
- aOutSessionObserver ),
- iClipSessionObserver( aClipSessionObserver )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngClipSession::ConstructL( TUint aSipProfileId )
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::ConstructL(...)" )
-
- CMusEngMceOutSession::ConstructL( aSipProfileId );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::ConstructL(...)" )
- }
-
-
-// -----------------------------------------------------------------------------
-// Check is file DRM protected.
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusEngClipSession::IsProtectedFileL( const TDesC& aClipFile )
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::IsProtectedFileL(...)" )
-
- TBool isDRMProtected = EFalse;
- DRMCommon* drmapi = DRMCommon::NewL();
- CleanupStack::PushL( drmapi );
-
- User::LeaveIfError( drmapi->Connect() );
- //Check DRM file protection
- User::LeaveIfError( drmapi->IsProtectedFile( aClipFile, isDRMProtected ) );
- drmapi->Disconnect();
-
- CleanupStack::PopAndDestroy( drmapi );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::IsProtectedFileL(...)" )
- return isDRMProtected;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
void CMusEngClipSession::AddAmrCodecL( CMceAudioStream& aAudioStream )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::AddAmrCodecL" )
// Remove old codecs
-
while ( aAudioStream.Codecs().Count() > 0 )
{
aAudioStream.RemoveCodecL( *aAudioStream.Codecs()[0] );
}
// Create AMR codec instance
-
const RPointerArray<const CMceAudioCodec>& supportedCodecs =
- iManager->SupportedAudioCodecs();
+ iManager->SupportedAudioCodecs();
CMceAudioCodec* amr = NULL;
@@ -713,12 +269,10 @@
{
amr = supportedCodecs[i]->CloneL();
CleanupStack::PushL( amr );
-
- User::LeaveIfError(
- amr->SetAllowedBitrates( KMusEngAllowedAmrBitrates ) );
+ User::LeaveIfError(
+ amr->SetAllowedBitrates( KMusEngAllowedAmrBitrates ) );
User::LeaveIfError( amr->SetBitrate( KMusEngAmrBitRate ) );
aAudioStream.AddCodecL( amr );
-
CleanupStack::Pop( amr );
break; // We must have only one codec
}
@@ -729,14 +283,12 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::AddAmrCodecL" )
}
-
// -----------------------------------------------------------------------------
// Create codec instance, H264 is used only if other end supports it for sure,
// otherwise H263 is used.
// -----------------------------------------------------------------------------
//
-void CMusEngClipSession::AddVideoCodecL(
- CMceVideoStream& aVideoStream, TBool aIgnoreNegotiated )
+void CMusEngClipSession::AddVideoCodecL( CMceVideoStream& aVideoStream )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::AddVideoCodecL" )
@@ -747,13 +299,13 @@
aVideoStream.RemoveCodecL( *aVideoStream.Codecs()[0] );
}
- const RPointerArray<const CMceVideoCodec>& supportedCodecs =
- iManager->SupportedVideoCodecs();
+ const RPointerArray< const CMceVideoCodec >& supportedCodecs =
+ iManager->SupportedVideoCodecs();
CMceVideoCodec* addedCodec = NULL;
- TPtrC8 addedCodecName = ( aIgnoreNegotiated || IsH264Supported() ) ?
- KMceSDPNameH264() : KMceSDPNameH2632000();
+ TPtrC8 addedCodecName =
+ IsH264Supported() ? KMceSDPNameH264() : KMceSDPNameH2632000();
MUS_LOG_TDESC8( "mus: [ENGINE] adding codec : ", addedCodecName );
@@ -775,123 +327,12 @@
}
// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusEngClipSession::HasClipEnded()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::HasClipEnded()" )
-
- TBool hasClipEnded = EFalse;
-
- if ( iSession )
- {
-
- CMceVideoStream* videoOut = NULL;
-
- TRAPD( error,
- videoOut = MusEngMceUtils::GetVideoOutStreamL( *iSession ) );
- if( error != KErrNone )
- {
- MUS_LOG1( "mus: [ENGINE] Error in GetVideoOutStreamL #%d", error )
- return hasClipEnded;
- }
-
- CMceFileSource* filesource = NULL;
- TRAP( error, filesource = MusEngMceUtils::GetFileSourceL( *iSession ) )
-
- if ( error == KErrNone )
- {
- TTimeIntervalMicroSeconds position;
- TTimeIntervalMicroSeconds duration;
- TRAP( error, position = filesource->PositionL() );
- TRAPD( error1, duration = filesource->DurationL() );
- if ( error != KErrNone || error1 != KErrNone )
- {
- return hasClipEnded;
- }
-
- MUS_LOG2( "mus: [ENGINE] position = %Ld, duration = %Ld",
- position.Int64(),
- duration.Int64() )
-
- TRAP( error, hasClipEnded =
- ( position.Int64() == 0 &&
- !filesource->IsEnabled() &&
- videoOut->State() == CMceMediaStream::EDisabled ) )
- if( hasClipEnded )
- {
- MUS_LOG( "mus: [ENGINE] End of clip" )
- }
- }
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::HasClipEnded()" )
- return hasClipEnded;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TTimeIntervalMicroSeconds CMusEngClipSession::PositionMicroSecondsL()
- {
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
-
- TTimeIntervalMicroSeconds position = file->PositionL();
- TTimeIntervalMicroSeconds duration = file->DurationL();
-
- TTimeIntervalMicroSeconds calculatedPosition;
-
- // Adjust position if we are fastforwarding or -rewinding
- if ( iFFWDStartTime.Int64() != 0 )
- {
- TTime now;
- now.HomeTime();
- calculatedPosition = KFastWindingFactor *
- now.MicroSecondsFrom( iFFWDStartTime ).Int64() +
- position.Int64();
- if ( calculatedPosition > duration )
- {
- calculatedPosition = duration;
- }
- }
- else if ( iFRWDStartTime.Int64() != 0 )
- {
- TTime now;
- now.HomeTime();
- calculatedPosition = position.Int64() -
- KFastWindingFactor *
- now.MicroSecondsFrom( iFRWDStartTime ).Int64();
- if ( calculatedPosition < 0 )
- {
- calculatedPosition = 0;
- }
-
- if ( calculatedPosition == 0 )
- {
- iRewindedToBeginning = ETrue;
- }
- }
- else
- {
- calculatedPosition = position;
- }
-
- return calculatedPosition;
- }
-
-
-// -----------------------------------------------------------------------------
// If member file contains audio, add appropriate amount of audio streams to
// session structure
// -----------------------------------------------------------------------------
//
void CMusEngClipSession::ConstructAudioStructureL(
- CMceStreamBundle& aLocalBundle )
+ CMceStreamBundle& aLocalBundle )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::ConstructAudioStructureL()" )
@@ -981,11 +422,11 @@
const TInt KMusMinimumBufferingPeriod( 500000 );
if ( bufferingPeriod > KMusMinimumBufferingPeriod )
{
- iBufferingPeriod = bufferingPeriod;
+ iClipVideoPlayer->SetBufferingPeriod( bufferingPeriod );
}
MUS_LOG1( "mus: [ENGINE] current buffering period:%d",
- iBufferingPeriod.Int64() )
+ bufferingPeriod.Int64() )
iBufferingStartedTime = 0;
}
@@ -994,131 +435,4 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::DetermineBufferingPeriod()" )
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusEngClipSession::IsH264Supported() const
- {
- return ( iVideoCodecList && iVideoCodecList->FindF( KMceSDPNameH264() ) >= 0 );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngClipSession::HandleTranscodingFailureL( TInt aError )
- {
- if ( aError == KErrNone )
- {
- return;
- }
-
- TRAP_IGNORE( DeleteTranscodingDestinationFileL() )
-
- User::LeaveIfError( aError );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusEngClipSession::DoCompleteTranscoding()
- {
- iTranscodingOngoing = EFalse;
-
- iClipSessionObserver.TranscodingCompletedInit();
-
- TRAPD( error, EstablishSessionL() )
- iTranscodingRequiredDueMissingOptions = EFalse;
- if ( error != KErrNone )
- {
- iSessionObserver.SessionFailed();
- }
-
- // Next call does not return before session establishment
- iClipSessionObserver.TranscodingCompletedFinalize();
-
- return error;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngClipSession::DeleteTranscodingDestinationFileL()
- {
- RFs fs;
- User::LeaveIfError( fs.Connect() );
- CleanupClosePushL( fs );
-
- CFileMan* fileMan = CFileMan::NewL( fs );
- CleanupStack::PushL( fileMan );
-
- MUS_LOG_TDESC8( "mus: [ENGINE] - deleting trascoding destination, filename",
- iTranscodingDestFileName )
- TInt err = fileMan->Delete( iTranscodingDestFileName );
- MUS_LOG1( "mus: [ENGINE] - file delete result %d", err )
-
- CleanupStack::PopAndDestroy( fileMan );
- CleanupStack::PopAndDestroy(); // fs
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusEngClipSession::IsRewindFromEnd()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngClipSession::IsRewindFromEnd()" )
-
- TBool isRewindFromEnd = EFalse;
-
- if ( iSession )
- {
-
- CMceVideoStream* videoOut = NULL;
-
- TRAPD( error,
- videoOut = MusEngMceUtils::GetVideoOutStreamL( *iSession ) );
- if( error != KErrNone )
- {
- MUS_LOG1( "mus: [ENGINE] Error in GetVideoOutStreamL #%d", error )
- return isRewindFromEnd;
- }
-
- CMceFileSource* filesource = NULL;
- TRAP( error, filesource = MusEngMceUtils::GetFileSourceL( *iSession ) )
-
- if ( error == KErrNone )
- {
- TTimeIntervalMicroSeconds position;
- TTimeIntervalMicroSeconds duration;
- TRAP( error, position = filesource->PositionL() );
- TRAPD( error1, duration = filesource->DurationL() );
- if ( error != KErrNone || error1 != KErrNone )
- {
- return isRewindFromEnd;
- }
-
- MUS_LOG2( "mus: [ENGINE] position = %Ld, duration = %Ld",
- position.Int64(),
- duration.Int64() )
-
- TRAP( error, isRewindFromEnd =
- ( position.Int64() != 0 &&
- !filesource->IsEnabled() &&
- videoOut->State() == CMceMediaStream::EDisabled &&
- !iPause ) )
- if( isRewindFromEnd )
- {
- MUS_LOG( "mus: [ENGINE] Rewind from end of clip" )
- }
- }
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::IsRewindFromEnd()" )
- return isRewindFromEnd;
- }
// End of file
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musengclipvideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,535 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musengclipvideoplayer.h"
+#include "musengcamerahandler.h"
+#include "musengmceutils.h"
+#include "musengdisplayhandler.h"
+#include "muslogger.h"
+
+// SYSTEM
+#include <mcesession.h>
+#include <mcevideostream.h>
+#include <mcefilesource.h>
+#include <DRMCommon.h>
+
+// CONSTANTS
+const TInt64 KMicroSecondsInOneSecond = 1000000;
+const TInt KFastWindingFactor = 4;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngClipVideoPlayer* CMusEngClipVideoPlayer::NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl )
+ {
+ return new( ELeave )CMusEngClipVideoPlayer(
+ aDisplayHandler, aLcAudioControl );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngClipVideoPlayer::CMusEngClipVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngLocalVideoPlayer( aDisplayHandler, aLcAudioControl )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngClipVideoPlayer::~CMusEngClipVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngClipVideoPlayer::HasClipEnded()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::HasClipEnded" )
+
+ TBool hasClipEnded( EFalse );
+
+ if ( iMceSession )
+ {
+ CMceVideoStream* videoOut = NULL;
+
+ TRAPD( err,
+ videoOut = MusEngMceUtils::GetVideoOutStreamL( *iMceSession ) );
+ if ( err != KErrNone )
+ {
+ MUS_LOG1( "mus: [ENGINE] Error in GetVideoOutStreamL %d", err )
+ return EFalse;
+ }
+
+ CMceFileSource* filesource = NULL;
+ TRAP( err, filesource = MusEngMceUtils::GetFileSourceL( *iMceSession ) )
+
+ if ( err == KErrNone )
+ {
+ TTimeIntervalMicroSeconds position;
+ TTimeIntervalMicroSeconds duration;
+ TRAP( err, position = filesource->PositionL() );
+ TRAPD( err2, duration = filesource->DurationL() );
+ if ( err != KErrNone || err2 != KErrNone )
+ {
+ return EFalse;
+ }
+
+ MUS_LOG2( "mus: [ENGINE] position = %Ld, duration = %Ld",
+ position.Int64(), duration.Int64() )
+
+ hasClipEnded =
+ ( position.Int64() == 0 &&
+ !filesource->IsEnabled() &&
+ videoOut->State() == CMceMediaStream::EDisabled );
+ }
+ }
+
+ if ( hasClipEnded )
+ {
+ iDelayFileEndingPos = 0;
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::HasClipEnded" )
+
+ return hasClipEnded;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::SetBufferingPeriod(
+ const TTimeIntervalMicroSeconds& aPeriod )
+ {
+ iBufferingPeriod = aPeriod;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngClipVideoPlayer::LcIsPlayingL()
+ {
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+ return ( MusEngMceUtils::GetFileSourceL( *iMceSession )->IsEnabled() );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcPlayL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::LcPlayL" )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( !file->IsEnabled() )
+ {
+ file->EnableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::LcPlayL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcPauseL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::LcPauseL" )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( file->IsEnabled() )
+ {
+ file->DisableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::LcPauseL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcSourceFileControl* CMusEngClipVideoPlayer::LcSourceFileControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::SetLcFileNameL( const TFileName& aFileName )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::SetLcFileNameL" )
+
+ __ASSERT_ALWAYS( !IsProtectedFileL( aFileName ),
+ User::Leave( KErrPermissionDenied ) );
+
+ if ( iMceSession )
+ {
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+ file->UpdateL( aFileName );
+ }
+
+ iFileName = aFileName;
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::SetLcFileNameL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+TFileName& CMusEngClipVideoPlayer::LcFileName()
+ {
+ return iFileName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// Since MCE does not at the moment support SetFastForwardL function, this
+// functionality is implemented by taking a timestamp when forwarding is
+// started and calculating a new position when it is ended.
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcFastForwardL( TBool aUseFFWD )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngClipVideoPlayer::FastForward( %d )",
+ aUseFFWD )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( aUseFFWD )
+ {
+ // Ignore if we are already fastforwarding
+ if ( iFFWDStartTime.Int64() > 0 )
+ {
+ return;
+ }
+
+ // Stop rewinding if ongoing, else just pause file source
+ if ( iFRWDStartTime.Int64() > 0 )
+ {
+ LcFastRewindL( EFalse );
+ }
+ else
+ {
+ file->DisableL();
+ }
+
+ // Get timestamp for starttime
+ iFFWDStartTime.HomeTime();
+ }
+ else
+ {
+ // Leave if we are not fastforwarding
+ if ( iFFWDStartTime.Int64() == 0 )
+ {
+ User::Leave( KErrAlreadyExists );
+ }
+
+ // Set new position
+ file->SetPositionL( PositionMicroSecondsL( ETrue ) );
+
+ // Reset timer
+ iFFWDStartTime = TTime( 0 );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::FastForward" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// Since MCE does not at the moment support SetFastRewindL function, this
+// functionality is implemented by taking a timestamp when rewinding is
+// started and calculating a new position when it is ended.
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::LcFastRewindL( TBool aUseFRWD )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngClipVideoPlayer::FastRewind( %d )",
+ aUseFRWD )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ if ( aUseFRWD )
+ {
+ // Ignore if we are already fastrewinding
+ if ( iFRWDStartTime.Int64() > 0 )
+ {
+ return;
+ }
+
+ // Stop fastforwarding if ongoing, else just pause file source
+ if ( iFFWDStartTime.Int64() > 0 )
+ {
+ LcFastForwardL( EFalse );
+ }
+ else
+ {
+ file->DisableL();
+ }
+
+ // Get timestamp for starttime
+ iFRWDStartTime.HomeTime();
+ }
+ else
+ {
+ // Leave if we are not fastrewinding
+ if ( iFRWDStartTime.Int64() == 0 )
+ {
+ User::Leave( KErrAlreadyExists );
+ }
+
+ // Set new position
+ file->SetPositionL( PositionMicroSecondsL( ETrue ) );
+
+ // Reset timer
+ iFRWDStartTime = TTime( 0 );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::FastRewind" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalSeconds CMusEngClipVideoPlayer::LcFileDurationL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::DurationL" )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ TTimeIntervalMicroSeconds duration = file->DurationL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::DurationL" )
+
+ return TTimeIntervalSeconds( static_cast< TInt >(
+ duration.Int64() / KMicroSecondsInOneSecond ) );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalSeconds CMusEngClipVideoPlayer::LcFilePositionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::LcFilePositionL" )
+
+ TTimeIntervalMicroSeconds currentPosition = PositionMicroSecondsL();
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngClipVideoPlayer::LcFilePositionL, %d",
+ currentPosition.Int64() )
+
+ return TTimeIntervalSeconds( static_cast< TInt >(
+ currentPosition.Int64() / KMicroSecondsInOneSecond ) );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSourceFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngClipVideoPlayer::SetLcFilePositionL(
+ const TTimeIntervalSeconds& aPosition )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngClipVideoPlayer::SetPositionL ( %d )",
+ aPosition.Int() )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ TTimeIntervalMicroSeconds position(
+ KMicroSecondsInOneSecond * static_cast< TInt64 >( aPosition.Int() ) );
+
+ if ( position == 0 )
+ {
+ iRewindedToBeginning = ETrue;
+ }
+
+ file->SetPositionL( position );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::SetPositionL ()" )
+ }
+
+// -----------------------------------------------------------------------------
+// Check is file DRM protected.
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngClipVideoPlayer::IsProtectedFileL( const TDesC& aClipFile )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngClipVideoPlayer::IsProtectedFileL(...)" )
+
+ TBool isDRMProtected = EFalse;
+ DRMCommon* drmapi = DRMCommon::NewL();
+ CleanupStack::PushL( drmapi );
+
+ User::LeaveIfError( drmapi->Connect() );
+ //Check DRM file protection
+ User::LeaveIfError( drmapi->IsProtectedFile( aClipFile, isDRMProtected ) );
+ drmapi->Disconnect();
+
+ CleanupStack::PopAndDestroy( drmapi );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngClipVideoPlayer::IsProtectedFileL(...)" )
+ return isDRMProtected;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalMicroSeconds CMusEngClipVideoPlayer::PositionMicroSecondsL(
+ TBool aActualPosition )
+ {
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+
+ TTimeIntervalMicroSeconds position = file->PositionL();
+ TTimeIntervalMicroSeconds duration = file->DurationL();
+
+ TTimeIntervalMicroSeconds calculatedPosition;
+
+ // Adjust position if we are fastforwarding or -rewinding
+ if ( iFFWDStartTime.Int64() != 0 )
+ {
+ TTime now;
+ now.HomeTime();
+ calculatedPosition = KFastWindingFactor *
+ now.MicroSecondsFrom( iFFWDStartTime ).Int64() +
+ position.Int64();
+ if ( calculatedPosition > duration )
+ {
+ calculatedPosition = duration;
+ }
+ }
+ else if ( iFRWDStartTime.Int64() != 0 )
+ {
+ TTime now;
+ now.HomeTime();
+ calculatedPosition = position.Int64() -
+ KFastWindingFactor *
+ now.MicroSecondsFrom( iFRWDStartTime ).Int64();
+ if ( calculatedPosition < 0 )
+ {
+ calculatedPosition = 0;
+ }
+
+ if ( calculatedPosition == 0 )
+ {
+ iRewindedToBeginning = ETrue;
+ }
+ }
+ else
+ {
+ calculatedPosition = position;
+ }
+
+ if ( !aActualPosition )
+ {
+ calculatedPosition =
+ GetVideoSinkRelativeFilePos( calculatedPosition, duration );
+ }
+
+ return calculatedPosition;
+ }
+
+// -----------------------------------------------------------------------------
+// Modifies file position if position has reached end before clip has ended.
+// File position is not going in sync with local video playback as playback
+// buffers media before starting playing.
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalMicroSeconds CMusEngClipVideoPlayer::GetVideoSinkRelativeFilePos(
+ const TTimeIntervalMicroSeconds& aActualPosition,
+ const TTimeIntervalMicroSeconds& aDuration )
+ {
+ MUS_LOG1( "mus: [ENGINE] PositionMicroSecondsL, pos before mod:%d",
+ aActualPosition.Int64() )
+
+ TTimeIntervalMicroSeconds tempCalculatedPosition( aActualPosition );
+
+ if ( iDelayFileEndingPos != 0 )
+ {
+ iDelayFileEndingPos = aDuration;
+ tempCalculatedPosition = iDelayFileEndingPos;
+ }
+ else
+ {
+ // FRWD can go to zero even if clip has not ended, do not modify
+ // time in such situation.
+ if ( aActualPosition == 0 &&
+ !HasClipEnded() &&
+ iFRWDStartTime.Int64() == 0 &&
+ !iRewindedToBeginning )
+ {
+ const TInt KMusDelayEndingModifier = 2;
+ iDelayFileEndingPos = aDuration.Int64() -
+ iBufferingPeriod.Int64() / KMusDelayEndingModifier;
+ tempCalculatedPosition = iDelayFileEndingPos;
+ if ( iPreviousPos > tempCalculatedPosition )
+ {
+ tempCalculatedPosition = iPreviousPos;
+ }
+ }
+ else
+ {
+ iDelayFileEndingPos = 0;
+ }
+
+ if ( iRewindedToBeginning && aActualPosition > 0 )
+ {
+ iRewindedToBeginning = EFalse;
+ }
+
+ if ( tempCalculatedPosition < 0 )
+ {
+ tempCalculatedPosition = 0;
+ }
+ }
+
+ iPreviousPos = tempCalculatedPosition;
+
+ return tempCalculatedPosition;
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musenginepluginentry.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "musengsessionmanager.h"
+#include <ecom/ecom.h>
+#include <ecom/implementationproxy.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+const TImplementationProxy KMusEnginePluginImplementationTable[] =
+ {
+ IMPLEMENTATION_PROXY_ENTRY( 0x20021341, CMusEngSessionManager::NewL )
+ };
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+ {
+ aTableCount = sizeof( KMusEnginePluginImplementationTable ) /
+ sizeof( TImplementationProxy );
+
+ return KMusEnginePluginImplementationTable;
+ }
--- a/mmsharing/mmshengine/src/musenglivesession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musenglivesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,15 +18,14 @@
// USER
#include "musenglivesession.h"
-#include "musengsessionobserver.h"
-#include "musenglivesessionobserver.h"
#include "musunittesting.h"
#include "musengmceutils.h"
#include "musenglogger.h"
-#include "mussettings.h"
-#include "musengorientationhandler.h"
+#include "mussessionproperties.h"
+#include "musenglivevideoplayer.h"
// SYSTEM
+#include <lcsessionobserver.h>
#include <mcemanager.h>
#include <mcecamerasource.h>
#include <mcevideostream.h>
@@ -38,632 +37,64 @@
#include <mceh263codec.h>
#include <mceavccodec.h>
-const TInt KMaxBrightness = 100;
-const TInt KMinBrightness = -100;
-const TInt KBrightnessStepSize = 10;
-// Names of AVC levels in string for config keys stored in CenRep
-_LIT8( KMusAvcBitrateLevel1, "AvcBrL1=" );
-_LIT8( KMusAvcBitrateLevel1b, "AvcBrL1b=" );
-_LIT8( KMusAvcBitrateLevel1_1, "AvcBrL1_1=" );
-_LIT8( KMusAvcBitrateLevel1_2, "AvcBrL1_2=" );
-_LIT8( KMusAvcBitrateLevel1_3, "AvcBrL1_3=" );
-_LIT8( KMusAvcBitrateLevel2, "AvcBrL2=" );
-
-_LIT8( KMusEncoderInfoTokenizer, ";" );
-
-//Number of big and small zoom steps on Zoom scale
-const TInt KZoomBigStepCount = 15;
-const TInt KZoomSmallStepCount = KZoomBigStepCount*2;
-const TInt KZoomStepMinSize = 1;
-
-const TInt64 KZoomFasterTime = 333333; // 1/3 second
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveSession* CMusEngLiveSession::NewL()
+ {
+ CMusEngLiveSession* self = new( ELeave )CMusEngLiveSession();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C CMusEngLiveSession* CMusEngLiveSession::NewL(
- const TDesC& aFileName,
- const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver,
- MMusEngLiveSessionObserver& aLiveSessionObserver,
- TUint aSipProfileId )
+CMusEngLiveSession::CMusEngLiveSession()
+ : CMusEngMceOutSession()
{
- CMusEngLiveSession* self = new( ELeave ) CMusEngLiveSession(
- aSessionObserver,
- aOutSessionObserver,
- aLiveSessionObserver,
- aRect,
- aFileName );
- CleanupStack::PushL( self );
- self->ConstructL( aSipProfileId );
- CleanupStack::Pop( self );
- return self;
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C CMusEngLiveSession* CMusEngLiveSession::NewL(
- const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver,
- MMusEngLiveSessionObserver& aLiveSessionObserver,
- TUint aSipProfileId )
+void CMusEngLiveSession::ConstructL()
{
- CMusEngLiveSession* self = new( ELeave ) CMusEngLiveSession(
- aSessionObserver,
- aOutSessionObserver,
- aLiveSessionObserver,
- aRect );
- CleanupStack::PushL( self );
- self->ConstructL( aSipProfileId );
- CleanupStack::Pop( self );
- return self;
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::ConstructL()" )
+
+ iCameraHandler.ReadCameraUsageKeyL();
+ CMusEngMceOutSession::ConstructL();
+
+ iLiveVideoPlayer =
+ CMusEngLiveVideoPlayer::NewL( *this, iCameraHandler, *this );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::ConstructL()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
CMusEngLiveSession::~CMusEngLiveSession()
{
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::~CMusEngLiveSession()" )
-
- delete iOrientationHandler;
-
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::~CMusEngLiveSession()" )
+ delete iLiveVideoPlayer;
MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::~CMusEngLiveSession()" )
}
-
// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CMusEngLiveSession::CurrentZoomL() const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::CurrentZoomL()" )
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- TInt currentZoom = camera->ZoomFactorL() + camera->DigitalZoomFactorL();
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngLiveSession::CurrentZoomL( %d )",
- currentZoom )
-
- return currentZoom;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::SetZoomL( TInt aNewZoomFactor )
- {
- MUS_LOG1( "mus: [ENGINE] -> CMusEngLiveSession::SetZoomL( %d )",
- aNewZoomFactor )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
- __ASSERT_ALWAYS( aNewZoomFactor <= MaxZoomL() &&
- aNewZoomFactor >= MinZoomL(),
- User::Leave( KErrArgument ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- if ( aNewZoomFactor < iCameraInfo.iMaxZoom )
- {
- MUS_LOG( "mus: [ENGINE] Optical zoom factor increased" )
- camera->SetZoomFactorL( aNewZoomFactor );
- }
-
- if ( aNewZoomFactor - iCameraInfo.iMaxZoom >= 0 )
- {
- camera->SetDigitalZoomFactorL( aNewZoomFactor - iCameraInfo.iMaxZoom );
- MUS_LOG1( "mus: [ENGINE] Digital zoom factor increased to %d",
- aNewZoomFactor - iCameraInfo.iMaxZoom )
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::SetZoomL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CMusEngLiveSession::MinZoomL() const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::MinZoomL()" )
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- // Although we do not need camera for return value, we have to have it in
- // order to have proper iCameraInfo
- MusEngMceUtils::GetCameraL( *iSession );
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngLiveSession::MinZoomL( %d )",
- iCameraInfo.iMinZoom )
-
- return iCameraInfo.iMinZoom;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CMusEngLiveSession::MaxZoomL() const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::MaxZoomL()" )
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- // Although we do not need camera for return value, we have to have it in
- // order to have proper iCameraInfo
- MusEngMceUtils::GetCameraL( *iSession );
-
- TInt maxZoom = iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom;
-
- MUS_LOG1( "mus: [ENGINE] Max optical zoom( %d )",
- iCameraInfo.iMaxZoom )
- MUS_LOG1( "mus: [ENGINE] Max digital zoom( %d )",
- iCameraInfo.iMaxDigitalZoom )
- MUS_LOG1( "mus: [ENGINE] <- CMusEngLiveSession::MaxZoomL( %d )",
- maxZoom )
-
- return maxZoom;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::ZoomInL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::ZoomInL()" )
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- // First try to increase optical zoom factor. If in maximum value, try to
- // increase digital zoom factor.
- TInt stepSize = ZoomStepSize( iZoomInTime );
- TInt zoomFactor = camera->ZoomFactorL();
- TInt zoomDigitalFactor = camera->DigitalZoomFactorL();
-
- //increate optical zoom factor
- if ( zoomFactor + stepSize <= iCameraInfo.iMaxZoom )
- {
- //optical zoom factor is enough
- camera->SetZoomFactorL( zoomFactor + stepSize );
- stepSize = 0;
- }
- else if (zoomFactor < iCameraInfo.iMaxZoom)
- {
- stepSize -= iCameraInfo.iMaxZoom - zoomFactor;
- camera->SetZoomFactorL( iCameraInfo.iMaxZoom );
- }
-
- //increate digital zoom factor
- if (stepSize > 0)
- {
- if ( zoomDigitalFactor + stepSize <= iCameraInfo.iMaxDigitalZoom )
- {
- camera->SetDigitalZoomFactorL( zoomDigitalFactor + stepSize );
- }
- else
- {
- camera->SetDigitalZoomFactorL( iCameraInfo.iMaxDigitalZoom );
- MUS_LOG( "mus: [ENGINE] CMusEngLiveSession::ZoomInL(): Optical \
- and digital zoom factors are in maximum value" )
- }
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::ZoomInL()" )
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::ZoomOutL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::ZoomOutL()" )
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- // First try to decrease digital zoom factor. If already zero, try to
- // decrease optical zoom factor.
- TInt stepSize = ZoomStepSize( iZoomOutTime );
- TInt zoomFactor = camera->ZoomFactorL();
- TInt zoomDigitalFactor = camera->DigitalZoomFactorL();
-
- //decreate digital zoom factor firstly
- if ( zoomDigitalFactor - stepSize >= 0 )
- {
- //digital zoom factor is enough
- camera->SetDigitalZoomFactorL( zoomDigitalFactor - stepSize );
- stepSize = 0;
- }
- else if ( zoomDigitalFactor > 0 )
- {
- stepSize -= zoomDigitalFactor;
- camera->SetDigitalZoomFactorL( 0 );
- MUS_LOG("mus: [ENGINE] Digigal Factor to zero")
- }
-
- //decreate optical zoom factor firstly
- if ( stepSize > 0 )
- {
- if ( zoomFactor - stepSize > iCameraInfo.iMinZoom )
- {
- camera->SetZoomFactorL( zoomFactor - stepSize );
- }
- else
- {
- MUS_LOG( "mus: [ENGINE] CMusEngLiveSession::ZoomOutL(): Optical and \
- digital zoom factors are in minimum value" )
- camera->SetZoomFactorL( iCameraInfo.iMinZoom );
- }
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::ZoomOutL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::ZoomDefaultL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::ZoomDefaultL()" )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- camera->SetZoomFactorL( iDefaultZoomFactor );
- camera->SetDigitalZoomFactorL( 0 );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::ZoomDefaultL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::SetBrightnessL( TInt aBrightness ) const
- {
- MUS_LOG1( "mus: [ENGINE] -> CMusEngLiveSession::SetBrightnessL( %d )",
- aBrightness )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
- camera->SetBrightnessL( aBrightness );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::SetBrightnessL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CMusEngLiveSession::CurrentBrightnessL() const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::CurrentBrightnessL()" )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
- TInt currentBrightness = camera->BrightnessL();
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngLiveSession::CurrentBrightnessL(): %d",
- currentBrightness )
-
- return currentBrightness;
- }
-
-
-// -----------------------------------------------------------------------------
-//
+// From MLcSession
// -----------------------------------------------------------------------------
//
-EXPORT_C TInt CMusEngLiveSession::MaxBrightnessL() const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::MaxBrightnessL()" )
-
- // maximum brightness is not in camera info, but a constant 100
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngLiveSession::MaxBrightnessL(): %d",
- KMaxBrightness )
-
- return KMaxBrightness;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CMusEngLiveSession::MinBrightnessL() const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::MinBrightnessL()" )
-
- // maximum brightness is not in camera info, but a constant -100
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngLiveSession::MinBrightnessL(): %d",
- KMinBrightness )
-
- return KMinBrightness;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::IncreaseBrightnessL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::IncreaseBrightnessL()" )
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- TInt newBrightness = camera->BrightnessL() + KBrightnessStepSize;
-
- if ( newBrightness < KMaxBrightness )
- {
- camera->SetBrightnessL( newBrightness );
- }
- else
- {
- camera->SetBrightnessL( KMaxBrightness );
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::IncreaseBrightnessL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::DecreaseBrightnessL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::DecreaseBrightnessL()" )
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- TInt newBrightness = camera->BrightnessL() - KBrightnessStepSize;
-
- if ( newBrightness > KMinBrightness )
- {
- camera->SetBrightnessL( newBrightness );
- }
- else
- {
- camera->SetBrightnessL( KMinBrightness );
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::DecreaseBrightnessL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::BrightnessDefaultL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::BrightnessDefaultL()" )
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- camera->SetBrightnessL( iDefaultBrightness );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::BrightnessDefaultL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::BrightnessAutoL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::BrightnessAutoL()" )
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- camera->SetBrightnessL( CCamera::EBrightnessAuto );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::BrightnessAutoL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::RecordL( TBool aRecord )
+MLcVideoPlayer* CMusEngLiveSession::LocalVideoPlayer()
{
- MUS_LOG1( "mus: [ENGINE] -> CMusEngLiveSession::RecordL( %d )", aRecord )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceMediaSink* fileSink = MusEngMceUtils::GetMediaSink( *iSession,
- KMceFileSink );
-
- __ASSERT_ALWAYS( fileSink, User::Leave( KErrNotReady ) );
-
- if( aRecord && !fileSink->IsEnabled() )
- {
- fileSink->EnableL();
- }
- else if ( !aRecord && fileSink->IsEnabled() )
- {
- fileSink->DisableL();
- }
- else
- {
- // NOP
- }
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngLiveSession::RecordL( %d )", aRecord )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CMusEngLiveSession::IsRecording()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::IsRecording()" )
-
- TBool isRecording( EFalse );
-
- CMceMediaSink* fileSink = MusEngMceUtils::GetMediaSink( *iSession,
- KMceFileSink );
- if ( fileSink )
- {
- isRecording = fileSink->IsEnabled();
- }
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngLiveSession::IsRecording(%d)",
- isRecording )
-
- return isRecording;
- }
-
-
-// -----------------------------------------------------------------------------
-// Enable camera if not already enabled
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::PlayL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::PlayL()" )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- if ( !camera->IsEnabled() )
- {
- camera->EnableL();
- }
- else
- {
- MUS_LOG( "mus: [ENGINE] Camera already enabled, ignore request" )
- }
-
- iOrientationHandler->UpdateL();
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::PlayL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-// Disable camera if not already disabled
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::PauseL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::PauseL()" )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
-
- if ( camera->IsEnabled() )
- {
- camera->DisableL();
- }
- else
- {
- MUS_LOG( "mus: [ENGINE] Camera already disabled, ignore request" )
- }
-
- iOrientationHandler->UpdateL();
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::PauseL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CMusEngLiveSession::IsPlayingL()
- {
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- return ( MusEngMceUtils::GetCameraL( *iSession )->IsEnabled() );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngLiveSession::EnableDisplayL( TBool aEnable )
-{
- CMusEngMceSession::EnableDisplayL( aEnable );
- iOrientationHandler->UpdateL();
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngLiveSession::RefreshOrientationL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::RefreshOrientationL()" )
-
- iOrientationHandler->RefreshOrientationL();
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::RefreshOrientationL()" )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngLiveSession::InitializeZoomStepSize()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::InitializeZoomStepSize()" )
-
- iBigZoomStep = ( iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom -
- iCameraInfo.iMinZoom ) / KZoomBigStepCount;
-
- if ( iBigZoomStep < KZoomStepMinSize )
- iBigZoomStep = KZoomStepMinSize;
-
- iSmallZoomStep = ( iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom -
- iCameraInfo.iMinZoom ) / KZoomSmallStepCount;
-
- if ( iSmallZoomStep < KZoomStepMinSize )
- iSmallZoomStep = KZoomStepMinSize;
-
- MUS_LOG2( "mus: [ENGINE] iSmallZoomStep = %d, iBigZoomStep = %d",
- iSmallZoomStep, iBigZoomStep )
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::InitializeZoomStepSize()" )
+ return iLiveVideoPlayer;
}
// -----------------------------------------------------------------------------
@@ -671,12 +102,14 @@
// -----------------------------------------------------------------------------
//
void CMusEngLiveSession::CompleteSessionStructureL(
- CMceStreamBundle& /*aLocalBundle*/ )
+ CMceStreamBundle& /*aLocalBundle*/ )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::CompleteSessionStructureL()" )
__ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+ iCameraHandler.SetSession( iSession );
+
// Create outgoing video stream
CMceVideoStream* videoStream = CMceVideoStream::NewLC();
@@ -686,10 +119,8 @@
CMceCameraSource* camera = CMceCameraSource::NewLC( *iManager );
camera->DisableL(); // Start session in pause mode.
- camera->GetCameraInfo( iCameraInfo );
- iDefaultZoomFactor = camera->ZoomFactorL();
- InitializeZoomStepSize();
+ iCameraHandler.InitializeL( *camera );
videoStream->SetSourceL( camera );
CleanupStack::Pop( camera );
@@ -698,11 +129,12 @@
CleanupStack::Pop( videoStream );
// Construct recording stream if needed
- if ( iRecordedFile != KNullDesC )
+ if ( iLiveVideoPlayer->LcFileName().Length() > 0 )
{
CMceVideoStream* streamForRecording = CMceVideoStream::NewLC();
- CMceFileSink* fileSink = CMceFileSink::NewLC( iRecordedFile );
+ CMceFileSink* fileSink =
+ CMceFileSink::NewLC( iLiveVideoPlayer->LcFileName() );
fileSink->DisableL(); // Start in not recording mode
streamForRecording->AddSinkL( fileSink );
CleanupStack::Pop( fileSink );
@@ -711,56 +143,22 @@
iSession->AddStreamL( streamForRecording );
CleanupStack::Pop( streamForRecording );
}
-
+
+ iLiveVideoPlayer->SetMceSession( iSession );
+
MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::CompleteSessionStructureL()" )
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngLiveSession::HandleSessionStateChanged(
- CMceSession& aSession,
- TInt aStatusCode,
- const TDesC8& aReasonPhrase )
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::HandleSessionStateChanged" )
-
- MUS_ENG_LOG_SESSION_STATE_AND_STATUS( aSession, aStatusCode, aReasonPhrase )
-
- if ( iSession &&
- iSession == &aSession &&
- aSession.State() == CMceSession::EEstablished &&
- iStoreEncoderConfigInfo )
- {
- iStoreEncoderConfigInfo = EFalse;
- TRAPD( error, StoreEncoderConfigInfoL() )
- if ( error != KErrNone && error != KErrNotFound )
- {
- // Only acceptable error is absence of repository entry,
- // otherwise we inform user about failed session.
- iSessionObserver.SessionFailed();
- }
- }
-
- CMusEngMceSession::HandleSessionStateChanged( aSession,
- aStatusCode,
- aReasonPhrase );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::HandleSessionStateChanged" )
- }
-
-
// -----------------------------------------------------------------------------
// Sets video codec attributes
// -----------------------------------------------------------------------------
//
-void CMusEngLiveSession::AdjustVideoCodecL( CMceVideoCodec& aVideoCodec )
+void CMusEngLiveSession::AdjustVideoCodecL( CMceVideoCodec& aVideoCodec,
+ TMceSourceType aSourceType )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::AdjustVideoCodecL()" )
- CMusEngMceOutSession::AdjustVideoCodecL( aVideoCodec );
+ CMusEngMceOutSession::AdjustVideoCodecL( aVideoCodec, aSourceType );
// Starting with 80Kbps will give better quality than starting with
// 64kbps.And if network behaves bad than anyhow we will drop down or
@@ -786,10 +184,7 @@
User::LeaveIfError( aVideoCodec.SetAllowedBitrates(
KMceAvcCodecProfileIdBaseline |
KMceAvcCodecProfileIopConstraintSet |
- KMceAvcBitrateLevel1b ) );
-
- SetCodecConfigKeyL( aVideoCodec );
- SetEncodingDeviceL( aVideoCodec );
+ KMceAvcBitrateLevel1b ) );
}
else
{
@@ -799,7 +194,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::AdjustVideoCodecL()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -813,7 +207,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::AdjustAudioCodecL()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -824,9 +217,7 @@
CMusEngMceSession::DoCodecSelectionL( aVideoStream );
- if ( iVideoCodecList &&
- iVideoCodecList->Length() > 0 &&
- iVideoCodecList->FindF( KMceSDPNameH264 ) == KErrNotFound )
+ if ( iVideoCodecList && !IsH264Supported() )
{
// We know that recipient doesn't support AVC, so we do not offer it
const RPointerArray<CMceVideoCodec>& codecs = aVideoStream.Codecs();
@@ -845,7 +236,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::DoCodecSelectionL()" )
}
-
// -----------------------------------------------------------------------------
//
@@ -864,14 +254,14 @@
MUS_ENG_LOG_STREAM_STATE( aStream )
CMceVideoStream* recordingStream =
- MusEngMceUtils::GetRecordingStream( *iSession );
+ MusEngMceUtils::GetRecordingStream( *iSession );
if ( recordingStream &&
recordingStream == &aStream &&
aStream.State() == CMceMediaStream::ENoResources &&
aSink.IsEnabled() == EFalse )
{
- iLiveSessionObserver.DiskFull();
+ InformObserverAboutSessionFailure( MLcSession::EDiskFull );
}
else
{
@@ -881,276 +271,3 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::StreamStateChanged( sink )" )
}
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngLiveSession::CMusEngLiveSession(
- MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver,
- MMusEngLiveSessionObserver& aLiveSessionObserver,
- const TRect& aRect,
- const TDesC& aRecordedFile )
- : CMusEngMceOutSession( aRect,
- aSessionObserver,
- aOutSessionObserver ),
- iLiveSessionObserver( aLiveSessionObserver ),
- iDefaultZoomFactor( -1 ),
- iDefaultBrightness( 0 ),
- iRecordedFile( aRecordedFile ),
- iZoomInTime(0),
- iZoomOutTime(0),
- iSmallZoomStep( KZoomStepMinSize ),
- iBigZoomStep( KZoomStepMinSize )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngLiveSession::ConstructL( TUint aSipProfileId )
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::ConstructL()" )
-
- CMusEngMceOutSession::ConstructL( aSipProfileId );
-
- iOrientationHandler = CMusEngOrientationHandler::NewL( *this, iLiveSessionObserver );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::ConstructL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngLiveSession::SetEncodingDeviceL( CMceVideoCodec& aVideoCodec )
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::SetEncodingDeviceL()" )
-
- // We try to read encoding device UID. If we do not succeed, we use default
-
- const TUid KDefaultEncodingDevice( TUid::Uid( 0x20001C13 ) );
- TUid encodingDevice( KDefaultEncodingDevice );
- TRAPD( error,
- encodingDevice = MultimediaSharingSettings::EncodingDeviceL() )
- __ASSERT_ALWAYS( error == KErrNone || error == KErrNotFound,
- User::Leave( error ) );
- aVideoCodec.SetPreferredEncodingDecodingDeviceL( encodingDevice );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::SetEncodingDeviceL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngLiveSession::SetCodecConfigKeyL( CMceVideoCodec& aVideoCodec )
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::SetCodecConfigKeyL()" )
-
- HBufC8* configKey( NULL );
-
- // We try to read config key. If we do not succeed, we prepare to
- // write keys to CenRep for the next time.
- TRAPD( error, configKey = ReadCodecConfigKeyL( aVideoCodec ) )
-
- if ( error == KErrNone )
- {
- // There is a repository for config keys
- if ( configKey )
- {
- // ...and key is found.
- CleanupStack::PushL( configKey );
- aVideoCodec.SetConfigKeyL( *configKey );
- CleanupStack::PopAndDestroy( configKey );
- }
- else
- {
- // ...but key is not found, so it must be written to CenRep when
- // available.
- iStoreEncoderConfigInfo = ETrue;
- }
- }
- else if ( error == KErrNotFound )
- {
- // There is no repository for config keys so there is no point
- // trying to write anything there. Session setup can still continue.
- MUS_LOG1( "mus: [ENGINE] No repository for config keys [%d]", error )
- }
- else
- {
- User::Leave( error );
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::SetCodecConfigKeyL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-HBufC8* CMusEngLiveSession::ReadCodecConfigKeyL(
- const CMceVideoCodec& aVideoCodec ) const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::ReadCodecConfigKeyL()" )
-
- HBufC8* key( NULL );
-
- HBufC8* encoderInfo = MultimediaSharingSettings::EncoderConfigInfoLC();
- __ASSERT_ALWAYS( encoderInfo, User::Leave( KErrNotFound ) );
-
- TPtrC8 keyId( ConfigKeyIdL( aVideoCodec ) );
-
- TInt tokenStartPosition( encoderInfo->FindC( keyId ) );
- if ( tokenStartPosition > KErrNotFound )
- {
- TInt tokenLength( encoderInfo->Mid( tokenStartPosition ).FindC(
- KMusEncoderInfoTokenizer ) );
- if ( tokenLength > KErrNotFound )
- {
- // Separate key from token by removing keyId
- TInt keyStartPosition = tokenStartPosition + keyId.Length();
- TInt keyLength = tokenLength - keyId.Length();
- TPtrC8 keyPtr = encoderInfo->Mid( keyStartPosition, keyLength );
- key = keyPtr.AllocL();
- }
- }
-
- CleanupStack::PopAndDestroy( encoderInfo );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::ReadCodecConfigKeyL()" )
-
- return key;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngLiveSession::StoreEncoderConfigInfoL() const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::StoreEncoderConfigInfoL()" )
-
- HBufC8* configInfoInCenRep = MultimediaSharingSettings::EncoderConfigInfoLC();
- __ASSERT_ALWAYS( configInfoInCenRep, User::Leave( KErrNotFound ) );
-
- TBuf8<NCentralRepositoryConstants::KMaxBinaryLength> keys;
- keys.Append( *configInfoInCenRep );
-
- CMceVideoStream* stream = MusEngMceUtils::GetVideoOutStreamL( *iSession );
- const RPointerArray<CMceVideoCodec>& codecs = stream->Codecs();
-
- for ( TInt codecIndex = 0; codecIndex < codecs.Count(); ++codecIndex )
- {
- if ( codecs[codecIndex]->SdpName().FindF( KMceSDPNameH264 ) >= 0 )
- {
- const TPtrC8 keyId = ConfigKeyIdL( *codecs[codecIndex] );
- HBufC8* configKey = codecs[codecIndex]->ConfigKeyL();
- CleanupStack::PushL( configKey );
-
- if ( configKey &&
- keys.FindF( keyId ) == KErrNotFound &&
- configInfoInCenRep->FindF( keyId ) == KErrNotFound )
- {
-
- if ( keys.Length() +
- keyId.Length() +
- configKey->Length() +
- KMusEncoderInfoTokenizer().Length() <
- NCentralRepositoryConstants::KMaxBinaryLength )
- {
- keys.Append( keyId );
- keys.Append( *configKey );
- keys.Append( KMusEncoderInfoTokenizer );
- }
- }
-
- CleanupStack::PopAndDestroy( configKey );
- }
- }
-
- MultimediaSharingSettings::SetEncoderConfigInfoL( keys );
-
- CleanupStack::PopAndDestroy( configInfoInCenRep );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::StoreEncoderConfigInfoL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-const TPtrC8 CMusEngLiveSession::ConfigKeyIdL(
- const CMceVideoCodec& aVideoCodec ) const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::ConfigKeyIdL()" )
-
- // Currently works only for AVC
- __ASSERT_ALWAYS( aVideoCodec.SdpName().FindF( KMceSDPNameH264 ) >= 0,
- User::Leave( KErrArgument ) );
-
- TPtrC8 configKeyTokenId;
-
- if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel1 )
- {
- configKeyTokenId.Set( KMusAvcBitrateLevel1() );
- }
- else if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel1b )
- {
- configKeyTokenId.Set( KMusAvcBitrateLevel1b() );
- }
- else if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel1_1 )
- {
- configKeyTokenId.Set( KMusAvcBitrateLevel1_1() );
- }
- else if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel1_2 )
- {
- configKeyTokenId.Set( KMusAvcBitrateLevel1_2() );
- }
- else if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel1_3 )
- {
- configKeyTokenId.Set( KMusAvcBitrateLevel1_3() );
- }
- else if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel2 )
- {
- configKeyTokenId.Set( KMusAvcBitrateLevel2() );
- }
- else
- {
- User::Leave( KErrNotFound );
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::ConfigKeyIdL()" )
-
- return configKeyTokenId;
- }
-
-
-// -----------------------------------------------------------------------------
-// Calculate the zoom step based time escaped
-// -----------------------------------------------------------------------------
-TInt CMusEngLiveSession::ZoomStepSize( TInt64& aTime )
- {
-// MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::ZoomStepSize()" )
- TTime now;
- now.HomeTime();
- TInt64 timeNow = now.Int64();
- TInt stepSize = ( ( timeNow - aTime ) <= KZoomFasterTime ) ? iBigZoomStep : iSmallZoomStep;
-
- aTime = now.Int64();
-
- MUS_LOG1( "mus: [ENGINE] stepSize = %d", stepSize );
-// MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::ZoomStepSize()" )
- return stepSize;
- }
-
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musenglivevideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,198 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musenglivevideoplayer.h"
+#include "musengcamerahandler.h"
+#include "musengmceutils.h"
+#include "musengdisplayhandler.h"
+
+// SYSTEM
+#include <mcesession.h>
+#include <mcefilesink.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveVideoPlayer* CMusEngLiveVideoPlayer::NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl )
+ {
+ return new( ELeave )CMusEngLiveVideoPlayer(
+ aDisplayHandler, aCameraHandler, aLcAudioControl );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveVideoPlayer::CMusEngLiveVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ TMusEngCameraHandler& aCameraHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngLocalVideoPlayer( aDisplayHandler, aLcAudioControl ),
+ iCameraHandler( aCameraHandler )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLiveVideoPlayer::~CMusEngLiveVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngLiveVideoPlayer::LcIsPlayingL()
+ {
+ return iCameraHandler.IsPlayingL();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::LcPlayL( TLcVideoPlayerSource /*aSource*/ )
+ {
+ iCameraHandler.PlayL();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::LcPauseL()
+ {
+ iCameraHandler.PauseL();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcCameraControl* CMusEngLiveVideoPlayer::LcCameraControl()
+ {
+ return &iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcDestinationFileControl* CMusEngLiveVideoPlayer::LcDestinationFileControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcZoomControl* CMusEngLiveVideoPlayer::LcZoomControl()
+ {
+ return &iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcBrightnessControl* CMusEngLiveVideoPlayer::LcBrightnessControl()
+ {
+ return &iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::SetLcFileNameL( const TFileName& aFileName )
+ {
+ iFileName = aFileName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+TFileName& CMusEngLiveVideoPlayer::LcFileName()
+ {
+ return iFileName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcDestinationFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveVideoPlayer::LcRecordL( TBool aRecord )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngLiveVideoPlayer::LcRecordL(( %d )",
+ aRecord )
+
+ __ASSERT_ALWAYS( iMceSession, User::Leave( KErrNotReady ) );
+
+ CMceMediaSink* fileSink =
+ MusEngMceUtils::GetMediaSink( *iMceSession, KMceFileSink );
+
+ __ASSERT_ALWAYS( fileSink, User::Leave( KErrNotReady ) );
+
+ if ( aRecord )
+ {
+ if ( !fileSink->IsEnabled() )
+ {
+ fileSink->EnableL();
+ }
+ }
+ else
+ {
+ if ( fileSink->IsEnabled() )
+ {
+ fileSink->DisableL();
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveVideoPlayer::LcRecordL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcDestinationFileControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngLiveVideoPlayer::LcIsRecording()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveVideoPlayer::LcIsRecording()" )
+
+ TBool isEnabled( EFalse );
+
+ CMceMediaSink* fileSink =
+ MusEngMceUtils::GetMediaSink( *iMceSession, KMceFileSink );
+ if ( fileSink )
+ {
+ isEnabled = fileSink->IsEnabled();
+ }
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngLiveVideoPlayer::LcIsRecording( %d )",
+ isEnabled )
+
+ return isEnabled;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musenglocalvideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musenglocalvideoplayer.h"
+#include "musengmceutils.h"
+#include "musengdisplayhandler.h"
+
+// SYSTEM
+#include <mcesession.h>
+#include <mcevideostream.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLocalVideoPlayer::CMusEngLocalVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngVideoPlayerBase( aDisplayHandler, aLcAudioControl )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngLocalVideoPlayer::~CMusEngLocalVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer::TLcVideoPlayerState
+CMusEngLocalVideoPlayer::LcVideoPlayerState() const
+ {
+ if ( !iMceSession )
+ {
+ return MLcVideoPlayer::EUnavailable;
+ }
+ CMceVideoStream* stream = NULL;
+ TRAPD( err, stream = MusEngMceUtils::GetVideoOutStreamL( *iMceSession ) )
+ TLcVideoPlayerState playerState = MLcVideoPlayer::EUnavailable;
+ if ( err == KErrNone && stream )
+ {
+ switch ( stream->State() )
+ {
+ case CMceMediaStream::EInitialized:
+ {
+ playerState = MLcVideoPlayer::EInit;
+ break;
+ }
+ case CMceMediaStream::EBuffering:
+ {
+ playerState = MLcVideoPlayer::EBuffering;
+ break;
+ }
+ case CMceMediaStream::EIdle:
+ case CMceMediaStream::EDisabled:
+ {
+ playerState = MLcVideoPlayer::EPaused;
+ break;
+ }
+ case CMceMediaStream::EStreaming:
+ {
+ playerState = MLcVideoPlayer::EPlaying;
+ break;
+ }
+ default: // Other MCE stream states: MLcVideoPlayer::EUnavailable
+ {
+ break;
+ }
+ }
+ }
+ return playerState;
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngLocalVideoPlayer::SetLcWindowRectL( TRect aRect )
+ {
+ iDisplayHandler.SetSecondaryRectL( aRect );
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngLocalVideoPlayer::LcWindowRect()
+ {
+ return iDisplayHandler.SecondaryRect();
+ }
--- a/mmsharing/mmshengine/src/musengmceoutsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengmceoutsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,16 +18,17 @@
// USER
#include "musengmceoutsession.h"
-#include "musengoutsessionobserver.h"
-#include "musenglivesessionobserver.h"
#include "mussettings.h"
#include "musengmceutils.h"
#include "musenguriparser.h"
#include "musenglogger.h"
-#include "mussesseioninformationapi.h"
#include "mussipprofilehandler.h"
+#include "mussessionproperties.h"
+#include "musresourceproperties.h"
// SYSTEM
+#include <lcsessionobserver.h>
+#include <lcuiprovider.h>
#include <mcestreambundle.h>
#include <mcemediastream.h>
#include <mceoutsession.h>
@@ -40,20 +41,14 @@
#include <mcedisplaysink.h>
#include <mcevideocodec.h>
#include <mceaudiocodec.h>
+#include <e32property.h>
#include <sipprofile.h>
#include <sipextensionheader.h>
#include <sipaddress.h>
#include <uri8.h>
-#include <e32property.h>
-
-
-const TInt KMusEngSipReasonCodeBadRequest = 400;
-const TInt KMusEngSipReasonCodeUnauthorized = 401;
-const TInt KMusEngSipReasonCodePaymentRequired = 402;
const TInt KMusEngSipReasonCodeRecipientNotFound = 404;
-const TInt KMusEngSipReasonCodeProxyAuthenticationRequired = 407;
const TInt KMusEngSipReasonCodeRequestTimeout = 408;
const TInt KMusEngSipReasonCodeUnsupportedMediaType = 415;
const TInt KMusEngSipReasonCodeUnsupportedUriScheme = 416;
@@ -64,9 +59,6 @@
const TInt KMusEngSipReasonCodeDecline = 603;
const TInt KMusEngSipReasonCodeNotAcceptable = 606;
// The next code represents unofficial sip error code
-// "478 Unresolveable Destination, we were not able to process the URI (478/TM)
-const TInt KMusEngSipReasonCode478NotAbleToProcessURI = 478;
-// The next code represents unofficial sip error code
// "479 Regretfuly, we were not able to process the URI (479/SL)
const TInt KMusEngSipReasonCode479NotAbleToProcessURI = 479;
@@ -74,7 +66,66 @@
const TUint8 KMusEngPayloadTypeAudio = 97;
const TUint8 KMusEngPayloadTypeVideoAvc = 98;
-using namespace NMusSessionInformationApi;
+const TInt KMusEngSipAddressMaxLength = 256;
+const TInt KMusEngSipAddressesMaxAmount = 8;
+_LIT( KMusEngCommaSymbol, "," );
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceOutSession::CMusEngMceOutSession()
+ : CMusEngMceSession(),
+ iTriedInvitations( 0 ),
+ iAsyncBrakeCallBack( AsyncBrakeCompleted, this ),
+ iRegistrationCallBack( RegistrationTimerExpired, this ),
+ iInvitationResponseCallBack( InvitationResponseTimerExpired, this )
+ {
+ iAsyncBrakeEntry.Set( iAsyncBrakeCallBack );
+ iRegistrationEntry.Set( iRegistrationCallBack );
+ iInvitationResponseEntry.Set( iInvitationResponseCallBack );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceOutSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::ConstructL()" )
+
+ CMusEngMceSession::ConstructL();
+ TInt sipProfileId;
+ TInt error = KErrNone;
+ error = ( RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KSipProfileId, sipProfileId ) );
+ if ( error != KErrNone )
+ {
+ sipProfileId = KErrNone;
+ error = KErrNone;
+ }
+ iSipProfileHandler->CreateProfileL( sipProfileId );
+ iVideoCodecList = NULL;
+ TBuf<RProperty::KMaxPropertySize> buffer;
+ error = ( RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KVideoCodecs, buffer ) );
+ if ( error == KErrNone && buffer.Length() )
+ {
+ iVideoCodecList =
+ CnvUtfConverter::ConvertFromUnicodeToUtf8L( buffer );
+ }
+
+ iDeltaTimer = CDeltaTimer::NewL( CActive::EPriorityStandard );
+
+ /* Read the contact name set by availability plugin */
+ error = RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ buffer );
+ iRemoteDisplayName = ( error == KErrNone && buffer.Length() )
+ ? buffer.AllocL() : KNullDesC().AllocL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::ConstructL()" )
+ }
// -----------------------------------------------------------------------------
//
@@ -83,105 +134,77 @@
CMusEngMceOutSession::~CMusEngMceOutSession()
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::~CMusEngMceOutSession()" )
-
+
+ if ( iAddressQueried && iRecipient )
+ {
+ TRAP_IGNORE( SaveContactL( *iRecipient ) )
+ }
+
+ delete iDeltaTimer;
delete iRecipient;
delete iVideoCodecList;
-
+ delete iRemoteSipAddressProposal;
+ delete iRemoteDisplayName;
MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::~CMusEngMceOutSession()" )
}
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceOutSession::EstablishLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::EstablishLcSessionL()")
+
+ iAddressQueried = EFalse;
+ if ( LcUiProvider() && !IsBackgroundStartup() )
+ {
+ LcUiProvider()->HandleForegroundStatus( ETrue );
+ }
+ TRAPD( err, DoInviteL() );
+
+ // If address is in wrong format, Manual Address Entry Dialog is displayed
+ if ( ( err == KErrArgument ) && DoSyncRetryL() )
+ {
+ err = KErrNone; // Doing retry
+ }
+
+ User::LeaveIfError( err );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::EstablishLcSessionL")
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceOutSession::TerminateLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::TerminateLcSessionL" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ if( iSession->State() == CMceSession::EOffering )
+ {
+ static_cast< CMceOutSession* >( iSession )->CancelL();
+ }
+ else
+ {
+ iSession->TerminateL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::TerminateLcSessionL" )
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngMceOutSession::InviteL( const TDesC& aRecipient )
+void CMusEngMceOutSession::AddDisplayL( CMceMediaStream& aStream )
{
- MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::InviteL()")
-
- if ( iSession )
- {
- MUS_ENG_LOG_SESSION_STATE( *iSession )
-
- if ( iSession->State() == CMceSession::EIdle ||
- iSession->State() == CMceSession::ETerminated )
- {
- // This is the case when last invite has ended up to an error,
- // last sharing has ended normally, or construction of the session
- // stucture has not been completed. Delete old session and try to
- // continue normally.
- delete iSession;
- iSession = NULL;
- MUS_LOG( "mus: [ENGINE] Existing session deleted")
- }
- else
- {
- // Session is already ongoing. Leave.
- User::Leave( KErrAlreadyExists );
- }
-
- }
-
- MUS_LOG_TDESC( "mus: [ENGINE] CMusEngMceOutSession::InviteL() recipient=",
- aRecipient )
-
- // delete possibly existing recipient
- delete iRecipient;
- iRecipient = NULL;
-
- TMusEngUriParser parser( aRecipient );
- parser.ParseUriL();
- iRecipient = parser.GetUri8L();
-
- CreateMceSessionStructureL();
-
- EstablishSessionL();
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::InviteL()")
+ MusEngMceUtils::AddDisplayL( aStream, *iManager, Rect() );
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceOutSession::CancelInviteL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::CancelInviteL()" )
-
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- MUS_ENG_LOG_SESSION_STATE( *iSession )
-
- if( iSession->State() == CMceSession::EOffering )
- {
- MUS_LOG( "mus: [ENGINE] CMceOutSession->CancelL()" )
- static_cast<CMceOutSession*>( iSession )->CancelL();
- }
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::CancelInviteL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceOutSession::SetSupportedVideoCodecListL(
- const TDesC& aVideoCodecs )
- {
- MUS_LOG_TDESC( "mus: [ENGINE] -> CMusEngMceOutSession::SetSupportedVideoCodecListL: ",
- aVideoCodecs )
-
- HBufC8* newVideoCodecList =
- CnvUtfConverter::ConvertFromUnicodeToUtf8L( aVideoCodecs );
- delete iVideoCodecList;
- iVideoCodecList = newVideoCodecList;
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::SetSupportedVideoCodecListL" )
- }
-
-
// -----------------------------------------------------------------------------
// Calls MCE function EstablishL with feature tag in Accept-Contact header.
// Adjusts stream and codec values.
@@ -214,18 +237,13 @@
CleanupStack::PopAndDestroy( headInText );
}
- /* Add the privacy header if cs call privacy setting is switched on */
- if ( iPrivate && iPrivateNumber )
- {
- AddPrivacyHeaderL( *headers );
- }
+
static_cast<CMceOutSession*>( iSession )->EstablishL( 0, headers );
CleanupStack::Pop( headers );
MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::EstablishSessionL()" )
}
-
// -----------------------------------------------------------------------------
// Handle MCE session termination. Called by MCE observer function of the
// base class.
@@ -238,41 +256,18 @@
switch ( aStatusCode )
{
-
- case KMusEngSipReasonCodeBadRequest :
- {
- iOutSessionObserver.SessionBadRequest();
- break;
- }
- case KMusEngSipReasonCodeUnauthorized :
- {
- iOutSessionObserver.SessionUnauthorized();
- break;
- }
- case KMusEngSipReasonCodePaymentRequired :
- {
- iOutSessionObserver.SessionPaymentRequired();
- break;
- }
- case KMusEngSipReasonCodeRecipientNotFound :
- //lint -fallthrough
- case KMusEngSipReasonCode478NotAbleToProcessURI:
+ case KMusEngSipReasonCodeRecipientNotFound :
//lint -fallthrough
case KMusEngSipReasonCode479NotAbleToProcessURI:
//lint -fallthrough
case KMusEngSipReasonCodeUnsupportedUriScheme :
{
- iOutSessionObserver.SessionRecipientNotFound();
- break;
- }
- case KMusEngSipReasonCodeProxyAuthenticationRequired :
- {
- iOutSessionObserver.SessionProxyAuthenticationRequired();
+ InitRecipientNotFoundHandling();
break;
}
case KMusEngSipReasonCodeRequestTimeout :
{
- iOutSessionObserver.SessionRequestTimeOut();
+ InformObserverAboutSessionFailure( MLcSession::ENoAnswer );
break;
}
case KMusEngSipReasonCodeUnsupportedMediaType :
@@ -281,7 +276,7 @@
//lint -fallthrough
case KMusEngSipReasonCodeNotAcceptable:
{
- iOutSessionObserver.SessionUnsupportedMediaType();
+ InformObserverAboutSessionFailure( MLcSession::ESessionRejected );
break;
}
case KMusEngSipReasonCodeBusyHere :
@@ -289,27 +284,30 @@
// Operator variant uses 486 to rejection instead of 603
if ( iOperatorVariant )
{
- iOutSessionObserver.SessionRejected();
+ InformObserverAboutSessionFailure(
+ MLcSession::ESessionRejected );
}
else
{
- iOutSessionObserver.SessionBusyHere();
+ InformObserverAboutSessionFailure(
+ MLcSession::ERecipientBusy );
}
break;
}
case KMusEngSipReasonCodeRequestCancelled :
{
- iOutSessionObserver.SessionRequestCancelled();
+ InformObserverAboutSessionFailure( MLcSession::ESessionCancelled );
break;
}
case KMusEngSipReasonCodeDecline :
{
- iOutSessionObserver.SessionRejected();
+ InformObserverAboutSessionFailure( MLcSession::ESessionRejected );
break;
}
case KMusEngSipReasonCodeTemporarilyNotAvailable :
{
- iOutSessionObserver.SessionTemporarilyNotAvailable();
+ InformObserverAboutSessionFailure(
+ MLcSession::ERecipientTemporarilyNotAvailable );
break;
}
default:
@@ -324,16 +322,16 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::HandleTermination()" )
}
-
// -----------------------------------------------------------------------------
// Sets payload type and calls overridden base class version
// -----------------------------------------------------------------------------
//
-void CMusEngMceOutSession::AdjustVideoCodecL( CMceVideoCodec& aVideoCodec )
+void CMusEngMceOutSession::AdjustVideoCodecL( CMceVideoCodec& aVideoCodec,
+ TMceSourceType aSourceType )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::AdjustVideoCodecL()" )
- CMusEngMceSession::AdjustVideoCodecL( aVideoCodec );
+ CMusEngMceSession::AdjustVideoCodecL( aVideoCodec, aSourceType );
if ( aVideoCodec.SdpName() == KMceSDPNameH263() ||
aVideoCodec.SdpName() == KMceSDPNameH2632000() )
@@ -354,7 +352,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::AdjustVideoCodecL()" )
}
-
// -----------------------------------------------------------------------------
// Sets payload type and calls overridden base class version
// -----------------------------------------------------------------------------
@@ -368,71 +365,64 @@
User::LeaveIfError( aAudioCodec.SetPayloadType( KMusEngPayloadTypeAudio ) );
MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::AdjustAudioCodecL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngMceOutSession::CMusEngMceOutSession(
- const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver,
- MMusEngOutSessionObserver& aOutSessionObserver )
- : CMusEngMceSession( aRect, aSessionObserver ),
- iOutSessionObserver( aOutSessionObserver )
- {
- }
-
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void CMusEngMceOutSession::ConstructL( TUint aSipProfileId )
+void CMusEngMceOutSession::ProfileRegistered()
{
- MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::ConstructL()" )
-
- CMusEngMceSession::ConstructL();
- iSipProfileHandler->CreateProfileL( aSipProfileId );
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::ProfileRegistered()" )
- // Check if feature specific behavior is expected
- iPrivate = ( MultimediaSharingSettings::PrivacySetting());
+ if ( iRegistrationPending )
+ {
+ iDeltaTimer->Remove( iRegistrationEntry );
+ iRegistrationPending = EFalse;
+
- NMusSessionInformationApi::TMusClirSetting clir;
- // Ignore RProperty::Get return value.Incase of error it should behave default.
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusClirSetting,
- reinterpret_cast<TInt&>( clir ) );
- iPrivateNumber = ( clir == NMusSessionInformationApi::ESendOwnNumber )? EFalse: ETrue;
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::ConstructL()" )
+ HBufC* resolvedRecipient = NULL;
+ TRAPD( error, resolvedRecipient = RemoteAddressL() )
+ if ( error != KErrNone )
+ {
+ InformObserverAboutSessionFailure( error );
+ }
+ else
+ {
+ TRAP( error, DoInviteL( *resolvedRecipient ) )
+ delete resolvedRecipient;
+ if ( error != KErrNone )
+ {
+ InformObserverAboutSessionFailure( error );
+ }
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::ProfileRegistered()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void CMusEngMceOutSession::CreateMceSessionStructureL()
+TBool CMusEngMceOutSession::IsH264Supported() const
+ {
+ return ( iVideoCodecList && iVideoCodecList->FindF( KMceSDPNameH264() ) >= 0 );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceOutSession::CreateMceSessionStructureL( TBool aForceSdpBandwidth )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::CreateMceSessionStructureL()" )
- CSIPProfile* profile = iSipProfileHandler->Profile();
+ CSIPProfile* profile = iSipProfileHandler->Profile();
__ASSERT_ALWAYS( profile != NULL, User::Leave( KErrNotReady ) );
// Create session
- if ( iPrivate && iPrivateNumber )
- {
- HBufC8* originator = KMusAnonymousHeader().AllocLC();
- iSession = CMceOutSession::NewL( *iManager, *profile, *iRecipient, originator );
- CleanupStack::Pop();
- }
- else
- {
- iSession = CMceOutSession::NewL( *iManager, *profile, *iRecipient );
- }
-
+ iSession = CMceOutSession::NewL( *iManager, *profile, *iRecipient );
// Remove QoS-lines if needed
if ( profile->Type().iSIPProfileClass ==
@@ -445,7 +435,7 @@
MUS_LOG( "mus: [ENGINE] Usage of preconditions denied" )
}
- SetSessionSdpLinesL( *iSession );
+ SetSessionSdpLinesL( *iSession, aForceSdpBandwidth );
// Create bundle for local streams
@@ -461,11 +451,11 @@
CMceVideoStream* videoOut = MusEngMceUtils::GetVideoOutStreamL( *iSession );
- SetMediaSdpLinesL( *videoOut );
+ SetMediaSdpLinesL( *videoOut, aForceSdpBandwidth );
streamForDisplay->SetSourceL( videoOut->Source() );
- MusEngMceUtils::AddDisplayL( *streamForDisplay, *iManager, Rect() );
+ AddDisplayL( *streamForDisplay );
iSession->AddStreamL( streamForDisplay );
CleanupStack::Pop( streamForDisplay );
@@ -485,22 +475,386 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::CreateMceSessionStructureL()" )
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceOutSession::DoInviteL( const TDesC& aRecipient )
+ {
+ MUS_LOG_TDESC( "mus: [ENGINE] -> CMusEngMceOutSession::DoInviteL(): ",
+ aRecipient )
+
+ HBufC* resolvedRecipient = NULL;
+ if ( aRecipient.Length() > 0 )
+ {
+ resolvedRecipient = aRecipient.AllocLC();
+ }
+ else
+ {
+ resolvedRecipient = ResolveRecipientLC();
+ }
+
+ // delete possibly existing recipient
+ delete iRecipient;
+ iRecipient = NULL;
+
+ TMusEngUriParser parser( *resolvedRecipient );
+ parser.ParseUriL();
+ iRecipient = parser.GetUri8L();
+
+ /* Set the display name to recipient address if displayname is empty */
+ if ( !iRemoteDisplayName || iRemoteDisplayName->Length() == 0 )
+ {
+ HBufC* tmp = parser.GetUri16L( ETrue );
+ delete iRemoteDisplayName;
+ iRemoteDisplayName = tmp;
+ }
+
+ CleanupStack::PopAndDestroy( resolvedRecipient );
+
+ if ( iSession )
+ {
+ MUS_ENG_LOG_SESSION_STATE( *iSession )
+
+ if ( iSession->State() == CMceSession::EIdle ||
+ iSession->State() == CMceSession::ETerminated )
+ {
+ // This is the case when last invite has ended up to an error,
+ // last sharing has ended normally, or construction of the session
+ // stucture has not been completed. Delete old session and try to
+ // continue normally.
+ delete iSession;
+ iSession = NULL;
+ MUS_LOG( "mus: [ENGINE] Existing session deleted")
+ }
+ else
+ {
+ // Session is already ongoing. Leave.
+ User::Leave( KErrAlreadyExists );
+ }
+ }
+
+ const TUint KMusEngOneMinuteTimeout = 60000000;
+ if ( iSipProfileHandler->IsRegistered() )
+ {
+ CreateMceSessionStructureL();
+ EstablishSessionL();
+ // Start one minute expiration timer
+ TTimeIntervalMicroSeconds32 interval( KMusEngOneMinuteTimeout );
+ iDeltaTimer->Remove( iInvitationResponseEntry );
+ iDeltaTimer->Queue( interval, iInvitationResponseEntry );
+ }
+ else
+ {
+ iRegistrationPending = ETrue;
+ // Start one minute expiration timer
+ TTimeIntervalMicroSeconds32 interval( KMusEngOneMinuteTimeout );
+ iDeltaTimer->Remove( iRegistrationEntry );
+ iDeltaTimer->Queue( interval, iRegistrationEntry );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::DoInviteL()" )
+ }
// -----------------------------------------------------------------------------
-// Add Privacy header if own phone number/id should not be sent to remote party
+//
+// -----------------------------------------------------------------------------
+//
+HBufC* CMusEngMceOutSession::ResolveRecipientLC()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::ResolveRecipientLC()" )
+
+ HBufC* resolvedRecipient = NULL;
+ TRAPD( err,
+ resolvedRecipient =
+ ReadDescPropertyL( NMusSessionApi::KRemoteSipAddress ) );
+ if ( err != KErrNone )
+ {
+ __ASSERT_ALWAYS( err != KErrNoMemory, User::Leave( KErrNoMemory ) );
+ resolvedRecipient = KNullDesC().AllocL();
+ }
+ CleanupStack::PushL( resolvedRecipient );
+
+ delete iRemoteSipAddressProposal;
+ iRemoteSipAddressProposal = NULL;
+ TRAP( err,
+ iRemoteSipAddressProposal =
+ ReadDescPropertyL( NMusSessionApi::KRemoteSipAddressProposal ) );
+ if ( err != KErrNone )
+ {
+ __ASSERT_ALWAYS( err != KErrNoMemory, User::Leave( KErrNoMemory ) );
+ iRemoteSipAddressProposal = KNullDesC().AllocL();
+ }
+
+ if ( resolvedRecipient->Length() > 0 )
+ {
+ if ( resolvedRecipient->Find( KMusEngCommaSymbol ) != KErrNotFound )
+ {
+ // Split the addresses using KMusCommaSymbol as a separator
+ CDesCArray* addresses =
+ new( ELeave )CDesCArrayFlat( KMusEngSipAddressesMaxAmount );
+ CleanupStack::PushL( addresses );
+ SplitL( *resolvedRecipient, KMusEngCommaSymbol, addresses );
+
+ // Show List Query Dialog
+ CleanupStack::Pop( addresses );
+ CleanupStack::PopAndDestroy( resolvedRecipient );
+ CleanupStack::PushL( addresses );
+ resolvedRecipient = HBufC::NewLC( KMusEngSipAddressMaxLength );
+ TPtr ptrRetryAddr( resolvedRecipient->Des() );
+ if ( !LcUiProviderL().SelectRecipient( *addresses, ptrRetryAddr ) )
+ {
+ // Address not selected from provided list
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop( resolvedRecipient );
+ CleanupStack::PopAndDestroy( addresses );
+ CleanupStack::PushL( resolvedRecipient );
+ }
+ }
+ else
+ {
+ __ASSERT_ALWAYS( ++iTriedInvitations < 2, User::Leave( KErrNotFound ) );
+
+ CleanupStack::PopAndDestroy( resolvedRecipient );
+ resolvedRecipient = NULL;
+ resolvedRecipient = HBufC::NewLC( KMusEngSipAddressMaxLength );
+ __ASSERT_ALWAYS(
+ iRemoteSipAddressProposal->Length() < KMusEngSipAddressMaxLength,
+ User::Leave( KErrOverflow ) );
+ resolvedRecipient->Des().Copy( *iRemoteSipAddressProposal );
+ TPtr ptrRetryAddr( resolvedRecipient->Des() );
+ InputRecipientL( ptrRetryAddr );
+ iAddressQueried = ETrue;
+ }
+
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::ResolveRecipientLC()" )
+
+ return resolvedRecipient;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceOutSession::AsyncBrakeCompleted( TAny* aPtr )
+ {
+ if ( aPtr )
+ {
+ reinterpret_cast<CMusEngMceOutSession*>( aPtr )->HandleRecipientNotFound();
+ }
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceOutSession::RegistrationTimerExpired( TAny* aPtr )
+ {
+ if ( aPtr )
+ {
+ CMusEngMceOutSession* session =
+ reinterpret_cast< CMusEngMceOutSession* >( aPtr );
+ session->InformObserverAboutSessionFailure( KErrGeneral );
+ }
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+//
// -----------------------------------------------------------------------------
//
-void CMusEngMceOutSession::AddPrivacyHeaderL( CDesC8Array& aHeaders )
+TInt CMusEngMceOutSession::InvitationResponseTimerExpired( TAny* aPtr )
+ {
+ if ( aPtr )
+ {
+ CMusEngMceOutSession* session =
+ reinterpret_cast< CMusEngMceOutSession* >( aPtr );
+ if ( !session->IgnoreErrorNote() )
+ {
+ session->InformObserverAboutSessionFailure( MLcSession::ENoAnswer );
+ }
+ }
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceOutSession::IgnoreErrorNote()
+ {
+ TBool ignore = ETrue;
+ if ( iSession &&
+ ( iSession->State() == CMceSession::EOffering ||
+ iSession->State() == CMceSession::EProceeding ) )
+ {
+ ignore = EFalse;
+ }
+ return ignore;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceOutSession::InitRecipientNotFoundHandling()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::InitRecipientNotFoundHandling()" )
+
+ iDeltaTimer->Remove( iAsyncBrakeEntry );
+ const TUint KMusEngAsyncBrakeTimeout = 1;
+ TTimeIntervalMicroSeconds32 interval( KMusEngAsyncBrakeTimeout );
+ iDeltaTimer->Queue( interval, iAsyncBrakeEntry );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::InitRecipientNotFoundHandling()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceOutSession::HandleRecipientNotFound()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::HandleRecipientNotFound()" )
+
+ TInt err( KErrNotFound );
+
+ TBool retry( EFalse );
+ TRAP( err, retry = DoSyncRetryL() );
+
+ if ( err != KErrNone || !retry )
+ {
+ InformObserverAboutSessionFailure( MLcSession::ERecipientNotFound );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::HandleRecipientNotFound()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceOutSession::DoSyncRetryL()
{
- MUS_LOG( "mus: [ENGINE] -> AddPrivacyHeaderL()" )
- _LIT8( KMusPrivacyHeaderValue, "id" );
- CSIPExtensionHeader* header = CSIPExtensionHeader::NewLC(
- KMusPrivacyHeader, KMusPrivacyHeaderValue );
- HBufC8* headInText = header->ToTextL();
- MUS_LOG_TDESC8( " mus: [ENGINE] Privacy header : ", headInText->Des() );
- CleanupStack::PopAndDestroy( header );
- CleanupStack::PushL( headInText );
- aHeaders.AppendL( *headInText );
- CleanupStack::PopAndDestroy( headInText );
- MUS_LOG( "mus: [ENGINE] <- AddPrivacyHeaderL()" )
+ __ASSERT_ALWAYS( iRemoteSipAddressProposal, User::Leave( KErrNotFound ) );
+ __ASSERT_ALWAYS(
+ iRemoteSipAddressProposal->Length() < KMusEngSipAddressMaxLength,
+ User::Leave( KErrOverflow ) );
+
+ TBool retry( EFalse );
+
+ if ( ++iTriedInvitations < 2 )
+ {
+ TBuf<KMusEngSipAddressMaxLength> retryAddress;
+ retryAddress.Copy( *iRemoteSipAddressProposal );
+ InputRecipientL( retryAddress );
+ DoInviteL( retryAddress );
+
+ retry = ETrue;
+ iAddressQueried = ETrue;
+ }
+ return retry;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceOutSession::SplitL( const TDesC& aDes,
+ const TDesC& aChar,
+ CDesCArray* aArray )
+ {
+ TInt charPos( 0 );
+ TPtrC ptr( aDes );
+ TBool found = EFalse;
+ while( ( charPos = ptr.Find( aChar ) ) > 0 )
+ {
+ found = ETrue;
+ TPtrC str = ptr.Left( charPos );
+ aArray->AppendL( str );
+ ptr.Set( ptr.Right( ptr.Length() - str.Length() - 1 ) );
+ }
+ if ( found && ptr.Length() > 0 )
+ {
+ aArray->AppendL( ptr );
+ }
}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+HBufC* CMusEngMceOutSession::ReadDescPropertyL( TUint aKey )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngMceOutSession::ReadDescPropertyL: aKey: [%d]",
+ aKey );
+
+ TBuf<RProperty::KMaxPropertySize> buffer;
+
+ User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid,
+ aKey,
+ buffer ) );
+ HBufC* desc = buffer.AllocL();
+ MUS_LOG_TDESC( "mus: [ENGINE] <- CMusEngMceOutSession::ReadDescPropertyL: val: ",
+ (*desc) );
+ return desc;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+HBufC* CMusEngMceOutSession::RemoteAddressL() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceOutSession::RemoteAddressL()" )
+
+ __ASSERT_ALWAYS( iRecipient, User::Leave( KErrNotReady ) );
+
+ HBufC* remoteAddr = HBufC::NewLC( iRecipient->Length() );
+ TPtr ptrRemoteAddr( remoteAddr->Des() );
+ User::LeaveIfError(
+ CnvUtfConverter::ConvertToUnicodeFromUtf8(
+ ptrRemoteAddr, *iRecipient ) );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceOutSession::RemoteAddressL()" )
+
+ CleanupStack::Pop( remoteAddr );
+ return remoteAddr;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession, Should return the displayname of the remote terminal
+// If found in phone book than contactname else user entered sip address
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceOutSession::RemoteDisplayName()
+ {
+ if ( !iRemoteDisplayName )
+ {
+ return KNullDesC;
+ }
+ return *iRemoteDisplayName;
+ }
+
+// -----------------------------------------------------------------------------
+// Query to the user for sip address of the remote party.
+// If the user entered a new sip address then reset the displayname
+// to user entered sip address.
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceOutSession::InputRecipientL( TDes& aRecipientAddress )
+ {
+ if ( !LcUiProviderL().InputRecipient( aRecipientAddress ) )
+ {
+ User::Leave( KErrCancel );
+ }
+ /* displayname is no longer valid since user entered a new sip address
+ * and displayname will be set to sip address when invitation sent.
+ */
+ delete iRemoteDisplayName;
+ iRemoteDisplayName = NULL;
+ }
+
+// End of file
--- a/mmsharing/mmshengine/src/musengmcesession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengmcesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -20,14 +20,18 @@
#include "mussettings.h"
#include "musengmcesession.h"
#include "musengsessiondurationtimer.h"
-#include "musengsessionobserver.h"
#include "musengmceutils.h"
#include "musuid.hrh"
#include "musenglogger.h"
-#include "musengclipsessionobserver.h"
#include "mussipprofilehandler.h"
+#include "mussessionproperties.h"
+#include "musenguriparser.h"
+#include "musengtelephoneutils.h"
// SYSTEM
+#include <lcsessionobserver.h>
+#include <lcuiprovider.h>
+#include <lcvideoplayer.h>
#include <mcedefs.h>
#include <mcemanager.h>
#include <mceinsession.h>
@@ -37,10 +41,16 @@
#include <mcedisplaysink.h>
#include <mcespeakersink.h>
#include <mcefilesource.h>
+#include <mcecamerasource.h>
#include <mcertpsource.h>
#include <mceaudiocodec.h>
-#include <mcevideocodec.h>
+#include <mceavccodec.h>
#include <AudioPreference.h>
+#include <e32property.h>
+#include <cntitem.h>
+#include <cntfield.h>
+#include <cntdef.h>
+#include <cntfldst.h>
const TInt KMusEngTimerInterval = 1000000; // 1 second
@@ -58,6 +68,64 @@
#define MUS_CODEC_ARR_CONST_CAST( codecArr ) \
( const_cast< RPointerArray< CMceVideoCodec >& >( codecArr ) )
+// Names of AVC levels in string for config keys stored in CenRep
+_LIT8( KMusAvcBitrateLevel1, "AvcBrL1=" );
+_LIT8( KMusAvcBitrateLevel1b, "AvcBrL1b=" );
+_LIT8( KMusAvcBitrateLevel1_1, "AvcBrL1_1=" );
+_LIT8( KMusAvcBitrateLevel1_2, "AvcBrL1_2=" );
+_LIT8( KMusAvcBitrateLevel1_3, "AvcBrL1_3=" );
+_LIT8( KMusAvcBitrateLevel2, "AvcBrL2=" );
+
+_LIT8( KMusEncoderInfoTokenizer, ";" );
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession::CMusEngMceSession()
+ : iSecondsFromLastRtcpReport ( 0 ),
+ // Although speaker is constructed as muted, it is not explicitly muted
+ iExplicitlyMuted( EFalse ),
+ iBackground( ETrue )
+ {
+ iMceManagerUid.iUid = KMusUiUid;
+ iBackground = IsBackgroundStartup();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::ConstructL()" )
+
+ iTelephoneUtils = CMusEngTelephoneUtils::NewL( *this );
+
+ // Creating new MCE Manager and set all needed observers to this class.
+ iManager = CMceManager::NewL( iMceManagerUid,
+ &iTransactionDataContainer );
+ iManager->SetSessionObserver( this );
+ iManager->SetInSessionObserver( this );
+ iManager->SetMediaObserver( this );
+ iManager->SetRtpObserver( this );
+
+ // Check if operator specific behavior is expected
+ iOperatorVariant = ( MultimediaSharingSettings::OperatorVariantSettingL() ==
+ MusSettingsKeys::EOperatorSpecific );
+
+ // Update timer initialization
+ iUpdateTimer = CMusEngSessionDurationTimer::NewL( *this );
+
+ iSipProfileHandler = CMusSipProfileHandler::NewL( *this );
+
+ iRemoteDetails = HBufC::NewL( RProperty::KMaxPropertySize );
+ iRemoteDetails->Des().Copy( KNullDesC );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::ConstructL()" )
+ }
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -65,107 +133,70 @@
CMusEngMceSession::~CMusEngMceSession()
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::~CMusEngMceSession()" )
+
delete iSipProfileHandler;
delete iSession;
delete iManager;
delete iUpdateTimer;
+ delete iTelephoneUtils;
+ delete iRemoteDetails;
+
+ RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KFastMode,
+ MusSettingsKeys::EFastModeDisabled );
+
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::~CMusEngMceSession()" )
}
-
// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::TerminateL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::TerminateL()" )
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
- iSession->TerminateL();
- MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::TerminateL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-// Returns estabilished session time. If not established return
-// value is < 0
+// From MMusEngDisplayHandler
// -----------------------------------------------------------------------------
//
-EXPORT_C TTimeIntervalSeconds CMusEngMceSession::GetSessionTime() const
+TRect CMusEngMceSession::Rect() const
{
- if ( iSession && iSession->State() == CMceSession::EEstablished )
- {
- TTime time;
- TTimeIntervalSeconds seconds;
- time.HomeTime();
-
- time.SecondsFrom( iStartTime, seconds );
-
- return seconds;
- }
-
- return TTimeIntervalSeconds( KErrNotReady );
-
+ MUS_LOG( "mus: [ENGINE] CMusEngMceSession::Rect()" )
+ return iRect;
}
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetRectL( const TRect& aRect )
+ {
+ MUS_LOG( "mus: [ENGINE] CMusEngSession::SetRectL()" )
+ iRect = aRect;
+ RectChangedL();
+ }
// -----------------------------------------------------------------------------
-//
+// From MMusEngDisplayHandler
// -----------------------------------------------------------------------------
//
-EXPORT_C TBool CMusEngMceSession::ConnectionActive() const
+void CMusEngMceSession::SetSecondaryRectL( const TRect& aSecondaryRect )
{
- if ( iSession )
- {
- return iSession->ConnectionActive();
- }
- return EFalse;
+ MUS_LOG( "mus: [ENGINE] CMusEngMceSession::SetSecondaryRectL()" )
+
+ // Same rect is set by primary and secondary setters
+ iRect = aSecondaryRect;
+ RectChangedL();
}
-
// -----------------------------------------------------------------------------
-//
+// From MMusEngDisplayHandler
// -----------------------------------------------------------------------------
//
-EXPORT_C TBool CMusEngMceSession::ContainsAudioL()
+TRect CMusEngMceSession::SecondaryRect() const
{
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- for ( TInt i = 0; i < iSession->Streams().Count(); ++i )
- {
- if ( iSession->Streams()[i]->Type() == KMceAudio )
- {
- return ETrue;
- }
- }
+ MUS_LOG( "mus: [ENGINE] CMusEngMceSession::SecondaryRect()" )
+ return iRect;
+ }
- return EFalse;
- }
-
-
// -----------------------------------------------------------------------------
-//
+// From MMusEngDisplayHandler
// -----------------------------------------------------------------------------
//
-EXPORT_C TBool CMusEngMceSession::IsMutedL()
- {
- // Precondition checked in ContainsAudioL
-
- if ( ContainsAudioL() && !iExplicitlyMuted )
- {
- return EFalse;
- }
-
- return ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CMusEngMceSession::TDisplayOrientation
- CMusEngMceSession::OrientationL()
+MMusEngDisplayHandler::TDisplayOrientation CMusEngMceSession::OrientationL()
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::RotationL()" )
@@ -198,8 +229,7 @@
//
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngMceSession::SetOrientationL(
- TDisplayOrientation aOrientation )
+void CMusEngMceSession::SetOrientationL( TDisplayOrientation aOrientation )
{
MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::SetOrientationL() %d",
aOrientation )
@@ -220,55 +250,11 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::SetOrientationL()" )
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::VolumeUpL()
- {
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMusEngSession::VolumeUpL();
-
- SetSpeakerVolumeL( VolumeL() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::VolumeDownL()
- {
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMusEngSession::VolumeDownL();
-
- SetSpeakerVolumeL( VolumeL() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::SetVolumeL( TInt aVal )
- {
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- CMusEngSession::SetVolumeL( aVal );
-
- SetSpeakerVolumeL( VolumeL() );
- }
-
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngMceSession::EnableDisplayL( TBool aEnable )
+void CMusEngMceSession::EnableDisplayL( TBool aEnable )
{
MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::EnableDisplay() %d",
aEnable )
@@ -325,112 +311,418 @@
//
// -----------------------------------------------------------------------------
//
-EXPORT_C TBool CMusEngMceSession::IsDisplayEnabledL()
+TBool CMusEngMceSession::IsDisplayEnabled()
+ {
+ TBool enabled( EFalse );
+ if ( iSession )
+ {
+ CMceDisplaySink* display =
+ MusEngMceUtils::GetDisplay( *iSession, ETrue );
+ if ( display )
+ {
+ enabled = display->IsEnabled();
+ }
+ }
+ return enabled;
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngDisplayHandler
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsDisplayActive()
+ {
+ return ( IsDisplayEnabled() );
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusEngAudioRoutingObserver
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::AudioRoutingChanged()
+ {
+ InformObserverAboutPlayerUpdate( LocalVideoPlayer() );
+ InformObserverAboutPlayerUpdate( RemoteVideoPlayer() );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcSession::TLcSessionState CMusEngMceSession::LcSessionState() const
+ {
+ TLcSessionState lcSessionState = MLcSession::EUninitialized;
+
+ if ( iSession )
+ {
+ switch( iSession->State() )
+ {
+ case CMceSession::EIdle:
+ {
+ lcSessionState = MLcSession::EInitialized;
+ break;
+ }
+ case CMceSession::EIncoming:
+ case CMceSession::EProceeding:
+ case CMceSession::EReserving:
+ {
+ lcSessionState = MLcSession::EReceived;
+ break;
+ }
+
+ case CMceSession::EOffering:
+ case CMceSession::EAnswering:
+ {
+ lcSessionState = MLcSession::EOpening;
+ break;
+ }
+ case CMceSession::EEstablished:
+ {
+ lcSessionState = MLcSession::EOpen;
+ break;
+ }
+ case CMceSession::ECancelling:
+ case CMceSession::ETerminating:
+ {
+ lcSessionState = MLcSession::EClosing;
+ break;
+ }
+ case CMceSession::ETerminated:
+ {
+ lcSessionState = MLcSession::EClosed;
+ break;
+ }
+ default:
+ {
+ lcSessionState = MLcSession::EUninitialized;
+ break;
+ }
+ }
+ }
+ return lcSessionState;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcSessionObserver( MLcSessionObserver* aObserver )
+ {
+ iLcSessionObserver = aObserver;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcUiProvider( MLcUiProvider* aUiProvider )
+ {
+ iLcUiProvider = aUiProvider;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngMceSession::RemoteVideoPlayer()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngMceSession::LocalVideoPlayer()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::LocalDisplayName()
+ {
+ return KNullDesC;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::RemoteDisplayName()
+ {
+ return KNullDesC;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::SetParameter( TInt /*aId*/, TInt /*aValue*/ )
+ {
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::ParameterValue( TInt /*aId*/ )
+ {
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsBackgroundStartup()
+ {
+ TInt fastMode;
+ TInt error = RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KFastMode,
+ fastMode );
+
+ return ( error == KErrNone &&
+ iBackground &&
+ fastMode == MusSettingsKeys::EFastModeOn );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::SetForegroundStatus( TBool aIsForeground )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::SetForegroundStatus() %d",
+ aIsForeground )
+
+ if ( aIsForeground )
+ {
+ // Only clear the bg info, do not ever enable it again
+ iBackground = EFalse;
+ }
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::RemoteDetails()
+ {
+ // Don't care about error, empty value will be used in that case
+ TPtr ptrDetails( iRemoteDetails->Des() );
+ RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KTelNumber,
+ ptrDetails );
+ return *iRemoteDetails;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::UpdateLcSessionL()
{
__ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
- if ( iSession->State() == CMceSession::ETerminated ||
- iSession->State() == CMceSession::EIdle )
+
+ //In Mus engine, every update of player has immediate effect. Thus, this method
+ //is empty.
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::SendDialTone( TChar /*aKey*/)
+ {
+ // Handle Key once implemented
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcAudioMutedL()
+ {
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ TBool containsAudio( EFalse );
+ for ( TInt i = 0; i < iSession->Streams().Count(); ++i )
{
- return EFalse;
+ if ( iSession->Streams()[i]->Type() == KMceAudio )
+ {
+ containsAudio = ETrue;
+ }
+ }
+
+ if ( containsAudio && !iExplicitlyMuted )
+ {
+ return EFalse;
}
- CMceDisplaySink* display = MusEngMceUtils::GetDisplayL( *iSession );
- return display->IsEnabled();
+
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::MuteLcAudioL( TBool aMute )
+ {
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ DoMuteSpeakerL( aMute );
+ iExplicitlyMuted = aMute;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcMicMutedL()
+ {
+ return iTelephoneUtils->IsMicMutedL();
}
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::MuteLcMicL( TBool aMute )
+ {
+ iTelephoneUtils->MuteMicL( aMute );
+ }
// -----------------------------------------------------------------------------
-// Mutes playback of sended audio streams. Audio data is still streamed.
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsEnablingLcLoudspeakerAllowed()
+ {
+ return iTelephoneUtils->AudioRoutingCanBeChanged();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngMceSession::MuteL()
+void CMusEngMceSession::EnableLcLoudspeakerL( TBool aEnabled )
+ {
+ TRAPD( error, iTelephoneUtils->LoudspeakerL( aEnabled ) )
+
+ if ( error != KErrNone )
+ {
+ // This is writed for emulator use
+ if ( error != KErrNotSupported )
+ {
+ MUS_LOG1( "mus: [ENGINE] CMusEngSession::EnableLoudspeakerL() Leave: #%d",
+ error )
+ User::Leave( error );
+ }
+ // Not leave in emulator if KErrNotSupported
+ #if (!defined (__WINS__) && !defined(__WINSCW__))
+ User::Leave( error );
+ #endif
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcLoudspeakerEnabled()
{
- MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::Mute()" )
+ return iTelephoneUtils->IsLoudSpeakerEnabled();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::LcVolumeL()
+ {
+ return iTelephoneUtils->GetVolumeL();
+ }
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcVolumeL( TInt aValue )
+ {
+ iTelephoneUtils->SetVolumeL( aValue );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::IncreaseLcVolumeL()
+ {
__ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
- DoMuteSpeakerL( ETrue );
-
- // Mark speaker as explicitly muted instead of muted because of disabling
- // bundled display
- iExplicitlyMuted = ETrue;
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::Mute()" )
+ TInt currentVolume = iTelephoneUtils->GetVolumeL();
+ iTelephoneUtils->SetVolumeL( currentVolume + 1 );
+ SetSpeakerVolumeL( LcVolumeL() );
}
-
// -----------------------------------------------------------------------------
-// Unmutes playback of sended audio streams.
+// From MLcAudioControl
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngMceSession::UnmuteL()
+void CMusEngMceSession::DecreaseLcVolumeL()
{
- MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::Unmute()" )
-
__ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
- DoMuteSpeakerL( EFalse );
-
- // Mark speaker as explicitly unmuted instead of unmuted because of
- // enabling bundled display
- iExplicitlyMuted = EFalse;
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::Unmute()" )
+ TInt currentVolume = iTelephoneUtils->GetVolumeL();
+ iTelephoneUtils->SetVolumeL( currentVolume - 1 );
+ SetSpeakerVolumeL( LcVolumeL() );
}
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void CMusEngMceSession::RefreshOrientationL()
-{
- MUS_LOG( "mus: [ENGINE] <-> CMusEngMceSession::RefreshOrientationL()" )
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngMceSession::CMusEngMceSession( const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver )
- : CMusEngSession( aRect ),
- iSessionObserver( aSessionObserver ),
- iSecondsFromLastRtcpReport ( 0 ),
- // Although speaker is constructed as muted, it is not explicitly muted
- iExplicitlyMuted( EFalse )
+MLcSessionObserver* CMusEngMceSession::LcSessionObserver()
{
+ return iLcSessionObserver;
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void CMusEngMceSession::ConstructL()
+MLcUiProvider* CMusEngMceSession::LcUiProvider()
{
- MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::ConstructL()" )
- CMusEngSession::ConstructL(); // Base class ConstructL -first
-
- // Creating new MCE Manager and set all needed observers to this class.
- iManager = CMceManager::NewL( TUid::Uid( KMusUiUid ),
- &iTransactionDataContainer );
-
- iManager->SetSessionObserver( this );
- iManager->SetInSessionObserver( this );
- iManager->SetMediaObserver( this );
- iManager->SetRtpObserver( this );
-
- // Check if operator specific behavior is expected
- iOperatorVariant = ( MultimediaSharingSettings::OperatorVariantSettingL() ==
- MusSettingsKeys::EOperatorSpecific );
-
- // Update timer initialization
- iUpdateTimer = CMusEngSessionDurationTimer::NewL( *this );
-
- iSipProfileHandler = CMusSipProfileHandler::NewL( *this );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::ConstructL()" )
+ return iLcUiProvider;
}
+// -----------------------------------------------------------------------------
+// Returns estabilished session time. If not established return
+// value is < 0
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalSeconds CMusEngMceSession::GetSessionTime() const
+ {
+ if ( iSession && iSession->State() == CMceSession::EEstablished )
+ {
+ TTime time;
+ TTimeIntervalSeconds seconds;
+ time.HomeTime();
+
+ time.SecondsFrom( iStartTime, seconds );
+
+ return seconds;
+ }
+
+ return TTimeIntervalSeconds( KErrNotReady );
+ }
// -----------------------------------------------------------------------------
//
@@ -451,15 +743,160 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::RectChangedL()" )
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutSessionStateChange()
+ {
+ if ( iLcSessionObserver )
+ {
+ iLcSessionObserver->StateChanged( *this );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutSessionUpdate()
+ {
+ if ( iLcSessionObserver )
+ {
+ iLcSessionObserver->Updated( *this );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutSessionFailure( TInt aReason )
+ {
+ if ( iLcSessionObserver )
+ {
+ iLcSessionObserver->Failed( *this, aReason );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutPlayerStateChange(
+ MLcVideoPlayer* aPlayer )
+ {
+ if ( iLcSessionObserver && aPlayer )
+ {
+ iLcSessionObserver->StateChanged( *aPlayer );
+ }
+
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformUiProviderAboutReceivingStart()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::InformUiProviderAboutReceivingStart()" )
+ if ( iBackground && iLcUiProvider )
+ {
+ MUS_LOG( "mus: [ENGINE] receiving started in BG mode, switching to FG" )
+ iLcUiProvider->HandleForegroundStatus( ETrue );
+ }
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::InformUiProviderAboutReceivingStart()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutPlayerUpdate(
+ MLcVideoPlayer* aPlayer )
+ {
+ if ( iLcSessionObserver && aPlayer )
+ {
+ iLcSessionObserver->Updated( *aPlayer );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::InformObserverAboutPlayerFailure(
+ MLcVideoPlayer* aPlayer,
+ TInt aReason )
+ {
+ if ( iLcSessionObserver && aPlayer )
+ {
+ iLcSessionObserver->Failed( *aPlayer, aReason );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MLcUiProvider& CMusEngMceSession::LcUiProviderL()
+ {
+ __ASSERT_ALWAYS( iLcUiProvider, User::Leave( KErrNotReady ) );
+ return *iLcUiProvider;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::AddSdpBandwidthAttributesL( CDesC8Array& aSdpLinesArray,
+ TInt aBandwidthAs )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::AddSdpBandwidthAttributesL()" )
+ const TInt KMusNumberMaxLength = 10;
+ HBufC8* bandwidth = HBufC8::NewLC(
+ KMusEngSessionSdpLineTiasLine().Length() + KMusNumberMaxLength );
+
+ bandwidth->Des().Copy( KMusEngSessionSdpLineBandwidthLine() );
+ bandwidth->Des().AppendNum( aBandwidthAs );
+ bandwidth->Des().Append( KMusEngNewLine() );
+ aSdpLinesArray.AppendL( *bandwidth );
+
+ bandwidth->Des().Copy( KMusEngSessionSdpLineTiasLine() );
+ bandwidth->Des().AppendNum( aBandwidthAs * KMusTiasMultiplier );
+ bandwidth->Des().Append( KMusEngNewLine() );
+ aSdpLinesArray.AppendL( *bandwidth );
+
+ CleanupStack::PopAndDestroy( bandwidth );
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::AddSdpBandwidthAttributesL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsBandwidthAttributeSet( MDesC8Array* aSdpLinesArray )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::IsBandwidthAttributeSet()" )
+ TBool ret =
+ ContainsText( aSdpLinesArray, KMusEngSessionSdpLineTiasLine() ) ||
+ ContainsText( aSdpLinesArray, KMusEngSessionSdpLineBandwidthLine() );
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngMceSession::IsBandwidthAttributeSet(): %d",
+ ret )
+ return ret;
+ }
// -----------------------------------------------------------------------------
// Setting session level sdp lines. Bandwith attribute is always used in
-// operator variant mode and at receiver side (using force).
-// However, bandwidth attribute is preferred to be used at media level
-// (see SetMediaSdpLinesL method). It is set to session level only if other
-// side is using also session level bandwidth. Media level preference exists
-// because some other manufacturer's videosharing does not understand session
-// level bandwidth attribute.
+// operator variant mode and at receiver side (using force) when TIAS
+// usage is disabled. However, bandwidth attribute is preferred to be used
+// at media level (see SetMediaSdpLinesL method). It is set to session level
+// only if other side is using also session level bandwidth. Media level
+// preference exists because some other manufacturer's videosharing does not
+// understand session level bandwidth attribute.
+// In non-operator variant mode and when TIAS usage is enabled, both AS and
+// TIAS are added to session level only if the other side is using session
+// level bandwidth.
// -----------------------------------------------------------------------------
//
void CMusEngMceSession::SetSessionSdpLinesL(
@@ -472,8 +909,17 @@
CleanupDeletePushL( oldSessionSdpLines );
TBool bandwidthAtSessionLevel( ContainsText( oldSessionSdpLines,
KMusEngSessionSdpLineBandwidthLine() ) );
+ TBool tiasAtSessionLevel( ContainsText( oldSessionSdpLines,
+ KMusEngSessionSdpLineTiasLine() ) );
CleanupStack::PopAndDestroy( oldSessionSdpLines );
-
+
+ TInt bandwidthAs = 0;
+ TRAPD( err, bandwidthAs =
+ MultimediaSharingSettings::VideoBandwidthSettingL() );
+ __ASSERT_ALWAYS( err == KErrNone || err == KErrNotFound,
+ User::Leave( err ) );
+ TBool useTias = ( bandwidthAs > 0 );
+
CDesC8Array* newSessionSDPLines =
new ( ELeave ) CDesC8ArrayFlat( KMusEngArrayGranularity3 );
CleanupStack::PushL( newSessionSDPLines );
@@ -485,15 +931,22 @@
}
else
{
- newSessionSDPLines->AppendL( KMusEngSessionSdpLineXApplication() );
+ newSessionSDPLines->AppendL( KMusEngSessionSdpLineXApplication() );
}
-
- if ( bandwidthAtSessionLevel && ( iOperatorVariant || aForceBandwidthLine ) )
- {
- MUS_LOG( "mus: [ENGINE] setting bandwidth to session level" )
+
+ if ( bandwidthAtSessionLevel && ( iOperatorVariant ||
+ ( aForceBandwidthLine && !useTias ) ) )
+ {
+ MUS_LOG( "mus: [ENGINE] setting bandwidth to session level" )
newSessionSDPLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
- }
-
+ }
+ else if ( !iOperatorVariant && useTias && aForceBandwidthLine &&
+ ( bandwidthAtSessionLevel || tiasAtSessionLevel ) )
+ {
+ MUS_LOG( "mus: [ENGINE] setting b=AS and b=TIAS to session level" )
+ AddSdpBandwidthAttributesL( *newSessionSDPLines, bandwidthAs );
+ }
+
aSession.SetSessionSDPLinesL( newSessionSDPLines );
CleanupStack::Pop( newSessionSDPLines );
@@ -501,9 +954,14 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::SetSessionSdpLinesL()" )
}
+
// -----------------------------------------------------------------------------
-// Setting media level sdp lines. Bandwidth is not set to media level if
-// it is used already at session level.
+// Setting media level sdp lines. In operator variant mode or when TIAS usage
+// is disabled bandwidth is not set to media level if it is used already at
+// session level. In non operator variant and TIAS enabled case both AS and
+// TIAS attributes are set to media level if: 1)it is an outcoming sessions
+// or 2) incoming session had bandwidth attributes on media level or didn't
+// have bandwidth attributes at all
// -----------------------------------------------------------------------------
//
void CMusEngMceSession::SetMediaSdpLinesL(
@@ -516,22 +974,49 @@
CleanupDeletePushL( sessionSdpLines );
TBool bandwidthAtSessionLevel( ContainsText( sessionSdpLines,
KMusEngSessionSdpLineBandwidthLine() ) );
- CleanupStack::PopAndDestroy( sessionSdpLines );
-
- if ( !bandwidthAtSessionLevel && ( iOperatorVariant || aForceBandwidthLine ) )
+
+ TInt bandwidthAs = 0;
+ TRAPD( error, bandwidthAs =
+ MultimediaSharingSettings::VideoBandwidthSettingL() );
+ __ASSERT_ALWAYS( error == KErrNone || error == KErrNotFound,
+ User::Leave( error ) );
+ TBool useTias = ( bandwidthAs > 0 );
+ TBool tiasOrAsAtSessionLevel = EFalse;
+ TBool tiasOrAsAtMediaLevel = EFalse;
+ if ( useTias )
{
- MUS_LOG( "mus: [ENGINE] setting bandwidth to media level" )
-
- //Add media attribute to sdp
- const TInt KMusMediaSdpLinesGranularity = 1;
- CDesC8Array* headers =
- new ( ELeave ) CDesC8ArrayFlat( KMusMediaSdpLinesGranularity );
- CleanupStack::PushL( headers );
- headers->AppendL( KMusEngSessionSdpLineBandwidthField() );
- aStream.SetMediaAttributeLinesL( headers );
- CleanupStack::Pop( headers );
+ tiasOrAsAtSessionLevel = IsBandwidthAttributeSet( sessionSdpLines );
+ MDesC8Array* mediaSdpLines = aStream.MediaAttributeLinesL();
+ tiasOrAsAtMediaLevel = IsBandwidthAttributeSet( mediaSdpLines );
+ delete mediaSdpLines;
}
-
+
+ CleanupStack::PopAndDestroy( sessionSdpLines );
+
+ TBool setTiasAtMediaLevel = ( tiasOrAsAtMediaLevel ||
+ ( aForceBandwidthLine &&
+ !tiasOrAsAtSessionLevel ) );
+
+ const TInt KMusMediaSdpLinesGranularity = 2;
+ CDesC8Array* headers =
+ new ( ELeave ) CDesC8ArrayFlat( KMusMediaSdpLinesGranularity );
+ CleanupStack::PushL( headers );
+
+ if ( !bandwidthAtSessionLevel && ( iOperatorVariant ||
+ ( aForceBandwidthLine && !useTias ) ) )
+ {
+ MUS_LOG( "mus: [ENGINE] setting bandwidth to media level" )
+ headers->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ }
+ else if ( !iOperatorVariant && useTias && setTiasAtMediaLevel )
+ {
+ MUS_LOG( "mus: [ENGINE] setting b=AS and b=TIAS to media level" )
+ AddSdpBandwidthAttributesL( *headers, bandwidthAs );
+ }
+
+ aStream.SetMediaAttributeLinesL( headers );
+ CleanupStack::Pop( headers );
+
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::SetMediaSdpLinesL()" )
}
@@ -550,31 +1035,18 @@
{
CMceSpeakerSink* speaker =
MusEngMceUtils::GetSpeaker( *( iSession->Streams()[i] ) );
-
+
if ( speaker &&
- aNewVolume >= KMusEngMinVolume &&
- aNewVolume <= KMusEngMaxVolume )
+ aNewVolume >= 1 &&
+ aNewVolume <= speaker->MaxVolumeL() )
{
- // MCE might have different scale for volume than MUS
- // so adjust MUS volume to MCE scale before setting.
- TInt maxVol = speaker->MaxVolumeL();
- TInt setVol = maxVol * aNewVolume / KMusEngMaxVolume;
- setVol = Max(setVol, 1);
-
- MUS_LOG2(
-"mus: [ENGINE] -> CMusEngMceSession::SetSpeakerVolumeL() orig:%d, adjusted:%d",
-aNewVolume, setVol );
-
- if ( setVol <= maxVol )
- {
- speaker->SetVolumeL( setVol );
- }
+ speaker->SetVolumeL( aNewVolume );
}
+
}
}
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -600,8 +1072,7 @@
{
AdjustVideoStreamL( static_cast<CMceVideoStream&>
( videoStream->BoundStreamL() ) );
- }
-
+ }
}
else // audio
{
@@ -620,10 +1091,8 @@
}
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::AdjustStreamsAndCodecsL" )
-
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -637,16 +1106,16 @@
DoCodecSelectionL( aVideoStream );
const RPointerArray<CMceVideoCodec>& codecs = aVideoStream.Codecs();
-
+
+ __ASSERT_ALWAYS( aVideoStream.Source(), User::Leave( KErrArgument ) );
for ( TInt codecIndex = 0; codecIndex < codecs.Count(); ++codecIndex )
{
- AdjustVideoCodecL( *codecs[codecIndex] );
+ AdjustVideoCodecL( *codecs[codecIndex], aVideoStream.Source()->Type() );
}
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::AdjustVideoStreamL" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -666,7 +1135,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::AdjustAudioStreamL" )
}
-
// -----------------------------------------------------------------------------
// Calls CMceInSession::RejectL() inside TRAP_IGNORE
@@ -695,16 +1163,15 @@
TRAP_IGNORE( aSession.RejectL() )
}
}
- }
-
+ }
// -----------------------------------------------------------------------------
// By default rejects all incoming sessions immediately without notifying UI
// -----------------------------------------------------------------------------
//
void CMusEngMceSession::IncomingSession(
- CMceInSession* aSession,
- TMceTransactionDataContainer* /*aContainer*/ )
+ CMceInSession* aSession,
+ TMceTransactionDataContainer* /*aContainer*/ )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::IncomingSession()" )
@@ -718,15 +1185,14 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::IncomingSession()" )
}
-
// -----------------------------------------------------------------------------
// By default rejects all incoming updates immediately without notifying UI
// -----------------------------------------------------------------------------
//
void CMusEngMceSession::IncomingUpdate(
- CMceSession& aOrigSession,
- CMceInSession* aUpdatedSession,
- TMceTransactionDataContainer* /*aContainer*/ )
+ CMceSession& aOrigSession,
+ CMceInSession* aUpdatedSession,
+ TMceTransactionDataContainer* /*aContainer*/ )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::IncomingUpdate()" )
@@ -748,8 +1214,7 @@
}
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::IncomingUpdate()" )
- }
-
+ }
// -----------------------------------------------------------------------------
//
@@ -785,20 +1250,12 @@
}
case CMceMediaStream::EIdle: // Stream is not receiving RTP
{
- iSessionObserver.StreamIdle();
+ // NOP
break;
}
case CMceMediaStream::EStreaming: // Stream is streaming
{
- // If streaming stream is complete video out- or instream, inform UI
- if ( aStream.Type() == KMceVideo &&
- aStream.Source() &&
- aStream.Sinks().Count() >= 0 &&
- ( aStream.Source()->Type() == KMceRTPSource ||
- aStream.Sinks()[0]->Type() == KMceRTPSink ) )
- {
- iSessionObserver.StreamStreaming();
- }
+ StreamStreaming( aStream );
break;
}
case CMceMediaStream::EDisabled: // Stream is explicitly disabled
@@ -832,7 +1289,6 @@
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -846,7 +1302,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::StreamStateChanged( src )" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -860,14 +1315,13 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::StreamStateChanged( sink )" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void CMusEngMceSession::SessionStateChanged(
- CMceSession& aSession,
- TMceTransactionDataContainer* aContainer )
+ CMceSession& aSession,
+ TMceTransactionDataContainer* aContainer )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::SessionStateChanged()" )
@@ -875,7 +1329,7 @@
{
// Container should never be NULL, but if it is, handle as
// internal error
- iSessionObserver.SessionFailed();
+ InformObserverAboutSessionFailure( KErrGeneral );
return;
}
@@ -895,8 +1349,7 @@
}
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::SessionStateChanged()" )
- }
-
+ }
// -----------------------------------------------------------------------------
//
@@ -914,7 +1367,7 @@
{
MUS_LOG( "mus: [ENGINE] CMusEngMceSession::\
SessionConnectionStateChanged: Notify observer" )
- iSessionObserver.SessionConnectionLost();
+ InformObserverAboutSessionFailure( MLcSession::EConnectionLost );
}
}
@@ -922,17 +1375,11 @@
SessionConnectionStateChanged()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-
-#if ( defined( _DEBUG ) && !defined( UNIT_TESTING ) )
void CMusEngMceSession::Failed( CMceSession& aSession, TInt aError )
-#else
-void CMusEngMceSession::Failed( CMceSession& aSession, TInt /*aError*/ )
-#endif
{
MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::Failed() error #%d",
aError )
@@ -940,20 +1387,19 @@
if ( iSession && iSession == &aSession )
{
MUS_LOG( "mus: [ENGINE] CMusEngMceSession::Failed: Notify observer" )
- iSessionObserver.SessionFailed();
+ InformObserverAboutSessionFailure( aError );
}
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::Failed()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void CMusEngMceSession::UpdateFailed(
- CMceSession& aSession,
- TMceTransactionDataContainer* aContainer )
+ CMceSession& aSession,
+ TMceTransactionDataContainer* aContainer )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::UpdateFailed()" )
@@ -961,7 +1407,7 @@
{
// Container should never be NULL, but if it is, handle as
// internal error
- iSessionObserver.SessionFailed();
+ InformObserverAboutSessionFailure( KErrGeneral );
return;
}
@@ -969,13 +1415,12 @@
{
MUS_LOG( "mus: [ENGINE] CMusEngMceSession::UpdateFailed: \
Notify observer" )
- iSessionObserver.SessionFailed();
+ InformObserverAboutSessionFailure( KErrGeneral );
}
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::UpdateFailed()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -1017,8 +1462,7 @@
}
}
}
- }
-
+ }
// -----------------------------------------------------------------------------
//
@@ -1035,13 +1479,12 @@
if ( aStream.Type() == KMceVideo )
{
- iSessionObserver.StreamIdle();
+ InformObserverAboutPlayerStateChange( RemoteVideoPlayer() );
}
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::InactivityTimeout()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -1054,7 +1497,6 @@
// NOP, We are not at all interested about SSRCs
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -1067,7 +1509,6 @@
// NOP, We are not at all interested about SSRCs
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -1084,6 +1525,14 @@
return allowed;
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::ProfileRegistered()
+ {
+ // NOP in base class
+ }
// -----------------------------------------------------------------------------
//
@@ -1102,58 +1551,47 @@
switch ( aSession.State() )
{
case CMceSession::EIdle:
- {
- MUS_LOG( "mus: [ENGINE] Unexpected asynchronous \
- state transition, consider session as failed." )
- iSessionObserver.SessionFailed();
- break;
- }
- case CMceSession::EOffering :
- {
- break;
- }
case CMceSession::EIncoming:
{
MUS_LOG( "mus: [ENGINE] Unexpected asynchronous \
state transition, consider session as failed." )
- iSessionObserver.SessionFailed();
- break;
- }
- case CMceSession::EReserving :
- {
- // UpdateL called to incoming session during
- // session establishment
- break;
- }
- case CMceSession::EAnswering : // Answering an incoming call
- {
- break;
- }
- case CMceSession::EProceeding :
- {
+ InformObserverAboutSessionFailure( KErrGeneral );
break;
}
case CMceSession::EEstablished:
{
+ if ( iStoreEncoderConfigInfo )
+ {
+ iStoreEncoderConfigInfo = EFalse;
+ TRAPD( error, StoreEncoderConfigInfoL() )
+ if ( error != KErrNone && error != KErrNotFound )
+ {
+ // Only acceptable error is absence of repository entry,
+ // otherwise we inform user about failed session.
+ InformObserverAboutSessionFailure( error );
+ return;
+ }
+ }
+
// Check that session timer is not already running, which is
// the case when refreshing the session with session timer
if ( !iUpdateTimer->IsActive() )
{
iStartTime.HomeTime(); // Start counting session duration
iUpdateTimer->Start( KMusEngTimerInterval );
- iSessionObserver.SessionEstablished();
+ InformObserverAboutSessionStateChange();
}
-
+
break;
}
+ case CMceSession::EOffering:
+ case CMceSession::EReserving:
+ case CMceSession::EAnswering:
+ case CMceSession::EProceeding:
case CMceSession::ECancelling:
- {
- // MCE has for some reason started to cancel session
- break;
- }
case CMceSession::ETerminating:
{
- // MCE has for some reason started to terminate session
+ // NOP
break;
}
case CMceSession::ETerminated:
@@ -1173,7 +1611,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::HandleSessionStateChanged" )
}
-
// -----------------------------------------------------------------------------
// This function should be called only if sibling classes cannot handle
// termination reason by themselves.
@@ -1184,28 +1621,28 @@
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::HandleTermination()" )
- iSipProfileHandler->RefreshIapAvailabilities();
-
+ iSipProfileHandler->RefreshIapAvailabilities();
+
switch ( aStatusCode )
{
case 0:
{
// Normal session termination or session by another end.
- iSessionObserver.SessionTerminated();
+ InformObserverAboutSessionStateChange();
break;
}
case KMusEngSipReasonCodeOk:
{
// Normal session termination by this end: We have sent BYE
// and now received 200 OK to it.
- iSessionObserver.SessionTerminated();
+ InformObserverAboutSessionStateChange();
break;
}
default:
{
// Termination reason cannot be determined, handle as internal
// error.
- iSessionObserver.SessionFailed();
+ InformObserverAboutSessionFailure( KErrGeneral );
break;
}
}
@@ -1213,22 +1650,27 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::HandleTermination()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void CMusEngMceSession::AdjustVideoCodecL( CMceVideoCodec& aVideoCodec )
+void CMusEngMceSession::AdjustVideoCodecL( CMceVideoCodec& aVideoCodec,
+ TMceSourceType aSourceType )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::AdjustVideoCodecL()" )
aVideoCodec.SetMMFPriorityL( KAudioPrioritySwisPlayback );
aVideoCodec.SetMMFPriorityPreferenceL( KAudioPrefSwisPlayback );
- MUS_LOG( "mus: [ENGINE] Video MMF priority and preference set" )
+ if ( aVideoCodec.SdpName() == KMceSDPNameH264() &&
+ aSourceType == KMceCameraSource )
+ {
+ SetCodecConfigKeyL( aVideoCodec );
+ SetEncodingDeviceL( aVideoCodec );
+ }
+
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::AdjustVideoCodecL()" )
}
-
// -----------------------------------------------------------------------------
// 1. Sets MMF audio priority and preference
@@ -1245,7 +1687,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::AdjustAudioCodecL()" )
}
-
// -----------------------------------------------------------------------------
// Remove multiples of H.263 codec, prefer H263-2000 over H263-1998.
// Additionally select just the one with best quality from selected mode.
@@ -1300,18 +1741,14 @@
}
}
}
- if ( bestBitrateCodec != NULL )
+ if ( bestBitrateCodec )
{
DoBitrateBasedRemovalL( aVideoStream, *bestBitrateCodec );
}
- /* Codec removal based on configuration */
- DoCodecConfigurationBasedRemovalL( aVideoStream );
-
MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::DoCodecSelectionL()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -1320,12 +1757,11 @@
{
// Update timer is used also to detect RTCP inactivity
++iSecondsFromLastRtcpReport;
-
- iSessionObserver.SessionTimeChanged( GetSessionTime() );
if ( iSecondsFromLastRtcpReport >= KMusEngRtcpInactivityThreshold )
{
- iSessionObserver.InactivityTimeout();
+ MUS_LOG( "mus: [ENGINE] CMusEngMceSession::UpdateTimerEvent() ->EMediaInactivityTimeout" )
+ InformObserverAboutSessionFailure( MLcSession::EMediaInactivityTimeout );
// Disable calling multiple times by reseting timer
iSecondsFromLastRtcpReport = 0;
}
@@ -1333,7 +1769,6 @@
iUpdateTimer->Start( KMusEngTimerInterval );
}
-
// -----------------------------------------------------------------------------
// Enables or disables all the speaker sinks of all the audio streams
// -----------------------------------------------------------------------------
@@ -1346,8 +1781,7 @@
for ( TInt i = 0; i < streams.Count(); ++i )
{
- CMceSpeakerSink* speaker =
- MusEngMceUtils::GetSpeaker( *streams[i] );
+ CMceSpeakerSink* speaker = MusEngMceUtils::GetSpeaker( *streams[i] );
if ( speaker )
{
@@ -1395,7 +1829,6 @@
}
return EFalse;
}
-
// -----------------------------------------------------------------------------
//
@@ -1455,44 +1888,253 @@
}
// -----------------------------------------------------------------------------
-//
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetEncodingDeviceL( CMceVideoCodec& aVideoCodec )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::SetEncodingDeviceL()" )
+
+ // We try to read encoding device UID. If we do not succeed, we use default
+
+ const TUid KDefaultEncodingDevice( TUid::Uid( 0x20001C13 ) );
+ TUid encodingDevice( KDefaultEncodingDevice );
+ TRAPD( error,
+ encodingDevice = MultimediaSharingSettings::EncodingDeviceL() )
+ __ASSERT_ALWAYS( error == KErrNone || error == KErrNotFound,
+ User::Leave( error ) );
+ aVideoCodec.SetPreferredEncodingDecodingDeviceL( encodingDevice );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::SetEncodingDeviceL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
// -----------------------------------------------------------------------------
//
-void CMusEngMceSession::DoCodecConfigurationBasedRemovalL( CMceVideoStream& aVideoStream )
+void CMusEngMceSession::SetCodecConfigKeyL( CMceVideoCodec& aVideoCodec )
{
- MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::DoCodecConfigurationBasedRemovalL()" )
- if( MultimediaSharingSettings::IsAvcDisabled())
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::SetCodecConfigKeyL()" )
+
+ HBufC8* configKey( NULL );
+
+ // We try to read config key. If we do not succeed, we prepare to
+ // write keys to CenRep for the next time.
+ TRAPD( error, configKey = ReadCodecConfigKeyL( aVideoCodec ) )
+
+ if ( error == KErrNone )
{
- RPointerArray<CMceVideoCodec>& codecs =
- MUS_CODEC_ARR_CONST_CAST( aVideoStream.Codecs() );
- TInt codecIndex = 0;
- while ( codecIndex < codecs.Count() )
+ // There is a repository for config keys
+ if ( configKey )
+ {
+ // ...and key is found.
+ CleanupStack::PushL( configKey );
+ aVideoCodec.SetConfigKeyL( *configKey );
+ CleanupStack::PopAndDestroy( configKey );
+ }
+ else
{
- CMceVideoCodec& currentCodec = *codecs[codecIndex++];
- if ( !currentCodec.SdpName().CompareF( KMceSDPNameH264 ) )
- {
- MUS_LOG( "mus: [ENGINE] - Removing avc from supported codec list" )
- aVideoStream.RemoveCodecL( currentCodec );
- codecs = MUS_CODEC_ARR_CONST_CAST( aVideoStream.Codecs() );
- codecIndex = 0;
- }
+ // ...but key is not found, so it must be written to CenRep when
+ // available.
+ iStoreEncoderConfigInfo = ETrue;
}
- }
- MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::DoCodecConfigurationBasedRemovalL()" )
+ }
+ else if ( error == KErrNotFound )
+ {
+ // There is no repository for config keys so there is no point
+ // trying to write anything there. Session setup can still continue.
+ MUS_LOG1( "mus: [ENGINE] No repository for config keys [%d]", error )
+ }
+ else
+ {
+ User::Leave( error );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::SetCodecConfigKeyL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+HBufC8* CMusEngMceSession::ReadCodecConfigKeyL(
+ const CMceVideoCodec& aVideoCodec ) const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::ReadCodecConfigKeyL()" )
+
+ HBufC8* key( NULL );
+
+ HBufC8* encoderInfo = MultimediaSharingSettings::EncoderConfigInfoLC();
+ __ASSERT_ALWAYS( encoderInfo, User::Leave( KErrNotFound ) );
+
+ TPtrC8 keyId( ConfigKeyIdL( aVideoCodec ) );
+
+ TInt tokenStartPosition( encoderInfo->FindC( keyId ) );
+ if ( tokenStartPosition > KErrNotFound )
+ {
+ TInt tokenLength( encoderInfo->Mid( tokenStartPosition ).FindC(
+ KMusEncoderInfoTokenizer ) );
+ if ( tokenLength > KErrNotFound )
+ {
+ // Separate key from token by removing keyId
+ TInt keyStartPosition = tokenStartPosition + keyId.Length();
+ TInt keyLength = tokenLength - keyId.Length();
+ TPtrC8 keyPtr = encoderInfo->Mid( keyStartPosition, keyLength );
+ key = keyPtr.AllocL();
+ }
+ }
+
+ CleanupStack::PopAndDestroy( encoderInfo );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::ReadCodecConfigKeyL()" )
+
+ return key;
}
// -----------------------------------------------------------------------------
-//
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::StoreEncoderConfigInfoL() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::StoreEncoderConfigInfoL()" )
+
+ HBufC8* configInfoInCenRep = MultimediaSharingSettings::EncoderConfigInfoLC();
+ __ASSERT_ALWAYS( configInfoInCenRep, User::Leave( KErrNotFound ) );
+
+ TBuf8<NCentralRepositoryConstants::KMaxBinaryLength> keys;
+ keys.Append( *configInfoInCenRep );
+
+ CMceVideoStream* stream = MusEngMceUtils::GetVideoOutStreamL( *iSession );
+ const RPointerArray<CMceVideoCodec>& codecs = stream->Codecs();
+
+ for ( TInt codecIndex = 0; codecIndex < codecs.Count(); ++codecIndex )
+ {
+ if ( codecs[codecIndex]->SdpName().FindF( KMceSDPNameH264 ) >= 0 )
+ {
+ const TPtrC8 keyId = ConfigKeyIdL( *codecs[codecIndex] );
+ HBufC8* configKey = codecs[codecIndex]->ConfigKeyL();
+ CleanupStack::PushL( configKey );
+
+ if ( configKey &&
+ keys.FindF( keyId ) == KErrNotFound &&
+ configInfoInCenRep->FindF( keyId ) == KErrNotFound )
+ {
+
+ if ( keys.Length() +
+ keyId.Length() +
+ configKey->Length() +
+ KMusEncoderInfoTokenizer().Length() <
+ NCentralRepositoryConstants::KMaxBinaryLength )
+ {
+ keys.Append( keyId );
+ keys.Append( *configKey );
+ keys.Append( KMusEncoderInfoTokenizer );
+ }
+ }
+
+ CleanupStack::PopAndDestroy( configKey );
+ }
+ }
+
+ MultimediaSharingSettings::SetEncoderConfigInfoL( keys );
+
+ CleanupStack::PopAndDestroy( configInfoInCenRep );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::StoreEncoderConfigInfoL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
// -----------------------------------------------------------------------------
//
-void CMusEngMceSession::VolumeChanged( TInt aVolume, TBool aAudioRouteChanged )
+const TPtrC8 CMusEngMceSession::ConfigKeyIdL(
+ const CMceVideoCodec& aVideoCodec ) const
{
- MUS_LOG1( "mus: [ENGINE] -> CMusEngMceSession::VolumeChanged(): %d", aVolume )
- if ( iSession )
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::ConfigKeyIdL()" )
+
+ // Currently works only for AVC
+ __ASSERT_ALWAYS( aVideoCodec.SdpName().FindF( KMceSDPNameH264 ) >= 0,
+ User::Leave( KErrArgument ) );
+
+ TPtrC8 configKeyTokenId;
+
+ if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel1 )
+ {
+ configKeyTokenId.Set( KMusAvcBitrateLevel1() );
+ }
+ else if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel1b )
+ {
+ configKeyTokenId.Set( KMusAvcBitrateLevel1b() );
+ }
+ else if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel1_1 )
+ {
+ configKeyTokenId.Set( KMusAvcBitrateLevel1_1() );
+ }
+ else if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel1_2 )
+ {
+ configKeyTokenId.Set( KMusAvcBitrateLevel1_2() );
+ }
+ else if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel1_3 )
+ {
+ configKeyTokenId.Set( KMusAvcBitrateLevel1_3() );
+ }
+ else if ( aVideoCodec.AllowedBitrates() & KMceAvcBitrateLevel2 )
+ {
+ configKeyTokenId.Set( KMusAvcBitrateLevel2() );
+ }
+ else
{
- CMusEngSession::VolumeChanged( aVolume, aAudioRouteChanged );
- TRAP_IGNORE( SetSpeakerVolumeL( aVolume ) );
+ User::Leave( KErrNotFound );
}
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::ConfigKeyIdL()" )
- MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::VolumeChanged()" )
+ return configKeyTokenId;
+ }
+
+// -----------------------------------------------------------------------------
+// Contact address is saved if all following apply:
+// - standard variant
+// - only one contact entry (mus mgr doesn't provide contact id if multiple
+// contact entries for other end is found)
+// - no existing sip address info for contact
+// - address is valid sip or tel uri
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SaveContactL( const TDesC8& /*aAddress*/ )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngMceSession::SaveContactL" );
+
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngMceSession::SaveContactL" );
}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::StreamStreaming( CMceMediaStream& aStream )
+ {
+ if ( aStream.State() == CMceMediaStream::EStreaming &&
+ aStream.Type() == KMceVideo )
+ {
+ MLcVideoPlayer* videoPlayer = NULL;
+ if ( aStream.Source() &&
+ aStream.Source()->Type() == KMceRTPSource )
+ {
+ videoPlayer = RemoteVideoPlayer();
+ }
+ else if ( aStream.Sinks().Count() >= 0 &&
+ aStream.Sinks()[0]->Type() == KMceRTPSink )
+ {
+ videoPlayer = LocalVideoPlayer();
+ }
+ else
+ {
+ }
+ InformObserverAboutPlayerStateChange( videoPlayer );
+ }
+ }
+
+// End of file
--- a/mmsharing/mmshengine/src/musengmceutils.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengmceutils.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -51,6 +51,23 @@
aStream.Source()->Type() == KMceRTPSource );
}
+// -----------------------------------------------------------------------------
+// Tells if parameter stream is a video stream with RTP sink
+// -----------------------------------------------------------------------------
+//
+TBool MusEngMceUtils::IsVideoOutStream( CMceMediaStream& aStream )
+ {
+ TBool isOutStream( EFalse );
+ if ( aStream.Type() == KMceVideo )
+ {
+ CMceMediaSink* rtpSink = MusEngMceUtils::GetMediaSink(
+ aStream,
+ KMceRTPSink );
+
+ isOutStream = ( rtpSink != NULL );
+ }
+ return isOutStream;
+ }
// -----------------------------------------------------------------------------
// Tells if parameter stream is an audio stream with RTP source
@@ -78,21 +95,22 @@
for ( TInt i = 0; i < streams.Count(); ++i )
{
- if ( streams[i]->Type() == KMceVideo )
+ if ( MusEngMceUtils::IsVideoOutStream( *streams[i] ) )
{
- CMceMediaSink* rtpSink = MusEngMceUtils::GetMediaSink(
- *streams[i],
- KMceRTPSink );
- if ( rtpSink )
- {
- __ASSERT_ALWAYS( !videoOut, User::Leave( KErrOverflow ) );
-
- videoOut = static_cast<CMceVideoStream*>( streams[i] );
- }
+ __ASSERT_ALWAYS( !videoOut, User::Leave( KErrOverflow ) );
+
+ videoOut = static_cast<CMceVideoStream*>( streams[i] );
+ }
- // There is no need to investigate bound stream since
- // outstream is always constructed by Mus instead of MCE
- }
+ // Check if bound stream is a video stream with RTP sink.
+ if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoOutStream( streams[i]->BoundStreamL() ) )
+ {
+ __ASSERT_ALWAYS( !videoOut, User::Leave( KErrOverflow ) );
+
+ videoOut = static_cast<CMceVideoStream*>(
+ &streams[i]->BoundStreamL() );
+ }
}
__ASSERT_ALWAYS( videoOut, User::Leave( KErrNotFound ) );
@@ -178,12 +196,15 @@
// -----------------------------------------------------------------------------
//
CMceMediaSink* MusEngMceUtils::GetMediaSink( CMceMediaStream& aStream,
- TMceSinkType aType )
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType )
{
const RPointerArray<CMceMediaSink>& sinks = aStream.Sinks();
for ( TInt i = 0; i < sinks.Count(); ++i )
{
- if ( sinks[i]->Type() == aType )
+ if ( sinks[i]->Type() == aType &&
+ ( aAssociatedSourceType == KMusEngNoAssociatedSourceType ||
+ aStream.Source()->Type() == aAssociatedSourceType ) )
{
return sinks[i];
}
@@ -198,10 +219,11 @@
// -----------------------------------------------------------------------------
//
CMceMediaSink* MusEngMceUtils::GetMediaSinkL( CMceMediaStream& aStream,
- TMceSinkType aType )
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType )
{
- CMceMediaSink* sink = MusEngMceUtils::GetMediaSink( aStream, aType );
+ CMceMediaSink* sink = MusEngMceUtils::GetMediaSink( aStream, aType, aAssociatedSourceType );
__ASSERT_ALWAYS( sink, User::Leave( KErrNotFound ) );
@@ -214,11 +236,14 @@
// -----------------------------------------------------------------------------
//
CMceMediaSink* MusEngMceUtils::GetMediaSink( CMceSession& aSession,
- TMceSinkType aType )
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType,
+ TBool aStrictMatch )
{
CMceMediaSink* sink = NULL;
- TRAP_IGNORE( sink = MusEngMceUtils::GetMediaSinkL( aSession, aType ) )
+ TRAP_IGNORE( sink = MusEngMceUtils::GetMediaSinkL(
+ aSession, aType, aAssociatedSourceType, aStrictMatch ) )
return sink;
}
@@ -229,7 +254,9 @@
// -----------------------------------------------------------------------------
//
CMceMediaSink* MusEngMceUtils::GetMediaSinkL( CMceSession& aSession,
- TMceSinkType aType )
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType,
+ TBool aStrictMatch )
{
CMceMediaSink* sink = NULL;
@@ -237,7 +264,7 @@
for ( TInt i = 0; i < streams.Count(); ++i )
{
- sink = MusEngMceUtils::GetMediaSink( *streams[i], aType );
+ sink = MusEngMceUtils::GetMediaSink( *streams[i], aType, aAssociatedSourceType );
if ( sink )
{
return sink;
@@ -246,13 +273,20 @@
if ( streams[i]->BoundStream() )
{
sink = MusEngMceUtils::GetMediaSink( streams[i]->BoundStreamL(),
- aType );
+ aType,
+ aAssociatedSourceType );
if ( sink )
{
return sink;
}
}
}
+
+ if ( !sink && aAssociatedSourceType != KMusEngNoAssociatedSourceType && !aStrictMatch )
+ {
+ // No preferred match, try without source preference
+ sink = GetMediaSinkL( aSession, aType );
+ }
__ASSERT_ALWAYS( sink, User::Leave( KErrNotFound ) );
@@ -342,12 +376,15 @@
// Gets handle to a display sink.
// -----------------------------------------------------------------------------
//
-CMceDisplaySink* MusEngMceUtils::GetDisplay( CMceSession& aSession )
+CMceDisplaySink* MusEngMceUtils::GetDisplay(
+ CMceSession& aSession, TBool aPreferViewFinder )
{
MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetDisplay()" )
MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetDisplay()" )
+ TMceSourceType preferredSource =
+ aPreferViewFinder ? KMceCameraSource : KMusEngNoAssociatedSourceType;
return static_cast<CMceDisplaySink*>(
- MusEngMceUtils::GetMediaSink( aSession, KMceDisplaySink ) );
+ MusEngMceUtils::GetMediaSink( aSession, KMceDisplaySink, preferredSource ) );
}
@@ -356,11 +393,12 @@
// Gets handle to a display sink.
// -----------------------------------------------------------------------------
//
-CMceDisplaySink* MusEngMceUtils::GetDisplayL( CMceSession& aSession )
+CMceDisplaySink* MusEngMceUtils::GetDisplayL(
+ CMceSession& aSession, TBool aPreferViewFinder )
{
MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetDisplayL()" )
- CMceDisplaySink* display = MusEngMceUtils::GetDisplay( aSession );
+ CMceDisplaySink* display = MusEngMceUtils::GetDisplay( aSession, aPreferViewFinder );
__ASSERT_ALWAYS( display, User::Leave( KErrNotFound ) );
@@ -368,6 +406,51 @@
return display;
}
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying received video.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetReceivingDisplay( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetReceivingDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetReceivingDisplay()" )
+
+ // Search display which is connected with rtp source
+ TMceSourceType preferredSource = KMceRTPSource;
+ return static_cast<CMceDisplaySink*>( MusEngMceUtils::GetMediaSink(
+ aSession, KMceDisplaySink, preferredSource, ETrue ) );
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying received video.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetReceivingDisplayL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetReceivingDisplayL()" )
+
+ CMceDisplaySink* display = GetReceivingDisplay( aSession );
+ __ASSERT_ALWAYS( display != NULL, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetReceivingDisplay()" )
+
+ return display;
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying viewfinder content.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetVfDisplay( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetVfDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetVfDisplay()" )
+
+ // Search display which is connected with camera
+ TMceSourceType preferredSource = KMceCameraSource;
+ return static_cast<CMceDisplaySink*>( MusEngMceUtils::GetMediaSink(
+ aSession, KMceDisplaySink, preferredSource, ETrue ) );
+ }
// -----------------------------------------------------------------------------
// Adds display sink to specified stream if one does not exist already.
@@ -376,7 +459,8 @@
//
void MusEngMceUtils::AddDisplayL( CMceMediaStream& aStream,
CMceManager& aManager,
- const TRect& aDisplayRect )
+ const TRect& aDisplayRect,
+ TBool aDisabled )
{
MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::AddDisplayL()" )
@@ -394,6 +478,11 @@
CleanupStack::Pop( display );
}
+ if ( aDisabled )
+ {
+ MUS_LOG( "mus: [ENGINE] Initially disabled display" )
+ display->DisableL();
+ }
display->SetDisplayRectL( aDisplayRect );
MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::AddDisplayL()" )
@@ -449,9 +538,63 @@
MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::DisableStreamL()" )
}
-
-
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::DoEnableDisplayL( CMceDisplaySink& aDisplay, TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> MusEngMceUtils::DoEnableDisplayL() %d",
+ aEnable )
+
+ if ( aEnable )
+ {
+ if ( !aDisplay.IsEnabled() )
+ {
+ aDisplay.EnableL();
+ MUS_LOG( " Display enabled" )
+ }
+ else
+ {
+ MUS_LOG( " Display already enabled, ignore" )
+ }
+ }
+ else
+ {
+ if ( aDisplay.IsEnabled() )
+ {
+ aDisplay.DisableL();
+ MUS_LOG( " Display disabled" )
+ }
+ else
+ {
+ MUS_LOG( " Display already disabled, ignore" )
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::DoEnableDisplayL()")
+ }
-
-
-
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt MusEngMceUtils::EnableInactivityTimer(
+ CMceSession& aSession,
+ TUint32 aInactivityTimeout )
+ {
+ TInt err( KErrNotFound );
+ CMceVideoStream* stream = NULL;
+ TRAP_IGNORE( stream = MusEngMceUtils::GetVideoInStreamL( aSession ) )
+ if ( stream )
+ {
+ // Instream has always RTP source
+ err = KErrNone;
+ CMceRtpSource* rtpSource = static_cast<CMceRtpSource*>( stream->Source() );
+ TRAP( err, rtpSource->EnableInactivityTimerL( aInactivityTimeout ) )
+ }
+
+ return err;
+ }
+
+// End of file
--- a/mmsharing/mmshengine/src/musengorientationhandler.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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:
-*
-*/
-
-
-// USER
-#include "musengorientationhandler.h"
-#include "muslogger.h"
-#include "musenglivesession.h"
-#include "musenglivesessionobserver.h"
-
-// SYSTEM
-
-const TInt KMusEngDelayedResume = 500000; // 500 ms
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngOrientationHandler* CMusEngOrientationHandler::NewL(
- CMusEngLiveSession& aSession, MMusEngLiveSessionObserver& aSessionObserver )
- {
- CMusEngOrientationHandler* self =
- new (ELeave) CMusEngOrientationHandler( aSession, aSessionObserver );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self);
- return self;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngOrientationHandler::~CMusEngOrientationHandler()
- {
- MUS_LOG( "mus: [ENGINE] CMusEngOrientationHandler::~CMusEngOrientationHandler()" )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngOrientationHandler::RefreshOrientationL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngOrientationHandler::RefreshOrientationL()" )
- if ( !IsActive() )
- {
- TBool refreshBeginStateCamera = iSession.IsPlayingL();
- TBool refreshBeginStateDisplay = iSession.IsDisplayEnabledL();
-
- if ( refreshBeginStateCamera )
- {
- MUS_LOG( "mus: [MUSENG] -> Playing, pause/stop to restart camera" );
- iSession.PauseL();
- }
-
- if ( refreshBeginStateDisplay )
- {
- MUS_LOG( "mus: [MUSENG] -> display is enabled, disable/enable it");
- iSession.EnableDisplayL(EFalse);
- }
- iRefreshBeginStateCamera = refreshBeginStateCamera;
- iRefreshBeginStateDisplay = refreshBeginStateDisplay;
- }
-
- DoDelayedResumeL();
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngOrientationHandler::RefreshOrientationL()" )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngOrientationHandler::UpdateL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngOrientationHandler::UpdateL()" )
- iRefreshBeginStateCamera = iSession.IsPlayingL();
- iRefreshBeginStateDisplay = iSession.IsDisplayEnabledL();
- MUS_LOG2( "mus: [ENGINE] <- CMusEngOrientationHandler::UpdateL(), cam:%d disp:%d",
- iRefreshBeginStateCamera, iRefreshBeginStateDisplay )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngOrientationHandler::RunL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngOrientationHandler::RunL()" )
-
- TBool refreshBeginStateCamera = iRefreshBeginStateCamera;
- TBool refreshBeginStateDisplay = iRefreshBeginStateDisplay;
-
- iSessionObserver.OrientationRefreshEnded();
-
- if ( refreshBeginStateDisplay )
- {
- MUS_LOG( "mus: [ENGINE] enable display after delayed orientation" )
- iSession.EnableDisplayL(ETrue);
- }
-
- if ( refreshBeginStateCamera )
- {
- MUS_LOG( "mus: [ENGINE] enable camera after delayed orientation" )
- iSession.PlayL();
- }
- MUS_LOG( "mus: [ENGINE] <- CMusEngOrientationHandler::RunL()" )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusEngOrientationHandler::RunError( TInt aError )
- {
- MUS_LOG( "mus: [ENGINE] <-> CMusEngOrientationHandler::RunError()" )
- aError = KErrNone;
- return aError;
- }
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngOrientationHandler::DoDelayedResumeL()
- {
- if ( IsActive() )
- {
- Cancel();
- }
- After( KMusEngDelayedResume );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngOrientationHandler::CMusEngOrientationHandler(
- CMusEngLiveSession& aSession, MMusEngLiveSessionObserver& aSessionObserver )
- : CTimer( CActive::EPriorityStandard ), iSession( aSession ),
- iSessionObserver( aSessionObserver )
- {
- CActiveScheduler::Add(this);
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngOrientationHandler::ConstructL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngOrientationHandler::ConstructL()" )
-
- CTimer::ConstructL();
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngOrientationHandler::ConstructL()" )
- }
-
--- a/mmsharing/mmshengine/src/musengreceivesession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengreceivesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,16 +18,15 @@
// USER INCLUDES
-
#include "musengreceivesession.h"
-#include "musengsessionobserver.h"
-#include "musengreceivesessionobserver.h"
#include "musengmceutils.h"
#include "musenglogger.h"
-#include "mussettings.h"
#include "mussipprofilehandler.h"
+#include "mussessionproperties.h"
+#include "musengremotevideoplayer.h"
// SYSTEM INCLUDES
+#include <lcsessionobserver.h>
#include <mcemanager.h>
#include <mceinsession.h>
#include <mcestreambundle.h>
@@ -39,25 +38,20 @@
#include <mcespeakersink.h>
#include <mceaudiocodec.h>
#include <mceavccodec.h>
+#include <e32property.h>
#include <utf.h>
-
-const TUint8 KMusEngRtpKeepAliveTimer = 5; // this should be 30 sec, this a temporary fix
-const TUint8 KMusEngKeepAlivePayloadTypeVideoH263 = 96;
-const TUint8 KMusEngKeepAlivePayloadTypeAudio = 97;
-const TUint8 KMusEngKeepAlivePayloadTypeVideoAvc = 98;
-
const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
// Using following value increases treshold buffer to 1 second from
// default 100 ms
const TInt KMusEngJitterBufferTreshold = 50;
const TInt KMusEngTresholdToSecondsFactor = 20;
-const TInt KMusEngOneSecondInMilliSeconds = 1000;
+const TInt KMusEngTwoSecondInMilliSeconds = 2000;
// Use inactivity timer value that is a little bigger than treshold in seconds
const TUint KMusEngInactivityTimer = KMusEngTresholdToSecondsFactor *
KMusEngJitterBufferTreshold +
- KMusEngOneSecondInMilliSeconds;
+ KMusEngTwoSecondInMilliSeconds;
_LIT8( KMusEngSwisIdentifier, "Require: precondition" );
_LIT8( KMusEngAssertedIdentity, "P-Asserted-Identity" );
@@ -70,28 +64,11 @@
//
// -----------------------------------------------------------------------------
//
-CMusEngReceiveSession::~CMusEngReceiveSession()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::~CMusEngReceiveSession()" )
- MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::~CMusEngReceiveSession()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CMusEngReceiveSession* CMusEngReceiveSession::NewL(
- const TRect& aRect,
- MMusEngSessionObserver& aSessionObserver,
- MMusEngReceiveSessionObserver& aReceiveSessionObserver )
+CMusEngReceiveSession* CMusEngReceiveSession::NewL()
{
MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::NewL(...)" )
- CMusEngReceiveSession* self = new( ELeave ) CMusEngReceiveSession(
- aSessionObserver,
- aReceiveSessionObserver,
- aRect );
+ CMusEngReceiveSession* self = new( ELeave )CMusEngReceiveSession();
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -100,27 +77,101 @@
return self;
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngReceiveSession::CMusEngReceiveSession()
+ : CMusEngMceSession()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngReceiveSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::ConstructL()" )
+
+ CMusEngMceSession::ConstructL();
+
+ iOriginator = HBufC8::NewL( KMaxUriLength );
+
+ iRemoteDisplayName = HBufC::NewL( KMaxUriLength );
+
+ iRemoteVideoPlayer = CMusEngRemoteVideoPlayer::NewL( *this, *this );
+
+ iReceivingInactivityTimeout = KMusEngInactivityTimer;
+
+ iKeepaliveTimer = KMusEngRtpKeepAliveTimer;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::ConstructL()" )
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngReceiveSession::AcceptInvitationL(
- const TBool& aAccept )
+CMusEngReceiveSession::~CMusEngReceiveSession()
{
- MUS_LOG1( "mus: [ENGINE] -> CMusEngReceiveSession::\
- AcceptInvitationL( %d )", aAccept )
+ MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::~CMusEngReceiveSession()" )
+
+ if ( iOriginator )
+ {
+ TRAP_IGNORE( SaveContactL( *iOriginator ) )
+ }
+ delete iOriginator;
+
+ delete iRemoteDisplayName;
+
+ delete iRemoteVideoPlayer;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::~CMusEngReceiveSession()" )
+ }
- __ASSERT_ALWAYS( iSession && iSession->State() == CMceSession::EProceeding,
- User::Leave( KErrNotReady ) );
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcSession::TLcSessionState CMusEngReceiveSession::LcSessionState() const
+ {
+ TLcSessionState state = CMusEngMceSession::LcSessionState();
+ if ( !iSession && state == MLcSession::EUninitialized )
+ {
+ state = MLcSession::EReceived;
+ }
+ return state;
+ }
- // Accept or reject
- if ( aAccept )
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngReceiveSession::EstablishLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::EstablishLcSessionL" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+ InSession()->AcceptL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::EstablishLcSessionL" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngReceiveSession::TerminateLcSessionL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::EstablishLcSessionL" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ if ( iSession->State() == CMceSession::EIncoming ||
+ iSession->State() == CMceSession::EProceeding )
{
- InSession()->AcceptL();
- }
- else
- {
+ // Reject
if ( iOperatorVariant )
{
// In operator variant, session is rejected with 486 instead of 603.
@@ -133,11 +184,45 @@
InSession()->RejectL();
}
}
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::\
- AcceptInvitationL(...)" )
+ else
+ {
+ iSession->TerminateL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::EstablishLcSessionL" )
}
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngReceiveSession::RemoteVideoPlayer()
+ {
+ return iRemoteVideoPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngReceiveSession::RemoteDisplayName()
+ {
+ TBuf<RProperty::KMaxPropertySize> buffer;
+
+ TInt error = RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ buffer );
+ if ( error == KErrNone && buffer.Length() )
+ {
+ iRemoteDisplayName->Des().Copy( buffer );
+ }
+
+ else if ( iOriginator )
+ {
+ iRemoteDisplayName->Des().Copy(*iOriginator);
+ }
+ return *iRemoteDisplayName;
+ }
// -----------------------------------------------------------------------------
// When reserving resources is ready, this function reports observer about
@@ -154,7 +239,8 @@
MUS_ENG_LOG_SESSION_STATE_AND_STATUS( aSession, aStatusCode, aReasonPhrase )
- if ( iSession && iSession == &aSession &&
+ if ( iSession &&
+ iSession == &aSession &&
aSession.State() == CMceSession::EProceeding )
{
// Indicates that resource reservation is ready, user can be notified
@@ -165,16 +251,9 @@
// Notify other end terminal
TRAP_IGNORE( InSession()->RingL() )
iRingLCalled = ETrue;
-
- // Notify user
- TBuf16<KMaxUriLength> originator;
- CnvUtfConverter::ConvertToUnicodeFromUtf8( originator,
- iSession->Originator() );
-
- TBuf16<KMaxUriLength> identity;
- CnvUtfConverter::ConvertToUnicodeFromUtf8( identity,
- iIdentity );
- iReceiveSessionObserver.IncomingSession( originator, identity );
+ TPtr8 ptrOriginator( iOriginator->Des() );
+ ptrOriginator.Copy( iSession->Originator() );
+ InformObserverAboutSessionStateChange();
}
else
{
@@ -194,18 +273,19 @@
HandleSessionStateChanged()" )
}
-
// -----------------------------------------------------------------------------
// Sets keepalive timer for video and calls base class variant of this function
// -----------------------------------------------------------------------------
//
-void CMusEngReceiveSession::AdjustVideoCodecL( CMceVideoCodec& aVideoCodec )
+void CMusEngReceiveSession::AdjustVideoCodecL( CMceVideoCodec& aVideoCodec,
+ TMceSourceType aSourceType )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::AdjustVideoCodecL()" )
- CMusEngMceSession::AdjustVideoCodecL( aVideoCodec );
+ CMusEngMceSession::AdjustVideoCodecL( aVideoCodec, aSourceType );
- aVideoCodec.SetKeepAliveTimerL( KMusEngRtpKeepAliveTimer );
+ MUS_LOG1( "mus: [ENGINE] Keepalive timer:%d", iKeepaliveTimer )
+ aVideoCodec.SetKeepAliveTimerL( iKeepaliveTimer );
if ( aVideoCodec.SdpName() == KMceSDPNameH263() ||
aVideoCodec.SdpName() == KMceSDPNameH2632000() )
{
@@ -225,7 +305,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::AdjustVideoCodecL()" )
}
-
// -----------------------------------------------------------------------------
// Sets keepalive timer for audio and calls base class variant of this function
// -----------------------------------------------------------------------------
@@ -236,14 +315,13 @@
CMusEngMceSession::AdjustAudioCodecL( aAudioCodec );
- aAudioCodec.SetKeepAliveTimerL( KMusEngRtpKeepAliveTimer );
+ aAudioCodec.SetKeepAliveTimerL( iKeepaliveTimer );
aAudioCodec.SetKeepAlivePayloadTypeL( KMusEngKeepAlivePayloadTypeAudio );
aAudioCodec.SetKeepAliveDataL( KNullDesC8() );
MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::AdjustAudioCodecL()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -259,8 +337,7 @@
for ( TInt codecIndex = 0; codecIndex < codecs.Count(); ++codecIndex )
{
- if ( codecs[codecIndex]->SdpName() == KMceSDPNameH264() &&
- !MultimediaSharingSettings::IsAvcDisabled() )
+ if ( codecs[codecIndex]->SdpName() == KMceSDPNameH264() )
{
if ( codecs[codecIndex]->CodecMode() == KMceAvcModeSingleNal )
{
@@ -323,7 +400,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::DoCodecSelectionL()" )
}
-
// -----------------------------------------------------------------------------
// If incoming session does not have valid structure and cannot be reconstructed
@@ -331,8 +407,8 @@
// -----------------------------------------------------------------------------
//
void CMusEngReceiveSession::IncomingSession(
- CMceInSession* aSession,
- TMceTransactionDataContainer* aContainer )
+ CMceInSession* aSession,
+ TMceTransactionDataContainer* aContainer )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::IncomingSession(...)" )
@@ -350,8 +426,6 @@
return;
}
- iReceiveSessionObserver.IncomingSessionPreNotification();
-
delete iSession; // possibly existing terminated session
iSession = aSession;
@@ -377,15 +451,14 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::IncomingSession()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void CMusEngReceiveSession::IncomingUpdate(
- CMceSession& aOrigSession,
- CMceInSession* aUpdatedSession,
- TMceTransactionDataContainer* aContainer )
+ CMceSession& aOrigSession,
+ CMceInSession* aUpdatedSession,
+ TMceTransactionDataContainer* aContainer )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::IncomingUpdate(...)" )
@@ -415,7 +488,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::IncomingUpdate(...)" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -435,33 +507,20 @@
aStream.Source() &&
aStream.Source()->Type() == KMceRTPSource )
{
-
if ( aStream.State() == CMceMediaStream::EBuffering )
{
- iReceiveSessionObserver.StreamBuffering();
+ iBuffered = ETrue;
+ InformObserverAboutPlayerStateChange( iRemoteVideoPlayer );
}
else if ( aStream.State() == CMceMediaStream::EStreaming )
{
- CMceRtpSource* rtpSource =
- static_cast<CMceRtpSource*>( aStream.Source() );
- TRAPD( err ,
- rtpSource->EnableInactivityTimerL( KMusEngInactivityTimer ) );
- if ( err != KErrNone )
- {
- MUS_LOG1("mus: [ENGINE] EnableInactivityTimerL Fails %d",err)
- iSessionObserver.SessionFailed();
- }
- else
- {
- iSessionObserver.StreamStreaming();
- }
+ ReceivingStarted();
}
else
{
// Cannot handle, forward to CMusEngMceSession
CMusEngMceSession::StreamStateChanged( aStream );
}
-
}
else
{
@@ -472,35 +531,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::StreamStateChanged()" )
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngReceiveSession::CMusEngReceiveSession(
- MMusEngSessionObserver& aSessionObserver,
- MMusEngReceiveSessionObserver& aReceiveSessionObserver,
- const TRect& aRect )
- : CMusEngMceSession( aRect, aSessionObserver ),
- iReceiveSessionObserver( aReceiveSessionObserver )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngReceiveSession::ConstructL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::ConstructL()" )
-
- CMusEngMceSession::ConstructL();
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::ConstructL()" )
- }
-
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -510,7 +540,6 @@
return static_cast<CMceInSession*>(iSession);
}
-
// -----------------------------------------------------------------------------
// Check if incoming session is originated from VideoSharing 2.2 client,
// which sends PRACK for 180 Ringing whether it is required or not. In
@@ -519,7 +548,7 @@
// -----------------------------------------------------------------------------
//
void CMusEngReceiveSession::PrepareToRequire100RelL(
- TMceTransactionDataContainer* aContainer)
+ TMceTransactionDataContainer* aContainer)
{
MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::PrepareToRequire100RelL()" )
@@ -538,15 +567,13 @@
iSession->SetModifierL( KMce100Rel, KMce100RelRequired );
MUS_LOG( "mus: [ENGINE] Forced to require 100rel" )
}
- }
-
+ }
}
CleanupStack::PopAndDestroy( headers );
MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::PrepareToRequire100RelL()" )
- }
-
+ }
// -----------------------------------------------------------------------------
// Check that incoming session contains only incoming video and audio
@@ -673,14 +700,15 @@
iSession->UpdateL();
// Now session state is right to adjust volume
- SetSpeakerVolumeL( VolumeL() );
+ SetSpeakerVolumeL( LcVolumeL() );
- iSipProfileHandler->CreateProfileL( iSession->Profile() );
-
+ iSipProfileHandler->CreateProfileL( iSession->Profile() );
+
+ iRemoteVideoPlayer->SetMceSession( iSession );
+
MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::CompleteSessionStructureL()" )
}
-
// -----------------------------------------------------------------------------
// Parse P-Asserted-Identity Header
// -----------------------------------------------------------------------------
@@ -754,3 +782,67 @@
delete headers;
MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::AssertedIdentity()" )
}
+
+// -----------------------------------------------------------------------------
+// RTP Inactivity timeout event
+// Once inactivity timeout occurs, state change is notified and receiving
+// and buffering statuses are cleared. That is safe to do as once receiving
+// again continues for real, buffering and streaming events will occur always
+// sequentially. If buffering status would not be cleared, some unwanted
+// sreaming events would be passed towards client when it disables/enables
+// display sink of remote stream while inactivity timer has expired.
+// -----------------------------------------------------------------------------
+//
+void CMusEngReceiveSession::InactivityTimeout( CMceMediaStream& aStream,
+ CMceRtpSource& /*aSource*/ )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::InactivityTimeout()" )
+
+ if ( aStream.Type() == KMceVideo && iReceiving )
+ {
+ iReceiving = EFalse;
+ iBuffered = EFalse;
+ InformObserverAboutPlayerStateChange( iRemoteVideoPlayer );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::InactivityTimeout()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngReceiveSession::ReceivingStarted()
+ {
+ if ( iSession && iBuffered )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::ReceivingStarted()" )
+
+ TInt err = MusEngMceUtils::EnableInactivityTimer(
+ *iSession, iReceivingInactivityTimeout );
+
+ if ( err != KErrNone )
+ {
+ MUS_LOG1("mus: [ENGINE] ReceivingStarted failed %d", err)
+ InformObserverAboutSessionFailure( err );
+ }
+ else
+ {
+ iReceiving = ETrue;
+ InformObserverAboutPlayerStateChange( iRemoteVideoPlayer );
+ InformUiProviderAboutReceivingStart();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::ReceivingStarted()" )
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngReceiveSession::IsDisplayActive()
+ {
+ return ( IsDisplayEnabled() && iReceiving );
+ }
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musengremotevideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,130 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// USER
+#include "musengremotevideoplayer.h"
+#include "musengmceutils.h"
+#include "musengdisplayhandler.h"
+
+// SYSTEM
+#include <mcesession.h>
+#include <mcevideostream.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngRemoteVideoPlayer* CMusEngRemoteVideoPlayer::NewL(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl )
+ {
+ return new( ELeave )CMusEngRemoteVideoPlayer(
+ aDisplayHandler, aLcAudioControl );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngRemoteVideoPlayer::CMusEngRemoteVideoPlayer(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ CMusEngVideoPlayerBase( aDisplayHandler, aLcAudioControl )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngRemoteVideoPlayer::~CMusEngRemoteVideoPlayer()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer::TLcVideoPlayerState
+CMusEngRemoteVideoPlayer::LcVideoPlayerState() const
+ {
+ if ( !iMceSession )
+ {
+ return MLcVideoPlayer::EUnavailable;
+ }
+ CMceVideoStream* stream = NULL;
+ TRAPD( err, stream = MusEngMceUtils::GetVideoInStreamL( *iMceSession ) )
+ TLcVideoPlayerState playerState = MLcVideoPlayer::EUnavailable;
+ if ( err == KErrNone && stream )
+ {
+ switch ( stream->State() )
+ {
+ case CMceMediaStream::EInitialized:
+ {
+ playerState = MLcVideoPlayer::EInit;
+ break;
+ }
+ case CMceMediaStream::EBuffering:
+ {
+ playerState = MLcVideoPlayer::EBuffering;
+ break;
+ }
+ case CMceMediaStream::EIdle:
+ case CMceMediaStream::EDisabled:
+ {
+ playerState = MLcVideoPlayer::EPaused;
+ break;
+ }
+ case CMceMediaStream::EStreaming:
+ {
+ // MCE stream state does not contain RTP activity information
+ playerState = iDisplayHandler.IsDisplayActive() ?
+ MLcVideoPlayer::EPlaying : MLcVideoPlayer::EPaused;
+ break;
+ }
+ default: // Other MCE stream states: MLcVideoPlayer::EUnavailable
+ {
+ break;
+ }
+ }
+ }
+ return playerState;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngRemoteVideoPlayer::LcIsPlayingL()
+ {
+ if ( !iMceSession )
+ {
+ return EFalse;
+ }
+ CMceMediaStream* stream = MusEngMceUtils::GetVideoInStreamL( *iMceSession );
+ TBool isPlaying( EFalse );
+
+ if ( iMceSession->State() == CMceSession::EEstablished &&
+ stream &&
+ stream->State() == CMceMediaStream::EStreaming )
+ {
+ isPlaying = ETrue;
+ }
+
+ return isPlaying;
+ }
--- a/mmsharing/mmshengine/src/musengsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-// USER INCLUDES
-#include "musengsession.h"
-#include "musengsessionobserver.h"
-#include "musengtelephoneutils.h"
-#include "muslogger.h"
-
-// SYSTEM INCLUDES
-
-#include <e32cmn.h>
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngSession::~CMusEngSession() // destruct - virtual, so no export
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngSession::~CMusEngSession()" )
- delete iTelephoneUtils;
- MUS_LOG( "mus: [ENGINE] <- CMusEngSession::~CMusEngSession()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TRect CMusEngSession::Rect() const
- {
- MUS_LOG( "mus: [ENGINE] CMusEngSession::Rect()" )
- return iRect;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::SetRectL( const TRect& aRect )
- {
- MUS_LOG( "mus: [ENGINE] CMusEngSession::SetRect()" )
- iRect = aRect;
- RectChangedL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CMusEngSession::AudioRoutingCanBeChanged() const
- {
- return iTelephoneUtils->AudioRoutingCanBeChanged();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CMusEngSession::IsAudioRoutingHeadset() const
- {
- return iTelephoneUtils->IsAudioRoutingHeadset();
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CMusEngSession::IsAudioRoutingLoudSpeaker() const
- {
- return iTelephoneUtils->IsAudioRoutingLoudSpeaker();
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::EnableLoudspeakerL( TBool aEnable,
- TBool aShowDialog )
- {
- TRAPD( error, iTelephoneUtils->LoudspeakerL( aEnable, aShowDialog ) )
-
- if ( error != KErrNone )
- {
- // This is writed for emulator use
- if ( error != KErrNotSupported )
- {
- MUS_LOG1( "mus: [ENGINE] CMusEngSession::EnableLoudspeakerL() Leave: #%d",
- error)
- User::Leave( error );
- }
- // Not leave in emulator if KErrNotSupported
- #if (!defined (__WINS__) && !defined(__WINSCW__))
- User::Leave( error );
- #endif
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CMusEngSession::IsLoudSpeakerEnabled() const
- {
- return iTelephoneUtils->IsLoudSpeakerEnabled();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CMusEngSession::VolumeL() const
- {
- return iTelephoneUtils->GetVolume();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::MuteMicL( TBool aMute )
- {
- iTelephoneUtils->MuteMicL( aMute );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CMusEngSession::IsMicMutedL()
- {
- return iTelephoneUtils->IsMicMutedL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::SetAudioRoutingObserver(
- MMusEngAudioRoutingObserver* aObserver )
- {
- iTelephoneUtils->SetAudioRoutingObserver( aObserver );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::SetVolumeChangeObserver(
- MMusEngVolumeChangeObserver* aObserver )
- {
- iVolumeObserver = aObserver;
- }
-
-
-// -----------------------------------------------------------------------------
-// Increases CS call volume level by one.
-// Leaves if error occurs when accessing central repository.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::VolumeUpL( )
- {
- TInt currentVolume = iTelephoneUtils->GetVolume();
- iTelephoneUtils->SetVolumeL( currentVolume + 1 );
- }
-
-
-// -----------------------------------------------------------------------------
-// Decreases CS call volume level by one.
-// Leaves if error occurs when accessing central repository.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::VolumeDownL( )
- {
- TInt currentVolume = iTelephoneUtils->GetVolume();
- iTelephoneUtils->SetVolumeL( currentVolume - 1 );
- }
-
-// -----------------------------------------------------------------------------
-// Set CS call volume value
-// Leaves if error occurs when accessing central repository.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::SetVolumeL( TInt aVal )
- {
- iTelephoneUtils->SetVolumeL( aVal );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngSession::CMusEngSession( const TRect& aRect )
- :iRect( aRect )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngSession::ConstructL() // second-phase constructor
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngSession::ConstructL()" )
- iTelephoneUtils = CMusEngTelephoneUtils::NewL();
- iTelephoneUtils->SetVolumeChangeObserver( this );
- MUS_LOG( "mus: [ENGINE] <- CMusEngSession::ConstructL()" )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngSession::VolumeChanged( TInt aVolume, TBool aAudioRouteChanged )
- {
- if ( iVolumeObserver )
- {
- iVolumeObserver->VolumeChanged( aVolume, aAudioRouteChanged );
- }
- }
--- a/mmsharing/mmshengine/src/musengsessiondurationtimer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengsessiondurationtimer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -99,17 +99,6 @@
}
}
-// -------------------------------------------------------------------------
-// If RunL() leaves,It should be handled here.
-// -------------------------------------------------------------------------
-//
-TInt CMusEngSessionDurationTimer::RunError( TInt aError )
- {
- // Nothing can be done here.
- aError = KErrNone;
-
- return aError;
- }
// -----------------------------------------------------------------------------
//
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musengsessionmanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "musengsessionmanager.h"
+#include "musenglivesession.h"
+#include "musengclipsession.h"
+#include "musengreceivesession.h"
+#include "musengtwowaysession.h"
+#include "musengtwowayrecvsession.h"
+#include "mussessionproperties.h"
+#include "muspropertywatch.h"
+#include <lcsession.h>
+#include <lcuiprovider.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager* CMusEngSessionManager::NewL()
+ {
+ CMusEngSessionManager* self = new( ELeave )CMusEngSessionManager();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager::~CMusEngSessionManager()
+ {
+ delete iUseCaseWatch;
+ delete iSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager::CMusEngSessionManager()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngSessionManager::ConstructL()
+ {
+ TInt useCase;
+ User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KUseCase,
+ useCase ) );
+ iSession = CreateMusSessionL(
+ static_cast< MultimediaSharing::TMusUseCase >( useCase ) );
+
+ iUseCaseWatch = CMusPropertyWatch::NewL(
+ *this, NMusSessionApi::KCategoryUid, NMusSessionApi::KUseCase );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MLcSession& CMusEngSessionManager::Session()
+ {
+ return *iSession;
+ }
+
+// -----------------------------------------------------------------------------
+// If usecase changes while background startup is active, client is
+// notified about change by bringing it to foreground and changing current
+// active session. Old session is terminated immediately after notification.
+// -----------------------------------------------------------------------------
+//
+void CMusEngSessionManager::PropertyChanged(
+ const TUint /*aKey*/,
+ const TInt aValue )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngSessionManager::PropertyChanged, val:%d",
+ aValue )
+
+ if ( iSession->IsBackgroundStartup() && aValue != iCurrentUseCase )
+ {
+ MUS_LOG( "mus: [ENGINE] Usecase changed!" )
+ MLcUiProvider* uiProvider = iSession->LcUiProvider();
+ if ( uiProvider )
+ {
+ CMusEngMceSession* newSession = NULL;
+ TRAP_IGNORE( newSession = CreateMusSessionL(
+ static_cast< MultimediaSharing::TMusUseCase >( aValue ) ) );
+ if ( newSession )
+ {
+ MUS_LOG( "mus: [ENGINE] Set new active session" )
+ CMusEngMceSession* oldSession = iSession;
+ iSession = newSession;
+ iSession->SetForegroundStatus( ETrue );
+ uiProvider->HandleForegroundStatus( ETrue );
+ delete oldSession;
+ }
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngSessionManager::PropertyChanged" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngSessionManager::HandlePropertyError( const TInt /*aReason*/ )
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngSessionManager::IsFeatureSupported( TLcFeature aLcFeature )
+ {
+ return ( aLcFeature == ELcShowInvitingNote ||
+ aLcFeature == ELcShowWaitingNote ||
+ aLcFeature == ELcShowAcceptQuery );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession* CMusEngSessionManager::CreateMusSessionL(
+ MultimediaSharing::TMusUseCase aUseCase )
+ {
+ CMusEngMceSession* session = NULL;
+ switch ( aUseCase )
+ {
+ case MultimediaSharing::EMusLiveVideo:
+ {
+ session = CMusEngLiveSession::NewL();
+ break;
+ }
+ case MultimediaSharing::EMusClipVideo:
+ {
+ session = CMusEngClipSession::NewL();
+ break;
+ }
+ case MultimediaSharing::EMusReceive:
+ {
+ session = CMusEngReceiveSession::NewL();
+ break;
+ }
+ case MultimediaSharing::EMusTwoWayVideo:
+ {
+ session = CMusEngTwoWaySession::NewL();
+ break;
+ }
+ case MultimediaSharing::EMusReceiveTwoWayVideo:
+ {
+ session = CMusEngTwoWayRecvSession::NewL();
+ break;
+ }
+ default:
+ User::Leave( KErrNotSupported );
+ break;
+ }
+ iCurrentUseCase = aUseCase;
+ return session;
+ }
+
+// End of File
--- a/mmsharing/mmshengine/src/musengtelephoneutils.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengtelephoneutils.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -19,31 +19,74 @@
// USER
#include "musengtelephoneutils.h"
#include "musengaudioroutingobserver.h"
-#include "musengmcesession.h"
-#include "musengvolumechangeobserver.h"
#include "muslogger.h"
// SYSTEM
#include <centralrepository.h>
-#include <telephonydomaincrkeys.h>
+#include <telincallvolcntrlcrkeys.h>
#include <e32property.h>
#include <telephonydomainpskeys.h>
#include <CPhCltCommandHandler.h> // for CPhCltCommandHandler
+// Constants
+const TInt KMusEngMaxVolume = 10;
+const TInt KMusEngMinVolume = 0;
+
+
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-CMusEngTelephoneUtils* CMusEngTelephoneUtils::NewL()
+CMusEngTelephoneUtils* CMusEngTelephoneUtils::NewL(
+ MMusEngAudioRoutingObserver& aAudioRoutingObserver )
{
- CMusEngTelephoneUtils* self = new( ELeave ) CMusEngTelephoneUtils();
+ CMusEngTelephoneUtils* self =
+ new( ELeave )CMusEngTelephoneUtils( aAudioRoutingObserver );
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
return self;
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTelephoneUtils::CMusEngTelephoneUtils(
+ MMusEngAudioRoutingObserver& aAudioRoutingObserver )
+ : CActive( CActive::EPriorityStandard ),
+ iAudioRoutingObserver( aAudioRoutingObserver )
+ {
+ iAudioOutputAtStartup = CTelephonyAudioRouting::ENotActive;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTelephoneUtils::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::ConstructL()" )
+
+ // Volume control
+ iRepository = CRepository::NewL( KCRUidInCallVolume );
+
+ // Audio routing control
+ iTelephonyAudioRouting = CTelephonyAudioRouting::NewL( *this );
+
+ iAudioOutputAtStartup = iTelephonyAudioRouting->Output();
+
+ // Phone
+ MUS_LOG( "mus: [ENGINE] Use static DLL" )
+ iPhoneCommandHandler = CPhCltCommandHandler::NewL();
+
+ CActiveScheduler::Add( this );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::ConstructL()" )
+ }
// -----------------------------------------------------------------------------
//
@@ -61,43 +104,34 @@
{
CTelephonyAudioRouting::TAudioOutput currentMode =
iTelephonyAudioRouting->Output();
- MUS_LOG1( "mus: [ENGINE] iAudioOutputAtStartup: %d", iAudioOutputAtStartup );
- MUS_LOG1( "mus: [ENGINE] currentMode: %d", currentMode );
- // When active call is dropped, audio output is set to ENotActive,
- // but in some cases Mush engine get deleted before OutputChanged()
- // notification comes. In that case we shouldn't touch output.
- if( currentMode != iAudioOutputAtStartup &&
- currentMode != CTelephonyAudioRouting::ENotActive )
+ if( currentMode != iAudioOutputAtStartup )
{
// As going down, let audiorouting api to show notification
iTelephonyAudioRouting->SetShowNote( ETrue );
- TRAPD( err, DoSetOutputL( iAudioOutputAtStartup ) );
+ TRAPD( err,
+ iTelephonyAudioRouting->SetOutputL( iAudioOutputAtStartup ) )
MUS_LOG1( "mus: [ENGINE] final route change completed: %d", err )
err++;
- }
+ }
}
- if ( iNotifier )
- {
- iNotifier->StopListening();
- delete iNotifier;
- }
-
delete iRepository;
delete iTelephonyAudioRouting;
MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::~CMusEngTelephoneUtils()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-TBool CMusEngTelephoneUtils::AudioRoutingCanBeChanged() const
+TBool CMusEngTelephoneUtils::AudioRoutingCanBeChanged()
{
MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::AudioRoutingCanBeChanged" )
- TBool retValue = (
+ TBool retValue = ( iTelephonyAudioRouting->Output() !=
+ CTelephonyAudioRouting::EWiredAudioAccessory &&
+ iTelephonyAudioRouting->Output() !=
+ CTelephonyAudioRouting::EBTAudioAccessory &&
iTelephonyAudioRouting->Output() !=
CTelephonyAudioRouting::ETTY );
@@ -107,107 +141,46 @@
return retValue;
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusEngTelephoneUtils::IsAudioRoutingHeadset() const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::IsAudioRoutingHeadset" )
-
- TBool retValue = ( iTelephonyAudioRouting->Output() ==
- CTelephonyAudioRouting::EBTAudioAccessory ||
- iTelephonyAudioRouting->Output() ==
- CTelephonyAudioRouting::EWiredAudioAccessory );
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngTelephoneUtils::IsAudioRoutingHeadset: %d",
- retValue )
-
- return retValue;
- }
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-TBool CMusEngTelephoneUtils::IsAudioRoutingLoudSpeaker() const
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::IsAudioRoutingLoudSpeaker" )
- TBool retValue = EFalse;
-
- CTelephonyAudioRouting::TAudioOutput currentMode =
- iTelephonyAudioRouting->Output();
- MUS_LOG1( "mus: [ENGINE] iAudioOutputAtStartup: %d", iAudioOutputAtStartup );
- MUS_LOG1( "mus: [ENGINE] currentMode: %d", currentMode );
-
- if( currentMode != iAudioOutputAtStartup &&
- currentMode == CTelephonyAudioRouting::ELoudspeaker )
- {
-
- retValue = ETrue;
-
- }
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngTelephoneUtils::IsAudioRoutingLoudSpeaker: %d",
- retValue )
-
- return retValue;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::LoudspeakerL( TBool aEnable, TBool aShowDialog )
+void CMusEngTelephoneUtils::LoudspeakerL( TBool aEnable )
{
MUS_LOG1( "mus: [ENGINE] -> CMusEngTelephoneUtils::LoudspeakerL(%d)",
aEnable )
+ // Disable note shown by audiorouting api as it causes
+ // application going to background for a while. Instead, display
+ // note by ourselves once setting output completes. This mechanism
+ // is needed only for loudspeaker enabling as going to background
+ // causes problems only at beginning of sharing session.
+ iTelephonyAudioRouting->SetShowNote( EFalse );
if ( aEnable )
{
if ( iTelephonyAudioRouting->Output() ==
- CTelephonyAudioRouting::EHandset ||
- iTelephonyAudioRouting->Output() ==
- CTelephonyAudioRouting::EBTAudioAccessory||
- iTelephonyAudioRouting->Output() ==
- CTelephonyAudioRouting::EWiredAudioAccessory )
+ CTelephonyAudioRouting::EHandset )
{
- // Disable note shown by audiorouting api as it causes
- // application going to background for a while. Instead, display
- // note by ourselves once setting output completes. This mechanism
- // is needed only for loudspeaker enabling as going to background
- // causes problems only at beginning of sharing session.
- if ( aShowDialog )
- {
- iTelephonyAudioRouting->SetShowNote( EFalse );
-
- iShowDialog = aShowDialog;
- }
-
- DoSetOutputL( CTelephonyAudioRouting::ELoudspeaker );
+ iTelephonyAudioRouting->SetOutputL(
+ CTelephonyAudioRouting::ELoudspeaker );
}
}
else
- {
- iTelephonyAudioRouting->SetShowNote( aShowDialog );
-
+ {
if ( iAudioOutputAtStartup == CTelephonyAudioRouting::ELoudspeaker )
{
- DoSetOutputL( CTelephonyAudioRouting::EHandset );
+ iTelephonyAudioRouting->SetOutputL(
+ CTelephonyAudioRouting::EHandset );
}
else
{
- DoSetOutputL( iAudioOutputAtStartup );
+ iTelephonyAudioRouting->SetOutputL( iAudioOutputAtStartup );
}
}
-
-
MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::LoudspeakerL(...)" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -219,16 +192,7 @@
}
// -----------------------------------------------------------------------------
-// Returns locally cached the CS call volume level.
-// -----------------------------------------------------------------------------
-//
-TInt CMusEngTelephoneUtils::GetVolume() const
- {
- return iCurrentVolume;
- }
-
-// -----------------------------------------------------------------------------
-// Gets the CS call volume level from central repository.
+// Gets the CS call volume level.
// Leaves if error occurs when accessing central repository.
// -----------------------------------------------------------------------------
//
@@ -245,11 +209,9 @@
User::LeaveIfError( iRepository->Get( KTelIncallEarVolume,
currentVolume ) );
}
-
return ValidateVolume( currentVolume );
}
-
// -----------------------------------------------------------------------------
// Sets the CS call volume level.
// Leaves if error occurs when accessing central repository.
@@ -258,8 +220,8 @@
void CMusEngTelephoneUtils::SetVolumeL( TInt aVolume )
{
TInt newVolume = ValidateVolume( aVolume );
- MUS_LOG1( "mus: [ENGINE] -> CMusEngTelephoneUtils::SetVolumeL(), %d", newVolume )
- if ( iCurrentVolume != newVolume )
+
+ if ( GetVolumeL() != newVolume )
{
if ( IsLoudSpeakerEnabled() )
{
@@ -271,11 +233,9 @@
User::LeaveIfError( iRepository->Set( KTelIncallEarVolume,
newVolume ) );
}
- iCurrentVolume = newVolume;
}
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -296,7 +256,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::MuteMicL()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -316,27 +275,6 @@
return ( psVal == EPSTelMicMuteOn );
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::SetAudioRoutingObserver(
- MMusEngAudioRoutingObserver* aObserver )
- {
- iAudioRoutingObserver = aObserver;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::SetVolumeChangeObserver(
- MMusEngVolumeChangeObserver* aObserver )
- {
- iVolumeObserver = aObserver;
- }
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -352,23 +290,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::RunL()" )
}
-// -------------------------------------------------------------------------
-// If RunL() leaves,It should be handled here.
-// -------------------------------------------------------------------------
-//
-TInt CMusEngTelephoneUtils::RunError( TInt aError )
- {
- MUS_LOG1( "mus: [ENGINE] -> CMusEngTelephoneUtils::\
- RunError() return #%d", aError )
-
- // Nothing can be done here.
- aError = KErrNone;
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::RunError()" )
- return aError;
- }
-
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -383,26 +304,24 @@
}
MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::DoCancel()" )
- }
-
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void CMusEngTelephoneUtils::AvailableOutputsChanged(
- CTelephonyAudioRouting& /*aTelephonyAudioRouting*/ )
+ CTelephonyAudioRouting& /*aTelephonyAudioRouting*/ )
{
// NOP
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void CMusEngTelephoneUtils::OutputChanged(
- CTelephonyAudioRouting& aTelephonyAudioRouting )
+ CTelephonyAudioRouting& aTelephonyAudioRouting )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::OutputChanged()" )
@@ -413,13 +332,8 @@
MUS_LOG1( "mus: [ENGINE] New audio routing is %d", iAudioOutputAtStartup )
- if ( iAudioRoutingObserver )
- {
- iAudioRoutingObserver->AudioRoutingChanged( EFalse );
- }
-
- UpdateCurrentVolume(ETrue);
-
+ iAudioRoutingObserver.AudioRoutingChanged();
+
MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::OutputChanged()" )
}
@@ -429,97 +343,18 @@
// -----------------------------------------------------------------------------
//
void CMusEngTelephoneUtils::SetOutputComplete(
- CTelephonyAudioRouting& /*aTelephonyAudioRouting*/,
- TInt aError )
+ CTelephonyAudioRouting& /*aTelephonyAudioRouting*/,
+ TInt aError )
{
MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::SetOutputComplete()" )
if ( aError == KErrNone )
{
- if ( iAudioRoutingObserver )
- {
- // If audio routing api didn't shown note and show dialog mode is on,
- // we know that this completion is for such setoutput call for which
- // we need to show the note. Show note mode is turned off only in that
- // case.
- TBool dialogShownByUs( EFalse );
- TBool dialogShownByAudioRouting( EFalse );
- aError = iTelephonyAudioRouting->GetShowNote( dialogShownByAudioRouting );
- if ( aError == KErrNone && !dialogShownByAudioRouting && iShowDialog )
- {
- dialogShownByUs = iShowDialog;
- iShowDialog = EFalse;
- }
-
- iAudioRoutingObserver->AudioRoutingChanged( dialogShownByUs );
- }
-
- UpdateCurrentVolume(ETrue);
+ iAudioRoutingObserver.AudioRoutingChanged();
}
MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::SetOutputComplete()" )
}
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::UpdateCurrentVolume( TBool aAudioRouteChanged )
- {
- TInt volume(0);
- TRAPD(error, volume = GetVolumeL() );
- if( (KErrNone == error) && (iCurrentVolume != volume) )
- {
- iCurrentVolume = volume;
- if ( iVolumeObserver )
- {
- iVolumeObserver->VolumeChanged( volume, aAudioRouteChanged );
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngTelephoneUtils::CMusEngTelephoneUtils()
- : CActive( CActive::EPriorityStandard )
- {
- iAudioOutputAtStartup = CTelephonyAudioRouting::ENotActive;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::ConstructL()
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::ConstructL()" )
-
- // Volume control
- iRepository = CRepository::NewL( KCRUidInCallVolume );
-
- iNotifier = CCenRepNotifyHandler::NewL( *this, *iRepository );
- iNotifier->StartListeningL();
-
- // Audio routing control
- iTelephonyAudioRouting = CTelephonyAudioRouting::NewL( *this );
-
- iAudioOutputAtStartup = iTelephonyAudioRouting->Output();
- MUS_LOG1( "mus: [ENGINE] iAudioOutputAtStartup: %d", iAudioOutputAtStartup );
- // Phone
- MUS_LOG( "mus: [ENGINE] Use static DLL" )
- iPhoneCommandHandler = CPhCltCommandHandler::NewL();
-
- iCurrentVolume = GetVolumeL();
-
- CActiveScheduler::Add( this );
-
- MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::ConstructL()" )
- }
-
// -----------------------------------------------------------------------------
// Validates that requested volume level is valid (between 1-10) and if it is
@@ -543,61 +378,3 @@
return aVolume;
}
-
-
-// -----------------------------------------------------------------------------
-// Set output if setting is currently allowed.
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::DoSetOutputL(
- CTelephonyAudioRouting::TAudioOutput aAudioOutput )
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::DoSetOutputL()" )
- if ( iAudioRoutingObserver && !iAudioRoutingObserver->AudioRouteChangeAllowed() )
- {
- MUS_LOG( "mus: [ENGINE] change not allowed!" )
- User::Leave( KErrAccessDenied );
- }
- iTelephonyAudioRouting->SetOutputL( aAudioOutput );
- MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::DoSetOutputL()" )
- }
-
-
-// ---------------------------------------------------------------------------
-// CMusEngTelephoneUtils::HandleNotifyGeneric
-// ---------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::HandleNotifyGeneric( TUint32 aId )
- {
- MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::HandleNotifyGeneric()" )
- TInt error = KErrArgument;
- TInt volume = 0;
- if ( KTelIncallEarVolume == aId )
- {
- error = iRepository->Get( KTelIncallEarVolume, volume );
- MUS_LOG1( "mus: [ENGINE] EAR volume: %d", volume );
- }
- else if ( KTelIncallLoudspeakerVolume == aId )
- {
- error = iRepository->Get( KTelIncallLoudspeakerVolume, volume );
- MUS_LOG1( "mus: [ENGINE] Loudspeakers volume: %d", volume );
- }
-
- volume = ValidateVolume(volume);
- if ( (KErrNone == error) && (iCurrentVolume != volume) )
- {
- MUS_LOG1( "mus: [ENGINE] volume changed: %d!, notifying UI...", volume )
- iCurrentVolume = volume;
- if( iVolumeObserver )
- {
- iVolumeObserver->VolumeChanged( volume, EFalse );
- }
- }
- else
- {
- MUS_LOG( "mus: [ENGINE] volume hasn't changed!, do nothing..." )
- }
-
- MUS_LOG1( "mus: [ENGINE] <- CMusEngTelephoneUtils::HandleNotifyGeneric(), error:%d",
- error );
- }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musengtwowayrecvsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,544 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengtwowayrecvsession.h"
+#include "musunittesting.h"
+#include "musengmceutils.h"
+#include "musenglogger.h"
+#include "mussipprofilehandler.h"
+#include "musenglivevideoplayer.h"
+#include "musengremotevideoplayer.h"
+
+// SYSTEM
+#include <lcsessionobserver.h>
+#include <mcemanager.h>
+#include <mcecamerasource.h>
+#include <mcevideostream.h>
+#include <mcertpsink.h>
+#include <mcedisplaysink.h>
+#include <mcesession.h>
+#include <mcertpsource.h>
+#include <mcestreambundle.h>
+#include <musmanager.h>
+
+const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+
+const TUint32 KMusEngTwoWayReceivingActivityTimeout = 5000; // 5 seconds
+// 6 seconds keepalive timer, needs to be more than receiving timeout
+const TUint8 KMusEngTwoWayRtpKeepAliveTimer = 6;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession* CMusEngTwoWayRecvSession::NewL()
+ {
+ CMusEngTwoWayRecvSession* self = new( ELeave )CMusEngTwoWayRecvSession();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()" )
+
+ delete iLiveVideoPlayer;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::EnableDisplayL() %d",
+ aEnable )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+ MusEngMceUtils::DoEnableDisplayL( *display, aEnable );
+
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+ if ( vfDisplay )
+ {
+ MusEngMceUtils::DoEnableDisplayL( *vfDisplay, aEnable );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::EnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngTwoWayRecvSession::IsDisplayEnabled()
+ {
+ TBool enabled( EFalse );
+ if ( iSession )
+ {
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplay( *iSession );
+ if ( display )
+ {
+ enabled = display->IsEnabled();
+ }
+ }
+ return enabled;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession::TDisplayOrientation CMusEngTwoWayRecvSession::OrientationL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::RotationL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+
+ TDisplayOrientation displayOrientation;
+ CMceDisplaySink::TRotation rotation( display->RotationL() );
+
+ MUS_LOG1( "mus: [ENGINE] MCE rotation is %d", rotation )
+
+ if ( rotation == CMceDisplaySink::ENone )
+ {
+ displayOrientation = CMusEngMceSession::EPortrait;
+ }
+ else
+ {
+ displayOrientation = CMusEngMceSession::ELandscape;
+ }
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::RotationL() %d",
+ displayOrientation )
+
+ return displayOrientation;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetOrientationL() %d",
+ aOrientation )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+
+ CMceDisplaySink::TRotation rotation = ( aOrientation == EPortrait ) ?
+ CMceDisplaySink::ENone : CMceDisplaySink::EClockwise90Degree;
+
+ display->SetRotationL( rotation );
+ if ( vfDisplay )
+ {
+ vfDisplay->SetRotationL( rotation );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetOrientationL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::SetRectsL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetRectsL()" )
+
+ iLocalRect = aLocalRect;
+ iRect = aRemoteRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetRectsL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::SetSecondaryRectL( const TRect& aSecondaryRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetSecondaryRectL()" )
+
+ iLocalRect = aSecondaryRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetSecondaryRectL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngTwoWayRecvSession::SecondaryRect() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SecondaryRect()" )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SecondaryRect()" )
+ return iLocalRect;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TMusEngCameraHandler& CMusEngTwoWayRecvSession::Camera()
+ {
+ return iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngTwoWayRecvSession::LocalVideoPlayer()
+ {
+ return iLiveVideoPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+void CMusEngTwoWayRecvSession::RectChangedL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::RectChangedL()" )
+
+
+ // If session is not yet created, do nothing
+ if ( iSession && iSession->State() != CMceSession::ETerminated )
+ {
+ TRect remoteRect( Rect() );
+ MUS_LOG2( "mus: [ENGINE] remote tl.ix=%d tl.iy=%d",
+ remoteRect.iTl.iX, remoteRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] remote brc%d br.iy=%d",
+ remoteRect.iBr.iX, remoteRect.iBr.iY )
+ MUS_LOG2( "mus: [ENGINE] local tl.ix=%d tl.iy=%d",
+ iLocalRect.iTl.iX, iLocalRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] local br.ix=%d br.iy=%d",
+ iLocalRect.iBr.iX, iLocalRect.iBr.iY )
+
+ if ( remoteRect != iSetRemoteRect )
+ {
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+ display->SetDisplayRectL( remoteRect );
+ iSetRemoteRect = remoteRect;
+ }
+
+ if ( iLocalRect != iSetLocalRect )
+ {
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+ if ( vfDisplay )
+ {
+ vfDisplay->SetDisplayRectL( iLocalRect );
+ }
+ iSetLocalRect = iLocalRect;
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::RectChangedL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ iCameraHandler.SetSession( iSession );
+
+ // Force bandwidth line usage in sdp as it is mandatory
+ // at MT side based on GSMA VS specification IR.74. Bandwidth is set to
+ // session or to media level based on sender's way of usage. If other end
+ // is not using bandwidth attribute at all, media level is preferred.
+ SetSessionSdpLinesL( *iSession, ETrue );
+
+ CMceStreamBundle* localBundle =
+ CMceStreamBundle::NewLC( CMceStreamBundle::ELS );
+
+ const RPointerArray<CMceMediaStream>& streams = iSession->Streams();
+
+ CMceMediaStream* videoInStream = NULL;
+ CMceMediaStream* videoOutStream = NULL;
+
+ // Search interesting video streams, sendrecv is preferred
+ TBool sendRecvVideoFound( EFalse );
+ for( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( MusEngMceUtils::IsVideoInStream( *streams[i] ) &&
+ !sendRecvVideoFound )
+ {
+ videoInStream = streams[i];
+
+ if ( streams[i]->BoundStream() )
+ {
+ videoOutStream = &streams[i]->BoundStreamL();
+ }
+ }
+ else if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoInStream( streams[i]->BoundStreamL() ) &&
+ !sendRecvVideoFound )
+ {
+ videoInStream = &streams[i]->BoundStreamL();
+
+ videoOutStream = streams[i];
+ }
+ else
+ {
+ // NOP
+ }
+
+ sendRecvVideoFound = ( videoInStream && videoOutStream );
+ }
+
+ CompleteSessionStructureAudioPartL( streams, *localBundle, videoInStream, videoOutStream );
+
+ if ( videoInStream )
+ {
+ CompleteSessionStructureInStreamL( *videoInStream, *localBundle );
+ }
+ else
+ {
+ // At least receiving video stream is required
+ User::Leave( KErrCorrupt );
+ }
+
+ if ( videoOutStream )
+ {
+ CompleteSessionStructureOutStreamL( *videoOutStream );
+ }
+
+ // Destroy bundle if it is not needed or transfer ownership
+ if ( localBundle->Streams().Count() > 1 )
+ {
+ iSession->AddBundleL( localBundle );
+ CleanupStack::Pop( localBundle );
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy( localBundle );
+ }
+
+ AdjustStreamsAndCodecsL();
+
+ iSession->UpdateL();
+
+ // Now session state is right to adjust volume
+ SetSpeakerVolumeL( LcVolumeL() );
+
+ iSipProfileHandler->CreateProfileL( iSession->Profile() );
+
+ iRemoteVideoPlayer->SetMceSession( iSession );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession::CMusEngTwoWayRecvSession()
+ : CMusEngReceiveSession()
+ {
+ iMceManagerUid.iUid = CMusManager::ESipInviteDesired2WayVideo;
+
+ iSetRemoteRect = TRect(
+ KMusEngRectNotInit, KMusEngRectNotInit, KMusEngRectNotInit, KMusEngRectNotInit );
+ iSetLocalRect = TRect(
+ KMusEngRectNotInit, KMusEngRectNotInit, KMusEngRectNotInit, KMusEngRectNotInit );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::ConstructL()" )
+
+ iCameraHandler.ReadCameraUsageKeyL();
+ CMusEngReceiveSession::ConstructL();
+
+ iLiveVideoPlayer =
+ CMusEngLiveVideoPlayer::NewL( *this, iCameraHandler, *this );
+
+ // Override receiving timeout and keepalive values of
+ // normal one-way receiving session
+ //
+ iReceivingInactivityTimeout = KMusEngTwoWayReceivingActivityTimeout;
+ iKeepaliveTimer = KMusEngTwoWayRtpKeepAliveTimer;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// When checking audio streams also not interesting streams are removed from
+// session. Stream if removed if one of following apply:
+// 1. Is not and does not contain incoming video or audio
+// 2. We already have one incoming video stream
+// 3. Stream is audio and we run operator variant where audio is
+// not allowed.
+// 4. Two-way video exists and this one is audio
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL(
+ const RPointerArray<CMceMediaStream>& aStreams,
+ CMceStreamBundle& aLocalBundle,
+ CMceMediaStream* aVideoInStream,
+ CMceMediaStream* aVideoOutStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL()" )
+
+ // Audio streams not allowed in two-way session or in operator variant
+ TBool audioAllowed( !( aVideoInStream && aVideoOutStream ) && !iOperatorVariant );
+
+ for( TInt i = 0; i < aStreams.Count(); ++i )
+ {
+ // Audio supported currently only in recvonly case
+ if ( audioAllowed &&
+ MusEngMceUtils::IsAudioInStream( *aStreams[i] ) )
+ {
+ MusEngMceUtils::AddSpeakerL( *aStreams[i] );
+
+ aLocalBundle.AddStreamL( *aStreams[i] );
+
+ // Disable possible opposite stream to indicate that sendrecv audio is
+ // not allowed.
+ if ( aStreams[i]->BoundStream() )
+ {
+ MusEngMceUtils::DisableStreamL( aStreams[i]->BoundStreamL() );
+ }
+ }
+ else if ( audioAllowed &&
+ aStreams[i]->BoundStream() &&
+ MusEngMceUtils::IsAudioInStream( aStreams[i]->BoundStreamL() ) )
+ {
+ MusEngMceUtils::AddSpeakerL( aStreams[i]->BoundStreamL() );
+
+ aLocalBundle.AddStreamL( aStreams[i]->BoundStreamL() );
+
+ // Disable opposite stream to indicate that sendrecv audio is not allowed.
+ MusEngMceUtils::DisableStreamL( *aStreams[i] );
+ }
+ else if ( aStreams[ i ] != aVideoInStream && aStreams[ i ] != aVideoOutStream )
+ {
+ iSession->RemoveStreamL( *aStreams[i] );
+
+ // Since succesfull removal of a stream has decreased the amount
+ // of streams in array by one, we have to modify the index
+ --i;
+ }
+ else
+ {
+ // NOP
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL(
+ CMceMediaStream& aVideoInStream, CMceStreamBundle& aLocalBundle )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL()" )
+
+ SetMediaSdpLinesL( aVideoInStream, ETrue );
+
+ MusEngMceUtils::AddDisplayL( aVideoInStream, *iManager, Rect() );
+
+ static_cast<CMceRtpSource*>(aVideoInStream.Source())->UpdateL(
+ KMusEngJitterBufferLength,
+ KMusEngJitterBufferTreshold,
+ KMusEngTwoWayReceivingActivityTimeout );
+
+ aLocalBundle.AddStreamL( aVideoInStream );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL(
+ CMceMediaStream& aVideoOutStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL()" )
+
+ SetMediaSdpLinesL( aVideoOutStream, ETrue );
+
+ CMceCameraSource* camera = NULL;
+ TRAP_IGNORE( camera = MusEngMceUtils::GetCameraL( *iSession ) )
+ if ( !camera )
+ {
+ camera = CMceCameraSource::NewLC( *iManager );
+ aVideoOutStream.SetSourceL( camera );
+ CleanupStack::Pop( camera );
+ }
+
+ camera->DisableL(); // Start session in pause mode.
+
+ iCameraHandler.InitializeL( *camera );
+
+ CMceVideoStream* vfStream = CMceVideoStream::NewLC();
+
+ vfStream->SetSourceL( aVideoOutStream.Source() );
+
+ // Complete stream, vf display is disabled at creation phase if doing bg startup
+ MusEngMceUtils::AddDisplayL( *vfStream, *iManager, SecondaryRect(), IsBackgroundStartup() );
+
+ iSession->AddStreamL( vfStream );
+ CleanupStack::Pop( vfStream );
+
+ iLiveVideoPlayer->SetMceSession( iSession );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL()" )
+ }
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musengtwowaysession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,530 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengtwowaysession.h"
+#include "musunittesting.h"
+#include "musengmceutils.h"
+#include "musenglogger.h"
+#include "musengremotevideoplayer.h"
+#include "musenglivevideoplayer.h"
+
+// SYSTEM
+#include <lcsessionobserver.h>
+#include <mcemanager.h>
+#include <mcecamerasource.h>
+#include <mcevideostream.h>
+#include <mcertpsink.h>
+#include <mcedisplaysink.h>
+#include <mcesession.h>
+#include <mcertpsource.h>
+#include <mcevideocodec.h>
+
+const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+
+const TUint32 KMusEngTwoWayReceivingActivityTimeout = 5000; // 5 seconds
+// 6 seconds keepalive timer, needs to be more than receiving timeout
+const TUint8 KMusEngTwoWayRtpKeepAliveTimer = 6;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession* CMusEngTwoWaySession::NewL()
+ {
+ CMusEngTwoWaySession* self = new( ELeave )CMusEngTwoWaySession();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession::~CMusEngTwoWaySession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::~CMusEngTwoWaySession()" )
+
+ delete iRemoteVideoPlayer;
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::~CMusEngTwoWaySession()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWaySession::EnableDisplayL() %d",
+ aEnable )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplay( *iSession );
+ if ( display )
+ {
+ MusEngMceUtils::DoEnableDisplayL( *display, aEnable );
+ }
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetDisplayL( *iSession, ETrue );
+ MusEngMceUtils::DoEnableDisplayL( *vfDisplay, aEnable );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::EnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWaySession::SetOrientationL() %d",
+ aOrientation )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplay( *iSession );
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetDisplayL( *iSession, ETrue );
+
+ CMceDisplaySink::TRotation rotation = ( aOrientation == EPortrait ) ?
+ CMceDisplaySink::ENone : CMceDisplaySink::EClockwise90Degree;
+
+ vfDisplay->SetRotationL( rotation );
+ if ( display )
+ {
+ display->SetRotationL( rotation );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetOrientationL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::EnableLcFileL( TBool /*aEnable*/ )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::EnableLcFileL" )
+
+ User::Leave( KErrNotSupported );
+
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::EnableLcFileL" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::SetRectsL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SetRectsL()" )
+
+ iLocalRect = aLocalRect;
+ iRect = aRemoteRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetRectsL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::SetSecondaryRectL( const TRect& aSecondaryRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SetSecondaryRectL()" )
+
+ iLocalRect = aSecondaryRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetSecondaryRectL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngTwoWaySession::SecondaryRect() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SecondaryRect()" )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SecondaryRect()" )
+ return iLocalRect;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngTwoWaySession::IsDisplayEnabled()
+ {
+ TBool enabled( EFalse );
+ if ( iSession )
+ {
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplay( *iSession );
+ if ( !display )
+ {
+ display = MusEngMceUtils::GetVfDisplay( *iSession );
+ }
+ if ( display )
+ {
+ enabled = display->IsEnabled();
+ }
+ }
+ return enabled;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngTwoWaySession::IsDisplayActive()
+ {
+ return ( IsDisplayEnabled() && iReceiving );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngTwoWaySession::RemoteVideoPlayer()
+ {
+ return iRemoteVideoPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::RectChangedL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::RectChangedL()" )
+
+ // If session is not yet created, do nothing
+ if ( iSession && iSession->State() != CMceSession::ETerminated )
+ {
+ TRect remoteRect( Rect() );
+ MUS_LOG2( "mus: [ENGINE] remote tl.ix=%d tl.iy=%d",
+ remoteRect.iTl.iX, remoteRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] remote br.ix=%d br.iy=%d",
+ remoteRect.iBr.iX, remoteRect.iBr.iY )
+ MUS_LOG2( "mus: [ENGINE] local tl.ix=%d tl.iy=%d",
+ iLocalRect.iTl.iX, iLocalRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] local br.ix=%d br.iy=%d",
+ iLocalRect.iBr.iX, iLocalRect.iBr.iY )
+
+ if ( remoteRect != iSetRemoteRect )
+ {
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplay( *iSession );
+ if ( display )
+ {
+ MUS_LOG( "mus: [ENGINE] set remote rect" )
+ display->SetDisplayRectL( remoteRect );
+ iSetRemoteRect = remoteRect;
+ }
+ }
+
+ if ( iLocalRect != iSetLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] set local rect" )
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetDisplayL( *iSession, ETrue );
+ vfDisplay->SetDisplayRectL( iLocalRect );
+ iSetLocalRect = iLocalRect;
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::RectChangedL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::CompleteSessionStructureL(
+ CMceStreamBundle& /*aLocalBundle*/ )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::CompleteSessionStructureL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ iCameraHandler.SetSession( iSession );
+
+ // Create outgoing video stream
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+
+ CMceRtpSink* rtpsink = CMceRtpSink::NewLC();
+ videoStream->AddSinkL( rtpsink );
+ CleanupStack::Pop( rtpsink );
+
+ CMceCameraSource* camera = CMceCameraSource::NewLC( *iManager );
+ camera->DisableL(); // Start session in pause mode.
+
+ iCameraHandler.InitializeL( *camera );
+
+ videoStream->SetSourceL( camera );
+ CleanupStack::Pop( camera );
+
+ // Create incoming video stream
+ CMceVideoStream* videoInStream = CMceVideoStream::NewL();
+ CleanupStack::PushL( videoInStream );
+
+ MusEngMceUtils::AddDisplayL( *videoInStream, *iManager, Rect() );
+
+ CMceRtpSource* rtpSource = CMceRtpSource::NewLC( KMusEngJitterBufferLength,
+ KMusEngJitterBufferTreshold,
+ KMusEngTwoWayReceivingActivityTimeout );
+ videoInStream->SetSourceL( rtpSource );
+ CleanupStack::Pop( rtpSource );
+
+ videoStream->BindL( videoInStream );
+ CleanupStack::Pop( videoInStream );
+
+ iSession->AddStreamL( videoStream );
+ CleanupStack::Pop( videoStream );
+
+ iLiveVideoPlayer->SetMceSession( iSession );
+ iRemoteVideoPlayer->SetMceSession( iSession );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::CompleteSessionStructureL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::CreateMceSessionStructureL(
+ TBool /*aForceSdpBandwidth*/ )
+ {
+ //Force SDP bandwidth attributes to be included in the INVITE
+ CMusEngMceOutSession::CreateMceSessionStructureL( ETrue );
+ }
+
+// -----------------------------------------------------------------------------
+// Sets video codec attributes
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::AdjustVideoCodecL( CMceVideoCodec& aVideoCodec,
+ TMceSourceType aSourceType )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::AdjustVideoCodecL()" )
+
+ CMusEngLiveSession::AdjustVideoCodecL( aVideoCodec, aSourceType );
+
+ aVideoCodec.SetKeepAliveTimerL( KMusEngTwoWayRtpKeepAliveTimer );
+ if ( aVideoCodec.SdpName() == KMceSDPNameH263() ||
+ aVideoCodec.SdpName() == KMceSDPNameH2632000() )
+ {
+ aVideoCodec.SetKeepAlivePayloadTypeL( KMusEngKeepAlivePayloadTypeVideoH263 );
+ }
+ else if ( aVideoCodec.SdpName() == KMceSDPNameH264() )
+ {
+ aVideoCodec.SetKeepAlivePayloadTypeL( KMusEngKeepAlivePayloadTypeVideoAvc );
+ }
+ else
+ {
+ // NOP
+ }
+
+ aVideoCodec.SetKeepAliveDataL( KNullDesC8() );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::AdjustVideoCodecL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::AddDisplayL( CMceMediaStream& aStream )
+ {
+ // Vf display is disabled at creation phase if doing bg startup
+ MusEngMceUtils::AddDisplayL( aStream,
+ *iManager,
+ iLocalRect,
+ IsBackgroundStartup() );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::StreamStateChanged( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::StreamStateChanged()" )
+ if ( !iSession )
+ {
+ return;
+ }
+
+ if ( aStream.Type() == KMceVideo &&
+ aStream.Source() &&
+ aStream.Source()->Type() == KMceRTPSource )
+ {
+ if ( aStream.State() == CMceMediaStream::EStreaming )
+ {
+ ReceivingStarted();
+ }
+ else if ( aStream.State() == CMceMediaStream::EBuffering )
+ {
+ MUS_LOG( "mus: [ENGINE] CMusEngTwoWaySession buffered" )
+
+ iBuffered = ETrue;
+ }
+ else
+ {
+ // NOP
+ }
+ }
+
+ CMusEngMceSession::StreamStateChanged( aStream );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::StreamStateChanged()" )
+ }
+
+// -----------------------------------------------------------------------------
+// Once inactivity timeout occurs, state change is notified and receiving
+// and buffering statuses are cleared. That is safe to do as once receiving
+// again continues for real, buffering and streaming events will occur always
+// sequentially. If buffering status would not be cleared, some unwanted
+// sreaming events would be passed towards client when it disables/enables
+// display sink of remote stream while inactivity timer has expired.
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::InactivityTimeout( CMceMediaStream& aStream,
+ CMceRtpSource& /*aSource*/ )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::InactivityTimeout()" )
+
+ if ( aStream.Type() == KMceVideo && iReceiving )
+ {
+ iReceiving = EFalse;
+ iBuffered = EFalse;
+ if ( iRemoteVideoPlayer )
+ {
+ InformObserverAboutPlayerStateChange( iRemoteVideoPlayer );
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::InactivityTimeout()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::HandleSessionStateChanged(
+ CMceSession& aSession,
+ TInt aStatusCode,
+ const TDesC8& aReasonPhrase )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::HandleSessionStateChanged" )
+
+ MUS_ENG_LOG_SESSION_STATE_AND_STATUS( aSession, aStatusCode, aReasonPhrase )
+
+ TBool consumed( EFalse );
+ if ( iSession &&
+ iSession == &aSession &&
+ aSession.State() == CMceSession::EEstablished )
+ {
+ CMceVideoStream* stream = NULL;
+ CMceVideoStream* streamout = NULL;
+ TRAPD( err, stream = MusEngMceUtils::GetVideoInStreamL( *iSession ) )
+ if ( err == KErrNone && stream && stream->IsEnabled() )
+ {
+ TRAP( err, streamout = MusEngMceUtils::GetVideoOutStreamL( *iSession ) )
+ if ( err != KErrNone || !streamout || !streamout->IsEnabled() )
+ {
+ MUS_LOG( "mus: [ENGINE] sendrecv downgraded to recvonly, terminate!" )
+ consumed = ETrue;
+ InformObserverAboutSessionFailure( err );
+ }
+ }
+ }
+
+ if ( !consumed )
+ {
+ CMusEngLiveSession::HandleSessionStateChanged( aSession,
+ aStatusCode,
+ aReasonPhrase );
+ }
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::HandleSessionStateChanged" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession::CMusEngTwoWaySession()
+ : CMusEngLiveSession()
+ {
+ iSetRemoteRect = TRect(
+ KMusEngRectNotInit, KMusEngRectNotInit, KMusEngRectNotInit, KMusEngRectNotInit );
+ iSetLocalRect = TRect(
+ KMusEngRectNotInit, KMusEngRectNotInit, KMusEngRectNotInit, KMusEngRectNotInit );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::ConstructL()" )
+
+ CMusEngLiveSession::ConstructL();
+
+ iRemoteVideoPlayer = CMusEngRemoteVideoPlayer::NewL( *this, *this );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::ReceivingStarted()
+ {
+ if ( iSession && iBuffered )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::ReceivingStarted()" )
+
+ TInt err = MusEngMceUtils::EnableInactivityTimer(
+ *iSession, KMusEngTwoWayReceivingActivityTimeout );
+
+ if ( err != KErrNone )
+ {
+ MUS_LOG1("mus: [ENGINE] ReceivingStarted failed %d", err)
+ InformObserverAboutSessionFailure( err );
+ }
+ else
+ {
+ iReceiving = ETrue;
+ InformObserverAboutPlayerStateChange( iRemoteVideoPlayer );
+ InformUiProviderAboutReceivingStart();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::ReceivingStarted()" )
+ }
+ }
+
+// End of file
--- a/mmsharing/mmshengine/src/musenguriparser.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musenguriparser.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -22,7 +22,6 @@
#include <uri8.h>
#include <charconv.h>
-//#include <f32file.h>
#include <utf.h>
#include <collate.h>
@@ -34,7 +33,7 @@
// UTF7 is not working, since it converts + as +-
// -----------------------------------------------------------------------------
//
-EXPORT_C TMusEngUriParser::TMusEngUriParser( const TDesC16& aUri )
+TMusEngUriParser::TMusEngUriParser( const TDesC16& aUri )
:iUriType( ENotParsed )
{
TBuf8<KMaxUriLength> buf;
@@ -49,22 +48,20 @@
}
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TMusEngUriParser::TMusEngUriType TMusEngUriParser::UriType()
+ {
+ return iUriType;
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C TMusEngUriParser::TMusEngUriType TMusEngUriParser::UriType()
- {
- return iUriType;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* TMusEngUriParser::GetUri8L()
+HBufC8* TMusEngUriParser::GetUri8L()
{
MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::GetUri8L()" )
@@ -76,15 +73,13 @@
MUS_LOG( "mus: [ENGINE] <- TMusEngUriParser::GetUri8L()" )
return uri8;
-
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C HBufC16* TMusEngUriParser::GetUri16L( TBool aPrefix )
+HBufC16* TMusEngUriParser::GetUri16L( TBool aPrefix )
{
MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::GetUri16L()" )
@@ -106,16 +101,13 @@
MUS_LOG( "mus: [ENGINE] <- TMusEngUriParser::GetUri16L()" )
return uri16;
-
}
-
-// -----------------------------------------------------------------------------
-//
+// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C void TMusEngUriParser::ParseUriL()
+void TMusEngUriParser::ParseUriL()
{
MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL()" )
@@ -135,7 +127,7 @@
{// basic behaviour
MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL() \
normal behaviour" )
- User::Leave( KErrCorrupt );
+ User::Leave( KErrArgument );
}
else
{ // variant behaviour(local tel uri)
@@ -144,9 +136,7 @@
}
}
-
// -----------------------------------------------------------------------------
-//
//
// -----------------------------------------------------------------------------
//
@@ -189,18 +179,13 @@
iUriType = TMusEngUriParser::ESip;
}
-
-
-
-// -----------------------------------------------------------------------------
-//
+// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void TMusEngUriParser::HandleTelUriL()
{
- // Remove leading and trailing whitespaces
iUri.TrimAll();
if ( iUri.FindF( KMusEngTelPrefix() ) != 0 )
{
@@ -223,8 +208,6 @@
TInt index = KMusEngTelPrefix().Length() + KMusEngPlusSign().Length();
- // Remove whitespaces and extra chracters like parentheses. Check that the
- // rest characters are digits
while ( index < iUri.Length() )
{
TChar character = iUri[ index ];
@@ -245,9 +228,7 @@
iUriType = TMusEngUriParser::ETel;
}
-
// -----------------------------------------------------------------------------
-//
//
// -----------------------------------------------------------------------------
//
@@ -258,8 +239,7 @@
if ( iUri.FindF( KMusEngTelPrefix() ) != 0 )
{
// local tel uri without prefix
- if ( iUri.Length() + KMusEngTelPrefix().Length() <=
- KMaxUriLength )
+ if ( iUri.Length() + KMusEngTelPrefix().Length() <= KMaxUriLength )
{
iUri.Insert( 0, KMusEngTelPrefix() );
}
@@ -271,10 +251,7 @@
else
{
//Tel uri with prefix
- iUri.Replace(
- 0,
- KMusEngTelPrefix().Length(),
- KMusEngTelPrefix() );
+ iUri.Replace( 0, KMusEngTelPrefix().Length(), KMusEngTelPrefix() );
}
TInt index = KMusEngTelPrefix().Length();
@@ -292,6 +269,5 @@
iUriType = TMusEngUriParser::ETel;
}
-
-
+
// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musengvideoplayerbase.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,210 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+// USER
+#include "musenglocalvideoplayer.h"
+#include "musengcamerahandler.h"
+#include "musengmceutils.h"
+#include "musengdisplayhandler.h"
+
+// SYSTEM
+#include <mcesession.h>
+#include <mcevideostream.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngVideoPlayerBase::CMusEngVideoPlayerBase(
+ MMusEngDisplayHandler& aDisplayHandler,
+ MLcAudioControl& aLcAudioControl ) :
+ iDisplayHandler( aDisplayHandler ),
+ iLcAudioControl( aLcAudioControl )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngVideoPlayerBase::~CMusEngVideoPlayerBase()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::SetMceSession( CMceSession* aMceSession )
+ {
+ iMceSession = aMceSession;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::LcPlayL( TLcVideoPlayerSource /*aSource*/ )
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::LcPauseL()
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcWindow* CMusEngVideoPlayerBase::LcWindow()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcCameraControl* CMusEngVideoPlayerBase::LcCameraControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcSourceFileControl* CMusEngVideoPlayerBase::LcSourceFileControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcDestinationFileControl* CMusEngVideoPlayerBase::LcDestinationFileControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcAudioControl* CMusEngVideoPlayerBase::LcAudioControl()
+ {
+ return &iLcAudioControl;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcZoomControl* CMusEngVideoPlayerBase::LcZoomControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcBrightnessControl* CMusEngVideoPlayerBase::LcBrightnessControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::EnableLcWindowL( TBool aEnable )
+ {
+ iDisplayHandler.EnableDisplayL( aEnable );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngVideoPlayerBase::IsLcWindowEnabled()
+ {
+ return iDisplayHandler.IsDisplayEnabled();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::SetLcWindowRectL( TRect aRect )
+ {
+ iDisplayHandler.SetRectL( aRect );
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngVideoPlayerBase::LcWindowRect()
+ {
+ return iDisplayHandler.Rect();
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngVideoPlayerBase::SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation )
+ {
+ if ( aOrientation == MLcWindow::ELandscape )
+ {
+ iDisplayHandler.SetOrientationL( MMusEngDisplayHandler::ELandscape );
+ }
+ else
+ {
+ iDisplayHandler.SetOrientationL( MMusEngDisplayHandler::EPortrait );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+MLcWindow::TLcWindowOrientation CMusEngVideoPlayerBase::LcWindowOrientationL()
+ {
+ MLcWindow::TLcWindowOrientation orientation;
+ if ( iDisplayHandler.OrientationL() == MMusEngDisplayHandler::ELandscape )
+ {
+ orientation = MLcWindow::ELandscape;
+ }
+ else
+ {
+ orientation = MLcWindow::EPortrait;
+ }
+ return orientation;
+ }
--- a/mmsharing/mmshengine/src/mussipprofilehandler.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/src/mussipprofilehandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -12,6 +12,9 @@
* Contributors:
*
* Description: Utilities to get and set profile used with SWIS.
+* Part of : Mus For S60 v3.2
+* Description : Utilities to get and set profile used with SWIS.
+* Version : %version: 11.1.5 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -31,8 +34,6 @@
#include <sipprofilealrcontroller.h>
#include <uri8.h>
-
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -47,7 +48,6 @@
return self;
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -75,7 +75,6 @@
MUS_LOG( "mus: [ENGINE] <- CMusSipProfileHandler::ConstructL()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -89,7 +88,6 @@
MUS_LOG( "mus: [ENGINE] CMusSipProfileHandler::~CMusSipProfileHandler()" )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -105,16 +103,11 @@
{
profile = iProfileRegistry->DefaultProfileL();
}
- CleanupStack::PushL( profile );
- TBool profileRegistered = EFalse;
- User::LeaveIfError( profile->GetParameter( KSIPProfileRegistered,
- profileRegistered ) );
- CleanupStack::Pop( profile );
+
delete iSipProfile;
iSipProfile = profile;
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -124,76 +117,6 @@
return iSipProfile;
}
-#if 0 //TODO: should this be removed?
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CSIPProfile& CMusSipProfileHandler::SipProfileL( TInt aSipProfileId )
- {
- MUS_LOG1( "mus: [ENGINE] -> CMusSipProfileHandler::SipProfileL(),\
- od #%d", aSipProfileId )
-
- if ( !iSipProfile )
- {
- if ( aSipProfileId != 0 )
- {
- iSipProfile = iProfileRegistry->ProfileL( aSipProfileId );
- }
- else
- {
- iSipProfile = iProfileRegistry->DefaultProfileL();
- }
- }
-
- // The parameter val indicates if the profile can be immediately
- // used for creating a session, or if the client must wait for
- // the profile to be registered.
- TBool profileRegistered = EFalse;
-
- User::LeaveIfError( iSipProfile->GetParameter( KSIPProfileRegistered,
- profileRegistered ) );
-
- if ( !profileRegistered )
- {
-
- #if (defined (__WINS__) || defined(__WINSCW__))
-
- iProfileRegistry->EnableL( *iSipProfile, *this );
-
- User::LeaveIfError( iSipProfile->GetParameter( KSIPProfileRegistered,
- profileRegistered ) );
-
- if( !profileRegistered )
- {
- CActiveScheduler::Start();
-
- User::LeaveIfError( iSipProfile->GetParameter(
- KSIPProfileRegistered,
- profileRegistered ) );
-
- if ( !profileRegistered )
- {
- User::Leave( KErrNotReady );
- }
- }
-
- #else
-
- User::Leave( KErrNotReady );
-
- #endif
-
- }
-
-
- MUS_LOG( "mus: [ENGINE] <- CMusSipProfileHandler::SipProfileL()" )
-
- return *iSipProfile;
- }
-#endif
-
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -206,10 +129,9 @@
const MDesC8Array* aors = NULL;
User::LeaveIfError( iSipProfile->GetParameter( KSIPRegisteredAors, aors ) );
- if( !aors || aors->MdcaCount() <= 0 )
- {
- User::Leave( KErrArgument );
- }
+ __ASSERT_ALWAYS( aors && aors->MdcaCount() > 0,
+ User::Leave( KErrArgument ) );
+
TUriParser8 parser;
User::LeaveIfError( parser.Parse( aors->MdcaPoint( 0 ) ) );
MUS_LOG( "mus: [ENGINE] <- CMusSipProfileHandler::UserFromProfileLC()" )
@@ -229,13 +151,50 @@
// -----------------------------------------------------------------------------
+// This function should never be called before creating a profile, but such
+// a situation will be considered as pending registration.
+// -----------------------------------------------------------------------------
+//
+TBool CMusSipProfileHandler::IsRegistered()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusSipProfileHandler::IsRegistered()" )
+
+ TBool profileRegistered = EFalse;
+ if ( iSipProfile )
+ {
+ iSipProfile->GetParameter( KSIPProfileRegistered, profileRegistered );
+ }
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusSipProfileHandler::IsRegistered( %d )",
+ profileRegistered )
+
+ return profileRegistered;
+ }
+
+
+// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void CMusSipProfileHandler::ProfileRegistryEventOccurred(
- TUint32 /*aProfileId*/,
- MSIPProfileRegistryObserver::TEvent /*aEvent*/ )
+ TUint32 aProfileId,
+ MSIPProfileRegistryObserver::TEvent aEvent )
{
+ if ( iSipProfile && aProfileId == ProfileId() )
+ {
+ switch ( aEvent )
+ {
+ case MSIPProfileRegistryObserver::EProfileRegistered:
+ {
+ iUser.ProfileRegistered();
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ }
}
@@ -249,6 +208,7 @@
{
}
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -296,7 +256,6 @@
delete aTransaction;
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -306,7 +265,6 @@
{
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -317,7 +275,6 @@
{
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -330,7 +287,6 @@
delete aDialogAssoc;
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -340,7 +296,6 @@
CSIPRegistrationBinding& /*aRegistration*/ )
{
}
-
// -----------------------------------------------------------------------------
//
@@ -352,7 +307,6 @@
{
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -364,7 +318,6 @@
{
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -376,7 +329,6 @@
{
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -387,7 +339,6 @@
{
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -398,7 +349,6 @@
{
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -409,7 +359,6 @@
{
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -419,18 +368,15 @@
{
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void CMusSipProfileHandler::InviteCanceled(
- CSIPServerTransaction& /*aTransaction*/ )
+ CSIPServerTransaction& /*aTransaction*/ )
{
- MUS_LOG( "mus: [ENGINE] CMusSipProfileHandler::CSIPServerTransaction")
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -440,7 +386,6 @@
{
}
-
// -----------------------------------------------------------------------------
// CMusSipProfileHandler::AlrEvent
// From MSipProfileAlrObserver
--- a/mmsharing/mmshengine/tsrc/ut_engine/BWINS/ut_musengineU.DEF Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/BWINS/ut_musengineU.DEF Tue Aug 31 15:12:07 2010 +0300
@@ -1,162 +1,3 @@
EXPORTS
?CreateTestSuiteL@@YAPAVMEUnitTest@@XZ @ 1 NONAME ; class MEUnitTest * CreateTestSuiteL(void)
- ??1CRepository@@UAE@XZ @ 2 NONAME ; CRepository::~CRepository(void)
- ?StartTransaction@CRepository@@QAEHW4TTransactionMode@1@@Z @ 3 NONAME ; int CRepository::StartTransaction(enum CRepository::TTransactionMode)
- ?SetAudioRoutingObserver@CMusEngSession@@QAEXPAVMMusEngAudioRoutingObserver@@@Z @ 4 NONAME ; void CMusEngSession::SetAudioRoutingObserver(class MMusEngAudioRoutingObserver *)
- ?DigitalZoomFactorL@CMceCameraSource@@QAEHXZ @ 5 NONAME ; int CMceCameraSource::DigitalZoomFactorL(void)
- ?NewL@CCenRepNotifyHandler@@SAPAV1@AAVMCenRepNotifyHandlerCallback@@AAVCRepository@@@Z @ 6 NONAME ; class CCenRepNotifyHandler * CCenRepNotifyHandler::NewL(class MCenRepNotifyHandlerCallback &, class CRepository &)
- ?SetClipL@CMusEngClipSession@@QAEXABVTDesC16@@@Z @ 7 NONAME ; void CMusEngClipSession::SetClipL(class TDesC16 const &)
- ?GetCameraInfo@CMceCameraSource@@QBEXAAVTCameraInfo@@@Z @ 8 NONAME ; void CMceCameraSource::GetCameraInfo(class TCameraInfo &) const
- ?NewLC@CRepository@@SAPAV1@VTUid@@@Z @ 9 NONAME ; class CRepository * CRepository::NewLC(class TUid)
- ?IsMicMutedL@CMusEngSession@@QAEHXZ @ 10 NONAME ; int CMusEngSession::IsMicMutedL(void)
- ?FastRewindL@CMusEngClipSession@@QAEXH@Z @ 11 NONAME ; void CMusEngClipSession::FastRewindL(int)
- ?Create@CRepository@@QAEHKH@Z @ 12 NONAME ; int CRepository::Create(unsigned long, int)
- ?UriType@TMusEngUriParser@@QAE?AW4TMusEngUriType@1@XZ @ 13 NONAME ; enum TMusEngUriParser::TMusEngUriType TMusEngUriParser::UriType(void)
- ?ProfilesL@CSIPProfileRegistryBase@@QAEXABVTSIPProfileTypeInfo@@AAV?$RPointerArray@VCSIPProfile@@@@@Z @ 14 NONAME ; void CSIPProfileRegistryBase::ProfilesL(class TSIPProfileTypeInfo const &, class RPointerArray<class CSIPProfile> &)
- ?Type@CSIPProfile@@QBEABVTSIPProfileTypeInfo@@XZ @ 15 NONAME ; class TSIPProfileTypeInfo const & CSIPProfile::Type(void) const
- ?DurationL@CMusEngClipSession@@QAE?AVTTimeIntervalSeconds@@XZ @ 16 NONAME ; class TTimeIntervalSeconds CMusEngClipSession::DurationL(void)
- ?Type@CMceMediaSource@@QBEIXZ @ 17 NONAME ; unsigned int CMceMediaSource::Type(void) const
- ??0TMusEngUriParser@@QAE@ABVTDesC16@@@Z @ 18 NONAME ; TMusEngUriParser::TMusEngUriParser(class TDesC16 const &)
- ?BrightnessL@CMceCameraSource@@QAEHXZ @ 19 NONAME ; int CMceCameraSource::BrightnessL(void)
- ?Get@CRepository@@QAEHKAAVTDes16@@@Z @ 20 NONAME ; int CRepository::Get(unsigned long, class TDes16 &)
- ?GetUri8L@TMusEngUriParser@@QAEPAVHBufC8@@XZ @ 21 NONAME ; class HBufC8 * TMusEngUriParser::GetUri8L(void)
- ?NewLC@CSIPProfileRegistry@@SAPAV1@AAVCSIP@@AAVMSIPProfileRegistryObserver@@@Z @ 22 NONAME ; class CSIPProfileRegistry * CSIPProfileRegistry::NewLC(class CSIP &, class MSIPProfileRegistryObserver &)
- ?MaxBrightnessL@CMusEngLiveSession@@QBEHXZ @ 23 NONAME ; int CMusEngLiveSession::MaxBrightnessL(void) const
- ?OrientationL@CMusEngMceSession@@QAE?AW4TDisplayOrientation@1@XZ @ 24 NONAME ; enum CMusEngMceSession::TDisplayOrientation CMusEngMceSession::OrientationL(void)
- ?EnableL@CSIPProfileRegistry@@QAEXAAVCSIPProfile@@AAVMSIPConnectionObserver@@@Z @ 25 NONAME ; void CSIPProfileRegistry::EnableL(class CSIPProfile &, class MSIPConnectionObserver &)
- ?SetSupportedVideoCodecListL@CMusEngMceOutSession@@QAEXABVTDesC16@@@Z @ 26 NONAME ; void CMusEngMceOutSession::SetSupportedVideoCodecListL(class TDesC16 const &)
- ?CamerasAvailable@CMceCameraSource@@QBEHXZ @ 27 NONAME ; int CMceCameraSource::CamerasAvailable(void) const
- ?IsRecording@CMusEngLiveSession@@QAEHXZ @ 28 NONAME ; int CMusEngLiveSession::IsRecording(void)
- ?IsEnabled@CSIPProfileRegistry@@QBEHABVCSIPProfile@@@Z @ 29 NONAME ; int CSIPProfileRegistry::IsEnabled(class CSIPProfile const &) const
- ?NewL@DRMCommon@@SAPAV1@XZ @ 30 NONAME ; class DRMCommon * DRMCommon::NewL(void)
- ?DisableL@CMceCameraSource@@UAEXXZ @ 31 NONAME ; void CMceCameraSource::DisableL(void)
- ?IsProtectedFile@DRMCommon@@QAEHABVTDesC16@@AAH@Z @ 32 NONAME ; int DRMCommon::IsProtectedFile(class TDesC16 const &, int &)
- ?CancelTranscodeL@CMusEngClipSession@@QAEXXZ @ 33 NONAME ; void CMusEngClipSession::CancelTranscodeL(void)
- ?IsAudioRoutingHeadset@CMusEngSession@@QBEHXZ @ 34 NONAME ; int CMusEngSession::IsAudioRoutingHeadset(void) const
- ?Disable@CSIPProfileRegistry@@QAEHAAVCSIPProfile@@@Z @ 35 NONAME ; int CSIPProfileRegistry::Disable(class CSIPProfile &)
- ?BrightnessDefaultL@CMusEngLiveSession@@QAEXXZ @ 36 NONAME ; void CMusEngLiveSession::BrightnessDefaultL(void)
- ?Delete@CRepository@@QAEHKKAAK@Z @ 37 NONAME ; int CRepository::Delete(unsigned long, unsigned long, unsigned long &)
- ?CommitTransaction@CRepository@@QAEHAAK@Z @ 38 NONAME ; int CRepository::CommitTransaction(unsigned long &)
- ?SetExposureL@CMceCameraSource@@QAEXW4TExposure@CCamera@@@Z @ 39 NONAME ; void CMceCameraSource::SetExposureL(enum CCamera::TExposure)
- ?FastForwardL@CMusEngClipSession@@QAEXH@Z @ 40 NONAME ; void CMusEngClipSession::FastForwardL(int)
- ?SetZoomL@CMusEngLiveSession@@QAEXH@Z @ 41 NONAME ; void CMusEngLiveSession::SetZoomL(int)
- ?Set@CRepository@@QAEHKABVTDesC8@@@Z @ 42 NONAME ; int CRepository::Set(unsigned long, class TDesC8 const &)
- ?NewL@CMusEngClipSession@@SAPAV1@ABVTRect@@AAVMMusEngSessionObserver@@AAVMMusEngOutSessionObserver@@AAVMMusEngClipSessionObserver@@I@Z @ 43 NONAME ; class CMusEngClipSession * CMusEngClipSession::NewL(class TRect const &, class MMusEngSessionObserver &, class MMusEngOutSessionObserver &, class MMusEngClipSessionObserver &, unsigned int)
- ?InviteL@CMusEngMceOutSession@@QAEXABVTDesC16@@@Z @ 44 NONAME ; void CMusEngMceOutSession::InviteL(class TDesC16 const &)
- ?GetParameter@CSIPProfile@@QBEHKAAPBVTDesC8@@@Z @ 45 NONAME ; int CSIPProfile::GetParameter(unsigned long, class TDesC8 const * &) const
- ?IsLoudSpeakerEnabled@CMusEngSession@@QBEHXZ @ 46 NONAME ; int CMusEngSession::IsLoudSpeakerEnabled(void) const
- ?StartListeningL@CCenRepNotifyHandler@@QAEXXZ @ 47 NONAME ; void CCenRepNotifyHandler::StartListeningL(void)
- ?NewL@CSIPProfileRegistry@@SAPAV1@AAVCSIP@@AAVMSIPProfileRegistryObserver@@@Z @ 48 NONAME ; class CSIPProfileRegistry * CSIPProfileRegistry::NewL(class CSIP &, class MSIPProfileRegistryObserver &)
- ?NewL@CMusEngReceiveSession@@SAPAV1@ABVTRect@@AAVMMusEngSessionObserver@@AAVMMusEngReceiveSessionObserver@@@Z @ 49 NONAME ; class CMusEngReceiveSession * CMusEngReceiveSession::NewL(class TRect const &, class MMusEngSessionObserver &, class MMusEngReceiveSessionObserver &)
- ?ContainsAudioL@CMusEngMceSession@@QAEHXZ @ 50 NONAME ; int CMusEngMceSession::ContainsAudioL(void)
- ?VolumeUpL@CMusEngMceSession@@UAEXXZ @ 51 NONAME ; void CMusEngMceSession::VolumeUpL(void)
- ?IsPlayingL@CMusEngClipSession@@UAEHXZ @ 52 NONAME ; int CMusEngClipSession::IsPlayingL(void)
- ?Get@CRepository@@QAEHKAAH@Z @ 53 NONAME ; int CRepository::Get(unsigned long, int &)
- ?SupportedSecurityMechanismsL@CSIP@@QBEPAVCDesC8Array@@XZ @ 54 NONAME ; class CDesC8Array * CSIP::SupportedSecurityMechanismsL(void) const
- ?PlayL@CMusEngClipSession@@UAEXXZ @ 55 NONAME ; void CMusEngClipSession::PlayL(void)
- ?PauseL@CMusEngLiveSession@@UAEXXZ @ 56 NONAME ; void CMusEngLiveSession::PauseL(void)
- ?GetSessionTime@CMusEngMceSession@@QBE?AVTTimeIntervalSeconds@@XZ @ 57 NONAME ; class TTimeIntervalSeconds CMusEngMceSession::GetSessionTime(void) const
- ?Rect@CMusEngSession@@QBE?AVTRect@@XZ @ 58 NONAME ; class TRect CMusEngSession::Rect(void) const
- ?Disconnect@DRMCommon@@QAEHXZ @ 59 NONAME ; int DRMCommon::Disconnect(void)
- ?FindL@CRepository@@QAEHKKAAV?$RArray@K@@@Z @ 60 NONAME ; int CRepository::FindL(unsigned long, unsigned long, class RArray<unsigned long> &)
- ?SetBrightnessL@CMusEngLiveSession@@QBEXH@Z @ 61 NONAME ; void CMusEngLiveSession::SetBrightnessL(int) const
- ?IsAudioRoutingLoudSpeaker@CMusEngSession@@QBEHXZ @ 62 NONAME ; int CMusEngSession::IsAudioRoutingLoudSpeaker(void) const
- ?NewLC@CMceCameraSource@@SAPAV1@AAVCMceManager@@@Z @ 63 NONAME ; class CMceCameraSource * CMceCameraSource::NewLC(class CMceManager &)
- ?ProfilesL@CSIPProfileRegistryBase@@QAEXAAV?$RPointerArray@VCSIPProfile@@@@@Z @ 64 NONAME ; void CSIPProfileRegistryBase::ProfilesL(class RPointerArray<class CSIPProfile> &)
- ?ZoomOutL@CMusEngLiveSession@@QAEXXZ @ 65 NONAME ; void CMusEngLiveSession::ZoomOutL(void)
- ?ConnectionActive@CMusEngMceSession@@QBEHXZ @ 66 NONAME ; int CMusEngMceSession::ConnectionActive(void) const
- ?AudioRoutingCanBeChanged@CMusEngSession@@QBEHXZ @ 67 NONAME ; int CMusEngSession::AudioRoutingCanBeChanged(void) const
- ?GetParameter@CSIPProfile@@QBEHKAAH@Z @ 68 NONAME ; int CSIPProfile::GetParameter(unsigned long, int &) const
- ?SetWhiteBalanceL@CMceCameraSource@@QAEXW4TWhiteBalance@CCamera@@@Z @ 69 NONAME ; void CMceCameraSource::SetWhiteBalanceL(enum CCamera::TWhiteBalance)
- ?RecordL@CMusEngLiveSession@@QAEXH@Z @ 70 NONAME ; void CMusEngLiveSession::RecordL(int)
- ??1CCenRepNotifyHandler@@UAE@XZ @ 71 NONAME ; CCenRepNotifyHandler::~CCenRepNotifyHandler(void)
- ?FindEqL@CRepository@@QAEHKKABVTDesC8@@AAV?$RArray@K@@@Z @ 72 NONAME ; int CRepository::FindEqL(unsigned long, unsigned long, class TDesC8 const &, class RArray<unsigned long> &)
- ?ZoomFactorL@CMceCameraSource@@QAEHXZ @ 73 NONAME ; int CMceCameraSource::ZoomFactorL(void)
- ?TerminateL@CMusEngMceSession@@QAEXXZ @ 74 NONAME ; void CMusEngMceSession::TerminateL(void)
- ?SetZoomFactorL@CMceCameraSource@@QAEXH@Z @ 75 NONAME ; void CMceCameraSource::SetZoomFactorL(int)
- ?SIP@CSIPProfileRegistry@@QBEAAVCSIP@@XZ @ 76 NONAME ; class CSIP & CSIPProfileRegistry::SIP(void) const
- ??1CMceMediaSource@@UAE@XZ @ 77 NONAME ; CMceMediaSource::~CMceMediaSource(void)
- ?ParseUriL@TMusEngUriParser@@QAEXXZ @ 78 NONAME ; void TMusEngUriParser::ParseUriL(void)
- ?ProfileL@CSIPProfileRegistryBase@@QAEPAVCSIPProfile@@K@Z @ 79 NONAME ; class CSIPProfile * CSIPProfileRegistryBase::ProfileL(unsigned long)
- ?EnableLoudspeakerL@CMusEngSession@@QAEXHH@Z @ 80 NONAME ; void CMusEngSession::EnableLoudspeakerL(int, int)
- ?CancelInviteL@CMusEngMceOutSession@@QAEXXZ @ 81 NONAME ; void CMusEngMceOutSession::CancelInviteL(void)
- ?VolumeL@CMusEngSession@@QBEHXZ @ 82 NONAME ; int CMusEngSession::VolumeL(void) const
- ?StopListening@CCenRepNotifyHandler@@QAEXXZ @ 83 NONAME ; void CCenRepNotifyHandler::StopListening(void)
- ??1CSIPProfileRegistryBase@@UAE@XZ @ 84 NONAME ; CSIPProfileRegistryBase::~CSIPProfileRegistryBase(void)
- ?ZoomDefaultL@CMusEngLiveSession@@QAEXXZ @ 85 NONAME ; void CMusEngLiveSession::ZoomDefaultL(void)
- ?GetUri16L@TMusEngUriParser@@QAEPAVHBufC16@@H@Z @ 86 NONAME ; class HBufC16 * TMusEngUriParser::GetUri16L(int)
- ?NewL@CSIP@@SAPAV1@ABVTUid@@AAVMSIPObserver@@@Z @ 87 NONAME ; class CSIP * CSIP::NewL(class TUid const &, class MSIPObserver &)
- ??1CMceCameraSource@@UAE@XZ @ 88 NONAME ; CMceCameraSource::~CMceCameraSource(void)
- ?EnableL@CMceCameraSource@@UAEXXZ @ 89 NONAME ; void CMceCameraSource::EnableL(void)
- ?VolumeUpL@CMusEngSession@@UAEXXZ @ 90 NONAME ; void CMusEngSession::VolumeUpL(void)
- ?GetParameter@CSIPProfile@@QBEHKAAPBVMDesC8Array@@@Z @ 91 NONAME ; int CSIPProfile::GetParameter(unsigned long, class MDesC8Array const * &) const
- ?NewL@CRepository@@SAPAV1@VTUid@@@Z @ 92 NONAME ; class CRepository * CRepository::NewL(class TUid)
- ?SetVolumeChangeObserver@CMusEngSession@@QAEXPAVMMusEngVolumeChangeObserver@@@Z @ 93 NONAME ; void CMusEngSession::SetVolumeChangeObserver(class MMusEngVolumeChangeObserver *)
- ?GetParameter@CSIPProfile@@QBEHKAAK@Z @ 94 NONAME ; int CSIPProfile::GetParameter(unsigned long, unsigned long &) const
- ?IsMutedL@CMusEngMceSession@@QAEHXZ @ 95 NONAME ; int CMusEngMceSession::IsMutedL(void)
- ??1CSIP@@UAE@XZ @ 96 NONAME ; CSIP::~CSIP(void)
- ?Set@CRepository@@QAEHKH@Z @ 97 NONAME ; int CRepository::Set(unsigned long, int)
- ?AcceptInvitationL@CMusEngReceiveSession@@QAEXABH@Z @ 98 NONAME ; void CMusEngReceiveSession::AcceptInvitationL(int const &)
- ?CurrentZoomL@CMusEngLiveSession@@QBEHXZ @ 99 NONAME ; int CMusEngLiveSession::CurrentZoomL(void) const
- ?DisallowMigrationL@CSipProfileAlrController@@QAEXKK@Z @ 100 NONAME ; void CSipProfileAlrController::DisallowMigrationL(unsigned long, unsigned long)
- ?MinBrightnessL@CMusEngLiveSession@@QBEHXZ @ 101 NONAME ; int CMusEngLiveSession::MinBrightnessL(void) const
- ??1CSIPProfile@@UAE@XZ @ 102 NONAME ; CSIPProfile::~CSIPProfile(void)
- ?NewL@CMusEngLiveSession@@SAPAV1@ABVTRect@@AAVMMusEngSessionObserver@@AAVMMusEngOutSessionObserver@@AAVMMusEngLiveSessionObserver@@I@Z @ 103 NONAME ; class CMusEngLiveSession * CMusEngLiveSession::NewL(class TRect const &, class MMusEngSessionObserver &, class MMusEngOutSessionObserver &, class MMusEngLiveSessionObserver &, unsigned int)
- ?UnmuteL@CMusEngMceSession@@UAEXXZ @ 104 NONAME ; void CMusEngMceSession::UnmuteL(void)
- ?Connect@DRMCommon@@QAEHXZ @ 105 NONAME ; int DRMCommon::Connect(void)
- ?NewL@CMceCameraSource@@SAPAV1@AAVCMceManager@@@Z @ 106 NONAME ; class CMceCameraSource * CMceCameraSource::NewL(class CMceManager &)
- ?MinZoomL@CMusEngLiveSession@@QBEHXZ @ 107 NONAME ; int CMusEngLiveSession::MinZoomL(void) const
- ?Set@CRepository@@QAEHKABVTDesC16@@@Z @ 108 NONAME ; int CRepository::Set(unsigned long, class TDesC16 const &)
- ?VolumeDownL@CMusEngSession@@UAEXXZ @ 109 NONAME ; void CMusEngSession::VolumeDownL(void)
- ?ExposureL@CMceCameraSource@@QAE?AW4TExposure@CCamera@@XZ @ 110 NONAME ; enum CCamera::TExposure CMceCameraSource::ExposureL(void)
- ?MuteL@CMusEngMceSession@@UAEXXZ @ 111 NONAME ; void CMusEngMceSession::MuteL(void)
- ?NewLC@CCenRepNotifyHandler@@SAPAV1@AAVMCenRepNotifyHandlerCallback@@AAVCRepository@@@Z @ 112 NONAME ; class CCenRepNotifyHandler * CCenRepNotifyHandler::NewLC(class MCenRepNotifyHandlerCallback &, class CRepository &)
- ?SetVolumeL@CMusEngSession@@UAEXH@Z @ 113 NONAME ; void CMusEngSession::SetVolumeL(int)
- ?DecreaseBrightnessL@CMusEngLiveSession@@QAEXXZ @ 114 NONAME ; void CMusEngLiveSession::DecreaseBrightnessL(void)
- ?LastRegistrationError@CSIPProfileRegistryBase@@QBEHABVCSIPProfile@@@Z @ 115 NONAME ; int CSIPProfileRegistryBase::LastRegistrationError(class CSIPProfile const &) const
- ?SetCameraIndexL@CMceCameraSource@@QAEXH@Z @ 116 NONAME ; void CMceCameraSource::SetCameraIndexL(int)
- ?PauseL@CMusEngClipSession@@UAEXXZ @ 117 NONAME ; void CMusEngClipSession::PauseL(void)
- ?Connection@CSIP@@QBEPAVCSIPConnection@@K@Z @ 118 NONAME ; class CSIPConnection * CSIP::Connection(unsigned long) const
- ?SetRectL@CMusEngSession@@QAEXABVTRect@@@Z @ 119 NONAME ; void CMusEngSession::SetRectL(class TRect const &)
- ?Create@CRepository@@QAEHKABVTDesC8@@@Z @ 120 NONAME ; int CRepository::Create(unsigned long, class TDesC8 const &)
- ?RefreshIapAvailabilityL@CSipProfileAlrController@@QAEXK@Z @ 121 NONAME ; void CSipProfileAlrController::RefreshIapAvailabilityL(unsigned long)
- ?DefaultProfileL@CSIPProfileRegistryBase@@QAEPAVCSIPProfile@@XZ @ 122 NONAME ; class CSIPProfile * CSIPProfileRegistryBase::DefaultProfileL(void)
- ?BrightnessAutoL@CMusEngLiveSession@@QAEXXZ @ 123 NONAME ; void CMusEngLiveSession::BrightnessAutoL(void)
- ?IncreaseBrightnessL@CMusEngLiveSession@@QAEXXZ @ 124 NONAME ; void CMusEngLiveSession::IncreaseBrightnessL(void)
- ?ProfilesL@CSIPProfileRegistryBase@@QAEXABVTDesC8@@AAV?$RPointerArray@VCSIPProfile@@@@@Z @ 125 NONAME ; void CSIPProfileRegistryBase::ProfilesL(class TDesC8 const &, class RPointerArray<class CSIPProfile> &)
- ??1CSIPProfileRegistry@@UAE@XZ @ 126 NONAME ; CSIPProfileRegistry::~CSIPProfileRegistry(void)
- ?SetOrientationL@CMusEngMceSession@@QAEXW4TDisplayOrientation@1@@Z @ 127 NONAME ; void CMusEngMceSession::SetOrientationL(enum CMusEngMceSession::TDisplayOrientation)
- ?Get@CRepository@@QAEHKAAVTDes8@@@Z @ 128 NONAME ; int CRepository::Get(unsigned long, class TDes8 &)
- ?ConstructL@DRMCommon@@IAEXXZ @ 129 NONAME ; void DRMCommon::ConstructL(void)
- ?ContrastL@CMceCameraSource@@QAEHXZ @ 130 NONAME ; int CMceCameraSource::ContrastL(void)
- ?NegotiatedSecurityMechanismL@CSIP@@QAEPAVHBufC8@@ABVTDesC8@@@Z @ 131 NONAME ; class HBufC8 * CSIP::NegotiatedSecurityMechanismL(class TDesC8 const &)
- ?ZoomInL@CMusEngLiveSession@@QAEXXZ @ 132 NONAME ; void CMusEngLiveSession::ZoomInL(void)
- ?NewL@CSipProfileAlrController@@SAPAV1@AAVCSIPProfileRegistryBase@@AAVMSipProfileAlrObserver@@@Z @ 133 NONAME ; class CSipProfileAlrController * CSipProfileAlrController::NewL(class CSIPProfileRegistryBase &, class MSipProfileAlrObserver &)
- ?SetVolumeL@CMusEngMceSession@@UAEXH@Z @ 134 NONAME ; void CMusEngMceSession::SetVolumeL(int)
- ?Stop@CActiveScheduler@@SAXXZ @ 135 NONAME ; void CActiveScheduler::Stop(void)
- ?IsDisplayEnabledL@CMusEngMceSession@@QAEHXZ @ 136 NONAME ; int CMusEngMceSession::IsDisplayEnabledL(void)
- ?TranscodeL@CMusEngClipSession@@QAEXABV?$TBuf@$0BAA@@@@Z @ 137 NONAME ; void CMusEngClipSession::TranscodeL(class TBuf<256> const &)
- ?MaxZoomL@CMusEngLiveSession@@QBEHXZ @ 138 NONAME ; int CMusEngLiveSession::MaxZoomL(void) const
- ?IsSigCompSupportedL@CSIP@@QBEHXZ @ 139 NONAME ; int CSIP::IsSigCompSupportedL(void) const
- ?NewLC@CSIP@@SAPAV1@ABVTUid@@AAVMSIPObserver@@@Z @ 140 NONAME ; class CSIP * CSIP::NewLC(class TUid const &, class MSIPObserver &)
- ?VolumeDownL@CMusEngMceSession@@UAEXXZ @ 141 NONAME ; void CMusEngMceSession::VolumeDownL(void)
- ?AllowMigrationL@CSipProfileAlrController@@QAEXKK@Z @ 142 NONAME ; void CSipProfileAlrController::AllowMigrationL(unsigned long, unsigned long)
- ?PositionL@CMusEngClipSession@@QAE?AVTTimeIntervalSeconds@@XZ @ 143 NONAME ; class TTimeIntervalSeconds CMusEngClipSession::PositionL(void)
- ?SetContrastL@CMceCameraSource@@QAEXH@Z @ 144 NONAME ; void CMceCameraSource::SetContrastL(int)
- ?WhiteBalanceL@CMceCameraSource@@QAE?AW4TWhiteBalance@CCamera@@XZ @ 145 NONAME ; enum CCamera::TWhiteBalance CMceCameraSource::WhiteBalanceL(void)
- ??1DRMCommon@@UAE@XZ @ 146 NONAME ; DRMCommon::~DRMCommon(void)
- ?MuteMicL@CMusEngSession@@QAEXH@Z @ 147 NONAME ; void CMusEngSession::MuteMicL(int)
- ?NewL@CMusEngLiveSession@@SAPAV1@ABVTDesC16@@ABVTRect@@AAVMMusEngSessionObserver@@AAVMMusEngOutSessionObserver@@AAVMMusEngLiveSessionObserver@@I@Z @ 148 NONAME ; class CMusEngLiveSession * CMusEngLiveSession::NewL(class TDesC16 const &, class TRect const &, class MMusEngSessionObserver &, class MMusEngOutSessionObserver &, class MMusEngLiveSessionObserver &, unsigned int)
- ?HandleNotifyGeneric@MCenRepNotifyHandlerCallback@@UAEXK@Z @ 149 NONAME ; void MCenRepNotifyHandlerCallback::HandleNotifyGeneric(unsigned long)
- ?EnableDisplayL@CMusEngMceSession@@UAEXH@Z @ 150 NONAME ; void CMusEngMceSession::EnableDisplayL(int)
- ??0DRMCommon@@IAE@XZ @ 151 NONAME ; DRMCommon::DRMCommon(void)
- ?CurrentBrightnessL@CMusEngLiveSession@@QBEHXZ @ 152 NONAME ; int CMusEngLiveSession::CurrentBrightnessL(void) const
- ?SupportedProfileTypesL@CSIPProfileRegistryBase@@QAEXAAV?$RArray@VTSIPProfileTypeInfo@@@@@Z @ 153 NONAME ; void CSIPProfileRegistryBase::SupportedProfileTypesL(class RArray<class TSIPProfileTypeInfo> &)
- ?Start@CActiveScheduler@@SAXXZ @ 154 NONAME ; void CActiveScheduler::Start(void)
- ?SetBrightnessL@CMceCameraSource@@QAEXH@Z @ 155 NONAME ; void CMceCameraSource::SetBrightnessL(int)
- ?SetDigitalZoomFactorL@CMceCameraSource@@QAEXH@Z @ 156 NONAME ; void CMceCameraSource::SetDigitalZoomFactorL(int)
- ?IsPlayingL@CMusEngLiveSession@@UAEHXZ @ 157 NONAME ; int CMusEngLiveSession::IsPlayingL(void)
- ?IsEnabled@CMceMediaSource@@QBEHXZ @ 158 NONAME ; int CMceMediaSource::IsEnabled(void) const
- ?PlayL@CMusEngLiveSession@@UAEXXZ @ 159 NONAME ; void CMusEngLiveSession::PlayL(void)
- ?SetPositionL@CMusEngClipSession@@QAEXABVTTimeIntervalSeconds@@@Z @ 160 NONAME ; void CMusEngClipSession::SetPositionL(class TTimeIntervalSeconds const &)
--- a/mmsharing/mmshengine/tsrc/ut_engine/eabi/ut_musengineu.def Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/eabi/ut_musengineu.def Tue Aug 31 15:12:07 2010 +0300
@@ -1,224 +1,2 @@
EXPORTS
_Z16CreateTestSuiteLv @ 1 NONAME
- _ZN11CRepository16StartTransactionENS_16TTransactionModeE @ 2 NONAME
- _ZN11CRepository17CommitTransactionERm @ 3 NONAME
- _ZN11CRepository3GetEmR5TDes8 @ 4 NONAME
- _ZN11CRepository3GetEmR6TDes16 @ 5 NONAME
- _ZN11CRepository3GetEmRi @ 6 NONAME
- _ZN11CRepository3SetEmRK6TDesC8 @ 7 NONAME
- _ZN11CRepository3SetEmRK7TDesC16 @ 8 NONAME
- _ZN11CRepository3SetEmi @ 9 NONAME
- _ZN11CRepository4NewLE4TUid @ 10 NONAME
- _ZN11CRepository5FindLEmmR6RArrayImE @ 11 NONAME
- _ZN11CRepository5NewLCE4TUid @ 12 NONAME
- _ZN11CRepository6CreateEmRK6TDesC8 @ 13 NONAME
- _ZN11CRepository6CreateEmi @ 14 NONAME
- _ZN11CRepository6DeleteEmmRm @ 15 NONAME
- _ZN11CRepository7FindEqLEmmRK6TDesC8R6RArrayImE @ 16 NONAME
- _ZN11CRepositoryD0Ev @ 17 NONAME
- _ZN11CRepositoryD1Ev @ 18 NONAME
- _ZN11CRepositoryD2Ev @ 19 NONAME
- _ZN11CSIPProfileD0Ev @ 20 NONAME
- _ZN11CSIPProfileD1Ev @ 21 NONAME
- _ZN11CSIPProfileD2Ev @ 22 NONAME
- _ZN14CMusEngSession10SetVolumeLEi @ 23 NONAME
- _ZN14CMusEngSession11IsMicMutedLEv @ 24 NONAME
- _ZN14CMusEngSession11VolumeDownLEv @ 25 NONAME
- _ZN14CMusEngSession18EnableLoudspeakerLEii @ 26 NONAME
- _ZN14CMusEngSession23SetAudioRoutingObserverEP27MMusEngAudioRoutingObserver @ 27 NONAME
- _ZN14CMusEngSession23SetVolumeChangeObserverEP27MMusEngVolumeChangeObserver @ 28 NONAME
- _ZN14CMusEngSession8MuteMicLEi @ 29 NONAME
- _ZN14CMusEngSession8SetRectLERK5TRect @ 30 NONAME
- _ZN14CMusEngSession9VolumeUpLEv @ 31 NONAME
- _ZN15CMceMediaSourceD0Ev @ 32 NONAME
- _ZN15CMceMediaSourceD1Ev @ 33 NONAME
- _ZN15CMceMediaSourceD2Ev @ 34 NONAME
- _ZN16CMceCameraSource11BrightnessLEv @ 35 NONAME
- _ZN16CMceCameraSource11ZoomFactorLEv @ 36 NONAME
- _ZN16CMceCameraSource12SetContrastLEi @ 37 NONAME
- _ZN16CMceCameraSource12SetExposureLEN7CCamera9TExposureE @ 38 NONAME
- _ZN16CMceCameraSource13WhiteBalanceLEv @ 39 NONAME
- _ZN16CMceCameraSource14SetBrightnessLEi @ 40 NONAME
- _ZN16CMceCameraSource14SetZoomFactorLEi @ 41 NONAME
- _ZN16CMceCameraSource15SetCameraIndexLEi @ 42 NONAME
- _ZN16CMceCameraSource16SetWhiteBalanceLEN7CCamera13TWhiteBalanceE @ 43 NONAME
- _ZN16CMceCameraSource18DigitalZoomFactorLEv @ 44 NONAME
- _ZN16CMceCameraSource21SetDigitalZoomFactorLEi @ 45 NONAME
- _ZN16CMceCameraSource4NewLER11CMceManager @ 46 NONAME
- _ZN16CMceCameraSource5NewLCER11CMceManager @ 47 NONAME
- _ZN16CMceCameraSource7EnableLEv @ 48 NONAME
- _ZN16CMceCameraSource8DisableLEv @ 49 NONAME
- _ZN16CMceCameraSource9ContrastLEv @ 50 NONAME
- _ZN16CMceCameraSource9ExposureLEv @ 51 NONAME
- _ZN16CMceCameraSourceD0Ev @ 52 NONAME
- _ZN16CMceCameraSourceD1Ev @ 53 NONAME
- _ZN16CMceCameraSourceD2Ev @ 54 NONAME
- _ZN16TMusEngUriParser7UriTypeEv @ 55 NONAME
- _ZN16TMusEngUriParser8GetUri8LEv @ 56 NONAME
- _ZN16TMusEngUriParser9GetUri16LEi @ 57 NONAME
- _ZN16TMusEngUriParser9ParseUriLEv @ 58 NONAME
- _ZN16TMusEngUriParserC1ERK7TDesC16 @ 59 NONAME
- _ZN16TMusEngUriParserC2ERK7TDesC16 @ 60 NONAME
- _ZN17CMusEngMceSession10SetVolumeLEi @ 61 NONAME
- _ZN17CMusEngMceSession10TerminateLEv @ 62 NONAME
- _ZN17CMusEngMceSession11VolumeDownLEv @ 63 NONAME
- _ZN17CMusEngMceSession12OrientationLEv @ 64 NONAME
- _ZN17CMusEngMceSession14ContainsAudioLEv @ 65 NONAME
- _ZN17CMusEngMceSession14EnableDisplayLEi @ 66 NONAME
- _ZN17CMusEngMceSession15SetOrientationLENS_19TDisplayOrientationE @ 67 NONAME
- _ZN17CMusEngMceSession17IsDisplayEnabledLEv @ 68 NONAME
- _ZN17CMusEngMceSession5MuteLEv @ 69 NONAME
- _ZN17CMusEngMceSession7UnmuteLEv @ 70 NONAME
- _ZN17CMusEngMceSession8IsMutedLEv @ 71 NONAME
- _ZN17CMusEngMceSession9VolumeUpLEv @ 72 NONAME
- _ZN18CMusEngClipSession10IsPlayingLEv @ 73 NONAME
- _ZN18CMusEngClipSession10TranscodeLERK4TBufILi256EE @ 74 NONAME
- _ZN18CMusEngClipSession11FastRewindLEi @ 75 NONAME
- _ZN18CMusEngClipSession12FastForwardLEi @ 76 NONAME
- _ZN18CMusEngClipSession12SetPositionLERK20TTimeIntervalSeconds @ 77 NONAME
- _ZN18CMusEngClipSession16CancelTranscodeLEv @ 78 NONAME
- _ZN18CMusEngClipSession4NewLERK5TRectR22MMusEngSessionObserverR25MMusEngOutSessionObserverR26MMusEngClipSessionObserverj @ 79 NONAME
- _ZN18CMusEngClipSession5PlayLEv @ 80 NONAME
- _ZN18CMusEngClipSession6PauseLEv @ 81 NONAME
- _ZN18CMusEngClipSession8SetClipLERK7TDesC16 @ 82 NONAME
- _ZN18CMusEngClipSession9DurationLEv @ 83 NONAME
- _ZN18CMusEngClipSession9PositionLEv @ 84 NONAME
- _ZN18CMusEngLiveSession10IsPlayingLEv @ 85 NONAME
- _ZN18CMusEngLiveSession11IsRecordingEv @ 86 NONAME
- _ZN18CMusEngLiveSession12ZoomDefaultLEv @ 87 NONAME
- _ZN18CMusEngLiveSession15BrightnessAutoLEv @ 88 NONAME
- _ZN18CMusEngLiveSession18BrightnessDefaultLEv @ 89 NONAME
- _ZN18CMusEngLiveSession19DecreaseBrightnessLEv @ 90 NONAME
- _ZN18CMusEngLiveSession19IncreaseBrightnessLEv @ 91 NONAME
- _ZN18CMusEngLiveSession4NewLERK5TRectR22MMusEngSessionObserverR25MMusEngOutSessionObserverR26MMusEngLiveSessionObserverj @ 92 NONAME
- _ZN18CMusEngLiveSession4NewLERK7TDesC16RK5TRectR22MMusEngSessionObserverR25MMusEngOutSessionObserverR26MMusEngLiveSessionObserverj @ 93 NONAME
- _ZN18CMusEngLiveSession5PlayLEv @ 94 NONAME
- _ZN18CMusEngLiveSession6PauseLEv @ 95 NONAME
- _ZN18CMusEngLiveSession7RecordLEi @ 96 NONAME
- _ZN18CMusEngLiveSession7ZoomInLEv @ 97 NONAME
- _ZN18CMusEngLiveSession8SetZoomLEi @ 98 NONAME
- _ZN18CMusEngLiveSession8ZoomOutLEv @ 99 NONAME
- _ZN19CSIPProfileRegistry4NewLER4CSIPR27MSIPProfileRegistryObserver @ 100 NONAME
- _ZN19CSIPProfileRegistry5NewLCER4CSIPR27MSIPProfileRegistryObserver @ 101 NONAME
- _ZN19CSIPProfileRegistry7DisableER11CSIPProfile @ 102 NONAME
- _ZN19CSIPProfileRegistry7EnableLER11CSIPProfileR22MSIPConnectionObserver @ 103 NONAME
- _ZN19CSIPProfileRegistryD0Ev @ 104 NONAME
- _ZN19CSIPProfileRegistryD1Ev @ 105 NONAME
- _ZN19CSIPProfileRegistryD2Ev @ 106 NONAME
- _ZN20CCenRepNotifyHandler13StopListeningEv @ 107 NONAME
- _ZN20CCenRepNotifyHandler15StartListeningLEv @ 108 NONAME
- _ZN20CCenRepNotifyHandler4NewLER28MCenRepNotifyHandlerCallbackR11CRepository @ 109 NONAME
- _ZN20CCenRepNotifyHandler5NewLCER28MCenRepNotifyHandlerCallbackR11CRepository @ 110 NONAME
- _ZN20CCenRepNotifyHandlerD0Ev @ 111 NONAME
- _ZN20CCenRepNotifyHandlerD1Ev @ 112 NONAME
- _ZN20CCenRepNotifyHandlerD2Ev @ 113 NONAME
- _ZN20CMusEngMceOutSession13CancelInviteLEv @ 114 NONAME
- _ZN20CMusEngMceOutSession27SetSupportedVideoCodecListLERK7TDesC16 @ 115 NONAME
- _ZN20CMusEngMceOutSession7InviteLERK7TDesC16 @ 116 NONAME
- _ZN21CMusEngReceiveSession17AcceptInvitationLERKi @ 117 NONAME
- _ZN21CMusEngReceiveSession4NewLERK5TRectR22MMusEngSessionObserverR29MMusEngReceiveSessionObserver @ 118 NONAME
- _ZN23CSIPProfileRegistryBase15DefaultProfileLEv @ 119 NONAME
- _ZN23CSIPProfileRegistryBase22SupportedProfileTypesLER6RArrayI19TSIPProfileTypeInfoE @ 120 NONAME
- _ZN23CSIPProfileRegistryBase8ProfileLEm @ 121 NONAME
- _ZN23CSIPProfileRegistryBase9ProfilesLER13RPointerArrayI11CSIPProfileE @ 122 NONAME
- _ZN23CSIPProfileRegistryBase9ProfilesLERK19TSIPProfileTypeInfoR13RPointerArrayI11CSIPProfileE @ 123 NONAME
- _ZN23CSIPProfileRegistryBase9ProfilesLERK6TDesC8R13RPointerArrayI11CSIPProfileE @ 124 NONAME
- _ZN23CSIPProfileRegistryBaseD0Ev @ 125 NONAME
- _ZN23CSIPProfileRegistryBaseD1Ev @ 126 NONAME
- _ZN23CSIPProfileRegistryBaseD2Ev @ 127 NONAME
- _ZN28MCenRepNotifyHandlerCallback19HandleNotifyGenericEm @ 128 NONAME
- _ZN4CSIP28NegotiatedSecurityMechanismLERK6TDesC8 @ 129 NONAME
- _ZN4CSIP4NewLERK4TUidR12MSIPObserver @ 130 NONAME
- _ZN4CSIP5NewLCERK4TUidR12MSIPObserver @ 131 NONAME
- _ZN4CSIPD0Ev @ 132 NONAME
- _ZN4CSIPD1Ev @ 133 NONAME
- _ZN4CSIPD2Ev @ 134 NONAME
- _ZN9DRMCommon10ConstructLEv @ 135 NONAME
- _ZN9DRMCommon10DisconnectEv @ 136 NONAME
- _ZN9DRMCommon15IsProtectedFileERK7TDesC16Ri @ 137 NONAME
- _ZN9DRMCommon4NewLEv @ 138 NONAME
- _ZN9DRMCommon7ConnectEv @ 139 NONAME
- _ZN9DRMCommonC1Ev @ 140 NONAME
- _ZN9DRMCommonC2Ev @ 141 NONAME
- _ZN9DRMCommonD0Ev @ 142 NONAME
- _ZN9DRMCommonD1Ev @ 143 NONAME
- _ZN9DRMCommonD2Ev @ 144 NONAME
- _ZNK11CSIPProfile12GetParameterEmRPK11MDesC8Array @ 145 NONAME
- _ZNK11CSIPProfile12GetParameterEmRPK6TDesC8 @ 146 NONAME
- _ZNK11CSIPProfile12GetParameterEmRi @ 147 NONAME
- _ZNK11CSIPProfile12GetParameterEmRm @ 148 NONAME
- _ZNK11CSIPProfile4TypeEv @ 149 NONAME
- _ZNK14CMusEngSession20IsLoudSpeakerEnabledEv @ 150 NONAME
- _ZNK14CMusEngSession21IsAudioRoutingHeadsetEv @ 151 NONAME
- _ZNK14CMusEngSession24AudioRoutingCanBeChangedEv @ 152 NONAME
- _ZNK14CMusEngSession25IsAudioRoutingLoudSpeakerEv @ 153 NONAME
- _ZNK14CMusEngSession4RectEv @ 154 NONAME
- _ZNK14CMusEngSession7VolumeLEv @ 155 NONAME
- _ZNK15CMceMediaSource4TypeEv @ 156 NONAME
- _ZNK15CMceMediaSource9IsEnabledEv @ 157 NONAME
- _ZNK16CMceCameraSource13GetCameraInfoER11TCameraInfo @ 158 NONAME
- _ZNK16CMceCameraSource16CamerasAvailableEv @ 159 NONAME
- _ZNK17CMusEngMceSession14GetSessionTimeEv @ 160 NONAME
- _ZNK17CMusEngMceSession16ConnectionActiveEv @ 161 NONAME
- _ZNK18CMusEngLiveSession12CurrentZoomLEv @ 162 NONAME
- _ZNK18CMusEngLiveSession14MaxBrightnessLEv @ 163 NONAME
- _ZNK18CMusEngLiveSession14MinBrightnessLEv @ 164 NONAME
- _ZNK18CMusEngLiveSession14SetBrightnessLEi @ 165 NONAME
- _ZNK18CMusEngLiveSession18CurrentBrightnessLEv @ 166 NONAME
- _ZNK18CMusEngLiveSession8MaxZoomLEv @ 167 NONAME
- _ZNK18CMusEngLiveSession8MinZoomLEv @ 168 NONAME
- _ZNK19CSIPProfileRegistry3SIPEv @ 169 NONAME
- _ZNK19CSIPProfileRegistry9IsEnabledERK11CSIPProfile @ 170 NONAME
- _ZNK23CSIPProfileRegistryBase21LastRegistrationErrorERK11CSIPProfile @ 171 NONAME
- _ZNK4CSIP10ConnectionEm @ 172 NONAME
- _ZNK4CSIP19IsSigCompSupportedLEv @ 173 NONAME
- _ZNK4CSIP28SupportedSecurityMechanismsLEv @ 174 NONAME
- _ZTI11CRepository @ 175 NONAME
- _ZTI11CSIPProfile @ 176 NONAME
- _ZTI14CMusEngSession @ 177 NONAME
- _ZTI15CMceMediaSource @ 178 NONAME
- _ZTI16CMceCameraSource @ 179 NONAME
- _ZTI17CMusEngMceSession @ 180 NONAME
- _ZTI18CMusEngClipSession @ 181 NONAME
- _ZTI18CMusEngLiveSession @ 182 NONAME
- _ZTI19CMusEngObserverStub @ 183 NONAME
- _ZTI19CSIPProfileRegistry @ 184 NONAME
- _ZTI20CCenRepNotifyHandler @ 185 NONAME
- _ZTI20CMusEngMceOutSession @ 186 NONAME
- _ZTI21CMusEngReceiveSession @ 187 NONAME
- _ZTI21CMusEngTelephoneUtils @ 188 NONAME
- _ZTI21CMusSipProfileHandler @ 189 NONAME
- _ZTI22CSIPProfileBehaviorTls @ 190 NONAME
- _ZTI22CTelephonyAudioRouting @ 191 NONAME
- _ZTI23CSIPProfileRegistryBase @ 192 NONAME
- _ZTI24CSipProfileAlrController @ 193 NONAME
- _ZTI27CMusEngSessionDurationTimer @ 194 NONAME
- _ZTI28MCenRepNotifyHandlerCallback @ 195 NONAME
- _ZTI4CSIP @ 196 NONAME
- _ZTI9DRMCommon @ 197 NONAME
- _ZTV11CRepository @ 198 NONAME
- _ZTV11CSIPProfile @ 199 NONAME
- _ZTV14CMusEngSession @ 200 NONAME
- _ZTV15CMceMediaSource @ 201 NONAME
- _ZTV16CMceCameraSource @ 202 NONAME
- _ZTV17CMusEngMceSession @ 203 NONAME
- _ZTV18CMusEngClipSession @ 204 NONAME
- _ZTV18CMusEngLiveSession @ 205 NONAME
- _ZTV19CMusEngObserverStub @ 206 NONAME
- _ZTV19CSIPProfileRegistry @ 207 NONAME
- _ZTV20CCenRepNotifyHandler @ 208 NONAME
- _ZTV20CMusEngMceOutSession @ 209 NONAME
- _ZTV21CMusEngReceiveSession @ 210 NONAME
- _ZTV21CMusEngTelephoneUtils @ 211 NONAME
- _ZTV21CMusSipProfileHandler @ 212 NONAME
- _ZTV22CSIPProfileBehaviorTls @ 213 NONAME
- _ZTV22CTelephonyAudioRouting @ 214 NONAME
- _ZTV23CSIPProfileRegistryBase @ 215 NONAME
- _ZTV24CSipProfileAlrController @ 216 NONAME
- _ZTV27CMusEngSessionDurationTimer @ 217 NONAME
- _ZTV28MCenRepNotifyHandlerCallback @ 218 NONAME
- _ZTV4CSIP @ 219 NONAME
- _ZTV9DRMCommon @ 220 NONAME
- _ZThn4_N11CSIPProfileD0Ev @ 221 NONAME
- _ZThn4_N11CSIPProfileD1Ev @ 222 NONAME
-
--- a/mmsharing/mmshengine/tsrc/ut_engine/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -15,7 +15,6 @@
*
*/
-PRJ_TESTMMPFILES
-
+PRJ_MMPFILES
../../../../../tsrc/mceclientstub/group/mceclientstub.mmp
ut_musengine.mmp
--- a/mmsharing/mmshengine/tsrc/ut_engine/group/ut_musengine.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/group/ut_musengine.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -27,6 +27,7 @@
CAPABILITY EUNIT_CAPS
VENDORID VID_DEFAULT
+
MACRO UNIT_TESTING
EPOCSTACKSIZE 0x14000
EPOCHEAPSIZE 0x020000 0x800000
@@ -50,7 +51,6 @@
SOURCEPATH ../../../../../tsrc/centralrepositorystub/src
SOURCE centralrepositorystub.cpp
-SOURCE cenrepnotifyhandlerstub.cpp
SOURCEPATH ../../../../../tsrc/drmstub/src
SOURCE drmcommonstub.cpp
@@ -59,37 +59,57 @@
SOURCE mcecamerasource.cpp
SOURCE mcemediasource.cpp
+SOURCEPATH ../../../../../tsrc/propertystub/src
+SOURCE e32property.cpp
+SOURCEPATH ../../../../../tsrc/contactenginestub/src
+SOURCE contactenginestub.cpp
// Test classes
SOURCEPATH ../src
-SOURCE ut_musengsession.cpp
+SOURCE ut_musengsessionmanager.cpp
SOURCE ut_musengmcesession.cpp
SOURCE ut_musengoutsession.cpp
SOURCE ut_musenglivesession.cpp
SOURCE ut_musengclipsession.cpp
SOURCE ut_musengreceivesession.cpp
+SOURCE ut_musengtwowaysession.cpp
+SOURCE ut_musengtwowayrecvsession.cpp
+SOURCE ut_musengcamerahandler.cpp
SOURCE ut_musengsipprofilehandler.cpp
SOURCE ut_musengmceutils.cpp
SOURCE ut_musengtelephoneutils.cpp
SOURCE ut_musengsessiondurationtimer.cpp
SOURCE ut_musenguriparser.cpp
-SOURCE ut_musengorientationhandler.cpp
+SOURCE ut_musenglivevideoplayer.cpp
+SOURCE ut_musengremotevideoplayer.cpp
+SOURCE ut_musengclipvideoplayer.cpp
+SOURCE ut_muspropertywatch.cpp
// Tested classes
SOURCEPATH ../../../src
-SOURCE musengsession.cpp
+SOURCE musengsessionmanager.cpp
SOURCE musengmcesession.cpp
SOURCE musengmceoutsession.cpp
SOURCE musenglivesession.cpp
SOURCE musengclipsession.cpp
SOURCE musengreceivesession.cpp
+SOURCE musengtwowaysession.cpp
+SOURCE musengtwowayrecvsession.cpp
SOURCE mussipprofilehandler.cpp
SOURCE musengtelephoneutils.cpp
SOURCE musengsessiondurationtimer.cpp
SOURCE musengmceutils.cpp
SOURCE musenguriparser.cpp
-SOURCE musengorientationhandler.cpp
+SOURCE musengcamerahandler.cpp
+SOURCE musengvideoplayerbase.cpp
+SOURCE musenglocalvideoplayer.cpp
+SOURCE musenglivevideoplayer.cpp
+SOURCE musengremotevideoplayer.cpp
+SOURCE musengclipvideoplayer.cpp
+
+SOURCEPATH ../../../../mmshshared/src
+SOURCE muspropertywatch.cpp
// Includes
@@ -98,13 +118,13 @@
USERINCLUDE ../../../../mmshshared/inc
USERINCLUDE ../../../../inc
USERINCLUDE ../../../../../inc
-USERINCLUDE ../../../../../tsrc/sipprofilestub/inc
+USERINCLUDE ../../../../../tsrc/sipprofilestub/inc
USERINCLUDE ../../../../../tsrc/centralrepositorystub/inc
+USERINCLUDE ../../../../../tsrc/propertystub/inc
USERINCLUDE ../../../../../tsrc/telephonyaudioroutingstub/inc
// to replace SIP profiles with a stub
SYSTEMINCLUDE ../inc
-// to replace profile with a stub
SYSTEMINCLUDE ../../../../../tsrc/sipprofilestub/inc
// to replace cenrep with a stub
SYSTEMINCLUDE ../../../../../tsrc/centralrepositorystub/inc
@@ -114,12 +134,15 @@
SYSTEMINCLUDE ../../../../../tsrc/telephonyaudioroutingstub/inc
// to replace DRMCommon with a stub
SYSTEMINCLUDE ../../../../../tsrc/drmstub/inc
+// to replace RProperty with a stub
+SYSTEMINCLUDE ../../../../../tsrc/propertystub/inc
+// to replace certain parts of contact engine with a stub
+SYSTEMINCLUDE ../../../../../tsrc/contactenginestub/inc
-#if defined ( APP_LAYER_SYSTEMINCLUDE )
APP_LAYER_SYSTEMINCLUDE
-#else
-SYSTEMINCLUDE /epoc32/include
-#endif
+SYSTEMINCLUDE /epoc32/include/ecom
+SYSTEMINCLUDE /epoc32/include/platform/digia/EUnit
+
LIBRARY euser.lib
LIBRARY bafl.lib
@@ -128,9 +151,12 @@
LIBRARY charconv.lib
LIBRARY inetprotutil.lib
LIBRARY sipcodec.lib
-LIBRARY efsrv.lib
+
LIBRARY mceclientstub.lib
+LIBRARY cntmodel.lib
+LIBRARY estor.lib
+
DEBUGLIBRARY flogger.lib
//EXPORTUNFROZEN
--- a/mmsharing/mmshengine/tsrc/ut_engine/group/ut_musengine.pkg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-;
-; Copyright (c) 2009 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:
-;
-
-;Languages
-&EN
-
-;Header
-#{"EUnit: MMSHEng"},(0x01700000),1,0,0
-
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique vendor name
-:"Nokia"
-
-;DLL files
-"\epoc32\release\armv5\urel\ut_musengine.dll"-"c:\sys\bin\ut_musengine.dll"
-"\epoc32\release\armv5\urel\mceclientstub.dll"-"c:\sys\bin\mceclientstub.dll"
-
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/musengstubs.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/musengstubs.h Tue Aug 31 15:12:07 2010 +0300
@@ -20,17 +20,18 @@
#ifndef UT_MUSSTUBS_H
#define UT_MUSSTUBS_H
-
-#include "musengsessionobserver.h"
-#include "musengoutsessionobserver.h"
-#include "musenglivesessionobserver.h"
-#include "musengclipsessionobserver.h"
-#include "musengreceivesessionobserver.h"
#include "musengsessiondurationtimerobserver.h"
#include "musengaudioroutingobserver.h"
-#include "musengvolumechangeobserver.h"
+#include "musengdisplayhandler.h"
+#include "mussipprofileuser.h"
+#include "muspropertyobserver.h"
+#include <lcsessionobserver.h>
+#include <lcuiprovider.h>
+#include <lcwindow.h>
+#include <lcaudiocontrol.h>
#include <e32base.h>
+#include <ecom.h>
// DUMMY CLASSES
@@ -67,91 +68,26 @@
*/
class CMusEngObserverStub : public CBase,
public MMusEngSessionDurationTimerObserver,
- public MMusEngSessionObserver,
- public MMusEngOutSessionObserver,
- public MMusEngLiveSessionObserver,
- public MMusEngClipSessionObserver,
- public MMusEngReceiveSessionObserver,
public MMusEngAudioRoutingObserver,
- public MMusEngVolumeChangeObserver
+ public MMusSipProfileUser
{
-
- public:
+ public: // Constructors and destructor
CMusEngObserverStub();
-
~CMusEngObserverStub();
-
- // From MMusEngSessionDurationTimerObserver
-
- void UpdateTimerEvent();
-
- // From MMusEngSessionObserver
-
- void SessionEstablished();
- void SessionTerminated();
- void SessionConnectionLost();
- void SessionFailed();
- void StreamIdle();
- void StreamStreaming();
- void SessionTimeChanged( const TTimeIntervalSeconds& aSeconds );
- void InactivityTimeout();
-
- // From MMusEngOutSessionObserver
-
- void SessionRejected();
- void SessionBadRequest(); // 400
- void SessionUnauthorized(); // 401
- void SessionPaymentRequired(); // 402
- void SessionRecipientNotFound(); // 404
- void SessionProxyAuthenticationRequired(); // 407
- void SessionRequestTimeOut(); // 408
- void SessionUnsupportedMediaType(); // 415
- void SessionBusyHere(); // 486
- void SessionRequestCancelled(); // 487
- void SessionTemporarilyNotAvailable(); // 480
-
- // From MMusEngLiveSessionObserver
+ public: // From MMusEngSessionDurationTimerObserver
+
+ void UpdateTimerEvent();
- void DiskFull();
- void OrientationRefreshEnded();
-
- // From MMusEngClipSessionObserver
-
- void EndOfClip();
+ public: // From MMusEngAudioRoutingObserver
- void TranscodingNeeded(TBool aDueUnknowCapas);
-
- void TranscodingProgressed( TInt aPercentage );
-
- void TranscodingCompletedInit();
-
- void TranscodingCompletedFinalize();
-
- void TranscodingFailed();
+ void AudioRoutingChanged();
- void RewindFromEndL();
-
-
- // From MMusEngReceiveSessionObserver
-
- void IncomingSessionPreNotification();
-
- void IncomingSession( const TDesC& aOriginator,
- const TDesC& aOriginatorIdentity );
-
- void StreamBuffering();
-
-
- // From MMusEngAudioRoutingObserver
-
- void AudioRoutingChanged( TBool aShowNote );
-
- TBool AudioRouteChangeAllowed() const;
-
- // From MMusEngVolumeChangeObserver
- void VolumeChanged( TInt aVolume, TBool aAudioRouteChanged );
+ public: // From MMusSipProfileUser
+
+ TBool IsRoamingBetweenAPsAllowed();
+ void ProfileRegistered();
public: // Helper
@@ -170,50 +106,238 @@
public: // Data
TBool iUpdateTimerEventCalled;
+ TBool iAudioRoutingChangedCalled;
+ TBool iRoamingBetweenAPsAllowed;
+ TBool iProfileRegisteredCalled;
+ };
+
+class TMusEngDisplayHandlerStub : public MMusEngDisplayHandler
+ {
+public:
+
+ TMusEngDisplayHandlerStub();
+
+ void Reset();
+
+public: // From MMusEngDisplayHandler
+
+ TRect Rect() const;
+
+ void SetRectL( const TRect& aRect );
+
+ void SetSecondaryRectL( const TRect& aSecondaryRect );
+
+ TRect SecondaryRect() const;
+
+ void EnableDisplayL( TBool aEnable );
+
+ TBool IsDisplayEnabled();
+
+ TDisplayOrientation OrientationL();
+
+ void SetOrientationL( TDisplayOrientation aOrientation );
+
+ TBool IsDisplayActive();
+
+public:
+
+ TRect iRect;
+ TRect iSecondaryRect;
+ TBool iIsEnabled;
+ TDisplayOrientation iOrientation;
+ TBool iIsActive;
+ };
+
+class CLcSessionObserverStub : public CBase, public MLcSessionObserver
+ {
+ public: // Constructors and destructor
+
+ CLcSessionObserverStub();
+ ~CLcSessionObserverStub();
- TBool iSessionEstablishedCalled;
- TBool iSessionTerminatedCalled;
- TBool iSessionConnectionLostCalled;
- TBool iSessionFailedCalled;
- TBool iStreamIdleCalled;
- TBool iStreamStreamingCalled;
- TBool iSessionTimeChangedCalled;
- TBool iInactivityTimeoutCalled;
+ public: // From MLcSessionObserver
+
+ void StateChanged( MLcSession& aSession );
+
+ void StateChanged( MLcVideoPlayer& aPlayer );
+
+ void Updated( MLcSession& aSession );
+
+ void Updated( MLcVideoPlayer& aPlayer );
+
+ void Failed(
+ MLcSession& aSession,
+ TInt aError );
+
+ void Failed(
+ MLcVideoPlayer& aPlayer,
+ TInt aError );
+
+ void SessionTimeChanged(
+ MLcSession& aSession,
+ const TTimeIntervalSeconds& aSeconds );
+
+ public: // New functions
+
+ void Reset();
+ TBool IsReseted();
+
+ public: // Data
+
+ enum TCalledFunction
+ {
+ EUnknown,
+ ESessionStateChanged,
+ EPlayerStateChanged,
+ ESessionUpdated,
+ EPlayerUpdated,
+ ESessionFailed,
+ EPlayerFailed,
+ ESessionTimeChanged
+ };
+
+ TInt iCalledFunction;
+ MLcSession* iCurrentSession;
+ MLcVideoPlayer* iCurrentPlayer;
+ TInt iSessionTime;
+ TInt iError;
+ };
+
+
+class CLcUiProviderStub : public CBase, public MLcUiProvider
+ {
+ public: // Constructors and destructor
+
+ CLcUiProviderStub();
+ ~CLcUiProviderStub();
+
+ public: // From MLcUiProvider
+
+ TBool SelectRecipient(
+ MDesCArray& aRecipientAddresses,
+ TDes& aSelectedRecipientAddress );
+
+ TBool InputRecipient( TDes& aRecipientAddress );
+
+ void HandleForegroundStatus( TBool aForeground );
- TBool iSessionRejectedCalled;
- TBool iSessionBadRequestCalled;
- TBool iSessionUnauthorizedCalled;
- TBool iSessionPaymentRequiredCalled;
- TBool iSessionRecipientNotFoundCalled;
- TBool iSessionProxyAuthenticationRequiredCalled;
- TBool iSessionRequestTimeOutCalled;
- TBool iSessionUnsupportedMediaTypeCalled;
- TBool iSessionBusyHereCalled;
- TBool iSessionRequestCancelledCalled;
- TBool iDiskFullCalled;
-
- TBool iEndOfClipCalled;
- TBool iRewindFromEnd;
- TBool iTranscodingNeededCalled;
- TBool iTranscodingCompletedInitCalled;
- TBool iTranscodingCompletedFinalizeCalled;
- TBool iTranscodingFailedCalled;
-
- TBool iIncomingSessionPreNotificationCalled;
- TBool iIncomingSessionCalled;
- TBool iStreamBufferingCalled;
+ void BlockUi( TBool aBlocked );
+
+ public: // New functions
+
+ void Reset();
+
+ public: // Data
+
+ enum TCalledFunction
+ {
+ EUnknown,
+ ESelectRecipient,
+ EInputRecipient,
+ EHandleForegroundStatus
+ };
+
+ TInt iForeground;
+ TInt iCalledFunction;
+ TPtrC iRecipient;
+ TBool iSimulatedReturnValue;
+ };
+
+
+class TLcWindowStub : public MLcWindow
+ {
+ public: // Constructor
+ TLcWindowStub();
+
+ public: // From MLcWindow
+ void EnableLcWindowL( TBool aEnable );
+ TBool IsLcWindowEnabled();
+ void SetLcWindowRectL( TRect aRect );
+ TRect LcWindowRect();
+ void SetLcWindowOrientationL( TLcWindowOrientation aOrientation );
+ TLcWindowOrientation LcWindowOrientationL();
+
+ public: // New functions
+
+ void Reset();
- TBool iAudioRoutingChangedCalled;
- TBool iShowNote;
- TBool iAudioRouteChangeAllowed;
+ private: // Data
+ TBool iEnabled;
+ TRect iRect;
+ TLcWindowOrientation iOrientation;
+ };
+
+
+class TLcAudioControlStub : public MLcAudioControl
+ {
+ public: // Constructor
+ TLcAudioControlStub();
+
+ public:
+ TBool IsLcAudioMutedL();
+ void MuteLcAudioL( TBool aMute );
+ TBool IsLcMicMutedL();
+ void MuteLcMicL( TBool aMute );
+ TBool IsEnablingLcLoudspeakerAllowed();
+ void EnableLcLoudspeakerL( TBool aEnabled );
+ TBool IsLcLoudspeakerEnabled();
+ TInt LcVolumeL();
+ void SetLcVolumeL( TInt aValue );
+ void IncreaseLcVolumeL();
+ void DecreaseLcVolumeL();
+
+ public: // New functions
+
+ void Reset();
- TInt iTranscodingProgressedPercentage;
- TBool iSessionTemporarilyNotAvailable;
- HBufC* iIncomingSessionOriginator;
-
+ private: // Data
+ TBool iAudioMuted;
+ TBool iMicMuted;
+ TBool iEnablingLoudspeakerAllowed;
+ TBool iLoudspeakerEnabled;
TInt iVolume;
- TBool iDueUnknowCapas;
- TBool iOrientationRefreshEndedCalled;
+ };
+
+class TMusPropertyObserverStub : public MMusPropertyObserver
+ {
+ public:
+
+ enum TMusPropertyObserverFunction
+ {
+ ENone, // default value
+ EPropertyChanged,
+ EHandlePropertyError
+ };
+
+
+ TMusPropertyObserverStub()
+ {
+ iCalledFunction = ENone;
+ iKey = 0;
+ iValue = 0;
+ iReason = 0;
+ }
+
+ void PropertyChanged( const TUint aKey, const TInt aValue )
+ {
+ iCalledFunction = EPropertyChanged;
+ iKey = aKey;
+ iValue = aValue;
+ }
+
+
+ void HandlePropertyError( const TInt aReason )
+ {
+ iCalledFunction = EHandlePropertyError;
+ iReason = aReason;
+ }
+
+ public: // data
+
+ TMusPropertyObserverFunction iCalledFunction;
+ TInt iKey;
+ TInt iValue;
+ TInt iReason;
};
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/musengtestdefs.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/musengtestdefs.h Tue Aug 31 15:12:07 2010 +0300
@@ -23,6 +23,7 @@
#include <mcesession.h>
#include <mcemanager.h>
+#include <digia/eunit/eunitmacros.h>
// Next row is to disable warning emerging from EUnit code.
// Placement is due to a fact that most test case files
// include this file. Directive can be removed when
@@ -32,12 +33,14 @@
// Test values
_LIT( KTestRecipientSipUri, "sip:TestRecipient@host.domain" );
+_LIT( KTestRecipient2SipUri, "sip:TestRecipient2@host.domain" );
_LIT( KTestRecipientSipUriPrefixUpperCase, "SIP:TestRecipient@host.domain" );
_LIT( KTestRecipientSipUriNoSipPrefix, "TestRecipient@host.domain" );
_LIT( KTestRecipientTelUri, "tel:+3581111111");
_LIT( KTestRecipientTelUriNoTelPrefix, "+3581111111" );
_LIT8( KTestRecipientSipUri8, "sip:TestRecipient@host.domain" );
+_LIT8( KTestRecipient2SipUri8, "sip:TestRecipient2@host.domain" );
_LIT8( KTestRecipientSipUriPrefixUpperCase8, "SIP:TestRecipient@host.domain" );
_LIT8( KTestRecipientSipUriNoSipPrefix8, "TestRecipient@host.domain" );
_LIT8( KTestRecipientTelUri8, "tel:+3581111111");
@@ -117,8 +120,11 @@
User::Leave( error );\
}
+// NOTE! NMusSessionApi::KCategoryUid, NMusSessionApi::KRemoteSipAddress p&s property
+// should contain recipient address to be used for invitation.
+//
#define ESTABLISH_OUT_SESSION( outSession )\
- outSession->InviteL( KTestRecipientSipUri );\
+ outSession->EstablishLcSessionL();\
outSession->iSession->iState = CMceSession::EEstablished;\
for ( TInt i = 0; i < outSession->iSession->Streams().Count(); ++i )\
{\
@@ -136,9 +142,31 @@
#define ESTABLISH_OUT_SESSION_AND_START_STREAMING( outSession )\
ESTABLISH_OUT_SESSION( outSession );\
outSession->EnableDisplayL( ETrue );\
- outSession->PlayL();
-
+ outSession->LocalVideoPlayer()->LcPlayL();
+
+
+#define MUSENG_EUNIT_ASSERT_EQUALS( func, val ) \
+{\
+TInt musUnitTestRetVal = func;\
+if ( musUnitTestRetVal != KErrNoMemory ){\
+ EUNIT_ASSERT_EQUALS( musUnitTestRetVal, val );\
+ }\
+else{\
+ User::Leave( KErrNoMemory );\
+ }\
+}
+
+#define MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE( func, val ) \
+{\
+TRAPD( musUnitTestRetVal, func );\
+if ( val != KErrNoMemory && musUnitTestRetVal == KErrNoMemory ){\
+ User::Leave( KErrNoMemory );\
+ }\
+else{\
+ EUNIT_ASSERT_EQUALS( musUnitTestRetVal, val );\
+ }\
+}
#endif // MUSENGTESTDEFS_H
-
\ No newline at end of file
+
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/sipprofilealrcontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/sipprofilealrcontroller.h Tue Aug 31 15:12:07 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-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"
@@ -11,10 +11,11 @@
*
* Contributors:
*
-* Description:
+* Description:
*
*/
+
#ifndef CSIPPROFILEALRCONTROLLER_H
#define CSIPPROFILEALRCONTROLLER_H
@@ -45,7 +46,7 @@
{
public: // Data only in MuS Engine's unit testing stub
- TBool iAllowMigrationCalled;
+ TBool iAllowMigrationCalled;
TBool iDisallowMigrationCalled;
TUint32 iLastUsedIap;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengcamerahandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2009 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 __UT_MUSENGCAMERAHANDLER_H__
+#define __UT_MUSENGCAMERAHANDLER_H__
+
+
+// EXTERNAL INCLUDES
+#include <ceunittestsuiteclass.h>
+#include <eunitmacros.h>
+
+#include "musengcamerahandler.h"
+
+// FORWARD DECLARATIONS
+class CMceManager;
+class CMusSipProfileHandler;
+class CMceSession;
+class CMusEngObserverStub;
+class CMceDisplaySink;
+
+
+// CLASS DEFINITION
+/**
+ * Tester class for CMusEngLiveSession.
+ * Tests only implementations that are not tested in ancestor classes.
+ *
+ */
+NONSHARABLE_CLASS( UT_TMusEngCameraHandler ): public CEUnitTestSuiteClass
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Two phase construction
+ */
+ static UT_TMusEngCameraHandler* NewL();
+ static UT_TMusEngCameraHandler* NewLC();
+
+ /**
+ * Destructor
+ */
+ ~UT_TMusEngCameraHandler();
+
+ private: // Constructors and destructors
+
+ UT_TMusEngCameraHandler();
+ void ConstructL();
+
+ private: // Test case setup and teardown
+
+ void SetupL();
+ void Teardown();
+
+ private: // Test methdods
+
+ void UT_LcCameraCountL();
+ void UT_ToggleLcCameraL();
+ void UT_SetLcBrightnessL();
+ void UT_LcBrightnessL();
+ void UT_MaxLcBrightnessL();
+ void UT_MinLcBrightnessL();
+ void UT_IncreaseLcBrightnessL();
+ void UT_DecreaseLcBrightnessL();
+ void UT_MinLcZoomL();
+ void UT_MaxLcZoomL();
+ void UT_LcZoomValueL();
+ void UT_SetLcZoomValueL();
+ void UT_LcZoomInL();
+ void UT_LcZoomOutL();
+ void UT_PlayL();
+ void UT_PauseL();
+ void UT_IsPlayingL();
+ void UT_InitializeZoomStepSizeL();
+ void UT_ChangeCameraL();
+ void UT_ChangeActiveCameraL();
+
+ private: // Data
+
+ TMusEngCameraHandler iCameraHandler;
+ CMceManager* iManager;
+ CMusSipProfileHandler* iProfileHandler;
+ CMusEngObserverStub* iObserver;
+ CMceSession* iSession;
+
+ EUNIT_DECLARE_TEST_TABLE;
+ };
+
+#endif // __UT_MUSENGLIVESESSION_H__
+
+// End of file
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengclipsession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengclipsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -26,6 +26,8 @@
// FORWARD DECLARATIONS
class CMusEngClipSession;
+class CLcSessionObserverStub;
+class CLcUiProviderStub;
class CMusEngObserverStub;
// CONSTANTS
@@ -60,44 +62,29 @@
private: // Test case setup and teardown
void SetupL();
- void Setup2L();
-
void Teardown();
private: // Test methdods
void UT_NewLL();
- void UT_SetClipLL();
- void UT_FastForwardLL();
- void UT_FastRewindLL();
- void UT_PositionLL();
- void UT_DurationLL();
- void UT_SetPositionLL();
- void UT_TranscodeLToAvcL();
- void UT_TranscodeLToH263L();
- void UT_CancelTranscodeLL();
- void UT_PlayLL();
- void UT_PauseLL();
- void UT_IsPlayingLL();
void UT_CompleteSessionStructureLL();
void UT_StreamStateChangedL();
void UT_StreamStateChangedWithSourceL();
void UT_StreamStateChangedWithSinkL();
void UT_AddAmrCodecLL();
void UT_AddVideoCodecLL();
- void UT_HasClipEndedL();
void UT_ConstructAudioStructureLL();
void UT_ConstructAudioStructureL_OperatorVariantL();
void UT_EstablishSessionLL();
- void UT_IsRewindFromEndL();
private: // Data
CMusEngClipSession* iClipSession;
- CMusEngObserverStub* iObserver;
+ CLcSessionObserverStub* iLcSessionObserver;
+ CLcUiProviderStub* iLcUiProvider;
+ CMusEngObserverStub* iAudioRoutingObserver;
EUNIT_DECLARE_TEST_TABLE;
-
};
#endif // __UT_MUSENGCLIPSESSION_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengclipvideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2009 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 UT_MUSENGCLIPVIDEOPLAYER_H
+#define UT_MUSENGCLIPVIDEOPLAYER_H
+
+
+// INCLUDES
+#include <ceunittestsuiteclass.h>
+#include <eunitmacros.h>
+#include "musengstubs.h"
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class CMusEngClipVideoPlayer;
+
+
+// CLASS DEFINITION
+/**
+ *
+ */
+NONSHARABLE_CLASS( UT_CMusEngClipVideoPlayer ): public CEUnitTestSuiteClass
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Two phase construction
+ */
+ static UT_CMusEngClipVideoPlayer* NewL();
+ static UT_CMusEngClipVideoPlayer* NewLC();
+
+ /**
+ * Destructor
+ */
+ ~UT_CMusEngClipVideoPlayer();
+
+ private: // Constructors and destructors
+
+ UT_CMusEngClipVideoPlayer();
+ void ConstructL();
+
+ private: // Test case setup and teardown
+
+ void SetupL();
+ void Teardown();
+
+ private: // Test methdods
+
+ void UT_HasClipEndedL();
+ void UT_LcVideoPlayerStateL();
+ void UT_LcPlayL();
+ void UT_LcPauseL();
+ void UT_LcIsPlayingL();
+ void UT_SetLcFileNameL();
+ void UT_LcFastForwardL();
+ void UT_LcFastRewindL();
+ void UT_LcFilePositionL();
+ void UT_LcFileDurationL();
+ void UT_SetLcFilePositionL();
+ void UT_LcWindowL();
+ void UT_LcCameraControlL();
+ void UT_LcSourceFileControlL();
+ void UT_LcDestinationFileControlL();
+ void UT_LcAudioControlL();
+ void UT_LcZoomControlL();
+ void UT_LcBrightnessControlL();
+
+ private: // Data
+
+ TLcAudioControlStub iLcAudioControlStub;
+ CMceSession* iMceSession;
+ CMusEngClipVideoPlayer* iClipVideoPlayer;
+ TMusEngDisplayHandlerStub iDisplayHandlerStub;
+ EUNIT_DECLARE_TEST_TABLE;
+ };
+
+#endif // UT_MUSENGCLIPVIDEOPLAYER_H
+
+// End of file
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musenglivesession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musenglivesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -26,6 +26,8 @@
// FORWARD DECLARATIONS
class CMusEngLiveSession;
+class CLcSessionObserverStub;
+class CLcUiProviderStub;
class CMusEngObserverStub;
@@ -64,16 +66,6 @@
private: // Test methdods
void UT_NewLL();
- void UT_CurrentZoomLL();
- void UT_CMusEngLiveSession_SetZoomLL();
- void UT_MaxZoomLL();
- void UT_ZoomInLL();
- void UT_ZoomOutLL();
- void UT_ZoomDefaultLL();
- void UT_RecordL_and_IsRecordingLL();
- void UT_PlayLL();
- void UT_PauseLL();
- void UT_IsPlayingLL();
void UT_CompleteSessionStructureLL();
void UT_HandleSessionStateChangedL();
void UT_AdjustVideoCodecLL();
@@ -82,28 +74,18 @@
void UT_StreamStateChangedL();
void UT_StreamStateChangedWithSourceL();
void UT_StreamStateChangedWithSinkL();
- void UT_SetBrightnessLL();
- void UT_CurrentBrightnessLL();
- void UT_MaxBrightnessLL();
- void UT_MinBrightnessLL();
- void UT_IncreaseBrightnessLL();
- void UT_DecreaseBrightnessLL();
- void UT_BrightnessDefaultLL();
- void UT_BrightnessAutoLL();
- void UT_SetEncodingDeviceLL();
- void UT_SetCodecConfigKeyLL();
- void UT_ReadCodecConfigKeyLL();
- void UT_StoreEncoderConfigInfoLL();
- void UT_InitializeZoomStepSizeL();
-
+ void UT_EstablishLcSessionL();
+ void UT_LocalVideoPlayerL();
+
private: // Data
CMusEngLiveSession* iLiveSession;
CMusEngLiveSession* iRecordedLiveSession;
- CMusEngObserverStub* iObserver;
+ CLcSessionObserverStub* iLcSessionObserver;
+ CLcUiProviderStub* iLcUiProvider;
+ CMusEngObserverStub* iAudioRoutingObserver;
EUNIT_DECLARE_TEST_TABLE;
-
};
#endif // __UT_MUSENGLIVESESSION_H__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musenglivevideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* Copyright (c) 2009 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 UT_MUSENGLIVEVIDEOPLAYER_H
+#define UT_MUSENGLIVEVIDEOPLAYER_H
+
+
+// INCLUDES
+#include <ceunittestsuiteclass.h>
+#include <eunitmacros.h>
+#include "musengcamerahandler.h"
+#include "musengstubs.h"
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class CMusEngLiveVideoPlayer;
+
+
+// CLASS DEFINITION
+/**
+ *
+ */
+NONSHARABLE_CLASS( UT_CMusEngLiveVideoPlayer ): public CEUnitTestSuiteClass
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Two phase construction
+ */
+ static UT_CMusEngLiveVideoPlayer* NewL();
+ static UT_CMusEngLiveVideoPlayer* NewLC();
+
+ /**
+ * Destructor
+ */
+ ~UT_CMusEngLiveVideoPlayer();
+
+ private: // Constructors and destructors
+
+ UT_CMusEngLiveVideoPlayer();
+ void ConstructL();
+
+ private: // Test case setup and teardown
+
+ void SetupL();
+ void Teardown();
+
+ private: // Test methdods
+
+ void UT_NewLL();
+ void UT_LcVideoPlayerStateL();
+ void UT_LcPlayL();
+ void UT_LcWindowL();
+ void UT_LcCameraControlL();
+ void UT_LcSourceFileControlL();
+ void UT_LcDestinationFileControlL();
+ void UT_LcAudioControlL();
+ void UT_LcZoomControlL();
+ void UT_LcBrightnessControlL();
+ void UT_EnableLcWindowL();
+ void UT_LcWindowRectL();
+ void UT_LcWindowOrientationL();
+ void UT_SetLcFileNameL();
+ void UT_LcRecordL();
+
+ private: // Data
+
+ TLcAudioControlStub iLcAudioControlStub;
+ CMceSession* iMceSession;
+ TMusEngCameraHandler iCameraHandler;
+ CMusEngLiveVideoPlayer* iLiveVideoPlayer;
+ TMusEngDisplayHandlerStub iDisplayHandlerStub;
+ EUNIT_DECLARE_TEST_TABLE;
+ };
+
+#endif // UT_MUSENGLIVEVIDEOPLAYER_H
+
+// End of file
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengmcesession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengmcesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -29,9 +29,8 @@
class CMusEngLiveSession;
class CMusEngReceiveSession;
class CMusEngClipSession;
-class CMusEngObserverStub;
-class CMceSession;
-class CMusEngMceSession;
+class CLcSessionObserverStub;
+class CLcUiProviderStub;
// CLASS DEFINITION
/**
@@ -67,52 +66,69 @@
void Teardown();
private: // Test methdods
-
- void UT_CMusEngMceSession_TerminateLL();
- void UT_CMusEngMceSession_GetSessionTimeL();
- void UT_CMusEngMceSession_ConnectionActiveL();
- void UT_CMusEngMceSession_ContainsAudioLL();
- void UT_CMusEngMceSession_IsMutedLL();
- void UT_CMusEngMceSession_OrientationLL();
+
+ void UT_LcSessionStateL();
+ void UT_RemoteVideoPlayerL();
+ void UT_LocalVideoPlayerL();
+ void UT_LocalDisplayNameL();
+ void UT_RemoteDisplayNameL();
+ void UT_RemoteDetailsL();
+ void UT_SetParameterL();
+ void UT_ParameterValueL();
+ void UT_IsLcAudioMutedL();
+ void UT_MuteLcAudioL();
+ void UT_MuteLcMicL();
+ void UT_EnableLcLoudspeakerL();
+ void UT_SetLcVolumeL();
+ void UT_GetSessionTimeL();
+ void UT_HandleTerminationL();
+ void UT_AdjustVideoCodecL();
+ void UT_AdjustAudioCodecL();
+ void UT_RectChangedL();
+ void UT_SetSessionSdpLinesL();
+ void UT_SetSessionSdpLines_OperatorL();
+ void UT_SetMediaSdpLinesL();
+ void UT_SetMediaSdpLines_OperatorL();
+ void UT_AdjustStreamsAndCodecsL();
+ void UT_IncomingSessionL();
+ void UT_IncomingUpdateL();
+ void UT_StreamStateChangedL();
+ void UT_StreamStateChangedWithSourceL();
+ void UT_StreamStateChangedWithSinkL();
+ void UT_SessionStateChangedL();
+ void UT_HandleSessionStateChanged_EncoderKeyStoringL();
+ void UT_SessionConnectionStateChangedL();
+ void UT_FailedL();
+ void UT_UpdateFailedL();
+ void UT_SRReceivedL();
+ void UT_RRReceivedL();
+ void UT_SsrcAddedL();
+ void UT_SsrcRemovedL();
+ void UT_UpdateTimerEventL();
+ void UT_IsRoamingBetweenAPsAllowedL();
+ void UT_SaveContactL();
+ void UT_RectL();
+ void UT_SetRectLL();
+ void UT_SecondaryRectL();
+ void UT_SetSecondaryRectLL();
+ void UT_EnableDisplayLL();
void UT_CMusEngMceSession_SetOrientationLL();
- void UT_CMusEngMceSession_VolumeUpLL();
- void UT_CMusEngMceSession_VolumeDownLL();
- void UT_CMusEngMceSession_SetVolumeLL();
- void UT_CMusEngMceSession_EnableDisplayL();
- void UT_CMusEngMceSession_MuteLL();
- void UT_CMusEngMceSession_UnmuteLL();
- void UT_CMusEngMceSession_HandleTerminationL();
-
- void UT_CMusEngMceSession_AdjustVideoCodecLL();
- void UT_CMusEngMceSession_AdjustAudioCodecLL();
- void UT_CMusEngMceSession_RectChangedLL();
- void UT_CMusEngMceSession_SetSessionSdpLinesLL();
- void UT_CMusEngMceSession_AdjustStreamsAndCodecsLL();
- void UT_CMusEngMceSession_IncomingSessionL();
- void UT_CMusEngMceSession_IncomingUpdateL();
- void UT_CMusEngMceSession_StreamStateChangedL();
- void UT_CMusEngMceSession_StreamStateChangedWithSourceL();
- void UT_CMusEngMceSession_StreamStateChangedWithSinkL();
- void UT_CMusEngMceSession_SessionStateChangedL();
- void UT_CMusEngMceSession_SessionConnectionStateChangedL();
- void UT_CMusEngMceSession_FailedL();
- void UT_CMusEngMceSession_UpdateFailedL();
-
- void UT_CMusEngMceSession_SRReceivedL();
- void UT_CMusEngMceSession_RRReceivedL();
- void UT_CMusEngMceSession_InactivityTimeoutL();
- void UT_CMusEngMceSession_SsrcAddedL();
- void UT_CMusEngMceSession_SsrcRemovedL();
- void UT_CMusEngMceSession_UpdateTimerEventL();
- void UT_CMusEngMceSession_IsRoamingBetweenAPsAllowedL();
- void UT_CMusEngMceSession_IsDisplayEnabledLL();
-
- void UT_CMusEngMceSession_VolumeChangedL();
-
- private:
-
- void SetMaxVolForSpeakersL(CMceSession& aSession, TInt aMaxVol);
- TBool VerifySpeakersVolume(CMusEngMceSession& aSession, TInt aVolume);
+ void UT_SetEncodingDeviceLL();
+ void UT_SetCodecConfigKeyLL();
+ void UT_ReadCodecConfigKeyLL();
+ void UT_StoreEncoderConfigInfoLL();
+ void UT_StreamStreamingL();
+ void UT_InformObserverAboutSessionStateChangeL();
+ void UT_InformObserverAboutSessionUpdateL();
+ void UT_InformObserverAboutSessionFailureL();
+ void UT_InformObserverAboutPlayerStateChangeL();
+ void UT_InformObserverAboutPlayerUpdateL();
+ void UT_InformObserverAboutPlayerFailureL();
+ void UT_LcUiProviderL();
+ void UI_IsBackgroundStartupL();
+ void UT_InformUiProviderAboutReceivingStartL();
+ void UT_SetForegroundStatusL();
+ void UT_UpdateLcSessionLL();
private: // Data
@@ -120,8 +136,8 @@
CMusEngReceiveSession* iReceiveSession;
CMusEngClipSession* iClipSession;
CMusEngLiveSession* iSomeOtherSession;
- CMusEngObserverStub* iObserver;
-
+ CLcSessionObserverStub* iLcSessionObserver;
+ CLcUiProviderStub* iLcUiProvider;
TMceTransactionDataContainer iContainer;
EUNIT_DECLARE_TEST_TABLE;
};
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengmceutils.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengmceutils.h Tue Aug 31 15:12:07 2010 +0300
@@ -21,14 +21,16 @@
// EXTERNAL INCLUDES
-#include "mussipprofileuser.h"
#include <digia/eunit/ceunittestsuiteclass.h>
#include <digia/eunit/eunitmacros.h>
+
// FORWARD DECLARATIONS
class CMceManager;
class CMusSipProfileHandler;
class CMceSession;
+class CMusEngObserverStub;
+class CMceDisplaySink;
#ifndef NONSHARABLE_CLASS
#define NONSHARABLE_CLASS(x) class x
@@ -39,9 +41,8 @@
* Tester class for MusEngMceUtils.
*
*/
-NONSHARABLE_CLASS( UT_MusEngMceUtils ):
- public CEUnitTestSuiteClass,
- public MMusSipProfileUser
+NONSHARABLE_CLASS( UT_MusEngMceUtils ):
+ public CEUnitTestSuiteClass
{
public: // Constructors and destructors
@@ -55,11 +56,8 @@
* Destructor
*/
~UT_MusEngMceUtils();
-
- public: // From MMusSipProfileUser
- TBool IsRoamingBetweenAPsAllowed();
-
+
private: // Constructors and destructors
UT_MusEngMceUtils();
@@ -68,35 +66,44 @@
private: // Test case setup and teardown
void SetupL();
+ void Setup2L();
void Teardown();
private: // Test methdods
- void UT_MusEngMceUtils_IsVideoInStreamL();
- void UT_MusEngMceUtils_IsAudioInStreamL();
- void UT_MusEngMceUtils_GetVideoOutStreamLL();
- void UT_MusEngMceUtils_GetVideoInStreamLL();
- void UT_MusEngMceUtils_GetRecordingStreamL();
- void UT_MusEngMceUtils_GetMediaSinkL(); // From stream
- void UT_MusEngMceUtils_GetMediaSinkLL(); // From stream
- void UT_MusEngMceUtils_GetMediaSink2L(); // From session
- void UT_MusEngMceUtils_GetMediaSinkL2L(); // From session
- void UT_MusEngMceUtils_GetCameraLL();
- void UT_MusEngMceUtils_GetFileSourceLL();
- void UT_MusEngMceUtils_GetDisplayL();
- void UT_MusEngMceUtils_GetDisplayLL();
- void UT_MusEngMceUtils_AddDisplayLL();
- void UT_MusEngMceUtils_AddSpeakerLL();
- void UT_MusEngMceUtils_DisableStreamLL();
+ void UT_IsVideoInStreamL();
+ void UT_IsVideoOutStreamL();
+ void UT_IsAudioInStreamL();
+ void UT_GetVideoOutStreamLL();
+ void UT_GetVideoInStreamLL();
+ void UT_GetRecordingStreamL();
+ void UT_GetMediaSinkFromStreamL();
+ void UT_GetMediaSinkLFromStreamL();
+ void UT_GetMediaSinkFromSessionL();
+ void UT_GetMediaSinkLFromSessionL();
+ void UT_GetCameraLL();
+ void UT_GetFileSourceLL();
+ void UT_GetDisplayL();
+ void UT_GetDisplayLL();
+ void UT_AddDisplayLL();
+ void UT_AddSpeakerLL();
+ void UT_DisableStreamLL();
+ void UT_GetReceivingDisplayL();
+ void UT_GetReceivingDisplayLL();
+ void UT_GetVfDisplayL();
+ void UT_EnableInactivityTimerL();
private: // Data
CMceManager* iManager;
CMusSipProfileHandler* iProfileHandler;
+ CMusEngObserverStub* iObserver;
CMceSession* iEmptySession;
CMceSession* iVideoOutSession;
CMceSession* iVideoInSession;
+
+ CMceDisplaySink* iReceivingDisplay; // Not owned
EUNIT_DECLARE_TEST_TABLE;
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengorientationhandler.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2009 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 __UT_MUSENGORIENTATIONHANDLER_H__
-#define __UT_MUSENGORIENTATIONHANDLER_H__
-
-
-// EXTERNAL INCLUDES
-#include <digia/eunit/ceunittestsuiteclass.h>
-#include <digia/eunit/eunitmacros.h>
-
-// FORWARD DECLARATIONS
-class CMusEngLiveSession;
-class CMusEngObserverStub;
-class CMusEngOrientationHandler;
-
-
-// CLASS DEFINITION
-/**
- * Tester class for CMusEngLiveSession.
- * Tests only implementations that are not tested in ancestor classes.
- *
- */
-NONSHARABLE_CLASS( UT_CMusEngOrientationHandler ): public CEUnitTestSuiteClass
- {
- public: // Constructors and destructors
-
- /**
- * Two phase construction
- */
- static UT_CMusEngOrientationHandler* NewL();
- static UT_CMusEngOrientationHandler* NewLC();
-
- /**
- * Destructor
- */
- ~UT_CMusEngOrientationHandler();
-
- private: // Constructors and destructors
-
- UT_CMusEngOrientationHandler();
- void ConstructL();
-
- private: // Test case setup and teardown
-
- void SetupL();
-
- void Teardown();
-
- private: // Test methdods
-
- void UT_NewLL();
- void UT_RefreshOrientationL();
-
- private: // Data
-
- CMusEngLiveSession* iLiveSession;
- CMusEngObserverStub* iObserver;
- CMusEngOrientationHandler* iHandler;
-
- EUNIT_DECLARE_TEST_TABLE;
-
- };
-
-#endif // __UT_MUSENGORIENTATIONHANDLER_H__
-
-// End of file
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengoutsession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengoutsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -26,6 +26,8 @@
// FORWARD DECLARATIONS
class CMusEngLiveSession;
+class CLcSessionObserverStub;
+class CLcUiProviderStub;
class CMusEngObserverStub;
// CONSTANTS
@@ -69,21 +71,29 @@
private: // Test methdods
- void UT_CMusEngOutSession_InviteLL();
- void UT_CMusEngOutSession_CancelInviteLL();
- void UT_CMusEngOutSession_EstablishSessionLL();
- void UT_CMusEngOutSession_HandleTerminationL();
- void UT_CMusEngOutSession_AdjustVideoCodecLL();
- void UT_CMusEngOutSession_AdjustAudioCodecLL();
- void UT_CMusEngOutSession_CreateMceSessionStructureLL();
+ void UT_EstablishLcSessionL();
+ void UT_EstablishLcSession_RecipientResolvingL();
+ void UT_EstablishLcSession_RegistrationPendingL();
+ void UT_TerminateLcSessionL();
+ void UT_EstablishSessionLL();
+ void UT_HandleTerminationL();
+ void UT_HandleRecipientNotFoundTerminationL();
+ void UT_AdjustVideoCodecLL();
+ void UT_AdjustAudioCodecLL();
+ void UT_CreateMceSessionStructureLL();
+ void UT_ConstructLL();
+ void UT_ContactSavingLL();
+ void UT_RemoteAddressLL();
+ void UT_RemoteDisplayNameL();
private: // Data
CMusEngLiveSession* iLiveSession;
- CMusEngObserverStub* iObserver;
+ CLcSessionObserverStub* iLcSessionObserver;
+ CLcUiProviderStub* iLcUiProvider;
+ CMusEngObserverStub* iAudioRoutingObserver;
EUNIT_DECLARE_TEST_TABLE;
-
};
#endif // __UT_MUSENGOUTSESSION_H__
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengreceivesession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengreceivesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -27,9 +27,10 @@
// FORWARD DECLARATIONS
class CMceInSession;
class CMusEngReceiveSession;
-class CMusEngObserverStub;
+class CLcSessionObserverStub;
class CMceVideoStream;
class CMceAudioStream;
+class CLcUiProviderStub;
#include <e32def.h>
#ifndef NONSHARABLE_CLASS
@@ -79,7 +80,11 @@
private: // Test methdods
void UT_NewLL();
- void UT_AcceptInvitationLL();
+ void UT_LcSessionStateL();
+ void UT_EstablishLcSessionL();
+ void UT_TerminateLcSessionL();
+ void UT_RemoteVideoPlayerL();
+ void UT_RemoteDisplayName();
void UT_HandleSessionStateChangedL();
void UT_AdjustVideoCodecLL();
void UT_AdjustAudioCodecLL();
@@ -87,9 +92,6 @@
void UT_IncomingSessionL();
void UT_IncomingUpdateL();
void UT_StreamStateChangedL();
-
- // All the following functions test
- // CMusEngReceiveSession::CompleteSessionStructureL
void UT_CompleteSessionStructureL_WithoutSessionL();
void UT_CompleteSessionStructureL_WithoutStreamsL();
void UT_CompleteSessionStructureL_WithOutgoingStreamL();
@@ -98,14 +100,18 @@
void UT_CompleteSessionStructureL_WithVideoInBoundToVideoOutL();
void UT_CompleteSessionStructureL_WithMultipleVideoInsL();
void UT_CompleteSessionStructureL_WithVideoAndMultipleAudioInsL();
- void UT_CompleteSessionStructureL_OperatorVariant();
-
+ void UT_CompleteSessionStructureL_OperatorVariant();
+ void UT_CompleteSessionStructureL_SdpBandwidthAttributesL();
void UT_ParseAssertedIdentityL();
+ void UT_ContactSavingLL();
+ void UT_IsDisplayActive();
+ void UT_InactivityTimeoutL();
private: // Data
CMusEngReceiveSession* iReceiveSession;
- CMusEngObserverStub* iObserver;
+ CLcSessionObserverStub* iLcSessionObserver;
+ CLcUiProviderStub* iLcUiProvider;
EUNIT_DECLARE_TEST_TABLE;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengremotevideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2009 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 UT_MUSENGREMOTEVIDEOPLAYER_H
+#define UT_MUSENGREMOTEVIDEOPLAYER_H
+
+
+// INCLUDES
+#include <ceunittestsuiteclass.h>
+#include <eunitmacros.h>
+#include "musengstubs.h"
+
+// FORWARD DECLARATIONS
+class CMceSession;
+class CMusEngRemoteVideoPlayer;
+
+
+// CLASS DEFINITION
+/**
+ *
+ */
+NONSHARABLE_CLASS( UT_CMusEngRemoteVideoPlayer ): public CEUnitTestSuiteClass
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Two phase construction
+ */
+ static UT_CMusEngRemoteVideoPlayer* NewL();
+ static UT_CMusEngRemoteVideoPlayer* NewLC();
+
+ /**
+ * Destructor
+ */
+ ~UT_CMusEngRemoteVideoPlayer();
+
+ private: // Constructors and destructors
+
+ UT_CMusEngRemoteVideoPlayer();
+ void ConstructL();
+
+ private: // Test case setup and teardown
+
+ void SetupL();
+ void Teardown();
+
+ private: // Test methdods
+
+ void UT_NewLL();
+ void UT_LcVideoPlayerStateL();
+ void UT_LcPlayL();
+ void UT_LcWindowL();
+ void UT_LcCameraControlL();
+ void UT_LcSourceFileControlL();
+ void UT_LcDestinationFileControlL();
+ void UT_LcAudioControlL();
+ void UT_LcZoomControlL();
+ void UT_LcBrightnessControlL();
+ void UT_EnableLcWindowL();
+ void UT_LcWindowRectL();
+ void UT_LcWindowOrientationL();
+
+ private: // Data
+
+ TLcAudioControlStub iLcAudioControlStub;
+ CMceSession* iMceSession;
+ CMusEngRemoteVideoPlayer* iRemoteVideoPlayer;
+ TMusEngDisplayHandlerStub iDisplayHandlerStub;
+ EUNIT_DECLARE_TEST_TABLE;
+ };
+
+#endif // UT_MUSENGREMOTEVIDEOPLAYER_H
+
+// End of file
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengsession.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2009 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 __UT_MUSENGSESSION_H__
-#define __UT_MUSENGSESSION_H__
-
-
-// EXTERNAL INCLUDES
-#include <digia/eunit/ceunittestsuiteclass.h>
-#include <digia/eunit/eunitmacros.h>
-
-// FORWARD DECLARATIONS
-class CMusEngLiveSession;
-class CMusEngObserverStub;
-
-
-// CLASS DEFINITION
-/**
- * Tester class for CMusEngSession.
- * Since CMusEngSession is abstract, it is tested via object of its'
- * concrete descendant class CMusEngLiveSession. Only concrete
- * implementations are tested in this tester class.
- *
- */
-NONSHARABLE_CLASS( UT_CMusEngSession ): public CEUnitTestSuiteClass
- {
- public: // Constructors and destructors
-
- /**
- * Two phase construction
- */
- static UT_CMusEngSession* NewL();
- static UT_CMusEngSession* NewLC();
-
- /**
- * Destructor
- */
- ~UT_CMusEngSession();
-
- private: // Constructors and destructors
-
- UT_CMusEngSession();
- void ConstructL();
-
- private: // Test case setup and teardown
-
- void SetupL();
-
- void Teardown();
-
- private: // Test methods
-
- void UT_RectL();
- void UT_SetRectLL();
- void UT_AudioRoutingCanBeChangedL();
- void UT_IsAudioRoutingHeadsetL();
- void UT_IsAudioRoutingLoudSpeakerL();
- void UT_EnableLoudspeakerLL();
- void UT_IsLoudSpeakerEnabledL();
- void UT_VolumeLL();
- void UT_MuteMicLL();
- void UT_IsMicMutedLL();
- void UT_SetAudioRoutingObserverL();
- void UT_VolumeUpLL();
- void UT_VolumeDownLL();
- void UT_SetVolumeLL();
- void UT_SetVolumeChangeObserverL();
-
- private: // Data
-
- CMusEngLiveSession* iLiveSession;
- CMusEngObserverStub* iObserver;
-
- EUNIT_DECLARE_TEST_TABLE;
-
- };
-
-#endif // __UT_MUSENGSESSION_H__
-
-// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengsessionmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2009 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 UT_MUSENGSESSIONMANAGER_H
+#define UT_MUSENGSESSIONMANAGER_H
+
+// EXTERNAL INCLUDES
+#include <ceunittestsuiteclass.h>
+#include <eunitmacros.h>
+
+// FORWARD DECLARATIONS
+class CMusEngSessionManager;
+class CLcUiProviderStub;
+
+
+// CLASS DEFINITION
+/**
+ * Tester class for CMusEngSessionManager.
+ *
+ */
+NONSHARABLE_CLASS( UT_CMusEngSessionManager ): public CEUnitTestSuiteClass
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Two phase construction
+ */
+ static UT_CMusEngSessionManager* NewL();
+ static UT_CMusEngSessionManager* NewLC();
+
+ /**
+ * Destructor
+ */
+ ~UT_CMusEngSessionManager();
+
+ private: // Constructors and destructors
+
+ UT_CMusEngSessionManager();
+ void ConstructL();
+
+ private: // Test case setup and teardown
+
+ void SetupL();
+
+ void Teardown();
+
+ private: // Test methdods
+
+ void UT_NewL();
+ void UT_SessionL();
+ void UT_IsFeatureSupportedL();
+ void UT_CreateMusSessionL();
+ void UT_PropertyChangedL();
+
+ private: // Data
+
+ CMusEngSessionManager* iSessionManager;
+ CLcUiProviderStub* iLcUiProvider;
+
+ EUNIT_DECLARE_TEST_TABLE;
+ };
+
+#endif // UT_MUSENGSESSIONMANAGER_H
+
+// End of file
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengsipprofilehandler.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengsipprofilehandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -20,13 +20,13 @@
#define __UT_MUSENGSIPPROFILEHANDLER_H__
-// INCLUDES
-#include "mussipprofileuser.h"
+// INCLUDES
#include <digia/eunit/ceunittestsuiteclass.h>
#include <digia/eunit/eunitmacros.h>
// FORWARD DECLARATIONS
class CMusSipProfileHandler;
+class CMusEngObserverStub;
// CLASS DEFINITION
@@ -34,9 +34,8 @@
* Tester class for CMusSipProfileHandler.
*
*/
-NONSHARABLE_CLASS( UT_CMusEngSipProfileHandler ):
- public CEUnitTestSuiteClass,
- public MMusSipProfileUser
+NONSHARABLE_CLASS( UT_CMusEngSipProfileHandler ):
+ public CEUnitTestSuiteClass
{
public: // Constructors and destructors
@@ -50,11 +49,7 @@
* Destructor
*/
~UT_CMusEngSipProfileHandler();
-
- public: // From MMusSipProfileUser
- TBool IsRoamingBetweenAPsAllowed();
-
private: // Constructors and destructors
UT_CMusEngSipProfileHandler();
@@ -66,18 +61,20 @@
void Teardown();
- private: // Test methods
+ private: // Test methdods
- void UT_CMusEngSipProfileHandler_CreateSipProfileLL();
- void UT_CMusEngSipProfileHandler_ProfileIdL();
- void UT_CMusEngSipProfileHandler_AlrEventL();
- void UT_CMusEngSipProfileHandler_NullTestsL();
- void UT_CMusEngSipProfileHandler_UserFromProfileLCL();
+ void UT_CreateSipProfileLL();
+ void UT_ProfileIdL();
+ void UT_AlrEventL();
+ void UT_NullTestsL();
+ void UT_UserFromProfileLCL();
+ void UT_IsRegisteredL();
+ void UT_ProfileRegistryEventOccurredL();
private: // Data
CMusSipProfileHandler* iProfileHandler;
- TBool iRoamingBetweenAPsAllowed;
+ CMusEngObserverStub* iObserver;
EUNIT_DECLARE_TEST_TABLE;
};
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengtelephoneutils.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengtelephoneutils.h Tue Aug 31 15:12:07 2010 +0300
@@ -63,8 +63,6 @@
void UT_NewLL();
void UT_AudioRoutingCanBeChangedL();
- void UT_IsAudioRoutingHeadsetL();
- void UT_IsAudioRoutingLoudSpeakerL();
void UT_LoudspeakerLL();
void UT_IsLoudSpeakerEnabledL();
void UT_GetVolumeLL();
@@ -74,8 +72,6 @@
void UT_SetOutputCompleteL();
void UT_ValidateVolumeL();
void UT_DestructorL();
- void UT_UpdateCurrentVolumeL();
- void UT_HandleNotifyGenericL();
private: // Data
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengtwowayrecvsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,117 @@
+/*
+* Copyright (c) 2009 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 __UT_MUSENGTWOWAYRECVSESSION_H__
+#define __UT_MUSENGTWOWAYRECVSESSION_H__
+
+
+// EXTERNAL INCLUDES
+#include <ceunittestsuiteclass.h>
+#include <eunitmacros.h>
+
+// FORWARD DECLARATIONS
+class CMceInSession;
+class CMusEngTwoWayRecvSession;
+class CMusEngReceiveSession;
+class CMceVideoStream;
+class CMceAudioStream;
+class CLcSessionObserverStub;
+
+#include <e32def.h>
+#ifndef NONSHARABLE_CLASS
+ #define NONSHARABLE_CLASS(x) class x
+#endif
+
+// CLASS DEFINITION
+/**
+ *
+ */
+NONSHARABLE_CLASS( UT_CMusEngTwoWayRecvSession ): public CEUnitTestSuiteClass
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Two phase construction
+ */
+ static UT_CMusEngTwoWayRecvSession* NewL();
+ static UT_CMusEngTwoWayRecvSession* NewLC();
+
+ /**
+ * Destructor
+ */
+ ~UT_CMusEngTwoWayRecvSession();
+
+ private: // Constructors and destructors
+
+ UT_CMusEngTwoWayRecvSession();
+ void ConstructL();
+
+ private: // Test case setup and teardown
+
+ void SetupL();
+
+ void Teardown();
+
+ private: // Test helpers
+
+ CMceVideoStream* ConstructVideoInStreamLC();
+ CMceVideoStream* ConstructVideoOutStreamLC();
+ CMceAudioStream* ConstructAudioInStreamLC();
+ CMceAudioStream* ConstructAudioOutStreamLC();
+ CMceInSession* ConstructInSessionLC( TInt aVideoStreamCount,
+ TInt aAudioStreamCount,
+ TBool aConstructSinks = ETrue );
+
+ CMceInSession* ConstructTwoWayInSessionLC( TBool aConstructSinks = ETrue );
+
+ private: // Test methdods
+
+ void UT_NewLL();
+ void UT_EnableDisplayLL();
+ void UT_SetOrientationLL();
+ void UT_OrientationLL();
+ void UT_SetLocalRectLL();
+ void UT_SetRectsLL();
+ void UT_CameraL();
+ void UT_LocalVideoPlayerL();
+ void UT_HandleSessionStateChangedL();
+ void UT_AdjustVideoCodecLL();
+ void UT_AdjustAudioCodecLL();
+ void UT_DoCodecSelectionLL();
+ void UT_IncomingSessionL();
+ void UT_CompleteSessionStructureL_WithoutSessionL();
+ void UT_CompleteSessionStructureL_WithoutStreamsL();
+ void UT_CompleteSessionStructureL_WithOutgoingStreamL();
+ void UT_CompleteSessionStructureL_WithVideoInL();
+ void UT_CompleteSessionStructureL_WithVideoOutBoundToVideoInL();
+ void UT_CompleteSessionStructureL_WithVideoInBoundToVideoOutL();
+ void UT_CompleteSessionStructureL_WithMultipleVideoInsL();
+ void UT_CompleteSessionStructureL_WithVideoAndMultipleAudioInsL();
+ void UT_CompleteSessionStructureL_OperatorVariant();
+
+ private: // Data
+
+ CMusEngTwoWayRecvSession* iReceiveSession;
+ CLcSessionObserverStub* iLcSessionObserver;
+
+ EUNIT_DECLARE_TEST_TABLE;
+ };
+
+#endif // __UT_MUSENGRECEIVESESSION_H__
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengtwowaysession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2009 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 __UT_MUSENGTWOWAYSESSION_H__
+#define __UT_MUSENGTWOWAYSESSION_H__
+
+
+// EXTERNAL INCLUDES
+#include <ceunittestsuiteclass.h>
+#include <eunitmacros.h>
+
+// FORWARD DECLARATIONS
+class CMusEngTwoWaySession;
+class CLcSessionObserverStub;
+class CLcUiProviderStub;
+
+
+// CLASS DEFINITION
+/**
+ * Tester class for CMusEngLiveSession.
+ * Tests only implementations that are not tested in ancestor classes.
+ *
+ */
+NONSHARABLE_CLASS( UT_CMusEngTwoWaySession ): public CEUnitTestSuiteClass
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Two phase construction
+ */
+ static UT_CMusEngTwoWaySession* NewL();
+ static UT_CMusEngTwoWaySession* NewLC();
+
+ /**
+ * Destructor
+ */
+ ~UT_CMusEngTwoWaySession();
+
+ private: // Constructors and destructors
+
+ UT_CMusEngTwoWaySession();
+ void ConstructL();
+
+ private: // Test case setup and teardown
+
+ void SetupL();
+
+ void Teardown();
+
+ private: // Test methdods
+
+ void UT_NewLL();
+ void UT_EstablishLcSessionLL();
+ void UT_EnableDisplayLL();
+ void UT_SetOrientationLL();
+ void UT_SetLocalRectLL();
+ void UT_SetRectsLL();
+ void UT_CompleteSessionStructureLL();
+ void UT_HandleSessionStateChangedL();
+ void UT_AdjustVideoCodecLL();
+ void UT_AdjustAudioCodecLL();
+ void UT_DoCodecSelectionLL();
+ void UT_StreamStateChangedL();
+ void UT_StreamStateChangedWithSourceL();
+ void UT_SetEncodingDeviceLL();
+ void UT_SetCodecConfigKeyLL();
+ void UT_ReadCodecConfigKeyLL();
+ void UT_StoreEncoderConfigInfoLL();
+ void UT_RemoteVideoPlayerL();
+ void UT_EnableLcFileL();
+ void UT_InactivityTimeoutL();
+
+ private: // Data
+
+ CMusEngTwoWaySession* iLiveSession;
+ CLcSessionObserverStub* iLcSessionObserver;
+ CLcUiProviderStub* iLcUiProvider;
+
+ EUNIT_DECLARE_TEST_TABLE;
+ };
+
+#endif // __UT_MUSENGTWOWAYSESSION_H__
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_muspropertywatch.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2009 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 __UT_MUSPROPERYWATCH_H__
+#define __UT_MUSPROPERYWATCH_H__
+
+
+// EXTERNAL INCLUDES
+#include <ceunittestsuiteclass.h>
+#include <eunitmacros.h>
+
+#include "musengstubs.h"
+
+// FORWARD DECLARATIONS
+class CMusPropertyWatch;
+class TMusUiPropertyObserverStub;
+
+// CLASS DEFINITION
+/**
+ * Tester class for CMusEngSession.
+ * Since CMusEngSession is abstract, it is tested via object of its'
+ * concrete descendant class CMusEngLiveSession. Only concrete
+ * implementations are tested in this tester class.
+ *
+ */
+NONSHARABLE_CLASS( UT_CMusPropertyWatch ): public CEUnitTestSuiteClass
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Two phase construction
+ */
+ static UT_CMusPropertyWatch* NewL();
+ static UT_CMusPropertyWatch* NewLC();
+
+ /**
+ * Destructor
+ */
+ ~UT_CMusPropertyWatch();
+
+ private: // Constructors and destructors
+
+ UT_CMusPropertyWatch();
+ void ConstructL();
+
+ private: // Test case setup and teardown
+
+ void SetupL();
+
+ void Teardown();
+
+ private: // Test methods
+
+ void UT_CMusPropertyWatch_ReadIntPropertyLL();
+ void UT_CMusPropertyWatch_ReadDescPropertyLL();
+ void UT_CMusPropertyWatch_DoCancelL();
+ void UT_CMusPropertyWatch_RunLL();
+ void UT_CMusPropertyWatch_RunErrorL();
+
+
+ private: // Data
+
+
+ TMusPropertyObserverStub iPropertyObserver;
+ CMusPropertyWatch* iPropertyWatch;
+
+ EUNIT_DECLARE_TEST_TABLE;
+
+ };
+
+#endif // __UT_MUSPROPERYWATCH_H__
+
+// End of file
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/musengstubs.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/musengstubs.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,6 +18,7 @@
#include "musengstubs.h"
+#include "musengtestdefs.h"
#include <sipprofilealrcontroller.h>
@@ -33,22 +34,16 @@
Reset();
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
CMusEngObserverStub::~CMusEngObserverStub()
{
- delete iIncomingSessionOriginator;
}
-
-// -------- Functions from MMusEngSessionDurationTimerObserver -----------------
-
-
// -----------------------------------------------------------------------------
-//
+// From MMusEngSessionDurationTimerObserver
// -----------------------------------------------------------------------------
//
void CMusEngObserverStub::UpdateTimerEvent()
@@ -56,368 +51,31 @@
iUpdateTimerEventCalled = ETrue;
}
-
-// ----------- Functions from MusEngSessionObserver ----------------------------
-
-
-
-
// -----------------------------------------------------------------------------
-//
+// From MMusEngAudioRoutingObserver
// -----------------------------------------------------------------------------
//
-void CMusEngObserverStub::SessionEstablished()
- {
- iSessionEstablishedCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionTerminated()
- {
- iSessionTerminatedCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionConnectionLost()
- {
- iSessionConnectionLostCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionFailed()
- {
- iSessionFailedCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::StreamIdle()
- {
- iStreamIdleCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::StreamStreaming()
- {
- iStreamStreamingCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionTimeChanged(
- const TTimeIntervalSeconds& /*aSeconds*/ )
- {
- iSessionTimeChangedCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::InactivityTimeout()
- {
- iInactivityTimeoutCalled = ETrue;
- }
-
-
-
-
-
-
-// ---- FUNCTIONS OF MMusEngOutSessionObserver --------------------------------
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionRejected()
- {
- iSessionRejectedCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionBadRequest()
+void CMusEngObserverStub::AudioRoutingChanged()
{
- iSessionBadRequestCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionUnauthorized()
- {
- iSessionUnauthorizedCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionPaymentRequired()
- {
- iSessionPaymentRequiredCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionRecipientNotFound()
- {
- iSessionRecipientNotFoundCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionProxyAuthenticationRequired()
- {
- iSessionProxyAuthenticationRequiredCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionRequestTimeOut()
- {
- iSessionRequestTimeOutCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionUnsupportedMediaType()
- {
- iSessionUnsupportedMediaTypeCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionBusyHere()
- {
- iSessionBusyHereCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::SessionRequestCancelled()
- {
- iSessionRequestCancelledCalled = ETrue;
- }
-
-
-void CMusEngObserverStub::SessionTemporarilyNotAvailable()
- {
- iSessionTemporarilyNotAvailable = ETrue;
- }
-
-
-
-// ---- FUNCTIONS OF MMusEngLiveSessionObserver ----------------------------------
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::DiskFull()
- {
- iDiskFullCalled = ETrue;
+ iAudioRoutingChangedCalled = ETrue;
}
// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::OrientationRefreshEnded()
- {
- iOrientationRefreshEndedCalled = ETrue;
- }
-
-
-// ---- FUNCTIONS OF MMusEngClipSessionObserver ----------------------------------
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::EndOfClip()
- {
- iEndOfClipCalled = ETrue;
- }
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-
-void CMusEngObserverStub::RewindFromEndL()
- {
- iRewindFromEnd= ETrue;
- }
-
-// -----------------------------------------------------------------------------
-//
+// From MMusSipProfileUser
// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::TranscodingNeeded(TBool aDueUnknowCapas)
- {
- iTranscodingNeededCalled = ETrue;
- iDueUnknowCapas = aDueUnknowCapas;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::TranscodingProgressed( TInt aPercentage )
- {
- iTranscodingProgressedPercentage = aPercentage;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::TranscodingCompletedInit()
- {
- iTranscodingCompletedInitCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::TranscodingCompletedFinalize()
+//
+TBool CMusEngObserverStub::IsRoamingBetweenAPsAllowed()
{
- iTranscodingCompletedFinalizeCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::TranscodingFailed()
- {
- iTranscodingFailedCalled = ETrue;
- }
-
-
-// ---- FUNCTIONS OF MMusEngInSessionObserver ----------------------------------
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::IncomingSessionPreNotification()
- {
- iIncomingSessionPreNotificationCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::IncomingSession( const TDesC& aOriginator,
- const TDesC& /*aOriginatorIdentity*/ )
- {
- iIncomingSessionCalled = ETrue;
- iIncomingSessionOriginator = aOriginator.Alloc();
-
- if ( !iIncomingSessionOriginator )
- {
- // TODO: Handle out of memory.
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::StreamBuffering()
- {
- iStreamBufferingCalled = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::AudioRoutingChanged( TBool aShowNote )
- {
- iAudioRoutingChangedCalled = ETrue;
- iShowNote = aShowNote;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusEngObserverStub::AudioRouteChangeAllowed() const
- {
- return iAudioRouteChangeAllowed;
+ return iRoamingBetweenAPsAllowed;
}
// -----------------------------------------------------------------------------
-//
+// From MMusSipProfileUser
// -----------------------------------------------------------------------------
-//
-void CMusEngObserverStub::VolumeChanged( TInt aVolume, TBool /*aAudioRouteChanged*/ )
+//
+void CMusEngObserverStub::ProfileRegistered()
{
- iVolume = aVolume;
+ iProfileRegisteredCalled = ETrue;
}
// ----- HELPERS ---------------------------------------------------------------
@@ -429,42 +87,10 @@
//
TBool CMusEngObserverStub::IsReseted()
{
- return ( !iUpdateTimerEventCalled &&
- !iSessionEstablishedCalled &&
- !iSessionTerminatedCalled &&
- !iSessionConnectionLostCalled &&
- !iSessionFailedCalled &&
- !iStreamIdleCalled &&
- !iStreamStreamingCalled &&
- !iSessionTimeChangedCalled &&
- !iInactivityTimeoutCalled &&
- !iSessionRejectedCalled &&
- !iSessionBadRequestCalled &&
- !iSessionUnauthorizedCalled &&
- !iSessionPaymentRequiredCalled &&
- !iSessionRecipientNotFoundCalled &&
- !iSessionProxyAuthenticationRequiredCalled &&
- !iSessionRequestTimeOutCalled &&
- !iSessionUnsupportedMediaTypeCalled &&
- !iSessionBusyHereCalled &&
- !iSessionRequestCancelledCalled &&
- !iDiskFullCalled &&
- !iEndOfClipCalled &&
- !iRewindFromEnd &&
- !iTranscodingNeededCalled &&
- !iTranscodingCompletedInitCalled &&
- !iTranscodingCompletedFinalizeCalled &&
- !iTranscodingFailedCalled &&
- !iIncomingSessionPreNotificationCalled &&
- !iIncomingSessionCalled &&
- !iStreamBufferingCalled &&
- !iAudioRoutingChangedCalled &&
- iTranscodingProgressedPercentage == 0 &&
- !iSessionTemporarilyNotAvailable &&
- !iIncomingSessionOriginator &&
- !iShowNote &&
- iAudioRouteChangeAllowed &&
- !iVolume );
+ return ( iUpdateTimerEventCalled == EFalse &&
+ iAudioRoutingChangedCalled == EFalse &&
+ iRoamingBetweenAPsAllowed == EFalse &&
+ iProfileRegisteredCalled == EFalse );
}
// -----------------------------------------------------------------------------
@@ -474,44 +100,472 @@
void CMusEngObserverStub::Reset()
{
iUpdateTimerEventCalled = EFalse;
- iSessionEstablishedCalled = EFalse;
- iSessionTerminatedCalled = EFalse;
- iSessionConnectionLostCalled = EFalse;
- iSessionFailedCalled = EFalse;
- iStreamIdleCalled = EFalse;
- iStreamStreamingCalled = EFalse;
- iSessionTimeChangedCalled = EFalse;
- iInactivityTimeoutCalled = EFalse;
- iSessionRejectedCalled = EFalse;
- iSessionBadRequestCalled = EFalse;
- iSessionUnauthorizedCalled = EFalse;
- iSessionPaymentRequiredCalled = EFalse;
- iSessionRecipientNotFoundCalled = EFalse;
- iSessionProxyAuthenticationRequiredCalled = EFalse;
- iSessionRequestTimeOutCalled = EFalse;
- iSessionUnsupportedMediaTypeCalled = EFalse;
- iSessionBusyHereCalled = EFalse;
- iSessionRequestCancelledCalled = EFalse;
- iDiskFullCalled = EFalse;
- iEndOfClipCalled = EFalse;
- iRewindFromEnd = EFalse;
- iTranscodingNeededCalled = EFalse;
- iTranscodingCompletedInitCalled = EFalse;
- iTranscodingCompletedFinalizeCalled = EFalse;
- iTranscodingFailedCalled = EFalse;
- iIncomingSessionPreNotificationCalled = EFalse;
- iIncomingSessionCalled = EFalse;
- iStreamBufferingCalled = EFalse;
iAudioRoutingChangedCalled = EFalse;
- iTranscodingProgressedPercentage = 0;
- delete iIncomingSessionOriginator;
- iSessionTemporarilyNotAvailable = EFalse;
- iIncomingSessionOriginator = NULL;
- iShowNote = EFalse;
- iAudioRouteChangeAllowed = ETrue;
+ iRoamingBetweenAPsAllowed = EFalse;
+ iProfileRegisteredCalled = EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TMusEngDisplayHandlerStub::TMusEngDisplayHandlerStub()
+ {
+ Reset();
+ }
+
+void TMusEngDisplayHandlerStub::Reset()
+ {
+ iRect = TRect( 0, 0, 0, 0 );
+ iSecondaryRect = TRect( 0, 0, 0, 0 );
+ iIsEnabled = EFalse;
+ iOrientation = EPortrait;
+ iIsActive = ETrue;
+ }
+
+TRect TMusEngDisplayHandlerStub::Rect() const
+ {
+ return iRect;
+ }
+
+void TMusEngDisplayHandlerStub::SetRectL( const TRect& aRect )
+ {
+ iRect = aRect;
+ }
+
+void TMusEngDisplayHandlerStub::SetSecondaryRectL( const TRect& aSecondaryRect )
+ {
+ iSecondaryRect = aSecondaryRect;
+ }
+
+TRect TMusEngDisplayHandlerStub::SecondaryRect() const
+ {
+ return iSecondaryRect;
+ }
+
+void TMusEngDisplayHandlerStub::EnableDisplayL( TBool aEnable )
+ {
+ iIsEnabled = aEnable;
+ }
+
+TBool TMusEngDisplayHandlerStub::IsDisplayEnabled()
+ {
+ return iIsEnabled;
+ }
+
+MMusEngDisplayHandler::TDisplayOrientation TMusEngDisplayHandlerStub::OrientationL()
+ {
+ return iOrientation;
+ }
+
+void TMusEngDisplayHandlerStub::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ iOrientation = aOrientation;
+ }
+
+TBool TMusEngDisplayHandlerStub::IsDisplayActive()
+ {
+ return iIsActive;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcSessionObserverStub::CLcSessionObserverStub()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcSessionObserverStub::~CLcSessionObserverStub()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcSessionObserverStub::StateChanged( MLcSession& aSession )
+ {
+ iCalledFunction = ESessionStateChanged;
+ iCurrentSession = &aSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcSessionObserverStub::StateChanged( MLcVideoPlayer& aPlayer )
+ {
+ iCalledFunction = EPlayerStateChanged;
+ iCurrentPlayer = &aPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcSessionObserverStub::Updated( MLcSession& aSession )
+ {
+ iCalledFunction = ESessionUpdated;
+ iCurrentSession = &aSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcSessionObserverStub::Updated( MLcVideoPlayer& aPlayer )
+ {
+ iCalledFunction = EPlayerUpdated;
+ iCurrentPlayer = &aPlayer;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcSessionObserverStub::Failed( MLcSession& aSession, TInt aError )
+ {
+ iCalledFunction = ESessionFailed;
+ iCurrentSession = &aSession;
+ iError = aError;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcSessionObserverStub::Failed( MLcVideoPlayer& aPlayer, TInt aError )
+ {
+ iCalledFunction = EPlayerFailed;
+ iCurrentPlayer = &aPlayer;
+ iError = aError;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcSessionObserverStub::SessionTimeChanged(
+ MLcSession& aSession,
+ const TTimeIntervalSeconds& aSeconds )
+ {
+ iCalledFunction = ESessionTimeChanged;
+ iCurrentSession = &aSession;
+ iSessionTime = aSeconds.Int();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcSessionObserverStub::Reset()
+ {
+ iCalledFunction = EUnknown;
+ iCurrentSession = NULL;
+ iCurrentPlayer = NULL;
+ iSessionTime = 0;
+ iError = KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CLcSessionObserverStub::IsReseted()
+ {
+ return ( iCalledFunction == EUnknown &&
+ iCurrentSession == NULL &&
+ iCurrentPlayer == NULL &&
+ iSessionTime == 0 &&
+ iError == KErrNone );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcUiProviderStub::CLcUiProviderStub()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcUiProviderStub::~CLcUiProviderStub()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CLcUiProviderStub::SelectRecipient(
+ MDesCArray& aRecipientAddresses,
+ TDes& aSelectedRecipientAddress )
+ {
+ iCalledFunction = ESelectRecipient;
+ if ( aRecipientAddresses.MdcaCount() > 0 )
+ {
+ aSelectedRecipientAddress = aRecipientAddresses.MdcaPoint( 0 );
+ }
+ return iSimulatedReturnValue;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CLcUiProviderStub::InputRecipient( TDes& aRecipientAddress )
+ {
+ iCalledFunction = EInputRecipient;
+ aRecipientAddress = iRecipient;
+ return iSimulatedReturnValue;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcUiProviderStub::HandleForegroundStatus( TBool aForeground )
+ {
+ iCalledFunction = EHandleForegroundStatus;
+ iForeground = aForeground;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcUiProviderStub::BlockUi( TBool /*aBlocked*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CLcUiProviderStub::Reset()
+ {
+ iCalledFunction = EUnknown;
+ iRecipient.Set( KNullDesC );
+ iSimulatedReturnValue = EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TLcWindowStub::TLcWindowStub() :
+ iEnabled( EFalse ),
+ iRect(),
+ iOrientation( MLcWindow::EPortrait )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcWindowStub::EnableLcWindowL( TBool aEnable )
+ {
+ iEnabled = aEnable;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool TLcWindowStub::IsLcWindowEnabled()
+ {
+ return iEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcWindowStub::SetLcWindowRectL( TRect aRect )
+ {
+ iRect = aRect;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TRect TLcWindowStub::LcWindowRect()
+ {
+ delete HBufC::NewL( 1 );
+ return iRect;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcWindowStub::SetLcWindowOrientationL( TLcWindowOrientation aOrientation )
+ {
+ delete HBufC::NewL( 1 );
+ iOrientation = aOrientation;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcWindowStub::Reset()
+ {
+ iEnabled = EFalse;
+ iOrientation = MLcWindow::EPortrait;
+ iRect.SetSize( TSize() );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MLcWindow::TLcWindowOrientation TLcWindowStub::LcWindowOrientationL()
+ {
+ delete HBufC::NewL( 1 );
+ return iOrientation;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TLcAudioControlStub::TLcAudioControlStub()
+ {
+ Reset();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool TLcAudioControlStub::IsLcAudioMutedL()
+ {
+ delete HBufC::NewL( 1 );
+ return iAudioMuted;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcAudioControlStub::MuteLcAudioL( TBool aMute )
+ {
+ delete HBufC::NewL( 1 );
+ iAudioMuted = aMute;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool TLcAudioControlStub::IsLcMicMutedL()
+ {
+ delete HBufC::NewL( 1 );
+ return iMicMuted;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcAudioControlStub::MuteLcMicL( TBool aMute )
+ {
+ delete HBufC::NewL( 1 );
+ iMicMuted = aMute;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool TLcAudioControlStub::IsEnablingLcLoudspeakerAllowed()
+ {
+ return iEnablingLoudspeakerAllowed;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcAudioControlStub::EnableLcLoudspeakerL( TBool aEnabled )
+ {
+ delete HBufC::NewL( 1 );
+ iLoudspeakerEnabled = aEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool TLcAudioControlStub::IsLcLoudspeakerEnabled()
+ {
+ return iLoudspeakerEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt TLcAudioControlStub::LcVolumeL()
+ {
+ delete HBufC::NewL( 1 );
+ return iVolume;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcAudioControlStub::SetLcVolumeL( TInt aValue )
+ {
+ delete HBufC::NewL( 1 );
+ iVolume = aValue;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcAudioControlStub::IncreaseLcVolumeL()
+ {
+ delete HBufC::NewL( 1 );
+ iVolume++;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcAudioControlStub::DecreaseLcVolumeL()
+ {
+ delete HBufC::NewL( 1 );
+ iVolume--;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TLcAudioControlStub::Reset()
+ {
+ iAudioMuted = EFalse;
+ iMicMuted = EFalse;
+ iEnablingLoudspeakerAllowed = EFalse;
+ iLoudspeakerEnabled = ETrue;
iVolume = 0;
- iDueUnknowCapas = EFalse;
- iOrientationRefreshEndedCalled = EFalse;
}
@@ -556,3 +610,8 @@
: iRegistry( aRegistry )
{
}
+
+void REComSession::DestroyedImplementation(TUid /*aDtorIDKey*/)
+ {
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengcamerahandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,956 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// INTERNAL INCLUDES
+#include "ut_musengcamerahandler.h"
+#include "musengstubs.h"
+#include "musengtestdefs.h"
+#include "musenglivesession.h"
+#include "mussipprofilehandler.h"
+#include "musengmceutils.h"
+#include "mussettings.h"
+#include "mussessionproperties.h"
+
+// SYSTEM INCLUDES
+#include <eunitmacros.h>
+#include <mceoutsession.h>
+#include <mcestreambundle.h>
+#include <mcevideostream.h>
+#include <mcecamerasource.h>
+#include <mcertpsink.h>
+#include <mcedisplaysink.h>
+#include <mcertpsource.h>
+
+const TUint KSipProfileId( 1 );
+
+//use step in different time period
+const TInt KZoomBigStepCount = 15;
+const TInt KZoomSmallStepCount = KZoomBigStepCount*2;
+const TInt KZoomStepMinSize = 1;
+
+// 0.4 second
+const TInt64 KZoomFasterTime = 400000;//must bigger than 1/3 second
+
+//insure that step is 1
+#define USER_SLEEP User::After(KZoomFasterTime)
+
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_TMusEngCameraHandler* UT_TMusEngCameraHandler::NewL()
+ {
+ UT_TMusEngCameraHandler* self = UT_TMusEngCameraHandler::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_TMusEngCameraHandler* UT_TMusEngCameraHandler::NewLC()
+ {
+ UT_TMusEngCameraHandler* self = new( ELeave ) UT_TMusEngCameraHandler();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_TMusEngCameraHandler::~UT_TMusEngCameraHandler()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+UT_TMusEngCameraHandler::UT_TMusEngCameraHandler()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::SetupL()
+ {
+ iManager = CMceManager::NewL( TUid::Null(), NULL );
+ iObserver = new( ELeave ) CMusEngObserverStub;
+ iObserver->iRoamingBetweenAPsAllowed = ETrue;
+ iProfileHandler = CMusSipProfileHandler::NewL( *iObserver );
+
+ iProfileHandler->CreateProfileL( KSipProfileId );
+
+ iSession = CMceOutSession::NewL( *iManager,
+ *iProfileHandler->Profile(),
+ KTestRecipientSipUri8() );
+
+
+ CMceVideoStream* videoOut = CMceVideoStream::NewLC();
+
+ videoOut->AddSinkL( CMceRtpSink::NewLC() );
+ CleanupStack::Pop();
+
+ videoOut->AddSinkL( CMceDisplaySink::NewLC( *iManager ) );
+ CleanupStack::Pop();
+
+ videoOut->SetSourceL( CMceCameraSource::NewLC( *iManager ) );
+ CleanupStack::Pop();
+
+ CMceVideoStream* videoIn = CMceVideoStream::NewLC();
+
+ CMceDisplaySink* receivingDisplay = CMceDisplaySink::NewLC( *iManager );
+ videoIn->AddSinkL( receivingDisplay );
+ CleanupStack::Pop();
+
+ videoIn->SetSourceL( CMceRtpSource::NewLC() );
+ CleanupStack::Pop();
+
+ videoOut->BindL( videoIn );
+ CleanupStack::Pop( videoIn );
+
+ iSession->AddStreamL( videoOut );
+ CleanupStack::Pop( videoOut );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::Teardown()
+ {
+ delete iSession;
+ iSession = NULL;
+ iCameraHandler.SetSession( NULL );
+ delete iProfileHandler;
+ delete iObserver;
+ delete iManager;
+ }
+
+
+
+// TEST CASES
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_LcCameraCountL()
+ {
+ // Call without setting the MCE session
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.LcCameraCountL(), KErrNotReady )
+
+ iCameraHandler.SetSession( iSession );
+ CMceCameraSource* camera =
+ MusEngMceUtils::GetCameraL( *( iSession ) );
+ iCameraHandler.iCameraUsage = MusSettingsKeys::EUseCameraSwapping;
+ camera->iCameraCount = 2;
+ camera->iCameraIndex = TMusEngCameraHandler::EBackCamera;
+
+ // Two cameras
+ EUNIT_ASSERT_EQUALS( 2, iCameraHandler.LcCameraCountL() )
+
+ // Two cameras, swapping cameras not allowed, use only main camera
+ iCameraHandler.iCameraUsage = MusSettingsKeys::EUseOnlyMainCamera;
+ camera->iCameraCount = 2;
+ EUNIT_ASSERT_EQUALS( 1, iCameraHandler.LcCameraCountL() )
+
+ // Two cameras, swapping cameras not allowed, use only main camera
+ iCameraHandler.iCameraUsage = MusSettingsKeys::EUseOnlySecondaryCamera;
+ camera->iCameraCount = 2;
+ EUNIT_ASSERT_EQUALS( 1, iCameraHandler.LcCameraCountL() )
+
+ // Only one camera available
+ iCameraHandler.iCameraUsage = MusSettingsKeys::EUseCameraSwapping;
+ camera->iCameraCount = 1;
+ EUNIT_ASSERT_EQUALS( 1, iCameraHandler.LcCameraCountL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_ToggleLcCameraL()
+ {
+ EUNIT_ASSERT_EQUALS( TInt( TMusEngCameraHandler::ECameraNotAvailable ),
+ iCameraHandler.CurrentLcCameraIndex() )
+
+ iCameraHandler.SetSession( iSession );
+ iCameraHandler.iCameraUsage = MusSettingsKeys::EUseCameraSwapping;
+ iCameraHandler.iCurrentCamera = TMusEngCameraHandler::EBackCamera;
+
+ // Switch from back to front
+ iCameraHandler.ToggleLcCameraL();
+ EUNIT_ASSERT_EQUALS( TInt( TMusEngCameraHandler::EFrontCamera ),
+ iCameraHandler.CurrentLcCameraIndex() )
+
+ // Switch from front to back
+ iCameraHandler.ToggleLcCameraL();
+ EUNIT_ASSERT_EQUALS( TInt( TMusEngCameraHandler::EBackCamera ),
+ iCameraHandler.CurrentLcCameraIndex() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_MinLcZoomL()
+ {
+ // MCE Session has not been set
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.MinLcZoomL(), KErrNotReady )
+
+ // MCE Session has been set
+ iCameraHandler.SetSession( iSession );
+ EUNIT_ASSERT_EQUALS(
+ iCameraHandler.iCameraInfo.iMinZoom,
+ iCameraHandler.MinLcZoomL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_MaxLcZoomL()
+ {
+ // MCE Session has not been set
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.MaxLcZoomL(), KErrNotReady )
+
+ // MCE Session has been set
+ iCameraHandler.SetSession( iSession );
+ EUNIT_ASSERT_EQUALS(
+ iCameraHandler.iCameraInfo.iMaxZoom +
+ iCameraHandler.iCameraInfo.iMaxDigitalZoom,
+ iCameraHandler.MaxLcZoomL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_LcZoomValueL()
+ {
+ // MCE Session has not been set
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.LcZoomValueL(), KErrNotReady )
+
+ // Check that originally current and default zoom are the same
+ iCameraHandler.SetSession( iSession );
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *( iSession ) );
+
+ // Zoom to maximum optical value
+ while ( camera->iZoomFactor < iCameraHandler.iCameraInfo.iMaxZoom )
+ {
+ iCameraHandler.LcZoomInL();
+ }
+ EUNIT_ASSERT_EQUALS(
+ iCameraHandler.iCameraInfo.iMaxZoom,
+ iCameraHandler.LcZoomValueL() )
+
+ // Zoom using digital zoom
+ iCameraHandler.LcZoomInL();
+ EUNIT_ASSERT_EQUALS(
+ iCameraHandler.iCameraInfo.iMaxZoom + camera->iDigitalZoomFactor,
+ iCameraHandler.LcZoomValueL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_SetLcZoomValueL()
+ {
+ // MCE Session has not been set
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iCameraHandler.SetLcZoomValueL( 1 ),
+ KErrNotReady )
+
+ // Value above the maximum zoom
+ iCameraHandler.SetSession( iSession );
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iCameraHandler.SetLcZoomValueL( iCameraHandler.MaxLcZoomL() + 1 ),
+ KErrArgument )
+
+ // Value below the minimum zoom
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iCameraHandler.SetLcZoomValueL( iCameraHandler.MinLcZoomL() - 1 ),
+ KErrArgument )
+
+ // OK: set zoom factor
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ TInt zoomValue = iCameraHandler.iCameraInfo.iMaxZoom - 1;
+ iCameraHandler.SetLcZoomValueL( zoomValue );
+ EUNIT_ASSERT_EQUALS( zoomValue, camera->ZoomFactorL() )
+
+ // OK: set digital zoom factor
+ zoomValue = iCameraHandler.iCameraInfo.iMaxZoom + 1;
+ iCameraHandler.SetLcZoomValueL( zoomValue );
+ EUNIT_ASSERT_EQUALS( 1, camera->DigitalZoomFactorL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_LcZoomInL()
+ {
+ // Check that zooming is not possible before invite
+ TRAPD( error, iCameraHandler.LcZoomInL() );
+ MUS_TEST_FORWARD_ALLOC_FAILURE( error );
+ EUNIT_ASSERT( error == KErrNotReady );
+
+ iCameraHandler.SetSession( iSession );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *( iSession ) );
+
+ TInt oldZoomFactor = camera->iZoomFactor;
+
+ // Check that zoom factor can be increased
+ USER_SLEEP; //insure that small step is used
+ iCameraHandler.LcZoomInL();
+ EUNIT_ASSERT( camera->iZoomFactor == oldZoomFactor +
+ iCameraHandler.iSmallZoomStep );
+
+ //Check the "burst" mode (immediate second ZoomIn), big step should be used
+ TInt nZoom = camera->iZoomFactor + camera->iDigitalZoomFactor;
+ iCameraHandler.LcZoomInL();
+ TInt nStep = camera->iZoomFactor + camera->iDigitalZoomFactor - nZoom;
+ EUNIT_ASSERT( nStep == iCameraHandler.iBigZoomStep );
+
+ // Zoom to maximum optical value
+ while ( camera->iZoomFactor < iCameraHandler.iCameraInfo.iMaxZoom )
+ {
+ iCameraHandler.LcZoomInL();
+ }
+
+ TInt maxOpticalZoomFactor = camera->ZoomFactorL();
+
+ // Check that digital zoom is used instead of optical
+ iCameraHandler.LcZoomInL();
+ EUNIT_ASSERT( camera->iZoomFactor == maxOpticalZoomFactor );
+ EUNIT_ASSERT( camera->iDigitalZoomFactor > 0 );
+
+ // Zoom to maximum digital value
+ while ( camera->iDigitalZoomFactor <
+ iCameraHandler.iCameraInfo.iMaxDigitalZoom )
+ {
+ iCameraHandler.LcZoomInL();
+ }
+
+ TInt maxDigitalZoomFactor = camera->DigitalZoomFactorL();
+
+ // Check that further zooming is impossible
+ iCameraHandler.LcZoomInL();
+ EUNIT_ASSERT( camera->iZoomFactor == maxOpticalZoomFactor );
+ EUNIT_ASSERT( camera->iDigitalZoomFactor == maxDigitalZoomFactor );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_LcZoomOutL()
+ {
+ // Check that zooming is not possible before invite
+ TRAPD( error, iCameraHandler.LcZoomOutL() );
+ MUS_TEST_FORWARD_ALLOC_FAILURE( error );
+ EUNIT_ASSERT( error == KErrNotReady );
+
+ iCameraHandler.SetSession( iSession );
+
+ CMceCameraSource* camera =
+ MusEngMceUtils::GetCameraL( *(iSession) );
+
+ // Simulate maximum zoom
+ camera->iZoomFactor = iCameraHandler.iCameraInfo.iMaxZoom;
+ camera->iDigitalZoomFactor = iCameraHandler.iCameraInfo.iMaxDigitalZoom;
+
+ // Check that digital zoom factor can be decreased
+ USER_SLEEP; //insure that small step is used
+ iCameraHandler.LcZoomOutL();
+ EUNIT_ASSERT( camera->iZoomFactor == iCameraHandler.iCameraInfo.iMaxZoom );
+ EUNIT_ASSERT( camera->iDigitalZoomFactor ==
+ iCameraHandler.iCameraInfo.iMaxDigitalZoom -
+ iCameraHandler.iSmallZoomStep );
+
+ //Check the "burst" mode (immediate second ZoomOut), big step should be used
+ TInt nZoom = camera->iZoomFactor + camera->iDigitalZoomFactor;
+ iCameraHandler.LcZoomOutL();
+ TInt nStep;
+ nStep = nZoom - (camera->iZoomFactor + camera->iDigitalZoomFactor );
+ EUNIT_ASSERT( nStep == iCameraHandler.iBigZoomStep );
+
+ // Simulate maximum zoom again
+ camera->iZoomFactor = iCameraHandler.iCameraInfo.iMaxZoom;
+ camera->iDigitalZoomFactor = iCameraHandler.iCameraInfo.iMaxDigitalZoom;
+
+ // Zoom to minimum digital zoom
+ while ( camera->iDigitalZoomFactor > 0 )
+ {
+ iCameraHandler.LcZoomOutL();
+ }
+
+ EUNIT_ASSERT( camera->iZoomFactor == iCameraHandler.iCameraInfo.iMaxZoom );
+ EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 );
+
+ // Check that optical zoom is decreased instead of digital
+ USER_SLEEP; //insure that step is the small one
+ iCameraHandler.LcZoomOutL();
+ EUNIT_ASSERT( camera->iZoomFactor ==
+ iCameraHandler.iCameraInfo.iMaxZoom -
+ iCameraHandler.iSmallZoomStep );
+ EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 );
+
+ // Zoom to minimum optical zoom
+ while ( camera->iZoomFactor > iCameraHandler.iCameraInfo.iMinZoom )
+ {
+ iCameraHandler.LcZoomOutL();
+ }
+
+ // Check that further zooming is impossible
+ iCameraHandler.LcZoomOutL();
+ EUNIT_ASSERT( camera->iZoomFactor == iCameraHandler.iCameraInfo.iMinZoom );
+ EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_SetLcBrightnessL()
+ {
+ // Check that setting brightness is not possible before invite
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iCameraHandler.SetLcBrightnessL( KTestSomeBrightness ),
+ KErrNotReady )
+
+ iCameraHandler.SetSession( iSession );
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *( iSession ) );
+
+ camera->iCameraInfo.iOptionsSupported =
+ camera->iCameraInfo.iOptionsSupported|TCameraInfo::EBrightnessSupported;
+
+ // Check that originally current and default brightness are the same
+ EUNIT_ASSERT_EQUALS( iCameraHandler.iDefaultBrightness,
+ iCameraHandler.LcBrightnessL() )
+
+ // Test setting brightness
+ iCameraHandler.SetLcBrightnessL( KTestSomeBrightness );
+ EUNIT_ASSERT_EQUALS( KTestSomeBrightness, iCameraHandler.LcBrightnessL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_LcBrightnessL()
+ {
+ // Check that checking current brightness is not possible before invite
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.LcBrightnessL(),
+ KErrNotReady )
+
+ // All the other stuff checked in tests of SetBrightnessL
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_MaxLcBrightnessL()
+ {
+ // MaxBrightness should return a constant
+ EUNIT_ASSERT_EQUALS( KTestMaxBrightness, iCameraHandler.MaxLcBrightnessL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_MinLcBrightnessL()
+ {
+ // MinBrightness should return a constant
+
+ EUNIT_ASSERT_EQUALS( KTestMinBrightness, iCameraHandler.MinLcBrightnessL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_IncreaseLcBrightnessL()
+ {
+ // Check that increasing brightness is not possible before invite
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.IncreaseLcBrightnessL(),
+ KErrNotReady )
+
+ iCameraHandler.SetSession( iSession );
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *(iSession) );
+
+ camera->iCameraInfo.iOptionsSupported =
+ camera->iCameraInfo.iOptionsSupported|TCameraInfo::EBrightnessSupported;
+
+ // Check that originally current and default brightness are the same
+ EUNIT_ASSERT_EQUALS( iCameraHandler.iDefaultBrightness,
+ iCameraHandler.LcBrightnessL() )
+
+ // Check that brightness can be increased...
+ iCameraHandler.IncreaseLcBrightnessL();
+ EUNIT_ASSERT_EQUALS( iCameraHandler.iDefaultBrightness + KTestBrightnessStepSize,
+ iCameraHandler.LcBrightnessL() )
+
+ // ... but only to maximum
+ iCameraHandler.SetLcBrightnessL( KTestMaxBrightness );
+ iCameraHandler.IncreaseLcBrightnessL();
+
+ EUNIT_ASSERT_EQUALS( KTestMaxBrightness,
+ iCameraHandler.LcBrightnessL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_DecreaseLcBrightnessL()
+ {
+ // Check that decreasing brightness is not possible before invite
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.DecreaseLcBrightnessL(),
+ KErrNotReady )
+
+ iCameraHandler.SetSession( iSession );
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *(iSession) );
+
+ camera->iCameraInfo.iOptionsSupported =
+ camera->iCameraInfo.iOptionsSupported|TCameraInfo::EBrightnessSupported;
+
+ // Check that originally current and default brightness are the same
+ EUNIT_ASSERT_EQUALS( iCameraHandler.iDefaultBrightness,
+ iCameraHandler.LcBrightnessL() )
+
+ // Check that brightness can be decreased...
+ iCameraHandler.DecreaseLcBrightnessL();
+
+ EUNIT_ASSERT_EQUALS(
+ iCameraHandler.iDefaultBrightness - KTestBrightnessStepSize,
+ iCameraHandler.LcBrightnessL() )
+
+ // ... but only to minimum
+ iCameraHandler.SetLcBrightnessL( KTestMinBrightness );
+ iCameraHandler.DecreaseLcBrightnessL();
+ EUNIT_ASSERT_EQUALS( KTestMinBrightness,
+ iCameraHandler.LcBrightnessL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_PlayL()
+ {
+ // Check that resuming is not possible before invite
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.PlayL(), KErrNotReady )
+
+ iCameraHandler.SetSession( iSession );
+
+ iCameraHandler.PauseL();
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *(iSession) );
+ iCameraHandler.PlayL();
+ EUNIT_ASSERT( camera->IsEnabled() )
+
+ // Try to enable camera again, request should be ignored
+ iCameraHandler.PlayL();
+ EUNIT_ASSERT( camera->IsEnabled() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_PauseL()
+ {
+ // Check that pausing is not possible before invite
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.PauseL(), KErrNotReady )
+
+ iCameraHandler.SetSession( iSession );
+
+ iCameraHandler.PlayL();
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *(iSession) );
+
+ iCameraHandler.PauseL();
+
+ EUNIT_ASSERT( !camera->IsEnabled() )
+
+ // Try to disable camera again, request should be ignored
+ iCameraHandler.PauseL();
+ EUNIT_ASSERT( !camera->IsEnabled() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_IsPlayingL()
+ {
+ // Try without a session
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.IsPlayingL(), KErrNotReady )
+
+ // Normal cases
+ iCameraHandler.SetSession( iSession );
+
+ iCameraHandler.PlayL();
+ EUNIT_ASSERT( iCameraHandler.IsPlayingL() )
+
+ iCameraHandler.PauseL();
+ EUNIT_ASSERT( !iCameraHandler.IsPlayingL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_InitializeZoomStepSizeL()
+ {
+ //Check that zooming steps have defualt values before session establishment
+ iCameraHandler.InitializeZoomStepSize();
+ EUNIT_ASSERT( iCameraHandler.iSmallZoomStep == KZoomStepMinSize );
+ EUNIT_ASSERT( iCameraHandler.iBigZoomStep == KZoomStepMinSize );
+
+ iCameraHandler.SetSession( iSession );
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *(iSession) );
+
+ //Check that zooming step sizes have default value KZoomStepMinSize
+ //in case of zooming values range is smaller than KZoomBigStepCount
+ iCameraHandler.iCameraInfo.iMinZoom = 0;
+ iCameraHandler.iCameraInfo.iMaxZoom = 0;
+ iCameraHandler.iCameraInfo.iMaxDigitalZoom = KZoomBigStepCount / 2;
+ iCameraHandler.InitializeZoomStepSize();
+ EUNIT_ASSERT( iCameraHandler.iSmallZoomStep == KZoomStepMinSize );
+ EUNIT_ASSERT( iCameraHandler.iBigZoomStep == KZoomStepMinSize );
+
+ //Check that zooming step sizes have default value KZoomStepMinSize
+ //in case of zooming values range is bigger than KZoomBigStepCount,
+ //but smaller than 2*KZoomBigStepCount (KZoomSmallStepCount)
+ iCameraHandler.iCameraInfo.iMaxDigitalZoom = 2*KZoomBigStepCount - 1;
+ iCameraHandler.InitializeZoomStepSize();
+ EUNIT_ASSERT( iCameraHandler.iSmallZoomStep == KZoomStepMinSize );
+ EUNIT_ASSERT( iCameraHandler.iBigZoomStep == KZoomStepMinSize );
+
+ //Check zooming steps sizes in case of zooming values range is
+ //bigger than 2*KZoomBigStepCount and smaller than 2*KZoomSmallStepCount
+ iCameraHandler.iCameraInfo.iMinZoom = - KZoomBigStepCount;
+ iCameraHandler.iCameraInfo.iMaxZoom = KZoomBigStepCount;
+ iCameraHandler.iCameraInfo.iMaxDigitalZoom = KZoomBigStepCount;
+ //zooming range is (-KZoomBigStepCount, 2*KZoomBigStepCount)
+ iCameraHandler.InitializeZoomStepSize();
+ EUNIT_ASSERT( iCameraHandler.iSmallZoomStep == KZoomStepMinSize );
+ EUNIT_ASSERT( iCameraHandler.iBigZoomStep == 3 );
+
+ //Check zooming steps sizes in case of zooming values range is
+ //bigger than 2*KZoomSmallStepCount
+ iCameraHandler.iCameraInfo.iMaxZoom = KZoomSmallStepCount;
+ iCameraHandler.iCameraInfo.iMaxDigitalZoom = KZoomSmallStepCount;
+ iCameraHandler.iCameraInfo.iMinZoom = - KZoomSmallStepCount;
+ //zooming range is (-KZoomSmallStepCount, 2*KZoomSmallStepCount)
+ iCameraHandler.InitializeZoomStepSize();
+ EUNIT_ASSERT( iCameraHandler.iSmallZoomStep == 3 );
+ EUNIT_ASSERT( iCameraHandler.iBigZoomStep == 6 );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_ChangeActiveCameraL()
+ {
+ iCameraHandler.SetSession( iSession );
+
+ CMceCameraSource* camera =
+ MusEngMceUtils::GetCameraL( *(iSession) );
+
+ //Camera is not enabled
+ camera->iIsEnabled = ETrue;
+ camera->iCameraCount = 2;
+ camera->iCameraIndex = 1;
+ iCameraHandler.ChangeActiveCameraL( TMusEngCameraHandler::EFrontCamera );
+ EUNIT_ASSERT( camera->iCameraIndex == 1 );
+ EUNIT_ASSERT( camera->iIsEnabled == ETrue );
+
+ //Camera is not enabled
+ camera->iIsEnabled = EFalse;
+ camera->iCameraCount = 2;
+ camera->iCameraIndex = 1;
+ iCameraHandler.ChangeActiveCameraL( TMusEngCameraHandler::EFrontCamera );
+ EUNIT_ASSERT( camera->iCameraIndex == 1 );
+ EUNIT_ASSERT( camera->iIsEnabled == EFalse );
+
+ //Check that iCameraInfo get updated after camera change
+ EUNIT_PRINT(_L("Check that iCameraInfo get updated after camera change"));
+
+ //Check that iCameraInfo get updated after camera change
+ EUNIT_PRINT(_L("Check that iCameraInfo get updated after camera change"));
+ camera->iIsEnabled = ETrue;
+ camera->iCameraCount = 2;
+ camera->iCameraIndex = 0;
+ iCameraHandler.ChangeActiveCameraL( TMusEngCameraHandler::EBackCamera );
+ EUNIT_ASSERT( camera->iCameraIndex == 0 );
+ TCameraInfo infoBack = iCameraHandler.iCameraInfo;
+ iCameraHandler.ChangeActiveCameraL( TMusEngCameraHandler::EFrontCamera );
+ EUNIT_ASSERT( camera->iCameraIndex == 1 );
+ TCameraInfo infoFront = iCameraHandler.iCameraInfo;
+
+ EUNIT_ASSERT( infoBack.iMaxZoom != infoFront.iMaxZoom );
+ EUNIT_ASSERT( infoBack.iMaxDigitalZoom != infoFront.iMaxDigitalZoom );
+ camera->iIsEnabled = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_TMusEngCameraHandler::UT_ChangeCameraL()
+ {
+ TRAPD( error, iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EFrontCamera ) );
+ MUS_TEST_FORWARD_ALLOC_FAILURE( error );
+ EUNIT_ASSERT( error == KErrNotReady );
+
+ iCameraHandler.SetSession( iSession );
+
+ CMceCameraSource* camera =
+ MusEngMceUtils::GetCameraL( *(iSession) );
+ //Only one camera is supported
+ camera->iCameraCount = 0;
+ camera->iCameraIndex = 0;
+
+ iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EFrontCamera );
+ //EUNIT_ASSERT( camera->iCameraIndex == 0 );
+
+ // Front camera is supported.
+ camera->iCameraCount = 2;
+ camera->iCameraIndex = 1;
+ iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EFrontCamera );
+ EUNIT_ASSERT( camera->iCameraIndex == 1 );
+
+ //No change
+ camera->iCameraCount = 2;
+ camera->iCameraIndex = 0;
+ camera->iIsEnabled = EFalse;
+ iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EFrontCamera );
+ EUNIT_ASSERT( camera->iIsEnabled == EFalse );
+
+ // Back camera is supported.
+ camera->iCameraCount = 2;
+ camera->iCameraIndex = 1;
+ iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EBackCamera );
+ EUNIT_ASSERT( camera->iCameraIndex == 0 );
+
+ //No change
+ camera->iCameraCount = 2;
+ camera->iCameraIndex = 0;
+ camera->iIsEnabled = EFalse;
+ iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EBackCamera );
+ EUNIT_ASSERT( camera->iIsEnabled == EFalse );
+
+ // Next camera.
+ camera->iCameraCount = 2;
+ camera->iCameraIndex = 0;
+ iCameraHandler.ChangeCameraL( TMusEngCameraHandler::ECameraNotAvailable );
+ EUNIT_ASSERT( camera->iCameraIndex == 1 );
+
+ camera->iCameraCount = 2;
+ camera->iCameraIndex = 1;
+ iCameraHandler.ChangeCameraL( TMusEngCameraHandler::ECameraNotAvailable );
+ EUNIT_ASSERT( camera->iCameraIndex == 0 );
+ }
+
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_TMusEngCameraHandler,
+ "UT_TMusEngCameraHandler",
+ "UNIT" )
+
+EUNIT_TEST(
+ "LcCameraCountL - test ",
+ "TMusEngCameraHandler",
+ "LcCameraCountL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcCameraCountL, Teardown)
+
+EUNIT_TEST(
+ "ToggleLcCameraL - test ",
+ "TMusEngCameraHandler",
+ "ToggleLcCameraL",
+ "FUNCTIONALITY",
+ SetupL, UT_ToggleLcCameraL, Teardown)
+
+EUNIT_TEST(
+ "MinLcZoomL - test ",
+ "TMusEngCameraHandler",
+ "MinLcZoomL",
+ "FUNCTIONALITY",
+ SetupL, UT_MinLcZoomL, Teardown)
+
+EUNIT_TEST(
+ "MaxLcZoomL - test ",
+ "TMusEngCameraHandler",
+ "MaxLcZoomL",
+ "FUNCTIONALITY",
+ SetupL, UT_MaxLcZoomL, Teardown)
+
+EUNIT_TEST(
+ "LcZoomValueL - test ",
+ "TMusEngCameraHandler",
+ "LcZoomValueL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcZoomValueL, Teardown)
+
+EUNIT_TEST(
+ "SetLcZoomValueL - test ",
+ "TMusEngCameraHandler",
+ "SetLcZoomValueL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetLcZoomValueL, Teardown)
+
+EUNIT_TEST(
+ "LcZoomInL - test ",
+ "TMusEngCameraHandler",
+ "LcZoomInL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcZoomInL, Teardown)
+
+EUNIT_TEST(
+ "LcZoomOutL - test ",
+ "TMusEngCameraHandler",
+ "LcZoomOutL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcZoomOutL, Teardown)
+
+EUNIT_TEST(
+ "SetLcBrightnessL - test ",
+ "TMusEngCameraHandler",
+ "SetLcBrightnessL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetLcBrightnessL, Teardown)
+
+EUNIT_TEST(
+ "LcBrightnessL - test ",
+ "TMusEngCameraHandler",
+ "LcBrightnessL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcBrightnessL, Teardown)
+
+EUNIT_TEST(
+ "MaxLcBrightnessL - test ",
+ "TMusEngCameraHandler",
+ "MaxLcBrightnessL",
+ "FUNCTIONALITY",
+ SetupL, UT_MaxLcBrightnessL, Teardown)
+
+EUNIT_TEST(
+ "MinLcBrightnessL - test ",
+ "TMusEngCameraHandler",
+ "MinLcBrightnessL",
+ "FUNCTIONALITY",
+ SetupL, UT_MinLcBrightnessL, Teardown)
+
+EUNIT_TEST(
+ "IncreaseLcBrightnessL - test ",
+ "TMusEngCameraHandler",
+ "IncreaseLcBrightnessL",
+ "FUNCTIONALITY",
+ SetupL, UT_IncreaseLcBrightnessL, Teardown)
+
+EUNIT_TEST(
+ "DecreaseLcBrightnessL - test ",
+ "TMusEngCameraHandler",
+ "DecreaseLcBrightnessL",
+ "FUNCTIONALITY",
+ SetupL, UT_DecreaseLcBrightnessL, Teardown)
+
+EUNIT_TEST(
+ "PlayL - test ",
+ "TMusEngCameraHandler",
+ "PlayL",
+ "FUNCTIONALITY",
+ SetupL, UT_PlayL, Teardown)
+
+EUNIT_TEST(
+ "PauseL - test ",
+ "TMusEngCameraHandler",
+ "PauseL",
+ "FUNCTIONALITY",
+ SetupL, UT_PauseL, Teardown)
+
+EUNIT_TEST(
+ "IsPlayingL - test ",
+ "TMusEngCameraHandler",
+ "IsPlayingL",
+ "FUNCTIONALITY",
+ SetupL, UT_IsPlayingL, Teardown)
+
+EUNIT_TEST(
+ "InitializeZoomStepSize - test ",
+ "TMusEngCameraHandler",
+ "InitializeZoomStepSize",
+ "FUNCTIONALITY",
+ SetupL, UT_InitializeZoomStepSizeL, Teardown)
+
+EUNIT_TEST(
+ "ChangeCameraL - test ",
+ "TMusEngCameraHandler",
+ "ChangeCameraL",
+ "FUNCTIONALITY",
+ SetupL, UT_ChangeCameraL, Teardown)
+
+EUNIT_TEST(
+ "UT_ChangeActiveCameraL - test ",
+ "TMusEngCameraHandler",
+ "DisableAndEnableBeforeChangingCamera",
+ "FUNCTIONALITY",
+ SetupL, UT_ChangeActiveCameraL, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE
+
+
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -23,10 +23,12 @@
#include "musengclipsession.h"
#include "mussipprofilehandler.h"
#include "musengmceutils.h"
-
+#include "mussessionproperties.h"
// SYSTEM INCLUDES
-#include <digia/eunit/eunitmacros.h>
+#include <lcvideoplayer.h>
+#include <lcsourcefilecontrol.h>
+#include <eunitmacros.h>
#include <mceoutsession.h>
#include <mcestreambundle.h>
#include <mcevideostream.h>
@@ -41,6 +43,7 @@
#include <drmcommon.h>
#include <sipprofile.h>
#include <sipstrings.h>
+#include <e32property.h>
// -----------------------------------------------------------------------------
@@ -106,33 +109,26 @@
//
void UT_CMusEngClipSession::SetupL()
{
- iObserver = new( ELeave ) CMusEngObserverStub;
- iClipSession = CMusEngClipSession::NewL( TRect(0,0, 100,100),
- *iObserver,
- *iObserver,
- *iObserver );
- iClipSession->SetClipL( KTestVideoFileName );
+ iLcSessionObserver = new( ELeave )CLcSessionObserverStub;
+ iLcUiProvider = new( ELeave )CLcUiProviderStub;
+ iAudioRoutingObserver = new( ELeave )CMusEngObserverStub;
+
+ iClipSession = CMusEngClipSession::NewL();
+ iClipSession->SetLcSessionObserver( iLcSessionObserver );
+ iClipSession->SetLcUiProvider( iLcUiProvider );
+ iClipSession->LocalVideoPlayer()->LcSourceFileControl()->SetLcFileNameL(
+ KTestVideoFileName() );
+ delete iClipSession->iVideoCodecList;
+ iClipSession->iVideoCodecList = NULL;
iClipSession->iVideoCodecList = KMceSDPNameH264().AllocL();
SIPStrings::OpenL();
+
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KRemoteSipAddress,
+ KTestRecipientSipUri ) );
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::Setup2L()
- {
- iObserver = new( ELeave ) CMusEngObserverStub;
- iClipSession = CMusEngClipSession::NewL( TRect(0,0, 100,100),
- *iObserver,
- *iObserver,
- *iObserver );
- iClipSession->SetClipL( KTestVideoFileName );
- iClipSession->iVideoCodecList = KMceSDPNameH263().AllocL();
-
- SIPStrings::OpenL();
- }
// -----------------------------------------------------------------------------
//
@@ -142,14 +138,16 @@
{
SIPStrings::Close();
delete iClipSession;
- delete iObserver;
+ delete iLcSessionObserver;
+ delete iLcUiProvider;
+ delete iAudioRoutingObserver;
+ PropertyHelper::Close();
}
// TEST CASES
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -157,662 +155,8 @@
void UT_CMusEngClipSession::UT_NewLL()
{
EUNIT_ASSERT( iClipSession )
- EUNIT_ASSERT( iClipSession->iFileName != KNullDesC() )
EUNIT_ASSERT( !iClipSession->iSession )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_SetClipLL()
- {
- // Try with protected file, cannot use EUNIT_ASSERT_SPECIFIC_LEAVE
- TRAPD( error, iClipSession->SetClipL( KMusDrmProtectedFileName() ) )
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrPermissionDenied )
- EUNIT_ASSERT_EQUALS( iClipSession->iFileName, KTestVideoFileName() )
-
- // Change the file before session is established
- iClipSession->SetClipL( KTestAvcVideoFileName() );
- EUNIT_ASSERT_EQUALS( iClipSession->iFileName, KTestAvcVideoFileName() )
- EUNIT_ASSERT( !iClipSession->iSession )
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iClipSession );
-
- // Now test with established session
- iClipSession->SetClipL( KTestVideoFileName() );
-
- CMceFileSource* file =
- MusEngMceUtils::GetFileSourceL( *iClipSession->iSession );
-
- EUNIT_ASSERT_EQUALS( iClipSession->iFileName, KTestVideoFileName() )
- EUNIT_ASSERT_EQUALS( file->iFileName, KTestVideoFileName() )
-
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_FastForwardLL()
- {
- // Try before establishment
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->FastForwardL( ETrue ),
- KErrNotReady )
-
- // Establish session, simulate position and duration and try again
- ESTABLISH_OUT_SESSION( iClipSession );
-
- CMceFileSource* file =
- MusEngMceUtils::GetFileSourceL( *iClipSession->iSession );
-
- file->iDuration = KMusEngTestFileDuration;
- file->iPosition = KMusEngTestFilePosition;
-
- iClipSession->FastForwardL( ETrue );
-
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() > 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 )
-
- // Simulate fastforwarding for a while
- User::After( 1000 );
-
- // Try to fastforward when already fastforwarding, will be ignored
- iClipSession->FastForwardL( ETrue );
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() > 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 )
-
- // Stop fastforwarding
- iClipSession->FastForwardL( EFalse );
- EUNIT_ASSERT( file->iPosition > KMusEngTestFilePosition )
- EUNIT_ASSERT( file->iPosition != file->iDuration )
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 )
-
- // Try to stop fastforwarding again, leaves
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->FastForwardL( EFalse ),
- KErrAlreadyExists )
-
- // Start fastrewinding
- iClipSession->FastRewindL( ETrue );
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() > 0 )
-
- // Start fastforwarding, rewinding should be stopped and FFWD started
- iClipSession->FastForwardL( ETrue );
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() > 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 )
-
- // Simulate fastforwarding for a while
- User::After( 1000 );
-
- // Simulate that clip is almost in end and fastforwarding would have
- // continued over end, position should be set to duration.
-
- file->iPosition = TTimeIntervalMicroSeconds( file->iDuration.Int64() - 1 );
-
- iClipSession->FastForwardL( EFalse );
- EUNIT_ASSERT( file->iPosition == file->iDuration )
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 )
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_FastRewindLL()
- {
- // Try before establishment
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->FastRewindL( ETrue ),
- KErrNotReady )
-
- // Establish session, simulate position and duration and try again
- ESTABLISH_OUT_SESSION( iClipSession );
-
- CMceFileSource* file =
- MusEngMceUtils::GetFileSourceL( *iClipSession->iSession );
-
- file->iDuration = KMusEngTestFileDuration;
- file->iPosition = KMusEngTestFilePosition;
-
- iClipSession->FastRewindL( ETrue );
-
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() > 0 )
-
- // Simulate fastrewinding for a while
- User::After( 1000 );
-
- // Try to fastrewind when already fastrewinding, will be ignored
- iClipSession->FastRewindL( ETrue );
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() > 0 )
-
- // Stop fastrewinding
- iClipSession->FastRewindL( EFalse );
- EUNIT_ASSERT( file->iPosition < KMusEngTestFilePosition )
- EUNIT_ASSERT( file->iPosition != TTimeIntervalMicroSeconds( 0 ) )
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 )
-
- // Try to stop fastrewinding again, leaves
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->FastRewindL( EFalse ),
- KErrAlreadyExists )
-
- // Start fastforwarding
- iClipSession->FastForwardL( ETrue );
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() >= 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 )
-
- // Start fastrewinding, forwarding should be stopped and FFWD started
- iClipSession->FastRewindL( ETrue );
- EUNIT_ASSERT( !file->iIsEnabled );
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() >= 0 )
-
- // Simulate that clip has just begun and fastrewinding would have
- // continued over beginning, position should be set to zero.
-
- file->iPosition = TTimeIntervalMicroSeconds( 1 );
-
- // Simulate fastrewinding for a while
- User::After( 1000 );
-
- iClipSession->FastRewindL( EFalse );
- EUNIT_ASSERT( file->iPosition == TTimeIntervalMicroSeconds( 0 ) )
- EUNIT_ASSERT( !file->iIsEnabled )
- EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 )
- EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_PositionLL()
- {
- // Try before establishment
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PositionL(), KErrNotReady )
-
- // Establish session and try again
- ESTABLISH_OUT_SESSION( iClipSession );
-
- CMceFileSource* file =
- MusEngMceUtils::GetFileSourceL( *iClipSession->iSession );
- file->iPosition = 2000000;
-
- EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 ==
- file->iPosition.Int64() )
-
- // Ask position while fastforwarding, it should be bigger than real position
- iClipSession->FastForwardL( ETrue );
-
- User::After( 1000000 ); // We have to wait since dividing in PositionL and
- // multiplying before comparison loses difference
-
- EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 >
- file->iPosition.Int64() )
-
- // Ask position while fastforwarding beyond end of clip, clip duration is
- // returned
- file->iPosition = file->iDuration;
-
- EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 ==
- file->iDuration.Int64() )
-
- // Stop fastforwarding, start fastrewinding, position is set to the end clip
- iClipSession->FastForwardL( EFalse );
- iClipSession->FastRewindL( ETrue );
-
- User::After( 1000000 ); // We have to wait since dividing in PositionL and
- // multiplying before comparison loses difference
-
- // Ask position while fastrewinding, it should be smaller than real
- // position
- EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 <
- file->iPosition.Int64() )
-
- // Ask position while fastrewinding beyond the beginning of clip, zero
- // returned
- file->iPosition = 0;
-
- EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 == 0 )
-
- // Asking position when rewinded to beginning but rewinding has ended
- // and clip has not ended (position should not be altered in that case)
- iClipSession->iRewindedToBeginning = ETrue;
- file->iPosition = 0;
- iClipSession->iFRWDStartTime = TTime( 0 );
-
- EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 == 0 )
-
- // Position has proceeded from beginning, rewinding to beginning info
- // is cleared.
- file->iPosition = 10000000;
- iClipSession->iFRWDStartTime = TTime( 0 );
- iClipSession->iRewindedToBeginning = EFalse;
- EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 == 10000000 )
- EUNIT_ASSERT( iClipSession->iRewindedToBeginning == EFalse )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_DurationLL()
- {
- // Try before establishment
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->DurationL(), KErrNotReady )
-
- // Establish session and try again
- ESTABLISH_OUT_SESSION( iClipSession );
-
- CMceFileSource* file =
- MusEngMceUtils::GetFileSourceL( *iClipSession->iSession );
- file->iDuration = 2000000;
-
- EUNIT_ASSERT( iClipSession->DurationL().Int() * 1000000 ==
- file->iDuration.Int64() )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_SetPositionLL()
- {
- TTimeIntervalSeconds time( 20 );
-
- // Try before establishment
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->SetPositionL( time ),
- KErrNotReady )
-
- // Normal case with already disabled file source
- ESTABLISH_OUT_SESSION( iClipSession );
-
- CMceFileSource* file =
- MusEngMceUtils::GetFileSourceL( *iClipSession->iSession );
- file->iIsEnabled = EFalse;
-
- iClipSession->SetPositionL( time );
-
- EUNIT_ASSERT( file->iPosition.Int64() ==
- static_cast<TInt64>(time.Int()) * 1000000 )
- EUNIT_ASSERT( !file->iIsEnabled )
-
- // Normal case with enabled file source
- TTimeIntervalSeconds anotherTime( 30 );
-
- file->iIsEnabled = ETrue;
- iClipSession->SetPositionL( anotherTime );
-
- EUNIT_ASSERT( file->iPosition.Int64() ==
- static_cast<TInt64>(anotherTime.Int()) * 1000000 )
- EUNIT_ASSERT( file->iIsEnabled )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_TranscodeLToAvcL()
- {
- // Check that transcoding is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE(
- iClipSession->TranscodeL( KTestVideoFileName() ),
- KErrNotReady )
-
- // Construct session with video and audio streams that must transcoded
-
- CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile();
-
- iClipSession->iSession = CMceOutSession::NewL(
- *(iClipSession->iManager),
- *profile,
- KTestRecipientSipUri8() );
-
- CMceVideoStream* videoStream = CMceVideoStream::NewLC();
-
- CMceRtpSink* rtpsink = CMceRtpSink::NewLC();
- videoStream->AddSinkL( rtpsink );
- CleanupStack::Pop( rtpsink );
-
- CMceFileSource* fileSource =
- CMceFileSource::NewLC( *iClipSession->iManager, KTestAvcVideoFileName() );
- videoStream->SetSourceL( fileSource );
- CleanupStack::Pop( fileSource );
-
- iClipSession->iSession->AddStreamL( videoStream );
- CleanupStack::Pop( videoStream );
-
- CMceAudioStream* audioStream = CMceAudioStream::NewLC();
-
- audioStream->AddSinkL( CMceRtpSink::NewLC() );
- CleanupStack::Pop();
-
- audioStream->SetSourceL( fileSource );
-
- iClipSession->iSession->AddStreamL( audioStream );
- CleanupStack::Pop( audioStream );
-
- videoStream->iState = CMceMediaStream::ETranscodingRequired;
- audioStream->iState = CMceMediaStream::ETranscodingRequired;
-
- // Remove all codecs (file has some unknown codec type)
- RPointerArray<CMceVideoCodec> videoCodecs = videoStream->Codecs();
- for ( TInt i = 0; i < videoCodecs.Count(); i++ )
- {
- videoStream->RemoveCodecL( *videoCodecs[ i ] );
- }
- RPointerArray<CMceVideoCodec> videoCodecs2 = videoStream->Codecs();
- EUNIT_ASSERT_EQUALS( videoCodecs2.Count(), 0 )
- EUNIT_ASSERT( audioStream->Codecs().Count() > 1 )
-
- // Add some stream which must not be transcoded
-
- CMceAudioStream* inStream = CMceAudioStream::NewLC();
-
- inStream->AddSinkL( CMceSpeakerSink::NewLC() );
- CleanupStack::Pop();
-
- inStream->SetSourceL( CMceRtpSource::NewLC() );
- CleanupStack::Pop();
-
- iClipSession->iSession->AddStreamL( inStream );
- CleanupStack::Pop( inStream );
-
- // Transcode
- iClipSession->TranscodeL( KTestAvcVideoFileName() );
-
- // Check that transcoding has begun (transcoding to AVC as we know
- // that other end supports it
- EUNIT_ASSERT( iClipSession->iTranscodingOngoing )
- EUNIT_ASSERT( videoStream->State() == CMceMediaStream::ETranscoding )
- EUNIT_ASSERT( audioStream->State() == CMceMediaStream::ETranscoding )
- EUNIT_ASSERT( inStream->State() != CMceMediaStream::ETranscoding )
-
- // Check that codecs have been replaced
- const RPointerArray<CMceVideoCodec> videoCodecs3 = videoStream->Codecs();
- EUNIT_ASSERT_EQUALS( videoCodecs3.Count(), 1 )
- EUNIT_ASSERT( videoCodecs3[0]->SdpName().FindF( KMceSDPNameH264() ) >= 0 )
- EUNIT_ASSERT( audioStream->Codecs().Count() == 1 )
- EUNIT_ASSERT( audioStream->Codecs()[0]->AllowedBitrates() ==
- KMceAllowedAmrNbBitrate475 )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_TranscodeLToH263L()
- {
- // Check that transcoding is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE(
- iClipSession->TranscodeL( KTestVideoFileName() ),
- KErrNotReady )
-
- // Construct session with video and audio streams that must transcoded
-
- CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile();
-
- iClipSession->iSession = CMceOutSession::NewL(
- *(iClipSession->iManager),
- *profile,
- KTestRecipientSipUri8() );
-
- CMceVideoStream* videoStream = CMceVideoStream::NewLC();
-
- CMceRtpSink* rtpsink = CMceRtpSink::NewLC();
- videoStream->AddSinkL( rtpsink );
- CleanupStack::Pop( rtpsink );
-
- CMceFileSource* fileSource =
- CMceFileSource::NewLC( *iClipSession->iManager, KTestAvcVideoFileName() );
- videoStream->SetSourceL( fileSource );
- CleanupStack::Pop( fileSource );
-
- iClipSession->iSession->AddStreamL( videoStream );
- CleanupStack::Pop( videoStream );
-
- CMceAudioStream* audioStream = CMceAudioStream::NewLC();
-
- audioStream->AddSinkL( CMceRtpSink::NewLC() );
- CleanupStack::Pop();
-
- audioStream->SetSourceL( fileSource );
-
- iClipSession->iSession->AddStreamL( audioStream );
- CleanupStack::Pop( audioStream );
-
- videoStream->iState = CMceMediaStream::ETranscodingRequired;
- audioStream->iState = CMceMediaStream::ETranscodingRequired;
-
- const RPointerArray<CMceVideoCodec> videoCodecs = videoStream->Codecs();
- EUNIT_ASSERT_EQUALS( videoCodecs.Count(), 1 )
- EUNIT_ASSERT( videoCodecs[0]->SdpName().FindF( KMceSDPNameH264() ) >= 0 )
- EUNIT_ASSERT( audioStream->Codecs().Count() > 1 )
-
- TSize resolution(200,200); // Some value
- videoStream->Codecs()[0]->SetResolutionL( resolution );
- audioStream->Codecs()[0]->SetBitrate( KMceAllowedAmrNbBitrateAll );
-
- // Add some stream which must not be transcoded
-
- CMceAudioStream* inStream = CMceAudioStream::NewLC();
-
- inStream->AddSinkL( CMceSpeakerSink::NewLC() );
- CleanupStack::Pop();
-
- inStream->SetSourceL( CMceRtpSource::NewLC() );
- CleanupStack::Pop();
-
- iClipSession->iSession->AddStreamL( inStream );
- CleanupStack::Pop( inStream );
-
- // Transcode
- iClipSession->TranscodeL( KTestAvcVideoFileName() );
-
- // Check that transcoding has begun (transcoding to H263 as we don't
- // know whether other end supports H264) EUNIT_ASSERT( iClipSession->iTranscodingOngoing )
- EUNIT_ASSERT( videoStream->State() == CMceMediaStream::ETranscoding )
- EUNIT_ASSERT( audioStream->State() == CMceMediaStream::ETranscoding )
- EUNIT_ASSERT( inStream->State() != CMceMediaStream::ETranscoding )
-
- // Check that codecs have been replaced
- const RPointerArray<CMceVideoCodec> videoCodecs2 = videoStream->Codecs();
- EUNIT_ASSERT_EQUALS( videoCodecs2.Count(), 1 )
- EUNIT_ASSERT( videoCodecs2[0]->SdpName().FindF( KMceSDPNameH263() ) >= 0 )
- EUNIT_ASSERT( audioStream->Codecs().Count() == 1 )
-
- EUNIT_ASSERT( videoStream->Codecs()[0]->Resolution() != resolution )
- EUNIT_ASSERT( audioStream->Codecs()[0]->AllowedBitrates() ==
- KMceAllowedAmrNbBitrate475 )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_CancelTranscodeLL()
- {
- // Check that canceling transcoding is not possible before actual
- // transcoding
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->CancelTranscodeL(),
- KErrNotReady )
-
- // Construct session structure
-
- CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile();
-
- iClipSession->iSession = CMceOutSession::NewL(
- *(iClipSession->iManager),
- *profile,
- KTestRecipientSipUri8() );
-
- CMceVideoStream* videoStream = CMceVideoStream::NewLC();
-
- CMceRtpSink* rtpsink = CMceRtpSink::NewLC();
- videoStream->AddSinkL( rtpsink );
- CleanupStack::Pop( rtpsink );
-
- CMceFileSource* fileSource =
- CMceFileSource::NewLC( *iClipSession->iManager, KTestVideoFileName() );
- videoStream->SetSourceL( fileSource );
- CleanupStack::Pop( fileSource );
-
- iClipSession->iSession->AddStreamL( videoStream );
- CleanupStack::Pop( videoStream );
-
- CMceAudioStream* audioStream = CMceAudioStream::NewLC();
-
- audioStream->AddSinkL( CMceRtpSink::NewLC() );
- CleanupStack::Pop();
-
- audioStream->SetSourceL( fileSource );
-
- iClipSession->iSession->AddStreamL( audioStream );
- CleanupStack::Pop( audioStream );
-
- // Set need for transcoding
- videoStream->iState = CMceMediaStream::ETranscodingRequired;
- audioStream->iState = CMceMediaStream::ETranscodingRequired;
-
- // Transcode
- iClipSession->TranscodeL( KTestAvcVideoFileName() );
-
- EUNIT_ASSERT( videoStream->State() == CMceMediaStream::ETranscoding )
- EUNIT_ASSERT( audioStream->State() == CMceMediaStream::ETranscoding )
-
- // Cancel
- iClipSession->CancelTranscodeL();
-
- EUNIT_ASSERT( videoStream->State() ==
- CMceMediaStream::ETranscodingRequired )
- EUNIT_ASSERT( audioStream->State() ==
- CMceMediaStream::ETranscodingRequired )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_PlayLL()
- {
- // Check that resuming is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PlayL(), KErrNotReady )
-
- ESTABLISH_OUT_SESSION( iClipSession );
-
- // Check that playing is not possible during FFWD
- iClipSession->iFFWDStartTime = TTime( 10 );
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PlayL(), KErrNotReady )
- iClipSession->iFFWDStartTime = TTime( 0 );
-
- // Check that playing is not possible during FRWD
- iClipSession->iFRWDStartTime = TTime( 10 );
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PlayL(), KErrNotReady )
- iClipSession->iFRWDStartTime = TTime( 0 );
-
- // Successful case
- CMceFileSource* file =
- MusEngMceUtils::GetFileSourceL( *(iClipSession->iSession) );
-
- file->iIsEnabled = EFalse;
-
- iClipSession->PlayL();
-
- EUNIT_ASSERT( file->IsEnabled() )
-
- // Try to play again, request should be ignored
-
- iClipSession->PlayL();
-
- EUNIT_ASSERT( file->IsEnabled() )
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_PauseLL()
- {
- // Check that pausing is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PauseL(), KErrNotReady )
-
- ESTABLISH_OUT_SESSION( iClipSession );
-
- // Check that pausing is not possible during FFWD
- iClipSession->iFFWDStartTime = TTime( 10 );
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PauseL(), KErrNotReady )
- iClipSession->iFFWDStartTime = TTime( 0 );
-
- // Check that pausing is not possible during FRWD
- iClipSession->iFRWDStartTime = TTime( 10 );
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PauseL(), KErrNotReady )
- iClipSession->iFRWDStartTime = TTime( 0 );
-
- // Successful case
-
- CMceFileSource* file =
- MusEngMceUtils::GetFileSourceL( *(iClipSession->iSession) );
-
- file->iIsEnabled = ETrue;
-
- iClipSession->PauseL();
-
- EUNIT_ASSERT( !file->IsEnabled() )
-
- // Try to pause again, request should be ignored
-
- iClipSession->PauseL();
-
- EUNIT_ASSERT( !file->IsEnabled() )
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngClipSession::UT_IsPlayingLL()
- {
- // Try without a session
- EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->IsPlayingL(), KErrNotReady );
-
- // Normal cases
- ESTABLISH_OUT_SESSION( iClipSession );
-
- iClipSession->PlayL();
- EUNIT_ASSERT( iClipSession->IsPlayingL() )
-
- iClipSession->PauseL();
- EUNIT_ASSERT( !iClipSession->IsPlayingL() )
+ EUNIT_ASSERT( iClipSession->iMceManagerUid == TUid::Uid( KMusUiUid ) );
}
@@ -821,39 +165,26 @@
// -----------------------------------------------------------------------------
//
void UT_CMusEngClipSession::UT_CompleteSessionStructureLL()
- {
-
+ {
CMceStreamBundle* localBundle =
- CMceStreamBundle::NewLC( CMceStreamBundle::ELS );
+ CMceStreamBundle::NewLC( CMceStreamBundle::ELS );
// Check that structure cannot be completed before creating the session
EUNIT_ASSERT_SPECIFIC_LEAVE(
iClipSession->CompleteSessionStructureL( *localBundle ),
KErrNotReady )
- // Check that structure cannot be completed before setting the file name
- iClipSession->iFileName = KNullDesC();
- CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile();
-
+ // Normal case
+ CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile();
iClipSession->iSession = CMceOutSession::NewL(
- *(iClipSession->iManager),
- *profile,
- KTestRecipientSipUri8() );
-
- EUNIT_ASSERT_SPECIFIC_LEAVE(
- iClipSession->CompleteSessionStructureL( *localBundle ),
- KErrNotReady )
+ *iClipSession->iManager, *profile, KTestRecipientSipUri8() );
- // Normal case
- iClipSession->iFileName = KTestVideoFileName();
iClipSession->CompleteSessionStructureL( *localBundle );
-
EUNIT_ASSERT( iClipSession->iSession->Streams().Count() == 3 )
EUNIT_ASSERT( iClipSession->iSession->Streams()[0]->Type() == KMceVideo )
EUNIT_ASSERT( iClipSession->iSession->Streams()[0]->Source() )
EUNIT_ASSERT( iClipSession->iSession->Streams()[0]->Source()->Type() ==
- KMceFileSource )
- EUNIT_ASSERT( !iClipSession->IsPlayingL() )
+ KMceFileSource )
EUNIT_ASSERT( iClipSession->iSession->Streams()[0]->Sinks().Count() == 1 )
EUNIT_ASSERT( iClipSession->iSession->Streams()[0]->Sinks()[0]->Type() ==
KMceRTPSink )
@@ -883,7 +214,7 @@
CleanupStack::PopAndDestroy( videoStream );
// Simulate sending invite
- iClipSession->InviteL( KTestRecipientSipUri() );
+ iClipSession->EstablishLcSessionL();
// Try all the stream states
CMceMediaStream* changedStream = iClipSession->iSession->Streams()[0];
@@ -892,56 +223,57 @@
changedStream->iState = CMceMediaStream::EUninitialized;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EInitialized, stream is initialized
changedStream->iState = CMceMediaStream::EInitialized;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EBuffering, stream is buffering
changedStream->iState = CMceMediaStream::EBuffering;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EIdle, stream is not receiving RTP
changedStream->iState = CMceMediaStream::EIdle;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->iStreamIdleCalled )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EStreaming, stream is streaming
changedStream->iState = CMceMediaStream::EStreaming;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled )
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
// EDisabled, stream is explicitly disabled
changedStream->iState = CMceMediaStream::EDisabled;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// ENoResources, stream has no needed resources to stream
changedStream->iState = CMceMediaStream::ENoResources;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// ETranscodingRequired, stream requires non-realtime transcoding
changedStream->iState = CMceMediaStream::ETranscodingRequired;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// ETranscoding, stream is transcoding in non-realtime
changedStream->iState = CMceMediaStream::ETranscoding;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
}
@@ -962,7 +294,7 @@
CleanupStack::PopAndDestroy( videoStream );
// Simulate sending invite
- iClipSession->InviteL( KTestRecipientSipUri() );
+ iClipSession->EstablishLcSessionL();
// Try all the non-default stream states
CMceMediaStream* changedStream = iClipSession->iSession->Streams()[0];
@@ -973,68 +305,9 @@
changedSource->iIsEnabled = EFalse;
iClipSession->StreamStateChanged( *changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->iEndOfClipCalled == ETrue )
+ // TODO: EUNIT_ASSERT( iLcSessionObserver->iEndOfClipCalled )
changedSource->iIsEnabled = ETrue;
- iObserver->Reset();
-
- // ETranscodingRequired, transcoding has failed
- iClipSession->iSession->iState = CMceSession::EIdle;
- iClipSession->iTranscodingOngoing = ETrue;
- changedStream->iState = CMceMediaStream::ETranscodingRequired;
- static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
- *changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->iTranscodingFailedCalled )
- EUNIT_ASSERT( !iClipSession->iTranscodingOngoing )
- iObserver->Reset();
-
- // ETranscoding, transcoding has progresssed
- iClipSession->iSession->iState = CMceSession::EIdle;
- changedStream->iState = CMceMediaStream::ETranscoding;
- static_cast<CMceFileSource*>(changedSource)->iTranscodingPercentage = 20;
- static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
- *changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->iTranscodingProgressedPercentage == 20 )
- iObserver->Reset();
-
- // ETranscoding, transcoding has progresssed, querying percentage fails
- iClipSession->iSession->iState = CMceSession::EIdle;
- changedStream->iState = CMceMediaStream::ETranscoding;
- iObserver->iTranscodingProgressedPercentage = -1; // make assertion possible
- static_cast<CMceFileSource*>(changedSource)->iFailWithCode = KErrNotReady;
- static_cast<CMceFileSource*>(changedSource)->iTranscodingPercentage = 30;
- static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
- *changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->iTranscodingProgressedPercentage == 0 )
- iObserver->Reset();
-
- // EInitialized, transcoding has completed, establishment fails
- iClipSession->iSession->iState = CMceSession::EIdle;
- iClipSession->iSession->iFailWithCode = KErrCorrupt; // != KErrNone
- iClipSession->iTranscodingOngoing = ETrue;
- changedStream->iState = CMceMediaStream::EInitialized;
- static_cast<CMceFileSource*>(changedSource)->iTranscodingPercentage = 100;
- static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
- *changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->iTranscodingCompletedInitCalled )
- EUNIT_ASSERT( iObserver->iTranscodingCompletedFinalizeCalled )
- EUNIT_ASSERT( iObserver->iSessionFailedCalled )
- EUNIT_ASSERT( !iClipSession->iTranscodingOngoing )
- iObserver->Reset();
-
- // EInitialized, transcoding has completed, establishment succeeds
- iClipSession->iSession->iState = CMceSession::EIdle;
- iClipSession->iTranscodingOngoing = ETrue;
- changedStream->iState = CMceMediaStream::EInitialized;
- static_cast<CMceFileSource*>(changedSource)->iTranscodingPercentage = 100;
- static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
- *changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->iTranscodingCompletedInitCalled )
- EUNIT_ASSERT( iObserver->iTranscodingCompletedFinalizeCalled )
- // Next cannot be asserted since it is not true with alloc decoration
- // EUNIT_ASSERT( !iObserver->iSessionFailedCalled )
- EUNIT_ASSERT( !iClipSession->iTranscodingOngoing )
- iObserver->Reset();
-
+ iLcSessionObserver->Reset();
// Test default stream state change behavior, remove or change when
// behavior changes
@@ -1044,13 +317,13 @@
changedStream->iState = CMceMediaStream::EUninitialized;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EInitialized, stream is initialized
changedStream->iState = CMceMediaStream::EInitialized;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// Special meaning (Transcoding ready), tested separately
@@ -1058,20 +331,21 @@
changedStream->iState = CMceMediaStream::EBuffering;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EIdle, stream is not receiving RTP
changedStream->iState = CMceMediaStream::EIdle;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->iStreamIdleCalled )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EStreaming, stream is streaming
changedStream->iState = CMceMediaStream::EStreaming;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled )
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
// EDisabled, stream is explicitly disabled
// This state has non-default meaning, tested before defaults
@@ -1080,9 +354,7 @@
changedStream->iState = CMceMediaStream::ENoResources;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->IsReseted() )
-
-
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
}
@@ -1102,7 +374,7 @@
CleanupStack::PopAndDestroy( videoStream );
// Simulate sending invite
- iClipSession->InviteL( KTestRecipientSipUri() );
+ iClipSession->EstablishLcSessionL();
// Test default stream state change behavior
CMceMediaStream* changedStream = iClipSession->iSession->Streams()[0];
@@ -1113,65 +385,65 @@
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream,
*changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EInitialized, stream is initialized
changedStream->iState = CMceMediaStream::EInitialized;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream,
*changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EBuffering, stream is buffering
changedStream->iState = CMceMediaStream::EBuffering;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream,
*changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EIdle, stream is not receiving RTP
changedStream->iState = CMceMediaStream::EIdle;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream,
*changedSink );
- EUNIT_ASSERT( iObserver->iStreamIdleCalled );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EStreaming, stream is streaming
changedStream->iState = CMceMediaStream::EStreaming;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream,
*changedSink );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled )
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
// EDisabled, stream is explicitly disabled
changedStream->iState = CMceMediaStream::EDisabled;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream,
*changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// ENoResources, stream has no needed resources to stream
changedStream->iState = CMceMediaStream::ENoResources;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream,
*changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// ETranscodingRequired, stream requires non-realtime transcoding
changedStream->iState = CMceMediaStream::ETranscodingRequired;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream,
*changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// ETranscoding, stream is transcoding in non-realtime
changedStream->iState = CMceMediaStream::ETranscoding;
static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged(
*changedStream,
*changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() )
-
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
}
@@ -1265,65 +537,6 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngClipSession::UT_HasClipEndedL()
- {
- // Try before establishing the session
- EUNIT_ASSERT( !iClipSession->HasClipEnded() )
-
- // Try with session, but without video out stream
-
- CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile();
-
- iClipSession->iSession = CMceOutSession::NewL(
- *(iClipSession->iManager),
- *profile,
- KTestRecipientSipUri8() );
-
- EUNIT_ASSERT( !iClipSession->HasClipEnded() )
-
- // Try with video out stream without source...
- CMceVideoStream* videoOut = CMceVideoStream::NewLC();
-
- videoOut->AddSinkL( CMceRtpSink::NewLC() );
- CleanupStack::Pop();
-
- iClipSession->iSession->AddStreamL( videoOut );
- CleanupStack::Pop( videoOut );
-
- EUNIT_ASSERT( !iClipSession->HasClipEnded() )
-
- // And with enabled source and stream
- videoOut->SetSourceL( CMceFileSource::NewLC( *iClipSession->iManager,
- iClipSession->iFileName ) );
- CleanupStack::Pop();
-
- EUNIT_ASSERT( !iClipSession->HasClipEnded() )
-
- // try with different position and duration
- (static_cast<CMceFileSource*> (videoOut->Source()))->iPosition = 90;
- (static_cast<CMceFileSource*> (videoOut->Source()))->iDuration = 111;
- EUNIT_ASSERT( !iClipSession->HasClipEnded() )
-
- // Disapling source
- (static_cast<CMceFileSource*> (videoOut->Source()))->DisableL();
- EUNIT_ASSERT( !iClipSession->HasClipEnded() )
-
- // Disapling stream
- videoOut->iState = CMceMediaStream::EDisabled;
- EUNIT_ASSERT( !iClipSession->HasClipEnded() )
-
- // and finaly try with "real" end of clip
- (static_cast<CMceFileSource*> (videoOut->Source()))->iPosition = 0;
- (static_cast<CMceFileSource*> (videoOut->Source()))->iDuration = 111;
-
- EUNIT_ASSERT( iClipSession->HasClipEnded() )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
void UT_CMusEngClipSession::UT_ConstructAudioStructureLL()
{
@@ -1356,8 +569,9 @@
videoOut->AddSinkL( CMceRtpSink::NewLC() );
CleanupStack::Pop();
- videoOut->SetSourceL( CMceFileSource::NewLC( *iClipSession->iManager,
- iClipSession->iFileName ) );
+ videoOut->SetSourceL( CMceFileSource::NewLC(
+ *iClipSession->iManager,
+ iClipSession->LocalVideoPlayer()->LcSourceFileControl()->LcFileName() ) );
CleanupStack::Pop();
iClipSession->iSession->AddStreamL( videoOut );
@@ -1424,7 +638,8 @@
//
void UT_CMusEngClipSession::UT_EstablishSessionLL()
{
- iClipSession->SetClipL( KTestAvcVideoFileName() );
+ iClipSession->LocalVideoPlayer()->LcSourceFileControl()->SetLcFileNameL(
+ KTestAvcVideoFileName() );
// Try to establish, must fail, because of missing session
TRAPD( error, iClipSession->EstablishSessionL() );
@@ -1437,7 +652,7 @@
// 1.Test that in case the peer party supports H264, no transcoding is needed
// Call to CMusEngOutMceSession::InviteL leads to call to EstablishL
- iClipSession->InviteL( KTestRecipientSipUri );
+ iClipSession->EstablishLcSessionL();
const RPointerArray<CMceMediaStream>& streams = iClipSession->iSession->Streams();
@@ -1453,13 +668,10 @@
}
}
-
- EUNIT_ASSERT( !iObserver->iTranscodingNeededCalled )
- EUNIT_ASSERT( !iClipSession->iTranscodingRequiredDueMissingOptions )
///////
// 2.Test the case when we don't know whether peer supports H264,
- // transcoding is needed, H264 codec has to be removed from the codec list
+ // transcoding is needed => function will leave with KErrNotSupported
delete iClipSession->iSession;
iClipSession->iSession = NULL;
@@ -1467,140 +679,25 @@
delete iClipSession->iVideoCodecList;
iClipSession->iVideoCodecList = NULL;
- // Call to CMusEngOutMceSession::InviteL leads to call to EstablishL
- iClipSession->InviteL( KTestRecipientSipUri );
-
- const RPointerArray<CMceMediaStream>& streams2 = iClipSession->iSession->Streams();
-
- for ( TInt i = 0; i < streams2.Count(); ++i )
- {
- if ( streams2[i]->Type() == KMceVideo )
- {
- CMceVideoStream* videoStream = static_cast<CMceVideoStream*>( streams2[i] );
- const RPointerArray<CMceVideoCodec> codecs = videoStream->Codecs();
- EUNIT_ASSERT_EQUALS( codecs.Count(), 1 )
- EUNIT_ASSERT( codecs[0]->SdpName().FindF( KMceSDPNameH263() ) >= 0 )
- }
- }
-
- EUNIT_ASSERT( iObserver->iTranscodingNeededCalled )
- EUNIT_ASSERT( iObserver->iDueUnknowCapas )
- EUNIT_ASSERT( iClipSession->iTranscodingRequiredDueMissingOptions )
+ MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iClipSession->EstablishLcSessionL(),
+ KErrNotSupported )
+
///////
- // 3. Establish behaves differently at second round in case clip is AVC
- // and because remote party's capabilities were unknown. Use-case is such
- // that AVC is tried to be transcoded first but if it fails, invite is retried
- // by using AVC
- iObserver->Reset();
- iClipSession->InviteL( KTestRecipientSipUri );
- const RPointerArray<CMceMediaStream>& testStreams = iClipSession->iSession->Streams();
-
- for ( TInt i = 0; i < testStreams.Count(); ++i )
- {
- if ( testStreams[i]->Type() == KMceVideo )
- {
- CMceVideoStream* videoStream = static_cast<CMceVideoStream*>( testStreams[i] );
- const RPointerArray<CMceVideoCodec> codecs = videoStream->Codecs();
- EUNIT_ASSERT_EQUALS( codecs.Count(), 1 )
- EUNIT_ASSERT( codecs[0]->SdpName().FindF( KMceSDPNameH264() ) >= 0 )
- }
- }
-
- EUNIT_ASSERT( !iObserver->iTranscodingNeededCalled )
- EUNIT_ASSERT( !iObserver->iDueUnknowCapas )
-
- ///////
- // 4.Test that if peer doesn't supports H264, transcoding is needed
- // H264 codec has to be removed from the codec list
-
- iObserver->iTranscodingNeededCalled = EFalse;
+ // 3.Test that if peer doesn't supports H264, transcoding is needed
+ // => function will leave with KErrNotSupported
delete iClipSession->iSession;
iClipSession->iSession = NULL;
iClipSession->iVideoCodecList = KMceSDPNameH263().AllocL();
- // Call to CMusEngOutMceSession::InviteL leads to call to EstablishL
- iClipSession->InviteL( KTestRecipientSipUri );
-
- const RPointerArray<CMceMediaStream>& streams3 = iClipSession->iSession->Streams();
-
- for ( TInt i = 0; i < streams3.Count(); ++i )
- {
- if ( streams3[i]->Type() == KMceVideo )
- {
- CMceVideoStream* videoStream = static_cast<CMceVideoStream*>( streams3[i] );
- const RPointerArray<CMceVideoCodec> codecs = videoStream->Codecs();
- EUNIT_ASSERT_EQUALS( codecs.Count(), 1 )
- EUNIT_ASSERT( codecs[0]->SdpName().FindF( KMceSDPNameH263() ) >= 0 )
- }
- }
-
- EUNIT_ASSERT( iObserver->iTranscodingNeededCalled )
- EUNIT_ASSERT( !iObserver->iDueUnknowCapas )
-
+ MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iClipSession->EstablishLcSessionL(),
+ KErrNotSupported )
}
-void UT_CMusEngClipSession::UT_IsRewindFromEndL()
- {
- // Try before establishing the session
- EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() )
-
- // Try with session, but without video out stream
-
- CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile();
-
- iClipSession->iSession = CMceOutSession::NewL(
- *(iClipSession->iManager),
- *profile,
- KTestRecipientSipUri8() );
-
- EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() )
-
- // Try with video out stream without source...
- CMceVideoStream* videoOut = CMceVideoStream::NewLC();
-
- videoOut->AddSinkL( CMceRtpSink::NewLC() );
- CleanupStack::Pop();
-
- iClipSession->iSession->AddStreamL( videoOut );
- CleanupStack::Pop( videoOut );
-
- EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() )
-
- // And with enabled source and stream
- videoOut->SetSourceL( CMceFileSource::NewLC( *iClipSession->iManager,
- iClipSession->iFileName ) );
- CleanupStack::Pop();
-
- EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() )
-
- // try with different position and duration
- (static_cast<CMceFileSource*> (videoOut->Source()))->iPosition = 90;
- (static_cast<CMceFileSource*> (videoOut->Source()))->iDuration = 111;
- EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() )
-
- // Disapling source
- (static_cast<CMceFileSource*> (videoOut->Source()))->DisableL();
- EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() )
-
- // Disapling stream
- videoOut->iState = CMceMediaStream::EDisabled;
- EUNIT_ASSERT( iClipSession->IsRewindFromEnd() )
-
- iClipSession->iPause = ETrue;
- EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() )
-
- iClipSession->iPause = EFalse;
- EUNIT_ASSERT( iClipSession->IsRewindFromEnd() )
-
- // and finaly try with "real" end of clip
- (static_cast<CMceFileSource*> (videoOut->Source()))->iPosition = 0;
- (static_cast<CMceFileSource*> (videoOut->Source()))->iDuration = 111;
-
- EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() )
- }
// TEST TABLE
@@ -1617,90 +714,6 @@
SetupL, UT_NewLL, Teardown)
EUNIT_TEST(
- "SetClipL - test ",
- "CMusEngClipSession",
- "AetClipL",
- "FUNCTIONALITY",
- SetupL, UT_SetClipLL, Teardown)
-
-EUNIT_TEST(
- "FastForwardL - test ",
- "CMusEngClipSession",
- "FastForwardL",
- "FUNCTIONALITY",
- SetupL, UT_FastForwardLL, Teardown)
-
-EUNIT_TEST(
- "FastRewindL - test ",
- "CMusEngClipSession",
- "FastRewindL",
- "FUNCTIONALITY",
- SetupL, UT_FastRewindLL, Teardown)
-
-EUNIT_TEST(
- "PositionL - test ",
- "CMusEngClipSession",
- "PositionL",
- "FUNCTIONALITY",
- SetupL, UT_PositionLL, Teardown)
-
-EUNIT_TEST(
- "DurationL - test ",
- "CMusEngClipSession",
- "DurationL",
- "FUNCTIONALITY",
- SetupL, UT_DurationLL, Teardown)
-
-EUNIT_TEST(
- "SetPositionL - test ",
- "CMusEngClipSession",
- "SetPositionL",
- "FUNCTIONALITY",
- SetupL, UT_SetPositionLL, Teardown)
-
-EUNIT_TEST(
- "TranscodeL - To AVC test ",
- "CMusEngClipSession",
- "TranscodeL",
- "FUNCTIONALITY",
- SetupL, UT_TranscodeLToAvcL, Teardown)
-
-EUNIT_TEST(
- "TranscodeL - To H263 test ",
- "CMusEngClipSession",
- "TranscodeL",
- "FUNCTIONALITY",
- Setup2L, UT_TranscodeLToH263L, Teardown)
-
-EUNIT_TEST(
- "CancelTranscodeL - test ",
- "CMusEngClipSession",
- "CancelTranscodeL",
- "FUNCTIONALITY",
- SetupL, UT_CancelTranscodeLL, Teardown)
-
-EUNIT_TEST(
- "PlayL - test ",
- "CMusEngClipSession",
- "PlayL",
- "FUNCTIONALITY",
- SetupL, UT_PlayLL, Teardown)
-
-EUNIT_TEST(
- "PauseL - test ",
- "CMusEngClipSession",
- "PauseL",
- "FUNCTIONALITY",
- SetupL, UT_PauseLL, Teardown)
-
-EUNIT_TEST(
- "IsPlayingL - test ",
- "CMusEngClipSession",
- "IsPlayingL",
- "FUNCTIONALITY",
- SetupL, UT_IsPlayingLL, Teardown)
-
-EUNIT_TEST(
"CompleteSessionStructureL - test ",
"CMusEngClipSession",
"CompleteSessionStructureL",
@@ -1741,13 +754,6 @@
"AddVideoCodecL",
"FUNCTIONALITY",
SetupL, UT_AddVideoCodecLL, Teardown)
-
-EUNIT_TEST(
- "HasClipEnded - test ",
- "CMusEngClipSession",
- "HasClipEnded",
- "FUNCTIONALITY",
- SetupL, UT_HasClipEndedL, Teardown)
EUNIT_TEST(
"ConstructAudioStructureL - test ",
@@ -1770,13 +776,7 @@
"FUNCTIONALITY",
SetupL, UT_EstablishSessionLL, Teardown)
-EUNIT_TEST(
- "IsRewindFromEnd - test ",
- "CMusEngClipSession",
- "IsRewindFromEnd",
- "FUNCTIONALITY",
- SetupL, UT_IsRewindFromEndL, Teardown)
-
+
EUNIT_END_TEST_TABLE
// END OF FILE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipvideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,805 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// INTERNAL INCLUDES
+#include "ut_musengclipvideoplayer.h"
+#include "musengtestdefs.h"
+#include "musengmceutils.h"
+#include "musengclipvideoplayer.h"
+#include "mceoutsession.h"
+#include "mcevideostream.h"
+#include "mcertpsink.h"
+#include "mcefilesource.h"
+#include "drmcommon.h"
+
+// SYSTEM INCLUDES
+#include <eunitmacros.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngClipVideoPlayer* UT_CMusEngClipVideoPlayer::NewL()
+ {
+ UT_CMusEngClipVideoPlayer* self = UT_CMusEngClipVideoPlayer::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngClipVideoPlayer* UT_CMusEngClipVideoPlayer::NewLC()
+ {
+ UT_CMusEngClipVideoPlayer* self = new( ELeave ) UT_CMusEngClipVideoPlayer();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngClipVideoPlayer::~UT_CMusEngClipVideoPlayer()
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngClipVideoPlayer::UT_CMusEngClipVideoPlayer()
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::SetupL()
+ {
+ iMceSession = CMceOutSession::NewL();
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ CMceRtpSink* rtpsink = CMceRtpSink::NewLC();
+ videoStream->AddSinkL( rtpsink );
+ CleanupStack::Pop( rtpsink );
+ CMceFileSource* fileSource =
+ CMceFileSource::NewLC( *iMceSession->iManager, KTestVideoFileName() );
+ fileSource->DisableL();
+ videoStream->SetSourceL( fileSource );
+ CleanupStack::Pop( fileSource );
+ iMceSession->AddStreamL( videoStream );
+ CleanupStack::Pop( videoStream );
+ iClipVideoPlayer =
+ CMusEngClipVideoPlayer::NewL(
+ iDisplayHandlerStub,
+ iLcAudioControlStub );
+ iClipVideoPlayer->SetMceSession( iMceSession );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::Teardown()
+ {
+ delete iClipVideoPlayer;
+ delete iMceSession;
+ iLcAudioControlStub.Reset();
+ }
+
+
+// TEST CASES
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_HasClipEndedL()
+ {
+ CMceSession* invalidMceSession = CMceOutSession::NewL();
+ CleanupStack::PushL( invalidMceSession );
+
+ // Try before establishing the session
+ iClipVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() )
+
+ // Try with session, but without video out stream
+ iClipVideoPlayer->SetMceSession( invalidMceSession );
+ EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() )
+
+ // Try with video out stream without source...
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ videoStream->AddSinkL( CMceRtpSink::NewLC() );
+ CleanupStack::Pop();
+ invalidMceSession->AddStreamL( videoStream );
+ CleanupStack::Pop( videoStream );
+ EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() )
+
+ // And with enabled source and stream
+ CMceFileSource* fileSource =
+ CMceFileSource::NewLC(
+ *invalidMceSession->iManager, KTestVideoFileName() );
+ videoStream->SetSourceL( fileSource );
+ CleanupStack::Pop( fileSource );
+ EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() )
+
+ // try with different position and duration
+ fileSource->iPosition = 90;
+ fileSource->iDuration = 111;
+ EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() )
+
+ // Disabled source
+ fileSource->DisableL();
+ EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() )
+
+ // Disabled stream
+ videoStream->iState = CMceMediaStream::EDisabled;
+ EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() )
+
+ // and finaly try with "real" end of clip
+ fileSource->iPosition = 0;
+ fileSource->iDuration = 111;
+
+ EUNIT_ASSERT( iClipVideoPlayer->HasClipEnded() )
+
+ CleanupStack::PopAndDestroy( invalidMceSession );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcVideoPlayerStateL()
+ {
+ // iMceSession not set
+ iClipVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+ iClipVideoPlayer->SetMceSession( iMceSession );
+
+ // Establish Session and simulate media playing.
+ iMceSession->iState = CMceSession::EEstablished;
+ for ( TInt i = 0; i < iMceSession->Streams().Count(); i++ )
+ {
+ iMceSession->Streams()[i]->iState = CMceMediaStream::EStreaming;
+ }
+
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPlaying ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+
+ // Media streams unavailable
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EUninitialized;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+
+ // All other stream states
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EInitialized;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EInit ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EBuffering;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EBuffering ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EIdle;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPaused ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EDisabled;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPaused ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EStreaming;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPlaying ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::ENoResources;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::ETranscodingRequired;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::ETranscoding;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iClipVideoPlayer->LcVideoPlayerState() ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcPlayL()
+ {
+ // MCE session not set
+ iClipVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iClipVideoPlayer->LcPlayL(), KErrNotReady )
+
+ // File source does not exist
+ iClipVideoPlayer->SetMceSession( iMceSession );
+ iMceSession->Streams()[ 0 ]->SetSourceL( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iClipVideoPlayer->LcPlayL(), KErrNotFound )
+
+ // Play
+ CMceFileSource* fileSource =
+ CMceFileSource::NewLC( *iMceSession->iManager, KTestVideoFileName() );
+ fileSource->DisableL();
+ iMceSession->Streams()[ 0 ]->SetSourceL( fileSource );
+ CleanupStack::Pop( fileSource );
+ EUNIT_ASSERT( !iClipVideoPlayer->LcIsPlayingL() )
+ iClipVideoPlayer->LcPlayL();
+ EUNIT_ASSERT( iClipVideoPlayer->LcIsPlayingL() )
+
+ // Try to play again
+ iClipVideoPlayer->LcPlayL();
+ EUNIT_ASSERT( iClipVideoPlayer->LcIsPlayingL() )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcPauseL()
+ {
+ // MCE session not set
+ iClipVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iClipVideoPlayer->LcPauseL(), KErrNotReady )
+
+ // File source does not exist
+ iClipVideoPlayer->SetMceSession( iMceSession );
+ iMceSession->Streams()[ 0 ]->SetSourceL( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iClipVideoPlayer->LcPauseL(), KErrNotFound )
+
+ // Pause
+ CMceFileSource* fileSource =
+ CMceFileSource::NewLC( *iMceSession->iManager, KTestVideoFileName() );
+ fileSource->EnableL();
+ iMceSession->Streams()[ 0 ]->SetSourceL( fileSource );
+ CleanupStack::Pop( fileSource );
+ EUNIT_ASSERT( iClipVideoPlayer->LcIsPlayingL() )
+ iClipVideoPlayer->LcPauseL();
+ EUNIT_ASSERT( !iClipVideoPlayer->LcIsPlayingL() )
+
+ // Try to pause already paused clip
+ iClipVideoPlayer->LcPauseL();
+ EUNIT_ASSERT( !iClipVideoPlayer->LcIsPlayingL() )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcIsPlayingL()
+ {
+ // MCE session not set
+ iClipVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iClipVideoPlayer->LcIsPlayingL(), KErrNotReady )
+
+ // Player is not playing when file source is disabled
+ iClipVideoPlayer->SetMceSession( iMceSession );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+ file->DisableL();
+ EUNIT_ASSERT( !iClipVideoPlayer->LcIsPlayingL() )
+
+ // Player is playing when file source is enabled
+ file->EnableL();
+ EUNIT_ASSERT( iClipVideoPlayer->LcIsPlayingL() )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_SetLcFileNameL()
+ {
+ // Set file before iMceSession is set
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+ iClipVideoPlayer->SetMceSession( NULL );
+ iClipVideoPlayer->SetLcFileNameL( KTestAvcVideoFileName() );
+ EUNIT_ASSERT_EQUALS( iClipVideoPlayer->LcFileName(), KTestAvcVideoFileName() )
+ EUNIT_ASSERT_EQUALS( file->iFileName, KTestVideoFileName() )
+
+ // Set file after session is set
+ iClipVideoPlayer->SetMceSession( iMceSession );
+ file->iFileName = KTestAvcVideoFileName();
+ iClipVideoPlayer->SetLcFileNameL( KTestVideoFileName() );
+ EUNIT_ASSERT_EQUALS( iClipVideoPlayer->LcFileName(), KTestVideoFileName() )
+ EUNIT_ASSERT_EQUALS( file->iFileName, KTestVideoFileName() )
+
+ // Set DRM protected file, file names not changed
+ MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iClipVideoPlayer->SetLcFileNameL( KMusDrmProtectedFileName() ),
+ KErrPermissionDenied )
+ EUNIT_ASSERT_EQUALS( iClipVideoPlayer->LcFileName(), KTestVideoFileName() )
+ EUNIT_ASSERT_EQUALS( file->iFileName, KTestVideoFileName() )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcFastForwardL()
+ {
+ // Try before establishment
+ iClipVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iClipVideoPlayer->LcFastForwardL( ETrue ), KErrNotReady )
+
+ // Establish session, simulate position and duration and try again
+ iClipVideoPlayer->SetMceSession( iMceSession );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+ file->iDuration = KMusEngTestFileDuration;
+ file->iPosition = KMusEngTestFilePosition;
+ iClipVideoPlayer->LcFastForwardL( ETrue );
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() > 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 )
+
+ // Simulate fastforwarding for a while
+ User::After( 1000 );
+
+ // Try to fastforward when already fastforwarding, will be ignored
+ iClipVideoPlayer->LcFastForwardL( ETrue );
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() > 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 )
+
+ // Stop fastforwarding
+ iClipVideoPlayer->LcFastForwardL( EFalse );
+ EUNIT_ASSERT( file->iPosition > KMusEngTestFilePosition )
+ EUNIT_ASSERT( file->iPosition != file->iDuration )
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 )
+
+ // Try to stop fastforwarding again, leaves
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iClipVideoPlayer->LcFastForwardL( EFalse ), KErrAlreadyExists )
+
+ // Start fastrewinding
+ iClipVideoPlayer->LcFastRewindL( ETrue );
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() > 0 )
+
+ // Start fastforwarding, rewinding should be stopped and FFWD started
+ iClipVideoPlayer->LcFastForwardL( ETrue );
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() > 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 )
+
+ // Simulate fastforwarding for a while
+ User::After( 1000 );
+
+ // Simulate that clip is almost in end and fastforwarding would have
+ // continued over end, position should be set to duration.
+ file->iPosition = TTimeIntervalMicroSeconds( file->iDuration.Int64() - 1 );
+ iClipVideoPlayer->LcFastForwardL( EFalse );
+ EUNIT_ASSERT( file->iPosition == file->iDuration )
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT_EQUALS( 0, iClipVideoPlayer->iFFWDStartTime.Int64() )
+ EUNIT_ASSERT_EQUALS( 0, iClipVideoPlayer->iFRWDStartTime.Int64() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcFastRewindL()
+ {
+ // Try before establishment
+ iClipVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iClipVideoPlayer->LcFastRewindL( ETrue ), KErrNotReady )
+
+ // Establish session, simulate position and duration and try again
+ iClipVideoPlayer->SetMceSession( iMceSession );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+ file->iDuration = KMusEngTestFileDuration;
+ file->iPosition = KMusEngTestFilePosition;
+ iClipVideoPlayer->LcFastRewindL( ETrue );
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() > 0 )
+
+ // Simulate fastrewinding for a while
+ User::After( 1000 );
+
+ // Try to fastrewind when already fastrewinding, will be ignored
+ iClipVideoPlayer->LcFastRewindL( ETrue );
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() > 0 )
+
+ // Stop fastrewinding
+ iClipVideoPlayer->LcFastRewindL( EFalse );
+ EUNIT_ASSERT( file->iPosition < KMusEngTestFilePosition )
+ EUNIT_ASSERT( file->iPosition != TTimeIntervalMicroSeconds( 0 ) )
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 )
+
+ // Try to stop fastrewinding again, leaves
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iClipVideoPlayer->LcFastRewindL( EFalse ), KErrAlreadyExists )
+
+ // Start fastforwarding
+ iClipVideoPlayer->LcFastForwardL( ETrue );
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() >= 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 )
+
+ // Start fastrewinding, forwarding should be stopped and FFWD started
+ iClipVideoPlayer->LcFastRewindL( ETrue );
+ EUNIT_ASSERT( !file->iIsEnabled );
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() >= 0 )
+
+ // Simulate that clip has just begun and fastrewinding would have
+ // continued over beginning, position should be set to zero.
+
+ file->iPosition = TTimeIntervalMicroSeconds( 1 );
+
+ // Simulate fastrewinding for a while
+ User::After( 1000 );
+
+ iClipVideoPlayer->LcFastRewindL( EFalse );
+ EUNIT_ASSERT( file->iPosition == TTimeIntervalMicroSeconds( 0 ) )
+ EUNIT_ASSERT( !file->iIsEnabled )
+ EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 )
+ EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcFilePositionL()
+ {
+ // Try before establishment
+ iClipVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iClipVideoPlayer->LcFilePositionL(), KErrNotReady )
+
+ // Establish session and try again
+ iClipVideoPlayer->SetMceSession( iMceSession );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+ file->iPosition = 2000000;
+ EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 ==
+ file->iPosition.Int64() )
+
+ // Ask position while fastforwarding, it should be bigger than real position
+ iClipVideoPlayer->LcFastForwardL( ETrue );
+ User::After( 1000000 ); // We have to wait since dividing in LcFilePositionL and
+ // multiplying before comparison loses difference
+ EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 >
+ file->iPosition.Int64() )
+
+ // Ask position while fastforwarding beyond end of clip, clip duration is
+ // returned
+ file->iPosition = file->iDuration;
+ EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 ==
+ file->iDuration.Int64() )
+
+ // Stop fastforwarding, start fastrewinding, position is set to the end clip
+ iClipVideoPlayer->LcFastForwardL( EFalse );
+ iClipVideoPlayer->LcFastRewindL( ETrue );
+ User::After( 1000000 ); // We have to wait since dividing in LcFilePositionL and
+ // multiplying before comparison loses difference
+
+ // Ask position while fastrewinding, it should be smaller than real
+ // position
+ EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 <
+ file->iPosition.Int64() )
+
+ // Ask position while fastrewinding beyond the beginning of clip, zero
+ // returned
+ file->iPosition = 0;
+ EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 == 0 )
+
+ // Asking position when rewinded to beginning but rewinding has ended
+ // and clip has not ended (position should not be altered in that case)
+ iClipVideoPlayer->iRewindedToBeginning = ETrue;
+ file->iPosition = 0;
+ iClipVideoPlayer->iFRWDStartTime = TTime( 0 );
+ EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 == 0 )
+
+ // Position has proceeded from beginning, rewinding to beginning info
+ // is cleared.
+ file->iPosition = 10000000;
+ iClipVideoPlayer->iFRWDStartTime = TTime( 0 );
+ EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 == 10000000 )
+ EUNIT_ASSERT( iClipVideoPlayer->iRewindedToBeginning == EFalse )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcFileDurationL()
+ {
+ // Try before establishment
+ iClipVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iClipVideoPlayer->LcFileDurationL(), KErrNotReady )
+
+ // Establish session and try again
+ iClipVideoPlayer->SetMceSession( iMceSession );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+ file->iDuration = 2000000;
+ EUNIT_ASSERT( iClipVideoPlayer->LcFileDurationL().Int() * 1000000 ==
+ file->iDuration.Int64() )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_SetLcFilePositionL()
+ {
+ TTimeIntervalSeconds time( 20 );
+
+ // Try before establishment
+ iClipVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iClipVideoPlayer->SetLcFilePositionL( time ), KErrNotReady )
+
+ // Normal case with already disabled file source
+ iClipVideoPlayer->SetMceSession( iMceSession );
+ CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession );
+ file->iIsEnabled = EFalse;
+ iClipVideoPlayer->SetLcFilePositionL( time );
+ EUNIT_ASSERT( file->iPosition.Int64() ==
+ static_cast< TInt64 >( time.Int() ) * 1000000 )
+ EUNIT_ASSERT( !file->iIsEnabled )
+
+ // Normal case with enabled file source
+ TTimeIntervalSeconds anotherTime( 30 );
+ file->iIsEnabled = ETrue;
+ iClipVideoPlayer->SetLcFilePositionL( anotherTime );
+ EUNIT_ASSERT( file->iPosition.Int64() ==
+ static_cast< TInt64 >( anotherTime.Int() ) * 1000000 )
+ EUNIT_ASSERT( file->iIsEnabled )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcWindowL()
+ {
+ EUNIT_ASSERT( iClipVideoPlayer->LcWindow() == iClipVideoPlayer )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcCameraControlL()
+ {
+ EUNIT_ASSERT( iClipVideoPlayer->LcCameraControl() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcSourceFileControlL()
+ {
+ EUNIT_ASSERT( iClipVideoPlayer->LcSourceFileControl() == iClipVideoPlayer )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcDestinationFileControlL()
+ {
+ EUNIT_ASSERT( iClipVideoPlayer->LcDestinationFileControl() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcAudioControlL()
+ {
+ EUNIT_ASSERT( iClipVideoPlayer->LcAudioControl() == &iLcAudioControlStub )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcZoomControlL()
+ {
+ EUNIT_ASSERT( iClipVideoPlayer->LcZoomControl() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngClipVideoPlayer::UT_LcBrightnessControlL()
+ {
+ EUNIT_ASSERT( iClipVideoPlayer->LcBrightnessControl() == NULL )
+ }
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusEngClipVideoPlayer,
+ "UT_CMusEngClipVideoPlayer",
+ "UNIT" )
+
+EUNIT_TEST(
+ "HasClipEnded - test ",
+ "CMusEngClipVideoPlayer",
+ "HasClipEnded",
+ "FUNCTIONALITY",
+ SetupL, UT_HasClipEndedL, Teardown)
+
+EUNIT_TEST(
+ "LcVideoPlayerState - test ",
+ "CMusEngClipVideoPlayer",
+ "LcVideoPlayerState",
+ "FUNCTIONALITY",
+ SetupL, UT_LcVideoPlayerStateL, Teardown)
+
+EUNIT_TEST(
+ "LcPlayL - test ",
+ "CMusEngClipVideoPlayer",
+ "LcPlayL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcPlayL, Teardown)
+
+EUNIT_TEST(
+ "LcPauseL - test ",
+ "CMusEngClipVideoPlayer",
+ "LcPauseL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcPauseL, Teardown)
+
+EUNIT_TEST(
+ "LcIsPlayingL - test ",
+ "CMusEngClipVideoPlayer",
+ "LcIsPlayingL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcIsPlayingL, Teardown)
+
+EUNIT_TEST(
+ "SetLcFileNameL - test ",
+ "CMusEngClipVideoPlayer",
+ "SetLcFileNameL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetLcFileNameL, Teardown)
+
+EUNIT_TEST(
+ "LcFastForwardL - test ",
+ "CMusEngClipVideoPlayer",
+ "LcFastForwardL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcFastForwardL, Teardown)
+
+EUNIT_TEST(
+ "LcFastRewindL - test ",
+ "CMusEngClipVideoPlayer",
+ "LcFastRewindL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcFastRewindL, Teardown)
+
+EUNIT_TEST(
+ "LcFilePositionL - test ",
+ "CMusEngClipVideoPlayer",
+ "LcFilePositionL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcFilePositionL, Teardown)
+
+EUNIT_TEST(
+ "LcFileDurationL - test ",
+ "CMusEngClipVideoPlayer",
+ "LcFileDurationL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcFileDurationL, Teardown)
+
+EUNIT_TEST(
+ "SetLcFilePositionL - test ",
+ "CMusEngClipVideoPlayer",
+ "SetLcFilePositionL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetLcFilePositionL, Teardown)
+
+EUNIT_TEST(
+ "LcWindow - test ",
+ "CMusEngClipVideoPlayer",
+ "LcWindow",
+ "FUNCTIONALITY",
+ SetupL, UT_LcWindowL, Teardown)
+
+EUNIT_TEST(
+ "LcCameraControl - test ",
+ "CMusEngClipVideoPlayer",
+ "LcCameraControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcCameraControlL, Teardown)
+
+EUNIT_TEST(
+ "LcSourceFileControl - test ",
+ "CMusEngClipVideoPlayer",
+ "LcSourceFileControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcSourceFileControlL, Teardown)
+
+EUNIT_TEST(
+ "LcDestinationFileControl - test ",
+ "CMusEngClipVideoPlayer",
+ "LcDestinationFileControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcDestinationFileControlL, Teardown)
+
+EUNIT_TEST(
+ "LcAudioControl - test ",
+ "CMusEngClipVideoPlayer",
+ "LcAudioControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcAudioControlL, Teardown)
+
+EUNIT_TEST(
+ "LcZoomControl - test ",
+ "CMusEngClipVideoPlayer",
+ "LcZoomControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcZoomControlL, Teardown)
+
+EUNIT_TEST(
+ "LcBrightnessControl - test ",
+ "CMusEngClipVideoPlayer",
+ "LcBrightnessControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcBrightnessControlL, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE
+
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenginedllmain.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenginedllmain.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -16,7 +16,6 @@
*/
// USER INCLUDES
-#include "ut_musengsession.h"
#include "ut_musengmcesession.h"
#include "ut_musengoutsession.h"
#include "ut_musenglivesession.h"
@@ -27,7 +26,14 @@
#include "ut_musengtelephoneutils.h"
#include "ut_musenguriparser.h"
#include "ut_musengsipprofilehandler.h"
-#include "ut_musengorientationhandler.h"
+#include "ut_musengsessionmanager.h"
+#include "ut_musengtwowaysession.h"
+#include "ut_musengtwowayrecvsession.h"
+#include "ut_musengcamerahandler.h"
+#include "ut_musenglivevideoplayer.h"
+#include "ut_musengremotevideoplayer.h"
+#include "ut_musengclipvideoplayer.h"
+#include "ut_muspropertywatch.h"
// SYSTEM INCLUDES
@@ -40,19 +46,24 @@
//
EXPORT_C MEUnitTest* CreateTestSuiteL()
{
-
CEUnitTestSuite* rootSuite = CEUnitTestSuite::NewLC( _L( "Mush Engine" ) );
+ rootSuite->AddL( UT_CMusEngClipVideoPlayer::NewLC() );
+ CleanupStack::Pop();
+
rootSuite->AddL( UT_CMusEngSipProfileHandler::NewLC() );
CleanupStack::Pop();
+ rootSuite->AddL( UT_CMusEngLiveVideoPlayer::NewLC() );
+ CleanupStack::Pop();
+
+ rootSuite->AddL( UT_CMusEngRemoteVideoPlayer::NewLC() );
+ CleanupStack::Pop();
+
rootSuite->AddL( UT_MusEngMceUtils::NewLC() );
CleanupStack::Pop();
rootSuite->AddL( UT_CMusEngSessionDurationTimer::NewLC() );
- CleanupStack::Pop();
-
- rootSuite->AddL( UT_CMusEngSession::NewLC() );
CleanupStack::Pop();
rootSuite->AddL( UT_CMusEngMceSession::NewLC() );
@@ -70,15 +81,27 @@
rootSuite->AddL( UT_CMusEngClipSession::NewLC() );
CleanupStack::Pop();
+ rootSuite->AddL( UT_CMusEngTwoWaySession::NewLC() );
+ CleanupStack::Pop();
+
+ rootSuite->AddL( UT_CMusEngTwoWayRecvSession::NewLC() );
+ CleanupStack::Pop();
+
+ rootSuite->AddL( UT_TMusEngCameraHandler::NewLC() );
+ CleanupStack::Pop();
+
rootSuite->AddL( UT_CMusEngTelephoneUtils::NewLC() );
CleanupStack::Pop();
-
+
rootSuite->AddL( UT_TMusEngUriParser::NewLC() );
- CleanupStack::Pop();
+ CleanupStack::Pop();
- rootSuite->AddL( UT_CMusEngOrientationHandler::NewLC() );
- CleanupStack::Pop();
-
+ rootSuite->AddL( UT_CMusEngSessionManager::NewLC() );
+ CleanupStack::Pop();
+
+ rootSuite->AddL( UT_CMusPropertyWatch::NewLC() );
+ CleanupStack::Pop();
+
CleanupStack::Pop( rootSuite );
return rootSuite;
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenglivesession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenglivesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -24,6 +24,8 @@
#include "mussipprofilehandler.h"
#include "musengmceutils.h"
#include "mussettings.h"
+#include "mussessionproperties.h"
+#include "musenglivevideoplayer.h"
// SYSTEM INCLUDES
#include <digia/eunit/eunitmacros.h>
@@ -38,31 +40,6 @@
#include <mceaudiocodec.h>
-_LIT8( KMusAvcBitrateLevel1TestText, "TestTextForAvcBrL1Level" );
-_LIT8( KMusAvcBitrateLevel1bTestText, "TestTextForAvcBrL1bLevel" );
-_LIT8( KMusAvcBitrateLevel1_1TestText, "TestTextForAvcBrL1_1Level" );
-_LIT8( KMusAvcBitrateLevel1_2TestText, "TestTextForAvcBrL1_2Level" );
-_LIT8( KMusAvcBitrateLevel1_3TestText, "TestTextForAvcBrL1_3Level" );
-_LIT8( KMusAvcBitrateLevel2TestText, "TestTextForAvcBrL2Level" );
-
-_LIT8( KMusAvcBitrateLevel_1b_ConfigKey, "AvcBrL1b=TestTextForAvcBrL1bLevel;" );
-
-_LIT8( KMusAvcBitrateLevel_1_1_ConfigKey,
-"AvcBrL1_1=TestTextForAvcBrL1_1Level;");
-
-_LIT8( KMusAvcBitrateLevels_1_1_And_1b_ConfigKeys,
-"AvcBrL1_1=TestTextForAvcBrL1_1Level;\
-AvcBrL1b=TestTextForAvcBrL1bLevel;" );
-
-_LIT8( KMusAvcAllLevelsConcatenation,
-"AvcBrL1=TestTextForAvcBrL1Level;\
-AvcBrL1b=TestTextForAvcBrL1bLevel;\
-AvcBrL1_1=TestTextForAvcBrL1_1Level;\
-AvcBrL1_2=TestTextForAvcBrL1_2Level;\
-AvcBrL1_3=TestTextForAvcBrL1_3Level;\
-AvcBrL2=TestTextForAvcBrL2Level;" );
-
-
//use step in different time period
const TInt KZoomBigStepCount = 15;
@@ -139,20 +116,25 @@
// -----------------------------------------------------------------------------
//
void UT_CMusEngLiveSession::SetupL()
- {
- iObserver = new( ELeave ) CMusEngObserverStub;
+ {
+ iLcSessionObserver = new( ELeave )CLcSessionObserverStub;
+ iLcUiProvider = new( ELeave )CLcUiProviderStub;
+ iAudioRoutingObserver = new( ELeave )CMusEngObserverStub;
- iLiveSession = CMusEngLiveSession::NewL( TRect(0, 0, 100, 100),
- *iObserver,
- *iObserver,
- *iObserver );
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
- iRecordedLiveSession = CMusEngLiveSession::NewL( KTestVideoFileName(),
- TRect(0, 0, 100, 100),
- *iObserver,
- *iObserver,
- *iObserver );
-
+ iRecordedLiveSession = CMusEngLiveSession::NewL();
+ iRecordedLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iRecordedLiveSession->SetLcUiProvider( iLcUiProvider );
+ MLcDestinationFileControl* destinationFileControl =
+ iRecordedLiveSession->LocalVideoPlayer()->LcDestinationFileControl();
+ destinationFileControl->SetLcFileNameL( KTestVideoFileName() );
+
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KRemoteSipAddress,
+ KTestRecipientSipUri ) );
}
@@ -164,11 +146,14 @@
{
delete iLiveSession;
delete iRecordedLiveSession;
- delete iObserver;
-
+ delete iLcSessionObserver;
+ delete iLcUiProvider;
+ delete iAudioRoutingObserver;
+ PropertyHelper::Close();
// Delete static data from CenRep stub
CRepository::iStaticWriteAvcKeysToStaticData = EFalse;
CRepository::DeleteStubAvcConfigKeys();
+ CRepository::ResetStubGlobal();
CRepository::iForceFailWithCode = KErrNone;
}
@@ -176,602 +161,37 @@
// TEST CASES
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusEngLiveSession::UT_NewLL()
{
- EUNIT_ASSERT( iLiveSession );
- EUNIT_ASSERT( iLiveSession->iRecordedFile == KNullDesC() );
- EUNIT_ASSERT( iRecordedLiveSession );
- EUNIT_ASSERT( iRecordedLiveSession->iRecordedFile == KTestVideoFileName() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_CurrentZoomLL()
- {
- // Check that checking current zoom is not possible before invite
- TRAPD( error, iLiveSession->CurrentZoomL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- // Check that originally current and default zoom are the same
- EUNIT_ASSERT( iLiveSession->iDefaultZoomFactor ==
- iLiveSession->CurrentZoomL() );
-
- // Zoom to maximum optical value
- while ( camera->iZoomFactor < iLiveSession->iCameraInfo.iMaxZoom )
- {
- iLiveSession->ZoomInL();
- }
-
- EUNIT_ASSERT( iLiveSession->iCameraInfo.iMaxZoom ==
- iLiveSession->CurrentZoomL() );
-
- // Zoom using digital zoom
-
- iLiveSession->ZoomInL();
-
- EUNIT_ASSERT( iLiveSession->CurrentZoomL() ==
- iLiveSession->iCameraInfo.iMaxZoom +
- camera->iDigitalZoomFactor )
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_CMusEngLiveSession_SetZoomLL()
- {
- TRAPD( error, iLiveSession->SetZoomL(2) );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
- ESTABLISH_OUT_SESSION( iLiveSession );
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
- EUNIT_ASSERT( camera->iZoomFactor == 1 );
- EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 );
- TRAPD( err, iLiveSession->SetZoomL(0) );
- EUNIT_ASSERT( err == KErrArgument );
- iLiveSession->SetZoomL(2);
- EUNIT_ASSERT( camera->iZoomFactor == 2 );
- TRAPD( err1, iLiveSession->SetZoomL(14) );
- EUNIT_ASSERT( err1 == KErrArgument );
- iLiveSession->SetZoomL( 5 );
- EUNIT_ASSERT( camera->iDigitalZoomFactor == 2 );
- }
-void UT_CMusEngLiveSession::UT_MaxZoomLL()
- {
- // Check that checking maximum zoom is not possible before invite
- TRAPD( error, iLiveSession->MaxZoomL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- EUNIT_ASSERT( iLiveSession->MaxZoomL() ==
- iLiveSession->iCameraInfo.iMaxZoom +
- iLiveSession->iCameraInfo.iMaxDigitalZoom );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_ZoomInLL()
- {
- // Check that zooming is not possible before invite
- TRAPD( error, iLiveSession->ZoomInL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- // Check the default value
- EUNIT_ASSERT( iLiveSession->iDefaultZoomFactor == camera->iZoomFactor );
-
- // Check that zoom factor can be increased
- USER_SLEEP; //insure that small step is used
- iLiveSession->ZoomInL();
- EUNIT_ASSERT( camera->iZoomFactor == iLiveSession->iDefaultZoomFactor +
- iLiveSession->iSmallZoomStep );
-
- //Check the "burst" mode (immediate second ZoomIn), big step should be used
- TInt nZoom = camera->iZoomFactor + camera->iDigitalZoomFactor;
- iLiveSession->ZoomInL();
- TInt nStep = camera->iZoomFactor + camera->iDigitalZoomFactor - nZoom;
- EUNIT_ASSERT( nStep == iLiveSession->iBigZoomStep );
+ EUNIT_ASSERT( iLiveSession )
+ EUNIT_ASSERT( iRecordedLiveSession )
+ EUNIT_ASSERT( iLiveSession->iCameraHandler.iCameraUsage == MusSettingsKeys::EUseCameraSwapping );
+ EUNIT_ASSERT( iLiveSession->iMceManagerUid == TUid::Uid( KMusUiUid ) );
- // Zoom to maximum optical value
- while ( camera->iZoomFactor < iLiveSession->iCameraInfo.iMaxZoom )
- {
- iLiveSession->ZoomInL();
- }
-
- TInt maxOpticalZoomFactor = camera->ZoomFactorL();
-
- // Check that digital zoom is used instead of optical
- iLiveSession->ZoomInL();
- EUNIT_ASSERT( camera->iZoomFactor == maxOpticalZoomFactor );
- EUNIT_ASSERT( camera->iDigitalZoomFactor > 0 );
-
- // Zoom to maximum digital value
- while ( camera->iDigitalZoomFactor <
- iLiveSession->iCameraInfo.iMaxDigitalZoom )
- {
- iLiveSession->ZoomInL();
- }
-
- TInt maxDigitalZoomFactor = camera->DigitalZoomFactorL();
-
- // Check that further zooming is impossible
- iLiveSession->ZoomInL();
- EUNIT_ASSERT( camera->iZoomFactor == maxOpticalZoomFactor );
- EUNIT_ASSERT( camera->iDigitalZoomFactor == maxDigitalZoomFactor );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_ZoomOutLL()
- {
- // Check that zooming is not possible before invite
- TRAPD( error, iLiveSession->ZoomOutL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- // Check the default value
- EUNIT_ASSERT( iLiveSession->iDefaultZoomFactor == camera->iZoomFactor );
-
- // Simulate maximum zoom
- camera->iZoomFactor = iLiveSession->iCameraInfo.iMaxZoom;
- camera->iDigitalZoomFactor = iLiveSession->iCameraInfo.iMaxDigitalZoom;
-
- // Check that digital zoom factor can be decreased
- USER_SLEEP; //insure that small step is used
- iLiveSession->ZoomOutL();
- EUNIT_ASSERT( camera->iZoomFactor == iLiveSession->iCameraInfo.iMaxZoom );
- EUNIT_ASSERT( camera->iDigitalZoomFactor ==
- iLiveSession->iCameraInfo.iMaxDigitalZoom -
- iLiveSession->iSmallZoomStep );
-
- //Check the "burst" mode (immediate second ZoomOut), big step should be used
- TInt nZoom = camera->iZoomFactor + camera->iDigitalZoomFactor;
- iLiveSession->ZoomOutL();
- TInt nStep;
- nStep = nZoom - (camera->iZoomFactor + camera->iDigitalZoomFactor );
- EUNIT_ASSERT( nStep == iLiveSession->iBigZoomStep );
-
- // Simulate maximum zoom again
- camera->iZoomFactor = iLiveSession->iCameraInfo.iMaxZoom;
- camera->iDigitalZoomFactor = iLiveSession->iCameraInfo.iMaxDigitalZoom;
-
- // Zoom to minimum digital zoom
- while ( camera->iDigitalZoomFactor > 0 )
- {
- iLiveSession->ZoomOutL();
- }
-
- EUNIT_ASSERT( camera->iZoomFactor == iLiveSession->iCameraInfo.iMaxZoom );
- EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 );
-
- // Check that optical zoom is decreased instead of digital
- USER_SLEEP; //insure that step is the small one
- iLiveSession->ZoomOutL();
- EUNIT_ASSERT( camera->iZoomFactor ==
- iLiveSession->iCameraInfo.iMaxZoom -
- iLiveSession->iSmallZoomStep );
- EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 );
-
- // Zoom to minimum optical zoom
- while ( camera->iZoomFactor > iLiveSession->iCameraInfo.iMinZoom )
- {
- iLiveSession->ZoomOutL();
- }
-
- // Check that further zooming is impossible
- iLiveSession->ZoomOutL();
- EUNIT_ASSERT( camera->iZoomFactor == iLiveSession->iCameraInfo.iMinZoom );
- EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_ZoomDefaultLL()
- {
- // Check that zooming is not possible before invite
- TRAPD( error, iLiveSession->ZoomDefaultL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- // Check the default value
- EUNIT_ASSERT( iLiveSession->iDefaultZoomFactor == camera->iZoomFactor );
-
- // increase zoom factor so much that optical zoom is in maximum value
- // and digital zoom is in use
- while ( camera->iDigitalZoomFactor == 0 )
- {
- iLiveSession->ZoomInL();
- }
- EUNIT_ASSERT( camera->iZoomFactor > iLiveSession->iDefaultZoomFactor );
- EUNIT_ASSERT( camera->iDigitalZoomFactor > 0 );
-
- // back to default
- iLiveSession->ZoomDefaultL();
- EUNIT_ASSERT( camera->iZoomFactor == iLiveSession->iDefaultZoomFactor );
- EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_SetBrightnessLL()
- {
- // Check that setting brightness is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE(
- iLiveSession->SetBrightnessL( KTestSomeBrightness ),
- KErrNotReady )
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- camera->iCameraInfo.iOptionsSupported =
- camera->iCameraInfo.iOptionsSupported | TCameraInfo::EBrightnessSupported;
-
- // Check that originally current and default brightness are the same
- EUNIT_ASSERT_EQUALS( iLiveSession->iDefaultBrightness,
- iLiveSession->CurrentBrightnessL() )
-
- // Test setting brightness
- iLiveSession->SetBrightnessL( KTestSomeBrightness );
-
- EUNIT_ASSERT_EQUALS( KTestSomeBrightness,
- iLiveSession->CurrentBrightnessL() )
- }
-
-
+ delete iLiveSession;
+ iLiveSession = NULL;
+ CRepository::SetStubGlobal( MusSettingsKeys::KCameraUsage,
+ MusSettingsKeys::EUseOnlySecondaryCamera );
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_CurrentBrightnessLL()
- {
- // Check that checking current brightness is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->CurrentBrightnessL(),
- KErrNotReady )
+ iLiveSession = CMusEngLiveSession::NewL();
- // All the other stuff checked in tests of SetBrightnessL
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_MaxBrightnessLL()
- {
- // MaxBrightness should return a constant
-
- EUNIT_ASSERT_EQUALS( KTestMaxBrightness, iLiveSession->MaxBrightnessL() )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_MinBrightnessLL()
- {
- // MinBrightness should return a constant
-
- EUNIT_ASSERT_EQUALS( KTestMinBrightness, iLiveSession->MinBrightnessL() )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_IncreaseBrightnessLL()
- {
- // Check that increasing brightness is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->IncreaseBrightnessL(),
- KErrNotReady )
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- camera->iCameraInfo.iOptionsSupported =
- camera->iCameraInfo.iOptionsSupported | TCameraInfo::EBrightnessSupported;
-
- // Check that originally current and default brightness are the same
- EUNIT_ASSERT_EQUALS( iLiveSession->iDefaultBrightness,
- iLiveSession->CurrentBrightnessL() )
-
- // Check that brightness can be increased...
- iLiveSession->IncreaseBrightnessL();
-
- EUNIT_ASSERT_EQUALS( iLiveSession->iDefaultBrightness + KTestBrightnessStepSize,
- iLiveSession->CurrentBrightnessL() )
-
- // ... but only to maximum
-
- iLiveSession->SetBrightnessL( KTestMaxBrightness );
-
- iLiveSession->IncreaseBrightnessL();
+ EUNIT_ASSERT_EQUALS( TInt( iLiveSession->iCameraHandler.iCameraUsage ),
+ TInt( MusSettingsKeys::EUseOnlySecondaryCamera ) );
- EUNIT_ASSERT_EQUALS( KTestMaxBrightness,
- iLiveSession->CurrentBrightnessL() )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_DecreaseBrightnessLL()
- {
- // Check that decreasing brightness is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->DecreaseBrightnessL(),
- KErrNotReady )
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- camera->iCameraInfo.iOptionsSupported =
- camera->iCameraInfo.iOptionsSupported | TCameraInfo::EBrightnessSupported;
-
- // Check that originally current and default brightness are the same
- EUNIT_ASSERT_EQUALS( iLiveSession->iDefaultBrightness,
- iLiveSession->CurrentBrightnessL() )
-
- // Check that brightness can be decreased...
- iLiveSession->DecreaseBrightnessL();
-
- EUNIT_ASSERT_EQUALS( iLiveSession->iDefaultBrightness - KTestBrightnessStepSize,
- iLiveSession->CurrentBrightnessL() )
-
- // ... but only to minimum
-
- iLiveSession->SetBrightnessL( KTestMinBrightness );
-
- iLiveSession->DecreaseBrightnessL();
-
- EUNIT_ASSERT_EQUALS( KTestMinBrightness,
- iLiveSession->CurrentBrightnessL() )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_BrightnessDefaultLL()
- {
- // Check that setting default brightness is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->BrightnessDefaultL(),
- KErrNotReady )
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- camera->iCameraInfo.iOptionsSupported =
- camera->iCameraInfo.iOptionsSupported | TCameraInfo::EBrightnessSupported;
-
- // Check that originally current and default brightness are the same
- EUNIT_ASSERT_EQUALS( iLiveSession->iDefaultBrightness,
- iLiveSession->CurrentBrightnessL() )
-
- // set brightness to max
- iLiveSession->SetBrightnessL( KTestMaxBrightness );
- EUNIT_ASSERT_NOT_EQUALS( iLiveSession->iDefaultBrightness,
- iLiveSession->CurrentBrightnessL() )
-
- // set brightness to default and check it
- iLiveSession->BrightnessDefaultL();
-
- EUNIT_ASSERT_EQUALS( iLiveSession->iDefaultBrightness,
- iLiveSession->CurrentBrightnessL() )
- }
+ delete iLiveSession;
+ iLiveSession = NULL;
+ CRepository::SetStubGlobal( MusSettingsKeys::KCameraUsage,
+ MusSettingsKeys::EUseOnlyMainCamera );
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_BrightnessAutoLL()
- {
- // Check that setting brightness to auto is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->BrightnessAutoL(),
- KErrNotReady );
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- camera->iCameraInfo.iOptionsSupported =
- camera->iCameraInfo.iOptionsSupported | TCameraInfo::EBrightnessSupported;
-
- // Check that originally brightness is not auto
- EUNIT_ASSERT_NOT_EQUALS( CCamera::EBrightnessAuto,
- iLiveSession->CurrentBrightnessL() )
-
- // check that brightness is set to auto
- iLiveSession->BrightnessAutoL();
- EUNIT_ASSERT_EQUALS( CCamera::EBrightnessAuto,
- iLiveSession->CurrentBrightnessL() )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_RecordL_and_IsRecordingLL()
- {
- // Check that recording is not possible before invite
- EUNIT_ASSERT_SPECIFIC_LEAVE( iRecordedLiveSession->RecordL( ETrue ),
- KErrNotReady )
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
- ESTABLISH_OUT_SESSION( iRecordedLiveSession );
-
- // Check that recording is off by default
- EUNIT_ASSERT( !iRecordedLiveSession->IsRecording() );
-
- // Check that recording can be set on
- iRecordedLiveSession->RecordL( ETrue );
- EUNIT_ASSERT( iRecordedLiveSession->IsRecording() );
-
- // Check that recording cannot be set on if recording stream does not exist
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->RecordL( ETrue ),
- KErrNotReady )
-
- // Check that setting on the recording twice does not harm
- iRecordedLiveSession->RecordL( ETrue );
- EUNIT_ASSERT( iRecordedLiveSession->IsRecording() );
-
- // Check that recording can be set off again
- iRecordedLiveSession->RecordL( EFalse );
- EUNIT_ASSERT( !iRecordedLiveSession->IsRecording() );
-
- // Check that setting off the recording twice does not harm
- iRecordedLiveSession->RecordL( EFalse );
- EUNIT_ASSERT( !iRecordedLiveSession->IsRecording() );
- }
+ iLiveSession = CMusEngLiveSession::NewL();
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_PlayLL()
- {
- // Check that resuming is not possible before invite
- TRAPD( error, iLiveSession->PlayL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- iLiveSession->PauseL();
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- iLiveSession->PlayL();
-
- EUNIT_ASSERT( camera->IsEnabled() );
-
- // Try to enable camera again, request should be ignored
-
- iLiveSession->PlayL();
-
- EUNIT_ASSERT( camera->IsEnabled() );
-
+ EUNIT_ASSERT_EQUALS( TInt( iLiveSession->iCameraHandler.iCameraUsage ),
+ TInt( MusSettingsKeys::EUseOnlyMainCamera ) );
}
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_PauseLL()
- {
- // Check that pausing is not possible before invite
- TRAPD( error, iLiveSession->PauseL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- iLiveSession->PlayL();
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- iLiveSession->PauseL();
-
- EUNIT_ASSERT( !camera->IsEnabled() );
-
- // Try to disable camera again, request should be ignored
-
- iLiveSession->PauseL();
-
- EUNIT_ASSERT( !camera->IsEnabled() );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_IsPlayingLL()
- {
- // Try without a session
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->IsPlayingL(), KErrNotReady );
-
- // Normal cases
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- iLiveSession->PlayL();
- EUNIT_ASSERT( iLiveSession->IsPlayingL() )
-
- iLiveSession->PauseL();
- EUNIT_ASSERT( !iLiveSession->IsPlayingL() )
- }
-
// -----------------------------------------------------------------------------
//
@@ -779,9 +199,8 @@
//
void UT_CMusEngLiveSession::UT_CompleteSessionStructureLL()
{
-
CMceStreamBundle* localBundle =
- CMceStreamBundle::NewLC( CMceStreamBundle::ELS );
+ CMceStreamBundle::NewLC( CMceStreamBundle::ELS );
// Check that structure cannot be completed before creating the session
TRAPD( error, iLiveSession->CompleteSessionStructureL( *localBundle ) );
@@ -806,7 +225,6 @@
EUNIT_ASSERT( iLiveSession->iSession->Streams()[0]->Source() );
EUNIT_ASSERT( iLiveSession->iSession->Streams()[0]->Source()->Type() ==
KMceCameraSource );
- EUNIT_ASSERT( !iLiveSession->IsPlayingL() )
EUNIT_ASSERT( iLiveSession->iSession->Streams()[0]->Sinks().Count() == 1 );
EUNIT_ASSERT( iLiveSession->iSession->Streams()[0]->Sinks()[0]->Type() ==
KMceRTPSink );
@@ -844,46 +262,28 @@
EUNIT_ASSERT( file )
- CleanupStack::PopAndDestroy( localBundle );
-
- }
-
+
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_HandleSessionStateChangedL()
- {
- // Make Repository empty, config keys must be written
- CRepository::SetStubAvcConfigKeysL( KNullDesC8() );
+ EUNIT_ASSERT( iLiveSession->iCameraHandler.iCurrentCamera ==
+ TMusEngCameraHandler::EBackCamera );
- // Invite
- iLiveSession->InviteL( KTestRecipientSipUri );
- iLiveSession->iSession->iState = CMceSession::EEstablished;
+ delete iLiveSession->iSession;
+ iLiveSession->iSession = NULL;
- // Force failure on CenRep
- CRepository::iForceFailWithCode = KErrNoMemory;
-
- // Simulate session state transition notification
- iLiveSession->HandleSessionStateChanged(
- *iLiveSession->iSession,
- 200, KNullDesC8() );
-
- EUNIT_ASSERT( iObserver->iSessionFailedCalled );
+ iLiveSession->iSession = CMceOutSession::NewL(
+ *(iLiveSession->iManager),
+ *profile,
+ KTestRecipientSipUri8() );
- // Normal case, something will be written to CenRep
- iRecordedLiveSession->InviteL( KTestRecipientSipUri );
- iRecordedLiveSession->iSession->iState = CMceSession::EEstablished;
- iRecordedLiveSession->HandleSessionStateChanged(
- *iRecordedLiveSession->iSession,
- 200, KNullDesC8() );
+ iLiveSession->iCameraHandler.iCameraUsage = MusSettingsKeys::EUseOnlySecondaryCamera;
+ iLiveSession->CompleteSessionStructureL( *localBundle );
- HBufC8* info = MultimediaSharingSettings::EncoderConfigInfoLC();
- EUNIT_ASSERT_NOT_EQUALS( *info, KMusAvcBitrateLevel_1b_ConfigKey() )
- CleanupStack::PopAndDestroy( info );
+ EUNIT_ASSERT( iLiveSession->iCameraHandler.iCurrentCamera ==
+ TMusEngCameraHandler::EFrontCamera );
+
+
+ CleanupStack::PopAndDestroy( localBundle );
}
-
// -----------------------------------------------------------------------------
//
@@ -898,10 +298,10 @@
CMceVideoCodec* codecAvc = CMceAvcCodec::NewLC( KMceSDPNameH264() );
CMceVideoCodec* codecUnknown = CMceH263Codec::NewLC( KNullDesC8() );
- iLiveSession->AdjustVideoCodecL( *codecH263 );
- iLiveSession->AdjustVideoCodecL( *codecH2632000 );
- iLiveSession->AdjustVideoCodecL( *codecAvc );
- iLiveSession->AdjustVideoCodecL( *codecUnknown );
+ iLiveSession->AdjustVideoCodecL( *codecH263, KMceCameraSource );
+ iLiveSession->AdjustVideoCodecL( *codecH2632000, KMceCameraSource );
+ iLiveSession->AdjustVideoCodecL( *codecAvc, KMceCameraSource );
+ iLiveSession->AdjustVideoCodecL( *codecUnknown, KMceCameraSource );
// Test that bit rates has been set to H263 & AVC codecs
EUNIT_ASSERT( codecH263->iAllowedBitrates == KMceAllowedH263BitrateAll )
@@ -936,10 +336,8 @@
CleanupStack::PopAndDestroy( codecAvc );
CleanupStack::PopAndDestroy( codecH2632000 );
CleanupStack::PopAndDestroy( codecH263 );
-
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -958,7 +356,6 @@
CleanupStack::PopAndDestroy( codec );
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -984,16 +381,16 @@
EUNIT_ASSERT_EQUALS( stream->Codecs().Count(), 3 )
// Check that AVC codecs are removed if they are known to be not supported
- iLiveSession->SetSupportedVideoCodecListL( _L( "SomethingThatIsNotAVC" ) );
+ delete iLiveSession->iVideoCodecList;
+ iLiveSession->iVideoCodecList = NULL;
+ iLiveSession->iVideoCodecList = _L8("SomethingThatIsNotAVC").AllocL();
iLiveSession->DoCodecSelectionL( *stream );
EUNIT_ASSERT_EQUALS( stream->Codecs().Count(), 2 )
EUNIT_ASSERT( stream->Codecs()[0]->SdpName() != KMceSDPNameH264() )
EUNIT_ASSERT( stream->Codecs()[1]->SdpName() != KMceSDPNameH264() )
CleanupStack::PopAndDestroy( stream );
-
}
-
// -----------------------------------------------------------------------------
// Although all states are not meaningfull for LiveSession, all states are
@@ -1009,7 +406,7 @@
CleanupStack::PopAndDestroy( videoStream );
// Simulate sending invite
- iLiveSession->InviteL( KTestRecipientSipUri() );
+ iLiveSession->EstablishLcSessionL();
// Try all the stream states
CMceMediaStream* changedStream = iLiveSession->iSession->Streams()[0];
@@ -1018,59 +415,58 @@
changedStream->iState = CMceMediaStream::EUninitialized;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EInitialized, stream is initialized
changedStream->iState = CMceMediaStream::EInitialized;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EBuffering, stream is buffering
changedStream->iState = CMceMediaStream::EBuffering;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EIdle, stream is not receiving RTP
changedStream->iState = CMceMediaStream::EIdle;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->iStreamIdleCalled );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EStreaming, stream is streaming
changedStream->iState = CMceMediaStream::EStreaming;
- static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
- *changedStream );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled );
- iObserver->Reset();
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged( *changedStream );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
// EDisabled, stream is explicitly disabled
changedStream->iState = CMceMediaStream::EDisabled;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ENoResources, stream has no needed resources to stream
changedStream->iState = CMceMediaStream::ENoResources;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ETranscodingRequired, stream requires non-realtime transcoding
changedStream->iState = CMceMediaStream::ETranscodingRequired;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ETranscoding, stream is transcoding in non-realtime
changedStream->iState = CMceMediaStream::ETranscoding;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
}
-
// -----------------------------------------------------------------------------
// Although all states are not meaningfull for LiveSession, all states are
// tested in order to force the updating of unit tests when behavior is changed
@@ -1087,7 +483,7 @@
CleanupStack::PopAndDestroy( videoStream );
// Simulate sending invite
- iLiveSession->InviteL( KTestRecipientSipUri() );
+ iLiveSession->EstablishLcSessionL();
// Try all the stream states
CMceMediaStream* changedStream = iLiveSession->iSession->Streams()[0];
@@ -1097,59 +493,59 @@
changedStream->iState = CMceMediaStream::EUninitialized;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EInitialized, stream is initialized
changedStream->iState = CMceMediaStream::EInitialized;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream, *changedSource );;
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EBuffering, stream is buffering
changedStream->iState = CMceMediaStream::EBuffering;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EIdle, stream is not receiving RTP
changedStream->iState = CMceMediaStream::EIdle;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->iStreamIdleCalled );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EStreaming, stream is streaming
changedStream->iState = CMceMediaStream::EStreaming;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
// EDisabled, stream is explicitly disabled
changedStream->iState = CMceMediaStream::EDisabled;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ENoResources, stream has no needed resources to stream
changedStream->iState = CMceMediaStream::ENoResources;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ETranscodingRequired, stream requires non-realtime transcoding
changedStream->iState = CMceMediaStream::ETranscodingRequired;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ETranscoding, stream is transcoding in non-realtime
changedStream->iState = CMceMediaStream::ETranscoding;
static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
*changedStream, *changedSource );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
}
-
// -----------------------------------------------------------------------------
// Although all states are not meaningfull for LiveSession, all states are
// tested in order to force the updating of unit tests when behavior is changed
@@ -1167,7 +563,9 @@
// Try with session
ESTABLISH_OUT_SESSION( iRecordedLiveSession )
- iRecordedLiveSession->RecordL( ETrue );
+ MLcDestinationFileControl* destinationFileControl =
+ iRecordedLiveSession->LocalVideoPlayer()->LcDestinationFileControl();
+ destinationFileControl->LcRecordL( ETrue );
// Test state CMceMediaStream::ENoResources
@@ -1176,8 +574,9 @@
iLiveSession->StreamStateChanged(
*iLiveSession->iSession->Streams()[0],
*iLiveSession->iSession->Streams()[0]->Sinks()[0] );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled )
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
// Try again with recording stream, but indicate change in another stream,
// nothing happens
@@ -1212,8 +611,11 @@
iRecordedLiveSession->StreamStateChanged( *recordingStream,
*recordingStream->Sinks()[0] );
- EUNIT_ASSERT( iObserver->iDiskFullCalled )
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::EDiskFull ) )
+ iLcSessionObserver->Reset();
// Test default stream state change behavior
@@ -1224,33 +626,34 @@
// EUninitialized, stream is created, unexpected change, nothing happens
changedStream->iState = CMceMediaStream::EUninitialized;
iLiveSession->StreamStateChanged( *changedStream, *changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EInitialized, stream is initialized
changedStream->iState = CMceMediaStream::EInitialized;
iLiveSession->StreamStateChanged( *changedStream, *changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EBuffering, stream is buffering
changedStream->iState = CMceMediaStream::EBuffering;
iLiveSession->StreamStateChanged( *changedStream, *changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EIdle, stream is not receiving RTP
changedStream->iState = CMceMediaStream::EIdle;
iLiveSession->StreamStateChanged( *changedStream, *changedSink );
- EUNIT_ASSERT( iObserver->iStreamIdleCalled );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// EStreaming, stream is streaming
changedStream->iState = CMceMediaStream::EStreaming;
iLiveSession->StreamStateChanged( *changedStream, *changedSink );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
// EDisabled, stream is explicitly disabled
changedStream->iState = CMceMediaStream::EDisabled;
iLiveSession->StreamStateChanged( *changedStream, *changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// ENoResources, stream has no needed resources to stream
// This state has non-default meaning, tested before defaults
@@ -1258,12 +661,12 @@
// ETranscodingRequired, stream requires non-realtime transcoding
changedStream->iState = CMceMediaStream::ETranscodingRequired;
iLiveSession->StreamStateChanged( *changedStream, *changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// ETranscoding, stream is transcoding in non-realtime
changedStream->iState = CMceMediaStream::ETranscoding;
iLiveSession->StreamStateChanged( *changedStream, *changedSink );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
}
@@ -1272,252 +675,24 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngLiveSession::UT_SetEncodingDeviceLL()
- {
- CMceAvcCodec* codec = CMceAvcCodec::NewLC( KMceSDPNameH264() );
-
- // Generic error in CenRep, leave expected
- CRepository::iForceFailWithCode = KErrNotReady;
- EUNIT_ASSERT_LEAVE( iLiveSession->SetEncodingDeviceL( *codec ) )
- EUNIT_ASSERT_EQUALS( codec->iEncodingDecodingDevice, TUid::Uid( 0 ) )
-
- // No entry in CenRep, default value expected
- CRepository::iForceFailWithCode = KErrNotFound;
- const TUid KDefaultEncodingDevice( TUid::Uid( 0x20001C13 ) );
- iLiveSession->SetEncodingDeviceL( *codec );
- EUNIT_ASSERT_EQUALS( codec->iEncodingDecodingDevice,
- KDefaultEncodingDevice )
-
- // Entry in CenRep
- const TInt KSomeEncodingDevice( 0x20001C15 );
- CRepository::iStaticEncoderUid = KSomeEncodingDevice;
- iLiveSession->SetEncodingDeviceL( *codec );
- EUNIT_ASSERT_EQUALS( codec->iEncodingDecodingDevice,
- TUid::Uid( KSomeEncodingDevice ) )
-
- CleanupStack::PopAndDestroy( codec );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_SetCodecConfigKeyLL()
+void UT_CMusEngLiveSession::UT_EstablishLcSessionL()
{
- CMceAvcCodec* codec = CMceAvcCodec::NewLC( KMceSDPNameH264() );
- codec->SetAllowedBitrates( KMceAvcBitrateLevel1b );
-
- // Generic error in CenRep, leave expected
- CRepository::iForceFailWithCode = KErrNotReady;
- EUNIT_ASSERT_LEAVE( iLiveSession->SetCodecConfigKeyL( *codec ) );
- EUNIT_ASSERT( !codec->iConfigKey )
- EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
- CRepository::iForceFailWithCode = KErrNone;
-
- // No entry in CenRep, nothing happens
- iLiveSession->SetCodecConfigKeyL( *codec );
- EUNIT_ASSERT( !codec->iConfigKey )
- EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
-
- // Empty entry in CenRep
- CRepository::SetStubAvcConfigKeysL( KNullDesC8() );
- iLiveSession->SetCodecConfigKeyL( *codec );
- EUNIT_ASSERT( !codec->iConfigKey )
- EUNIT_ASSERT( iLiveSession->iStoreEncoderConfigInfo )
- iLiveSession->iStoreEncoderConfigInfo = EFalse; // emulate original situation
-
- // Entry in CenRep
- CRepository::SetStubAvcConfigKeysL( KMusAvcBitrateLevel_1b_ConfigKey );
- iLiveSession->SetCodecConfigKeyL( *codec );
- EUNIT_ASSERT( codec->iConfigKey )
- HBufC8* key = codec->ConfigKeyL();
- CleanupStack::PushL( key );
- EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1bTestText() )
- CleanupStack::PopAndDestroy( key );
- EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
-
- CleanupStack::PopAndDestroy( codec );
+ iLiveSession->EstablishLcSessionL();
+ EUNIT_ASSERT_EQUALS( TInt( CMceSession::EOffering ),
+ TInt( iLiveSession->iSession->iState ) )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngLiveSession::UT_ReadCodecConfigKeyLL()
+void UT_CMusEngLiveSession::UT_LocalVideoPlayerL()
{
- HBufC8* key( NULL );
-
- // Try with H263, leave expected
- CMceVideoCodec* codecH263 = CMceH263Codec::NewLC( KMceSDPNameH263() );
- EUNIT_ASSERT_LEAVE( key = iLiveSession->ReadCodecConfigKeyL( *codecH263 ) )
- CleanupStack::PopAndDestroy( codecH263 );
-
- // Try without an entry in CenRep, leave expected
- CMceVideoCodec* codec = CMceAvcCodec::NewLC( KMceSDPNameH264() );
- codec->SetAllowedBitrates( 0 | KMceAvcBitrateLevel1 );
- EUNIT_ASSERT_LEAVE( key = iLiveSession->ReadCodecConfigKeyL( *codec ) )
-
- // Create CenRep entry which does not include wanted bitrate, NULL value
- // expected
- CRepository::SetStubAvcConfigKeysL( KMusAvcBitrateLevel1bTestText() );
- key = iLiveSession->ReadCodecConfigKeyL( *codec );
- EUNIT_ASSERT( !key )
-
- // Create entry with all AVC keys and try with all the values
- CRepository::SetStubAvcConfigKeysL( KMusAvcAllLevelsConcatenation() );
-
- // KMceAvcBitrateLevel1
- key = iLiveSession->ReadCodecConfigKeyL( *codec );
- EUNIT_ASSERT( key );
- CleanupStack::PushL( key );
- EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1TestText );
- CleanupStack::PopAndDestroy( key );
-
- // KMceAvcBitrateLevel1b
- codec->SetAllowedBitrates( KMceAvcBitrateLevel1b );
- key = iLiveSession->ReadCodecConfigKeyL( *codec );
- EUNIT_ASSERT( key );
- CleanupStack::PushL( key );
- EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1bTestText );
- CleanupStack::PopAndDestroy( key );
-
- // KMceAvcBitrateLevel1_1
- codec->SetAllowedBitrates( KMceAvcBitrateLevel1_1 );
- key = iLiveSession->ReadCodecConfigKeyL( *codec );
- EUNIT_ASSERT( key );
- CleanupStack::PushL( key );
- EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1_1TestText );
- CleanupStack::PopAndDestroy( key );
-
- // KMceAvcBitrateLevel1_2
- codec->SetAllowedBitrates( KMceAvcBitrateLevel1_2 );
- key = iLiveSession->ReadCodecConfigKeyL( *codec );
- EUNIT_ASSERT( key );
- CleanupStack::PushL( key );
- EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1_2TestText );
- CleanupStack::PopAndDestroy( key );
-
- // KMceAvcBitrateLevel1_3
- codec->SetAllowedBitrates( KMceAvcBitrateLevel1_3 );
- key = iLiveSession->ReadCodecConfigKeyL( *codec );
- EUNIT_ASSERT( key );
- CleanupStack::PushL( key );
- EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1_3TestText );
- CleanupStack::PopAndDestroy( key );
-
- // KMceAvcBitrateLevel2
- codec->SetAllowedBitrates( KMceAvcBitrateLevel2 );
- key = iLiveSession->ReadCodecConfigKeyL( *codec );
- EUNIT_ASSERT( key );
- CleanupStack::PushL( key );
- EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel2TestText );
- CleanupStack::PopAndDestroy( key );
-
- CleanupStack::PopAndDestroy( codec );
-
+ EUNIT_ASSERT( iLiveSession->LocalVideoPlayer() ==
+ iLiveSession->iLiveVideoPlayer )
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_StoreEncoderConfigInfoLL()
- {
- CRepository::iStaticWriteAvcKeysToStaticData = ETrue;
-
- // Try with clean CenRep
- MultimediaSharingSettings::SetEncoderConfigInfoL( KNullDesC8() );
-
- ESTABLISH_OUT_SESSION( iLiveSession ) // calls StoreEncoderConfigInfoL
- // If StoreEncoderConfigInfoL leaves with KErrNoMemory,
- // MMusEngSessionObserver::SessionFailed will be called.
- __ASSERT_ALWAYS( !iObserver->iSessionFailedCalled,
- User::Leave( KErrNoMemory ) );
-
- HBufC8* keys = MultimediaSharingSettings::EncoderConfigInfoLC();
- EUNIT_ASSERT_EQUALS( *keys, KMusAvcBitrateLevel_1b_ConfigKey() )
- CleanupStack::PopAndDestroy( keys );
-
- // Try without a clean CenRep
- MultimediaSharingSettings::SetEncoderConfigInfoL(
- KMusAvcBitrateLevel_1_1_ConfigKey() );
-
- ESTABLISH_OUT_SESSION( iRecordedLiveSession )
- // If StoreEncoderConfigInfoL leaves with KErrNoMemory,
- // MMusEngSessionObserver::SessionFailed will be called.
- __ASSERT_ALWAYS( !iObserver->iSessionFailedCalled,
- User::Leave( KErrNoMemory ) );
-
- keys = MultimediaSharingSettings::EncoderConfigInfoLC();
- EUNIT_ASSERT_EQUALS( *keys,
- KMusAvcBitrateLevels_1_1_And_1b_ConfigKeys() )
- CleanupStack::PopAndDestroy( keys );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngLiveSession::UT_InitializeZoomStepSizeL()
- {
- //Check that zooming steps have defualt values before session establishment
- iLiveSession->InitializeZoomStepSize();
- EUNIT_ASSERT( iLiveSession->iSmallZoomStep == KZoomStepMinSize );
- EUNIT_ASSERT( iLiveSession->iBigZoomStep == KZoomStepMinSize );
-
- // simulate session establishment
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
-
- //Check that zooming step sizes have default value KZoomStepMinSize
- //in case of zooming values range is smaller than KZoomBigStepCount
- iLiveSession->iCameraInfo.iMinZoom = 0;
- iLiveSession->iCameraInfo.iMaxZoom = 0;
- iLiveSession->iCameraInfo.iMaxDigitalZoom = KZoomBigStepCount / 2;
- iLiveSession->InitializeZoomStepSize();
- EUNIT_ASSERT( iLiveSession->iSmallZoomStep == KZoomStepMinSize );
- EUNIT_ASSERT( iLiveSession->iBigZoomStep == KZoomStepMinSize );
-
-
- //Check that zooming step sizes have default value KZoomStepMinSize
- //in case of zooming values range is bigger than KZoomBigStepCount,
- //but smaller than 2*KZoomBigStepCount (KZoomSmallStepCount)
- iLiveSession->iCameraInfo.iMaxDigitalZoom = 2*KZoomBigStepCount - 1;
- iLiveSession->InitializeZoomStepSize();
- EUNIT_ASSERT( iLiveSession->iSmallZoomStep == KZoomStepMinSize );
- EUNIT_ASSERT( iLiveSession->iBigZoomStep == KZoomStepMinSize );
-
-
- //Check zooming steps sizes in case of zooming values range is
- //bigger than 2*KZoomBigStepCount and smaller than 2*KZoomSmallStepCount
- iLiveSession->iCameraInfo.iMinZoom = - KZoomBigStepCount;
- iLiveSession->iCameraInfo.iMaxZoom = KZoomBigStepCount;
- iLiveSession->iCameraInfo.iMaxDigitalZoom = KZoomBigStepCount;
- //zooming range is (-KZoomBigStepCount, 2*KZoomBigStepCount)
- iLiveSession->InitializeZoomStepSize();
- EUNIT_ASSERT( iLiveSession->iSmallZoomStep == KZoomStepMinSize );
- EUNIT_ASSERT( iLiveSession->iBigZoomStep == 3 );
-
-
- //Check zooming steps sizes in case of zooming values range is
- //bigger than 2*KZoomSmallStepCount
- iLiveSession->iCameraInfo.iMaxZoom = KZoomSmallStepCount;
- iLiveSession->iCameraInfo.iMaxDigitalZoom = KZoomSmallStepCount;
- iLiveSession->iCameraInfo.iMinZoom = - KZoomSmallStepCount;
- //zooming range is (-KZoomSmallStepCount, 2*KZoomSmallStepCount)
- iLiveSession->InitializeZoomStepSize();
- EUNIT_ASSERT( iLiveSession->iSmallZoomStep == 3 );
- EUNIT_ASSERT( iLiveSession->iBigZoomStep == 6 );
- }
-
-
// TEST TABLE
-
EUNIT_BEGIN_TEST_TABLE(
UT_CMusEngLiveSession,
"UT_CMusEngLiveSesssion",
@@ -1531,125 +706,6 @@
SetupL, UT_NewLL, Teardown)
EUNIT_TEST(
- "CurrentZoomL - test ",
- "CMusEngLiveSession",
- "CurrentZoomL",
- "FUNCTIONALITY",
- SetupL, UT_CurrentZoomLL, Teardown)
-
-EUNIT_TEST(
- "MaxZoomL - test ",
- "CMusEngLiveSession",
- "MaxZoomL",
- "FUNCTIONALITY",
- SetupL, UT_MaxZoomLL, Teardown)
-
-EUNIT_TEST(
- "ZoomInL - test ",
- "CMusEngLiveSession",
- "ZoomInL",
- "FUNCTIONALITY",
- SetupL, UT_ZoomInLL, Teardown)
-
-EUNIT_TEST(
- "ZoomOutL - test ",
- "CMusEngLiveSession",
- "ZoomOutL",
- "FUNCTIONALITY",
- SetupL, UT_ZoomOutLL, Teardown)
-
-EUNIT_TEST(
- "ZoomDefaultL - test ",
- "CMusEngLiveSession",
- "ZoomDefaultL",
- "FUNCTIONALITY",
- SetupL, UT_ZoomDefaultLL, Teardown)
-
-EUNIT_TEST(
- "SetBrightnessL - test ",
- "CMusEngLiveSession",
- "SetBrightnessL",
- "FUNCTIONALITY",
- SetupL, UT_SetBrightnessLL, Teardown)
-
-EUNIT_TEST(
- "CurrentBrightnessL - test ",
- "CMusEngLiveSession",
- "CurrentBrightnessL",
- "FUNCTIONALITY",
- SetupL, UT_CurrentBrightnessLL, Teardown)
-
-EUNIT_TEST(
- "MaxBrightnessL - test ",
- "CMusEngLiveSession",
- "MaxBrightnessL",
- "FUNCTIONALITY",
- SetupL, UT_MaxBrightnessLL, Teardown)
-
-EUNIT_TEST(
- "MinBrightnessL - test ",
- "CMusEngLiveSession",
- "MinBrightnessL",
- "FUNCTIONALITY",
- SetupL, UT_MinBrightnessLL, Teardown)
-
-EUNIT_TEST(
- "IncreaseBrightnessL - test ",
- "CMusEngLiveSession",
- "IncreaseBrightnessL",
- "FUNCTIONALITY",
- SetupL, UT_IncreaseBrightnessLL, Teardown)
-
-EUNIT_TEST(
- "DecreaseBrightnessL - test ",
- "CMusEngLiveSession",
- "DecreaseBrightnessL",
- "FUNCTIONALITY",
- SetupL, UT_DecreaseBrightnessLL, Teardown)
-
-EUNIT_TEST(
- "BrightnessDefaultL - test ",
- "CMusEngLiveSession",
- "BrightnessDefaultL",
- "FUNCTIONALITY",
- SetupL, UT_BrightnessDefaultLL, Teardown)
-
-EUNIT_TEST(
- "BrightnessAutoL - test ",
- "CMusEngLiveSession",
- "BrightnessAutoL",
- "FUNCTIONALITY",
- SetupL, UT_BrightnessAutoLL, Teardown)
-
-EUNIT_TEST(
- "RecordL_and_IsRecordingL - test ",
- "CMusEngLiveSession",
- "RecordL_and_IsRecordingL",
- "FUNCTIONALITY",
- SetupL, UT_RecordL_and_IsRecordingLL, Teardown)
-
-EUNIT_TEST(
- "PlayL - test ",
- "CMusEngLiveSession",
- "PlayL",
- "FUNCTIONALITY",
- SetupL, UT_PlayLL, Teardown)
-
-EUNIT_TEST(
- "PauseL - test ",
- "CMusEngLiveSession",
- "PauseL",
- "FUNCTIONALITY",
- SetupL, UT_PauseLL, Teardown)
-
-EUNIT_TEST(
- "IsPlayingL - test ",
- "CMusEngLiveSession",
- "IsPlayingL",
- "FUNCTIONALITY",
- SetupL, UT_IsPlayingLL, Teardown)
-
-EUNIT_TEST(
"CompleteSessionStructureL - test ",
"CMusEngLiveSession",
"CompleteSessionStructureL",
@@ -1657,13 +713,6 @@
SetupL, UT_CompleteSessionStructureLL, Teardown)
EUNIT_TEST(
- "HandleSessionStateChanged - test ",
- "CMusEngLiveSession",
- "HandleSessionStateChanged",
- "FUNCTIONALITY",
- SetupL, UT_HandleSessionStateChangedL, Teardown)
-
-EUNIT_TEST(
"AdjustVideoCodecL - test ",
"CMusEngLiveSession",
"AdjustVideoCodecL",
@@ -1703,44 +752,22 @@
"CMusEngLiveSession",
"StreamStateChangedL( sink )",
"FUNCTIONALITY",
- SetupL, UT_StreamStateChangedWithSinkL, Teardown)
-
-EUNIT_TEST(
- "SetEncodingDeviceL - test ",
- "CMusEngLiveSession",
- "SetEncodingDeviceL",
- "FUNCTIONALITY",
- SetupL, UT_SetEncodingDeviceLL, Teardown)
-
-EUNIT_TEST(
- "SetCodecConfigKeyL - test ",
- "CMusEngLiveSession",
- "SetCodecConfigKeyL",
- "FUNCTIONALITY",
- SetupL, UT_SetCodecConfigKeyLL, Teardown)
+ SetupL, UT_StreamStateChangedWithSinkL, Teardown)
EUNIT_TEST(
- "ReadCodecConfigKeyL - test ",
+ "EstablishLcSessionL - test ",
"CMusEngLiveSession",
- "ReadCodecConfigKeyL",
+ "EstablishLcSessionL",
"FUNCTIONALITY",
- SetupL, UT_ReadCodecConfigKeyLL, Teardown)
-
-EUNIT_TEST(
- "StoreEncoderConfigInfoL - test ",
- "CMusEngLiveSession",
- "StoreEncoderConfigInfoL",
- "FUNCTIONALITY",
- SetupL, UT_StoreEncoderConfigInfoLL, Teardown)
+ SetupL, UT_EstablishLcSessionL, Teardown)
EUNIT_TEST(
- "InitializeZoomStepSize - test ",
+ "LocalVideoPlayer - test ",
"CMusEngLiveSession",
- "InitializeZoomStepSize",
+ "LocalVideoPlayer",
"FUNCTIONALITY",
- SetupL, UT_InitializeZoomStepSizeL, Teardown)
-
-
+ SetupL, UT_LocalVideoPlayerL, Teardown)
+
EUNIT_END_TEST_TABLE
// END OF FILE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenglivevideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,490 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// INTERNAL INCLUDES
+#include "ut_musenglivevideoplayer.h"
+#include "musenglivevideoplayer.h"
+#include "musengtestdefs.h"
+
+// SYSTEM INCLUDES
+#include <eunitmacros.h>
+#include <mceoutsession.h>
+#include <mcevideostream.h>
+#include <mcertpsink.h>
+#include <mcecamerasource.h>
+#include <mcefilesink.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngLiveVideoPlayer* UT_CMusEngLiveVideoPlayer::NewL()
+ {
+ UT_CMusEngLiveVideoPlayer* self = UT_CMusEngLiveVideoPlayer::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngLiveVideoPlayer* UT_CMusEngLiveVideoPlayer::NewLC()
+ {
+ UT_CMusEngLiveVideoPlayer* self = new( ELeave ) UT_CMusEngLiveVideoPlayer();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngLiveVideoPlayer::~UT_CMusEngLiveVideoPlayer()
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngLiveVideoPlayer::UT_CMusEngLiveVideoPlayer()
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::SetupL()
+ {
+ iMceSession = CMceOutSession::NewL();
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ CMceRtpSink* rtpsink = CMceRtpSink::NewLC();
+ videoStream->AddSinkL( rtpsink );
+ CleanupStack::Pop( rtpsink );
+ CMceCameraSource* camera = CMceCameraSource::NewLC();
+ iCameraHandler.InitializeL( *camera );
+ videoStream->SetSourceL( camera );
+ CleanupStack::Pop( camera );
+ iMceSession->AddStreamL( videoStream );
+ CleanupStack::Pop( videoStream );
+
+ iCameraHandler.SetSession( iMceSession );
+ iLiveVideoPlayer =
+ CMusEngLiveVideoPlayer::NewL(
+ iDisplayHandlerStub,
+ iCameraHandler,
+ iLcAudioControlStub );
+ iLiveVideoPlayer->SetMceSession( iMceSession );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::Teardown()
+ {
+ delete iLiveVideoPlayer;
+ delete iMceSession;
+ iLcAudioControlStub.Reset();
+ }
+
+
+
+// TEST CASES
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_NewLL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcVideoPlayerStateL()
+ {
+ // iMceSession not set
+ iLiveVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+ iLiveVideoPlayer->SetMceSession( iMceSession );
+
+ // Establish Session and simulate media playing.
+ iMceSession->iState = CMceSession::EEstablished;
+ for ( TInt i = 0; i < iMceSession->Streams().Count(); i++ )
+ {
+ iMceSession->Streams()[i]->iState = CMceMediaStream::EStreaming;
+ }
+
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPlaying ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+
+ // Media streams unavailable
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EUninitialized;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+
+ // All other stream states
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EInitialized;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EInit ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EBuffering;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EBuffering ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EIdle;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPaused ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EDisabled;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPaused ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EStreaming;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPlaying ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::ENoResources;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::ETranscodingRequired;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::ETranscoding;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iLiveVideoPlayer->LcVideoPlayerState() ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcPlayL()
+ {
+ // Play
+ iLiveVideoPlayer->LcPlayL();
+ EUNIT_ASSERT( iLiveVideoPlayer->LcIsPlayingL() );
+
+ // Pause
+ iLiveVideoPlayer->LcPauseL();
+ EUNIT_ASSERT( !iLiveVideoPlayer->LcIsPlayingL() );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcWindowL()
+ {
+ EUNIT_ASSERT( iLiveVideoPlayer->LcWindow() == iLiveVideoPlayer )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcCameraControlL()
+ {
+ EUNIT_ASSERT( iLiveVideoPlayer->LcCameraControl() == &iCameraHandler )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcSourceFileControlL()
+ {
+ EUNIT_ASSERT( iLiveVideoPlayer->LcSourceFileControl() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcDestinationFileControlL()
+ {
+ EUNIT_ASSERT(
+ iLiveVideoPlayer->LcDestinationFileControl() == iLiveVideoPlayer )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcAudioControlL()
+ {
+ EUNIT_ASSERT( iLiveVideoPlayer->LcAudioControl() == &iLcAudioControlStub )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcZoomControlL()
+ {
+ EUNIT_ASSERT( iLiveVideoPlayer->LcZoomControl() == &iCameraHandler )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcBrightnessControlL()
+ {
+ EUNIT_ASSERT( iLiveVideoPlayer->LcBrightnessControl() == &iCameraHandler )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_EnableLcWindowL()
+ {
+ EUNIT_ASSERT( !iLiveVideoPlayer->IsLcWindowEnabled() )
+
+ // Enable
+ iLiveVideoPlayer->EnableLcWindowL( ETrue );
+ EUNIT_ASSERT( iLiveVideoPlayer->IsLcWindowEnabled() )
+
+ // Disable
+ iLiveVideoPlayer->EnableLcWindowL( EFalse );
+ EUNIT_ASSERT( !iLiveVideoPlayer->IsLcWindowEnabled() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcWindowRectL()
+ {
+ TRect rect( 12, 34, 56, 78 );
+ iLiveVideoPlayer->SetLcWindowRectL( rect );
+ EUNIT_ASSERT( iLiveVideoPlayer->LcWindowRect() == rect )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcWindowOrientationL()
+ {
+ iLiveVideoPlayer->SetLcWindowOrientationL( MLcWindow::EPortrait );
+ EUNIT_ASSERT_EQUALS( TInt( MLcWindow::EPortrait ),
+ TInt( iLiveVideoPlayer->LcWindowOrientationL() ) )
+
+ iLiveVideoPlayer->SetLcWindowOrientationL( MLcWindow::ELandscape );
+ EUNIT_ASSERT_EQUALS( TInt( MLcWindow::ELandscape ),
+ TInt( iLiveVideoPlayer->LcWindowOrientationL() ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_SetLcFileNameL()
+ {
+ EUNIT_ASSERT_EQUALS( KNullDesC(), iLiveVideoPlayer->LcFileName() )
+
+ _LIT( KFileName, "my_clip.format");
+ TFileName fileName( KFileName );
+ iLiveVideoPlayer->SetLcFileNameL( fileName );
+ EUNIT_ASSERT_EQUALS( fileName, iLiveVideoPlayer->LcFileName() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngLiveVideoPlayer::UT_LcRecordL()
+ {
+ // No MCE session
+ iLiveVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iLiveVideoPlayer->LcRecordL( ETrue ), KErrNotReady )
+
+ // No file sink in the session
+ iLiveVideoPlayer->SetMceSession( iMceSession );
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iLiveVideoPlayer->LcRecordL( ETrue ), KErrNotReady )
+
+ // Record, not yet recording
+ EUNIT_ASSERT( !iLiveVideoPlayer->LcIsRecording() )
+ CMceVideoStream* streamForRecording = CMceVideoStream::NewLC();
+ CMceFileSink* fileSink = CMceFileSink::NewLC( KTestVideoFileName() );
+ fileSink->DisableL();
+ streamForRecording->AddSinkL( fileSink );
+ CleanupStack::Pop( fileSink );
+ iMceSession->AddStreamL( streamForRecording );
+ CleanupStack::Pop( streamForRecording );
+ iLiveVideoPlayer->LcRecordL( ETrue );
+ EUNIT_ASSERT( iLiveVideoPlayer->LcIsRecording() )
+
+ // Record, already recording
+ iLiveVideoPlayer->LcRecordL( ETrue );
+ EUNIT_ASSERT( iLiveVideoPlayer->LcIsRecording() )
+
+ // Stop recording
+ iLiveVideoPlayer->LcRecordL( EFalse );
+ EUNIT_ASSERT( !iLiveVideoPlayer->LcIsRecording() )
+
+ // Stop recording, not anymore recording
+ iLiveVideoPlayer->LcRecordL( EFalse );
+ EUNIT_ASSERT( !iLiveVideoPlayer->LcIsRecording() )
+ }
+
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusEngLiveVideoPlayer,
+ "UT_CMusEngLiveVideoPlayer",
+ "UNIT" )
+
+EUNIT_TEST(
+ "NewL - test ",
+ "CMusEngLiveVideoPlayer",
+ "NewL",
+ "FUNCTIONALITY",
+ SetupL, UT_NewLL, Teardown)
+
+EUNIT_TEST(
+ "LcVideoPlayerState - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcVideoPlayerState",
+ "FUNCTIONALITY",
+ SetupL, UT_LcVideoPlayerStateL, Teardown)
+
+EUNIT_TEST(
+ "LcPlayL - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcPlayL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcPlayL, Teardown)
+
+EUNIT_TEST(
+ "LcWindow - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcWindow",
+ "FUNCTIONALITY",
+ SetupL, UT_LcWindowL, Teardown)
+
+EUNIT_TEST(
+ "LcCameraControl - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcCameraControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcCameraControlL, Teardown)
+
+EUNIT_TEST(
+ "LcSourceFileControl - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcSourceFileControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcSourceFileControlL, Teardown)
+
+EUNIT_TEST(
+ "LcDestinationFileControl - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcDestinationFileControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcDestinationFileControlL, Teardown)
+
+EUNIT_TEST(
+ "LcAudioControl - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcAudioControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcAudioControlL, Teardown)
+
+EUNIT_TEST(
+ "LcZoomControl - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcZoomControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcZoomControlL, Teardown)
+
+EUNIT_TEST(
+ "LcBrightnessControl - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcBrightnessControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcBrightnessControlL, Teardown)
+
+EUNIT_TEST(
+ "EnableLcWindowL - test ",
+ "CMusEngLiveVideoPlayer",
+ "EnableLcWindowL",
+ "FUNCTIONALITY",
+ SetupL, UT_EnableLcWindowL, Teardown)
+
+EUNIT_TEST(
+ "LcWindowRect - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcWindowRect",
+ "FUNCTIONALITY",
+ SetupL, UT_LcWindowRectL, Teardown)
+
+EUNIT_TEST(
+ "LcWindowOrientation - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcWindowOrientation",
+ "FUNCTIONALITY",
+ SetupL, UT_LcWindowOrientationL, Teardown)
+
+EUNIT_TEST(
+ "SetLcFileNameL - test ",
+ "CMusEngLiveVideoPlayer",
+ "SetLcFileNameL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetLcFileNameL, Teardown)
+
+EUNIT_TEST(
+ "LcRecordL - test ",
+ "CMusEngLiveVideoPlayer",
+ "LcRecordL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcRecordL, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE
+
+
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengmcesession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengmcesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -28,9 +28,12 @@
#include "musengsessiondurationtimer.h"
#include "musengtelephoneutils.h"
#include "musengmceutils.h"
+#include "mussessionproperties.h"
+#include "contactenginestub.h"
+#include "musenglivevideoplayer.h"
// SYSTEM INCLUDES
-
+#include <lcsourcefilecontrol.h>
#include <digia/eunit/eunitmacros.h>
#include <mceinsession.h>
#include <mcevideostream.h>
@@ -42,9 +45,37 @@
#include <mcevideocodec.h>
#include <mceaudiocodec.h>
#include <audiopreference.h>
+#include <mceavccodec.h>
#include <mceh263codec.h>
-#include <mceavccodec.h>
+#include <mcecamerasource.h>
+#include <mcefilesource.h>
+#include <telmicmutestatuspskeys.h>
+
+// CONSTANTS
+
+_LIT8( KMusAvcBitrateLevel1TestText, "TestTextForAvcBrL1Level" );
+_LIT8( KMusAvcBitrateLevel1bTestText, "TestTextForAvcBrL1bLevel" );
+_LIT8( KMusAvcBitrateLevel1_1TestText, "TestTextForAvcBrL1_1Level" );
+_LIT8( KMusAvcBitrateLevel1_2TestText, "TestTextForAvcBrL1_2Level" );
+_LIT8( KMusAvcBitrateLevel1_3TestText, "TestTextForAvcBrL1_3Level" );
+_LIT8( KMusAvcBitrateLevel2TestText, "TestTextForAvcBrL2Level" );
+
+_LIT8( KMusAvcBitrateLevel_1b_ConfigKey, "AvcBrL1b=TestTextForAvcBrL1bLevel;" );
+_LIT8( KMusAvcBitrateLevel_1_1_ConfigKey,
+"AvcBrL1_1=TestTextForAvcBrL1_1Level;");
+
+_LIT8( KMusAvcBitrateLevels_1_1_And_1b_ConfigKeys,
+"AvcBrL1_1=TestTextForAvcBrL1_1Level;\
+AvcBrL1b=TestTextForAvcBrL1bLevel;" );
+
+_LIT8( KMusAvcAllLevelsConcatenation,
+"AvcBrL1=TestTextForAvcBrL1Level;\
+AvcBrL1b=TestTextForAvcBrL1bLevel;\
+AvcBrL1_1=TestTextForAvcBrL1_1Level;\
+AvcBrL1_2=TestTextForAvcBrL1_2Level;\
+AvcBrL1_3=TestTextForAvcBrL1_3Level;\
+AvcBrL2=TestTextForAvcBrL2Level;" );
// -----------------------------------------------------------------------------
@@ -110,34 +141,37 @@
//
void UT_CMusEngMceSession::SetupL( )
{
- iObserver = new( ELeave ) CMusEngObserverStub;
- iLiveSession = CMusEngLiveSession::NewL( KNullDesC,
- TRect(0,0, 100,100),
- *iObserver,
- *iObserver,
- *iObserver );
+ iLcSessionObserver = new( ELeave )CLcSessionObserverStub;
+ iLcUiProvider = new( ELeave )CLcUiProviderStub;
+
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KRemoteSipAddress,
+ KTestRecipientSipUri ) );
+
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
- iSomeOtherSession = CMusEngLiveSession::NewL( KNullDesC,
- TRect(0,0, 100,100),
- *iObserver,
- *iObserver,
- *iObserver );
- ESTABLISH_OUT_SESSION( iSomeOtherSession );
+ iSomeOtherSession = CMusEngLiveSession::NewL();
+ iSomeOtherSession->SetLcSessionObserver( iLcSessionObserver );
+ iSomeOtherSession->SetLcUiProvider( iLcUiProvider );
- iClipSession = CMusEngClipSession::NewL( TRect(0,0, 100,100),
- *iObserver,
- *iObserver,
- *iObserver );
- iClipSession->SetClipL( KTestVideoFileName() );
+ ESTABLISH_OUT_SESSION( iSomeOtherSession );
+
+ iClipSession = CMusEngClipSession::NewL();
+ iClipSession->SetLcSessionObserver( iLcSessionObserver );
+ iClipSession->SetLcUiProvider( iLcUiProvider );
+ MLcSourceFileControl* sourceFileControl =
+ iClipSession->LocalVideoPlayer()->LcSourceFileControl();
+ sourceFileControl->SetLcFileNameL( KTestAvcVideoFileName() );
- TBuf<50> videoCodec;
- videoCodec.Copy( KMceSDPNameH264() );
- iClipSession->SetSupportedVideoCodecListL(videoCodec);
+ delete iClipSession->iVideoCodecList;
+ iClipSession->iVideoCodecList = NULL;
+ iClipSession->iVideoCodecList = KMceSDPNameH264().AllocL();
// Construct and establish an incoming session
- iReceiveSession = CMusEngReceiveSession::NewL( TRect(0,0, 100,100),
- *iObserver,
- *iObserver );
+ iReceiveSession = CMusEngReceiveSession::NewL();
+ iReceiveSession->SetLcSessionObserver( iLcSessionObserver );
CMceInSession* inSession = CMceInSession::NewL( *iReceiveSession->iManager,
KTestOriginator() );
@@ -153,12 +187,11 @@
inSession,
&iContainer );
iReceiveSession->iSession->iState = CMceSession::EProceeding;
- iReceiveSession->AcceptInvitationL( ETrue );
-
- iObserver->Reset();
+ iReceiveSession->EstablishLcSessionL();
+
+ iLcSessionObserver->Reset();
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -168,47 +201,282 @@
delete iLiveSession;
delete iClipSession;
delete iReceiveSession;
- delete iObserver;
+ delete iLcSessionObserver;
+ delete iLcUiProvider;
delete iSomeOtherSession;
-
+ PropertyHelper::Close();
+ // Delete static data from CenRep stub
+ CRepository::iStaticWriteAvcKeysToStaticData = EFalse;
+ CRepository::DeleteStubAvcConfigKeys();
+ CRepository::ResetStubGlobal();
+ CRepository::iForceFailWithCode = KErrNone;
}
// TEST CASES
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_LcSessionStateL()
+ {
+ // No MCE session -> MLcSession::EUninitialized
+ EUNIT_ASSERT_EQUALS( MLcSession::EUninitialized,
+ iLiveSession->LcSessionState() )
+
+ // MLcSession::EOpen
+ ESTABLISH_OUT_SESSION( iLiveSession )
+ EUNIT_ASSERT_EQUALS( TInt( CMceSession::EEstablished ),
+ TInt( iLiveSession->iSession->iState ) )
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EOpen ),
+ TInt( iLiveSession->LcSessionState() ) )
+
+ // MLcSession::EInitialized
+ iLiveSession->iSession->iState = CMceSession::EIdle;
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EInitialized ),
+ TInt( iLiveSession->LcSessionState() ) )
+
+ // MLcSession::EReceived
+ iLiveSession->iSession->iState = CMceSession::EIncoming;
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EReceived ),
+ TInt( iLiveSession->LcSessionState() ) )
+
+ iLiveSession->iSession->iState = CMceSession::EProceeding;
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EReceived ),
+ TInt( iLiveSession->LcSessionState() ) )
+
+ iLiveSession->iSession->iState = CMceSession::EReserving;
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EReceived ),
+ TInt( iLiveSession->LcSessionState() ) )
+
+ // MLcSession::EOpening
+ iLiveSession->iSession->iState = CMceSession::EOffering;
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EOpening ),
+ TInt( iLiveSession->LcSessionState() ) )
+
+ iLiveSession->iSession->iState = CMceSession::EAnswering;
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EOpening ),
+ TInt( iLiveSession->LcSessionState() ) )
+
+ // MLcSession::EClosing
+ iLiveSession->iSession->iState = CMceSession::ECancelling;
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EClosing ),
+ TInt( iLiveSession->LcSessionState() ) )
+
+ iLiveSession->iSession->iState = CMceSession::ETerminating;
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EClosing ),
+ TInt( iLiveSession->LcSessionState() ) )
+
+ // MLcSession::EClosed
+ iLiveSession->iSession->iState = CMceSession::ETerminated;
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EClosed ),
+ TInt( iLiveSession->LcSessionState() ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_RemoteVideoPlayerL()
+ {
+ EUNIT_ASSERT( iLiveSession->CMusEngMceSession::RemoteVideoPlayer() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_LocalVideoPlayerL()
+ {
+ EUNIT_ASSERT( iLiveSession->CMusEngMceSession::LocalVideoPlayer() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_LocalDisplayNameL()
+ {
+ EUNIT_ASSERT_EQUALS( KNullDesC(), iLiveSession->LocalDisplayName() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_RemoteDisplayNameL()
+ {
+ // Clear the thread common storage to ensrue its not polluted.
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ KNullDesC) );
+
+ EUNIT_ASSERT_EQUALS( KNullDesC(), iLiveSession->RemoteDisplayName() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_RemoteDetailsL()
+ {
+ // Clear the thread common storage to ensrue its not polluted.
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KTelNumber,
+ KNullDesC) );
+
+ EUNIT_ASSERT_EQUALS( KNullDesC(), iLiveSession->RemoteDetails() )
+
+ _LIT( KMusTestDetails, "1222233499" );
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KTelNumber,
+ KMusTestDetails) );
+ EUNIT_ASSERT_EQUALS( KMusTestDetails(), iLiveSession->RemoteDetails() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SetParameterL()
+ {
+ const TInt dummy( 0 );
+ EUNIT_ASSERT_EQUALS( KErrNotSupported,
+ iLiveSession->SetParameter( dummy, dummy ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_ParameterValueL()
+ {
+ const TInt dummy( 0 );
+ EUNIT_ASSERT_EQUALS( KErrNotSupported,
+ iLiveSession->ParameterValue( dummy ) )
+ }
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_TerminateLL()
+void UT_CMusEngMceSession::UT_IsLcAudioMutedL()
{
- TRAPD( error, iLiveSession->TerminateL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
+ // No MCE session
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->IsLcAudioMutedL(), KErrNotReady )
+
+ ESTABLISH_OUT_SESSION( iLiveSession )
+
+ // No audio
+ EUNIT_ASSERT( iLiveSession->IsLcAudioMutedL() )
+
+ // Contains audio, but explicitly muted
+ CMceAudioStream* audioStream = CMceAudioStream::NewLC();
+ iLiveSession->iSession->AddStreamL( audioStream );
+ CleanupStack::Pop( audioStream );
+ iLiveSession->iExplicitlyMuted = ETrue;
+ EUNIT_ASSERT( iLiveSession->IsLcAudioMutedL() )
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- EUNIT_ASSERT( iLiveSession->iSession->iState == CMceSession::EEstablished );
+ // Contains audio, not muted
+ iLiveSession->iExplicitlyMuted = EFalse;
+ EUNIT_ASSERT( !iLiveSession->IsLcAudioMutedL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_MuteLcAudioL()
+ {
+ // No MCE session
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->IsLcAudioMutedL(), KErrNotReady )
- iLiveSession->TerminateL();
+ ESTABLISH_OUT_SESSION( iLiveSession )
- EUNIT_ASSERT( iLiveSession->iSession->iState == CMceSession::ETerminating );
+ // Mute
+ iLiveSession->MuteLcAudioL( ETrue );
+ EUNIT_ASSERT( iLiveSession->iExplicitlyMuted )
+ EUNIT_ASSERT( iLiveSession->IsLcAudioMutedL() )
+ // Unmute
+ iLiveSession->MuteLcAudioL( EFalse );
+ EUNIT_ASSERT( !iLiveSession->iExplicitlyMuted )
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_MuteLcMicL()
+ {
+ // Mute
+ iLiveSession->MuteLcMicL( ETrue );
+ User::LeaveIfError( RProperty::Set( KPSUidTelMicrophoneMuteStatus,
+ KTelMicrophoneMuteState,
+ EPSTelMicMuteOn ) );
+ EUNIT_ASSERT( iLiveSession->IsLcMicMutedL() )
+
+ // Unmute
+ iLiveSession->MuteLcMicL( EFalse );
+ User::LeaveIfError( RProperty::Set( KPSUidTelMicrophoneMuteStatus,
+ KTelMicrophoneMuteState,
+ EPSTelMicMuteOff ) );
+ EUNIT_ASSERT( !iLiveSession->IsLcMicMutedL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_EnableLcLoudspeakerL()
+ {
+ // Check that enabling the loudspeaker is allowed
+ EUNIT_ASSERT( iLiveSession->IsEnablingLcLoudspeakerAllowed() )
+
+ // Disable
+ iLiveSession->EnableLcLoudspeakerL( EFalse );
+ EUNIT_ASSERT( !iLiveSession->IsLcLoudspeakerEnabled() )
+
+ // Enable
+ iLiveSession->EnableLcLoudspeakerL( ETrue );
+ EUNIT_ASSERT( iLiveSession->IsLcLoudspeakerEnabled() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SetLcVolumeL()
+ {
+ ESTABLISH_OUT_SESSION( iLiveSession )
+
+ // Set volume
+ const TInt volume( 5 );
+ iLiveSession->SetLcVolumeL( volume );
+ EUNIT_ASSERT_EQUALS( volume, iLiveSession->LcVolumeL() );
+
+ // Increase volume
+ iLiveSession->IncreaseLcVolumeL();
+ EUNIT_ASSERT_EQUALS( volume+1, iLiveSession->LcVolumeL() );
+
+ // Decrease volume
+ iLiveSession->DecreaseLcVolumeL();
+ EUNIT_ASSERT_EQUALS( volume, iLiveSession->LcVolumeL() );
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_GetSessionTimeL()
+void UT_CMusEngMceSession::UT_GetSessionTimeL()
{
EUNIT_ASSERT( iLiveSession->GetSessionTime() < TTimeIntervalSeconds( 0 ) );
// Invite
- iLiveSession->InviteL( KTestRecipientSipUri );
+ iLiveSession->EstablishLcSessionL();
EUNIT_ASSERT( iLiveSession->GetSessionTime() < TTimeIntervalSeconds( 0 ) );
@@ -219,546 +487,68 @@
TTimeIntervalSeconds sessionTime = iLiveSession->GetSessionTime();
EUNIT_ASSERT( sessionTime >= TTimeIntervalSeconds( 0 ) );
}
-
-void UT_CMusEngMceSession::UT_CMusEngMceSession_IsDisplayEnabledLL()
- {
- TRAPD( error, iLiveSession->IsDisplayEnabledL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- //Enable
- CMceDisplaySink* display =
- MusEngMceUtils::GetDisplayL( *(iLiveSession->iSession) );
- display->iIsEnabled = ETrue;
- EUNIT_ASSERT( iLiveSession->IsDisplayEnabledL() );
-
- //Disable
- display->iIsEnabled = EFalse;
- EUNIT_ASSERT( !iLiveSession->IsDisplayEnabledL() );
-
- // Display is reported as disabled when session state is terminated or idle
- iLiveSession->iSession->iState = CMceSession::ETerminated;
- display->iIsEnabled = ETrue;
- EUNIT_ASSERT( !iLiveSession->IsDisplayEnabledL() );
- iLiveSession->iSession->iState = CMceSession::EIdle;
- EUNIT_ASSERT( !iLiveSession->IsDisplayEnabledL() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_ConnectionActiveL()
- {
- EUNIT_ASSERT( !iLiveSession->ConnectionActive() );
-
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- EUNIT_ASSERT( iLiveSession->ConnectionActive() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_ContainsAudioLL()
- {
- // Try without session, fails
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->ContainsAudioL(), KErrNotReady )
-
- // Establish session without audio
- ESTABLISH_OUT_SESSION( iLiveSession )
-
- EUNIT_ASSERT( !iLiveSession->ContainsAudioL() )
-
- // Establish session with audio
- ESTABLISH_OUT_SESSION( iClipSession )
-
- EUNIT_ASSERT( iClipSession->ContainsAudioL() )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_IsMutedLL()
- {
- // Try without session, fails
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->IsMutedL(), KErrNotReady )
-
- // Establish session without audio
- ESTABLISH_OUT_SESSION( iLiveSession )
-
- EUNIT_ASSERT( iLiveSession->IsMutedL() )
-
- // Establish session with audio
- ESTABLISH_OUT_SESSION( iClipSession )
-
- EUNIT_ASSERT( !iClipSession->IsMutedL() ) // Not muted although disabled
-
- iClipSession->EnableDisplayL( ETrue ); // Enabled also speaker
-
- EUNIT_ASSERT( !iClipSession->IsMutedL() ) // Enabled and not muted
-
- iClipSession->MuteL();
-
- EUNIT_ASSERT( iClipSession->IsMutedL() ) // Explicitly muted
-
- iClipSession->UnmuteL();
-
- EUNIT_ASSERT( !iClipSession->IsMutedL() ) // Explicitly unmuted
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_OrientationLL()
- {
- // Try without session, fails
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->OrientationL(), KErrNotReady )
-
- // Establish a session and try all the MCE rotation values
- ESTABLISH_OUT_SESSION( iLiveSession )
-
- CMceDisplaySink* display =
- MusEngMceUtils::GetDisplayL( *iLiveSession->iSession );
-
- display->iRotation = CMceDisplaySink::ENone;
- EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
- CMusEngMceSession::EPortrait )
-
- display->iRotation = CMceDisplaySink::EClockwise90Degree;
- EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
- CMusEngMceSession::ELandscape )
-
- display->iRotation = CMceDisplaySink::EClockwise180Degree;
- EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
- CMusEngMceSession::ELandscape )
-
- display->iRotation = CMceDisplaySink::EClockwise270Degree;
- EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
- CMusEngMceSession::ELandscape )
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_SetOrientationLL()
- {
- // Try without session, fails
- EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->SetOrientationL(
- CMusEngMceSession::EPortrait ),
- KErrNotReady )
-
- // Establish a session
- ESTABLISH_OUT_SESSION( iLiveSession )
-
- CMceDisplaySink* display =
- MusEngMceUtils::GetDisplayL( *iLiveSession->iSession );
-
- // Check the initial state
- display->iRotation = CMceDisplaySink::ENone;
- EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
- CMusEngMceSession::EPortrait )
-
- // Successfully change orientation
-
- iLiveSession->SetOrientationL( CMusEngMceSession::ELandscape );
- EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
- CMusEngMceSession::ELandscape )
-
- iLiveSession->SetOrientationL( CMusEngMceSession::EPortrait );
- EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
- CMusEngMceSession::EPortrait )
-
- }
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_VolumeUpLL()
- {
- // Try without session, fails
- TRAPD( error, iLiveSession->VolumeUpL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- // Test only usage of CMceSpeaker, phone part is tested in base class
-
- // Check that nothing crashes without any speakers
- iReceiveSession->VolumeUpL();
-
- // Establish session
- ESTABLISH_OUT_SESSION( iClipSession )
-
- TInt initialVolume = iClipSession->VolumeL();
-
- iClipSession->VolumeUpL();
-
- // Check that all speaker volumes are adjusted and store one speaker pointer
-
- CMceSpeakerSink* speaker = NULL;
-
- CMceSession* session = iClipSession->iSession;
-
- for ( TInt i = 0; i < session->Streams().Count(); ++i )
- {
- for ( TInt j = 0; j < session->Streams()[i]->Sinks().Count(); ++j )
- {
- if ( session->Streams()[i]->Sinks()[j]->Type() == KMceSpeakerSink )
- {
- speaker = static_cast<CMceSpeakerSink*>(
- session->Streams()[i]->Sinks()[j] );
- EUNIT_ASSERT( speaker->VolumeL() == initialVolume + 1 );
- }
- }
- }
-
- while ( iClipSession->VolumeL() < speaker->MaxVolumeL() )
- {
- iClipSession->VolumeUpL();
- }
-
- iClipSession->VolumeUpL(); // Does not do anything to volume
-
- EUNIT_ASSERT( iClipSession->VolumeL() == speaker->MaxVolumeL() );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_VolumeDownLL()
- {
- // Try without session, fails
- TRAPD( error, iLiveSession->VolumeDownL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- // Test only usage of CMceSpeaker, phone part is tested in base class
-
- // Check that nothing crashes without any speakers
- iReceiveSession->VolumeUpL();
-
- // Establish session
- ESTABLISH_OUT_SESSION( iClipSession )
-
- TInt initialVolume = iClipSession->VolumeL();
-
- iClipSession->VolumeDownL();
-
- // Check that all speaker volumes are adjusted and store one speaker pointer
-
- CMceSpeakerSink* speaker = NULL;
-
- CMceSession* session = iClipSession->iSession;
-
- for ( TInt i = 0; i < session->Streams().Count(); ++i )
- {
- for ( TInt j = 0; j < session->Streams()[i]->Sinks().Count(); ++j )
- {
- if ( session->Streams()[i]->Sinks()[j]->Type() == KMceSpeakerSink )
- {
- speaker = static_cast<CMceSpeakerSink*>(
- session->Streams()[i]->Sinks()[j] );
- EUNIT_ASSERT( speaker->VolumeL() == initialVolume - 1 );
- }
- }
- }
-
- while ( iClipSession->VolumeL() > 0 )
- {
- iClipSession->VolumeDownL();
- }
+void UT_CMusEngMceSession::UT_HandleTerminationL()
+ {
+ // Try different values
+ iLiveSession->CMusEngMceSession::HandleTermination( KSipStatusCodeNoCodeSet,
+ KNullDesC8() );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionStateChanged ) )
+ iLcSessionObserver->Reset();
- iClipSession->VolumeDownL(); // Does not do anything to volume
-
- EUNIT_ASSERT_EQUALS( iClipSession->VolumeL(), 0 );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_SetVolumeLL()
- {
- // Try without session, fails
- TInt newVolume = KTelephonyVolumeDefaultValue + 1;
-
- TRAPD( error, iLiveSession->SetVolumeL( newVolume ) );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- // Test only usage of CMceSpeaker, phone part is tested in base class
-
- // Check that nothing crashes without any speakers
- iReceiveSession->SetVolumeL( newVolume );
-
- // Establish session
- ESTABLISH_OUT_SESSION( iClipSession )
-
- TInt initialVolume = iClipSession->VolumeL();
-
- iClipSession->SetVolumeL( newVolume );
-
- // Check that all speaker volumes are adjusted and store one speaker pointer
-
- CMceSpeakerSink* speaker = NULL;
-
- CMceSession* session = iClipSession->iSession;
-
- for ( TInt i = 0; i < session->Streams().Count(); ++i )
- {
- for ( TInt j = 0; j < session->Streams()[i]->Sinks().Count(); ++j )
- {
- if ( session->Streams()[i]->Sinks()[j]->Type() == KMceSpeakerSink )
- {
- speaker = static_cast<CMceSpeakerSink*>(
- session->Streams()[i]->Sinks()[j] );
- EUNIT_ASSERT( speaker->VolumeL() == newVolume );
- }
- }
- }
+ iLiveSession->CMusEngMceSession::HandleTermination( KSipStatusCode200OK,
+ KNullDesC8() );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionStateChanged ) )
+ iLcSessionObserver->Reset();
- newVolume = speaker->MaxVolumeL() + 1;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == speaker->MaxVolumeL() );
-
- newVolume = -1;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == 0 );
-
- // Test situation where MCE max volume is bigger than MUS max vol
- SetMaxVolForSpeakersL(*session, KMusEngMaxVolume * 10);
- newVolume = 5;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == newVolume );
- EUNIT_ASSERT( speaker->VolumeL() == newVolume * 10 );
- newVolume = 1;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == newVolume );
- EUNIT_ASSERT( speaker->VolumeL() == newVolume * 10 );
- newVolume = KMusEngMaxVolume;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == newVolume );
- EUNIT_ASSERT( speaker->VolumeL() == newVolume * 10 );
-
- SetMaxVolForSpeakersL(*session, KMusEngMaxVolume * 1000);
- newVolume = 7;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == newVolume );
- EUNIT_ASSERT( speaker->VolumeL() == newVolume * 1000 );
- newVolume = 1;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == newVolume );
- EUNIT_ASSERT( speaker->VolumeL() == newVolume * 1000 );
- newVolume = KMusEngMaxVolume;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == newVolume );
- EUNIT_ASSERT( speaker->VolumeL() == newVolume * 1000 );
-
-
- // Test situation where MCE max volume is smaller than MUS max vol
- SetMaxVolForSpeakersL(*session, KMusEngMaxVolume / 2);
- newVolume = 3;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == newVolume );
- EUNIT_ASSERT( speaker->VolumeL() == newVolume / 2 );
- newVolume = 1;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == newVolume );
- EUNIT_ASSERT( speaker->VolumeL() == 1 );
- newVolume = KMusEngMaxVolume;
- iClipSession->SetVolumeL( newVolume );
- EUNIT_ASSERT( iClipSession->VolumeL() == newVolume );
- EUNIT_ASSERT( speaker->VolumeL() == newVolume / 2 );
+ iLiveSession->CMusEngMceSession::HandleTermination( KSipStatusCodeUnknown,
+ KNullDesC8() );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError, KErrGeneral )
+ iLcSessionObserver->Reset();
}
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_EnableDisplayL()
+void UT_CMusEngMceSession::UT_AdjustVideoCodecL()
{
- TRAPD( error, iLiveSession->EnableDisplayL( ETrue ) );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceDisplaySink* display =
- MusEngMceUtils::GetDisplayL( *(iLiveSession->iSession) );
-
- // Disable
- iLiveSession->EnableDisplayL( EFalse );
-
- EUNIT_ASSERT( !display->iIsEnabled );
-
- // Try to disable again, request should be ignored
+ CRepository::SetStubAvcConfigKeysL( KNullDesC8() );
+
+ CMceVideoCodec* codecH263 = CMceH263Codec::NewLC( KMceSDPNameH263() );
+ CMceVideoCodec* codecAvc = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ CMceVideoCodec* codecAvcFromFile = CMceAvcCodec::NewLC( KMceSDPNameH264() );
- iLiveSession->EnableDisplayL( EFalse );
-
- EUNIT_ASSERT( !display->iIsEnabled );
+ iLiveSession->CMusEngMceSession::AdjustVideoCodecL( *codecH263,
+ KMceCameraSource );
+ EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
- // Enable
-
- iLiveSession->EnableDisplayL( ETrue );
+ iLiveSession->CMusEngMceSession::AdjustVideoCodecL( *codecAvcFromFile,
+ KMceFileSource);
+ EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
- EUNIT_ASSERT( display->iIsEnabled );
-
- // Try to enable again, request should be ignored
+ iLiveSession->CMusEngMceSession::AdjustVideoCodecL( *codecAvc,
+ KMceCameraSource );
+ EUNIT_ASSERT( iLiveSession->iStoreEncoderConfigInfo )
- iLiveSession->EnableDisplayL( ETrue );
-
- EUNIT_ASSERT( display->iIsEnabled );
+ CleanupStack::PopAndDestroy( codecAvcFromFile );
+ CleanupStack::PopAndDestroy( codecAvc );
+ CleanupStack::PopAndDestroy( codecH263 );
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_MuteLL()
- {
- TRAPD( error, iClipSession->MuteL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- ESTABLISH_OUT_SESSION_AND_START_STREAMING( iClipSession );
-
- const RPointerArray<CMceMediaStream> streams =
- iClipSession->iSession->Streams();
-
- iClipSession->MuteL();
-
- // Check that all audio speaker sinks are disabled and only those
- for ( TInt i = 0; i < streams.Count(); ++i )
- {
- for ( TInt j = 0; j < streams[i]->Sinks().Count(); ++j )
- {
- CMceMediaSink* sink = streams[i]->Sinks()[j];
- if ( sink->Type() == KMceSpeakerSink &&
- streams[i]->Type() == KMceAudio )
- {
- EUNIT_ASSERT( sink->IsEnabled() == EFalse )
- }
- else
- {
- EUNIT_ASSERT( sink->IsEnabled() == ETrue )
- }
- }
- }
-
- EUNIT_ASSERT( iClipSession->iExplicitlyMuted )
-
- // Try to mute again, request should be ignored without actions or leaving
-
- iClipSession->MuteL();
-
- }
-
-
-// -----------------------------------------------------------------------------
-// Relies on previous test
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_UnmuteLL()
- {
- TRAPD( error, iClipSession->UnmuteL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- ESTABLISH_OUT_SESSION( iClipSession );
-
- const RPointerArray<CMceMediaStream> streams =
- iClipSession->iSession->Streams();
-
- iClipSession->MuteL();
-
- iClipSession->UnmuteL();
-
- // Check that all audio speaker sinks are enabled
-
- for ( TInt i = 0; i < streams.Count(); ++i )
- {
- for ( TInt j = 0; j < streams[i]->Sinks().Count(); ++j )
- {
- if ( streams[i]->Sinks()[j]->Type() == KMceSpeakerSink )
- {
- EUNIT_ASSERT( streams[i]->Sinks()[j]->IsEnabled() == ETrue )
- }
- }
- }
-
- EUNIT_ASSERT( !iClipSession->iExplicitlyMuted )
-
- // Try to unmute again, request should be ignored without actions or leaving
-
- iClipSession->UnmuteL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_HandleTerminationL()
- {
- // Try different values
- iLiveSession->CMusEngMceSession::HandleTermination( KSipStatusCodeNoCodeSet,
- KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionTerminatedCalled );
- iObserver->Reset();
-
- iLiveSession->CMusEngMceSession::HandleTermination( KSipStatusCode200OK,
- KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionTerminatedCalled );
- iObserver->Reset();
-
- iLiveSession->CMusEngMceSession::HandleTermination( KSipStatusCodeUnknown,
- KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionFailedCalled );
- iObserver->Reset();
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_AdjustVideoCodecLL()
- {
- // CMusEngMceSession::AdjustVideoCodecL does nothing, so NULL test is enough
- CMceVideoCodec* codec =
- iLiveSession->iManager->SupportedVideoCodecs()[0]->CloneL();
- CleanupStack::PushL( codec );
- iLiveSession->CMusEngMceSession::AdjustVideoCodecL( *codec );
- CleanupStack::PopAndDestroy( codec );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_AdjustAudioCodecLL()
+void UT_CMusEngMceSession::UT_AdjustAudioCodecL()
{
CMceAudioCodec* codec =
iLiveSession->iManager->SupportedAudioCodecs()[0]->CloneL();
@@ -769,16 +559,14 @@
EUNIT_ASSERT( codec->iMMFPriorityPreference == KAudioPrefSwisPlayback )
CleanupStack::PopAndDestroy( codec );
- }
-
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_RectChangedLL()
+void UT_CMusEngMceSession::UT_RectChangedL()
{
-
// Does nothing before session establishment
iLiveSession->RectChangedL();
@@ -791,9 +579,9 @@
// Display size has been updated
CMceDisplaySink* display =
- MusEngMceUtils::GetDisplayL( *( iLiveSession->iSession ) );
+ MusEngMceUtils::GetDisplayL( *( iLiveSession->iSession ) );
- EUNIT_ASSERT( display->DisplayRectL() == iLiveSession->Rect() );
+ EUNIT_ASSERT( display->DisplayRectL() == iLiveSession->Rect() )
// Terminate session and try again, rect must not be changed
@@ -804,8 +592,307 @@
iLiveSession->SetRectL( newRect );
EUNIT_ASSERT( display->DisplayRectL() != newRect )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SetSessionSdpLinesL()
+ {
+ // set operator variant off
+ iReceiveSession->iOperatorVariant = EFalse;
+ CRepository::SetStubGlobal( MusSettingsKeys::KVideoBandwidth,
+ 128 );
+
+ // 1. There is b=AS line at session level
+ // => Xapplication, b=AS and b=TIAS set to session level
+ CMceInSession* inSession = CMceInSession::NewL( *iReceiveSession->iManager,
+ KTestOriginator );
+ CleanupStack::PushL( inSession );
+ EUNIT_ASSERT( !inSession->iSessionSDPLines );
+ inSession->iSessionSDPLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ inSession->iSessionSDPLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+
+ iReceiveSession->SetSessionSdpLinesL( *inSession, ETrue );
+
+ MDesC8Array* sdpLines = inSession->iSessionSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 3 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineXApplication() );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 1 ).Find(
+ KMusEngSessionSdpLineBandwidthLine() ) == 0 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 2 ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 );
+ // 2. There are b=TIAS sdp line at session
+ // => Xapplication, b=AS and b=TIAS set to session level
+ delete inSession->iSessionSDPLines;
+ inSession->iSessionSDPLines = NULL;
+ inSession->iSessionSDPLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ inSession->iSessionSDPLines->AppendL( KMusEngSessionSdpLineTiasLine() );
+
+ iReceiveSession->SetSessionSdpLinesL( *inSession, ETrue );
+
+ sdpLines = inSession->iSessionSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 3 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineXApplication() );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 1 ).Find(
+ KMusEngSessionSdpLineBandwidthLine() ) == 0 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 2 ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 );
+
+ // 3. Simulating outcoming session, i.e. 2d param aForceBandwidthLine is EFalse
+ // => only Xapplication SDP line is set
+ delete inSession->iSessionSDPLines;
+ inSession->iSessionSDPLines = NULL;
+
+ iReceiveSession->SetSessionSdpLinesL( *inSession, EFalse );
+
+ sdpLines = inSession->iSessionSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 1 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineXApplication() );
+
+ // 4. No KVideoBandwidth entry in CenRep => TIAS usage should be disabled
+ // There is AS and TIAS at session level => AS is taken at session level
+ CRepository::iForceFailWithCode = KErrNotFound;
+ delete inSession->iSessionSDPLines;
+ inSession->iSessionSDPLines = NULL;
+ inSession->iSessionSDPLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ inSession->iSessionSDPLines->AppendL( KMusEngSessionSdpLineTiasLine() );
+ inSession->iSessionSDPLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+
+ iReceiveSession->SetSessionSdpLinesL( *inSession, ETrue );
+
+ sdpLines = inSession->iSessionSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 2 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineXApplication() );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 1 ) == KMusEngSessionSdpLineBandwidthField() );
+
+ CleanupStack::PopAndDestroy( inSession );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SetSessionSdpLines_OperatorL()
+ {
+ // set operator variant
+ iReceiveSession->iOperatorVariant = ETrue;
+
+ // 1. There is b=TIAS sdp line in session => only application and
+ // type lines are set, no bandwidth related attributes
+ CMceInSession* inSession = CMceInSession::NewL( *iReceiveSession->iManager,
+ KTestOriginator );
+ CleanupStack::PushL( inSession );
+
+ EUNIT_ASSERT( !inSession->iSessionSDPLines );
+ inSession->iSessionSDPLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ inSession->iSessionSDPLines->AppendL( KMusEngSessionSdpLineTiasLine() );
+
+ iReceiveSession->SetSessionSdpLinesL( *inSession, ETrue );
+
+ MDesC8Array* sdpLines = inSession->iSessionSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 2 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineApplication() );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 1 ) == KMusEngSessionSdpLineType() );
+
+ // 2. There are b=AS and b=TIAS sdp lines in session => application and
+ // type SDP lines as well as b=AS bandwidth attributes are set
+ delete inSession->iSessionSDPLines;
+ inSession->iSessionSDPLines = NULL;
+ inSession->iSessionSDPLines = new ( ELeave ) CDesC8ArrayFlat( 2 );
+ inSession->iSessionSDPLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ inSession->iSessionSDPLines->AppendL( KMusEngSessionSdpLineTiasLine() );
+
+ iReceiveSession->SetSessionSdpLinesL( *inSession, ETrue );
+
+ sdpLines = inSession->iSessionSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 3 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineApplication() );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 1 ) == KMusEngSessionSdpLineType() );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 2 ) == KMusEngSessionSdpLineBandwidthField() );
+
+
+ // 3. Simulating outcoming session, i.e. 2d param aForceBandwidthLine is EFalse
+ // => only application and type SDP lines are set
+ delete inSession->iSessionSDPLines;
+ inSession->iSessionSDPLines = NULL;
+
+ iReceiveSession->SetSessionSdpLinesL( *inSession, EFalse );
+
+ sdpLines = inSession->iSessionSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 2 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineApplication() );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 1 ) == KMusEngSessionSdpLineType() );
+
+ CleanupStack::PopAndDestroy( inSession );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SetMediaSdpLinesL()
+ {
+ // set operator variant off
+ iReceiveSession->iOperatorVariant = EFalse;
+ CRepository::SetStubGlobal( MusSettingsKeys::KVideoBandwidth,
+ 128 );
+
+ // 1. There is no b=AS, b=TIAS sdp lines at session level
+ // => b=AS and b=TIAS are taken at media level
+ CMceInSession* inSession = CMceInSession::NewL( *iReceiveSession->iManager,
+ KTestOriginator );
+ CleanupStack::PushL( inSession );
+
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ videoStream->SetSourceL( CMceRtpSource::NewLC() );
+ CleanupStack::Pop(); //rtpSource
+ videoStream->AddSinkL( CMceDisplaySink::NewLC( *iReceiveSession->iManager ) );
+ CleanupStack::Pop(); //displaySink
+
+ inSession->AddStreamL( videoStream );
+ CleanupStack::Pop( videoStream );
+
+ iReceiveSession->SetMediaSdpLinesL( *videoStream, ETrue );
+
+ MDesC8Array* sdpLines = inSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 2 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ).Find(
+ KMusEngSessionSdpLineBandwidthLine() ) == 0 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 1 ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 );
+
+
+ // 2. There is b=AS sdp line at session and media level
+ // => b=AS and b=TIAS are taken at media level
+ delete inSession->iSessionSDPLines;
+ inSession->iSessionSDPLines = NULL;
+ inSession->iSessionSDPLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ inSession->iSessionSDPLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+
+ iReceiveSession->SetMediaSdpLinesL( *videoStream, ETrue );
+
+ sdpLines = inSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 2 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ).Find(
+ KMusEngSessionSdpLineBandwidthLine() ) == 0 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 1 ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 );
+
+ // 3. Simulating outcoming session, i.e. 2d param aForceBandwidthLine is EFalse
+ // => no bandwidth attributes at media level
+ delete inSession->iSessionSDPLines;
+ inSession->iSessionSDPLines = NULL;
+
+ delete inSession->Streams()[ 0 ]->iMediaSDPLines;
+ inSession->Streams()[ 0 ]->iMediaSDPLines = NULL;
+
+ iReceiveSession->SetMediaSdpLinesL( *videoStream, EFalse );
+
+ sdpLines = inSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 0 );
+
+ // 4. No KVideoBandwidth entry in CenRep => TIAS usage should be disabled
+ // There is no bandwidth attributes in session => AS is taken at meida level
+ CRepository::iForceFailWithCode = KErrNotFound;
+ delete inSession->iSessionSDPLines;
+ inSession->iSessionSDPLines = NULL;
+
+ iReceiveSession->SetMediaSdpLinesL( *videoStream, ETrue );
+
+ sdpLines = inSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 1 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineBandwidthField() );
+
+ CleanupStack::PopAndDestroy( inSession );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SetMediaSdpLines_OperatorL()
+ {
+ // set operator variant
+ iReceiveSession->iOperatorVariant = ETrue;
+
+ // 1. There is no b=AS sdp line at session level
+ // => b=AS is taken at media level
+ CMceInSession* inSession = CMceInSession::NewL( *iReceiveSession->iManager,
+ KTestOriginator );
+ CleanupStack::PushL( inSession );
+
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ videoStream->SetSourceL( CMceRtpSource::NewLC() );
+ CleanupStack::Pop(); //rtpSource
+ videoStream->AddSinkL( CMceDisplaySink::NewLC( *iReceiveSession->iManager ) );
+ CleanupStack::Pop(); //displaySink
+
+ inSession->AddStreamL( videoStream );
+ CleanupStack::Pop( videoStream );
+
+ EUNIT_ASSERT( !inSession->iSessionSDPLines );
+ inSession->iSessionSDPLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ inSession->iSessionSDPLines->AppendL( KMusEngSessionSdpLineTiasLine() );
+
+ iReceiveSession->SetMediaSdpLinesL( *videoStream, ETrue );
+
+ MDesC8Array* sdpLines = inSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 1 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineBandwidthField() );
+
+
+ // 2. There is b=AS sdp line at session and media level
+ // => b=AS is not taken at media level
+ delete inSession->iSessionSDPLines;
+ inSession->iSessionSDPLines = NULL;
+ inSession->iSessionSDPLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ inSession->iSessionSDPLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+
+ delete inSession->Streams()[ 0 ]->iMediaSDPLines;
+ inSession->Streams()[ 0 ]->iMediaSDPLines = NULL;
+ inSession->Streams()[ 0 ]->iMediaSDPLines =
+ new ( ELeave ) CDesC8ArrayFlat( 1 );
+ inSession->Streams()[ 0 ]->iMediaSDPLines->AppendL(
+ KMusEngSessionSdpLineBandwidthField() );
+
+ iReceiveSession->SetMediaSdpLinesL( *videoStream, ETrue );
+
+ EUNIT_ASSERT( inSession->Streams()[ 0 ]->iMediaSDPLines );
+ EUNIT_ASSERT( inSession->Streams()[ 0 ]->iMediaSDPLines->MdcaCount() == 0 );
+
+
+ // 3. Simulating outcoming session, i.e. 2d param aForceBandwidthLine is EFalse
+ // => b=AS is taken at media level
+ delete inSession->iSessionSDPLines;
+ inSession->iSessionSDPLines = NULL;
+
+ delete inSession->Streams()[ 0 ]->iMediaSDPLines;
+ inSession->Streams()[ 0 ]->iMediaSDPLines = NULL;
+
+ iReceiveSession->SetMediaSdpLinesL( *videoStream, EFalse );
+
+ sdpLines = inSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( sdpLines );
+ EUNIT_ASSERT( sdpLines->MdcaCount() == 1 );
+ EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineBandwidthField() );
+
+ CleanupStack::PopAndDestroy( inSession );
}
@@ -813,120 +900,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_SetSessionSdpLinesLL()
- {
- // set operator variant off
- MultimediaSharingSettings::SetOperatorVariantSettingL(
- MusSettingsKeys::EStandard );
-
- // There is no sdp lines in session, right one is added
-
- CMceInSession* inSession = CMceInSession::NewL( *iReceiveSession->iManager,
- KTestOriginator );
- CleanupStack::PushL( inSession );
-
- iReceiveSession->SetSessionSdpLinesL( *inSession );
-
- MDesC8Array* sdpLines = inSession->SessionSDPLinesL();
- CleanupDeletePushL( sdpLines );
-
- EUNIT_ASSERT( sdpLines );
- EUNIT_ASSERT( sdpLines->MdcaCount() == 1 );
- EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineXApplication() );
-
- CleanupStack::PopAndDestroy(); // sdplines
-
- // There is one line ready, replace it with right one
- CDesC8Array* newSdpLines = new ( ELeave ) CDesC8ArrayFlat( 3 );
- CleanupStack::PushL( newSdpLines );
- newSdpLines->AppendL( KTestRecipientRandomText8() );
- inSession->SetSessionSDPLinesL( newSdpLines );
- CleanupStack::Pop( newSdpLines );
-
- iReceiveSession->SetSessionSdpLinesL( *inSession );
-
- sdpLines = inSession->SessionSDPLinesL();
- CleanupDeletePushL( sdpLines );
-
- EUNIT_ASSERT( sdpLines );
- EUNIT_ASSERT( sdpLines->MdcaCount() == 1 );
- EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineXApplication() );
-
- CleanupStack::PopAndDestroy(); // sdplines
-
-
- CleanupStack::PopAndDestroy( inSession );
-
- // for operator variant testing
- // set operator variant
- iReceiveSession->iOperatorVariant = ETrue;
-
- // There is no sdp lines in session, right ones are added to session and media level
- inSession = CMceInSession::NewL( *iReceiveSession->iManager,
- KTestOriginator );
- CleanupStack::PushL( inSession );
-
- iReceiveSession->SetSessionSdpLinesL( *inSession );
-
- sdpLines = inSession->SessionSDPLinesL();
- CleanupDeletePushL( sdpLines );
-
- EUNIT_ASSERT( sdpLines );
- EUNIT_ASSERT( sdpLines->MdcaCount() == 2 );
- EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineApplication() );
- EUNIT_ASSERT( sdpLines->MdcaPoint( 1 ) == KMusEngSessionSdpLineType() );
-
- CleanupStack::PopAndDestroy(); // sdplines
-
- MDesC8Array* mediaSdpLines =
- iReceiveSession->iSession->Streams()[ 0 ]->MediaAttributeLinesL();
- CleanupDeletePushL( mediaSdpLines );
- TBool bandwidthFoundFromMediaLevel = EFalse;
- for ( TInt i = 0; mediaSdpLines && i < mediaSdpLines->MdcaCount(); i++ )
- {
- if ( mediaSdpLines->MdcaPoint( i ).Compare(
- KMusEngSessionSdpLineBandwidthField() ) == 0 )
- {
- bandwidthFoundFromMediaLevel = ETrue;
- }
- }
- EUNIT_ASSERT( bandwidthFoundFromMediaLevel );
- CleanupStack::PopAndDestroy( mediaSdpLines );
-
- // There is one line ready, replace it with right ones
- newSdpLines = new ( ELeave ) CDesC8ArrayFlat( 3 );
- CleanupStack::PushL( newSdpLines );
- newSdpLines->AppendL( KTestRecipientRandomText8() );
- inSession->SetSessionSDPLinesL( newSdpLines );
- CleanupStack::Pop( newSdpLines );
-
- iReceiveSession->SetSessionSdpLinesL( *inSession );
-
- sdpLines = inSession->SessionSDPLinesL();
- CleanupDeletePushL( sdpLines );
-
- EUNIT_ASSERT( sdpLines );
- EUNIT_ASSERT( sdpLines->MdcaCount() == 2 );
- EUNIT_ASSERT( sdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineApplication() );
- EUNIT_ASSERT( sdpLines->MdcaPoint( 1 ) == KMusEngSessionSdpLineType() );
-
- CleanupStack::PopAndDestroy(); // sdplines
-
-
- CleanupStack::PopAndDestroy( inSession );
-
-
- // set operator variant off
- MultimediaSharingSettings::SetOperatorVariantSettingL(
- MusSettingsKeys::EStandard );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_AdjustStreamsAndCodecsLL()
+void UT_CMusEngMceSession::UT_AdjustStreamsAndCodecsL()
{
// Check that function cannot be called before creating the session
TRAPD( error, iClipSession->AdjustStreamsAndCodecsL() );
@@ -1031,46 +1005,6 @@
EUNIT_ASSERT(
videoStream->Codecs()[ i ]->MaxBitRate() == 128000 );
}
-
- // Test for Configuration based codec removal. Magic uid not set.
- CMceVideoCodec* codecAvc = CMceAvcCodec::NewLC( KMceSDPNameH264() );
- videoStream->AddCodecL( codecAvc );
- CleanupStack::Pop( codecAvc );
- iClipSession->AdjustStreamsAndCodecsL();
- TBool avcCodecFound(EFalse);
- for ( TInt i = 0; i < videoStream->Codecs().Count(); i++ )
- {
- if( !videoStream->Codecs()[ i ]->SdpName().CompareF( KMceSDPNameH264 ) )
- {
- avcCodecFound = ETrue;
- }
- }
- // AVC should present
- EUNIT_ASSERT(avcCodecFound);
-
- // Test for Configuration based codec removal. Magic uid set.
- // Store the real value and revert back later , so that other tests will not be affected.
- TUid uid = MultimediaSharingSettings::EncodingDeviceL();
- TInt32 KMusDisableAVC = 0x0fffffff;
- MultimediaSharingSettings::SetPropertyValueL( MusSettingsKeys::KEncodingDevice,KMusDisableAVC);
- codecAvc = CMceAvcCodec::NewLC( KMceSDPNameH264() );
- videoStream->AddCodecL( codecAvc );
- CleanupStack::Pop( codecAvc );
- codecH2632000 = CMceH263Codec::NewLC( KMceSDPNameH2632000() );
- videoStream->AddCodecL( codecH2632000 );
- CleanupStack::Pop( codecH2632000 );
- iClipSession->AdjustStreamsAndCodecsL();
- for ( TInt i = 0; i < videoStream->Codecs().Count(); i++ )
- {
- // H264 ( AVC ) codec should be removed
- EUNIT_ASSERT(
- videoStream->Codecs()[ i ]->SdpName().CompareF( KMceSDPNameH264 ) );
- }
-
-
- MultimediaSharingSettings::SetPropertyValueL( MusSettingsKeys::KEncodingDevice,uid.iUid);
-
-
}
@@ -1078,7 +1012,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_IncomingSessionL()
+void UT_CMusEngMceSession::UT_IncomingSessionL()
{
// New session should get rejected and deleted in any case, first failure
CMceInSession* inSession = CMceInSession::NewL(
@@ -1100,7 +1034,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_IncomingUpdateL()
+void UT_CMusEngMceSession::UT_IncomingUpdateL()
{
CMceInSession* inSession = CMceInSession::NewL(
*iLiveSession->iManager, KNullDesC8 );
@@ -1138,7 +1072,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_StreamStateChangedL()
+void UT_CMusEngMceSession::UT_StreamStateChangedL()
{
// Try without a session, nothing happens
CMceAudioStream* audioStream = CMceAudioStream::NewLC();
@@ -1146,7 +1080,7 @@
CleanupStack::PopAndDestroy( audioStream );
// Simulate sending invite
- iLiveSession->InviteL( KTestRecipientSipUri() );
+ iLiveSession->EstablishLcSessionL();
// No observer set, so expect nothing to be done, cannot be asserted
CMceMediaStream* changedStream = iLiveSession->iSession->Streams()[0];
@@ -1156,55 +1090,56 @@
// EUninitialized, stream is created, unexpected change, nothing happens
changedStream->iState = CMceMediaStream::EUninitialized;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EInitialized, stream is initialized
changedStream->iState = CMceMediaStream::EInitialized;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EBuffering, stream is buffering
changedStream->iState = CMceMediaStream::EBuffering;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EIdle, stream is not receiving RTP
changedStream->iState = CMceMediaStream::EIdle;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->iStreamIdleCalled );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EStreaming, stream is streaming
changedStream->iState = CMceMediaStream::EStreaming;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
// EStreaming, stream is streaming, other than video out- or instream
changedStream->iState = CMceMediaStream::EStreaming;
iLiveSession->CMusEngMceSession::StreamStateChanged(
*iLiveSession->iSession->Streams()[1] );
- EUNIT_ASSERT( iObserver->IsReseted() );
- iObserver->Reset();
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+ iLcSessionObserver->Reset();
// EDisabled, stream is explicitly disabled
changedStream->iState = CMceMediaStream::EDisabled;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ENoResources, stream has no needed resources to stream
changedStream->iState = CMceMediaStream::ENoResources;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ETranscodingRequired, stream requires non-realtime transcoding
changedStream->iState = CMceMediaStream::ETranscodingRequired;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ETranscoding, stream is transcoding in non-realtime
changedStream->iState = CMceMediaStream::ETranscoding;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
}
@@ -1214,7 +1149,7 @@
// when function is changed
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_StreamStateChangedWithSourceL()
+void UT_CMusEngMceSession::UT_StreamStateChangedWithSourceL()
{
// Try without a session, nothing happens
iLiveSession->CMusEngMceSession::StreamStateChanged(
@@ -1225,7 +1160,7 @@
CleanupStack::PopAndDestroy(); // audiostream
// Simulate sending invite
- iLiveSession->InviteL( KTestRecipientSipUri() );
+ iLiveSession->EstablishLcSessionL();
// Try all the stream states
CMceMediaStream* changedStream = iLiveSession->iSession->Streams()[0];
@@ -1233,48 +1168,49 @@
// EUninitialized, stream is created, unexpected change, nothing happens
changedStream->iState = CMceMediaStream::EUninitialized;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EInitialized, stream is initialized
changedStream->iState = CMceMediaStream::EInitialized;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EBuffering, stream is buffering
changedStream->iState = CMceMediaStream::EBuffering;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EIdle, stream is not receiving RTP
changedStream->iState = CMceMediaStream::EIdle;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->iStreamIdleCalled );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EStreaming, stream is streaming
changedStream->iState = CMceMediaStream::EStreaming;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
// EDisabled, stream is explicitly disabled
changedStream->iState = CMceMediaStream::EDisabled;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ENoResources, stream has no needed resources to stream
changedStream->iState = CMceMediaStream::ENoResources;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ETranscodingRequired, stream requires non-realtime transcoding
changedStream->iState = CMceMediaStream::ETranscodingRequired;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ETranscoding, stream is transcoding in non-realtime
changedStream->iState = CMceMediaStream::ETranscoding;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
}
@@ -1284,7 +1220,7 @@
// when function is changed
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_StreamStateChangedWithSinkL()
+void UT_CMusEngMceSession::UT_StreamStateChangedWithSinkL()
{
// Try without a session, nothing happens
CMceAudioStream* audioStream = CMceAudioStream::NewLC();
@@ -1292,7 +1228,7 @@
CleanupStack::PopAndDestroy( audioStream );
// Simulate sending invite
- iLiveSession->InviteL( KTestRecipientSipUri() );
+ iLiveSession->EstablishLcSessionL();
// Try all the stream states
CMceMediaStream* changedStream = iLiveSession->iSession->Streams()[0];
@@ -1300,48 +1236,49 @@
// EUninitialized, stream is created, unexpected change, nothing happens
changedStream->iState = CMceMediaStream::EUninitialized;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EInitialized, stream is initialized
changedStream->iState = CMceMediaStream::EInitialized;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EBuffering, stream is buffering
changedStream->iState = CMceMediaStream::EBuffering;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EIdle, stream is not receiving RTP
changedStream->iState = CMceMediaStream::EIdle;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->iStreamIdleCalled );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EStreaming, stream is streaming
changedStream->iState = CMceMediaStream::EStreaming;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
// EDisabled, stream is explicitly disabled
changedStream->iState = CMceMediaStream::EDisabled;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ENoResources, stream has no needed resources to stream
changedStream->iState = CMceMediaStream::ENoResources;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ETranscodingRequired, stream requires non-realtime transcoding
changedStream->iState = CMceMediaStream::ETranscodingRequired;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ETranscoding, stream is transcoding in non-realtime
changedStream->iState = CMceMediaStream::ETranscoding;
iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
}
@@ -1350,22 +1287,24 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_SessionStateChangedL()
+void UT_CMusEngMceSession::UT_SessionStateChangedL()
{
// Simulate sending invite
- iLiveSession->InviteL( KTestRecipientSipUri() );
+ iLiveSession->EstablishLcSessionL();
// No container, so expect to be handled as internal error
iLiveSession->SessionStateChanged( *iLiveSession->iSession, NULL );
- EUNIT_ASSERT( iObserver->iSessionFailedCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError, KErrGeneral )
+ iLcSessionObserver->Reset();
// Try to tell session about some other session's state transition
TMceTransactionDataContainer container;
iLiveSession->SessionStateChanged( *iSomeOtherSession->iSession, &container );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// Try all the normal cases:
@@ -1377,8 +1316,10 @@
container.SetReasonPhrase( anyReasonPhrase );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->iSessionFailedCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError, KErrGeneral )
+ iLcSessionObserver->Reset();
container.Clear();
// EOffering
@@ -1386,44 +1327,47 @@
container.SetStatusCode( KSipStatusCodeNoCodeSet );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EIncoming
iLiveSession->iSession->iState = CMceSession::EIncoming;
container.SetStatusCode( KSipStatusCodeNoCodeSet );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->iSessionFailedCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError, KErrGeneral )
+ iLcSessionObserver->Reset();
// EReserving
iLiveSession->iSession->iState = CMceSession::EReserving;
container.SetStatusCode( KSipStatusCodeNoCodeSet );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EAnswering
iLiveSession->iSession->iState = CMceSession::EAnswering;
container.SetStatusCode( KSipStatusCodeNoCodeSet );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EProceeding
iLiveSession->iSession->iState = CMceSession::EProceeding;
container.SetStatusCode( KSipStatusCodeNoCodeSet );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// EEstablished
iLiveSession->iSession->iState = CMceSession::EEstablished;
container.SetStatusCode( KSipStatusCode200OK );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->iSessionEstablishedCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionStateChanged ) )
+ iLcSessionObserver->Reset();
// EEstablished again (meaning expiration of session timer
// and refresment of session )
@@ -1431,38 +1375,136 @@
container.SetStatusCode( KSipStatusCode200OK );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
// ECancelling
iLiveSession->iSession->iState = CMceSession::ECancelling;
container.SetStatusCode( KSipStatusCodeNoCodeSet );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->IsReseted() );
- iObserver->Reset();
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+ iLcSessionObserver->Reset();
// ETerminating
iLiveSession->iSession->iState = CMceSession::ETerminating;
container.SetStatusCode( KSipStatusCodeNoCodeSet );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->IsReseted() );
- iObserver->Reset();
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+ iLcSessionObserver->Reset();
// ETerminated
iLiveSession->iSession->iState = CMceSession::ETerminated;
container.SetStatusCode( KSipStatusCode200OK );
iLiveSession->SessionStateChanged( *iLiveSession->iSession,
&container );
- EUNIT_ASSERT( iObserver->iSessionTerminatedCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionStateChanged ) )
+ iLcSessionObserver->Reset();
// Default case
iLiveSession->iSession->iState = static_cast<CMceSession::TState>( 10 );
container.SetStatusCode( KSipStatusCodeNoCodeSet );
iLiveSession->SessionStateChanged( *iLiveSession->iSession, &container );
- EUNIT_ASSERT( iObserver->IsReseted() );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_HandleSessionStateChanged_EncoderKeyStoringL()
+ {
+ // Make repository empty, config keys must be written
+ CRepository::SetStubAvcConfigKeysL( KNullDesC8() );
+
+ // Invite
+ iLiveSession->EstablishLcSessionL();
+ iLiveSession->iSession->iState = CMceSession::EEstablished;
+
+ // Force failure on CenRep
+ CRepository::iForceFailWithCode = KErrNoMemory;
+
+ // Simulate session state transition notification
+ iLiveSession->HandleSessionStateChanged(
+ *iLiveSession->iSession, 200, KNullDesC8() );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError, KErrNoMemory )
+
+ // Normal case, something will be written to CenRep
+ iClipSession->EstablishLcSessionL();
+ iClipSession->iSession->iState = CMceSession::EEstablished;
+ iClipSession->HandleSessionStateChanged(
+ *iClipSession->iSession, 200, KNullDesC8() );
+ HBufC8* info = MultimediaSharingSettings::EncoderConfigInfoLC();
+ EUNIT_ASSERT_NOT_EQUALS( *info, KMusAvcBitrateLevel_1b_ConfigKey() )
+ CleanupStack::PopAndDestroy( info );
+ }
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SessionConnectionStateChangedL()
+ {
+
+ // Try to tell session about another session's connection state change
+
+ iLiveSession->SessionConnectionStateChanged( *iSomeOtherSession->iSession,
+ ETrue );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() ); // No session yet, nothing happened
+
+ // Simulate sending invite
+ iLiveSession->EstablishLcSessionL();
+
+ // Now try again to notify session about session connection state change
+ // of an another session
+ iLiveSession->SessionConnectionStateChanged( *iSomeOtherSession->iSession,
+ ETrue );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() ); // Wrong session, nothing happened
+
+ // Try tell session connection state is active
+ iLiveSession->SessionConnectionStateChanged( *iLiveSession->iSession,
+ ETrue );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() ); // Session active, nothing happened
+
+ // Try tell session connection state is inactive
+ iLiveSession->SessionConnectionStateChanged( *iLiveSession->iSession,
+ EFalse );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::EConnectionLost ) )
+ iLcSessionObserver->Reset();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_FailedL()
+ {
+ // Try to tell session about failure of another session
+
+ iLiveSession->Failed( *iSomeOtherSession->iSession, 0 );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() ); // No session yet, nothing happened
+
+ // Simulate sending invite
+ iLiveSession->EstablishLcSessionL();
+
+ // Now try again to notify session about failure of an another session
+ iLiveSession->Failed( *iSomeOtherSession->iSession, 0 );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() ); // Wrong session, nothing happened
+
+ // Tell session that it has failed
+ iLiveSession->Failed( *iLiveSession->iSession, KErrNotFound );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError, KErrNotFound )
+ iLcSessionObserver->Reset();
}
@@ -1470,35 +1512,31 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_SessionConnectionStateChangedL()
+void UT_CMusEngMceSession::UT_UpdateFailedL()
{
-
- // Try to tell session about another session's connection state change
-
- iLiveSession->SessionConnectionStateChanged( *iSomeOtherSession->iSession,
- ETrue );
- EUNIT_ASSERT( iObserver->IsReseted() ); // No session yet, nothing happened
-
- // Simulate sending invite
- iLiveSession->InviteL( KTestRecipientSipUri() );
+ // Try to tell session about update failure of another session
+ iLiveSession->UpdateFailed( *iSomeOtherSession->iSession, NULL );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError, KErrGeneral )
+ iLcSessionObserver->Reset();
- // Now try again to notify session about session connection state change
- // of an another session
- iLiveSession->SessionConnectionStateChanged( *iSomeOtherSession->iSession,
- ETrue );
- EUNIT_ASSERT( iObserver->IsReseted() ); // Wrong session, nothing happened
+ // Try again with container
+ TMceTransactionDataContainer container;
+ iLiveSession->UpdateFailed( *iSomeOtherSession->iSession, &container );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() ); // No session yet, nothing happened
- // Try tell session connection state is active
- iLiveSession->SessionConnectionStateChanged( *iLiveSession->iSession,
- ETrue );
- EUNIT_ASSERT( iObserver->IsReseted() ); // Session active, nothing happened
+ // Invite and try again.
+ iLiveSession->EstablishLcSessionL();
+ iLiveSession->UpdateFailed( *iSomeOtherSession->iSession, &container );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() ); // Wrong session, nothing happened¨
- // Try tell session connection state is inactive
- iLiveSession->SessionConnectionStateChanged( *iLiveSession->iSession,
- EFalse );
- EUNIT_ASSERT( iObserver->iSessionConnectionLostCalled );
- iObserver->Reset();
-
+ // Try with right session
+ iLiveSession->UpdateFailed( *iLiveSession->iSession, &container );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError, KErrGeneral )
+ iLcSessionObserver->Reset();
}
@@ -1506,61 +1544,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_FailedL()
- {
- // Try to tell session about failure of another session
-
- iLiveSession->Failed( *iSomeOtherSession->iSession, 0 );
- EUNIT_ASSERT( iObserver->IsReseted() ); // No session yet, nothing happened
-
- // Simulate sending invite
- iLiveSession->InviteL( KTestRecipientSipUri() );
-
- // Now try again to notify session about failure of an another session
- iLiveSession->Failed( *iSomeOtherSession->iSession, 0 );
- EUNIT_ASSERT( iObserver->IsReseted() ); // Wrong session, nothing happened
-
- // Tell session that it has failed
- iLiveSession->Failed( *iLiveSession->iSession, 0 );
- EUNIT_ASSERT( iObserver->iSessionFailedCalled );
- iObserver->Reset();
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_UpdateFailedL()
- {
- // Try to tell session about update failure of another session
- iLiveSession->UpdateFailed( *iSomeOtherSession->iSession, NULL );
- EUNIT_ASSERT( iObserver->iSessionFailedCalled ); // No container, internal error
- iObserver->Reset();
-
- // Try again with container
- TMceTransactionDataContainer container;
- iLiveSession->UpdateFailed( *iSomeOtherSession->iSession, &container );
- EUNIT_ASSERT( iObserver->IsReseted() ); // No session yet, nothing happened
-
- // Invite and try again.
- iLiveSession->InviteL( KTestRecipientSipUri() );
- iLiveSession->UpdateFailed( *iSomeOtherSession->iSession, &container );
- EUNIT_ASSERT( iObserver->IsReseted() ); // Wrong session, nothing happened¨
-
- // Try with right session
- iLiveSession->UpdateFailed( *iLiveSession->iSession, &container );
- EUNIT_ASSERT( iObserver->iSessionFailedCalled );
- iObserver->Reset();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_SRReceivedL()
+void UT_CMusEngMceSession::UT_SRReceivedL()
{
EUNIT_ASSERT( iLiveSession->iSecondsFromLastRtcpReport == 0 );
@@ -1603,7 +1587,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_RRReceivedL()
+void UT_CMusEngMceSession::UT_RRReceivedL()
{
EUNIT_ASSERT( iLiveSession->iSecondsFromLastRtcpReport == 0 );
@@ -1640,45 +1624,12 @@
EUNIT_ASSERT( iLiveSession->iSecondsFromLastRtcpReport == 0 );
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_InactivityTimeoutL()
- {
- // Construct an audio stream for this test
-
- CMceAudioStream* audioStream = CMceAudioStream::NewLC();
-
- CMceRtpSource* rtpSource = CMceRtpSource::NewLC();
- audioStream->SetSourceL( rtpSource );
- CleanupStack::Pop( rtpSource );
-
- iReceiveSession->InactivityTimeout( *audioStream, *rtpSource );
-
- EUNIT_ASSERT( iObserver->IsReseted() )
-
- CleanupStack::PopAndDestroy( audioStream );
-
- // And now real inactivity timeout
-
- iReceiveSession->InactivityTimeout(
- *iReceiveSession->iSession->Streams()[0],
- *static_cast<CMceRtpSource*>
- (iReceiveSession->iSession->Streams()[0]->Source()) );
-
- EUNIT_ASSERT( iObserver->iStreamIdleCalled )
-
- iObserver->Reset();
- }
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_SsrcAddedL()
+void UT_CMusEngMceSession::UT_SsrcAddedL()
{
// As CMusEngMceSession::SsrcAdded is expected to do nothing, just call
// it to make sure it does not weaken the test coverage
@@ -1697,7 +1648,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_SsrcRemovedL()
+void UT_CMusEngMceSession::UT_SsrcRemovedL()
{
// As CMusEngMceSession::SsrcRemoved is expected to do nothing, just call
// it to make sure it does not weaken the test coverage
@@ -1716,21 +1667,25 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_UpdateTimerEventL()
+void UT_CMusEngMceSession::UT_UpdateTimerEventL()
{
+ iLcSessionObserver->Reset();
iLiveSession->UpdateTimerEvent();
- EUNIT_ASSERT( iObserver->iSessionTimeChangedCalled )
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EUnknown ) )
EUNIT_ASSERT( iLiveSession->iUpdateTimer->IsActive() )
iLiveSession->iUpdateTimer->Cancel();
- iObserver->Reset();
+ iLcSessionObserver->Reset();
iLiveSession->iSecondsFromLastRtcpReport = 25; // >KMusEngRtcpInactivityThreshold
iLiveSession->UpdateTimerEvent();
- EUNIT_ASSERT( iObserver->iSessionTimeChangedCalled )
- EUNIT_ASSERT( iObserver->iInactivityTimeoutCalled );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::EMediaInactivityTimeout ) )
EUNIT_ASSERT( iLiveSession->iUpdateTimer->IsActive() )
iLiveSession->iUpdateTimer->Cancel();
- iObserver->Reset();
+ iLcSessionObserver->Reset();
}
@@ -1738,14 +1693,13 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_IsRoamingBetweenAPsAllowedL()
+void UT_CMusEngMceSession::UT_IsRoamingBetweenAPsAllowedL()
{
// No session
EUNIT_ASSERT( iLiveSession->IsRoamingBetweenAPsAllowed() )
// Session idle
- _LIT( KRecipientSipUri, "sip:user@some.where" );
- iLiveSession->InviteL( KRecipientSipUri );
+ iLiveSession->EstablishLcSessionL();
iLiveSession->iSession->iState = CMceSession::EIdle;
EUNIT_ASSERT( iLiveSession->IsRoamingBetweenAPsAllowed() )
@@ -1762,55 +1716,249 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::UT_CMusEngMceSession_VolumeChangedL()
- {
- // Try without session, nothing happens
- EUNIT_ASSERT( iObserver->iVolume == 0 );
- iLiveSession->VolumeChanged( 1, EFalse );
- EUNIT_ASSERT( !VerifySpeakersVolume(*iLiveSession, 1) )
- EUNIT_ASSERT( iObserver->iVolume == 0 );
+void UT_CMusEngMceSession::UT_SaveContactL()
+ {
+ _LIT8( KTestSaveContactAddr, "sip:abc@10.10.10.10");
+
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KTelNumber,
+ _L("12341234") ) );
+
+ // Operator variant
+ iLiveSession->iOperatorVariant = ETrue;
+ MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iLiveSession->SaveContactL( KTestSaveContactAddr ), KErrNotSupported )
+
+ // No address to save
+ iLiveSession->iOperatorVariant = EFalse;
+ MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iLiveSession->SaveContactL( KNullDesC8 ), KErrArgument )
- // Establish session
- ESTABLISH_OUT_SESSION( iClipSession )
+ // Contact id KErrNotSupported (multiple matching contacts)
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactId,
+ KErrNotSupported ) );
- // Try without observer
- iClipSession->VolumeChanged( 2, EFalse );
- EUNIT_ASSERT( VerifySpeakersVolume(*iClipSession, 2) )
- EUNIT_ASSERT( iObserver->iVolume == 0 );
-
+ MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iLiveSession->SaveContactL( KTestSaveContactAddr ), KErrNotFound )
- // Try with observer set
- iClipSession->SetVolumeChangeObserver( iObserver );
- iClipSession->VolumeChanged( 3, EFalse );
- EUNIT_ASSERT( VerifySpeakersVolume(*iClipSession, 3) )
- EUNIT_ASSERT( iObserver->iVolume == 3 );
+ // SIP field exists already
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactId,
+ 2 ) );
+
+ ContactEngineStubHelper::SetSIPFieldFound( ETrue );
+ MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iLiveSession->SaveContactL( KTestSaveContactAddr ), KErrAlreadyExists )
+
+ // No correct field in fields info
+ ContactEngineStubHelper::Reset();
+ ContactEngineStubHelper::SetSIPFieldInfoFound( EFalse );
+ MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iLiveSession->SaveContactL( KTestSaveContactAddr ), KErrNotFound )
+
+ // Success
+ ContactEngineStubHelper::Reset();
+ iLiveSession->SaveContactL( KTestSaveContactAddr );
+ EUNIT_ASSERT( ContactEngineStubHelper::GetCalledFunction() == EContactEngineStubSetText );
}
-// HELPERS
-TBool UT_CMusEngMceSession::VerifySpeakersVolume(CMusEngMceSession& aSession, TInt aVolume)
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_RectL()
+ {
+ iLiveSession->SetRectL( TRect( 0, 0, 100, 100 ) );
+ TRect rect = iLiveSession->Rect();
+
+ // Initial values
+ EUNIT_ASSERT( rect.iTl.iX == 0 );
+ EUNIT_ASSERT( rect.iTl.iY == 0 );
+ EUNIT_ASSERT( rect.iBr.iX == 100 );
+ EUNIT_ASSERT( rect.iBr.iY == 100 );
+
+ iLiveSession->iRect.iTl.iX = 100;
+ iLiveSession->iRect.iTl.iY = 200;
+ iLiveSession->iRect.iBr.iX = 300;
+ iLiveSession->iRect.iBr.iY = 400;
+
+ rect = iLiveSession->Rect();
+
+ EUNIT_ASSERT( rect.iTl.iX == 100 );
+ EUNIT_ASSERT( rect.iTl.iY == 200 );
+ EUNIT_ASSERT( rect.iBr.iX == 300 );
+ EUNIT_ASSERT( rect.iBr.iY == 400 );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SetRectLL()
{
- TBool result = EFalse;
+ TRect rect;
+
+ rect.iTl.iX = 100;
+ rect.iTl.iY = 200;
+ rect.iBr.iX = 300;
+ rect.iBr.iY = 400;
+
+ iLiveSession->SetRectL( rect );
+
+ EUNIT_ASSERT( iLiveSession->iRect.iTl.iX == 100 );
+ EUNIT_ASSERT( iLiveSession->iRect.iTl.iY == 200 );
+ EUNIT_ASSERT( iLiveSession->iRect.iBr.iX == 300 );
+ EUNIT_ASSERT( iLiveSession->iRect.iBr.iY == 400 );
+
+ ESTABLISH_OUT_SESSION( iLiveSession );
+
+ CMceDisplaySink* display =
+ MusEngMceUtils::GetDisplayL( *( iLiveSession->iSession ) );
+ TRect displayRect = display->DisplayRectL();
- CMceSpeakerSink* speaker = NULL;
- CMceSession* session = aSession.iSession;
+ EUNIT_ASSERT( displayRect.iTl.iX == 100 );
+ EUNIT_ASSERT( displayRect.iTl.iY == 200 );
+ EUNIT_ASSERT( displayRect.iBr.iX == 300 );
+ EUNIT_ASSERT( displayRect.iBr.iY == 400 );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SecondaryRectL()
+ {
+ iLiveSession->SetSecondaryRectL( TRect( 0, 0, 100, 100 ) );
+ TRect rect = iLiveSession->SecondaryRect();
+
+ // Initial values
+ EUNIT_ASSERT( rect.iTl.iX == 0 );
+ EUNIT_ASSERT( rect.iTl.iY == 0 );
+ EUNIT_ASSERT( rect.iBr.iX == 100 );
+ EUNIT_ASSERT( rect.iBr.iY == 100 );
+
+ iLiveSession->iRect.iTl.iX = 100;
+ iLiveSession->iRect.iTl.iY = 200;
+ iLiveSession->iRect.iBr.iX = 300;
+ iLiveSession->iRect.iBr.iY = 400;
+
+ rect = iLiveSession->SecondaryRect();
- if ( session )
- {
- for ( TInt i = 0; i < session->Streams().Count(); ++i )
- {
- for ( TInt j = 0; j < session->Streams()[i]->Sinks().Count(); ++j )
- {
- if ( session->Streams()[i]->Sinks()[j]->Type() == KMceSpeakerSink )
- {
- speaker = static_cast<CMceSpeakerSink*>(
- session->Streams()[i]->Sinks()[j] );
- result = ( speaker->VolumeL() == aVolume );
- }
- }
- }
- }
- return result;
+ EUNIT_ASSERT( rect.iTl.iX == 100 );
+ EUNIT_ASSERT( rect.iTl.iY == 200 );
+ EUNIT_ASSERT( rect.iBr.iX == 300 );
+ EUNIT_ASSERT( rect.iBr.iY == 400 );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SetSecondaryRectLL()
+ {
+ TRect rect;
+
+ rect.iTl.iX = 100;
+ rect.iTl.iY = 200;
+ rect.iBr.iX = 300;
+ rect.iBr.iY = 400;
+
+ iLiveSession->SetSecondaryRectL( rect );
+
+ EUNIT_ASSERT( iLiveSession->iRect.iTl.iX == 100 );
+ EUNIT_ASSERT( iLiveSession->iRect.iTl.iY == 200 );
+ EUNIT_ASSERT( iLiveSession->iRect.iBr.iX == 300 );
+ EUNIT_ASSERT( iLiveSession->iRect.iBr.iY == 400 );
+
+ ESTABLISH_OUT_SESSION( iLiveSession );
+
+ CMceDisplaySink* display =
+ MusEngMceUtils::GetDisplayL( *( iLiveSession->iSession ) );
+ TRect displayRect = display->DisplayRectL();
+
+ EUNIT_ASSERT( displayRect.iTl.iX == 100 );
+ EUNIT_ASSERT( displayRect.iTl.iY == 200 );
+ EUNIT_ASSERT( displayRect.iBr.iX == 300 );
+ EUNIT_ASSERT( displayRect.iBr.iY == 400 );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_EnableDisplayLL()
+ {
+ TRAPD( error, iLiveSession->EnableDisplayL( ETrue ) );
+ MUS_TEST_FORWARD_ALLOC_FAILURE( error );
+ EUNIT_ASSERT( error == KErrNotReady );
+
+ ESTABLISH_OUT_SESSION( iLiveSession );
+
+ CMceDisplaySink* display =
+ MusEngMceUtils::GetDisplayL( *(iLiveSession->iSession) );
+
+ // Disable
+ iLiveSession->EnableDisplayL( EFalse );
+
+ EUNIT_ASSERT( !display->iIsEnabled );
+
+ // Try to disable again, request should be ignored
+
+ iLiveSession->EnableDisplayL( EFalse );
+
+ EUNIT_ASSERT( !display->iIsEnabled );
+
+ // Enable
+
+ iLiveSession->EnableDisplayL( ETrue );
+
+ EUNIT_ASSERT( display->iIsEnabled );
+
+ // Try to enable again, request should be ignored
+
+ iLiveSession->EnableDisplayL( ETrue );
+
+ EUNIT_ASSERT( display->iIsEnabled );
+
+ EUNIT_ASSERT( iLiveSession->IsDisplayEnabled() )
+ EUNIT_ASSERT( iLiveSession->IsDisplayActive() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_CMusEngMceSession_SetOrientationLL()
+ {
+ // Try without session, fails
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->SetOrientationL(
+ CMusEngMceSession::EPortrait ),
+ KErrNotReady )
+
+ // Establish a session
+ ESTABLISH_OUT_SESSION( iLiveSession )
+
+ CMceDisplaySink* display =
+ MusEngMceUtils::GetDisplayL( *iLiveSession->iSession );
+
+ // Check the initial state
+ display->iRotation = CMceDisplaySink::ENone;
+ EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
+ CMusEngMceSession::EPortrait )
+
+ // Successfully change orientation
+
+ iLiveSession->SetOrientationL( CMusEngMceSession::ELandscape );
+ EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
+ CMusEngMceSession::ELandscape )
+
+ iLiveSession->SetOrientationL( CMusEngMceSession::EPortrait );
+ EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
+ CMusEngMceSession::EPortrait )
}
@@ -1818,22 +1966,510 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngMceSession::SetMaxVolForSpeakersL(CMceSession& aSession, TInt aMaxVol)
+void UT_CMusEngMceSession::UT_SetEncodingDeviceLL()
+ {
+ CMceAvcCodec* codec = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+
+ // Generic error in CenRep, leave expected
+ CRepository::iForceFailWithCode = KErrNotReady;
+ EUNIT_ASSERT_LEAVE( iLiveSession->SetEncodingDeviceL( *codec ) )
+ EUNIT_ASSERT_EQUALS( codec->iEncodingDecodingDevice, TUid::Uid( 0 ) )
+
+ // No entry in CenRep, default value expected
+ CRepository::iForceFailWithCode = KErrNotFound;
+ const TUid KDefaultEncodingDevice( TUid::Uid( 0x20001C13 ) );
+ iLiveSession->SetEncodingDeviceL( *codec );
+ EUNIT_ASSERT_EQUALS( codec->iEncodingDecodingDevice,
+ KDefaultEncodingDevice )
+
+ // Entry in CenRep
+ const TInt KSomeEncodingDevice( 0x20001C15 );
+ CRepository::iStaticEncoderUid = KSomeEncodingDevice;
+ iLiveSession->SetEncodingDeviceL( *codec );
+ EUNIT_ASSERT_EQUALS( codec->iEncodingDecodingDevice,
+ TUid::Uid( KSomeEncodingDevice ) )
+
+ CleanupStack::PopAndDestroy( codec );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SetCodecConfigKeyLL()
+ {
+ CMceAvcCodec* codec = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel1b );
+
+ // Generic error in CenRep, leave expected
+ CRepository::iForceFailWithCode = KErrNotReady;
+ EUNIT_ASSERT_LEAVE( iLiveSession->SetCodecConfigKeyL( *codec ) );
+ EUNIT_ASSERT( !codec->iConfigKey )
+ EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
+ CRepository::iForceFailWithCode = KErrNone;
+
+ // No entry in CenRep, nothing happens
+ iLiveSession->SetCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( !codec->iConfigKey )
+ EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
+
+ // Empty entry in CenRep
+ CRepository::SetStubAvcConfigKeysL( KNullDesC8() );
+ iLiveSession->SetCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( !codec->iConfigKey )
+ EUNIT_ASSERT( iLiveSession->iStoreEncoderConfigInfo )
+ iLiveSession->iStoreEncoderConfigInfo = EFalse; // emulate original situation
+
+ // Entry in CenRep
+ CRepository::SetStubAvcConfigKeysL( KMusAvcBitrateLevel_1b_ConfigKey );
+ iLiveSession->SetCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( codec->iConfigKey )
+ HBufC8* key = codec->ConfigKeyL();
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1bTestText() )
+ CleanupStack::PopAndDestroy( key );
+ EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
+
+ CleanupStack::PopAndDestroy( codec );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_ReadCodecConfigKeyLL()
+ {
+ HBufC8* key( NULL );
+
+ // Try with H263, leave expected
+ CMceVideoCodec* codecH263 = CMceH263Codec::NewLC( KMceSDPNameH263() );
+ EUNIT_ASSERT_LEAVE( key = iLiveSession->ReadCodecConfigKeyL( *codecH263 ) )
+ CleanupStack::PopAndDestroy( codecH263 );
+
+ // Try without an entry in CenRep, leave expected
+ CMceVideoCodec* codec = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codec->SetAllowedBitrates( 0 | KMceAvcBitrateLevel1 );
+ EUNIT_ASSERT_LEAVE( key = iLiveSession->ReadCodecConfigKeyL( *codec ) )
+
+ // Create CenRep entry which does not include wanted bitrate, NULL value
+ // expected
+ CRepository::SetStubAvcConfigKeysL( KMusAvcBitrateLevel1bTestText() );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( !key )
+
+ // Create entry with all AVC keys and try with all the values
+ CRepository::SetStubAvcConfigKeysL( KMusAvcAllLevelsConcatenation() );
+
+ // KMceAvcBitrateLevel1
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1TestText );
+ CleanupStack::PopAndDestroy( key );
+
+ // KMceAvcBitrateLevel1b
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel1b );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1bTestText );
+ CleanupStack::PopAndDestroy( key );
+
+ // KMceAvcBitrateLevel1_1
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel1_1 );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1_1TestText );
+ CleanupStack::PopAndDestroy( key );
+
+ // KMceAvcBitrateLevel1_2
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel1_2 );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1_2TestText );
+ CleanupStack::PopAndDestroy( key );
+
+ // KMceAvcBitrateLevel1_3
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel1_3 );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1_3TestText );
+ CleanupStack::PopAndDestroy( key );
+
+ // KMceAvcBitrateLevel2
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel2 );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel2TestText );
+ CleanupStack::PopAndDestroy( key );
+
+ CleanupStack::PopAndDestroy( codec );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_StoreEncoderConfigInfoLL()
+ {
+ CRepository::iStaticWriteAvcKeysToStaticData = ETrue;
+
+ // Try with clean CenRep
+ MultimediaSharingSettings::SetEncoderConfigInfoL( KNullDesC8() );
+
+ ESTABLISH_OUT_SESSION( iLiveSession ) // calls StoreEncoderConfigInfoL
+ // If StoreEncoderConfigInfoL leaves with KErrNoMemory,
+ // MMusEngSessionObserver::SessionFailed will be called.
+ if ( iLcSessionObserver->iCalledFunction == CLcSessionObserverStub::ESessionFailed )
+ {
+ User::Leave( KErrNoMemory );
+ }
+
+ HBufC8* keys = MultimediaSharingSettings::EncoderConfigInfoLC();
+ EUNIT_ASSERT_EQUALS( *keys, KMusAvcBitrateLevel_1b_ConfigKey() )
+ CleanupStack::PopAndDestroy( keys );
+
+ // Try without a clean CenRep
+ MultimediaSharingSettings::SetEncoderConfigInfoL(
+ KMusAvcBitrateLevel_1_1_ConfigKey() );
+
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+
+ ESTABLISH_OUT_SESSION( iLiveSession ) // calls StoreEncoderConfigInfoL
+ // If StoreEncoderConfigInfoL leaves with KErrNoMemory,
+ // MMusEngSessionObserver::SessionFailed will be called.
+ if ( iLcSessionObserver->iCalledFunction == CLcSessionObserverStub::ESessionFailed )
+ {
+ User::Leave( KErrNoMemory );
+ }
+
+ keys = MultimediaSharingSettings::EncoderConfigInfoLC();
+ EUNIT_ASSERT_EQUALS( *keys,
+ KMusAvcBitrateLevels_1_1_And_1b_ConfigKeys() )
+ CleanupStack::PopAndDestroy( keys );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_StreamStreamingL()
{
- for ( TInt i = 0; i < aSession.Streams().Count(); ++i )
- {
- for ( TInt j = 0; j < aSession.Streams()[i]->Sinks().Count(); ++j )
- {
- if ( aSession.Streams()[i]->Sinks()[j]->Type() == KMceSpeakerSink )
- {
- CMceSpeakerSink* speaker = static_cast<CMceSpeakerSink*>(
- aSession.Streams()[i]->Sinks()[j] );
- speaker->iMaxVolume = aMaxVol;
- }
- }
- }
+ // Wrong stream type, no callbacks to MLcSessionObserver
+ CMceAudioStream* audioStream = CMceAudioStream::NewLC();
+ iLiveSession->StreamStreaming( *audioStream );
+ CleanupStack::PopAndDestroy( audioStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
+
+ // Wrong state, no callbacks to MLcSessionObserver
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ videoStream->iState = CMceMediaStream::EIdle;
+ iLiveSession->StreamStreaming( *videoStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
+
+ // Receive session, RTP source and remote player present
+ iLcSessionObserver->Reset();
+ videoStream->iState = CMceMediaStream::EStreaming;
+ CMceRtpSource* rtpSource = CMceRtpSource::NewLC();
+ videoStream->SetSourceL( rtpSource );
+ CleanupStack::Pop( rtpSource );
+ iReceiveSession->StreamStreaming( *videoStream );
+ EUNIT_ASSERT_EQUALS(
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ),
+ iLcSessionObserver->iCalledFunction )
+ EUNIT_ASSERT_EQUALS(
+ iReceiveSession->RemoteVideoPlayer(),
+ iLcSessionObserver->iCurrentPlayer )
+
+ // Live session, RTP sink and local player present
+ iLcSessionObserver->Reset();
+ videoStream->SetSourceL( NULL );
+ CMceRtpSink* rtpSink = CMceRtpSink::NewLC();
+ videoStream->AddSinkL( rtpSink );
+ CleanupStack::Pop( rtpSink );
+ iLiveSession->StreamStreaming( *videoStream );
+ EUNIT_ASSERT_EQUALS(
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ),
+ iLcSessionObserver->iCalledFunction )
+ EUNIT_ASSERT_EQUALS(
+ iLiveSession->LocalVideoPlayer(),
+ iLcSessionObserver->iCurrentPlayer )
+
+ // Live session, RTP sink present, but no local player
+ iLcSessionObserver->Reset();
+ delete iLiveSession->iLiveVideoPlayer;
+ iLiveSession->iLiveVideoPlayer = NULL;
+ iLiveSession->StreamStreaming( *videoStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
+
+ CleanupStack::PopAndDestroy( videoStream );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_InformObserverAboutSessionStateChangeL()
+ {
+ // Observer does not exist
+ iLiveSession->SetLcSessionObserver( NULL );
+ iLiveSession->InformObserverAboutSessionStateChange();
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EUnknown,
+ iLcSessionObserver->iCalledFunction )
+
+ // Observer exists
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->InformObserverAboutSessionStateChange();
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::ESessionStateChanged,
+ iLcSessionObserver->iCalledFunction )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_InformObserverAboutSessionUpdateL()
+ {
+ // Observer does not exist
+ iLiveSession->SetLcSessionObserver( NULL );
+ iLiveSession->InformObserverAboutSessionUpdate();
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EUnknown,
+ iLcSessionObserver->iCalledFunction )
+
+ // Observer exists
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->InformObserverAboutSessionUpdate();
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::ESessionUpdated,
+ iLcSessionObserver->iCalledFunction )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_InformObserverAboutSessionFailureL()
+ {
+ // Observer does not exist
+ iLiveSession->SetLcSessionObserver( NULL );
+ iLiveSession->InformObserverAboutSessionFailure( KErrGeneral );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EUnknown,
+ iLcSessionObserver->iCalledFunction )
+ EUNIT_ASSERT_EQUALS( KErrNone, iLcSessionObserver->iError )
+
+ // Observer exists
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->InformObserverAboutSessionFailure( KErrGeneral );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::ESessionFailed,
+ iLcSessionObserver->iCalledFunction )
+ EUNIT_ASSERT_EQUALS( KErrGeneral, iLcSessionObserver->iError )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_InformObserverAboutPlayerStateChangeL()
+ {
+ // Observer does not exist
+ iLiveSession->SetLcSessionObserver( NULL );
+ iLiveSession->InformObserverAboutPlayerStateChange( NULL );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EUnknown,
+ iLcSessionObserver->iCalledFunction )
+
+ // Observer exists, but the player is NULL
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->InformObserverAboutPlayerStateChange( NULL );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EUnknown,
+ iLcSessionObserver->iCalledFunction )
+
+ // Both observer and player exist
+ iLiveSession->InformObserverAboutPlayerStateChange(
+ iLiveSession->LocalVideoPlayer() );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EPlayerStateChanged,
+ iLcSessionObserver->iCalledFunction )
}
-
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_InformObserverAboutPlayerUpdateL()
+ {
+ // Observer does not exist
+ iLiveSession->SetLcSessionObserver( NULL );
+ iLiveSession->InformObserverAboutPlayerUpdate( NULL );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EUnknown,
+ iLcSessionObserver->iCalledFunction )
+
+ // Observer exists, but the player is NULL
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->InformObserverAboutPlayerUpdate( NULL );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EUnknown,
+ iLcSessionObserver->iCalledFunction )
+
+ // Both observer and player exist
+ iLiveSession->InformObserverAboutPlayerUpdate(
+ iLiveSession->LocalVideoPlayer() );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EPlayerUpdated,
+ iLcSessionObserver->iCalledFunction )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_InformObserverAboutPlayerFailureL()
+ {
+ // Observer does not exist
+ iLiveSession->SetLcSessionObserver( NULL );
+ iLiveSession->InformObserverAboutPlayerFailure( NULL, KErrGeneral );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EUnknown,
+ iLcSessionObserver->iCalledFunction )
+ EUNIT_ASSERT_EQUALS( KErrNone, iLcSessionObserver->iError )
+
+ // Observer exists, but the player is NULL
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->InformObserverAboutPlayerFailure( NULL, KErrGeneral );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EUnknown,
+ iLcSessionObserver->iCalledFunction )
+ EUNIT_ASSERT_EQUALS( KErrNone, iLcSessionObserver->iError )
+
+ // Both observer and player exist
+ iLiveSession->InformObserverAboutPlayerFailure(
+ iLiveSession->LocalVideoPlayer(), KErrGeneral );
+ EUNIT_ASSERT_EQUALS(
+ CLcSessionObserverStub::EPlayerFailed,
+ iLcSessionObserver->iCalledFunction )
+ EUNIT_ASSERT_EQUALS( KErrGeneral, iLcSessionObserver->iError )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_LcUiProviderL()
+ {
+ // Provider does not exist
+ iLiveSession->SetLcUiProvider( NULL );
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->LcUiProviderL(), KErrNotReady )
+
+ // Provider exists
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ EUNIT_ASSERT( &iLiveSession->LcUiProviderL() == iLcUiProvider )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UI_IsBackgroundStartupL()
+ {
+ // fast mode is not defined
+ EUNIT_ASSERT( !iLiveSession->IsBackgroundStartup() )
+
+ // fast mode is Off
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KFastMode,
+ 1 ) );
+
+ EUNIT_ASSERT( !iLiveSession->IsBackgroundStartup() )
+
+ // fast mode is On
+ // Bg value would be set to true at session contruct phase if property
+ // is set to EFastModeOn at that time.
+ iLiveSession->iBackground = ETrue;
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KFastMode,
+ 0 ) );
+
+ EUNIT_ASSERT( iLiveSession->IsBackgroundStartup() )
+
+ // Ensure after session recreation fast mode is off
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLiveSession = CMusEngLiveSession::NewL();
+ EUNIT_ASSERT( !iLiveSession->IsBackgroundStartup() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_InformUiProviderAboutReceivingStartL()
+ {
+ // Observer does not exist
+ iLiveSession->SetLcUiProvider( NULL );
+ iLiveSession->InformUiProviderAboutReceivingStart();
+ EUNIT_ASSERT_EQUALS( TInt( CLcUiProviderStub::EUnknown ),
+ iLcUiProvider->iCalledFunction )
+
+ // Observer exists, but we are on foreground (fast mode is off)
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ iLiveSession->InformUiProviderAboutReceivingStart();
+ EUNIT_ASSERT_EQUALS( TInt( CLcUiProviderStub::EUnknown ),
+ iLcUiProvider->iCalledFunction )
+
+ // Observer exists, we are on background
+ iLiveSession->iBackground = ETrue;
+ EUNIT_ASSERT( !iLcUiProvider->iForeground )
+ iLiveSession->InformUiProviderAboutReceivingStart();
+ EUNIT_ASSERT_EQUALS( TInt( CLcUiProviderStub::EHandleForegroundStatus ),
+ iLcUiProvider->iCalledFunction )
+ EUNIT_ASSERT( iLcUiProvider->iForeground )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_SetForegroundStatusL()
+ {
+ iLiveSession->iBackground = ETrue;
+ EUNIT_ASSERT( iLiveSession->SetForegroundStatus( ETrue ) == KErrNone );
+ EUNIT_ASSERT( !iLiveSession->iBackground );
+ EUNIT_ASSERT( iLiveSession->SetForegroundStatus( EFalse ) == KErrNone );
+ EUNIT_ASSERT( !iLiveSession->iBackground ); // Still bg
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngMceSession::UT_UpdateLcSessionLL()
+ {
+ // No MCE session
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->UpdateLcSessionL(), KErrNotReady )
+
+ ESTABLISH_OUT_SESSION( iLiveSession );
+
+ iLiveSession->UpdateLcSessionL();
+
+ }
+
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -1842,264 +2478,442 @@
"UNIT" )
EUNIT_TEST(
- "TerminateL - test ",
+ "LcSessionState - test ",
+ "CMusEngMceSession",
+ "LcSessionState",
+ "FUNCTIONALITY",
+ SetupL, UT_LcSessionStateL, Teardown)
+
+EUNIT_TEST(
+ "RemoteVideoPlayer - test ",
+ "CMusEngMceSession",
+ "RemoteVideoPlayer",
+ "FUNCTIONALITY",
+ SetupL, UT_RemoteVideoPlayerL, Teardown)
+
+EUNIT_TEST(
+ "LocalVideoPlayer - test ",
+ "CMusEngMceSession",
+ "LocalVideoPlayer",
+ "FUNCTIONALITY",
+ SetupL, UT_LocalVideoPlayerL, Teardown)
+
+EUNIT_TEST(
+ "LocalDisplayNameL - test ",
+ "CMusEngMceSession",
+ "LocalDisplayNameL",
+ "FUNCTIONALITY",
+ SetupL, UT_LocalDisplayNameL, Teardown)
+
+EUNIT_TEST(
+ "RemoteDisplayName - test ",
+ "CMusEngMceSession",
+ "RemoteDisplayName",
+ "FUNCTIONALITY",
+ SetupL, UT_RemoteDisplayNameL, Teardown)
+
+EUNIT_TEST(
+ "RemoteDetails - test ",
+ "CMusEngMceSession",
+ "RemoteDetails",
+ "FUNCTIONALITY",
+ SetupL, UT_RemoteDetailsL, Teardown)
+
+EUNIT_TEST(
+ "SetParameter - test ",
"CMusEngMceSession",
- "TerminateL",
+ "SetParameter",
+ "FUNCTIONALITY",
+ SetupL, UT_SetParameterL, Teardown)
+
+EUNIT_TEST(
+ "ParameterValue - test ",
+ "CMusEngMceSession",
+ "ParameterValue",
+ "FUNCTIONALITY",
+ SetupL, UT_ParameterValueL, Teardown)
+
+EUNIT_TEST(
+ "IsLcAudioMutedL - test ",
+ "CMusEngMceSession",
+ "IsLcAudioMutedL",
+ "FUNCTIONALITY",
+ SetupL, UT_IsLcAudioMutedL, Teardown)
+
+EUNIT_TEST(
+ "MuteLcAudioL - test ",
+ "CMusEngMceSession",
+ "MuteLcAudioL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_TerminateLL, Teardown)
+ SetupL, UT_MuteLcAudioL, Teardown)
+
+EUNIT_TEST(
+ "MuteLcMicL - test ",
+ "CMusEngMceSession",
+ "MuteLcMicL",
+ "FUNCTIONALITY",
+ SetupL, UT_MuteLcMicL, Teardown)
+
+EUNIT_TEST(
+ "EnableLcLoudspeakerL - test ",
+ "CMusEngMceSession",
+ "EnableLcLoudspeakerL",
+ "FUNCTIONALITY",
+ SetupL, UT_EnableLcLoudspeakerL, Teardown)
+
+EUNIT_TEST(
+ "SetLcVolumeL - test ",
+ "CMusEngMceSession",
+ "SetLcVolumeL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetLcVolumeL, Teardown)
EUNIT_TEST(
"GetSessionTime - test ",
"CMusEngMceSession",
"GetSessionTime",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_GetSessionTimeL, Teardown)
-
-EUNIT_TEST(
- "ConnectionActive - test ",
- "CMusEngMceSession",
- "ConnectionActive",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_ConnectionActiveL, Teardown)
-
-EUNIT_TEST(
- "ContainsAudioL - test ",
- "CMusEngMceSession",
- "ContainsAudioL",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_ContainsAudioLL, Teardown)
-
-EUNIT_TEST(
- "IsMutedL - test ",
- "CMusEngMceSession",
- "IsMutedL",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_IsMutedLL, Teardown)
-
-EUNIT_TEST(
- "OrientationL - test ",
- "CMusEngMceSession",
- "OrientationL",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_OrientationLL, Teardown)
-
-EUNIT_TEST(
- "SetOrientationL - test ",
- "CMusEngMceSession",
- "SetOrientationL",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_SetOrientationLL, Teardown)
-
-EUNIT_TEST(
- "VolumeUpL - test ",
- "CMusEngMceSession",
- "VolumeUpL",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_VolumeUpLL, Teardown)
-
-EUNIT_TEST(
- "VolumeDownL - test ",
- "CMusEngMceSession",
- "VolumeDownL",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_VolumeDownLL, Teardown)
-
-EUNIT_TEST(
- "SetVolumeL - test ",
- "CMusEngMceSession",
- "SetVolumeL",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_SetVolumeLL, Teardown)
-
-EUNIT_TEST(
- "EnableDisplay - test ",
- "CMusEngMceSession",
- "EnableDisplay",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_EnableDisplayL, Teardown)
-
-EUNIT_TEST(
- "MuteL - test ",
- "CMusEngMceSession",
- "MuteL",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_MuteLL, Teardown)
-
-EUNIT_TEST(
- "UnmuteL - test ",
- "CMusEngMceSession",
- "UnmuteL",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_UnmuteLL, Teardown)
+ SetupL, UT_GetSessionTimeL, Teardown)
EUNIT_TEST(
"HandleTermination - test ",
"CMusEngMceSession",
"HandleTermination",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_HandleTerminationL, Teardown)
+ SetupL, UT_HandleTerminationL, Teardown)
EUNIT_TEST(
"AdjustVideoCodecL - test ",
"CMusEngMceSession",
"AdjustVideoCodecL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_AdjustVideoCodecLL, Teardown)
+ SetupL, UT_AdjustVideoCodecL, Teardown)
EUNIT_TEST(
"AdjustAudioCodecL - test ",
"CMusEngMceSession",
"AdjustAudioCodecL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_AdjustAudioCodecLL, Teardown)
+ SetupL, UT_AdjustAudioCodecL, Teardown)
EUNIT_TEST(
"RectChangedL - test ",
"CMusEngMceSession",
"RectChangedL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_RectChangedLL, Teardown)
+ SetupL, UT_RectChangedL, Teardown)
EUNIT_TEST(
"SetSessionSdpLinesL - test ",
"CMusEngMceSession",
"SetSessionSdpLinesL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_SetSessionSdpLinesLL, Teardown)
+ SetupL, UT_SetSessionSdpLinesL, Teardown)
EUNIT_TEST(
+ "SetSessionSdpLinesL - operator variant test ",
+ "CMusEngMceSession",
+ "SetSessionSdpLinesL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetSessionSdpLines_OperatorL, Teardown)
+
+EUNIT_TEST(
+ "SetMediaSdpLinesL - test ",
+ "CMusEngMceSession",
+ "SetMediaSdpLinesL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetMediaSdpLinesL, Teardown)
+
+EUNIT_TEST(
+ "SetMediaSdpLinesL - operator variant test ",
+ "CMusEngMceSession",
+ "SetMediaSdpLinesL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetMediaSdpLines_OperatorL, Teardown)
+
+EUNIT_TEST(
"AdjustStreamsAndCodecsL - test ",
"CMusEngMceSession",
"AdjustStreamsAndCodecsL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_AdjustStreamsAndCodecsLL, Teardown)
+ SetupL, UT_AdjustStreamsAndCodecsL, Teardown)
EUNIT_TEST(
"IncomingSession - test ",
"CMusEngMceSession",
"IncomingSession",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_IncomingSessionL, Teardown)
+ SetupL, UT_IncomingSessionL, Teardown)
EUNIT_TEST(
"IncomingUpdate - test ",
"CMusEngMceSession",
"IncomingUpdate",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_IncomingUpdateL, Teardown)
+ SetupL, UT_IncomingUpdateL, Teardown)
EUNIT_TEST(
"StreamStateChangedL( source ) - test ",
"CMusEngMceSession",
"StreamStateChangedL( source )",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_StreamStateChangedWithSourceL, Teardown)
+ SetupL, UT_StreamStateChangedWithSourceL, Teardown)
EUNIT_TEST(
"SessionStateChanged - test ",
"CMusEngMceSession",
"SessionStateChanged",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_SessionStateChangedL, Teardown)
+ SetupL, UT_SessionStateChangedL, Teardown)
+
+EUNIT_TEST(
+ "HandleSessionStateChanged - encoder key storing ",
+ "CMusEngMceSession",
+ "HandleSessionStateChanged",
+ "FUNCTIONALITY",
+ SetupL, UT_HandleSessionStateChanged_EncoderKeyStoringL, Teardown)
EUNIT_TEST(
"SessionConnectionStateChanged - test ",
"CMusEngMceSession",
"SessionConnectionStateChanged",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_SessionConnectionStateChangedL, Teardown)
+ SetupL, UT_SessionConnectionStateChangedL, Teardown)
EUNIT_TEST(
"Failed - test ",
"CMusEngMceSession",
"Failed",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_FailedL, Teardown)
+ SetupL, UT_FailedL, Teardown)
EUNIT_TEST(
"UpdateFailed - test ",
"CMusEngMceSession",
"UpdateFailed",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_UpdateFailedL, Teardown)
+ SetupL, UT_UpdateFailedL, Teardown)
EUNIT_TEST(
"StreamStateChanged - test ",
"CMusEngMceSession",
"StreamStateChanged",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_StreamStateChangedL, Teardown)
+ SetupL, UT_StreamStateChangedL, Teardown)
EUNIT_TEST(
"StreamStateChangedL (sink ) - test ",
"CMusEngMceSession",
"StreamStateChangedL( sink )",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_StreamStateChangedWithSinkL, Teardown)
+ SetupL, UT_StreamStateChangedWithSinkL, Teardown)
EUNIT_TEST(
"SRReceived - test ",
"CMusEngMceSession",
"SRReceived",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_SRReceivedL, Teardown)
+ SetupL, UT_SRReceivedL, Teardown)
EUNIT_TEST(
"RRReceived - test ",
"CMusEngMceSession",
"RRReceived",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_RRReceivedL, Teardown)
-
-EUNIT_TEST(
- "InactivityTimeout - test ",
- "CMusEngMceSession",
- "InactivityTimeout",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_InactivityTimeoutL, Teardown)
+ SetupL, UT_RRReceivedL, Teardown)
EUNIT_TEST(
"SsrcAdded - test ",
"CMusEngMceSession",
"SsrcAdded",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_SsrcAddedL, Teardown)
+ SetupL, UT_SsrcAddedL, Teardown)
EUNIT_TEST(
"SsrcRemoved - test ",
"CMusEngMceSession",
"SsrcRemoved",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_SsrcRemovedL, Teardown)
-EUNIT_TEST(
- "IsDisplayEnabledL - test ",
- "CMusEngMceSession",
- "IsDisplayEnabledL",
- "FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_IsDisplayEnabledLL, Teardown)
+ SetupL, UT_SsrcRemovedL, Teardown)
EUNIT_TEST(
"UpdateTimerEvent - test ",
"CMusEngMceSession",
"UpdateTimerEvent",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_UpdateTimerEventL, Teardown)
+ SetupL, UT_UpdateTimerEventL, Teardown)
EUNIT_TEST(
"IsRoamingBetweenAPsAllowed - test ",
"CMusEngMceSession",
"IsRoamingBetweenAPsAllowed",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_IsRoamingBetweenAPsAllowedL, Teardown)
-
+ SetupL, UT_IsRoamingBetweenAPsAllowedL, Teardown)
+
+EUNIT_TEST(
+ "SaveContactL - test ",
+ "CMusEngMceSession",
+ "SaveContactL",
+ "FUNCTIONALITY",
+ SetupL, UT_SaveContactL, Teardown)
+
+EUNIT_TEST(
+ "Rect - test ",
+ "CMusEngMceSession",
+ "Rect",
+ "FUNCTIONALITY",
+ SetupL, UT_RectL, Teardown)
+
+EUNIT_TEST(
+ "SetRectL - test ",
+ "CMusEngMceSession",
+ "SetRectL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetRectLL, Teardown)
+
+EUNIT_TEST(
+ "SecondaryRect - test ",
+ "CMusEngMceSession",
+ "SecondaryRect",
+ "FUNCTIONALITY",
+ SetupL, UT_SecondaryRectL, Teardown)
+
+EUNIT_TEST(
+ "SetSecondaryRectL - test ",
+ "CMusEngMceSession",
+ "SetSecondaryRectL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetSecondaryRectLL, Teardown)
+
EUNIT_TEST(
- "VolumeChanged - test ",
+ "EnableDisplayL - test ",
+ "CMusEngMceSession",
+ "EnableDisplayL",
+ "FUNCTIONALITY",
+ SetupL, UT_EnableDisplayLL, Teardown)
+
+EUNIT_TEST(
+ "SetOrientationL - test ",
+ "CMusEngMceSession",
+ "SetOrientationL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusEngMceSession_SetOrientationLL, Teardown)
+
+EUNIT_TEST(
+ "SetEncodingDeviceL - test ",
+ "CMusEngMceSession",
+ "SetEncodingDeviceL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetEncodingDeviceLL, Teardown)
+
+EUNIT_TEST(
+ "SetCodecConfigKeyL - test ",
+ "CMusEngMceSession",
+ "SetCodecConfigKeyL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetCodecConfigKeyLL, Teardown)
+
+EUNIT_TEST(
+ "ReadCodecConfigKeyL - test ",
+ "CMusEngMceSession",
+ "ReadCodecConfigKeyL",
+ "FUNCTIONALITY",
+ SetupL, UT_ReadCodecConfigKeyLL, Teardown)
+
+EUNIT_TEST(
+ "StoreEncoderConfigInfoL - test ",
+ "CMusEngMceSession",
+ "StoreEncoderConfigInfoL",
+ "FUNCTIONALITY",
+ SetupL, UT_StoreEncoderConfigInfoLL, Teardown)
+
+EUNIT_TEST(
+ "StreamStreaming - test ",
"CMusEngMceSession",
- "VolumeChanged",
+ "StreamStreaming",
+ "FUNCTIONALITY",
+ SetupL, UT_StreamStreamingL, Teardown)
+
+EUNIT_TEST(
+ "InformObserverAboutSessionStateChange - test ",
+ "CMusEngMceSession",
+ "InformObserverAboutSessionStateChange",
+ "FUNCTIONALITY",
+ SetupL, UT_InformObserverAboutSessionStateChangeL, Teardown)
+
+EUNIT_TEST(
+ "InformObserverAboutSessionUpdate - test ",
+ "CMusEngMceSession",
+ "InformObserverAboutSessionUpdate",
+ "FUNCTIONALITY",
+ SetupL, UT_InformObserverAboutSessionUpdateL, Teardown)
+
+EUNIT_TEST(
+ "InformObserverAboutSessionFailure - test ",
+ "CMusEngMceSession",
+ "InformObserverAboutSessionFailure",
+ "FUNCTIONALITY",
+ SetupL, UT_InformObserverAboutSessionFailureL, Teardown)
+
+EUNIT_TEST(
+ "InformObserverAboutPlayerStateChange - test ",
+ "CMusEngMceSession",
+ "InformObserverAboutPlayerStateChange",
+ "FUNCTIONALITY",
+ SetupL, UT_InformObserverAboutPlayerStateChangeL, Teardown)
+
+EUNIT_TEST(
+ "InformObserverAboutPlayerUpdate - test ",
+ "CMusEngMceSession",
+ "InformObserverAboutPlayerUpdate",
"FUNCTIONALITY",
- SetupL, UT_CMusEngMceSession_VolumeChangedL, Teardown)
+ SetupL, UT_InformObserverAboutPlayerUpdateL, Teardown)
+
+EUNIT_TEST(
+ "InformObserverAboutPlayerFailure - test ",
+ "CMusEngMceSession",
+ "InformObserverAboutPlayerFailure",
+ "FUNCTIONALITY",
+ SetupL, UT_InformObserverAboutPlayerFailureL, Teardown)
+EUNIT_TEST(
+ "LcUiProviderL - test ",
+ "CMusEngMceSession",
+ "LcUiProviderL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcUiProviderL, Teardown)
+EUNIT_TEST(
+ "IsBackgroundStartup - test ",
+ "CMusEngMceSession",
+ "IsBackgroundStartup",
+ "FUNCTIONALITY",
+ SetupL, UI_IsBackgroundStartupL, Teardown)
+
+EUNIT_TEST(
+ "InformUiProviderAboutReceivingStart - test ",
+ "CMusEngMceSession",
+ "InformUiProviderAboutReceivingStart",
+ "FUNCTIONALITY",
+ SetupL, UT_InformUiProviderAboutReceivingStartL, Teardown)
+
+EUNIT_TEST(
+ "SetForegroundStatus - test ",
+ "CMusEngMceSession",
+ "SetForegroundStatus",
+ "FUNCTIONALITY",
+ SetupL, UT_SetForegroundStatusL, Teardown)
+
+EUNIT_TEST(
+ "UpdateLcSessionL - test ",
+ "CMusEngMceSession",
+ "UpdateL",
+ "FUNCTIONALITY",
+ SetupL, UT_UpdateLcSessionLL, Teardown)
+
+
EUNIT_END_TEST_TABLE
// END OF FILE
+
+
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengmceutils.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengmceutils.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -97,16 +97,6 @@
CEUnitTestSuiteClass::ConstructL();
}
-
-// -----------------------------------------------------------------------------
-// From MMusSipProfileUser
-// -----------------------------------------------------------------------------
-//
-TBool UT_MusEngMceUtils::IsRoamingBetweenAPsAllowed()
- {
- return ETrue; // Dummy implementation
- }
-
// -----------------------------------------------------------------------------
//
@@ -115,7 +105,9 @@
void UT_MusEngMceUtils::SetupL()
{
iManager = CMceManager::NewL( TUid::Null(), NULL );
- iProfileHandler = CMusSipProfileHandler::NewL( *this );
+ iObserver = new( ELeave ) CMusEngObserverStub;
+ iObserver->iRoamingBetweenAPsAllowed = ETrue;
+ iProfileHandler = CMusSipProfileHandler::NewL( *iObserver );
iProfileHandler->CreateProfileL( KSipProfileId );
iEmptySession = CMceOutSession::NewL( *iManager,
@@ -162,8 +154,10 @@
// Video part
CMceVideoStream* videoIn = CMceVideoStream::NewLC();
- videoIn->AddSinkL( CMceDisplaySink::NewLC( *iManager ) );
+ CMceDisplaySink* receivingDisplay = CMceDisplaySink::NewLC( *iManager );
+ videoIn->AddSinkL( receivingDisplay );
CleanupStack::Pop();
+ iReceivingDisplay = receivingDisplay;
videoIn->SetSourceL( CMceRtpSource::NewLC() );
CleanupStack::Pop();
@@ -172,6 +166,56 @@
CleanupStack::Pop( videoIn );
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_MusEngMceUtils::Setup2L()
+ {
+ iManager = CMceManager::NewL( TUid::Null(), NULL );
+ iObserver = new( ELeave ) CMusEngObserverStub;
+ iObserver->iRoamingBetweenAPsAllowed = ETrue;
+ iProfileHandler = CMusSipProfileHandler::NewL( *iObserver );
+
+ iProfileHandler->CreateProfileL( KSipProfileId );
+ iEmptySession = CMceOutSession::NewL( *iManager,
+ *iProfileHandler->Profile(),
+ KTestRecipientSipUri8() );
+
+ // Contruct an outgoing video sesssion
+ iVideoOutSession = CMceOutSession::NewL( *iManager,
+ *iProfileHandler->Profile(),
+ KTestRecipientSipUri8() );
+
+
+ CMceVideoStream* videoOut = CMceVideoStream::NewLC();
+
+ videoOut->AddSinkL( CMceRtpSink::NewLC() );
+ CleanupStack::Pop();
+
+ videoOut->AddSinkL( CMceDisplaySink::NewLC( *iManager ) );
+ CleanupStack::Pop();
+
+ videoOut->SetSourceL( CMceCameraSource::NewLC( *iManager ) );
+ CleanupStack::Pop();
+
+ // Video part
+ CMceVideoStream* videoIn = CMceVideoStream::NewLC();
+
+ CMceDisplaySink* receivingDisplay = CMceDisplaySink::NewLC( *iManager );
+ videoIn->AddSinkL( receivingDisplay );
+ CleanupStack::Pop();
+ iReceivingDisplay = receivingDisplay;
+
+ videoIn->SetSourceL( CMceRtpSource::NewLC() );
+ CleanupStack::Pop();
+
+ videoOut->BindL( videoIn );
+ CleanupStack::Pop( videoIn );
+
+ iVideoOutSession->AddStreamL( videoOut );
+ CleanupStack::Pop( videoOut );
+ }
// -----------------------------------------------------------------------------
//
@@ -182,8 +226,11 @@
delete iEmptySession;
delete iVideoOutSession;
delete iVideoInSession;
+ iVideoInSession = NULL;
delete iProfileHandler;
+ delete iObserver;
delete iManager;
+ iReceivingDisplay = NULL; // Not owned
}
@@ -196,7 +243,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_IsVideoInStreamL()
+void UT_MusEngMceUtils::UT_IsVideoInStreamL()
{
// Stream 0 is audio stream
EUNIT_ASSERT( !MusEngMceUtils::IsVideoInStream(
@@ -221,7 +268,31 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_IsAudioInStreamL()
+void UT_MusEngMceUtils::UT_IsVideoOutStreamL()
+ {
+ // Stream 0 is audio stream
+ EUNIT_ASSERT( !MusEngMceUtils::IsVideoOutStream(
+ *iVideoInSession->Streams()[0] ) )
+
+ // No sink
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ EUNIT_ASSERT( !MusEngMceUtils::IsVideoOutStream( *videoStream ) )
+ CleanupStack::PopAndDestroy( videoStream );
+
+ // display sink
+ EUNIT_ASSERT( !MusEngMceUtils::IsVideoOutStream(
+ *iVideoInSession->Streams()[1] ) )
+
+ // Video outstream
+ EUNIT_ASSERT( MusEngMceUtils::IsVideoOutStream(
+ *iVideoOutSession->Streams()[0] ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_MusEngMceUtils::UT_IsAudioInStreamL()
{
// Stream 0 is video stream
EUNIT_ASSERT( !MusEngMceUtils::IsAudioInStream(
@@ -248,7 +319,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetVideoOutStreamLL()
+void UT_MusEngMceUtils::UT_GetVideoOutStreamLL()
{
// No streams, must fail
EUNIT_ASSERT_SPECIFIC_LEAVE(
@@ -273,15 +344,30 @@
MusEngMceUtils::GetVideoOutStreamL( *iVideoInSession ),
KErrNotFound )
- // One outgoing video stream, succeeds
+ // One incoming video stream with bound outstream, must find bound stream
+ CMceVideoStream* boundVideoOut = CMceVideoStream::NewLC();
+ boundVideoOut->AddSinkL( CMceRtpSink::NewLC() );
+ CleanupStack::Pop();
+ boundVideoOut->SetSourceL( CMceCameraSource::NewLC( *iManager ) );
+ CleanupStack::Pop();
+ reinterpret_cast<CMceVideoStream*>(
+ iVideoInSession->Streams()[ 1 ] )->BindL( boundVideoOut );
+ CleanupStack::Pop( boundVideoOut );
CMceVideoStream* videoStream = MusEngMceUtils::GetVideoOutStreamL(
- *iVideoOutSession );
+ *iVideoInSession );
+ EUNIT_ASSERT( videoStream )
+ EUNIT_ASSERT( videoStream->Type() == KMceVideo )
+ EUNIT_ASSERT( videoStream->Sinks().Count() == 1 ) // Rtp
+ EUNIT_ASSERT( videoStream->Sinks()[0]->Type() == KMceRTPSink )
+
+ // One outgoing video stream, succeeds
+ videoStream = MusEngMceUtils::GetVideoOutStreamL( *iVideoOutSession );
EUNIT_ASSERT( videoStream )
EUNIT_ASSERT( videoStream->Type() == KMceVideo )
EUNIT_ASSERT( videoStream->Sinks().Count() == 2 ) // Rtp, Display
EUNIT_ASSERT( videoStream->Sinks()[0]->Type() == KMceRTPSink )
EUNIT_ASSERT( videoStream->Sinks()[1]->Type() == KMceDisplaySink )
-
+
// Add another stream
CMceVideoStream* videoOut = CMceVideoStream::NewLC();
@@ -306,7 +392,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetVideoInStreamLL()
+void UT_MusEngMceUtils::UT_GetVideoInStreamLL()
{
// No streams, must fail
EUNIT_ASSERT_SPECIFIC_LEAVE(
@@ -362,7 +448,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetRecordingStreamL()
+void UT_MusEngMceUtils::UT_GetRecordingStreamL()
{
CMceVideoStream* recordingStream =
MusEngMceUtils::GetRecordingStream( *iVideoInSession );
@@ -392,7 +478,7 @@
// From stream
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetMediaSinkL()
+void UT_MusEngMceUtils::UT_GetMediaSinkFromStreamL()
{
CMceMediaSink* sink = MusEngMceUtils::GetMediaSink(
*(iVideoInSession->Streams()[0]),
@@ -412,7 +498,7 @@
// From stream
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetMediaSinkLL()
+void UT_MusEngMceUtils::UT_GetMediaSinkLFromStreamL()
{
CMceMediaSink* sink = NULL;
EUNIT_ASSERT_SPECIFIC_LEAVE(
@@ -430,7 +516,7 @@
// From session
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetMediaSink2L()
+void UT_MusEngMceUtils::UT_GetMediaSinkFromSessionL()
{
CMceMediaSink* sink = MusEngMceUtils::GetMediaSink( *iEmptySession,
KMceRTPSink );
@@ -447,7 +533,7 @@
// From session
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetMediaSinkL2L()
+void UT_MusEngMceUtils::UT_GetMediaSinkLFromSessionL()
{
CMceMediaSink* sink = NULL;
EUNIT_ASSERT_SPECIFIC_LEAVE( MusEngMceUtils::GetMediaSinkL( *iEmptySession,
@@ -463,7 +549,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetCameraLL()
+void UT_MusEngMceUtils::UT_GetCameraLL()
{
// empty session fails
EUNIT_ASSERT_SPECIFIC_LEAVE( MusEngMceUtils::GetCameraL( *iEmptySession ),
@@ -497,7 +583,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetFileSourceLL()
+void UT_MusEngMceUtils::UT_GetFileSourceLL()
{
// empty session fails
EUNIT_ASSERT_SPECIFIC_LEAVE(
@@ -538,7 +624,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetDisplayL()
+void UT_MusEngMceUtils::UT_GetDisplayL()
{
CMceDisplaySink* display = MusEngMceUtils::GetDisplay( *iEmptySession );
@@ -555,7 +641,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_GetDisplayLL()
+void UT_MusEngMceUtils::UT_GetDisplayLL()
{
CMceDisplaySink* display = NULL;
@@ -573,7 +659,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_AddDisplayLL()
+void UT_MusEngMceUtils::UT_AddDisplayLL()
{
TRect rect( 110, 111, 112, 113 );
@@ -617,6 +703,14 @@
EUNIT_ASSERT_EQUALS( display->DisplayRectL(), newRect );
CleanupStack::PopAndDestroy( videoStream );
+
+ // Add disabled display
+ CMceVideoStream* videoStream2 = CMceVideoStream::NewLC();
+ MusEngMceUtils::AddDisplayL( *videoStream2, *iManager, rect, ETrue );
+ EUNIT_ASSERT_EQUALS( videoStream2->Sinks().Count(), 1 )
+ EUNIT_ASSERT_EQUALS( videoStream2->Sinks()[0]->Type(), KMceDisplaySink )
+ EUNIT_ASSERT( !videoStream2->Sinks()[0]->IsEnabled() );
+ CleanupStack::PopAndDestroy( videoStream2 );
}
@@ -624,7 +718,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_AddSpeakerLL()
+void UT_MusEngMceUtils::UT_AddSpeakerLL()
{
// Check that speaker cannot be added to video stream
@@ -666,7 +760,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_MusEngMceUtils::UT_MusEngMceUtils_DisableStreamLL()
+void UT_MusEngMceUtils::UT_DisableStreamLL()
{
CMceAudioStream* audioStream = CMceAudioStream::NewLC();
@@ -707,8 +801,72 @@
CleanupStack::PopAndDestroy( audioStream );
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_MusEngMceUtils::UT_GetReceivingDisplayL()
+ {
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplay( *iEmptySession );
+
+ EUNIT_ASSERT( !display )
+
+ display = MusEngMceUtils::GetReceivingDisplay( *iVideoOutSession );
+
+ EUNIT_ASSERT( display )
+ EUNIT_ASSERT( display->Type() == KMceDisplaySink )
+ EUNIT_ASSERT( display == iReceivingDisplay )
+ }
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_MusEngMceUtils::UT_GetReceivingDisplayLL()
+ {
+ CMceDisplaySink* display = NULL;
+
+ EUNIT_ASSERT_SPECIFIC_LEAVE( MusEngMceUtils::GetReceivingDisplayL( *iEmptySession ),
+ KErrNotFound )
+
+ display = MusEngMceUtils::GetReceivingDisplayL( *iVideoOutSession );
+
+ EUNIT_ASSERT( display )
+ EUNIT_ASSERT( display->Type() == KMceDisplaySink )
+ EUNIT_ASSERT( display == iReceivingDisplay )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_MusEngMceUtils::UT_GetVfDisplayL()
+ {
+ CMceDisplaySink* display = MusEngMceUtils::GetVfDisplay( *iEmptySession );
+
+ EUNIT_ASSERT( !display )
+
+ display = MusEngMceUtils::GetVfDisplay( *iVideoOutSession );
+
+ EUNIT_ASSERT( display )
+ EUNIT_ASSERT( display->Type() == KMceDisplaySink )
+ EUNIT_ASSERT( display != iReceivingDisplay )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_MusEngMceUtils::UT_EnableInactivityTimerL()
+ {
+ // Instream not found, nothing is done
+ EUNIT_ASSERT_EQUALS( MusEngMceUtils::EnableInactivityTimer( *iEmptySession, 1000 ), KErrNotFound );
+
+ // In stream found
+ EUNIT_ASSERT_EQUALS( MusEngMceUtils::EnableInactivityTimer( *iVideoOutSession, 1000 ), KErrNone );
+ }
+
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -721,113 +879,147 @@
"MusEngMceUtils",
"IsVideoInStream",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_IsVideoInStreamL, Teardown)
+ SetupL, UT_IsVideoInStreamL, Teardown)
EUNIT_TEST(
+ "IsVideoOutStream - test ",
+ "MusEngMceUtils",
+ "IsVideoOutStream",
+ "FUNCTIONALITY",
+ SetupL, UT_IsVideoOutStreamL, Teardown)
+
+EUNIT_TEST(
"IsAudioInStream - test ",
"MusEngMceUtils",
"IsAudioInStream",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_IsAudioInStreamL, Teardown)
+ SetupL, UT_IsAudioInStreamL, Teardown)
EUNIT_TEST(
"GetVideoOutStreamL - test ",
"MusEngMceUtils",
"GetVideoOutStreamL",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetVideoOutStreamLL, Teardown)
+ SetupL, UT_GetVideoOutStreamLL, Teardown)
EUNIT_TEST(
"GetVideoInStreamL - test ",
"MusEngMceUtils",
"GetVideoInStreamL",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetVideoInStreamLL, Teardown)
+ SetupL, UT_GetVideoInStreamLL, Teardown)
EUNIT_TEST(
"GetRecordingStream - test ",
"MusEngMceUtils",
"GetRecordingStream",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetRecordingStreamL, Teardown)
+ SetupL, UT_GetRecordingStreamL, Teardown)
EUNIT_TEST(
"GetMediaSink - test ",
"MusEngMceUtils",
"GetMediaSink",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetMediaSinkL, Teardown)
+ SetupL, UT_GetMediaSinkFromStreamL, Teardown)
EUNIT_TEST(
"GetMediaSinkL - test ",
"MusEngMceUtils",
"GetMediaSinkL",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetMediaSinkLL, Teardown)
+ SetupL, UT_GetMediaSinkLFromStreamL, Teardown)
EUNIT_TEST(
"GetMediaSink2 - test ",
"MusEngMceUtils",
"GetMediaSink2",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetMediaSink2L, Teardown)
+ SetupL, UT_GetMediaSinkFromSessionL, Teardown)
EUNIT_TEST(
"GetMediaSinkL2 - test ",
"MusEngMceUtils",
"GetMediaSinkL2",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetMediaSinkL2L, Teardown)
+ SetupL, UT_GetMediaSinkLFromSessionL, Teardown)
EUNIT_TEST(
"GetCameraL - test ",
"MusEngMceUtils",
"GetCameraL",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetCameraLL, Teardown)
+ SetupL, UT_GetCameraLL, Teardown)
EUNIT_TEST(
"GetFileSourceL - test ",
"MusEngMceUtils",
"GetFileSourceL",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetFileSourceLL, Teardown)
+ SetupL, UT_GetFileSourceLL, Teardown)
EUNIT_TEST(
"GetDisplay - test ",
"MusEngMceUtils",
"GetDisplay",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetDisplayL, Teardown)
+ SetupL, UT_GetDisplayL, Teardown)
EUNIT_TEST(
"GetDisplayL - test ",
"MusEngMceUtils",
"GetDisplayL",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_GetDisplayLL, Teardown)
+ SetupL, UT_GetDisplayLL, Teardown)
EUNIT_TEST(
"AddDisplayL - test ",
"MusEngMceUtils",
"AddDisplayL",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_AddDisplayLL, Teardown)
+ SetupL, UT_AddDisplayLL, Teardown)
EUNIT_TEST(
"AddSpeakerL - test ",
"MusEngMceUtils",
"AddSpeakerL",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_AddSpeakerLL, Teardown)
+ SetupL, UT_AddSpeakerLL, Teardown)
EUNIT_TEST(
"DisableStreamL - test ",
"MusEngMceUtils",
"DisableStreamL",
"FUNCTIONALITY",
- SetupL, UT_MusEngMceUtils_DisableStreamLL, Teardown)
+ SetupL, UT_DisableStreamLL, Teardown)
+
+EUNIT_TEST(
+ "GetReceivingDisplay - test ",
+ "MusEngMceUtils",
+ "GetReceivingDisplay",
+ "FUNCTIONALITY",
+ Setup2L, UT_GetReceivingDisplayL, Teardown)
+EUNIT_TEST(
+ "GetReceivingDisplayL - test ",
+ "MusEngMceUtils",
+ "GetReceivingDisplayL",
+ "FUNCTIONALITY",
+ Setup2L, UT_GetReceivingDisplayLL, Teardown)
+
+EUNIT_TEST(
+ "GetVfDisplay - test ",
+ "MusEngMceUtils",
+ "GetVfDisplay",
+ "FUNCTIONALITY",
+ Setup2L, UT_GetVfDisplayL, Teardown)
+
+EUNIT_TEST(
+ "EnableInactivityTimer - test ",
+ "MusEngMceUtils",
+ "EnableInactivityTimer",
+ "FUNCTIONALITY",
+ Setup2L, UT_EnableInactivityTimerL, Teardown)
EUNIT_END_TEST_TABLE
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengorientationhandler.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,217 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-
-// INTERNAL INCLUDES
-#include "ut_musengorientationhandler.h"
-#include "musengorientationhandler.h"
-#include "musengstubs.h"
-#include "musengtestdefs.h"
-#include "musenglivesession.h"
-#include "musengmceutils.h"
-#include <mcecamerasource.h>
-#include <mcedisplaysink.h>
-
-// SYSTEM INCLUDES
-#include <digia/eunit/eunitmacros.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusEngOrientationHandler* UT_CMusEngOrientationHandler::NewL()
- {
- UT_CMusEngOrientationHandler* self = UT_CMusEngOrientationHandler::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusEngOrientationHandler* UT_CMusEngOrientationHandler::NewLC()
- {
- UT_CMusEngOrientationHandler* self = new( ELeave ) UT_CMusEngOrientationHandler();
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusEngOrientationHandler::~UT_CMusEngOrientationHandler()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Default constructor
-// -----------------------------------------------------------------------------
-//
-UT_CMusEngOrientationHandler::UT_CMusEngOrientationHandler()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Second phase construct
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngOrientationHandler::ConstructL()
- {
- // The ConstructL from the base class CEUnitTestSuiteClass must be called.
- // It generates the test case table.
- CEUnitTestSuiteClass::ConstructL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngOrientationHandler::SetupL()
- {
- iObserver = new( ELeave ) CMusEngObserverStub;
-
- iLiveSession = CMusEngLiveSession::NewL( TRect(0, 0, 100, 100),
- *iObserver,
- *iObserver,
- *iObserver );
-
- iLiveSession->iOperatorVariant = EFalse;
-
- iHandler = CMusEngOrientationHandler::NewL( *iLiveSession, *iObserver );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngOrientationHandler::Teardown()
- {
- delete iHandler;
- delete iLiveSession;
- delete iObserver;
- }
-
-
-
-// TEST CASES
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngOrientationHandler::UT_NewLL()
- {
- EUNIT_ASSERT( iHandler );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngOrientationHandler::UT_RefreshOrientationL()
- {
- ESTABLISH_OUT_SESSION( iLiveSession )
-
- // Refresh when both camera and display are enabled
- CMceCameraSource* camera =
- MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
- camera->iIsEnabled = ETrue;
- CMceDisplaySink* display =
- MusEngMceUtils::GetDisplayL( *(iLiveSession->iSession) );
- display->iIsEnabled = ETrue;
- EUNIT_ASSERT( !iHandler->IsActive() );
- iHandler->RefreshOrientationL();
- EUNIT_ASSERT( iHandler->IsActive() );
- EUNIT_ASSERT( !camera->iIsEnabled );
- EUNIT_ASSERT( !display->iIsEnabled );
- iHandler->Cancel();
- iHandler->RunL(); // Simulate completion
- EUNIT_ASSERT( !iHandler->IsActive() );
- EUNIT_ASSERT( camera->iIsEnabled );
- EUNIT_ASSERT( display->iIsEnabled );
-
- // Refresh when camera is disabled, display disabled
- camera->iIsEnabled = EFalse;
- display->iIsEnabled = ETrue;
- iHandler->RefreshOrientationL();
- EUNIT_ASSERT( iHandler->IsActive() );
- EUNIT_ASSERT( !camera->iIsEnabled );
- EUNIT_ASSERT( !display->iIsEnabled );
- iHandler->Cancel();
- iHandler->RunL(); // Simulate completion
- EUNIT_ASSERT( !iHandler->IsActive() );
- EUNIT_ASSERT( !camera->iIsEnabled );
- EUNIT_ASSERT( display->iIsEnabled );
-
- // Display and camera gets resumed while delayed orientation handling is ongoing, pausing
- // display after handling completes should not happen
- camera->iIsEnabled = ETrue;
- display->iIsEnabled = EFalse;
- iHandler->RefreshOrientationL();
- EUNIT_ASSERT( iHandler->IsActive() );
- EUNIT_ASSERT( !camera->iIsEnabled );
- EUNIT_ASSERT( !display->iIsEnabled );
- display->iIsEnabled = ETrue;
- camera->iIsEnabled = ETrue;
- iHandler->UpdateL();
- iHandler->Cancel();
- iHandler->RunL(); // Simulate completion
- EUNIT_ASSERT( !iHandler->IsActive() );
- EUNIT_ASSERT( camera->iIsEnabled );
- EUNIT_ASSERT( display->iIsEnabled );
- }
-
-
-// TEST TABLE
-
-EUNIT_BEGIN_TEST_TABLE(
- UT_CMusEngOrientationHandler,
- "UT_CMusEngLiveSesssion",
- "UNIT" )
-
-EUNIT_TEST(
- "NewL - test ",
- "CMusEngOrienationHandler",
- "NewL",
- "FUNCTIONALITY",
- SetupL, UT_NewLL, Teardown)
-
-EUNIT_TEST(
- "UT_RefreshOrientationL - test ",
- "CMusEngOrienationHandler",
- "NewL",
- "FUNCTIONALITY",
- SetupL, UT_RefreshOrientationL, Teardown)
-
-EUNIT_END_TEST_TABLE
-
-// END OF FILE
-
-
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengoutsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengoutsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -20,15 +20,16 @@
#include "ut_musengoutsession.h"
#include "musengstubs.h"
#include "musengtestdefs.h"
-
+#include "sipprofile.h"
#include "musenglivesession.h"
#include "musengclipsession.h"
#include "mussipprofilehandler.h"
-
+#include "mussessionproperties.h"
+#include "contactenginestub.h"
// SYSTEM INCLUDES
+#include <lcsourcefilecontrol.h>
#include <digia/eunit/eunitmacros.h>
-
#include <mceoutsession.h>
#include <mcestreambundle.h>
#include <mceaudiostream.h>
@@ -38,13 +39,15 @@
#include <mceh263codec.h>
#include <mceavccodec.h>
#include <mceaudiocodec.h>
+#include <mcecamerasource.h>
-#include <sipprofile.h>
+
#include <sipstrings.h>
#include <audiopreference.h>
#include <uri8.h>
+_LIT( KTestContactName, "nokia" );
// -----------------------------------------------------------------------------
//
@@ -109,17 +112,25 @@
//
void UT_CMusEngOutSession::SetupL()
{
- iObserver = new( ELeave ) CMusEngObserverStub;
- iLiveSession = CMusEngLiveSession::NewL( KNullDesC(),
- TRect(0,0, 100,100),
- *iObserver,
- *iObserver,
- *iObserver );
+
+ PropertyHelper::SetErrorCode( KErrNone );
+
+ iLcSessionObserver = new( ELeave )CLcSessionObserverStub;
+ iLcUiProvider = new( ELeave )CLcUiProviderStub;
+ iAudioRoutingObserver = new( ELeave )CMusEngObserverStub;
+ // Name is published using publish/subscribe key by Availblity
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ KTestContactName ) );
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+
SIPStrings::OpenL();
- iLiveSession->iPrivate = EFalse;
- iLiveSession->iPrivateNumber = EFalse;
-
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KRemoteSipAddress,
+ KTestRecipientSipUri ) );
}
@@ -131,26 +142,28 @@
{
SIPStrings::Close();
delete iLiveSession;
- delete iObserver;
+ delete iLcSessionObserver;
+ delete iLcUiProvider;
+ delete iAudioRoutingObserver;
+ PropertyHelper::SetErrorCode( KErrNone );
+ PropertyHelper::Close();
}
-
// TEST CASES
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngOutSession::UT_CMusEngOutSession_InviteLL()
+void UT_CMusEngOutSession::UT_EstablishLcSessionL()
{
-
// Initial state
EUNIT_ASSERT( !iLiveSession->iSession );
- // Simulate failing session structure construction.
- iLiveSession->InviteL( KTestRecipientSipUri );
+ ///////////////////////////////////////////////////////////////////////////
+ // 1. Simulate failing session structure construction.
+ iLiveSession->EstablishLcSessionL();
iLiveSession->iSession->iState = CMceSession::EIdle;
delete iLiveSession->iSession->Streams()[0];
@@ -158,11 +171,13 @@
iLiveSession->iSession->Streams();
const_cast<RPointerArray<CMceMediaStream>&>(constStreams)[0] = NULL;
- // Normal invite
- iLiveSession->InviteL( KTestRecipientSipUri );
+ ///////////////////////////////////////////////////////////////////////////
+ // 2. Normal invite
+ iLiveSession->EstablishLcSessionL();
EUNIT_ASSERT( iLiveSession->iSession );
// Next assertion ensures that session structure is new
+ EUNIT_ASSERT( iLiveSession->iSession->Streams().Count() > 0 );
EUNIT_ASSERT( iLiveSession->iSession->Streams()[0] );
EUNIT_ASSERT( *(iLiveSession->iRecipient) == KTestRecipientSipUri8() );
EUNIT_ASSERT( iLiveSession->iSession->State() == CMceSession::EOffering );
@@ -177,15 +192,20 @@
EUNIT_ASSERT( iLiveSession->iSession->iSessionSDPLines->Count() == 1 );
EUNIT_ASSERT( iLiveSession->iSession->iSessionSDPLines->MdcaPoint( 0 ) ==
KMusEngSessionSdpLineXApplication() );
-
- // Normal operator invite
+
+ // Ensure there is no SDP lines at media level
+ MDesC8Array* mediaSdpLines =
+ iLiveSession->iSession->Streams()[0]->iMediaSDPLines;
+ EUNIT_ASSERT( mediaSdpLines );
+ EUNIT_ASSERT( mediaSdpLines->MdcaCount() == 0 );
+
+ ///////////////////////////////////////////////////////////////////////////
+ // 3. Normal operator invite
delete iLiveSession;
iLiveSession = NULL;
- iLiveSession = CMusEngLiveSession::NewL( KNullDesC,
- TRect(0,0, 100,100),
- *iObserver,
- *iObserver,
- *iObserver );
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
iLiveSession->iOperatorVariant = ETrue;
CSIPProfile* profile = iLiveSession->iSipProfileHandler->Profile();
delete profile->iArray;
@@ -193,11 +213,10 @@
profile->iArray = new ( ELeave ) CDesC8ArrayFlat( 1 );
profile->iArray->AppendL( KMusTestUri );
- iLiveSession->InviteL( KTestRecipientSipUri );
+ iLiveSession->EstablishLcSessionL();
EUNIT_ASSERT( iLiveSession->iSession );
// Next assertion ensures that session structure is new
- EUNIT_ASSERT( iLiveSession->iSession->Streams()[0] );
EUNIT_ASSERT( *(iLiveSession->iRecipient) == KTestRecipientSipUri8() );
EUNIT_ASSERT( iLiveSession->iSession->State() == CMceSession::EOffering );
@@ -211,6 +230,8 @@
EUNIT_ASSERT( iLiveSession->iSession->iHeaders->MdcaPoint( 2 ) ==
KMusPPreferredIdentityTestHeader() );
+ // Ensure there is only a=type and a=application attributes (and no b=TIAS)
+ // at session level for operator variant
EUNIT_ASSERT( iLiveSession->iSession->iSessionSDPLines );
EUNIT_ASSERT( iLiveSession->iSession->iSessionSDPLines->Count() == 2 );
EUNIT_ASSERT( iLiveSession->iSession->iSessionSDPLines->MdcaPoint( 0 ) ==
@@ -219,77 +240,223 @@
KMusEngSessionSdpLineType() )
EUNIT_ASSERT( iLiveSession->iSession->Streams().Count() > 0 );
- TBool foundBandwidthLineFromMediaLevel( EFalse );
- for ( TInt i = 0; i < iLiveSession->iSession->Streams().Count(); i++ )
- {
- if ( iLiveSession->iSession->Streams()[0]->Type() == KMceVideo )
- {
- if ( iLiveSession->iSession->Streams()[0]->iMediaSDPLines->MdcaCount() > 0 &&
- iLiveSession->iSession->Streams()[0]->iMediaSDPLines->MdcaPoint( 0 ) ==
- KMusEngSessionSdpLineBandwidthField() )
- {
- foundBandwidthLineFromMediaLevel = ETrue;
- }
- }
- }
- EUNIT_ASSERT( foundBandwidthLineFromMediaLevel );
-
- // Try invite again, must fail
- TRAPD( error, iLiveSession->InviteL( KTestRecipientSipUri ) );
+ EUNIT_ASSERT( iLiveSession->iSession->Streams()[0] );
+ EUNIT_ASSERT( iLiveSession->iSession->Streams()[0]->Type() == KMceVideo );
+
+ // Ensure there is only b=AS and no b=TIAS present at media level
+ // for operator variant
+ mediaSdpLines = iLiveSession->iSession->Streams()[0]->iMediaSDPLines;
+ EUNIT_ASSERT( mediaSdpLines );
+ EUNIT_ASSERT( mediaSdpLines->MdcaCount() == 1 );
+ EUNIT_ASSERT( mediaSdpLines->MdcaPoint( 0 ) ==
+ KMusEngSessionSdpLineBandwidthField() );
+
+ ///////////////////////////////////////////////////////////////////////////
+ // 4. Try invite again, must fail
+ TRAPD( error, iLiveSession->EstablishLcSessionL() );
MUS_TEST_FORWARD_ALLOC_FAILURE( error );
EUNIT_ASSERT( error == KErrAlreadyExists );
- // Simulate normal session ending, no need for observer call in this case
+ // 5. Simulate normal session ending, no need for observer call in this case
iLiveSession->iSession->iState = CMceSession::ETerminated;
// Try again. Establishment must be OK with new MceSession object
- iLiveSession->InviteL( KTestRecipientSipUri );
+ iLiveSession->EstablishLcSessionL();
EUNIT_ASSERT( iLiveSession->iSession->State() == CMceSession::EOffering );
-
-
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOutSession::UT_EstablishLcSession_RecipientResolvingL()
+ {
+ // Manual query from user,
+ // the user cancels the query (MLcUiProvider::Query returns EFalse)
+ PropertyHelper::SetErrorCode( KErrNotFound );
+ TRAPD( err, iLiveSession->EstablishLcSessionL() )
+ if ( err == KErrNoMemory )
+ {
+ User::Leave( err );
+ }
+ EUNIT_ASSERT_EQUALS( KErrCancel, err )
+
+ // Manual query from user succeeds
+ iLcSessionObserver->Reset();
+ iLcUiProvider->Reset();
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ iLcUiProvider->iSimulatedReturnValue = ETrue;
+ iLcUiProvider->iRecipient.Set( KTestRecipient2SipUri );
+ PropertyHelper::SetErrorCode( KErrNotFound );
+ iLiveSession->EstablishLcSessionL();
+ EUNIT_ASSERT_EQUALS( 1, iLiveSession->iTriedInvitations )
+ EUNIT_ASSERT_EQUALS(
+ TInt( CLcUiProviderStub::EInputRecipient ),
+ iLcUiProvider->iCalledFunction )
+ EUNIT_ASSERT_EQUALS(
+ KTestRecipient2SipUri8(),
+ *( iLiveSession->iRecipient ) )
+ EUNIT_ASSERT_EQUALS( KTestRecipient2SipUri(),iLiveSession->RemoteDisplayName() )
+
+ // Multiple resolved recipients
+ iLcSessionObserver->Reset();
+ iLcUiProvider->Reset();
+ iLcUiProvider->iSimulatedReturnValue = ETrue;
+ PropertyHelper::SetErrorCode( KErrNone );
+ TBuf<200> multipleAddr;
+ multipleAddr.Append( KTestRecipient2SipUri );
+ multipleAddr.Append( _L(",") );
+ multipleAddr.Append( KTestRecipientSipUri );
+
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KRemoteSipAddress,
+ multipleAddr ) );
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ iLiveSession->EstablishLcSessionL();
+
+ EUNIT_ASSERT_EQUALS( 0, iLiveSession->iTriedInvitations )
+ EUNIT_ASSERT_EQUALS(
+ TInt( CLcUiProviderStub::ESelectRecipient ),
+ iLcUiProvider->iCalledFunction )
+ // Stub selected first one from multiple addresses list
+ EUNIT_ASSERT_EQUALS(
+ KTestRecipient2SipUri8(),
+ *( iLiveSession->iRecipient ) )
+
+ // Multiple resolved recipient, user doesn't select any
+ iLcSessionObserver->Reset();
+ iLcUiProvider->Reset();
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ TRAP( err, iLiveSession->EstablishLcSessionL() );
+ if ( err == KErrNoMemory )
+ {
+ User::Leave( err );
+ }
+ EUNIT_ASSERT_EQUALS( KErrNotFound, err )
+ EUNIT_ASSERT_EQUALS( 0, iLiveSession->iTriedInvitations )
+ EUNIT_ASSERT_EQUALS(
+ TInt( CLcUiProviderStub::ESelectRecipient ),
+ iLcUiProvider->iCalledFunction )
+
+ // Malformed multiple addresses, selection fails, manual entry is launched
+ iLcSessionObserver->Reset();
+ iLcUiProvider->Reset();
+ iLcUiProvider->iSimulatedReturnValue = ETrue;
+ iLcUiProvider->iRecipient.Set( KTestRecipient2SipUri );
+ PropertyHelper::SetErrorCode( KErrNone );
+ multipleAddr.Copy( _L(",") );
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KRemoteSipAddress,
+ multipleAddr ) );
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ TRAP( err, iLiveSession->EstablishLcSessionL() );
+ if ( err == KErrNoMemory )
+ {
+ User::Leave( err );
+ }
+ EUNIT_ASSERT_EQUALS(
+ TInt( CLcUiProviderStub::EInputRecipient ),
+ iLcUiProvider->iCalledFunction )
+ EUNIT_ASSERT_EQUALS( KErrNone, err );
+ EUNIT_ASSERT_EQUALS( 1, iLiveSession->iTriedInvitations )
+ EUNIT_ASSERT_EQUALS(
+ KTestRecipient2SipUri8(),
+ *( iLiveSession->iRecipient ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOutSession::UT_EstablishLcSession_RegistrationPendingL()
+ {
+ // Set registration as pending
+ iLiveSession->iSipProfileHandler->Profile()->iTBoolValue = EFalse;
+
+ iLiveSession->EstablishLcSessionL();
+ EUNIT_ASSERT( !iLiveSession->iSession )
+ EUNIT_ASSERT( iLiveSession->iRegistrationPending )
+
+ // Fake registration, session starts
+ iLiveSession->iSipProfileHandler->Profile()->iTBoolValue = ETrue;
+ iLiveSession->ProfileRegistered();
+
+ if ( iLcSessionObserver->iCalledFunction == CLcSessionObserverStub::ESessionFailed )
+ {
+ // Session didn't start because of running out of memory
+ User::Leave( KErrNoMemory );
+ }
+
+ iLiveSession->iDeltaTimer->Remove( iLiveSession->iInvitationResponseEntry );
+ CMusEngMceOutSession::InvitationResponseTimerExpired( iLiveSession );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ENoAnswer ) )
+ iLcSessionObserver->Reset();
+
+ EUNIT_ASSERT( iLiveSession->iSession )
+ EUNIT_ASSERT_EQUALS( iLiveSession->iSession->State(),
+ CMceSession::EOffering )
+ EUNIT_ASSERT( !iLiveSession->iRegistrationPending )
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngOutSession::UT_CMusEngOutSession_CancelInviteLL()
+void UT_CMusEngOutSession::UT_TerminateLcSessionL()
{
- // Try to cancel, must fail
- TRAPD( error, iLiveSession->CancelInviteL() );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
+ // No MCE session
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iLiveSession->TerminateLcSessionL(), KErrNotReady )
+
+ // Cancel a session that is in offering state
+ iLiveSession->EstablishLcSessionL();
+ EUNIT_ASSERT_EQUALS( TInt( CMceSession::EOffering ),
+ TInt( iLiveSession->iSession->iState ) )
+ iLiveSession->TerminateLcSessionL();
+ EUNIT_ASSERT_EQUALS( TInt( CMceSession::ECancelling ),
+ TInt( iLiveSession->iSession->iState ) )
- // Invite
- iLiveSession->InviteL( KTestRecipientSipUri );
- EUNIT_ASSERT( iLiveSession->iSession->State() == CMceSession::EOffering );
-
- // Cancel
- iLiveSession->CancelInviteL();
- EUNIT_ASSERT( iLiveSession->iSession->State() == CMceSession::ECancelling );
-
- // Try to cancel again, does nothing
- iLiveSession->CancelInviteL();
- EUNIT_ASSERT( iLiveSession->iSession->State() == CMceSession::ECancelling );
+ // Terminate an established session
+ iLiveSession->iSession->iState = CMceSession::ETerminated;
+ iLiveSession->EstablishLcSessionL();
+ iLiveSession->iSession->iState = CMceSession::EEstablished;
+ iLiveSession->TerminateLcSessionL();
+ EUNIT_ASSERT_EQUALS( TInt( CMceSession::ETerminating ),
+ TInt( iLiveSession->iSession->iState ) )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngOutSession::UT_CMusEngOutSession_EstablishSessionLL()
+void UT_CMusEngOutSession::UT_EstablishSessionLL()
{
// Try to establish, must fail, because of missing session
TRAPD( error, iLiveSession->EstablishSessionL() );
MUS_TEST_FORWARD_ALLOC_FAILURE( error );
EUNIT_ASSERT( error == KErrNotReady );
- iLiveSession->iPrivate = ETrue;
- iLiveSession->iPrivateNumber = EFalse;
// Call to CMusEngOutMceSession::InviteL leads to call to EstablishL
- iLiveSession->InviteL( KTestRecipientSipUri );
+ iLiveSession->EstablishLcSessionL();
// Check that ports are correct
@@ -315,160 +482,205 @@
EUNIT_ASSERT( iLiveSession->iSession->iHeaders->MdcaPoint( 1 ) ==
KMusAcceptHeader() );
EUNIT_ASSERT( iLiveSession->iSession->State() == CMceSession::EOffering );
-
- // Privacy test : Check Private -header & originator
- delete iLiveSession;
- iLiveSession = NULL;
- iLiveSession = CMusEngLiveSession::NewL( KNullDesC(),
- TRect(0,0, 100,100),
- *iObserver,
- *iObserver,
- *iObserver );
- iLiveSession->iPrivate = ETrue;
- iLiveSession->iPrivateNumber = ETrue;
-
- // Call to CMusEngOutMceSession::InviteL leads to call to EstablishL
- iLiveSession->InviteL( KTestRecipientSipUri );
- EUNIT_ASSERT( *iLiveSession->iSession->iOriginator == KMusAnonymousHeader );
-
- EUNIT_ASSERT( iLiveSession->iSession->iHeaders )
- EUNIT_ASSERT( iLiveSession->iSession->iHeaders->Count() == 3 )
- EUNIT_ASSERT( iLiveSession->iSession->iHeaders->MdcaPoint( 0 ) ==
- KMusEngAcceptContactHeader() )
- EUNIT_ASSERT( iLiveSession->iSession->iHeaders->MdcaPoint( 1 ) ==
- KMusAcceptHeader() );
- EUNIT_ASSERT( iLiveSession->iSession->iHeaders->MdcaPoint( 2 ).Find( KMusPrivacyHeader() ) == 0 );
-
-
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngOutSession::UT_CMusEngOutSession_HandleTerminationL()
+void UT_CMusEngOutSession::UT_HandleTerminationL()
{
-
- // Try different values
- iLiveSession->HandleTermination( KSipStatusCode400BadRequest,
- KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionBadRequestCalled );
- iObserver->Reset();
-
- iLiveSession->HandleTermination( KSipStatusCode401Unauthorized,
- KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionUnauthorizedCalled );
- iObserver->Reset();
-
- iLiveSession->HandleTermination( KSipStatusCode402PaymentRequired,
- KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionPaymentRequiredCalled );
- iObserver->Reset();
-
- iLiveSession->HandleTermination( KSipStatusCode404RecipientNotFound,
- KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionRecipientNotFoundCalled );
- iObserver->Reset();
-
- iLiveSession->HandleTermination( KSipStatusCode416UnsupportedUriScheme,
- KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionRecipientNotFoundCalled );
- iObserver->Reset();
-
- iLiveSession->HandleTermination( KSipStatusCode479NotAbleToProcessURI,
- KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionRecipientNotFoundCalled );
- iObserver->Reset();
-
- iLiveSession->HandleTermination(
- KSipStatusCode407ProxyAuthenticationRequired,
- KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionProxyAuthenticationRequiredCalled );
- iObserver->Reset();
-
+ // Try different values
iLiveSession->HandleTermination( KSipStatusCode408ConnectionTimeOut,
KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionRequestTimeOutCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ENoAnswer ) )
+ iLcSessionObserver->Reset();
iLiveSession->HandleTermination( KSipStatusCode415UnsupportedMediaType,
KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionUnsupportedMediaTypeCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ESessionRejected ) )
+ iLcSessionObserver->Reset();
iLiveSession->HandleTermination( KSipStatusCode488NotAcceptableHere,
KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionUnsupportedMediaTypeCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ESessionRejected ) )
+ iLcSessionObserver->Reset();
iLiveSession->HandleTermination( KSipStatusCode606NotAcceptable,
KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionUnsupportedMediaTypeCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ESessionRejected ) )
+ iLcSessionObserver->Reset();
iLiveSession->HandleTermination( KSipStatusCode486BusyHere,
KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionBusyHereCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ERecipientBusy ) )
+ iLcSessionObserver->Reset();
iLiveSession->HandleTermination( KSipStatusCode487RequestCancelled,
KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionRequestCancelledCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ESessionCancelled ) )
+ iLcSessionObserver->Reset();
iLiveSession->HandleTermination( KSipStatusCode603Decline, KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionRejectedCalled );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ESessionRejected ) )
+ iLcSessionObserver->Reset();
iLiveSession->HandleTermination( KSipStatusCode480TemporarilyNotAvailable,
KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionTemporarilyNotAvailable );
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ERecipientTemporarilyNotAvailable ) )
+ iLcSessionObserver->Reset();
// Receive 486 with operator variant
iLiveSession->iOperatorVariant = ETrue;
iLiveSession->HandleTermination( KSipStatusCode486BusyHere, KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionRejectedCalled )
- EUNIT_ASSERT( !iObserver->iSessionBusyHereCalled )
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ESessionRejected ) )
+ iLcSessionObserver->Reset();
iLiveSession->iOperatorVariant = EFalse;
// Normal termination, let the base class handle
iLiveSession->HandleTermination( KSipStatusCode200OK, KNullDesC8() );
- EUNIT_ASSERT( iObserver->iSessionTerminatedCalled ); // called by base class
- iObserver->Reset();
-
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionStateChanged ) )
+ iLcSessionObserver->Reset();
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOutSession::UT_HandleRecipientNotFoundTerminationL()
+ {
+ EUNIT_ASSERT_EQUALS( iLiveSession->iTriedInvitations, 0 );
+
+ // Retry possible when 404 is received but fails because of recipient
+ // proposal is missing for some reason, recipient not found callback
+ // is called instead of retry
+ delete iLiveSession->iRemoteSipAddressProposal;
+ iLiveSession->iRemoteSipAddressProposal = NULL;
+ iLcSessionObserver->Reset();
+ iLiveSession->HandleTermination( KSipStatusCode404RecipientNotFound,
+ KNullDesC8() );
+
+ EUNIT_ASSERT( iLiveSession->iDeltaTimer->IsActive() == ETrue )
+ iLiveSession->AsyncBrakeCompleted( iLiveSession );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ERecipientNotFound ) )
+
+ // Retry possible when 404 is received
+ delete iLiveSession->iRemoteSipAddressProposal;
+ iLiveSession->iRemoteSipAddressProposal = NULL;
+ iLiveSession->iRemoteSipAddressProposal = KTestRecipient2SipUri().AllocL();
+ iLcSessionObserver->Reset();
+ iLcUiProvider->iRecipient.Set( KTestRecipient2SipUri );
+ iLcUiProvider->iSimulatedReturnValue = ETrue;
+ iLiveSession->HandleTermination( KSipStatusCode404RecipientNotFound,
+ KNullDesC8() );
+
+ EUNIT_ASSERT( iLiveSession->iDeltaTimer->IsActive() == ETrue );
+ iLiveSession->AsyncBrakeCompleted( iLiveSession );
+
+ // Memory running out might cause that retry is not done
+ if ( iLcSessionObserver->iCalledFunction == CLcSessionObserverStub::ESessionFailed )
+ {
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT_EQUALS( 1, iLiveSession->iTriedInvitations )
+ EUNIT_ASSERT_EQUALS(
+ KTestRecipient2SipUri8(),
+ *( iLiveSession->iRecipient ) )
+
+ // Retry not anymore possible when 404 received (e.g. manual address query
+ // was done for invite).
+ iLcSessionObserver->Reset();
+ iLiveSession->HandleTermination( KSipStatusCode404RecipientNotFound,
+ KNullDesC8() );
+ EUNIT_ASSERT( iLiveSession->iDeltaTimer->IsActive() == ETrue )
+ iLiveSession->AsyncBrakeCompleted( iLiveSession );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ERecipientNotFound ) )
+
+ // 416 has identical handling
+ iLcSessionObserver->Reset();
+ iLiveSession->HandleTermination( KSipStatusCode416UnsupportedUriScheme,
+ KNullDesC8() );
+ EUNIT_ASSERT( iLiveSession->iDeltaTimer->IsActive() == ETrue );
+ iLiveSession->AsyncBrakeCompleted( iLiveSession );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ERecipientNotFound ) )
+
+ // 479 has identical handling
+ iLcSessionObserver->Reset();
+ iLiveSession->HandleTermination( KSipStatusCode479NotAbleToProcessURI,
+ KNullDesC8() );
+ EUNIT_ASSERT( iLiveSession->iDeltaTimer->IsActive() == ETrue );
+ iLiveSession->AsyncBrakeCompleted( iLiveSession );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iError,
+ TInt( MLcSession::ERecipientNotFound ) )
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngOutSession::UT_CMusEngOutSession_AdjustVideoCodecLL()
+void UT_CMusEngOutSession::UT_AdjustVideoCodecLL()
{
//H263
CMceH263Codec* codecH263 = CMceH263Codec::NewLC( KMceSDPNameH2632000() );
- iLiveSession->CMusEngMceOutSession::AdjustVideoCodecL( *codecH263 );
+ iLiveSession->CMusEngMceOutSession::AdjustVideoCodecL( *codecH263,
+ KMceCameraSource );
// Test payloadtype
EUNIT_ASSERT( codecH263->iPayloadType == 96 )
CleanupStack::PopAndDestroy( codecH263 );
//H264
CMceAvcCodec* codecAvc = CMceAvcCodec::NewLC( KMceSDPNameH264() );
- iLiveSession->CMusEngMceOutSession::AdjustVideoCodecL( *codecAvc );
+ iLiveSession->CMusEngMceOutSession::AdjustVideoCodecL( *codecAvc,
+ KMceCameraSource );
// Test payloadtype
EUNIT_ASSERT( codecAvc->iPayloadType == 98 )
CleanupStack::PopAndDestroy( codecAvc );
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngOutSession::UT_CMusEngOutSession_AdjustAudioCodecLL()
+void UT_CMusEngOutSession::UT_AdjustAudioCodecLL()
{
CMceAudioCodec* codec =
iLiveSession->iManager->SupportedAudioCodecs()[0]->CloneL();
@@ -487,12 +699,11 @@
CleanupStack::PopAndDestroy( codec );
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngOutSession::UT_CMusEngOutSession_CreateMceSessionStructureLL()
+void UT_CMusEngOutSession::UT_CreateMceSessionStructureLL()
{
// Test removal of QoS-lines
@@ -524,14 +735,12 @@
EUNIT_ASSERT( iLiveSession->iSession->Bundles().Count() == 0 )
- CMusEngClipSession* clipSession = CMusEngClipSession::NewL(
- TRect(0, 100, 200, 300 ),
- *iObserver,
- *iObserver,
- *iObserver );
+ CMusEngClipSession* clipSession = CMusEngClipSession::NewL();
CleanupStack::PushL( clipSession );
-
- clipSession->SetClipL( KTestVideoFileName );
+ clipSession->SetLcSessionObserver( iLcSessionObserver );
+ clipSession->SetLcUiProvider( iLcUiProvider );
+ clipSession->LocalVideoPlayer()->LcSourceFileControl()->SetLcFileNameL(
+ KTestVideoFileName() );
clipSession->iRecipient = KTestRecipientSipUri8().AllocL();
@@ -551,6 +760,230 @@
CleanupStack::PopAndDestroy( clipSession );
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOutSession::UT_ConstructLL()
+ {
+ TUint32 profileid = 0;
+ CSIPProfile* profile = iLiveSession->iSipProfileHandler->Profile();
+ profile->GetParameter( KSIPProfileId, profileid );
+ //stub creates defaultprofile if profileid is zero
+ //stub does not care if the profileid is given or not
+ //profileid of new profile is always 1
+ EUNIT_ASSERT(profile->iIsDefaultProfile)
+
+ TInt error = NULL;
+ const TUint KSipProfileId2( 2 );
+ TRAP( error, RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KSipProfileId,
+ KSipProfileId2 ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+ profile = NULL;
+ profileid = 0;
+
+ SIPStrings::Close();
+ delete iLcSessionObserver;
+ iLcSessionObserver = NULL;
+ delete iLiveSession;
+ iLiveSession = NULL;
+
+ iLcSessionObserver = new( ELeave )CLcSessionObserverStub;
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+
+ SIPStrings::OpenL();
+
+ profile = iLiveSession->iSipProfileHandler->Profile();
+ profile->GetParameter( KSIPProfileId, profileid );
+ EUNIT_ASSERT( !profile->iIsDefaultProfile )
+
+
+ TRAP( error, RProperty::Delete( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KSipProfileId ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+ profile = NULL;
+ profileid = 0;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOutSession::UT_ContactSavingLL()
+ {
+ ContactEngineStubHelper::Reset();
+
+ // Saving of contact is done at destruction phase only if recipient
+ // has been queried from client
+ //
+ CMusEngLiveSession* liveSession = CMusEngLiveSession::NewL();
+ liveSession->SetLcSessionObserver( iLcSessionObserver );
+ liveSession->SetLcUiProvider( iLcUiProvider );
+ delete liveSession;
+ liveSession = NULL;
+ EUNIT_ASSERT( ContactEngineStubHelper::GetCalledFunction() == EContactEngineStubNone );
+
+
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactId,
+ 2 ) );
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KTelNumber,
+ _L("12341234") ) );
+
+ liveSession = CMusEngLiveSession::NewL();
+ CleanupStack::PushL( liveSession );
+ liveSession->SetLcSessionObserver( iLcSessionObserver );
+ liveSession->SetLcUiProvider( iLcUiProvider );
+
+ delete liveSession->iRecipient;
+ liveSession->iRecipient = NULL;
+ liveSession->iRecipient = _L8("sip:yep@10.10.10.10").AllocL();
+ liveSession->iAddressQueried = ETrue;
+ CleanupStack::PopAndDestroy( liveSession );
+ if ( ContactEngineStubHelper::GetCalledFunction() != EContactEngineStubSetText )
+ {
+ // out-of-memory was trap ignored and saving failed because of that
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( ContactEngineStubHelper::GetCalledFunction() == EContactEngineStubSetText );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOutSession::UT_RemoteAddressLL()
+ {
+ delete iLiveSession->iRecipient;
+ iLiveSession->iRecipient = NULL;
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->RemoteAddressL(), KErrNotReady )
+
+ iLiveSession->iRecipient = KTestRecipient2SipUri8().AllocL();
+
+ HBufC* remoteAddr = iLiveSession->RemoteAddressL();
+ CleanupStack::PushL( remoteAddr );
+ EUNIT_ASSERT_EQUALS( KTestRecipient2SipUri(), *remoteAddr )
+ CleanupStack::PopAndDestroy( remoteAddr );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOutSession::UT_RemoteDisplayNameL()
+ {
+ // Test 1 : Default setting, contact name set
+ EUNIT_ASSERT_EQUALS ( KTestContactName(), iLiveSession->RemoteDisplayName() )
+
+ // Test 2 : Contact name set to null descriptor
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ KNullDesC) );
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ EUNIT_ASSERT( iLiveSession->RemoteDisplayName().Length() == 0 );
+
+ // Test 3 : Manual address entered
+ PropertyHelper::SetErrorCode( KErrNone );
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLcSessionObserver->Reset();
+ iLcUiProvider->Reset();
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ KTestContactName ) );
+ iLcUiProvider->iSimulatedReturnValue = ETrue;
+ iLcUiProvider->iRecipient.Set( KTestRecipientSipUri );
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ PropertyHelper::SetErrorCode( KErrNotFound );
+ iLiveSession->EstablishLcSessionL();
+ EUNIT_ASSERT_EQUALS( 1, iLiveSession->iTriedInvitations )
+ EUNIT_ASSERT_EQUALS( KTestRecipientSipUri(),iLiveSession->RemoteDisplayName() )
+
+ // Test 4 : Contact name has zero lenth and multiple address entry query.
+ // Displayname should have user selected address.
+ // Rare scenario.
+ PropertyHelper::SetErrorCode( KErrNone );
+ iLcSessionObserver->Reset();
+ iLcUiProvider->Reset();
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ KNullDesC) );
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ iLcUiProvider->iSimulatedReturnValue = ETrue;
+ PropertyHelper::SetErrorCode( KErrNone );
+ TBuf<200> multipleAddr;
+ multipleAddr.Append( KTestRecipientTelUri );
+ multipleAddr.Append( _L(",") );
+ multipleAddr.Append( KTestRecipientSipUri );
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KRemoteSipAddress,
+ multipleAddr ) );
+ iLiveSession->EstablishLcSessionL();
+ /* Stub selects the first one automatically */
+ EUNIT_ASSERT_EQUALS( KTestRecipientTelUri(),iLiveSession->RemoteDisplayName() );
+
+ // Test 5 : Contact name has zero lenth and no manual entry queried.
+ // Recipient has only teluri. So displayname should have tel uri address.
+ PropertyHelper::SetErrorCode( KErrNone );
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ KNullDesC) );
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ iLcUiProvider->iSimulatedReturnValue = ETrue;
+ TBuf<200> singleAddr;
+ singleAddr.Append( KTestRecipientTelUri );
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KRemoteSipAddress,
+ singleAddr ) );
+ PropertyHelper::SetErrorCode( KErrNone );
+ iLiveSession->EstablishLcSessionL();
+ EUNIT_ASSERT_EQUALS( KTestRecipientTelUri(),iLiveSession->RemoteDisplayName() );
+
+ // Test 6 : Contact name has zero lenth and recipient has teluri
+ // and invitation fails to teluri.
+ // Manual address query entered and now display should have entered
+ // manual address.
+ PropertyHelper::SetErrorCode( KErrNone );
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ KNullDesC) );
+ delete iLiveSession;
+ iLiveSession = NULL;
+ iLiveSession = CMusEngLiveSession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+ iLcUiProvider->iRecipient.Set( KTestRecipientSipUri );
+ iLcUiProvider->iSimulatedReturnValue = ETrue;
+ singleAddr.Copy( KTestRecipientTelUri );
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KRemoteSipAddress,
+ singleAddr ) );
+ PropertyHelper::SetErrorCode( KErrNotFound );
+ iLiveSession->EstablishLcSessionL();
+ EUNIT_ASSERT_EQUALS( 1, iLiveSession->iTriedInvitations )
+ EUNIT_ASSERT_EQUALS( KTestRecipientSipUri(),iLiveSession->RemoteDisplayName() );
+ }
+
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -559,53 +992,102 @@
"UNIT" )
EUNIT_TEST(
- "InviteL - test ",
+ "EstablishLcSessionL - test ",
"CMusEngOutSession",
- "InviteL",
+ "EstablishLcSessionL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngOutSession_InviteLL, Teardown)
+ SetupL, UT_EstablishLcSessionL, Teardown)
EUNIT_TEST(
- "CancelInviteL - test ",
+ "TerminateLcSessionL - test ",
+ "CMusEngOutSession",
+ "TerminateLcSessionL",
+ "FUNCTIONALITY",
+ SetupL, UT_TerminateLcSessionL, Teardown)
+
+EUNIT_TEST(
+ "EstablishLcSessionL recipient resolving - test ",
"CMusEngOutSession",
- "CancelInviteL",
+ "EstablishLcSessionL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngOutSession_CancelInviteLL, Teardown)
+ SetupL, UT_EstablishLcSession_RecipientResolvingL, Teardown)
+
+EUNIT_TEST(
+ "EstablishLcSessionL registration pending - test ",
+ "CMusEngOutSession",
+ "EstablishLcSessionL",
+ "FUNCTIONALITY",
+ SetupL, UT_EstablishLcSession_RegistrationPendingL, Teardown)
EUNIT_TEST(
"EstablishSessionL - test ",
"CMusEngOutSession",
"EstablishSessionL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngOutSession_EstablishSessionLL, Teardown)
+ SetupL, UT_EstablishSessionLL, Teardown)
EUNIT_TEST(
"HandleTermination - test ",
"CMusEngOutSession",
"HandleTermination",
"FUNCTIONALITY",
- SetupL, UT_CMusEngOutSession_HandleTerminationL, Teardown)
+ SetupL, UT_HandleTerminationL, Teardown)
EUNIT_TEST(
+ "HandleTermination recipient not found - test ",
+ "CMusEngOutSession",
+ "HandleTermination recipient not found",
+ "FUNCTIONALITY",
+ SetupL, UT_HandleRecipientNotFoundTerminationL, Teardown)
+
+EUNIT_TEST(
"AdjustVideoCodecL - test ",
"CMusEngOutSession",
"AdjustVideoCodecL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngOutSession_AdjustVideoCodecLL, Teardown)
+ SetupL, UT_AdjustVideoCodecLL, Teardown)
EUNIT_TEST(
"AdjustAudioCodecL - test ",
"CMusEngOutSession",
"AdjustAudioCodecL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngOutSession_AdjustAudioCodecLL, Teardown)
+ SetupL, UT_AdjustAudioCodecLL, Teardown)
EUNIT_TEST(
"CreateMceSessionStructureL - test ",
"CMusEngOutSession",
"CreateMceSessionStructureL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngOutSession_CreateMceSessionStructureLL, Teardown)
+ SetupL, UT_CreateMceSessionStructureLL, Teardown)
+
+EUNIT_TEST(
+ "ConstructLL - test ",
+ "CMusEngOutSession",
+ "ConstructLL",
+ "FUNCTIONALITY",
+ SetupL, UT_ConstructLL, Teardown)
+
+EUNIT_TEST(
+ "ContactSavingL - test ",
+ "CMusEngOutSession",
+ "ContactSavingL",
+ "FUNCTIONALITY",
+ SetupL, UT_ContactSavingLL, Teardown)
+
+EUNIT_TEST(
+ "RemoteAddressLL - test ",
+ "CMusEngOutSession",
+ "RemoteAddressLL",
+ "FUNCTIONALITY",
+ SetupL, UT_RemoteAddressLL, Teardown)
+
+EUNIT_TEST(
+ "RemoteDisplayName - test ",
+ "CMusEngOutSession",
+ "RemoteDisplayName",
+ "FUNCTIONALITY",
+ SetupL, UT_RemoteDisplayNameL, Teardown)
EUNIT_END_TEST_TABLE
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengreceivesession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengreceivesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -21,7 +21,9 @@
#include "musengstubs.h"
#include "musengtestdefs.h"
#include "musengreceivesession.h"
-#include "centralrepository.h"
+#include "mussessionproperties.h"
+#include "contactenginestub.h"
+#include "musengremotevideoplayer.h"
// SYSTEM INCLUDES
#include <digia/eunit/eunitmacros.h>
@@ -41,8 +43,20 @@
#include <mceavccodec.h>
#include <audiopreference.h>
+#include <centralrepository.h>
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+const TInt KMusEngTresholdToSecondsFactor = 20;
+const TInt KMusEngTwoSecondInMilliSeconds = 2000;
+// Use inactivity timer value that is a little bigger than treshold in seconds
+const TUint KMusEngInactivityTimer = KMusEngTresholdToSecondsFactor *
+ KMusEngJitterBufferTreshold +
+ KMusEngTwoSecondInMilliSeconds;
+
+_LIT( KTestContactName, "nokia" );
// -----------------------------------------------------------------------------
@@ -108,25 +122,31 @@
//
void UT_CMusEngReceiveSession::SetupL( )
{
- CRepository::iStaticEncoderUid = 0;
- iObserver = new( ELeave ) CMusEngObserverStub;
- iReceiveSession = CMusEngReceiveSession::NewL( TRect(0,0, 100,100),
- *iObserver,
- *iObserver );
-
+ // set fast mode ON
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KFastMode,
+ 0 ) );
+ iLcSessionObserver = new( ELeave )CLcSessionObserverStub;
+ iLcUiProvider = new( ELeave )CLcUiProviderStub;
+ iReceiveSession = CMusEngReceiveSession::NewL();
+ iReceiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iReceiveSession->SetLcUiProvider( iLcUiProvider );
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusEngReceiveSession::Teardown( )
{
+ PropertyHelper::Close();
delete iReceiveSession;
- delete iObserver;
- CRepository::iStaticEncoderUid = 0;
-
+ delete iLcUiProvider;
+ delete iLcSessionObserver;
+ PropertyHelper::Close();
+ // Delete static data from CenRep stub
+ CRepository::ResetStubGlobal();
+ CRepository::iForceFailWithCode = KErrNone;
}
@@ -278,67 +298,145 @@
{
EUNIT_ASSERT( iReceiveSession );
EUNIT_ASSERT( !iReceiveSession->iSession );
+ EUNIT_ASSERT( iReceiveSession->iMceManagerUid == TUid::Uid( KMusUiUid ) );
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngReceiveSession::UT_LcSessionStateL()
+ {
+ // No MCE session -> Convert to MLcSession::EReceived
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EReceived ),
+ TInt( iReceiveSession->LcSessionState() ) )
+
+ // Some other state -> State returned from the base class
+ TMceTransactionDataContainer container;
+ CMceInSession* inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ iReceiveSession->iSession->iState = CMceSession::EProceeding;
+ iReceiveSession->EstablishLcSessionL();
+ EUNIT_ASSERT_EQUALS( TInt( MLcSession::EOpening ),
+ TInt( iReceiveSession->LcSessionState() ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngReceiveSession::UT_EstablishLcSessionL()
+ {
+ // No MCE session
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iReceiveSession->EstablishLcSessionL(), KErrNotReady )
+
+ // Construct a new session and accept it
+ TMceTransactionDataContainer container;
+ CMceInSession* inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ iReceiveSession->iSession->iState = CMceSession::EProceeding;
+ iReceiveSession->EstablishLcSessionL();
+ EUNIT_ASSERT( iReceiveSession->iSession )
+ EUNIT_ASSERT_EQUALS( inSession, iReceiveSession->iSession );
+ EUNIT_ASSERT_EQUALS( TInt( CMceSession::EAnswering ),
+ TInt( iReceiveSession->iSession->iState ) )
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngReceiveSession::UT_AcceptInvitationLL()
+void UT_CMusEngReceiveSession::UT_TerminateLcSessionL()
{
- TMceTransactionDataContainer container;
+ // No MCE session
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iReceiveSession->TerminateLcSessionL(), KErrNotReady )
- // There is no pending session to accept, must fail
- TRAPD( error, iReceiveSession->AcceptInvitationL( ETrue ) );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- // There is pending session, but it is not yet reserved resources,
- // so accepting fails
+ // Reject session, session state incoming, no operator variant
+ TMceTransactionDataContainer container;
CMceInSession* inSession = ConstructInSessionLC( 1, 0 );
iReceiveSession->IncomingSession( inSession, &container );
CleanupStack::Pop( inSession );
-
- TRAP( error, iReceiveSession->AcceptInvitationL( ETrue ) );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrNotReady );
-
- // Simulate resource reservation and reject
+ iReceiveSession->iSession->iState = CMceSession::EIncoming;
+ iReceiveSession->iOperatorVariant = EFalse;
+ iReceiveSession->TerminateLcSessionL();
+ EUNIT_ASSERT_EQUALS( TInt( CMceSession::ETerminated ),
+ TInt( iReceiveSession->iSession->iState ) )
+
+ // Reject session, session state proceeding, no operator variant
+ inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
iReceiveSession->iSession->iState = CMceSession::EProceeding;
- iReceiveSession->AcceptInvitationL( EFalse );
+ iReceiveSession->iOperatorVariant = EFalse;
+ iReceiveSession->TerminateLcSessionL();
+ EUNIT_ASSERT_EQUALS( TInt( CMceSession::ETerminated ),
+ TInt( iReceiveSession->iSession->iState ) )
- EUNIT_ASSERT( iReceiveSession->iSession->iState ==
- CMceSession::ETerminated );
-
- // Construct new session and reject it with operator variant
+ // Reject session, operator variant
inSession = ConstructInSessionLC( 1, 0 );
iReceiveSession->IncomingSession( inSession, &container );
CleanupStack::Pop( inSession );
iReceiveSession->iSession->iState = CMceSession::EProceeding;
iReceiveSession->iOperatorVariant = ETrue;
-
- iReceiveSession->AcceptInvitationL( EFalse );
+ iReceiveSession->TerminateLcSessionL();
+ EUNIT_ASSERT_EQUALS( TInt( CMceSession::ETerminated ),
+ TInt( iReceiveSession->iSession->iState ) )
- EUNIT_ASSERT( iReceiveSession->iSession->iState ==
- CMceSession::ETerminated );
-
- // Construct new session and accept it
+ // Terminate an established session
inSession = ConstructInSessionLC( 1, 0 );
iReceiveSession->IncomingSession( inSession, &container );
CleanupStack::Pop( inSession );
- iReceiveSession->iSession->iState = CMceSession::EProceeding;
+ iReceiveSession->iSession->iState = CMceSession::EEstablished;
+ iReceiveSession->iOperatorVariant = EFalse;
+ iReceiveSession->TerminateLcSessionL();
+ EUNIT_ASSERT_EQUALS( TInt( CMceSession::ETerminating ),
+ TInt( iReceiveSession->iSession->iState ) )
+ }
- iReceiveSession->AcceptInvitationL( ETrue );
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngReceiveSession::UT_RemoteVideoPlayerL()
+ {
+ EUNIT_ASSERT( iReceiveSession->RemoteVideoPlayer() ==
+ iReceiveSession->iRemoteVideoPlayer )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngReceiveSession::UT_RemoteDisplayName()
+ {
+
+ // Creating Valid Session
+ CMceInSession* inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->iSession = inSession; // Transfers ownership
+ CleanupStack::Pop( inSession );
+ iReceiveSession->CompleteSessionStructureL();
+ EUNIT_ASSERT( inSession->Streams().Count() == 1 );
- EUNIT_ASSERT( iReceiveSession->iSession );
- EUNIT_ASSERT( iReceiveSession->iSession == inSession );
- EUNIT_ASSERT( iReceiveSession->iSession->iState ==
- CMceSession::EAnswering );
+
+ // Name is published using publish/subscribe key by Availblity
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ KTestContactName ) );
+
+ EUNIT_ASSERT_EQUALS ( KTestContactName(), iReceiveSession->RemoteDisplayName() )
- }
-
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactName,
+ KNullDesC) );
+
+ // Ensure its not null and its not equal
+ EUNIT_ASSERT( KTestContactName() != iReceiveSession->RemoteDisplayName() );
+ }
// -----------------------------------------------------------------------------
//
@@ -364,23 +462,26 @@
// 1 ) First transition to state EProceeding, user and remote end should
// be notified
- inSession->iState = CMceSession::EProceeding;
-
+ inSession->iState = CMceSession::EProceeding;
iReceiveSession->HandleSessionStateChanged( *inSession, 0, KNullDesC8() );
- EUNIT_ASSERT( iObserver->iIncomingSessionCalled )
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionStateChanged ) )
EUNIT_ASSERT( iReceiveSession->iRingLCalled )
- iObserver->Reset();
+
+ // Ensure Originator is taken from the incoming session
+ EUNIT_ASSERT_EQUALS ( KTestOriginator(), *iReceiveSession->iOriginator )
+
+ iLcSessionObserver->Reset();
// 2 ) Now simulate second transition to EProceeding state which can happen
// if we force 100rel to be used. User and remote end should not be
// notified anymore but change should be ignored.
+ inSession->iState = CMceSession::EProceeding;
iReceiveSession->HandleSessionStateChanged( *inSession, 0, KNullDesC8() );
- EUNIT_ASSERT( iObserver->IsReseted() )
- iObserver->Reset();
-
+ EUNIT_ASSERT_EQUALS( TInt( CLcSessionObserverStub::EUnknown ),
+ TInt( iLcSessionObserver->iCalledFunction ) )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -392,10 +493,10 @@
CMceVideoCodec* codecAvc = CMceAvcCodec::NewLC( KMceSDPNameH264() );
CMceVideoCodec* codecUnknown = CMceH263Codec::NewLC( KNullDesC8() );
- iReceiveSession->AdjustVideoCodecL( *codecH263 );
- iReceiveSession->AdjustVideoCodecL( *codecH2632000 );
- iReceiveSession->AdjustVideoCodecL( *codecAvc );
- iReceiveSession->AdjustVideoCodecL( *codecUnknown );
+ iReceiveSession->AdjustVideoCodecL( *codecH263, KMceRTPSource );
+ iReceiveSession->AdjustVideoCodecL( *codecH2632000, KMceRTPSource );
+ iReceiveSession->AdjustVideoCodecL( *codecAvc, KMceRTPSource );
+ iReceiveSession->AdjustVideoCodecL( *codecUnknown, KMceRTPSource );
EUNIT_ASSERT_EQUALS( codecH263->KeepAliveTimer(), 5 )
EUNIT_ASSERT_EQUALS( codecH263->KeepAlivePayloadType(), 96 )
@@ -584,8 +685,6 @@
CleanupStack::Pop( inSession );
container.Clear();
- EUNIT_ASSERT( iObserver->iIncomingSessionPreNotificationCalled )
-
EUNIT_ASSERT( iReceiveSession->iSession );
EUNIT_ASSERT( iReceiveSession->iSession->iState ==
CMceSession::ETerminated );
@@ -630,46 +729,6 @@
EUNIT_ASSERT( iReceiveSession->iSession != inSession );
EUNIT_ASSERT( iReceiveSession->iSession->iState ==
CMceSession::EReserving );
-
- // Try again when there is usage of avc is turned off
- iReceiveSession->iSession->iState = CMceSession::ETerminated;
- TInt32 KMusDisableAVC = 0x0fffffff;
- CRepository::iStaticEncoderUid = KMusDisableAVC;
-
- inSession = ConstructInSessionLC( 1, 0 );
-
- // There will 3 AVC codecs and 1 H263 codec
- EUNIT_ASSERT( static_cast<CMceVideoStream*>( inSession->Streams()[0] )->Codecs().Count() == 4 );
- iReceiveSession->IncomingSession( inSession, &container );
- CleanupStack::Pop( inSession );
-
- EUNIT_ASSERT( iReceiveSession->iSession->iState ==
- CMceSession::EReserving ||
- iReceiveSession->iSession->iState ==
- CMceSession::ETerminated );
-
- // Should be only the H263 codec
- EUNIT_ASSERT( static_cast<CMceVideoStream*>( iReceiveSession->iSession->Streams()[0] )->Codecs().Count() <= 4 );
-
- //No supported codecs
- iReceiveSession->iSession->iState = CMceSession::ETerminated;
- iReceiveSession->iManager->iSupportedVideoCodecs.ResetAndDestroy();
- inSession = ConstructInSessionLC( 1, 0 );
-
- // There will no codecs, simulates situation where no codecs were match
- //currently session is not been rejected
- EUNIT_ASSERT( static_cast<CMceVideoStream*>( inSession->Streams()[0] )->Codecs().Count() == 0 );
- iReceiveSession->IncomingSession( inSession, &container );
- CleanupStack::Pop( inSession );
-
- EUNIT_ASSERT( iReceiveSession->iSession->iState ==
- CMceSession::EReserving ||
- iReceiveSession->iSession->iState ==
- CMceSession::ETerminated );
-
- // Should be only the H263 codec
- EUNIT_ASSERT( static_cast<CMceVideoStream*>( inSession->Streams()[0] )->Codecs().Count() == 0 );
-
}
@@ -695,7 +754,7 @@
CleanupStack::Pop( inSession );
iReceiveSession->iSession->iState = CMceSession::EProceeding;
- iReceiveSession->AcceptInvitationL( ETrue );
+ iReceiveSession->EstablishLcSessionL();
// Now we have an insession, try to update session that is not ours,
// new one gets rejected and deleted.
@@ -752,36 +811,28 @@
// Try without a session, nothing happens
iReceiveSession->StreamStateChanged( *audioStream );
- // Establish session
-
+ // Establish session
iReceiveSession->IncomingSession( inSession, &container );
CleanupStack::Pop( inSession );
- iObserver->Reset();
+ iLcSessionObserver->Reset();
// Try with audiostream, nothing happens
audioStream->iState = CMceMediaStream::EBuffering;
iReceiveSession->StreamStateChanged( *audioStream );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
- // Try with videostream, but without a source, nothing happens
-
- // Needed hacking
- CMceRtpSource* rtpSource =
- static_cast<CMceRtpSource*>( videoStream->Source() );
- videoStream->iSource = NULL;
-
+ // Try with videostream, but without a source, nothing happens
+ CMceRtpSource* rtpSource =
+ static_cast<CMceRtpSource*>( videoStream->Source() ); //hack
+ videoStream->iSource = NULL;
iReceiveSession->StreamStateChanged( *videoStream );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// Try with videostream and a camera source, nothing happens
-
- // Needed hacking
- videoStream->iSource =
- CMceCameraSource::NewLC( *iReceiveSession->iManager );
- CleanupStack::Pop();
-
+ videoStream->iSource =
+ CMceCameraSource::NewL( *iReceiveSession->iManager ); //hack
iReceiveSession->StreamStateChanged( *videoStream );
- EUNIT_ASSERT( iObserver->IsReseted() )
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
// Remove hacks
delete videoStream->iSource;
@@ -790,21 +841,72 @@
// Buffering, normal case
videoStream->iState = CMceMediaStream::EBuffering;
iReceiveSession->StreamStateChanged( *videoStream );
- EUNIT_ASSERT( iObserver->iStreamBufferingCalled )
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ EUNIT_ASSERT( iReceiveSession->iBuffered )
+ iLcSessionObserver->Reset();
// Streaming, normal case
videoStream->iState = CMceMediaStream::EStreaming;
+ iReceiveSession->iReceiving = EFalse;
+ iReceiveSession->iBuffered = ETrue;
iReceiveSession->StreamStateChanged( *videoStream );
- EUNIT_ASSERT( iObserver->iStreamStreamingCalled )
- EUNIT_ASSERT( rtpSource->iInactivityTimer == 2000 )
- iObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ EUNIT_ASSERT_EQUALS( KMusEngInactivityTimer, rtpSource->iInactivityTimer )
+ iLcSessionObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcUiProvider->iCalledFunction ),
+ TInt( CLcUiProviderStub::EHandleForegroundStatus ) )
+ iLcUiProvider->Reset();
+ // Normally background info will be cleared once ui comes to foreground and
+ // notifies engine about it
+ iReceiveSession->iBackground = EFalse;
+
+ // Streaming, event is received even when already receiving. Streaming
+ // event is anyway notified.
+ videoStream->iState = CMceMediaStream::EStreaming;
+ iReceiveSession->iReceiving = ETrue;
+ iReceiveSession->iBuffered = ETrue;
+ iReceiveSession->StreamStateChanged( *videoStream );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ EUNIT_ASSERT_EQUALS( KMusEngInactivityTimer, rtpSource->iInactivityTimer )
+ iLcSessionObserver->Reset();
+ EUNIT_ASSERT_EQUALS( TInt( iLcUiProvider->iCalledFunction ),
+ TInt( CLcUiProviderStub::EUnknown ) )
+
+ // Streaming and receiving started already. Streaming is not notified because
+ // of buffering event hasn't been received
+ videoStream->iState = CMceMediaStream::EStreaming;
+ iReceiveSession->iReceiving = ETrue;
+ iReceiveSession->iBuffered = EFalse;
+ iReceiveSession->StreamStateChanged( *videoStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
+ iLcSessionObserver->Reset();
+
+ // Streaming, receiving not started and buffering not happened ( means no packet
+ // received yet. Ignore this event too.
+ videoStream->iState = CMceMediaStream::EStreaming;
+ iReceiveSession->iReceiving = EFalse;
+ iReceiveSession->iBuffered = EFalse;
+ iReceiveSession->StreamStateChanged( *videoStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
+ iLcSessionObserver->Reset();
+
+ // Streaming, receiving not started and buffering happened.
+ // Enabling RTP timer leaves. Should be a failure case.
+ videoStream->iState = CMceMediaStream::EStreaming;
+ iReceiveSession->iReceiving = EFalse;
+ iReceiveSession->iBuffered = ETrue;
+ iReceiveSession->StreamStateChanged( *videoStream );
+ EUNIT_ASSERT_NOT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerFailed ) )
+ iLcSessionObserver->Reset();
// Try default behaviors
videoStream->iState = CMceMediaStream::EIdle;
iReceiveSession->StreamStateChanged( *videoStream );
- EUNIT_ASSERT( iObserver->iStreamIdleCalled );
-
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() )
}
@@ -881,7 +983,6 @@
// No audio, bundle is not constructed
EUNIT_ASSERT( inSession->Bundles().Count() == 0 )
-
}
@@ -1064,7 +1165,7 @@
KMceSpeakerSink );
CMceSpeakerSink* speaker =
static_cast<CMceSpeakerSink*>(inSession->Streams()[1]->Sinks()[0]);
- EUNIT_ASSERT( speaker->VolumeL() == iReceiveSession->VolumeL() )
+ EUNIT_ASSERT( speaker->VolumeL() == iReceiveSession->LcVolumeL() )
// Stream 2 and bound stream
EUNIT_ASSERT( inSession->Streams()[2]->Type() == KMceAudio )
@@ -1073,7 +1174,7 @@
EUNIT_ASSERT( inSession->Streams()[2]->Sinks()[0]->Type() ==
KMceSpeakerSink );
speaker = static_cast<CMceSpeakerSink*>(inSession->Streams()[2]->Sinks()[0]);
- EUNIT_ASSERT( speaker->VolumeL() == iReceiveSession->VolumeL() )
+ EUNIT_ASSERT( speaker->VolumeL() == iReceiveSession->LcVolumeL() )
EUNIT_ASSERT( inSession->Streams()[2]->BoundStream() )
EUNIT_ASSERT( !inSession->Streams()[2]->BoundStreamL().IsEnabled() )
@@ -1098,7 +1199,7 @@
KMceSpeakerSink )
speaker = static_cast<CMceSpeakerSink*>
(inSession->Streams()[3]->BoundStreamL().Sinks()[0]);
- EUNIT_ASSERT( speaker->VolumeL() == iReceiveSession->VolumeL() )
+ EUNIT_ASSERT( speaker->VolumeL() == iReceiveSession->LcVolumeL() )
// Check for bundles
EUNIT_ASSERT( inSession->Bundles().Count() == 1 )
@@ -1164,28 +1265,39 @@
EUNIT_ASSERT_EQUALS( inSession->Bundles().Count(), 0 )
- // Session with bandwidth attribute at sessionlevel
- // -> bandwidth is taken in use at session level
+ // Session with bandwidth attributes b=AS and b=TIAS at session and media
+ // levels -> b=AS is taken in use at session level (b=TIAS is ignored)
//
delete iReceiveSession->iSession;
iReceiveSession->iSession = NULL;
inSession = ConstructInSessionLC( 1, 0 );
- CDesC8Array* sdpLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ //setting session level SDP attributes
+ CDesC8Array* sdpLines = new ( ELeave ) CDesC8ArrayFlat( 2 );
CleanupStack::PushL( sdpLines );
sdpLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ sdpLines->AppendL( KMusEngSessionSdpLineTiasLine() );
inSession->SetSessionSDPLinesL( sdpLines );
CleanupStack::Pop( sdpLines );
+ //setting media level SDP attributes
+ sdpLines = new ( ELeave ) CDesC8ArrayFlat( 2 );
+ CleanupStack::PushL( sdpLines );
+ sdpLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ sdpLines->AppendL( KMusEngSessionSdpLineTiasLine() );
+ inSession->Streams()[ 0 ]->SetMediaAttributeLinesL( sdpLines );
+ CleanupStack::Pop( sdpLines );
+
// Transfers ownership
iReceiveSession->iSession = inSession;
CleanupStack::Pop( inSession );
iReceiveSession->CompleteSessionStructureL();
-
- MDesC8Array* newSdpLines = iReceiveSession->iSession->SessionSDPLinesL();
- CleanupDeletePushL( newSdpLines );
- TBool bandwidthFoundFromSessionLevel( EFalse );
+
+ // Ensure there is only b=AS and no b=TIAS present at session level
+ MDesC8Array* newSdpLines = iReceiveSession->iSession->iSessionSDPLines;
+ TBool bandwidthFoundFromSessionLevel = EFalse;
+ TBool tiasFoundFromSessionLevel = EFalse;
for ( TInt i = 0; newSdpLines && i < newSdpLines->MdcaCount(); i++ )
{
if ( newSdpLines->MdcaPoint( i ).Compare(
@@ -1193,35 +1305,32 @@
{
bandwidthFoundFromSessionLevel = ETrue;
}
+ else if ( newSdpLines->MdcaPoint( i ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 )
+ {
+ tiasFoundFromSessionLevel = ETrue;
+ }
}
EUNIT_ASSERT( bandwidthFoundFromSessionLevel );
- CleanupStack::PopAndDestroy( newSdpLines );
+ EUNIT_ASSERT( !tiasFoundFromSessionLevel );
+
+ // Ensure there is no bandwidth attributes at media level
+ newSdpLines = iReceiveSession->iSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( !newSdpLines->MdcaCount() );
+
- newSdpLines = iReceiveSession->iSession->Streams()[ 0 ]->MediaAttributeLinesL();
- CleanupDeletePushL( newSdpLines );
- TBool bandwidthFoundFromMediaLevel( EFalse );
- for ( TInt i = 0; newSdpLines && i < newSdpLines->MdcaCount(); i++ )
- {
- if ( newSdpLines->MdcaPoint( i ).Compare(
- KMusEngSessionSdpLineBandwidthField() ) == 0 )
- {
- bandwidthFoundFromMediaLevel = ETrue;
- }
- }
- EUNIT_ASSERT( !bandwidthFoundFromMediaLevel );
- CleanupStack::PopAndDestroy( newSdpLines );
-
- // Session with bandwidth attribute at media level
- // -> bandwidth is taken in use at media level
+ // Session with bandwidth AS and TIAS attributes at media level
+ // -> bandwidth AS is taken in use at media level
//
delete iReceiveSession->iSession;
iReceiveSession->iSession = NULL;
inSession = ConstructInSessionLC( 1, 0 );
- sdpLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ sdpLines = new ( ELeave ) CDesC8ArrayFlat( 2 );
CleanupStack::PushL( sdpLines );
sdpLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ sdpLines->AppendL( KMusEngSessionSdpLineTiasLine() );
inSession->Streams()[ 0 ]->SetMediaAttributeLinesL( sdpLines );
CleanupStack::Pop( sdpLines );
@@ -1231,35 +1340,180 @@
iReceiveSession->CompleteSessionStructureL();
- newSdpLines = iReceiveSession->iSession->SessionSDPLinesL();
- CleanupDeletePushL( newSdpLines );
+ // Ensure there is no bandwidth attribute at session level
+ newSdpLines = iReceiveSession->iSession->iSessionSDPLines;
bandwidthFoundFromSessionLevel = EFalse;
for ( TInt i = 0; newSdpLines && i < newSdpLines->MdcaCount(); i++ )
{
if ( newSdpLines->MdcaPoint( i ).Compare(
- KMusEngSessionSdpLineBandwidthField() ) == 0 )
+ KMusEngSessionSdpLineBandwidthField() ) == 0
+ || newSdpLines->MdcaPoint( i ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 )
{
bandwidthFoundFromSessionLevel = ETrue;
}
}
EUNIT_ASSERT( !bandwidthFoundFromSessionLevel );
- CleanupStack::PopAndDestroy( newSdpLines );
- newSdpLines = iReceiveSession->iSession->Streams()[ 0 ]->MediaAttributeLinesL();
- CleanupDeletePushL( newSdpLines );
- bandwidthFoundFromMediaLevel = EFalse;
- for ( TInt i = 0; newSdpLines && i < newSdpLines->MdcaCount(); i++ )
- {
- if ( newSdpLines->MdcaPoint( i ).Compare(
- KMusEngSessionSdpLineBandwidthField() ) == 0 )
- {
- bandwidthFoundFromMediaLevel = ETrue;
- }
- }
- EUNIT_ASSERT( bandwidthFoundFromMediaLevel );
- CleanupStack::PopAndDestroy( newSdpLines );
+ // Ensure media level has only b=AS attribute
+ newSdpLines = iReceiveSession->iSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( newSdpLines );
+ EUNIT_ASSERT( newSdpLines->MdcaCount() == 1 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineBandwidthField() );
}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngReceiveSession::UT_CompleteSessionStructureL_SdpBandwidthAttributesL()
+ {
+ CRepository::SetStubGlobal( MusSettingsKeys::KVideoBandwidth,
+ 128 );
+
+ // 1. Session without bandwidth attributes. => b=AS and b=TIAS will be
+ // taken at media level
+ CMceInSession* inSession = ConstructInSessionLC( 1, 0 );
+
+ iReceiveSession->iSession = inSession; // Transfers ownership
+ CleanupStack::Pop( inSession );
+
+ iReceiveSession->CompleteSessionStructureL();
+
+ // Ensure b=AS and b=TIAS present at media level only
+ MDesC8Array* newSdpLines = iReceiveSession->iSession->iSessionSDPLines;
+ EUNIT_ASSERT( newSdpLines->MdcaCount() == 1 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineXApplication() );
+
+ // Ensure b=AS and b=TIAS present at media level
+ EUNIT_ASSERT( iReceiveSession->iSession->Streams().Count() > 0 );
+ newSdpLines = iReceiveSession->iSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( newSdpLines );
+ EUNIT_ASSERT( newSdpLines->MdcaCount() == 2 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 0 ).Find(
+ KMusEngSessionSdpLineBandwidthLine() ) == 0 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 1 ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 );
+
+
+ // 2. Session with b=AS bandwidth attribute at session level
+ // => b=AS and b=TIAS will be taken at session level
+ delete iReceiveSession->iSession;
+ iReceiveSession->iSession = NULL;
+
+ inSession = ConstructInSessionLC( 1, 0 );
+ //setting session level SDP attributes
+ CDesC8Array* sdpLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ CleanupStack::PushL( sdpLines );
+ sdpLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ inSession->SetSessionSDPLinesL( sdpLines );
+ CleanupStack::Pop( sdpLines );
+
+ // Transfers ownership
+ iReceiveSession->iSession = inSession;
+ CleanupStack::Pop( inSession );
+
+ iReceiveSession->CompleteSessionStructureL();
+
+ // Ensure b=AS and b=TIAS present at session level only
+ newSdpLines = iReceiveSession->iSession->iSessionSDPLines;
+ EUNIT_ASSERT( newSdpLines );
+ EUNIT_ASSERT( newSdpLines->MdcaCount() == 3 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineXApplication() );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 1 ).Find (
+ KMusEngSessionSdpLineBandwidthLine() ) == 0 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 2 ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 );
+
+ EUNIT_ASSERT( iReceiveSession->iSession->Streams().Count() > 0 );
+ newSdpLines = iReceiveSession->iSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( newSdpLines );
+ EUNIT_ASSERT( newSdpLines->MdcaCount() == 0 );
+
+ // 3. Session with b=AS bandwidth attribute at media level
+ // => b=AS and b=TIAS will be taken at media level
+ delete iReceiveSession->iSession;
+ iReceiveSession->iSession = NULL;
+
+ inSession = ConstructInSessionLC( 1, 0 );
+ //setting media level SDP attributes
+ sdpLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ CleanupStack::PushL( sdpLines );
+ sdpLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ inSession->Streams()[ 0 ]->SetMediaAttributeLinesL( sdpLines );
+ CleanupStack::Pop( sdpLines );
+
+ // Transfers ownership
+ iReceiveSession->iSession = inSession;
+ CleanupStack::Pop( inSession );
+
+ iReceiveSession->CompleteSessionStructureL();
+
+ // Ensure b=AS and b=TIAS present only at media level
+ newSdpLines = iReceiveSession->iSession->iSessionSDPLines;
+ EUNIT_ASSERT( newSdpLines );
+ EUNIT_ASSERT( newSdpLines->MdcaCount() == 1 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineXApplication() );
+
+ EUNIT_ASSERT( iReceiveSession->iSession->Streams().Count() > 0 );
+ newSdpLines = iReceiveSession->iSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( newSdpLines );
+ EUNIT_ASSERT( newSdpLines->MdcaCount() == 2 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 0 ).Find (
+ KMusEngSessionSdpLineBandwidthLine() ) == 0 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 1 ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 );
+
+
+ // 4. Session with b=AS attribute at session level and
+ // b=AS and b=TIAS at media level
+ // => b=AS and b=TIAS will be taken at session and media level
+ delete iReceiveSession->iSession;
+ iReceiveSession->iSession = NULL;
+
+ inSession = ConstructInSessionLC( 1, 0 );
+ //setting session level SDP attributes
+ sdpLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ CleanupStack::PushL( sdpLines );
+ sdpLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ inSession->SetSessionSDPLinesL( sdpLines );
+ CleanupStack::Pop( sdpLines );
+
+ //setting media level SDP attributes
+ sdpLines = new ( ELeave ) CDesC8ArrayFlat( 2 );
+ CleanupStack::PushL( sdpLines );
+ sdpLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ sdpLines->AppendL( KMusEngSessionSdpLineTiasLine() );
+ inSession->Streams()[ 0 ]->SetMediaAttributeLinesL( sdpLines );
+ CleanupStack::Pop( sdpLines );
+
+ // Transfers ownership
+ iReceiveSession->iSession = inSession;
+ CleanupStack::Pop( inSession );
+
+ iReceiveSession->CompleteSessionStructureL();
+
+ // Ensure b=AS and b=TIAS present at session and media level
+ newSdpLines = iReceiveSession->iSession->iSessionSDPLines;
+ EUNIT_ASSERT( newSdpLines );
+ EUNIT_ASSERT( newSdpLines->MdcaCount() == 3 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 0 ) == KMusEngSessionSdpLineXApplication() );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 1 ).Find (
+ KMusEngSessionSdpLineBandwidthLine() ) == 0 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 2 ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 );
+
+ EUNIT_ASSERT( iReceiveSession->iSession->Streams().Count() > 0 );
+ newSdpLines = iReceiveSession->iSession->Streams()[ 0 ]->iMediaSDPLines;
+ EUNIT_ASSERT( newSdpLines );
+ EUNIT_ASSERT( newSdpLines->MdcaCount() == 2 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 0 ).Find (
+ KMusEngSessionSdpLineBandwidthLine() ) == 0 );
+ EUNIT_ASSERT( newSdpLines->MdcaPoint( 1 ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 );
+ }
+
// -----------------------------------------------------------------------------
//
@@ -1333,6 +1587,88 @@
EUNIT_ASSERT_EQUALS( iReceiveSession->iIdentity, KNullDesC8 )
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngReceiveSession::UT_ContactSavingLL()
+ {
+ ContactEngineStubHelper::Reset();
+
+ // Saving of contact is done at destruction phase only if originator value
+ // exists
+ //
+ CMusEngReceiveSession* receiveSession = CMusEngReceiveSession::NewL();
+ receiveSession->SetLcSessionObserver( iLcSessionObserver );
+ delete receiveSession;
+ receiveSession = NULL;
+ EUNIT_ASSERT( ContactEngineStubHelper::GetCalledFunction() == EContactEngineStubNone );
+
+
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KContactId,
+ 2 ) );
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KTelNumber,
+ _L("12341234") ) );
+
+ receiveSession = CMusEngReceiveSession::NewL();
+ CleanupStack::PushL( receiveSession );
+ receiveSession->SetLcSessionObserver( iLcSessionObserver );
+ delete receiveSession->iOriginator;
+ receiveSession->iOriginator = NULL;
+ receiveSession->iOriginator = _L8("sip:yep@10.10.10.10").AllocL();
+ CleanupStack::PopAndDestroy( receiveSession );
+ if ( ContactEngineStubHelper::GetCalledFunction() != EContactEngineStubSetText )
+ {
+ // out-of-memory was trap ignored and saving failed because of that
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( ContactEngineStubHelper::GetCalledFunction() == EContactEngineStubSetText );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngReceiveSession::UT_IsDisplayActive()
+ {
+ // Display is active only if receiving and display is explicitly enabled
+ CMceInSession* inSession = ConstructInSessionLC( 1, 1 );
+ iReceiveSession->iSession = inSession; // Transfers ownership
+ CleanupStack::Pop( inSession );
+ iReceiveSession->EnableDisplayL( ETrue );
+ EUNIT_ASSERT( !iReceiveSession->IsDisplayActive() )
+ iReceiveSession->iReceiving = ETrue;
+ EUNIT_ASSERT( iReceiveSession->IsDisplayActive() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngReceiveSession::UT_InactivityTimeoutL()
+ {
+ // Not receiving, no effect
+ iReceiveSession->iReceiving = EFalse;
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ CMceRtpSource* rtpSource = CMceRtpSource::NewLC();
+ iReceiveSession->InactivityTimeout( *videoStream, *rtpSource );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // Receiving, state change is notified and
+ // receiving and buffering status are cleared
+ iReceiveSession->iBuffered = ETrue;
+ iReceiveSession->iReceiving = ETrue;
+ iReceiveSession->InactivityTimeout( *videoStream, *rtpSource );
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iCalledFunction,
+ CLcSessionObserverStub::EPlayerStateChanged );
+ EUNIT_ASSERT( !iReceiveSession->iReceiving );
+ EUNIT_ASSERT( !iReceiveSession->iBuffered );
+ CleanupStack::PopAndDestroy( rtpSource );
+ CleanupStack::PopAndDestroy( videoStream );
+ }
+
// TEST TABLE
@@ -1349,11 +1685,39 @@
SetupL, UT_NewLL, Teardown)
EUNIT_TEST(
- "AcceptInvitationL - test ",
+ "LcSessionState - test ",
+ "CMusEngReceiveSession",
+ "LcSessionState",
+ "FUNCTIONALITY",
+ SetupL, UT_LcSessionStateL, Teardown)
+
+EUNIT_TEST(
+ "EstablishLcSessionL - test ",
+ "CMusEngReceiveSession",
+ "EstablishLcSessionL",
+ "FUNCTIONALITY",
+ SetupL, UT_EstablishLcSessionL, Teardown)
+
+EUNIT_TEST(
+ "TerminateLcSessionL - test ",
"CMusEngReceiveSession",
- "AcceptInvitationL",
+ "TerminateLcSessionL",
+ "FUNCTIONALITY",
+ SetupL, UT_TerminateLcSessionL, Teardown)
+
+EUNIT_TEST(
+ "RemoteVideoPlayer - test ",
+ "CMusEngReceiveSession",
+ "RemoteVideoPlayer",
"FUNCTIONALITY",
- SetupL, UT_AcceptInvitationLL, Teardown)
+ SetupL, UT_RemoteVideoPlayerL, Teardown)
+
+EUNIT_TEST(
+ "RemoteDisplayName - test ",
+ "CMusEngReceiveSession",
+ "RemoteDisplayName",
+ "FUNCTIONALITY",
+ SetupL, UT_RemoteDisplayName, Teardown)
EUNIT_TEST(
"HandleSessionStateChanged - test ",
@@ -1468,13 +1832,40 @@
SetupL, UT_CompleteSessionStructureL_OperatorVariant, Teardown)
EUNIT_TEST(
+ "CompleteSessionStructureL - test SDP bandwidth attributes handling",
+ "CMusEngReceiveSession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureL_SdpBandwidthAttributesL, Teardown)
+
+EUNIT_TEST(
"ParseAssertedIdentity",
"CMusEngReceiveSession",
"ParseAssertedIdentity",
"FUNCTIONALITY",
SetupL, UT_ParseAssertedIdentityL, Teardown)
-
+EUNIT_TEST(
+ "ContactSavingL - test",
+ "CMusEngReceiveSession",
+ "ContactSavingL",
+ "FUNCTIONALITY",
+ SetupL, UT_ContactSavingLL, Teardown)
+
+EUNIT_TEST(
+ "IsDisplayActive - test",
+ "CMusEngReceiveSession",
+ "IsDisplayActive",
+ "FUNCTIONALITY",
+ SetupL, UT_IsDisplayActive, Teardown)
+
+EUNIT_TEST(
+ "InactivityTimeout - test ",
+ "CMusEngReceiveSession",
+ "InactivityTimeout",
+ "FUNCTIONALITY",
+ SetupL, UT_InactivityTimeoutL, Teardown)
+
EUNIT_END_TEST_TABLE
// END OF FILE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengremotevideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,440 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// INTERNAL INCLUDES
+#include "ut_musengremotevideoplayer.h"
+#include "musengremotevideoplayer.h"
+#include "mceinsession.h"
+#include "mcevideostream.h"
+#include "mcertpsource.h"
+#include "mcedisplaysink.h"
+
+// SYSTEM INCLUDES
+#include <eunitmacros.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngRemoteVideoPlayer* UT_CMusEngRemoteVideoPlayer::NewL()
+ {
+ UT_CMusEngRemoteVideoPlayer* self = UT_CMusEngRemoteVideoPlayer::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngRemoteVideoPlayer* UT_CMusEngRemoteVideoPlayer::NewLC()
+ {
+ UT_CMusEngRemoteVideoPlayer* self = new( ELeave ) UT_CMusEngRemoteVideoPlayer();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngRemoteVideoPlayer::~UT_CMusEngRemoteVideoPlayer()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngRemoteVideoPlayer::UT_CMusEngRemoteVideoPlayer()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::SetupL()
+ {
+ iMceSession = CMceInSession::NewL();
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ CMceRtpSource* source = CMceRtpSource::NewLC();
+ videoStream->SetSourceL( source );
+ CleanupStack::Pop( source );
+ CMceDisplaySink* sink = CMceDisplaySink::NewLC();
+ videoStream->AddSinkL( sink );
+ CleanupStack::Pop( sink );
+ iMceSession->AddStreamL( videoStream );
+ CleanupStack::Pop( videoStream );
+
+ iRemoteVideoPlayer = CMusEngRemoteVideoPlayer::NewL(
+ iDisplayHandlerStub,
+ iLcAudioControlStub );
+ iRemoteVideoPlayer->SetMceSession( iMceSession );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::Teardown()
+ {
+ delete iRemoteVideoPlayer;
+ delete iMceSession;
+ iLcAudioControlStub.Reset();
+ }
+
+
+
+// TEST CASES
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_NewLL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcVideoPlayerStateL()
+ {
+ // iMceSession not set
+ iRemoteVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+ iRemoteVideoPlayer->SetMceSession( iMceSession );
+
+ // Establish Session and simulate media playing.
+ iMceSession->iState = CMceSession::EEstablished;
+ for ( TInt i = 0; i < iMceSession->Streams().Count(); i++ )
+ {
+ iMceSession->Streams()[i]->iState = CMceMediaStream::EStreaming;
+ }
+
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPlaying ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+
+ // Media streams unavailable
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EUninitialized;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+
+ // All other stream states
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EInitialized;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EInit ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EBuffering;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EBuffering ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EIdle;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPaused ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EDisabled;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPaused ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+
+ iDisplayHandlerStub.iIsActive = ETrue;
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EStreaming;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPlaying ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+
+ iDisplayHandlerStub.iIsActive = EFalse;
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EStreaming;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPaused ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::ENoResources;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::ETranscodingRequired;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+
+ iMceSession->Streams()[0]->iState = CMceMediaStream::ETranscoding;
+ EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ),
+ TInt( iRemoteVideoPlayer->LcVideoPlayerState() ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcPlayL()
+ {
+ // iMceSession not set
+ iRemoteVideoPlayer->SetMceSession( NULL );
+ EUNIT_ASSERT( !iRemoteVideoPlayer->LcIsPlayingL() )
+ iRemoteVideoPlayer->SetMceSession( iMceSession );
+
+ iMceSession->iState = CMceSession::EEstablished;
+ for ( TInt i = 0; i < iMceSession->Streams().Count(); i++ )
+ {
+ iMceSession->Streams()[i]->iState = CMceMediaStream::EStreaming;
+ }
+
+ // Play Test
+ iRemoteVideoPlayer->LcPlayL();
+ EUNIT_ASSERT( iRemoteVideoPlayer->LcIsPlayingL() )
+
+ // Pause Test
+ iMceSession->Streams()[0]->iState = CMceMediaStream::EDisabled;
+ iRemoteVideoPlayer->LcPauseL();
+ EUNIT_ASSERT( !iRemoteVideoPlayer->LcIsPlayingL() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcWindowL()
+ {
+ EUNIT_ASSERT( iRemoteVideoPlayer->LcWindow() == iRemoteVideoPlayer )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcCameraControlL()
+ {
+ EUNIT_ASSERT( iRemoteVideoPlayer->LcCameraControl() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcSourceFileControlL()
+ {
+ EUNIT_ASSERT( iRemoteVideoPlayer->LcSourceFileControl() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcDestinationFileControlL()
+ {
+ EUNIT_ASSERT( iRemoteVideoPlayer->LcDestinationFileControl() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcAudioControlL()
+ {
+ EUNIT_ASSERT( iRemoteVideoPlayer->LcAudioControl() == &iLcAudioControlStub )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcZoomControlL()
+ {
+ EUNIT_ASSERT( iRemoteVideoPlayer->LcZoomControl() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcBrightnessControlL()
+ {
+ EUNIT_ASSERT( iRemoteVideoPlayer->LcBrightnessControl() == NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_EnableLcWindowL()
+ {
+ EUNIT_ASSERT( !iRemoteVideoPlayer->IsLcWindowEnabled() )
+
+ // Enable
+ iRemoteVideoPlayer->EnableLcWindowL( ETrue );
+ EUNIT_ASSERT( iRemoteVideoPlayer->IsLcWindowEnabled() )
+
+ // Disable
+ iRemoteVideoPlayer->EnableLcWindowL( EFalse );
+ EUNIT_ASSERT( !iRemoteVideoPlayer->IsLcWindowEnabled() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcWindowRectL()
+ {
+ TRect rect( 12, 34, 56, 78 );
+ iRemoteVideoPlayer->SetLcWindowRectL( rect );
+ EUNIT_ASSERT( iRemoteVideoPlayer->LcWindowRect() == rect )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngRemoteVideoPlayer::UT_LcWindowOrientationL()
+ {
+ iRemoteVideoPlayer->SetLcWindowOrientationL( MLcWindow::EPortrait );
+ EUNIT_ASSERT_EQUALS( TInt( MLcWindow::EPortrait ),
+ TInt( iRemoteVideoPlayer->LcWindowOrientationL() ) )
+
+ iRemoteVideoPlayer->SetLcWindowOrientationL( MLcWindow::ELandscape );
+ EUNIT_ASSERT_EQUALS( TInt( MLcWindow::ELandscape ),
+ TInt( iRemoteVideoPlayer->LcWindowOrientationL() ) )
+ }
+
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusEngRemoteVideoPlayer,
+ "UT_CMusEngRemoteVideoPlayer",
+ "UNIT" )
+
+EUNIT_TEST(
+ "NewL - test ",
+ "CMusEngRemoteVideoPlayer",
+ "NewL",
+ "FUNCTIONALITY",
+ SetupL, UT_NewLL, Teardown)
+
+EUNIT_TEST(
+ "LcVideoPlayerState - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcVideoPlayerState",
+ "FUNCTIONALITY",
+ SetupL, UT_LcVideoPlayerStateL, Teardown)
+
+EUNIT_TEST(
+ "LcPlayL - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcPlayL",
+ "FUNCTIONALITY",
+ SetupL, UT_LcPlayL, Teardown)
+
+EUNIT_TEST(
+ "LcWindow - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcWindow",
+ "FUNCTIONALITY",
+ SetupL, UT_LcWindowL, Teardown)
+
+EUNIT_TEST(
+ "LcCameraControl - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcCameraControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcCameraControlL, Teardown)
+
+EUNIT_TEST(
+ "LcSourceFile - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcSourceFile",
+ "FUNCTIONALITY",
+ SetupL, UT_LcSourceFileControlL, Teardown)
+
+EUNIT_TEST(
+ "LcDestinationFile - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcDestinationFile",
+ "FUNCTIONALITY",
+ SetupL, UT_LcDestinationFileControlL, Teardown)
+
+EUNIT_TEST(
+ "LcAudioControl - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcAudioControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcAudioControlL, Teardown)
+
+EUNIT_TEST(
+ "LcZoomControl - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcZoomControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcZoomControlL, Teardown)
+
+EUNIT_TEST(
+ "LcBrightnessControl - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcBrightnessControl",
+ "FUNCTIONALITY",
+ SetupL, UT_LcBrightnessControlL, Teardown)
+
+EUNIT_TEST(
+ "EnableLcWindowL - test ",
+ "CMusEngRemoteVideoPlayer",
+ "EnableLcWindowL",
+ "FUNCTIONALITY",
+ SetupL, UT_EnableLcWindowL, Teardown)
+
+EUNIT_TEST(
+ "LcWindowRect - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcWindowRect",
+ "FUNCTIONALITY",
+ SetupL, UT_LcWindowRectL, Teardown)
+
+EUNIT_TEST(
+ "LcWindowOrientation - test ",
+ "CMusEngRemoteVideoPlayer",
+ "LcWindowOrientation",
+ "FUNCTIONALITY",
+ SetupL, UT_LcWindowOrientationL, Teardown)
+
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE
+
+
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,637 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-
-// INTERNAL INCLUDES
-#include "telephonyaudiorouting.h"
-#include "ut_musengsession.h"
-#include "musengstubs.h"
-#include "musengtestdefs.h"
-
-#include "musenglivesession.h"
-#include "musengtelephoneutils.h"
-#include "musengmceutils.h"
-
-// SYSTEM INCLUDES
-#include <digia/eunit/eunitmacros.h>
-#include <centralrepository.h>
-#include <mcedisplaysink.h>
-#include <e32property.h>
-#include <telephonydomainpskeys.h>
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusEngSession* UT_CMusEngSession::NewL()
- {
- UT_CMusEngSession* self = UT_CMusEngSession::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusEngSession* UT_CMusEngSession::NewLC()
- {
- UT_CMusEngSession* self = new( ELeave ) UT_CMusEngSession();
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusEngSession::~UT_CMusEngSession()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Default constructor
-// -----------------------------------------------------------------------------
-//
-UT_CMusEngSession::UT_CMusEngSession()
- :iLiveSession( NULL ),
- iObserver( NULL )
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Second phase construct
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::ConstructL()
- {
- // The ConstructL from the base class CEUnitTestSuiteClass must be called.
- // It generates the test case table.
- CEUnitTestSuiteClass::ConstructL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::SetupL()
- {
- iObserver = new( ELeave ) CMusEngObserverStub;
- iLiveSession = CMusEngLiveSession::NewL( KNullDesC(),
- TRect(0,0, 100,100),
- *iObserver,
- *iObserver,
- *iObserver );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::Teardown()
- {
- delete iLiveSession;
- delete iObserver;
- }
-
-
-
-// TEST CASES
-
-
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_RectL()
- {
- TRect rect = iLiveSession->Rect();
-
- // Initial values
- EUNIT_ASSERT( rect.iTl.iX == 0 );
- EUNIT_ASSERT( rect.iTl.iY == 0 );
- EUNIT_ASSERT( rect.iBr.iX == 100 );
- EUNIT_ASSERT( rect.iBr.iY == 100 );
-
- iLiveSession->iRect.iTl.iX = 100;
- iLiveSession->iRect.iTl.iY = 200;
- iLiveSession->iRect.iBr.iX = 300;
- iLiveSession->iRect.iBr.iY = 400;
-
- rect = iLiveSession->Rect();
-
- EUNIT_ASSERT( rect.iTl.iX == 100 );
- EUNIT_ASSERT( rect.iTl.iY == 200 );
- EUNIT_ASSERT( rect.iBr.iX == 300 );
- EUNIT_ASSERT( rect.iBr.iY == 400 );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_SetRectLL()
- {
- TRect rect;
-
- rect.iTl.iX = 100;
- rect.iTl.iY = 200;
- rect.iBr.iX = 300;
- rect.iBr.iY = 400;
-
- iLiveSession->SetRectL( rect );
-
- EUNIT_ASSERT( iLiveSession->iRect.iTl.iX == 100 );
- EUNIT_ASSERT( iLiveSession->iRect.iTl.iY == 200 );
- EUNIT_ASSERT( iLiveSession->iRect.iBr.iX == 300 );
- EUNIT_ASSERT( iLiveSession->iRect.iBr.iY == 400 );
-
- ESTABLISH_OUT_SESSION( iLiveSession );
-
- CMceDisplaySink* display =
- MusEngMceUtils::GetDisplayL( *( iLiveSession->iSession ) );
-
- TRect displayRect = display->DisplayRectL();
-
- EUNIT_ASSERT( displayRect.iTl.iX == 100 );
- EUNIT_ASSERT( displayRect.iTl.iY == 200 );
- EUNIT_ASSERT( displayRect.iBr.iX == 300 );
- EUNIT_ASSERT( displayRect.iBr.iY == 400 );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_AudioRoutingCanBeChangedL()
- {
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- EUNIT_ASSERT( iLiveSession->AudioRoutingCanBeChanged() );
-
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::EWiredAudioAccessory;
- EUNIT_ASSERT( !iLiveSession->AudioRoutingCanBeChanged() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_IsAudioRoutingHeadsetL()
- {
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::EBTAudioAccessory;
- EUNIT_ASSERT( iLiveSession->IsAudioRoutingHeadset() );
-
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ENotActive;
- EUNIT_ASSERT( !iLiveSession->IsAudioRoutingHeadset());
-
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ENone;
- EUNIT_ASSERT( !iLiveSession->IsAudioRoutingHeadset());
-
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::EHandset;
- EUNIT_ASSERT( !iLiveSession->IsAudioRoutingHeadset());
-
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- EUNIT_ASSERT( !iLiveSession->IsAudioRoutingHeadset());
-
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::EWiredAudioAccessory;
- EUNIT_ASSERT( iLiveSession->IsAudioRoutingHeadset());
-
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ETTY;
- EUNIT_ASSERT( !iLiveSession->IsAudioRoutingHeadset());
-
- }
-
-void UT_CMusEngSession::UT_IsAudioRoutingLoudSpeakerL()
- {
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- iLiveSession->iTelephoneUtils->iAudioOutputAtStartup =
- CTelephonyAudioRouting::ELoudspeaker;
- EUNIT_ASSERT( !iLiveSession->IsAudioRoutingLoudSpeaker());
-
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- iLiveSession->iTelephoneUtils->iAudioOutputAtStartup =
- CTelephonyAudioRouting::EHandset;
- EUNIT_ASSERT( iLiveSession->IsAudioRoutingLoudSpeaker() );
-
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- iLiveSession->iTelephoneUtils->iAudioOutputAtStartup =
- CTelephonyAudioRouting::EBTAudioAccessory;
- EUNIT_ASSERT( iLiveSession->IsAudioRoutingLoudSpeaker() );
-
- iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- iLiveSession->iTelephoneUtils->iAudioOutputAtStartup =
- CTelephonyAudioRouting::EWiredAudioAccessory;
- EUNIT_ASSERT( iLiveSession->IsAudioRoutingLoudSpeaker() );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_EnableLoudspeakerLL()
- {
- // Almost dummy case is enough, because IsLoudSpeakerEnabled forwards
- // requests to CMusEngTelephonyUtils and is tested there. So test only
- // fail handling
- iLiveSession->EnableLoudspeakerL( EFalse, EFalse );
-
- CMusEngTelephoneUtils* telephone = iLiveSession->iTelephoneUtils;
-
- EUNIT_ASSERT( telephone->iTelephonyAudioRouting->iShowNoteMode == EFalse );
- EUNIT_ASSERT( telephone->iTelephonyAudioRouting->iCurrentOutput !=
- CTelephonyAudioRouting::ELoudspeaker );
-
- telephone->iTelephonyAudioRouting->iForceFailWithCode = KErrNotSupported;
-
- //Must fail in HW, but not in emulator
- TRAPD( error, iLiveSession->EnableLoudspeakerL( ETrue, ETrue ) );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
-
- #if (!defined (__WINS__) && !defined(__WINSCW__))
- EUNIT_ASSERT( error == KErrNotSupported );
- #else
- EUNIT_ASSERT( error == KErrNone );
- #endif
-
- EUNIT_ASSERT( telephone->iTelephonyAudioRouting->iCurrentOutput !=
- CTelephonyAudioRouting::ELoudspeaker );
-
- telephone->iTelephonyAudioRouting->iForceFailWithCode = KErrGeneral;
-
- // Must fail in all cases
- TRAP( error, iLiveSession->EnableLoudspeakerL( EFalse, ETrue ) );
- MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT( error == KErrGeneral );
-
- EUNIT_ASSERT( telephone->iTelephonyAudioRouting->iCurrentOutput !=
- CTelephonyAudioRouting::ELoudspeaker );
-
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_IsLoudSpeakerEnabledL()
- {
- // Dummy case is enough, because IsLoudSpeakerEnabled forwards requests
- // to CMusEngTelephonyUtils and is tested there.
-
- // By default loudspeaker is not enabled.
- EUNIT_ASSERT( !iLiveSession->IsLoudSpeakerEnabled() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_VolumeLL()
- {
- // Dummy case is enough, because VolumeL forwards requests
- // to CMusEngTelephonyUtils and is tested there.
-
- iLiveSession->IsLoudSpeakerEnabled();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_MuteMicLL()
- {
- // Cannot test since EUnit notices some error leak if
- // the state of the mute is actually changed. Still, from MusEngine
- // point of view everything is done identically despite the fact if
- // real state changes or not. => Problem is in EUnit or leak happens
- // elsewhere.
- }
-
-
-// -----------------------------------------------------------------------------
-// Almost a dummy test since we cannot write
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_IsMicMutedLL()
- {
- // Ignore error (KErrAlreadyExists etc), just make sure this property exists
- RProperty::Define( KPSUidTelMicrophoneMuteStatus,
- KTelMicrophoneMuteState,
- RProperty::EInt,
- 0 );
-
- User::LeaveIfError( RProperty::Set( KPSUidTelMicrophoneMuteStatus,
- KTelMicrophoneMuteState,
- EPSTelMicMuteStateUninitialized ) );
-
- EUNIT_ASSERT( !iLiveSession->IsMicMutedL() )
-
- User::LeaveIfError( RProperty::Set( KPSUidTelMicrophoneMuteStatus,
- KTelMicrophoneMuteState,
- EPSTelMicMuteOn ) );
-
- EUNIT_ASSERT( iLiveSession->IsMicMutedL() )
-
- User::LeaveIfError( RProperty::Set( KPSUidTelMicrophoneMuteStatus,
- KTelMicrophoneMuteState,
- EPSTelMicMuteOff ) );
-
- EUNIT_ASSERT( !iLiveSession->IsMicMutedL() )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_SetAudioRoutingObserverL()
- {
- EUNIT_ASSERT( !iLiveSession->iTelephoneUtils->iAudioRoutingObserver )
-
- iLiveSession->SetAudioRoutingObserver( iObserver );
-
- EUNIT_ASSERT_EQUALS( iLiveSession->iTelephoneUtils->iAudioRoutingObserver,
- iObserver )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_VolumeUpLL()
- {
- CMusEngTelephoneUtils* telephone = iLiveSession->iTelephoneUtils;
-
- // Next ones must leave if runs out of memory, so that test
- // does not fail when executed with alloc fail simulation
- User::LeaveIfError( telephone->iRepository->Set(
- KTelIncallEarVolume,
- KTelephonyVolumeDefaultValue ) );
- User::LeaveIfError( telephone->iRepository->Set(
- KTelIncallLoudspeakerVolume,
- KTelephonyVolumeDefaultValue ) );
-
-
- TInt earVolume = 0;
- TInt speakerVolume = 0;
-
- iLiveSession->CMusEngSession::VolumeUpL();
-
- telephone->iRepository->Get( KTelIncallEarVolume,
- earVolume );
- telephone->iRepository->Get( KTelIncallLoudspeakerVolume,
- speakerVolume );
-
- EUNIT_ASSERT( earVolume == KTelephonyVolumeDefaultValue + 1 );
- EUNIT_ASSERT( speakerVolume == KTelephonyVolumeDefaultValue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_VolumeDownLL()
- {
- CMusEngTelephoneUtils* telephone = iLiveSession->iTelephoneUtils;
-
- // Next ones must leave if runs out of memory, so that test
- // does not fail when executed with alloc fail simulation
- User::LeaveIfError( telephone->iRepository->Set(
- KTelIncallEarVolume,
- KTelephonyVolumeDefaultValue ) );
- User::LeaveIfError( telephone->iRepository->Set(
- KTelIncallLoudspeakerVolume,
- KTelephonyVolumeDefaultValue ) );
-
-
- TInt earVolume = 0;
- TInt speakerVolume = 0;
-
- iLiveSession->CMusEngSession::VolumeDownL();
-
- telephone->iRepository->Get( KTelIncallEarVolume,
- earVolume );
- telephone->iRepository->Get( KTelIncallLoudspeakerVolume,
- speakerVolume );
-
- EUNIT_ASSERT( earVolume == KTelephonyVolumeDefaultValue - 1 );
- EUNIT_ASSERT( speakerVolume == KTelephonyVolumeDefaultValue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_SetVolumeLL()
- {
- CMusEngTelephoneUtils* telephone = iLiveSession->iTelephoneUtils;
-
- // Next ones must leave if runs out of memory, so that test
- // does not fail when executed with alloc fail simulation
- User::LeaveIfError( telephone->iRepository->Set(
- KTelIncallEarVolume,
- KTelephonyVolumeDefaultValue ) );
- User::LeaveIfError( telephone->iRepository->Set(
- KTelIncallLoudspeakerVolume,
- KTelephonyVolumeDefaultValue ) );
-
-
- TInt earVolume = 0;
- TInt speakerVolume = 0;
- TInt newVolume = KTelephonyVolumeDefaultValue + 1;
-
- iLiveSession->CMusEngSession::SetVolumeL( newVolume );
-
- telephone->iRepository->Get( KTelIncallEarVolume,
- earVolume );
- telephone->iRepository->Get( KTelIncallLoudspeakerVolume,
- speakerVolume );
-
- EUNIT_ASSERT( earVolume == newVolume );
- EUNIT_ASSERT( speakerVolume == KTelephonyVolumeDefaultValue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngSession::UT_SetVolumeChangeObserverL()
- {
- EUNIT_ASSERT( !iLiveSession->iVolumeObserver )
-
- iLiveSession->SetVolumeChangeObserver( iObserver );
-
- EUNIT_ASSERT_EQUALS( iLiveSession->iVolumeObserver, iObserver )
-
- iObserver->VolumeChanged( 2, EFalse );
- EUNIT_ASSERT( iObserver->iVolume == 2 );
- }
-
-
-// TEST TABLE
-
-EUNIT_BEGIN_TEST_TABLE(
- UT_CMusEngSession,
- "UT_CMusEngSesssion",
- "UNIT" )
-
-EUNIT_TEST(
- "Rect - test ",
- "CMusEngSession",
- "Rect",
- "FUNCTIONALITY",
- SetupL, UT_RectL, Teardown)
-
-EUNIT_TEST(
- "SetRectL - test ",
- "CMusEngSession",
- "SetRectL",
- "FUNCTIONALITY",
- SetupL, UT_SetRectLL, Teardown)
-
-EUNIT_TEST(
- "AudioRoutingCanBeChanged - test ",
- "CMusEngSession",
- "AudioRoutingCanBeChanged",
- "FUNCTIONALITY",
- SetupL, UT_AudioRoutingCanBeChangedL, Teardown)
-
-EUNIT_TEST(
- "IsAudioRoutingHeadsetL - test ",
- "CMusEngSession",
- "IsAudioRoutingHeadsetL",
- "FUNCTIONALITY",
- SetupL, UT_IsAudioRoutingHeadsetL, Teardown)
-
-EUNIT_TEST(
- "IsAudioRoutingLoudSpeakerL - test ",
- "CMusEngSession",
- "IsAudioRoutingLoudSpeakerL",
- "FUNCTIONALITY",
- SetupL, UT_IsAudioRoutingLoudSpeakerL, Teardown)
-
-EUNIT_TEST(
- "EnableLoudspeakerL - test ",
- "CMusEngSession",
- "EnableLoudspeakerL",
- "FUNCTIONALITY",
- SetupL, UT_EnableLoudspeakerLL, Teardown)
-
-EUNIT_TEST(
- "IsLoudSpeakerEnabled - test ",
- "CMusEngSession",
- "IsLoudSpeakerEnabled",
- "FUNCTIONALITY",
- SetupL, UT_IsLoudSpeakerEnabledL, Teardown)
-
-EUNIT_TEST(
- "VolumeL - test ",
- "CMusEngSession",
- "VolumeL",
- "FUNCTIONALITY",
- SetupL, UT_VolumeLL, Teardown)
-
-EUNIT_TEST(
- "MuteMicL - test ",
- "CMusEngSession",
- "MuteMicL",
- "FUNCTIONALITY",
- SetupL, UT_MuteMicLL, Teardown)
-
-EUNIT_TEST(
- "IsMicMutedL - test ",
- "CMusEngSession",
- "IsMicMutedL",
- "FUNCTIONALITY",
- SetupL, UT_IsMicMutedLL, Teardown)
-
-EUNIT_TEST(
- "SetAudioRoutingObserverL - test ",
- "CMusEngSession",
- "SetAudioRoutingObserverL",
- "FUNCTIONALITY",
- SetupL, UT_SetAudioRoutingObserverL, Teardown)
-
-EUNIT_TEST(
- "VolumeUpL - test ",
- "CMusEngSession",
- "VolumeUpL",
- "FUNCTIONALITY",
- SetupL, UT_VolumeUpLL, Teardown)
-
-EUNIT_TEST(
- "VolumeDownL - test ",
- "CMusEngSession",
- "VolumeDownL",
- "FUNCTIONALITY",
- SetupL, UT_VolumeDownLL, Teardown)
-
-EUNIT_TEST(
- "SetVolumeL - test ",
- "CMusEngSession",
- "SetVolumeL",
- "FUNCTIONALITY",
- SetupL, UT_SetVolumeLL, Teardown)
-
-EUNIT_TEST(
- "SetVolumeChangeObserver - test ",
- "CMusEngSession",
- "SetVolumeChangeObserver",
- "FUNCTIONALITY",
- SetupL, UT_SetVolumeChangeObserverL, Teardown)
-
-
-EUNIT_END_TEST_TABLE
-
-// END OF FILE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengsessionmanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,293 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// INTERNAL INCLUDES
+#include "musengstubs.h"
+#include "ut_musengsessionmanager.h"
+#include "musengsessionmanager.h"
+#include "musengmcesession.h"
+#include "musengmceoutsession.h"
+#include "mussessionproperties.h"
+#include "centralrepository.h"
+#include "e32property.h"
+#include "musengtestdefs.h"
+
+// SYSTEM INCLUDES
+#include <eunitmacros.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngSessionManager* UT_CMusEngSessionManager::NewL()
+ {
+ UT_CMusEngSessionManager* self = UT_CMusEngSessionManager::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngSessionManager* UT_CMusEngSessionManager::NewLC()
+ {
+ UT_CMusEngSessionManager* self = new( ELeave )UT_CMusEngSessionManager();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngSessionManager::~UT_CMusEngSessionManager()
+ {
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngSessionManager::UT_CMusEngSessionManager()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngSessionManager::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngSessionManager::SetupL()
+ {
+ User::LeaveIfError(
+ RProperty::Set(
+ NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KUseCase,
+ MultimediaSharing::EMusLiveVideo ) );
+ iSessionManager = CMusEngSessionManager::NewL();
+
+ iLcUiProvider = new( ELeave )CLcUiProviderStub;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngSessionManager::Teardown()
+ {
+ delete iSessionManager;
+ delete iLcUiProvider;
+ // The Central Repository stub is using RProperty stub to store global data.
+ // The global data must be freed here.
+ PropertyHelper::Close();
+ }
+
+// TEST CASES
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngSessionManager::UT_NewL()
+ {
+ EUNIT_ASSERT( iSessionManager->iSession != NULL )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngSessionManager::UT_SessionL()
+ {
+ EUNIT_ASSERT( iSessionManager->iSession == &( iSessionManager->Session() ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngSessionManager::UT_IsFeatureSupportedL()
+ {
+ EUNIT_ASSERT(
+ iSessionManager->IsFeatureSupported( CLcEngine::ELcShowAcceptQuery ) )
+
+ EUNIT_ASSERT(
+ iSessionManager->IsFeatureSupported( CLcEngine::ELcShowInvitingNote ) )
+
+ EUNIT_ASSERT(
+ iSessionManager->IsFeatureSupported( CLcEngine::ELcShowWaitingNote ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngSessionManager::UT_CreateMusSessionL()
+ {
+ CMusEngMceSession* session = NULL;
+
+ // Live session
+ session =
+ iSessionManager->CreateMusSessionL(
+ MultimediaSharing::EMusLiveVideo );
+ EUNIT_ASSERT( session != NULL )
+ delete session;
+
+ // Clip session
+ session =
+ iSessionManager->CreateMusSessionL(
+ MultimediaSharing::EMusClipVideo );
+ EUNIT_ASSERT( session != NULL )
+ delete session;
+
+ // Receive session
+ session =
+ iSessionManager->CreateMusSessionL(
+ MultimediaSharing::EMusReceive );
+ EUNIT_ASSERT( session != NULL )
+ delete session;
+
+ // Two way session
+ session =
+ iSessionManager->CreateMusSessionL(
+ MultimediaSharing::EMusTwoWayVideo );
+ EUNIT_ASSERT( session != NULL )
+ delete session;
+
+ // Two way receive session
+ session =
+ iSessionManager->CreateMusSessionL(
+ MultimediaSharing::EMusReceiveTwoWayVideo );
+ EUNIT_ASSERT( session != NULL )
+ delete session;
+
+ // Other session types
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iSessionManager->CreateMusSessionL( MultimediaSharing::EMusStillImage ),
+ KErrNotSupported )
+
+ EUNIT_ASSERT_SPECIFIC_LEAVE(
+ iSessionManager->CreateMusSessionL( MultimediaSharing::EMusContinue ),
+ KErrNotSupported )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngSessionManager::UT_PropertyChangedL()
+ {
+ iSessionManager->Session().SetLcUiProvider( iLcUiProvider );
+
+ // Background startup not active, property change ignored
+ MLcSession* origSession = &iSessionManager->Session();
+ iSessionManager->PropertyChanged(
+ NMusSessionApi::KUseCase, MultimediaSharing::EMusReceiveTwoWayVideo );
+
+ EUNIT_ASSERT( origSession == &iSessionManager->Session() );
+ EUNIT_ASSERT( iLcUiProvider->iCalledFunction != CLcUiProviderStub::EHandleForegroundStatus );
+
+ // Background startup active, usecase not changed, no effect
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KFastMode,
+ MusSettingsKeys::EFastModeOn ) );
+ iSessionManager->iSession->iBackground = ETrue;
+ origSession = &iSessionManager->Session();
+ iSessionManager->PropertyChanged(
+ NMusSessionApi::KUseCase, iSessionManager->iCurrentUseCase );
+
+ EUNIT_ASSERT( origSession == &iSessionManager->Session() );
+ EUNIT_ASSERT( iLcUiProvider->iCalledFunction != CLcUiProviderStub::EHandleForegroundStatus );
+
+ // Background startup active, usecase changed, uiprovider informed and
+ // new session replaces old one
+ origSession = &iSessionManager->Session();
+ iSessionManager->PropertyChanged(
+ NMusSessionApi::KUseCase, MultimediaSharing::EMusClipVideo );
+ if ( origSession == &iSessionManager->Session() )
+ {
+ // Couldn't create new session because running out of memory
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( origSession != &iSessionManager->Session() );
+ EUNIT_ASSERT( iLcUiProvider->iCalledFunction == CLcUiProviderStub::EHandleForegroundStatus );
+ EUNIT_ASSERT( iLcUiProvider->iForeground );
+ }
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusEngSessionManager,
+ "UT_CMusEngSessionManager",
+ "UNIT" )
+
+EUNIT_TEST(
+ "NewL - test ",
+ "CMusEngSessionManager",
+ "NewL",
+ "FUNCTIONALITY",
+ SetupL, UT_NewL, Teardown)
+
+EUNIT_TEST(
+ "Session - test ",
+ "CMusEngSessionManager",
+ "Session",
+ "FUNCTIONALITY",
+ SetupL, UT_SessionL, Teardown)
+
+EUNIT_TEST(
+ "IsFeatureSupported - test ",
+ "CMusEngSessionManager",
+ "IsFeatureSupported",
+ "FUNCTIONALITY",
+ SetupL, UT_IsFeatureSupportedL, Teardown)
+
+EUNIT_TEST(
+ "CreateMusSessionL - test ",
+ "CMusEngSessionManager",
+ "CreateMusSessionL",
+ "FUNCTIONALITY",
+ SetupL, UT_CreateMusSessionL, Teardown)
+
+EUNIT_TEST(
+ "PropertyChanged - test ",
+ "CMusEngSessionManager",
+ "PropertyChanged",
+ "FUNCTIONALITY",
+ SetupL, UT_PropertyChangedL, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+
+// END OF FILE
+
+
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengsipprofilehandler.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengsipprofilehandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -23,7 +23,6 @@
#include "musengtestdefs.h"
#include "sipprofilealrcontroller.h"
-
// SYSTEM INCLUDES
#include <sipprofile.h>
#include <digia/eunit/eunitmacros.h>
@@ -31,7 +30,6 @@
const TUint KSipProfileId( 1 );
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -87,25 +85,16 @@
// It generates the test case table.
CEUnitTestSuiteClass::ConstructL();
}
-
-// -----------------------------------------------------------------------------
-// From MMusSipProfileUser
-// -----------------------------------------------------------------------------
-//
-TBool UT_CMusEngSipProfileHandler::IsRoamingBetweenAPsAllowed()
- {
- return iRoamingBetweenAPsAllowed;
- }
-
-
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusEngSipProfileHandler::SetupL()
{
- iProfileHandler = CMusSipProfileHandler::NewL( *this );
+ iObserver = new( ELeave ) CMusEngObserverStub;
+ iProfileHandler = CMusSipProfileHandler::NewL( *iObserver );
}
@@ -116,7 +105,7 @@
void UT_CMusEngSipProfileHandler::Teardown()
{
delete iProfileHandler;
- iRoamingBetweenAPsAllowed = EFalse;
+ delete iObserver;
}
@@ -127,7 +116,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngSipProfileHandler::UT_CMusEngSipProfileHandler_CreateSipProfileLL()
+void UT_CMusEngSipProfileHandler::UT_CreateSipProfileLL()
{
// SIP profile ID zero
iProfileHandler->CreateProfileL( 0 );
@@ -148,7 +137,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngSipProfileHandler::UT_CMusEngSipProfileHandler_ProfileIdL()
+void UT_CMusEngSipProfileHandler::UT_ProfileIdL()
{
// SIP profile does not yet exist
EUNIT_ASSERT_EQUALS( 0, iProfileHandler->ProfileId() )
@@ -162,7 +151,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngSipProfileHandler::UT_CMusEngSipProfileHandler_AlrEventL()
+void UT_CMusEngSipProfileHandler::UT_AlrEventL()
{
const TUint32 KSnapId( 1 );
const TUint32 KIapId( 1 );
@@ -229,7 +218,7 @@
iProfileHandler->iProfileAlrController->iLastUsedIap = 0;
// Event is EIapAvailable, SIP profile ID matches, roaming not allowed
- iRoamingBetweenAPsAllowed = ETrue;
+ iObserver->iRoamingBetweenAPsAllowed = ETrue;
iProfileHandler->AlrEvent(
MSipProfileAlrObserver::EIapAvailable,
KSipProfileId, KSnapId, KIapId );
@@ -251,9 +240,10 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngSipProfileHandler::UT_CMusEngSipProfileHandler_NullTestsL()
+void UT_CMusEngSipProfileHandler::UT_NullTestsL()
{
// Dummies
+
CSIPTransactionBase transactionBase;
CSIPServerTransaction serverTransaction;
CSIPDialog dialog;
@@ -263,8 +253,7 @@
CSIPRefresh refresh;
// Tests
- iProfileHandler->ProfileRegistryEventOccurred( 0,
- MSIPProfileRegistryObserver::EProfileCreated );
+
iProfileHandler->ProfileRegistryErrorOccurred( 0, 0 );
iProfileHandler->IncomingRequest( 0, NULL );
iProfileHandler->TimedOut( serverTransaction );
@@ -290,7 +279,7 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusEngSipProfileHandler::UT_CMusEngSipProfileHandler_UserFromProfileLCL()
+void UT_CMusEngSipProfileHandler::UT_UserFromProfileLCL()
{
iProfileHandler->CreateProfileL( KSipProfileId );
CSIPProfile* profile = iProfileHandler->Profile();
@@ -313,6 +302,58 @@
CleanupStack::PopAndDestroy( user );
}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngSipProfileHandler::UT_IsRegisteredL()
+ {
+ EUNIT_ASSERT( !iProfileHandler->IsRegistered( ) )
+ iProfileHandler->CreateProfileL( KSipProfileId );
+ EUNIT_ASSERT( iProfileHandler->IsRegistered( ) )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngSipProfileHandler::UT_ProfileRegistryEventOccurredL()
+ {
+ // No profile yet
+ iProfileHandler->ProfileRegistryEventOccurred( 0,
+ MSIPProfileRegistryObserver::EProfileRegistered );
+ EUNIT_ASSERT( iObserver->IsReseted() )
+
+ // Create profile, but notify about registration of some other profile
+ iProfileHandler->CreateProfileL( 1 );
+ iProfileHandler->ProfileRegistryEventOccurred( 2,
+ MSIPProfileRegistryObserver::EProfileRegistered );
+ EUNIT_ASSERT( iObserver->IsReseted() )
+
+ // Normal case
+ iProfileHandler->ProfileRegistryEventOccurred( 1,
+ MSIPProfileRegistryObserver::EProfileRegistered );
+ EUNIT_ASSERT( iObserver->iProfileRegisteredCalled )
+ iObserver->Reset();
+
+ // React exclusively to EProfileRegistered
+ iProfileHandler->ProfileRegistryEventOccurred( 1,
+ MSIPProfileRegistryObserver::EProfileCreated );
+ EUNIT_ASSERT( iObserver->IsReseted() )
+ iProfileHandler->ProfileRegistryEventOccurred( 1,
+ MSIPProfileRegistryObserver::EProfileUpdated );
+ EUNIT_ASSERT( iObserver->IsReseted() )
+ iProfileHandler->ProfileRegistryEventOccurred( 1,
+ MSIPProfileRegistryObserver::EProfileDeregistered );
+ EUNIT_ASSERT( iObserver->IsReseted() )
+ iProfileHandler->ProfileRegistryEventOccurred( 1,
+ MSIPProfileRegistryObserver::EProfileDestroyed );
+ EUNIT_ASSERT( iObserver->IsReseted() )
+ }
+
+
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -325,36 +366,50 @@
"CMusSipProfileHandler",
"CreateSipProfileL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngSipProfileHandler_CreateSipProfileLL, Teardown)
-
+ SetupL, UT_CreateSipProfileLL, Teardown)
+
EUNIT_TEST(
"ProfileId - test ",
"CMusSipProfileHandler",
"ProfileId",
"FUNCTIONALITY",
- SetupL, UT_CMusEngSipProfileHandler_ProfileIdL, Teardown)
+ SetupL, UT_ProfileIdL, Teardown)
EUNIT_TEST(
"AlrEventL - test ",
"CMusEngSipProfileHandler",
"AlrEventL",
"FUNCTIONALITY",
- SetupL, UT_CMusEngSipProfileHandler_AlrEventL, Teardown)
-
+ SetupL, UT_AlrEventL, Teardown)
+
EUNIT_TEST(
"Null tests for NOP functions",
"CMusEngSipProfileHandler",
"Several NOP functions",
"FUNCTIONALITY",
- SetupL, UT_CMusEngSipProfileHandler_NullTestsL, Teardown)
+ SetupL, UT_NullTestsL, Teardown)
EUNIT_TEST(
"UserFromProfileLC - test ",
- "CMusEngOutSession",
+ "CMusEngSipProfileHandler",
"UserFromProfileLC",
"FUNCTIONALITY",
- SetupL, UT_CMusEngSipProfileHandler_UserFromProfileLCL, Teardown)
-
+ SetupL, UT_UserFromProfileLCL, Teardown)
+
+EUNIT_TEST(
+ "IsRegistered - test ",
+ "CMusEngSipProfileHandler",
+ "IsRegistered",
+ "FUNCTIONALITY",
+ SetupL, UT_IsRegisteredL, Teardown)
+
+EUNIT_TEST(
+ "ProfileRegistryEventOccurred - test ",
+ "CMusEngSipProfileHandler",
+ "ProfileRegistryEventOccurred",
+ "FUNCTIONALITY",
+ SetupL, UT_ProfileRegistryEventOccurredL, Teardown)
+
EUNIT_END_TEST_TABLE
// END OF FILE
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengtelephoneutils.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengtelephoneutils.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -27,7 +27,7 @@
// SYSTEM INCLUDES
#include <digia/eunit/eunitmacros.h>
#include <centralrepository.h>
-
+#include <e32property.h>
@@ -95,27 +95,24 @@
void UT_CMusEngTelephoneUtils::SetupL()
{
iObserver = new( ELeave ) CMusEngObserverStub;
- iTelephoneUtils = CMusEngTelephoneUtils::NewL();
+ iTelephoneUtils = CMusEngTelephoneUtils::NewL( *iObserver );
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusEngTelephoneUtils::Teardown()
{
+ delete iTelephoneUtils;
+ iTelephoneUtils = NULL;
delete iObserver;
- delete iTelephoneUtils;
+ iObserver = NULL;
+ PropertyHelper::Close();
}
-
-// TEST CASES
-
-
-
-
+// TEST CASES
// -----------------------------------------------------------------------------
//
@@ -155,77 +152,13 @@
iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
CTelephonyAudioRouting::EBTAudioAccessory;
- EUNIT_ASSERT( iTelephoneUtils->AudioRoutingCanBeChanged() );
+ EUNIT_ASSERT( !iTelephoneUtils->AudioRoutingCanBeChanged() );
iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
CTelephonyAudioRouting::ETTY;
- EUNIT_ASSERT( !iTelephoneUtils->AudioRoutingCanBeChanged() );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngTelephoneUtils::UT_IsAudioRoutingHeadsetL()
- {
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::EBTAudioAccessory;
- EUNIT_ASSERT( iTelephoneUtils->IsAudioRoutingHeadset());
-
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ENotActive;
- EUNIT_ASSERT( !iTelephoneUtils->IsAudioRoutingHeadset() );
-
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ENone;
- EUNIT_ASSERT( !iTelephoneUtils->IsAudioRoutingHeadset() );
-
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::EHandset;
- EUNIT_ASSERT( !iTelephoneUtils->IsAudioRoutingHeadset() );
-
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- EUNIT_ASSERT( !iTelephoneUtils->IsAudioRoutingHeadset() );
-
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::EWiredAudioAccessory;
- EUNIT_ASSERT( iTelephoneUtils->IsAudioRoutingHeadset() );
-
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ETTY;
- EUNIT_ASSERT( !iTelephoneUtils->IsAudioRoutingHeadset() );
-
+ EUNIT_ASSERT( !iTelephoneUtils->AudioRoutingCanBeChanged() );
}
-void UT_CMusEngTelephoneUtils::UT_IsAudioRoutingLoudSpeakerL()
- {
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- iTelephoneUtils->iAudioOutputAtStartup =
- CTelephonyAudioRouting::ELoudspeaker;
- EUNIT_ASSERT( !iTelephoneUtils->IsAudioRoutingLoudSpeaker());
-
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- iTelephoneUtils->iAudioOutputAtStartup =
- CTelephonyAudioRouting::EHandset;
- EUNIT_ASSERT( iTelephoneUtils->IsAudioRoutingLoudSpeaker() );
-
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- iTelephoneUtils->iAudioOutputAtStartup =
- CTelephonyAudioRouting::EBTAudioAccessory;
- EUNIT_ASSERT( iTelephoneUtils->IsAudioRoutingLoudSpeaker() );
-
- iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- iTelephoneUtils->iAudioOutputAtStartup =
- CTelephonyAudioRouting::EWiredAudioAccessory;
- EUNIT_ASSERT( iTelephoneUtils->IsAudioRoutingLoudSpeaker() );
- }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -237,19 +170,18 @@
CTelephonyAudioRouting::EHandset;
// Set loudspeaker on, succeeds
- iTelephoneUtils->LoudspeakerL( ETrue, ETrue );
+ iTelephoneUtils->LoudspeakerL( ETrue );
EUNIT_ASSERT( iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput ==
CTelephonyAudioRouting::ELoudspeaker );
EUNIT_ASSERT( iTelephoneUtils->iTelephonyAudioRouting->iShowNoteMode ==
EFalse );
- EUNIT_ASSERT( iTelephoneUtils->iShowDialog == ETrue );
// Change conditions
iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
CTelephonyAudioRouting::EWiredAudioAccessory;
// Try to set loudspeaker on, fails because current set is not handset
- iTelephoneUtils->LoudspeakerL( ETrue, ETrue );
+ iTelephoneUtils->LoudspeakerL( ETrue );
EUNIT_ASSERT( iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput ==
CTelephonyAudioRouting::EWiredAudioAccessory );
@@ -260,7 +192,7 @@
CTelephonyAudioRouting::ELoudspeaker;
// Try to set loudspeaker off, goes to handset
- iTelephoneUtils->LoudspeakerL( EFalse, ETrue );
+ iTelephoneUtils->LoudspeakerL( EFalse );
EUNIT_ASSERT( iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput ==
CTelephonyAudioRouting::EHandset );
@@ -271,12 +203,11 @@
CTelephonyAudioRouting::EWiredAudioAccessory;
// Try to set loudspeaker off, goes to wired
- iTelephoneUtils->LoudspeakerL( EFalse, ETrue );
+ iTelephoneUtils->LoudspeakerL( EFalse );
EUNIT_ASSERT( iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput ==
CTelephonyAudioRouting::EWiredAudioAccessory );
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -292,7 +223,6 @@
EUNIT_ASSERT( !iTelephoneUtils->IsLoudSpeakerEnabled() );
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -310,10 +240,8 @@
volume = iTelephoneUtils->GetVolumeL();
EUNIT_ASSERT( volume == 8 );
-
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -364,7 +292,6 @@
EUNIT_ASSERT( loudSpeakerVolume == 10 );
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -377,94 +304,56 @@
*iTelephoneUtils->iTelephonyAudioRouting );
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusEngTelephoneUtils::UT_OutputChangedL()
{
+ // Loudspeaker
iTelephoneUtils->iAudioOutputAtStartup = CTelephonyAudioRouting::EHandset;
iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- iTelephoneUtils->iRepository->Set( KTelIncallLoudspeakerVolume, 8 );
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 4 )
- EUNIT_ASSERT( iObserver->iVolume == 0 );
+ CTelephonyAudioRouting::ELoudspeaker;
iTelephoneUtils->OutputChanged( *iTelephoneUtils->iTelephonyAudioRouting );
EUNIT_ASSERT_EQUALS( iTelephoneUtils->iAudioOutputAtStartup,
CTelephonyAudioRouting::ELoudspeaker )
-
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 8 )
- EUNIT_ASSERT( iObserver->iVolume == 0 );
- // Test observer
+ EUNIT_ASSERT( iObserver->iAudioRoutingChangedCalled )
- iTelephoneUtils->SetAudioRoutingObserver( iObserver );
- iTelephoneUtils->SetVolumeChangeObserver(iObserver);
-
+ // Handset
iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::EHandset;
+ CTelephonyAudioRouting::EHandset;
iTelephoneUtils->OutputChanged( *iTelephoneUtils->iTelephonyAudioRouting );
-
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 4 )
- EUNIT_ASSERT( iObserver->iVolume == 4 );
+
EUNIT_ASSERT_EQUALS( iTelephoneUtils->iAudioOutputAtStartup,
CTelephonyAudioRouting::EHandset )
EUNIT_ASSERT( iObserver->iAudioRoutingChangedCalled )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusEngTelephoneUtils::UT_SetOutputCompleteL()
{
- iTelephoneUtils->SetAudioRoutingObserver( iObserver );
- iTelephoneUtils->SetVolumeChangeObserver(iObserver);
- EUNIT_ASSERT( iObserver->iVolume == 0 );
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 4 )
-
// Setoutput fails
iTelephoneUtils->SetOutputComplete(
*iTelephoneUtils->iTelephonyAudioRouting,
- KErrGeneral );
-
+ KErrGeneral );
EUNIT_ASSERT( !iObserver->iAudioRoutingChangedCalled )
- EUNIT_ASSERT( iObserver->iVolume == 0 );
+ iObserver->Reset();
- // Setoutput succesful and note is shown by audiorouting api
- // There's already next pending setoutput for which we are going to
- // show note -> that cannot be forgotten
- iTelephoneUtils->iRepository->Set( KTelIncallEarVolume, 5 );
- iTelephoneUtils->iShowDialog = ETrue;
- iTelephoneUtils->iTelephonyAudioRouting->SetShowNote( ETrue );
+ // Setoutput ok
iTelephoneUtils->SetOutputComplete(
*iTelephoneUtils->iTelephonyAudioRouting,
KErrNone );
- EUNIT_ASSERT( iObserver->iAudioRoutingChangedCalled == ETrue )
- EUNIT_ASSERT( iObserver->iShowNote == EFalse )
- EUNIT_ASSERT( iTelephoneUtils->iShowDialog == ETrue )
- EUNIT_ASSERT( iObserver->iVolume == 5 );
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 5 )
-
- iObserver->Reset();
-
- // Setoutput succesful and note is shown by us
- iTelephoneUtils->iTelephonyAudioRouting->SetShowNote( EFalse );
- iTelephoneUtils->SetOutputComplete(
- *iTelephoneUtils->iTelephonyAudioRouting,
- KErrNone );
- EUNIT_ASSERT( iObserver->iAudioRoutingChangedCalled == ETrue )
- EUNIT_ASSERT( iObserver->iShowNote == ETrue )
- EUNIT_ASSERT( iTelephoneUtils->iShowDialog == EFalse )
+ EUNIT_ASSERT( iObserver->iAudioRoutingChangedCalled )
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -476,7 +365,6 @@
EUNIT_ASSERT( iTelephoneUtils->ValidateVolume( 5 ) == 5 );
}
-
// -----------------------------------------------------------------------------
// We cannot assert anything after destruction. All we can do is to make
// such condition before destruction that coverage will be achieved.
@@ -485,139 +373,48 @@
void UT_CMusEngTelephoneUtils::UT_DestructorL()
{
// Simulate that 2nd phase construction has not succeeded
- CMusEngTelephoneUtils* utils = CMusEngTelephoneUtils::NewL();
+ CMusEngTelephoneUtils* utils = CMusEngTelephoneUtils::NewL( *iObserver );
CleanupStack::PushL( utils );
delete utils->iTelephonyAudioRouting;
utils->iTelephonyAudioRouting = NULL;
CleanupStack::PopAndDestroy( utils );
// Simulate that current audio output mode is same as original
- utils = CMusEngTelephoneUtils::NewL();
+ utils = CMusEngTelephoneUtils::NewL( *iObserver );
CleanupStack::PushL( utils );
utils->iAudioOutputAtStartup = CTelephonyAudioRouting::EHandset;
utils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::EHandset;
- CTelephonyAudioRouting::iPreviousOutput =
- CTelephonyAudioRouting::ELoudspeaker;
+ CTelephonyAudioRouting::EHandset;
CleanupStack::PopAndDestroy( utils );
- EUNIT_ASSERT( CTelephonyAudioRouting::iPreviousOutput ==
- CTelephonyAudioRouting::ELoudspeaker )
// Simulate that current audio output mode is not the same as original,
// Setting fails
- utils = CMusEngTelephoneUtils::NewL();
- CleanupStack::PushL( utils );
- utils->iAudioOutputAtStartup = CTelephonyAudioRouting::EHandset;
- utils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- CTelephonyAudioRouting::iPreviousOutput =
- CTelephonyAudioRouting::EHandset;
- utils->iTelephonyAudioRouting->iForceFailWithCode = KErrGeneral;
- CleanupStack::PopAndDestroy( utils );
- EUNIT_ASSERT( CTelephonyAudioRouting::iPreviousOutput ==
- CTelephonyAudioRouting::EHandset )
- EUNIT_ASSERT( CTelephonyAudioRouting::iCurrentOutput ==
- CTelephonyAudioRouting::ELoudspeaker )
-
- // Simulate that current audio output mode is not the same as original,
- // Setting succeeds
- utils = CMusEngTelephoneUtils::NewL();
+ utils = CMusEngTelephoneUtils::NewL( *iObserver );
CleanupStack::PushL( utils );
utils->iAudioOutputAtStartup = CTelephonyAudioRouting::EHandset;
utils->iTelephonyAudioRouting->iCurrentOutput =
CTelephonyAudioRouting::ELoudspeaker;
- CTelephonyAudioRouting::iPreviousOutput =
- CTelephonyAudioRouting::EHandset;
+ utils->iTelephonyAudioRouting->iForceFailWithCode = KErrGeneral;
CleanupStack::PopAndDestroy( utils );
- EUNIT_ASSERT( CTelephonyAudioRouting::iPreviousOutput ==
- CTelephonyAudioRouting::ELoudspeaker )
- EUNIT_ASSERT( CTelephonyAudioRouting::iCurrentOutput ==
- CTelephonyAudioRouting::EHandset )
// Simulate that current audio output mode is not the same as original,
- // Setting not done due to special case handling (ENotActive)
- utils = CMusEngTelephoneUtils::NewL();
- CleanupStack::PushL( utils );
- utils->iAudioOutputAtStartup = CTelephonyAudioRouting::EHandset;
- utils->iTelephonyAudioRouting->iCurrentOutput =
- CTelephonyAudioRouting::ENotActive;
- CTelephonyAudioRouting::iPreviousOutput =
- CTelephonyAudioRouting::ELoudspeaker;
- CleanupStack::PopAndDestroy( utils );
- EUNIT_ASSERT( CTelephonyAudioRouting::iPreviousOutput ==
- CTelephonyAudioRouting::ELoudspeaker )
- EUNIT_ASSERT( CTelephonyAudioRouting::iCurrentOutput ==
- CTelephonyAudioRouting::ENotActive )
-
- // Simulate that current audio output mode is not the same as original,
- // Setting does not succeed as observer does not allow changes anymore
- utils = CMusEngTelephoneUtils::NewL();
- iObserver->iAudioRouteChangeAllowed = EFalse;
- utils->SetAudioRoutingObserver( iObserver );
+ // Setting succeeds
+ utils = CMusEngTelephoneUtils::NewL( *iObserver );
CleanupStack::PushL( utils );
utils->iAudioOutputAtStartup = CTelephonyAudioRouting::EHandset;
utils->iTelephonyAudioRouting->iCurrentOutput =
CTelephonyAudioRouting::ELoudspeaker;
- CTelephonyAudioRouting::iPreviousOutput =
- CTelephonyAudioRouting::EHandset;
CleanupStack::PopAndDestroy( utils );
- EUNIT_ASSERT( CTelephonyAudioRouting::iPreviousOutput ==
- CTelephonyAudioRouting::EHandset )
- EUNIT_ASSERT( CTelephonyAudioRouting::iCurrentOutput ==
- CTelephonyAudioRouting::ELoudspeaker )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngTelephoneUtils::UT_UpdateCurrentVolumeL()
- {
- //Volume changed, no observer
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 4 )
- iTelephoneUtils->iRepository->Set( KTelIncallEarVolume, 5 );
- iTelephoneUtils->UpdateCurrentVolume(EFalse);
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 5 )
- EUNIT_ASSERT( iObserver->iVolume == 0 );
-
- //Volume changed, observer set
- iTelephoneUtils->SetVolumeChangeObserver(iObserver);
- iTelephoneUtils->iRepository->Set( KTelIncallEarVolume, 6 );
- iTelephoneUtils->UpdateCurrentVolume(EFalse);
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 6 )
- EUNIT_ASSERT( iObserver->iVolume == 6 );
-
- //Volume didn't change, observer not notified
- iObserver->iVolume = 0;
- iTelephoneUtils->UpdateCurrentVolume(EFalse);
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 6 )
- EUNIT_ASSERT( iObserver->iVolume == 0 );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusEngTelephoneUtils::UT_HandleNotifyGenericL()
- {
- //Loudspeakers volume changed, no observer
- iTelephoneUtils->iRepository->Set( KTelIncallLoudspeakerVolume, 8 );
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 4 )
- iTelephoneUtils->HandleNotifyGeneric(KTelIncallLoudspeakerVolume);
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 8 )
- EUNIT_ASSERT( iObserver->iVolume == 0 );
- //Ear volume changed, observer set => observer notified
- iTelephoneUtils->SetVolumeChangeObserver(iObserver);
- iTelephoneUtils->HandleNotifyGeneric(KTelIncallEarVolume);
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 4 )
- EUNIT_ASSERT( iObserver->iVolume == 4 );
-
- //Volume hasn't changed => observer not notifies
- iObserver->iVolume = 0;
- iTelephoneUtils->HandleNotifyGeneric(KTelIncallEarVolume);
- EUNIT_ASSERT( iTelephoneUtils->iCurrentVolume == 4 )
- EUNIT_ASSERT( iObserver->iVolume == 0 );
+ // Simulate that current audio output mode is not the same as original,
+ // Setting does not succeed as observer does not allow changes anymore
+ utils = CMusEngTelephoneUtils::NewL( *iObserver );
+ CleanupStack::PushL( utils );
+ utils->iAudioOutputAtStartup = CTelephonyAudioRouting::EHandset;
+ utils->iTelephonyAudioRouting->iCurrentOutput =
+ CTelephonyAudioRouting::ELoudspeaker;
+ CleanupStack::PopAndDestroy( utils );
+ // Cannot really assert anything
}
@@ -643,20 +440,6 @@
SetupL, UT_AudioRoutingCanBeChangedL, Teardown)
EUNIT_TEST(
- "IsAudioRoutingHeadset - test ",
- "CMusEngTelephoneUtils",
- "IsAudioRoutingHeadset",
- "FUNCTIONALITY",
- SetupL, UT_IsAudioRoutingHeadsetL, Teardown)
-
-EUNIT_TEST(
- "IsAudioRoutingLoudSpeaker - test ",
- "CMusEngTelephoneUtils",
- "IsAudioRoutingLoudSpeaker",
- "FUNCTIONALITY",
- SetupL, UT_IsAudioRoutingLoudSpeakerL, Teardown)
-
-EUNIT_TEST(
"LoudspeakerL - test ",
"CMusEngTelephoneUtils",
"LoudspeakerL",
@@ -719,20 +502,7 @@
"FUNCTIONALITY",
SetupL, UT_DestructorL, Teardown)
-EUNIT_TEST(
- "UpdateCurrentVolume - test ",
- "UpdateCurrentVolume",
- "Destructor",
- "FUNCTIONALITY",
- SetupL, UT_UpdateCurrentVolumeL, Teardown)
-
-EUNIT_TEST(
- "HandleNotifyGeneric - test ",
- "CMusEngTelephoneUtils",
- "HandleNotifyGeneric",
- "FUNCTIONALITY",
- SetupL, UT_HandleNotifyGenericL, Teardown)
-
+
EUNIT_END_TEST_TABLE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengtwowayrecvsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,1582 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// INTERNAL INCLUDES
+#include "ut_musengtwowayrecvsession.h"
+#include "musengstubs.h"
+#include "musengtestdefs.h"
+#include "musengtwowayrecvsession.h"
+#include "musengmceutils.h"
+#include "mussessionproperties.h"
+#include "contactenginestub.h"
+#include "musenglivevideoplayer.h"
+
+// SYSTEM INCLUDES
+#include <eunitmacros.h>
+
+#include <mceinsession.h>
+#include <mcestreambundle.h>
+#include <mcevideostream.h>
+#include <mceaudiostream.h>
+#include <mcertpsource.h>
+#include <mcedisplaysink.h>
+#include <mcespeakersink.h>
+#include <mcecamerasource.h>
+#include <mcefilesource.h>
+#include <mcertpsink.h>
+#include <mceaudiocodec.h>
+#include <mceh263codec.h>
+#include <mceavccodec.h>
+#include <musmanager.h>
+
+#include <audiopreference.h>
+
+// Incoming session may be rejected silently due memory running out. Ensure that
+// incoming session was handled fully by using this macro.
+#define MUSENG_TEST_ASSERT_INCOMING_SESSION_ALLOC_FAILURE_L \
+__ASSERT_ALWAYS( iReceiveSession->iSession && \
+iReceiveSession->iSession->iState != CMceSession::ETerminated, User::Leave( KErrNoMemory ) );
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngTwoWayRecvSession* UT_CMusEngTwoWayRecvSession::NewL()
+ {
+ UT_CMusEngTwoWayRecvSession* self = UT_CMusEngTwoWayRecvSession::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngTwoWayRecvSession* UT_CMusEngTwoWayRecvSession::NewLC()
+ {
+ UT_CMusEngTwoWayRecvSession* self = new( ELeave ) UT_CMusEngTwoWayRecvSession();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngTwoWayRecvSession::~UT_CMusEngTwoWayRecvSession()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngTwoWayRecvSession::UT_CMusEngTwoWayRecvSession()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::SetupL( )
+ {
+ iLcSessionObserver = new( ELeave )CLcSessionObserverStub;
+ iReceiveSession = CMusEngTwoWayRecvSession::NewL();
+ iReceiveSession->SetLcSessionObserver( iLcSessionObserver );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::Teardown( )
+ {
+ delete iReceiveSession;
+ delete iLcSessionObserver;
+ PropertyHelper::Close();
+ }
+
+
+// TEST HELPERS
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* UT_CMusEngTwoWayRecvSession::ConstructVideoInStreamLC()
+ {
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+
+ videoStream->SetSourceL( CMceRtpSource::NewLC() );
+ CleanupStack::Pop();
+
+ videoStream->AddSinkL(
+ CMceDisplaySink::NewLC( *iReceiveSession->iManager ) );
+ CleanupStack::Pop();
+
+ return videoStream;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* UT_CMusEngTwoWayRecvSession::ConstructVideoOutStreamLC()
+ {
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+
+ videoStream->SetSourceL(
+ CMceCameraSource::NewLC( *iReceiveSession->iManager ) );
+ CleanupStack::Pop();
+
+ videoStream->AddSinkL( CMceRtpSink::NewLC() );
+ CleanupStack::Pop();
+
+ return videoStream;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMceAudioStream* UT_CMusEngTwoWayRecvSession::ConstructAudioInStreamLC()
+ {
+ CMceAudioStream* audioStream = CMceAudioStream::NewLC();
+
+ audioStream->SetSourceL( CMceRtpSource::NewLC() );
+ CleanupStack::Pop();
+
+ audioStream->AddSinkL( CMceSpeakerSink::NewLC() );
+ CleanupStack::Pop();
+
+ return audioStream;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMceAudioStream* UT_CMusEngTwoWayRecvSession::ConstructAudioOutStreamLC()
+ {
+ CMceAudioStream* audioStream = CMceAudioStream::NewLC();
+
+ audioStream->SetSourceL(
+ CMceFileSource::NewLC( *iReceiveSession->iManager, KNullDesC() ) );
+ CleanupStack::Pop();
+
+ audioStream->AddSinkL( CMceRtpSink::NewLC() );
+ CleanupStack::Pop();
+
+ return audioStream;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// Helper to construct incoming sessions.
+// -----------------------------------------------------------------------------
+//
+CMceInSession* UT_CMusEngTwoWayRecvSession::ConstructInSessionLC(
+ TInt aVideoStreamCount,
+ TInt aAudioStreamCount,
+ TBool aConstructSinks )
+ {
+ CMceInSession* inSession = CMceInSession::NewL(
+ *(iReceiveSession->iManager),
+ KTestOriginator() );
+ CleanupStack::PushL( inSession );
+
+ for ( TInt i = 0; i < aVideoStreamCount; ++i )
+ {
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+
+ CMceRtpSource* rtpSource = CMceRtpSource::NewLC();
+ videoStream->SetSourceL( rtpSource );
+ CleanupStack::Pop( rtpSource );
+
+ if ( aConstructSinks )
+ {
+ CMceDisplaySink* display = CMceDisplaySink::NewLC(
+ *(iReceiveSession->iManager) );
+ videoStream->AddSinkL( display );
+ CleanupStack::Pop( display );
+ }
+
+ inSession->AddStreamL( videoStream );
+ CleanupStack::Pop( videoStream );
+ }
+
+ for ( TInt i = 0; i < aAudioStreamCount; ++i )
+ {
+ CMceAudioStream* audioStream = CMceAudioStream::NewLC();
+
+ CMceRtpSource* rtpSource = CMceRtpSource::NewLC();
+ audioStream->SetSourceL( rtpSource );
+ CleanupStack::Pop( rtpSource );
+
+ if ( aConstructSinks )
+ {
+ CMceSpeakerSink* speaker = CMceSpeakerSink::NewLC();
+ audioStream->AddSinkL( speaker );
+ CleanupStack::Pop( speaker );
+ }
+
+ inSession->AddStreamL( audioStream );
+ CleanupStack::Pop( audioStream );
+ }
+
+ return inSession;
+ }
+
+// -----------------------------------------------------------------------------
+// Helper to construct incoming two-way video session.
+// -----------------------------------------------------------------------------
+//
+CMceInSession* UT_CMusEngTwoWayRecvSession::ConstructTwoWayInSessionLC( TBool aConstructSinks )
+ {
+ CMceInSession* inSession = CMceInSession::NewL(
+ *(iReceiveSession->iManager),
+ KTestOriginator() );
+ CleanupStack::PushL( inSession );
+
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+
+ CMceRtpSource* rtpSource = CMceRtpSource::NewLC();
+ videoStream->SetSourceL( rtpSource );
+ CleanupStack::Pop( rtpSource );
+
+ if ( aConstructSinks )
+ {
+ CMceDisplaySink* display = CMceDisplaySink::NewLC(
+ *(iReceiveSession->iManager) );
+ videoStream->AddSinkL( display );
+ CleanupStack::Pop( display );
+ }
+
+ CMceVideoStream* videoOutStream = CMceVideoStream::NewLC();
+
+ CMceCameraSource* cameraSource = CMceCameraSource::NewLC( *(iReceiveSession->iManager) );
+ videoOutStream->SetSourceL( cameraSource );
+ CleanupStack::Pop( cameraSource );
+
+ if ( aConstructSinks )
+ {
+ CMceRtpSink* rtpSink = CMceRtpSink::NewLC();
+ videoOutStream->AddSinkL( rtpSink );
+ CleanupStack::Pop( rtpSink );
+ }
+ videoStream->BindL( videoOutStream );
+ CleanupStack::Pop( videoOutStream );
+
+ inSession->AddStreamL( videoStream );
+ CleanupStack::Pop( videoStream );
+
+ return inSession;
+ }
+
+
+// TEST CASES
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_NewLL( )
+ {
+ EUNIT_ASSERT( iReceiveSession );
+ EUNIT_ASSERT( !iReceiveSession->iSession );
+ EUNIT_ASSERT( iReceiveSession->iMceManagerUid ==
+ TUid::Uid(CMusManager::ESipInviteDesired2WayVideo) );
+ }
+
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_EnableDisplayLL()
+ {
+ TRAPD( error, iReceiveSession->EnableDisplayL( ETrue ) );
+ MUS_TEST_FORWARD_ALLOC_FAILURE( error );
+ EUNIT_ASSERT( error == KErrNotReady );
+
+ TMceTransactionDataContainer container;
+ CMceInSession* inSession = ConstructTwoWayInSessionLC();
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ MUSENG_TEST_ASSERT_INCOMING_SESSION_ALLOC_FAILURE_L
+
+ CMceDisplaySink* display =
+ MusEngMceUtils::GetDisplayL( *(iReceiveSession->iSession) );
+
+ CMceDisplaySink* receivingDisplay =
+ MusEngMceUtils::GetReceivingDisplayL( *iReceiveSession->iSession );
+
+ // Disable
+ iReceiveSession->EnableDisplayL( EFalse );
+
+ EUNIT_ASSERT( !display->iIsEnabled );
+ EUNIT_ASSERT( !receivingDisplay->iIsEnabled );
+
+ // Try to disable again, request should be ignored
+
+ iReceiveSession->EnableDisplayL( EFalse );
+
+ EUNIT_ASSERT( !display->iIsEnabled );
+ EUNIT_ASSERT( !receivingDisplay->iIsEnabled );
+
+ // Enable
+
+ iReceiveSession->EnableDisplayL( ETrue );
+
+ EUNIT_ASSERT( display->iIsEnabled );
+ EUNIT_ASSERT( receivingDisplay->iIsEnabled );
+
+ // Try to enable again, request should be ignored
+
+ iReceiveSession->EnableDisplayL( ETrue );
+
+ EUNIT_ASSERT( display->iIsEnabled );
+ EUNIT_ASSERT( receivingDisplay->iIsEnabled );
+
+ // Session does not have sending stream (viewfinder does not exist)
+ //
+ delete iReceiveSession->iSession;
+ iReceiveSession->iSession = NULL;
+ inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ display = MusEngMceUtils::GetVfDisplay( *(iReceiveSession->iSession) );
+ EUNIT_ASSERT( display == NULL );
+ receivingDisplay = MusEngMceUtils::GetReceivingDisplayL( *iReceiveSession->iSession );
+ iReceiveSession->EnableDisplayL( EFalse );
+ EUNIT_ASSERT( !receivingDisplay->iIsEnabled );
+
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_SetOrientationLL()
+ {
+ // Try without session, fails
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iReceiveSession->SetOrientationL(
+ CMusEngMceSession::EPortrait ),
+ KErrNotReady )
+
+ TMceTransactionDataContainer container;
+ CMceInSession* inSession = ConstructTwoWayInSessionLC();
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ MUSENG_TEST_ASSERT_INCOMING_SESSION_ALLOC_FAILURE_L
+
+ CMceDisplaySink* display =
+ MusEngMceUtils::GetDisplayL( *iReceiveSession->iSession );
+
+ CMceDisplaySink* receivingDisplay =
+ MusEngMceUtils::GetReceivingDisplayL( *iReceiveSession->iSession );
+
+
+ // Check the initial state
+ display->iRotation = CMceDisplaySink::ENone;
+ receivingDisplay->iRotation = CMceDisplaySink::ENone;
+ EUNIT_ASSERT_EQUALS( iReceiveSession->OrientationL(),
+ CMusEngMceSession::EPortrait )
+
+ // Successfully change orientation
+
+ iReceiveSession->SetOrientationL( CMusEngMceSession::ELandscape );
+ EUNIT_ASSERT_EQUALS( iReceiveSession->OrientationL(),
+ CMusEngMceSession::ELandscape )
+
+ EUNIT_ASSERT_EQUALS( display->iRotation, CMceDisplaySink::EClockwise90Degree );
+ EUNIT_ASSERT_EQUALS( receivingDisplay->iRotation, CMceDisplaySink::EClockwise90Degree );
+
+ iReceiveSession->SetOrientationL( CMusEngMceSession::EPortrait );
+ EUNIT_ASSERT_EQUALS( iReceiveSession->OrientationL(),
+ CMusEngMceSession::EPortrait )
+
+ EUNIT_ASSERT_EQUALS( display->iRotation, CMceDisplaySink::ENone );
+ EUNIT_ASSERT_EQUALS( receivingDisplay->iRotation, CMceDisplaySink::ENone );
+
+ // Session does not have sending stream (viewfinder does not exist)
+ delete iReceiveSession->iSession;
+ iReceiveSession->iSession = NULL;
+ inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ MUSENG_TEST_ASSERT_INCOMING_SESSION_ALLOC_FAILURE_L
+ display = MusEngMceUtils::GetVfDisplay( *(iReceiveSession->iSession) );
+ EUNIT_ASSERT( display == NULL );
+ receivingDisplay = MusEngMceUtils::GetReceivingDisplayL( *iReceiveSession->iSession );
+ iReceiveSession->SetOrientationL( CMusEngMceSession::ELandscape );
+ EUNIT_ASSERT_EQUALS( receivingDisplay->iRotation, CMceDisplaySink::EClockwise90Degree );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_OrientationLL()
+ {
+ // Try without session, fails
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iReceiveSession->OrientationL(),
+ KErrNotReady )
+
+ TMceTransactionDataContainer container;
+ CMceInSession* inSession = ConstructTwoWayInSessionLC();
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ MUSENG_TEST_ASSERT_INCOMING_SESSION_ALLOC_FAILURE_L
+
+ CMceDisplaySink* receivingDisplay =
+ MusEngMceUtils::GetReceivingDisplayL( *iReceiveSession->iSession );
+ receivingDisplay->iRotation = CMceDisplaySink::ENone;
+
+ EUNIT_ASSERT_EQUALS( iReceiveSession->OrientationL(),
+ CMusEngMceSession::EPortrait )
+
+ receivingDisplay->iRotation = CMceDisplaySink::EClockwise90Degree;
+
+ EUNIT_ASSERT_EQUALS( iReceiveSession->OrientationL(),
+ CMusEngMceSession::ELandscape )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_SetLocalRectLL()
+ {
+ // Does nothing real before session establishment
+ TRect rect1( 100, 200, 300, 500 );
+ iReceiveSession->SetSecondaryRectL( rect1 );
+
+ EUNIT_ASSERT( rect1 == iReceiveSession->iLocalRect );
+
+ // Local rect changing affects to viewfinder display sink not to receiving video
+ //
+ TMceTransactionDataContainer container;
+ CMceInSession* inSession = ConstructTwoWayInSessionLC();
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ MUSENG_TEST_ASSERT_INCOMING_SESSION_ALLOC_FAILURE_L
+
+ CMceDisplaySink* vfDisplay =
+ MusEngMceUtils::GetDisplayL( *( iReceiveSession->iSession ) );
+ CMceDisplaySink* receivingDisplay =
+ MusEngMceUtils::GetReceivingDisplayL( *( iReceiveSession->iSession ) );
+
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() == iReceiveSession->iLocalRect );
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() != iReceiveSession->iLocalRect );
+
+ TRect rect2( 200, 200, 300, 500 );
+ iReceiveSession->SetSecondaryRectL( rect2 );
+ EUNIT_ASSERT( rect2 == iReceiveSession->iLocalRect );
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() == iReceiveSession->iLocalRect );
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() != iReceiveSession->iLocalRect );
+
+ // Terminate session and try again, rect must not be changed
+
+ iReceiveSession->iSession->iState = CMceSession::ETerminated;
+
+ TRect rect3( 300, 300, 400, 600 );
+
+ iReceiveSession->SetSecondaryRectL( rect3 );
+
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() != rect3 )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_SetRectsLL()
+ {
+ // Does nothing real before session establishment
+ TRect localrect1( 100, 200, 300, 400 );
+ TRect remoterect1( 100, 200, 300, 500 );
+ iReceiveSession->SetRectsL( remoterect1, localrect1 );
+
+ EUNIT_ASSERT( localrect1 == iReceiveSession->iLocalRect );
+ EUNIT_ASSERT( remoterect1 == iReceiveSession->iRect );
+
+ // Local rect changing affects to viewfinder display sink and remote rect to
+ // receiving video display sink
+ //
+ TMceTransactionDataContainer container;
+ CMceInSession* inSession = ConstructTwoWayInSessionLC();
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ MUSENG_TEST_ASSERT_INCOMING_SESSION_ALLOC_FAILURE_L
+
+ CMceDisplaySink* vfDisplay =
+ MusEngMceUtils::GetDisplayL( *( iReceiveSession->iSession ) );
+ CMceDisplaySink* receivingDisplay =
+ MusEngMceUtils::GetReceivingDisplayL( *( iReceiveSession->iSession ) );
+
+ TRect localrect2( 200, 200, 300, 400 );
+ TRect remoterect2( 200, 200, 300, 500 );
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() != localrect2 );
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() != remoterect2 );
+
+ iReceiveSession->SetRectsL( remoterect2, localrect2 );
+ EUNIT_ASSERT( localrect2 == iReceiveSession->iLocalRect );
+ EUNIT_ASSERT( remoterect2 == iReceiveSession->iRect );
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() == iReceiveSession->iLocalRect );
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() == iReceiveSession->iRect );
+
+ // Terminate session and try again, rect must not be changed
+
+ iReceiveSession->iSession->iState = CMceSession::ETerminated;
+
+ TRect localrect3( 300, 200, 300, 400 );
+ TRect remoterect3( 300, 200, 300, 500 );
+
+ iReceiveSession->SetRectsL( remoterect3, localrect3 );
+
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() != localrect3 )
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() != remoterect3 );
+
+ // Session does not have sending stream (viewfinder does not exist)
+
+ TRect localrect4( 400, 200, 300, 400 );
+ TRect remoterect4( 400, 200, 300, 500 );
+ delete iReceiveSession->iSession;
+ iReceiveSession->iSession = NULL;
+ inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ MUSENG_TEST_ASSERT_INCOMING_SESSION_ALLOC_FAILURE_L
+ vfDisplay = MusEngMceUtils::GetVfDisplay( *(iReceiveSession->iSession) );
+ EUNIT_ASSERT( vfDisplay == NULL );
+ receivingDisplay = MusEngMceUtils::GetReceivingDisplayL( *iReceiveSession->iSession );
+ iReceiveSession->SetRectsL( remoterect4, localrect4 );
+ EUNIT_ASSERT( localrect4 == iReceiveSession->iLocalRect );
+ EUNIT_ASSERT( remoterect4 == iReceiveSession->iRect );
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() == iReceiveSession->iRect );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_CameraL()
+ {
+ // Camera cannot be used without MCE session
+ //
+ EUNIT_ASSERT_LEAVE( iReceiveSession->Camera().ChangeCameraL(
+ TMusEngCameraHandler::EFrontCamera ) );
+
+ // Camera cannot be used without video out stream
+ //
+ TMceTransactionDataContainer container;
+ CMceInSession* inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ MUSENG_TEST_ASSERT_INCOMING_SESSION_ALLOC_FAILURE_L
+ EUNIT_ASSERT_LEAVE( iReceiveSession->Camera().ChangeCameraL(
+ TMusEngCameraHandler::EFrontCamera ) );
+
+ // Camera can be used when video out stream exists
+ //
+ delete iReceiveSession->iSession;
+ iReceiveSession->iSession = NULL;
+ inSession = ConstructTwoWayInSessionLC();
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ MUSENG_TEST_ASSERT_INCOMING_SESSION_ALLOC_FAILURE_L
+ iReceiveSession->Camera().ChangeCameraL(
+ TMusEngCameraHandler::EFrontCamera );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_LocalVideoPlayerL()
+ {
+ EUNIT_ASSERT( iReceiveSession->LocalVideoPlayer() ==
+ iReceiveSession->iLiveVideoPlayer )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_HandleSessionStateChangedL()
+ {
+ // Unknown session, let the base class handle
+ CMceInSession* inSession = ConstructInSessionLC( 1, 1 );
+
+ iReceiveSession->HandleSessionStateChanged( *inSession, 0, KNullDesC8() );
+
+ // Simulate incoming session
+ TMceTransactionDataContainer container;
+
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+
+ // Session is in state EReserving, let the base class handle
+ iReceiveSession->HandleSessionStateChanged( *inSession, 0, KNullDesC8() );
+
+ // The normal cases:
+
+ // 1 ) First transition to state EProceeding, user and remote end should
+ // be notified
+ inSession->iState = CMceSession::EProceeding;
+ iReceiveSession->HandleSessionStateChanged( *inSession, 0, KNullDesC8() );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionStateChanged ) )
+ EUNIT_ASSERT( iReceiveSession->iRingLCalled )
+ iLcSessionObserver->Reset();
+
+ // 2 ) Now simulate second transition to EProceeding state which can happen
+ // if we force 100rel to be used. User and remote end should not be
+ // notified anymore but change should be ignored.
+ inSession->iState = CMceSession::EProceeding;
+ iReceiveSession->HandleSessionStateChanged( *inSession, 0, KNullDesC8() );
+ EUNIT_ASSERT_EQUALS( TInt( CLcSessionObserverStub::EUnknown ),
+ TInt( iLcSessionObserver->iCalledFunction ) )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_AdjustVideoCodecLL()
+ {
+ CMceVideoCodec* codecH263 = CMceH263Codec::NewLC( KMceSDPNameH263() );
+ CMceVideoCodec* codecH2632000 = CMceH263Codec::NewLC( KMceSDPNameH2632000() );
+ CMceVideoCodec* codecAvc = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ CMceVideoCodec* codecUnknown = CMceH263Codec::NewLC( KNullDesC8() );
+
+ iReceiveSession->AdjustVideoCodecL( *codecH263, KMceRTPSource );
+ iReceiveSession->AdjustVideoCodecL( *codecH2632000, KMceRTPSource );
+ iReceiveSession->AdjustVideoCodecL( *codecAvc, KMceRTPSource );
+ iReceiveSession->AdjustVideoCodecL( *codecUnknown, KMceRTPSource );
+
+ EUNIT_ASSERT_EQUALS( codecH263->KeepAliveTimer(), 6 )
+ EUNIT_ASSERT_EQUALS( codecH263->KeepAlivePayloadType(), 96 )
+ EUNIT_ASSERT_EQUALS( codecH263->KeepAliveData(), KNullDesC8() )
+
+ EUNIT_ASSERT_EQUALS( codecH2632000->KeepAliveTimer(), 6 )
+ EUNIT_ASSERT_EQUALS( codecH2632000->KeepAlivePayloadType(), 96 )
+ EUNIT_ASSERT_EQUALS( codecH2632000->KeepAliveData(), KNullDesC8() )
+
+ EUNIT_ASSERT_EQUALS( codecAvc->KeepAliveTimer(), 6 )
+ EUNIT_ASSERT_EQUALS( codecAvc->KeepAlivePayloadType(), 98 )
+ EUNIT_ASSERT_EQUALS( codecAvc->KeepAliveData(), KNullDesC8() )
+
+ EUNIT_ASSERT_EQUALS( codecUnknown->KeepAliveTimer(), 6 )
+ EUNIT_ASSERT_EQUALS( codecUnknown->KeepAlivePayloadType(), 0 )
+ EUNIT_ASSERT_EQUALS( codecUnknown->KeepAliveData(), KNullDesC8() )
+
+ CleanupStack::PopAndDestroy( codecUnknown );
+ CleanupStack::PopAndDestroy( codecAvc );
+ CleanupStack::PopAndDestroy( codecH2632000 );
+ CleanupStack::PopAndDestroy( codecH263 );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_AdjustAudioCodecLL()
+ {
+ CMceAudioCodec* codec =
+ iReceiveSession->iManager->SupportedAudioCodecs()[0]->CloneL();
+ CleanupStack::PushL( codec );
+ iReceiveSession->AdjustAudioCodecL( *codec );
+
+ // Test keepalive timer
+
+ TUint8 keepAliveTimer = codec->KeepAliveTimer();
+ EUNIT_ASSERT( codec->KeepAliveTimer() == 6 )
+ EUNIT_ASSERT( codec->KeepAlivePayloadType() == 97 )
+ EUNIT_ASSERT( codec->KeepAliveData() == KNullDesC8() )
+
+ // Test that base class has been called
+
+ EUNIT_ASSERT( codec->iMMFPriority == KAudioPrioritySwisPlayback )
+ EUNIT_ASSERT( codec->iMMFPriorityPreference == KAudioPrefSwisPlayback )
+
+ CleanupStack::PopAndDestroy( codec );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_DoCodecSelectionLL()
+ {
+ // Check that Non-Interleaved AVC is preferred over single NAL
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+
+ CMceVideoCodec* codecAvcSingleNal = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codecAvcSingleNal->iCodecMode = KMceAvcModeSingleNal;
+ videoStream->AddCodecL( codecAvcSingleNal );
+ CleanupStack::Pop( codecAvcSingleNal );
+
+ CMceVideoCodec* codecAvcNonInterleaved = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codecAvcNonInterleaved->iCodecMode = KMceAvcModeNonInterleaved;
+ videoStream->AddCodecL( codecAvcNonInterleaved );
+ CleanupStack::Pop( codecAvcNonInterleaved );
+
+ iReceiveSession->DoCodecSelectionL( *videoStream );
+
+ EUNIT_ASSERT_EQUALS( videoStream->Codecs().Count(), 1 )
+ EUNIT_ASSERT_EQUALS( videoStream->Codecs()[0]->SdpName(), KMceSDPNameH264() )
+ EUNIT_ASSERT_EQUALS( videoStream->Codecs()[0]->CodecMode(),
+ KMceAvcModeNonInterleaved )
+
+ CleanupStack::PopAndDestroy( videoStream );
+
+ // Check that Single NAL AVC is preferred over H263
+ videoStream = CMceVideoStream::NewLC();
+
+ CMceVideoCodec* codecH263 = CMceH263Codec::NewLC( KMceSDPNameH263() );
+ videoStream->AddCodecL( codecH263 );
+ CleanupStack::Pop( codecH263 );
+
+ codecAvcSingleNal = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codecAvcSingleNal->iCodecMode = KMceAvcModeSingleNal;
+ videoStream->AddCodecL( codecAvcSingleNal );
+ CleanupStack::Pop( codecAvcSingleNal );
+
+ iReceiveSession->DoCodecSelectionL( *videoStream );
+
+ EUNIT_ASSERT_EQUALS( videoStream->Codecs().Count(), 1 )
+ EUNIT_ASSERT_EQUALS( videoStream->Codecs()[0]->SdpName(), KMceSDPNameH264() )
+ EUNIT_ASSERT_EQUALS( videoStream->Codecs()[0]->CodecMode(),
+ KMceAvcModeSingleNal )
+
+ CleanupStack::PopAndDestroy( videoStream );
+
+ // Check that H263 codecs without AVC are handled correctly (in base class)
+ videoStream = CMceVideoStream::NewLC();
+
+ codecH263 = CMceH263Codec::NewLC( KMceSDPNameH263() );
+ videoStream->AddCodecL( codecH263 );
+ CleanupStack::Pop( codecH263 );
+
+ CMceVideoCodec* codecH2632000 = CMceH263Codec::NewLC( KMceSDPNameH2632000() );
+ videoStream->AddCodecL( codecH2632000 );
+ CleanupStack::Pop( codecH2632000 );
+
+ iReceiveSession->DoCodecSelectionL( *videoStream );
+
+ EUNIT_ASSERT_EQUALS( videoStream->Codecs().Count(), 1 )
+
+ CleanupStack::PopAndDestroy( videoStream );
+
+ // Check that AVC non-interleaved with best bitrate is preferred
+ videoStream = CMceVideoStream::NewLC();
+
+ codecAvcNonInterleaved = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codecAvcNonInterleaved->iCodecMode = KMceAvcModeNonInterleaved;
+ codecAvcNonInterleaved->SetMaxBitrateL( 80000 );
+ videoStream->AddCodecL( codecAvcNonInterleaved );
+ CleanupStack::Pop( codecAvcNonInterleaved );
+
+ CMceVideoCodec* codecAvcNonInterleaved128 = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codecAvcNonInterleaved128->iCodecMode = KMceAvcModeNonInterleaved;
+ codecAvcNonInterleaved128->SetMaxBitrateL( 128000 );
+ videoStream->AddCodecL( codecAvcNonInterleaved128 );
+ CleanupStack::Pop( codecAvcNonInterleaved128 );
+
+ iReceiveSession->DoCodecSelectionL( *videoStream );
+
+ EUNIT_ASSERT_EQUALS( videoStream->Codecs().Count(), 1 )
+ EUNIT_ASSERT( videoStream->Codecs()[0] == codecAvcNonInterleaved128 )
+
+ CleanupStack::PopAndDestroy( videoStream );
+
+ // Check that in case of several AVC single NALs, the best bitrate is preferred
+ videoStream = CMceVideoStream::NewLC();
+
+ codecAvcSingleNal = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codecAvcSingleNal->iCodecMode = KMceAvcModeSingleNal;
+ codecAvcSingleNal->SetMaxBitrateL( 80000 );
+ videoStream->AddCodecL( codecAvcSingleNal );
+ CleanupStack::Pop( codecAvcSingleNal );
+
+ CMceVideoCodec* codecAvcSingleNal128 = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codecAvcSingleNal128->iCodecMode = KMceAvcModeSingleNal;
+ codecAvcSingleNal128->SetMaxBitrateL( 128000 );
+ videoStream->AddCodecL( codecAvcSingleNal128 );
+ CleanupStack::Pop( codecAvcSingleNal128 );
+
+ iReceiveSession->DoCodecSelectionL( *videoStream );
+
+ EUNIT_ASSERT_EQUALS( videoStream->Codecs().Count(), 1 )
+ EUNIT_ASSERT( videoStream->Codecs()[0] == codecAvcSingleNal128 )
+
+ CleanupStack::PopAndDestroy( videoStream );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_IncomingSessionL()
+ {
+ _LIT8( KMusEngSwisTestIdentifier, "Require: precondition" );
+ _LIT8( KMusEngTestHeader, "Some header" );
+
+ TMceTransactionDataContainer container;
+
+ // Simulate SWIS 2.2 invite. There are no streams, so completion fails and
+ // session gets rejected. Still prenotification has been given.
+ CMceInSession* inSession = ConstructInSessionLC( 0, 0 );
+ CDesC8Array* headers = new ( ELeave ) CDesC8ArrayFlat( 2 );
+ CleanupStack::PushL( headers );
+ headers->AppendL( KMusEngTestHeader() );
+ headers->AppendL( KMusEngSwisTestIdentifier() );
+ container.SetHeaders( headers );
+ CleanupStack::Pop( headers );
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+ container.Clear();
+
+ EUNIT_ASSERT( iReceiveSession->iSession );
+ EUNIT_ASSERT( iReceiveSession->iSession->iState ==
+ CMceSession::ETerminated );
+
+ EUNIT_ASSERT( iReceiveSession->iSession->i100RelUsage ==
+ KMce100RelRequired )
+ EUNIT_ASSERT( !iReceiveSession->iRingLCalled )
+
+ // Try again with valid session, normal case
+ inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+
+ EUNIT_ASSERT( iReceiveSession->iSession );
+ // Next state depends on success of completion of session structure.
+ // When using alloc failure state is ETerminated, in succesfull case it is
+ // EReserving. However it is set to "normal" state EReserving after
+ // assertion
+ EUNIT_ASSERT( iReceiveSession->iSession->iState ==
+ CMceSession::EReserving ||
+ iReceiveSession->iSession->iState ==
+ CMceSession::ETerminated );
+ iReceiveSession->iSession->iState = CMceSession::EReserving;
+
+ // Try again without container, new session gets terminated and deleted
+ inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->IncomingSession( inSession, NULL );
+ CleanupStack::Pop( inSession );
+
+ EUNIT_ASSERT( iReceiveSession->iSession );
+ EUNIT_ASSERT( iReceiveSession->iSession != inSession );
+ EUNIT_ASSERT( iReceiveSession->iSession->iState ==
+ CMceSession::EReserving );
+
+ // Try again when there is session pending, new session gets terminated
+ // and deleted
+ inSession = ConstructInSessionLC( 1, 0 );
+ iReceiveSession->IncomingSession( inSession, &container );
+ CleanupStack::Pop( inSession );
+
+ EUNIT_ASSERT( iReceiveSession->iSession );
+ EUNIT_ASSERT( iReceiveSession->iSession != inSession );
+ EUNIT_ASSERT( iReceiveSession->iSession->iState ==
+ CMceSession::EReserving );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_CompleteSessionStructureL_WithoutSessionL()
+ {
+ TRAPD( error, iReceiveSession->CompleteSessionStructureL() );
+ MUS_TEST_FORWARD_ALLOC_FAILURE( error );
+ EUNIT_ASSERT( error == KErrNotReady );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_CompleteSessionStructureL_WithoutStreamsL()
+ {
+ CMceInSession* inSession = ConstructInSessionLC( 0, 0 );
+ iReceiveSession->iSession = inSession; // Transfers ownership
+ CleanupStack::Pop( inSession );
+
+ TRAPD( error, iReceiveSession->CompleteSessionStructureL() );
+ MUS_TEST_FORWARD_ALLOC_FAILURE( error );
+ EUNIT_ASSERT( error == KErrCorrupt );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_CompleteSessionStructureL_WithOutgoingStreamL()
+ {
+ // Stream will be removed.
+ CMceInSession* inSession = ConstructInSessionLC( 0, 0 );
+
+ inSession->AddStreamL( ConstructVideoOutStreamLC() );
+ CleanupStack::Pop();
+
+ iReceiveSession->iSession = inSession; // Transfers ownership
+ CleanupStack::Pop( inSession );
+
+ TRAPD( error, iReceiveSession->CompleteSessionStructureL() )
+ MUS_TEST_FORWARD_ALLOC_FAILURE( error );
+ EUNIT_ASSERT( error == KErrCorrupt );
+ EUNIT_ASSERT( inSession->Streams().Count() == 0 );
+ EUNIT_ASSERT( inSession->Bundles().Count() == 0 );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_CompleteSessionStructureL_WithVideoInL()
+ {
+ CMceInSession* inSession = ConstructInSessionLC( 1, 0 );
+
+ iReceiveSession->iSession = inSession; // Transfers ownership
+ CleanupStack::Pop( inSession );
+
+ iReceiveSession->CompleteSessionStructureL();
+
+ EUNIT_ASSERT( inSession->Streams().Count() == 1 );
+ EUNIT_ASSERT( inSession->Streams()[0]->IsEnabled() )
+ EUNIT_ASSERT( inSession->Streams()[0]->Type() == KMceVideo )
+ EUNIT_ASSERT( inSession->Streams()[0]->Sinks().Count() == 1 )
+ EUNIT_ASSERT( inSession->Streams()[0]->Sinks()[0]->Type() ==
+ KMceDisplaySink )
+
+ // No audio, bundle is not constructed
+ EUNIT_ASSERT( inSession->Bundles().Count() == 0 )
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// Two-way video in incoming session. Incoming stream is the main stream.
+// Both directions are enabled. Local viewfinder stream is added to display
+// outgoing video locally
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_CompleteSessionStructureL_WithVideoOutBoundToVideoInL()
+ {
+ CMceInSession* inSession = ConstructInSessionLC( 1, 0 );
+
+ CMceVideoStream* videoOut = ConstructVideoOutStreamLC();
+ inSession->Streams()[0]->BindL( videoOut );
+ CleanupStack::Pop( videoOut );
+
+ iReceiveSession->iSession = inSession; // Transfers ownership
+ CleanupStack::Pop( inSession );
+
+ iReceiveSession->CompleteSessionStructureL();
+
+ EUNIT_ASSERT( inSession->Streams().Count() == 2 );
+
+ CMceMediaStream* videoIn = inSession->Streams()[0];
+
+ EUNIT_ASSERT( videoIn->IsEnabled() )
+ EUNIT_ASSERT( videoIn->Type() == KMceVideo )
+ EUNIT_ASSERT( videoIn->Sinks().Count() == 1 )
+ EUNIT_ASSERT( videoIn->Sinks()[0]->Type() == KMceDisplaySink )
+
+ EUNIT_ASSERT( videoIn->BoundStream() )
+ EUNIT_ASSERT( videoIn->BoundStreamL().IsEnabled() )
+
+ CMceMediaStream* videoVf = inSession->Streams()[1];
+ EUNIT_ASSERT( videoVf->IsEnabled() )
+ EUNIT_ASSERT( videoVf->Type() == KMceVideo )
+ EUNIT_ASSERT( videoVf->Sinks().Count() == 1 )
+ EUNIT_ASSERT( videoVf->Sinks()[0]->Type() == KMceDisplaySink )
+ EUNIT_ASSERT( videoVf->Source()->Type() == KMceCameraSource )
+
+ // No audio, bundle is not constructed
+ EUNIT_ASSERT( inSession->Bundles().Count() == 0 )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Two-way video in incoming session. Incoming stream is the bound stream.
+// Both directions are enabled. Local viewfinder stream is added to display
+// outgoing video locally
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_CompleteSessionStructureL_WithVideoInBoundToVideoOutL()
+ {
+ CMceInSession* inSession = ConstructInSessionLC( 0, 0 );
+
+ CMceVideoStream* videoOut = ConstructVideoOutStreamLC();
+
+ CMceVideoStream* videoIn = ConstructVideoInStreamLC();
+ videoOut->BindL( videoIn );
+ CleanupStack::Pop( videoIn );
+
+ inSession->AddStreamL( videoOut );
+ CleanupStack::Pop( videoOut );
+
+ iReceiveSession->iSession = inSession; // Transfers ownership
+ CleanupStack::Pop( inSession );
+
+ iReceiveSession->CompleteSessionStructureL();
+
+ EUNIT_ASSERT( inSession->Streams().Count() == 2 );
+ EUNIT_ASSERT( videoOut->IsEnabled() )
+ EUNIT_ASSERT( videoOut->Type() == KMceVideo )
+ EUNIT_ASSERT( videoOut->Sinks().Count() == 1 )
+ EUNIT_ASSERT( videoOut->Sinks()[0]->Type() == KMceRTPSink )
+ EUNIT_ASSERT( videoOut->Sinks()[0]->IsEnabled() )
+
+ EUNIT_ASSERT( videoOut->BoundStream() )
+ EUNIT_ASSERT( videoOut->BoundStreamL().IsEnabled() )
+ EUNIT_ASSERT( videoOut->BoundStreamL().Type() == KMceVideo )
+ EUNIT_ASSERT( videoOut->BoundStreamL().Sinks().Count() == 1 )
+ EUNIT_ASSERT( videoOut->BoundStreamL().Sinks()[0]->Type() ==
+ KMceDisplaySink )
+ EUNIT_ASSERT( videoOut->BoundStreamL().Sinks()[0]->IsEnabled() )
+
+ CMceMediaStream* videoVf = inSession->Streams()[1];
+ EUNIT_ASSERT( videoVf->IsEnabled() )
+ EUNIT_ASSERT( videoVf->Type() == KMceVideo )
+ EUNIT_ASSERT( videoVf->Sinks().Count() == 1 )
+ EUNIT_ASSERT( videoVf->Sinks()[0]->Type() == KMceDisplaySink )
+ EUNIT_ASSERT( videoVf->Source()->Type() == KMceCameraSource )
+
+ // No audio, bundle is not constructed
+ EUNIT_ASSERT( inSession->Bundles().Count() == 0 )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Construct 3 video instreams:
+// 0. Without bound stream
+// 1. Bounds video out stream
+// 2. Bounded by video out stream
+// Bound stream should be selected and vf stream is added
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_CompleteSessionStructureL_WithMultipleVideoInsL()
+ {
+ // construct session and stream 0
+ CMceInSession* inSession = ConstructInSessionLC( 2, 0 );
+
+ // finish constructing stream 1
+ CMceVideoStream* videoOut = ConstructVideoOutStreamLC();
+ inSession->Streams()[1]->BindL( videoOut );
+ CleanupStack::Pop( videoOut );
+
+ // finish constructing stream 2
+ videoOut = ConstructVideoOutStreamLC();
+
+ CMceVideoStream* videoIn = ConstructVideoInStreamLC();
+ videoOut->BindL( videoIn );
+ CleanupStack::Pop( videoIn );
+
+ inSession->AddStreamL( videoOut );
+ CleanupStack::Pop( videoOut );
+
+ // Transfers ownership
+ iReceiveSession->iSession = inSession;
+ CleanupStack::Pop( inSession );
+
+ // complete
+ iReceiveSession->CompleteSessionStructureL();
+
+ // Bound stream should be used, other original streams should be deleted
+ // but vf stream is added
+ EUNIT_ASSERT( inSession->Streams().Count() == 2 );
+
+ // First stream
+ EUNIT_ASSERT( inSession->Streams()[0]->IsEnabled() )
+ EUNIT_ASSERT( inSession->Streams()[0]->Type() == KMceVideo )
+ EUNIT_ASSERT( inSession->Streams()[0]->Sinks().Count() == 1 )
+ EUNIT_ASSERT( inSession->Streams()[0]->Sinks()[0]->Type() == KMceDisplaySink )
+ EUNIT_ASSERT( inSession->Streams()[0]->Sinks()[0]->IsEnabled() )
+ EUNIT_ASSERT( inSession->Streams()[0]->BoundStream() )
+ EUNIT_ASSERT( inSession->Streams()[0]->BoundStreamL().Type() == KMceVideo )
+
+ CMceMediaStream* videoVf = inSession->Streams()[1];
+ EUNIT_ASSERT( videoVf->IsEnabled() )
+ EUNIT_ASSERT( videoVf->Type() == KMceVideo )
+ EUNIT_ASSERT( videoVf->Sinks().Count() == 1 )
+ EUNIT_ASSERT( videoVf->Sinks()[0]->Type() == KMceDisplaySink )
+ EUNIT_ASSERT( videoVf->Source()->Type() == KMceCameraSource )
+
+ // No audio, bundle is not constructed
+ EUNIT_ASSERT( inSession->Bundles().Count() == 0 )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Streams in this test case
+// 0. Video in
+// 1. Audio in
+// 2. Audio out bound to audio in
+// 3. Audio in bound to audio out
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::
+ UT_CompleteSessionStructureL_WithVideoAndMultipleAudioInsL()
+ {
+ // Construct session and streams 0 and 1
+ CMceInSession* inSession = inSession = ConstructInSessionLC( 1, 2 );
+
+ // Construct stream 2
+ CMceAudioStream* audioOut = ConstructAudioOutStreamLC();
+ inSession->Streams()[2]->BindL( audioOut );
+ CleanupStack::Pop( audioOut );
+
+ // Construct stream 3
+
+ audioOut = ConstructAudioOutStreamLC();
+
+ CMceAudioStream* audioIn = ConstructAudioInStreamLC();
+ audioOut->BindL( audioIn );
+ CleanupStack::Pop( audioIn );
+
+ inSession->AddStreamL( audioOut );
+ CleanupStack::Pop( audioOut );
+
+ // Transfers ownership
+ iReceiveSession->iSession = inSession;
+ CleanupStack::Pop( inSession );
+
+ // Complete
+ iReceiveSession->CompleteSessionStructureL();
+ EUNIT_ASSERT( inSession->Streams().Count() == 4 );
+
+ // Stream 0
+ EUNIT_ASSERT( inSession->Streams()[0]->Type() == KMceVideo )
+ EUNIT_ASSERT( inSession->Streams()[0]->IsEnabled() )
+ EUNIT_ASSERT( inSession->Streams()[0]->Sinks().Count() == 1 )
+ EUNIT_ASSERT( inSession->Streams()[0]->Sinks()[0]->Type() ==
+ KMceDisplaySink )
+
+ // Stream 1
+ EUNIT_ASSERT( inSession->Streams()[1]->Type() == KMceAudio )
+ EUNIT_ASSERT( inSession->Streams()[1]->IsEnabled() )
+ EUNIT_ASSERT( inSession->Streams()[1]->Sinks().Count() == 1 )
+ EUNIT_ASSERT( inSession->Streams()[1]->Sinks()[0]->Type() ==
+ KMceSpeakerSink );
+ CMceSpeakerSink* speaker =
+ static_cast<CMceSpeakerSink*>(inSession->Streams()[1]->Sinks()[0]);
+ EUNIT_ASSERT( speaker->VolumeL() == iReceiveSession->LcVolumeL() )
+
+ // Stream 2 and bound stream
+ EUNIT_ASSERT( inSession->Streams()[2]->Type() == KMceAudio )
+ EUNIT_ASSERT( inSession->Streams()[2]->IsEnabled() )
+ EUNIT_ASSERT( inSession->Streams()[2]->Sinks().Count() == 1 )
+ EUNIT_ASSERT( inSession->Streams()[2]->Sinks()[0]->Type() ==
+ KMceSpeakerSink );
+ speaker = static_cast<CMceSpeakerSink*>(inSession->Streams()[2]->Sinks()[0]);
+ EUNIT_ASSERT( speaker->VolumeL() == iReceiveSession->LcVolumeL() )
+
+ EUNIT_ASSERT( inSession->Streams()[2]->BoundStream() )
+ EUNIT_ASSERT( !inSession->Streams()[2]->BoundStreamL().IsEnabled() )
+ EUNIT_ASSERT( inSession->Streams()[2]->BoundStreamL().Type() == KMceAudio )
+
+ EUNIT_ASSERT( inSession->Streams()[2]->BoundStreamL().Sinks().Count() == 1 )
+ EUNIT_ASSERT( inSession->Streams()[2]->BoundStreamL().Sinks()[0]->Type() ==
+ KMceRTPSink );
+
+ // Stream 3 and bound stream
+ EUNIT_ASSERT( inSession->Streams()[3]->Type() == KMceAudio )
+ EUNIT_ASSERT( !inSession->Streams()[3]->IsEnabled() )
+ EUNIT_ASSERT( inSession->Streams()[3]->Sinks().Count() == 1 )
+ EUNIT_ASSERT( inSession->Streams()[3]->Sinks()[0]->Type() == KMceRTPSink )
+ EUNIT_ASSERT( !inSession->Streams()[3]->Sinks()[0]->IsEnabled() )
+
+ EUNIT_ASSERT( inSession->Streams()[3]->BoundStream() )
+ EUNIT_ASSERT( inSession->Streams()[3]->BoundStreamL().IsEnabled() )
+ EUNIT_ASSERT( inSession->Streams()[3]->BoundStreamL().Type() == KMceAudio )
+ EUNIT_ASSERT( inSession->Streams()[3]->BoundStreamL().Sinks().Count() == 1 )
+ EUNIT_ASSERT( inSession->Streams()[3]->BoundStreamL().Sinks()[0]->Type() ==
+ KMceSpeakerSink )
+ speaker = static_cast<CMceSpeakerSink*>
+ (inSession->Streams()[3]->BoundStreamL().Sinks()[0]);
+ EUNIT_ASSERT( speaker->VolumeL() == iReceiveSession->LcVolumeL() )
+
+ // Check for bundles
+ EUNIT_ASSERT( inSession->Bundles().Count() == 1 )
+ EUNIT_ASSERT( inSession->Bundles()[0]->Streams().Count() == 4 )
+ EUNIT_ASSERT( inSession->Bundles()[0]->Streams()[0]->Type() == KMceAudio )
+ EUNIT_ASSERT( inSession->Bundles()[0]->Streams()[0]->Sinks()[0]->Type() ==
+ KMceSpeakerSink )
+ EUNIT_ASSERT( inSession->Bundles()[0]->Streams()[1]->Type() == KMceAudio )
+ EUNIT_ASSERT( inSession->Bundles()[0]->Streams()[1]->Sinks()[0]->Type() ==
+ KMceSpeakerSink )
+ EUNIT_ASSERT( inSession->Bundles()[0]->Streams()[2]->Type() == KMceAudio )
+ EUNIT_ASSERT( inSession->Bundles()[0]->Streams()[2]->Sinks()[0]->Type() ==
+ KMceSpeakerSink )
+ EUNIT_ASSERT( inSession->Bundles()[0]->Streams()[3]->Type() == KMceVideo )
+ EUNIT_ASSERT( inSession->Bundles()[0]->Streams()[3]->Sinks()[0]->Type() ==
+ KMceDisplaySink )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Streams in this test case
+// 0. Video in
+// 1. Audio in
+// 2. Audio out bound to audio in
+// 3. Audio in bound to audio out
+// All audio will be removed because of operator variant
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWayRecvSession::UT_CompleteSessionStructureL_OperatorVariant()
+ {
+ iReceiveSession->iOperatorVariant = ETrue;
+
+ // Construct session and streams 0 and 1
+ CMceInSession* inSession = inSession = ConstructInSessionLC( 1, 2 );
+
+ // Construct stream 2
+ CMceAudioStream* audioOut = ConstructAudioOutStreamLC();
+ inSession->Streams()[2]->BindL( audioOut );
+ CleanupStack::Pop( audioOut );
+
+ // Construct stream 3
+
+ audioOut = ConstructAudioOutStreamLC();
+
+ CMceAudioStream* audioIn = ConstructAudioInStreamLC();
+ audioOut->BindL( audioIn );
+ CleanupStack::Pop( audioIn );
+
+ inSession->AddStreamL( audioOut );
+ CleanupStack::Pop( audioOut );
+
+ // Transfers ownership
+ iReceiveSession->iSession = inSession;
+ CleanupStack::Pop( inSession );
+
+ // Complete
+ iReceiveSession->CompleteSessionStructureL();
+
+ // Check that all audio has been removed and no bundles has been
+ // constructed
+ EUNIT_ASSERT_EQUALS( inSession->Streams().Count(), 1 )
+ EUNIT_ASSERT_EQUALS( inSession->Streams()[0]->Type(), KMceVideo )
+ EUNIT_ASSERT_EQUALS( inSession->Bundles().Count(), 0 )
+
+
+ // Session with bandwidth attribute at sessionlevel
+ // -> bandwidth is taken in use at session level
+ //
+ delete iReceiveSession->iSession;
+ iReceiveSession->iSession = NULL;
+
+ inSession = ConstructInSessionLC( 1, 0 );
+ CDesC8Array* sdpLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ CleanupStack::PushL( sdpLines );
+ sdpLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ inSession->SetSessionSDPLinesL( sdpLines );
+ CleanupStack::Pop( sdpLines );
+
+ // Transfers ownership
+ iReceiveSession->iSession = inSession;
+ CleanupStack::Pop( inSession );
+
+ iReceiveSession->CompleteSessionStructureL();
+
+ MDesC8Array* newSdpLines = iReceiveSession->iSession->SessionSDPLinesL();
+ CleanupDeletePushL( newSdpLines );
+ TBool bandwidthFoundFromSessionLevel( EFalse );
+ for ( TInt i = 0; newSdpLines && i < newSdpLines->MdcaCount(); i++ )
+ {
+ if ( newSdpLines->MdcaPoint( i ).Compare(
+ KMusEngSessionSdpLineBandwidthField() ) == 0 )
+ {
+ bandwidthFoundFromSessionLevel = ETrue;
+ }
+ }
+ EUNIT_ASSERT( bandwidthFoundFromSessionLevel );
+ CleanupStack::PopAndDestroy( newSdpLines );
+
+ newSdpLines = iReceiveSession->iSession->Streams()[ 0 ]->MediaAttributeLinesL();
+ CleanupDeletePushL( newSdpLines );
+ TBool bandwidthFoundFromMediaLevel( EFalse );
+ for ( TInt i = 0; newSdpLines && i < newSdpLines->MdcaCount(); i++ )
+ {
+ if ( newSdpLines->MdcaPoint( i ).Compare(
+ KMusEngSessionSdpLineBandwidthField() ) == 0 )
+ {
+ bandwidthFoundFromMediaLevel = ETrue;
+ }
+ }
+ EUNIT_ASSERT( !bandwidthFoundFromMediaLevel );
+ CleanupStack::PopAndDestroy( newSdpLines );
+
+ // Session with bandwidth attribute at media level
+ // -> bandwidth is taken in use at media level
+ //
+ delete iReceiveSession->iSession;
+ iReceiveSession->iSession = NULL;
+
+ inSession = ConstructInSessionLC( 1, 0 );
+
+ sdpLines = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ CleanupStack::PushL( sdpLines );
+ sdpLines->AppendL( KMusEngSessionSdpLineBandwidthField() );
+ inSession->Streams()[ 0 ]->SetMediaAttributeLinesL( sdpLines );
+ CleanupStack::Pop( sdpLines );
+
+ // Transfers ownership
+ iReceiveSession->iSession = inSession;
+ CleanupStack::Pop( inSession );
+
+ iReceiveSession->CompleteSessionStructureL();
+
+ newSdpLines = iReceiveSession->iSession->SessionSDPLinesL();
+ CleanupDeletePushL( newSdpLines );
+ bandwidthFoundFromSessionLevel = EFalse;
+ for ( TInt i = 0; newSdpLines && i < newSdpLines->MdcaCount(); i++ )
+ {
+ if ( newSdpLines->MdcaPoint( i ).Compare(
+ KMusEngSessionSdpLineBandwidthField() ) == 0 )
+ {
+ bandwidthFoundFromSessionLevel = ETrue;
+ }
+ }
+ EUNIT_ASSERT( !bandwidthFoundFromSessionLevel );
+ CleanupStack::PopAndDestroy( newSdpLines );
+
+ newSdpLines = iReceiveSession->iSession->Streams()[ 0 ]->MediaAttributeLinesL();
+ CleanupDeletePushL( newSdpLines );
+ bandwidthFoundFromMediaLevel = EFalse;
+ for ( TInt i = 0; newSdpLines && i < newSdpLines->MdcaCount(); i++ )
+ {
+ if ( newSdpLines->MdcaPoint( i ).Compare(
+ KMusEngSessionSdpLineBandwidthField() ) == 0 )
+ {
+ bandwidthFoundFromMediaLevel = ETrue;
+ }
+ }
+ EUNIT_ASSERT( bandwidthFoundFromMediaLevel );
+ CleanupStack::PopAndDestroy( newSdpLines );
+ }
+
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusEngTwoWayRecvSession,
+ "UT_CMusEngTwoWayRecvSession",
+ "UNIT" )
+
+
+EUNIT_TEST(
+ "NewL - test ",
+ "CMusEngTwoWayRecvSession",
+ "NewL",
+ "FUNCTIONALITY",
+ SetupL, UT_NewLL, Teardown)
+
+EUNIT_TEST(
+ "EnableDisplayL - test ",
+ "CMusEngTwoWayRecvSession",
+ "EnableDisplayL",
+ "FUNCTIONALITY",
+ SetupL, UT_EnableDisplayLL, Teardown)
+
+EUNIT_TEST(
+ "SetOrientationL - test ",
+ "CMusEngTwoWayRecvSession",
+ "SetOrientationL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetOrientationLL, Teardown)
+
+EUNIT_TEST(
+ "OrientationL - test ",
+ "CMusEngTwoWayRecvSession",
+ "OrientationL",
+ "FUNCTIONALITY",
+ SetupL, UT_OrientationLL, Teardown)
+
+EUNIT_TEST(
+ "SetLocalRectL - test ",
+ "CMusEngTwoWayRecvSession",
+ "SetLocalRectL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetLocalRectLL, Teardown)
+
+EUNIT_TEST(
+ "SetRectsL - test ",
+ "CMusEngTwoWayRecvSession",
+ "SetRectsL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetRectsLL, Teardown)
+
+EUNIT_TEST(
+ "Camera - test ",
+ "CMusEngTwoWayRecvSession",
+ "Camera",
+ "FUNCTIONALITY",
+ SetupL, UT_CameraL, Teardown)
+
+EUNIT_TEST(
+ "LocalVideoPlayer - test ",
+ "CMusEngTwoWayRecvSession",
+ "LocalVideoPlayer",
+ "FUNCTIONALITY",
+ SetupL, UT_LocalVideoPlayerL, Teardown)
+
+EUNIT_TEST(
+ "HandleSessionStateChanged - test ",
+ "CMusEngTwoWayRecvSession",
+ "HandleSessionStateChanged",
+ "FUNCTIONALITY",
+ SetupL, UT_HandleSessionStateChangedL, Teardown)
+
+EUNIT_TEST(
+ "AdjustVideoCodecL - test ",
+ "CMusEngTwoWayRecvSession",
+ "AdjustVideoCodecL",
+ "FUNCTIONALITY",
+ SetupL, UT_AdjustVideoCodecLL, Teardown)
+
+EUNIT_TEST(
+ "AdjustAudioCodecL - test ",
+ "CMusEngTwoWayRecvSession",
+ "AdjustAudioCodecL",
+ "FUNCTIONALITY",
+ SetupL, UT_AdjustAudioCodecLL, Teardown)
+
+EUNIT_TEST(
+ "DoCodecSelectionL - test ",
+ "CMusEngTwoWayRecvSession",
+ "DoCodecSelectionL",
+ "FUNCTIONALITY",
+ SetupL, UT_DoCodecSelectionLL, Teardown)
+
+EUNIT_TEST(
+ "IncomingSession - test ",
+ "CMusEngTwoWayRecvSession",
+ "IncomingSession",
+ "FUNCTIONALITY",
+ SetupL, UT_IncomingSessionL, Teardown)
+
+EUNIT_TEST(
+ "UT_CompleteSessionStructureL_WithoutSessionL - test without a session",
+ "CMusEngTwoWayRecvSession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureL_WithoutSessionL, Teardown)
+
+EUNIT_TEST(
+ "UT_CompleteSessionStructureL_WithoutStreamsL - without streams",
+ "CMusEngTwoWayRecvSession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureL_WithoutStreamsL, Teardown)
+
+EUNIT_TEST(
+ "UT_CompleteSessionStructureL_WithOutgoingStreamL - with outgoing stream",
+ "CMusEngTwoWayRecvSession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureL_WithOutgoingStreamL, Teardown)
+
+EUNIT_TEST(
+ "UT_CompleteSessionStructureL_WithVideoInL - with video in stream",
+ "CMusEngTwoWayRecvSession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureL_WithVideoInL, Teardown)
+
+EUNIT_TEST(
+ "UT_CompleteSessionStructureL_WithVideoOutBoundToVideoInL - with sendrecv video, video out bound to video in",
+ "CMusEngTwoWayRecvSession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureL_WithVideoOutBoundToVideoInL, Teardown)
+
+EUNIT_TEST(
+ "UT_CompleteSessionStructureL_WithVideoInBoundToVideoOutL - with sendrecv video, video in bound to video out",
+ "CMusEngTwoWayRecvSession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureL_WithVideoInBoundToVideoOutL, Teardown)
+
+EUNIT_TEST(
+ "UT_CompleteSessionStructureL_WithMultipleVideoInsL - with multiple video in streams",
+ "CMusEngTwoWayRecvSession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureL_WithMultipleVideoInsL, Teardown)
+
+EUNIT_TEST(
+ "CompleteSessionStructureL - test one video and multiple audio streams",
+ "CMusEngTwoWayRecvSession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureL_WithVideoAndMultipleAudioInsL, Teardown)
+
+EUNIT_TEST(
+ "CompleteSessionStructureL - test operator variant",
+ "CMusEngTwoWayRecvSession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureL_OperatorVariant, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengtwowaysession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,1217 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// INTERNAL INCLUDES
+#include "ut_musengtwowaysession.h"
+#include "musengstubs.h"
+#include "musengtestdefs.h"
+#include "musengtwowaysession.h"
+#include "mussipprofilehandler.h"
+#include "musengmceutils.h"
+#include "mussettings.h"
+#include "mussessionproperties.h"
+#include "musengremotevideoplayer.h"
+
+// SYSTEM INCLUDES
+#include <eunitmacros.h>
+#include <mceoutsession.h>
+#include <mcestreambundle.h>
+#include <mcevideostream.h>
+#include <mcecamerasource.h>
+#include <mcertpsink.h>
+#include <mcefilesink.h>
+#include <mceh263codec.h>
+#include <mceavccodec.h>
+#include <mceaudiocodec.h>
+#include <mcedisplaysink.h>
+#include <mcertpsource.h>
+
+
+_LIT8( KMusAvcBitrateLevel1TestText, "TestTextForAvcBrL1Level" );
+_LIT8( KMusAvcBitrateLevel1bTestText, "TestTextForAvcBrL1bLevel" );
+_LIT8( KMusAvcBitrateLevel1_1TestText, "TestTextForAvcBrL1_1Level" );
+_LIT8( KMusAvcBitrateLevel1_2TestText, "TestTextForAvcBrL1_2Level" );
+_LIT8( KMusAvcBitrateLevel1_3TestText, "TestTextForAvcBrL1_3Level" );
+_LIT8( KMusAvcBitrateLevel2TestText, "TestTextForAvcBrL2Level" );
+
+_LIT8( KMusAvcBitrateLevel_1b_ConfigKey, "AvcBrL1b=TestTextForAvcBrL1bLevel;" );
+
+_LIT8( KMusAvcBitrateLevel_1_1_ConfigKey,
+"AvcBrL1_1=TestTextForAvcBrL1_1Level;");
+
+_LIT8( KMusAvcBitrateLevels_1_1_And_1b_ConfigKeys,
+"AvcBrL1_1=TestTextForAvcBrL1_1Level;\
+AvcBrL1b=TestTextForAvcBrL1bLevel;" );
+
+_LIT8( KMusAvcAllLevelsConcatenation,
+"AvcBrL1=TestTextForAvcBrL1Level;\
+AvcBrL1b=TestTextForAvcBrL1bLevel;\
+AvcBrL1_1=TestTextForAvcBrL1_1Level;\
+AvcBrL1_2=TestTextForAvcBrL1_2Level;\
+AvcBrL1_3=TestTextForAvcBrL1_3Level;\
+AvcBrL2=TestTextForAvcBrL2Level;" );
+
+
+
+//use step in different time period
+const TInt KZoomBigStepCount = 15;
+const TInt KZoomSmallStepCount = KZoomBigStepCount*2;
+const TInt KZoomStepMinSize = 1;
+
+// 0.4 second
+const TInt64 KZoomFasterTime = 400000;//must bigger than 1/3 second
+
+//insure that step is 1
+#define USER_SLEEP User::After(KZoomFasterTime)
+
+
+// NOTE!!!!!!!!!!
+// There are intentianally many same cases as already in CMusEngLiveSession
+// as two-way session derives from livesession. These cases therefore
+// ensure that live session changes are not breaking two-way session.
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngTwoWaySession* UT_CMusEngTwoWaySession::NewL()
+ {
+ UT_CMusEngTwoWaySession* self = UT_CMusEngTwoWaySession::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngTwoWaySession* UT_CMusEngTwoWaySession::NewLC()
+ {
+ UT_CMusEngTwoWaySession* self = new( ELeave ) UT_CMusEngTwoWaySession();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngTwoWaySession::~UT_CMusEngTwoWaySession()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngTwoWaySession::UT_CMusEngTwoWaySession()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::SetupL()
+ {
+ iLcSessionObserver = new( ELeave )CLcSessionObserverStub;
+ iLcUiProvider = new( ELeave )CLcUiProviderStub;
+ iLiveSession = CMusEngTwoWaySession::NewL();
+ iLiveSession->SetLcSessionObserver( iLcSessionObserver );
+ iLiveSession->SetLcUiProvider( iLcUiProvider );
+
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KRemoteSipAddress,
+ KTestRecipientSipUri ) );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::Teardown()
+ {
+ delete iLiveSession;
+ delete iLcSessionObserver;
+ delete iLcUiProvider;
+ PropertyHelper::Close();
+ // Delete static data from CenRep stub
+ CRepository::iStaticWriteAvcKeysToStaticData = EFalse;
+ CRepository::DeleteStubAvcConfigKeys();
+ CRepository::ResetStubGlobal();
+ CRepository::iForceFailWithCode = KErrNone;
+ }
+
+
+
+// TEST CASES
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_NewLL()
+ {
+ EUNIT_ASSERT( iLiveSession )
+ EUNIT_ASSERT( iLiveSession->iCameraHandler.iCameraUsage == MusSettingsKeys::EUseCameraSwapping );
+ EUNIT_ASSERT( iLiveSession->iMceManagerUid == TUid::Uid( KMusUiUid ) );
+
+ delete iLiveSession;
+ iLiveSession = NULL;
+ CRepository::SetStubGlobal( MusSettingsKeys::KCameraUsage,
+ MusSettingsKeys::EUseOnlySecondaryCamera );
+
+ iLiveSession = CMusEngTwoWaySession::NewL();
+
+ EUNIT_ASSERT( iLiveSession->iCameraHandler.iCameraUsage == MusSettingsKeys::EUseOnlySecondaryCamera );
+
+ delete iLiveSession;
+ iLiveSession = NULL;
+ CRepository::SetStubGlobal( MusSettingsKeys::KCameraUsage,
+ MusSettingsKeys::EUseOnlyMainCamera );
+
+ iLiveSession = CMusEngTwoWaySession::NewL();
+
+ EUNIT_ASSERT_EQUALS( TInt( MusSettingsKeys::EUseOnlyMainCamera ),
+ TInt( iLiveSession->iCameraHandler.iCameraUsage ) )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_EstablishLcSessionLL()
+ {
+ CRepository::SetStubGlobal( MusSettingsKeys::KVideoBandwidth,
+ 128 );
+ iLiveSession->EstablishLcSessionL();
+
+ EUNIT_ASSERT( iLiveSession->iSession );
+ // Next assertion ensures that session structure is new
+ EUNIT_ASSERT( iLiveSession->iSession->Streams().Count() > 0 );
+ EUNIT_ASSERT( iLiveSession->iSession->Streams()[0] );
+ EUNIT_ASSERT( *(iLiveSession->iRecipient) == KTestRecipientSipUri8() );
+ EUNIT_ASSERT( iLiveSession->iSession->State() == CMceSession::EOffering );
+
+ EUNIT_ASSERT( iLiveSession->iSession->iHeaders );
+ EUNIT_ASSERT( iLiveSession->iSession->iHeaders->Count() == 2 );
+ EUNIT_ASSERT( iLiveSession->iSession->iHeaders->MdcaPoint( 0 ) ==
+ KMusEngAcceptContactHeader() );
+ EUNIT_ASSERT( iLiveSession->iSession->iHeaders->MdcaPoint( 1 ) ==
+ KMusAcceptHeader() );
+
+ // Ensure there is no SDP lines at session level
+ EUNIT_ASSERT( iLiveSession->iSession->iSessionSDPLines );
+ EUNIT_ASSERT( iLiveSession->iSession->iSessionSDPLines->Count() == 1 );
+ EUNIT_ASSERT( iLiveSession->iSession->iSessionSDPLines->MdcaPoint( 0 ) ==
+ KMusEngSessionSdpLineXApplication() );
+
+ // Ensure b=AS and b=TIAS attributes are taken at media level
+ MDesC8Array* mediaSdpLines =
+ iLiveSession->iSession->Streams()[0]->iMediaSDPLines;
+
+ EUNIT_ASSERT( mediaSdpLines );
+ EUNIT_ASSERT( mediaSdpLines->MdcaCount() == 2 );
+ EUNIT_ASSERT( mediaSdpLines->MdcaPoint( 0 ).Find(
+ KMusEngSessionSdpLineBandwidthLine() ) == 0 );
+ EUNIT_ASSERT( mediaSdpLines->MdcaPoint( 1 ).Find(
+ KMusEngSessionSdpLineTiasLine() ) == 0 );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_EnableDisplayLL()
+ {
+ TRAPD( error, iLiveSession->EnableDisplayL( ETrue ) );
+ MUS_TEST_FORWARD_ALLOC_FAILURE( error );
+ EUNIT_ASSERT( error == KErrNotReady );
+
+ ESTABLISH_OUT_SESSION( iLiveSession );
+
+ CMceDisplaySink* display =
+ MusEngMceUtils::GetDisplayL( *(iLiveSession->iSession) );
+
+ CMceDisplaySink* receivingDisplay =
+ MusEngMceUtils::GetReceivingDisplayL( *iLiveSession->iSession );
+
+ // Disable
+ iLiveSession->EnableDisplayL( EFalse );
+
+ EUNIT_ASSERT( !display->iIsEnabled );
+ EUNIT_ASSERT( !receivingDisplay->iIsEnabled );
+
+ // Try to disable again, request should be ignored
+
+ iLiveSession->EnableDisplayL( EFalse );
+
+ EUNIT_ASSERT( !display->iIsEnabled );
+ EUNIT_ASSERT( !receivingDisplay->iIsEnabled );
+
+ // Enable
+
+ iLiveSession->EnableDisplayL( ETrue );
+
+ EUNIT_ASSERT( display->iIsEnabled );
+ EUNIT_ASSERT( receivingDisplay->iIsEnabled );
+
+ // Try to enable again, request should be ignored
+
+ iLiveSession->EnableDisplayL( ETrue );
+
+ EUNIT_ASSERT( display->iIsEnabled );
+ EUNIT_ASSERT( receivingDisplay->iIsEnabled );
+
+ // Display is active only if receiving and display is explicitly enabled
+ EUNIT_ASSERT( !iLiveSession->IsDisplayActive() )
+ iLiveSession->iReceiving = ETrue;
+ EUNIT_ASSERT( iLiveSession->IsDisplayActive() )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_SetOrientationLL()
+ {
+ // Try without session, fails
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->SetOrientationL(
+ CMusEngMceSession::EPortrait ),
+ KErrNotReady )
+
+ // Establish a session
+ ESTABLISH_OUT_SESSION( iLiveSession )
+
+ CMceDisplaySink* display =
+ MusEngMceUtils::GetDisplayL( *iLiveSession->iSession );
+
+ CMceDisplaySink* receivingDisplay =
+ MusEngMceUtils::GetReceivingDisplayL( *iLiveSession->iSession );
+
+
+ // Check the initial state
+ display->iRotation = CMceDisplaySink::ENone;
+ receivingDisplay->iRotation = CMceDisplaySink::ENone;
+ EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
+ MLcWindow::EPortrait )
+
+ // Successfully change orientation
+
+ iLiveSession->SetOrientationL( CMusEngMceSession::ELandscape );
+ EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
+ MLcWindow::ELandscape )
+
+ EUNIT_ASSERT_EQUALS( display->iRotation, CMceDisplaySink::EClockwise90Degree );
+ EUNIT_ASSERT_EQUALS( receivingDisplay->iRotation, CMceDisplaySink::EClockwise90Degree );
+
+ iLiveSession->SetOrientationL( CMusEngMceSession::EPortrait );
+ EUNIT_ASSERT_EQUALS( iLiveSession->OrientationL(),
+ MLcWindow::EPortrait )
+
+ EUNIT_ASSERT_EQUALS( display->iRotation, CMceDisplaySink::ENone );
+ EUNIT_ASSERT_EQUALS( receivingDisplay->iRotation, CMceDisplaySink::ENone );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_SetLocalRectLL()
+ {
+ // Does nothing real before session establishment
+ TRect rect1( 100, 200, 300, 500 );
+ iLiveSession->SetSecondaryRectL( rect1 );
+
+ EUNIT_ASSERT( rect1 == iLiveSession->iLocalRect );
+
+ // Local rect changing affects to viewfinder display sink not to receiving video
+ //
+ ESTABLISH_OUT_SESSION( iLiveSession );
+
+ CMceDisplaySink* vfDisplay =
+ MusEngMceUtils::GetDisplayL( *( iLiveSession->iSession ) );
+ CMceDisplaySink* receivingDisplay =
+ MusEngMceUtils::GetReceivingDisplayL( *( iLiveSession->iSession ) );
+
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() == iLiveSession->iLocalRect );
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() != iLiveSession->iLocalRect );
+
+ TRect rect2( 200, 200, 300, 500 );
+ iLiveSession->SetSecondaryRectL( rect2 );
+ EUNIT_ASSERT( rect2 == iLiveSession->iLocalRect );
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() == iLiveSession->iLocalRect );
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() != iLiveSession->iLocalRect );
+
+ // Terminate session and try again, rect must not be changed
+
+ iLiveSession->iSession->iState = CMceSession::ETerminated;
+
+ TRect rect3( 300, 300, 400, 600 );
+
+ iLiveSession->SetSecondaryRectL( rect3 );
+
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() != rect3 )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_SetRectsLL()
+ {
+ // Does nothing real before session establishment
+ TRect localrect1( 100, 200, 300, 400 );
+ TRect remoterect1( 100, 200, 300, 500 );
+ iLiveSession->SetRectsL( remoterect1, localrect1 );
+
+ EUNIT_ASSERT( localrect1 == iLiveSession->iLocalRect );
+ EUNIT_ASSERT( remoterect1 == iLiveSession->iRect );
+
+ // Local rect changing affects to viewfinder display sink and remote rect to
+ // receiving video display sink
+ //
+ ESTABLISH_OUT_SESSION( iLiveSession );
+
+ CMceDisplaySink* vfDisplay =
+ MusEngMceUtils::GetDisplayL( *( iLiveSession->iSession ) );
+ CMceDisplaySink* receivingDisplay =
+ MusEngMceUtils::GetReceivingDisplayL( *( iLiveSession->iSession ) );
+
+ TRect localrect2( 200, 200, 300, 400 );
+ TRect remoterect2( 200, 200, 300, 500 );
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() != localrect2 );
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() != remoterect2 );
+
+ iLiveSession->SetRectsL( remoterect2, localrect2 );
+ EUNIT_ASSERT( localrect2 == iLiveSession->iLocalRect );
+ EUNIT_ASSERT( remoterect2 == iLiveSession->iRect );
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() == iLiveSession->iLocalRect );
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() == iLiveSession->iRect );
+
+ // Terminate session and try again, rect must not be changed
+
+ iLiveSession->iSession->iState = CMceSession::ETerminated;
+
+ TRect localrect3( 300, 200, 300, 400 );
+ TRect remoterect3( 300, 200, 300, 500 );
+
+ iLiveSession->SetRectsL( remoterect3, localrect3 );
+
+ EUNIT_ASSERT( vfDisplay->DisplayRectL() != localrect3 )
+ EUNIT_ASSERT( receivingDisplay->DisplayRectL() != remoterect3 );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_EnableLcFileL()
+ {
+ // Recording is not supported for two-way session
+ EUNIT_ASSERT_SPECIFIC_LEAVE( iLiveSession->EnableLcFileL( ETrue ),
+ KErrNotSupported )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_CompleteSessionStructureLL()
+ {
+
+ CMceStreamBundle* localBundle =
+ CMceStreamBundle::NewLC( CMceStreamBundle::ELS );
+
+ // Check that structure cannot be completed before creating the session
+ TRAPD( error, iLiveSession->CompleteSessionStructureL( *localBundle ) );
+ MUS_TEST_FORWARD_ALLOC_FAILURE( error );
+ EUNIT_ASSERT( error == KErrNotReady );
+
+ // Normal case
+
+ CSIPProfile* profile = iLiveSession->iSipProfileHandler->Profile();
+
+ iLiveSession->iSession = CMceOutSession::NewL(
+ *(iLiveSession->iManager),
+ *profile,
+ KTestRecipientSipUri8() );
+
+ iLiveSession->CompleteSessionStructureL( *localBundle );
+
+ EUNIT_ASSERT( localBundle->Streams().Count() == 0 )
+
+ EUNIT_ASSERT( iLiveSession->iSession->Streams().Count() == 1 );
+ EUNIT_ASSERT( iLiveSession->iSession->Streams()[0]->Type() == KMceVideo );
+ EUNIT_ASSERT( iLiveSession->iSession->Streams()[0]->Source() );
+ EUNIT_ASSERT( iLiveSession->iSession->Streams()[0]->Source()->Type() ==
+ KMceCameraSource );
+ EUNIT_ASSERT( iLiveSession->iSession->Streams()[0]->Sinks().Count() == 1 );
+ EUNIT_ASSERT( iLiveSession->iSession->Streams()[0]->Sinks()[0]->Type() ==
+ KMceRTPSink );
+
+ EUNIT_ASSERT( iLiveSession->iCameraHandler.iCurrentCamera ==
+ TMusEngCameraHandler::EBackCamera );
+
+ CMceVideoStream* vidStream = static_cast<CMceVideoStream*>( iLiveSession->iSession->Streams()[0] );
+ EUNIT_ASSERT( vidStream->BoundStream() );
+ CMceVideoStream& inStream = static_cast<CMceVideoStream&>( vidStream->BoundStreamL() );
+ EUNIT_ASSERT( inStream.Source() );
+ EUNIT_ASSERT( inStream.Source()->Type() == KMceRTPSource );
+ EUNIT_ASSERT( inStream.Sinks().Count() == 1 );
+ EUNIT_ASSERT( inStream.Sinks()[0]->Type() == KMceDisplaySink );
+
+ delete iLiveSession->iSession;
+ iLiveSession->iSession = NULL;
+
+ iLiveSession->iSession = CMceOutSession::NewL(
+ *(iLiveSession->iManager),
+ *profile,
+ KTestRecipientSipUri8() );
+
+ iLiveSession->iCameraHandler.iCameraUsage = MusSettingsKeys::EUseOnlySecondaryCamera;
+ iLiveSession->CompleteSessionStructureL( *localBundle );
+
+ EUNIT_ASSERT( iLiveSession->iCameraHandler.iCurrentCamera ==
+ TMusEngCameraHandler::EFrontCamera );
+
+
+ CleanupStack::PopAndDestroy( localBundle );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_HandleSessionStateChangedL()
+ {
+ // Make Repository empty, config keys must be written
+ CRepository::SetStubAvcConfigKeysL( KNullDesC8() );
+
+ // Invite
+ iLiveSession->EstablishLcSessionL();
+ iLiveSession->iSession->iState = CMceSession::EEstablished;
+ CRepository::iForceFailWithCode = KErrNone;
+
+ // Simulate session state transition notification
+ iLiveSession->HandleSessionStateChanged(
+ *iLiveSession->iSession,
+ 200, KNullDesC8() );
+
+ HBufC8* info = MultimediaSharingSettings::EncoderConfigInfoLC();
+ EUNIT_ASSERT_NOT_EQUALS( *info, KMusAvcBitrateLevel_1b_ConfigKey() )
+ CleanupStack::PopAndDestroy( info );
+
+ // sendrecv->recvonly downgrade terminates session
+ iLcSessionObserver->Reset();
+ iLiveSession->iSession->iState = CMceSession::EEstablished;
+ CMceVideoStream* inStream =
+ MusEngMceUtils::GetVideoInStreamL( *iLiveSession->iSession );
+ inStream->EnableL();
+ CMceVideoStream* outStream =
+ MusEngMceUtils::GetVideoOutStreamL( *iLiveSession->iSession );
+ outStream->DisableL();
+ iLiveSession->HandleSessionStateChanged(
+ *iLiveSession->iSession, 200, KNullDesC8() );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::ESessionFailed ) )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_AdjustVideoCodecLL()
+ {
+ CRepository::SetStubAvcConfigKeysL( KNullDesC8() );
+
+ CMceVideoCodec* codecH263 = CMceH263Codec::NewLC( KMceSDPNameH263() );
+ CMceVideoCodec* codecH2632000 = CMceH263Codec::NewLC( KMceSDPNameH2632000() );
+ CMceVideoCodec* codecAvc = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ CMceVideoCodec* codecUnknown = CMceH263Codec::NewLC( KNullDesC8() );
+
+ iLiveSession->AdjustVideoCodecL( *codecH263, KMceCameraSource );
+ iLiveSession->AdjustVideoCodecL( *codecH2632000, KMceCameraSource );
+ iLiveSession->AdjustVideoCodecL( *codecAvc, KMceCameraSource );
+ iLiveSession->AdjustVideoCodecL( *codecUnknown, KMceCameraSource );
+
+ // Test that bit rates and keepalive has been set to H263 & AVC codecs
+ EUNIT_ASSERT( codecH263->iAllowedBitrates == KMceAllowedH263BitrateAll )
+ EUNIT_ASSERT( codecH263->iMaxBitRate == KMceH263Level45Bitrate )
+ EUNIT_ASSERT( codecH263->iBitrate == 80000 )
+ EUNIT_ASSERT_EQUALS( codecH263->KeepAliveTimer(), 6 )
+ EUNIT_ASSERT_EQUALS( codecH263->KeepAlivePayloadType(), 96 )
+ EUNIT_ASSERT_EQUALS( codecH263->KeepAliveData(), KNullDesC8() )
+
+ EUNIT_ASSERT( codecH2632000->iAllowedBitrates ==
+ KMceAllowedH263BitrateAll )
+ EUNIT_ASSERT( codecH2632000->iMaxBitRate == KMceH263Level45Bitrate )
+ EUNIT_ASSERT( codecH2632000->iBitrate == 80000 )
+ EUNIT_ASSERT_EQUALS( codecH2632000->KeepAliveTimer(), 6 )
+ EUNIT_ASSERT_EQUALS( codecH2632000->KeepAlivePayloadType(), 96 )
+ EUNIT_ASSERT_EQUALS( codecH2632000->KeepAliveData(), KNullDesC8() )
+
+ EUNIT_ASSERT( codecAvc->iAllowedBitrates ==
+ KMceAvcCodecProfileIdBaseline |
+ KMceAvcCodecProfileIopConstraintSet |
+ KMceAvcBitrateLevel1b )
+ EUNIT_ASSERT_EQUALS( codecAvc->KeepAliveTimer(), 6 )
+ EUNIT_ASSERT_EQUALS( codecAvc->KeepAlivePayloadType(), 98 )
+ EUNIT_ASSERT_EQUALS( codecAvc->KeepAliveData(), KNullDesC8() )
+ EUNIT_ASSERT( iLiveSession->iStoreEncoderConfigInfo )
+
+
+ // Test that bitrates and keepalive has not been set to unknown codecs
+ EUNIT_ASSERT( codecUnknown->iAllowedBitrates !=
+ KMceAllowedH263BitrateAll )
+ EUNIT_ASSERT( codecUnknown->iMaxBitRate != KMceH263Level45Bitrate )
+ EUNIT_ASSERT( codecUnknown->iBitrate != KMceH263Level10Bitrate )
+ EUNIT_ASSERT_EQUALS( codecUnknown->KeepAliveTimer(), 6 )
+ EUNIT_ASSERT_EQUALS( codecUnknown->KeepAlivePayloadType(), 0 )
+ EUNIT_ASSERT_EQUALS( codecUnknown->KeepAliveData(), KNullDesC8() )
+
+ // Test that base class has been called to all codecs
+ EUNIT_ASSERT( codecH263->iPayloadType == 96 )
+ EUNIT_ASSERT( codecH2632000->iPayloadType == 96 )
+ EUNIT_ASSERT( codecAvc->iPayloadType == 98 )
+ EUNIT_ASSERT( codecUnknown->iPayloadType == 0 )
+
+ CleanupStack::PopAndDestroy( codecUnknown );
+ CleanupStack::PopAndDestroy( codecAvc );
+ CleanupStack::PopAndDestroy( codecH2632000 );
+ CleanupStack::PopAndDestroy( codecH263 );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_AdjustAudioCodecLL()
+ {
+ CMceAudioCodec* codec =
+ iLiveSession->iManager->SupportedAudioCodecs()[0]->CloneL();
+ CleanupStack::PushL( codec );
+ iLiveSession->AdjustAudioCodecL( *codec );
+
+ // Does nothing so just test that base class has been called
+
+ EUNIT_ASSERT( codec->iPayloadType == 97 )
+
+ CleanupStack::PopAndDestroy( codec );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_DoCodecSelectionLL()
+ {
+ CMceVideoStream* stream = CMceVideoStream::NewLC();
+
+ CMceVideoCodec* codecH263 = CMceH263Codec::NewLC( _L8( "Foo" ) );
+ stream->AddCodecL( codecH263 );
+ CleanupStack::Pop( codecH263 );
+
+ CMceVideoCodec* codecH2632000 = CMceH263Codec::NewLC( _L8( "Bar" ) );
+ stream->AddCodecL( codecH2632000 );
+ CleanupStack::Pop( codecH2632000 );
+
+ CMceVideoCodec* codecAvc = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ stream->AddCodecL( codecAvc );
+ CleanupStack::Pop( codecAvc );
+
+ // No assumptions so all the codecs are left to stream
+ iLiveSession->DoCodecSelectionL( *stream );
+ EUNIT_ASSERT_EQUALS( stream->Codecs().Count(), 3 )
+
+ // Check that AVC codecs are removed if they are known to be not supported
+ delete iLiveSession->iVideoCodecList;
+ iLiveSession->iVideoCodecList = NULL;
+ iLiveSession->iVideoCodecList = _L8("SomethingThatIsNotAVC").AllocL();
+ iLiveSession->DoCodecSelectionL( *stream );
+ EUNIT_ASSERT_EQUALS( stream->Codecs().Count(), 2 )
+ EUNIT_ASSERT( stream->Codecs()[0]->SdpName() != KMceSDPNameH264() )
+ EUNIT_ASSERT( stream->Codecs()[1]->SdpName() != KMceSDPNameH264() )
+
+ CleanupStack::PopAndDestroy( stream );
+ }
+
+// -----------------------------------------------------------------------------
+// Although all states are not meaningfull for LiveSession, all states are
+// tested in order to force the updating of unit tests when behavior is changed
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_StreamStateChangedL()
+ {
+ // Try without a session, nothing happens
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *videoStream );
+ CleanupStack::PopAndDestroy( videoStream );
+
+ // Simulate sending invite
+ iLiveSession->EstablishLcSessionL();
+
+ // Try all the stream states
+ CMceMediaStream* changedStream = iLiveSession->iSession->Streams()[0];
+
+ // EUninitialized, stream is created, unexpected change, nothing happens
+ changedStream->iState = CMceMediaStream::EUninitialized;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // EInitialized, stream is initialized
+ changedStream->iState = CMceMediaStream::EInitialized;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // EBuffering, outgoing stream is buffering
+ changedStream->iState = CMceMediaStream::EBuffering;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // EBuffering, incoming stream is buffering
+ EUNIT_ASSERT( !iLiveSession->iBuffered );
+ CMceMediaStream* changedInStream = &iLiveSession->iSession->Streams()[0]->BoundStreamL();
+ changedInStream->iState = CMceMediaStream::EBuffering;
+ iLiveSession->StreamStateChanged( *changedInStream );
+ EUNIT_ASSERT( iLiveSession->iBuffered );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // EIdle, stream is not receiving RTP
+ changedStream->iState = CMceMediaStream::EIdle;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // EStreaming, outgoing stream is streaming, no effect on receiving information
+ changedStream->iState = CMceMediaStream::EStreaming;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
+
+ // EStreaming, incoming stream is streaming, receiving information is updated and notified
+ EUNIT_ASSERT( !iLiveSession->iReceiving );
+ changedInStream->iState = CMceMediaStream::EStreaming;
+ iLiveSession->StreamStateChanged( *changedInStream );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ EUNIT_ASSERT( iLiveSession->iReceiving );
+ iLcSessionObserver->Reset();
+
+ // EStreaming, incoming stream is streaming, state is notified even if receiving information
+ // says we are already receiving
+ changedInStream->iState = CMceMediaStream::EStreaming;
+ iLiveSession->StreamStateChanged( *changedInStream );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
+
+ // EDisabled, stream is explicitly disabled
+ changedStream->iState = CMceMediaStream::EDisabled;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // ENoResources, stream has no needed resources to stream
+ changedStream->iState = CMceMediaStream::ENoResources;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // ETranscodingRequired, stream requires non-realtime transcoding
+ changedStream->iState = CMceMediaStream::ETranscodingRequired;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // ETranscoding, stream is transcoding in non-realtime
+ changedStream->iState = CMceMediaStream::ETranscoding;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+ }
+
+// -----------------------------------------------------------------------------
+// Although all states are not meaningfull for LiveSession, all states are
+// tested in order to force the updating of unit tests when behavior is changed
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_StreamStateChangedWithSourceL()
+ {
+ // Try without a session, nothing happens
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *videoStream,
+ *CMceCameraSource::NewLC( *iLiveSession->iManager ) );
+ CleanupStack::PopAndDestroy(); // camera
+ CleanupStack::PopAndDestroy( videoStream );
+
+ // Simulate sending invite
+ iLiveSession->EstablishLcSessionL();
+
+ // Try all the stream states
+ CMceMediaStream* changedStream = iLiveSession->iSession->Streams()[0];
+ CMceMediaSource* changedSource = changedStream->Source();
+
+ // EUninitialized, stream is created, unexpected change, nothing happens
+ changedStream->iState = CMceMediaStream::EUninitialized;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream, *changedSource );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // EInitialized, stream is initialized
+ changedStream->iState = CMceMediaStream::EInitialized;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream, *changedSource );;
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // EBuffering, stream is buffering
+ changedStream->iState = CMceMediaStream::EBuffering;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream, *changedSource );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // EIdle, stream is not receiving RTP
+ changedStream->iState = CMceMediaStream::EIdle;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream, *changedSource );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // EStreaming, stream is streaming
+ changedStream->iState = CMceMediaStream::EStreaming;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream, *changedSource );
+ EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ),
+ TInt( CLcSessionObserverStub::EPlayerStateChanged ) )
+ iLcSessionObserver->Reset();
+
+ // EDisabled, stream is explicitly disabled
+ changedStream->iState = CMceMediaStream::EDisabled;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream, *changedSource );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // ENoResources, stream has no needed resources to stream
+ changedStream->iState = CMceMediaStream::ENoResources;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream, *changedSource );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // ETranscodingRequired, stream requires non-realtime transcoding
+ changedStream->iState = CMceMediaStream::ETranscodingRequired;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream, *changedSource );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // ETranscoding, stream is transcoding in non-realtime
+ changedStream->iState = CMceMediaStream::ETranscoding;
+ static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged(
+ *changedStream, *changedSource );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_SetEncodingDeviceLL()
+ {
+ CMceAvcCodec* codec = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+
+ // Generic error in CenRep, leave expected
+ CRepository::iForceFailWithCode = KErrNotReady;
+ EUNIT_ASSERT_LEAVE( iLiveSession->SetEncodingDeviceL( *codec ) )
+ EUNIT_ASSERT_EQUALS( codec->iEncodingDecodingDevice, TUid::Uid( 0 ) )
+
+ // No entry in CenRep, default value expected
+ CRepository::iForceFailWithCode = KErrNotFound;
+ const TUid KDefaultEncodingDevice( TUid::Uid( 0x20001C13 ) );
+ iLiveSession->SetEncodingDeviceL( *codec );
+ EUNIT_ASSERT_EQUALS( codec->iEncodingDecodingDevice,
+ KDefaultEncodingDevice )
+
+ // Entry in CenRep
+ const TInt KSomeEncodingDevice( 0x20001C15 );
+ CRepository::iStaticEncoderUid = KSomeEncodingDevice;
+ iLiveSession->SetEncodingDeviceL( *codec );
+ EUNIT_ASSERT_EQUALS( codec->iEncodingDecodingDevice,
+ TUid::Uid( KSomeEncodingDevice ) )
+
+ CleanupStack::PopAndDestroy( codec );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_SetCodecConfigKeyLL()
+ {
+ CMceAvcCodec* codec = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel1b );
+
+ // Generic error in CenRep, leave expected
+ CRepository::iForceFailWithCode = KErrNotReady;
+ EUNIT_ASSERT_LEAVE( iLiveSession->SetCodecConfigKeyL( *codec ) );
+ EUNIT_ASSERT( !codec->iConfigKey )
+ EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
+ CRepository::iForceFailWithCode = KErrNone;
+
+ // No entry in CenRep, nothing happens
+ iLiveSession->SetCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( !codec->iConfigKey )
+ EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
+
+ // Empty entry in CenRep
+ CRepository::SetStubAvcConfigKeysL( KNullDesC8() );
+ iLiveSession->SetCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( !codec->iConfigKey )
+ EUNIT_ASSERT( iLiveSession->iStoreEncoderConfigInfo )
+ iLiveSession->iStoreEncoderConfigInfo = EFalse; // emulate original situation
+
+ // Entry in CenRep
+ CRepository::SetStubAvcConfigKeysL( KMusAvcBitrateLevel_1b_ConfigKey );
+ iLiveSession->SetCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( codec->iConfigKey )
+ HBufC8* key = codec->ConfigKeyL();
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1bTestText() )
+ CleanupStack::PopAndDestroy( key );
+ EUNIT_ASSERT( !iLiveSession->iStoreEncoderConfigInfo )
+
+ CleanupStack::PopAndDestroy( codec );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_ReadCodecConfigKeyLL()
+ {
+ HBufC8* key( NULL );
+
+ // Try with H263, leave expected
+ CMceVideoCodec* codecH263 = CMceH263Codec::NewLC( KMceSDPNameH263() );
+ EUNIT_ASSERT_LEAVE( key = iLiveSession->ReadCodecConfigKeyL( *codecH263 ) )
+ CleanupStack::PopAndDestroy( codecH263 );
+
+ // Try without an entry in CenRep, leave expected
+ CMceVideoCodec* codec = CMceAvcCodec::NewLC( KMceSDPNameH264() );
+ codec->SetAllowedBitrates( 0 | KMceAvcBitrateLevel1 );
+ EUNIT_ASSERT_LEAVE( key = iLiveSession->ReadCodecConfigKeyL( *codec ) )
+
+ // Create CenRep entry which does not include wanted bitrate, NULL value
+ // expected
+ CRepository::SetStubAvcConfigKeysL( KMusAvcBitrateLevel1bTestText() );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( !key )
+
+ // Create entry with all AVC keys and try with all the values
+ CRepository::SetStubAvcConfigKeysL( KMusAvcAllLevelsConcatenation() );
+
+ // KMceAvcBitrateLevel1
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1TestText );
+ CleanupStack::PopAndDestroy( key );
+
+ // KMceAvcBitrateLevel1b
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel1b );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1bTestText );
+ CleanupStack::PopAndDestroy( key );
+
+ // KMceAvcBitrateLevel1_1
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel1_1 );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1_1TestText );
+ CleanupStack::PopAndDestroy( key );
+
+ // KMceAvcBitrateLevel1_2
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel1_2 );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1_2TestText );
+ CleanupStack::PopAndDestroy( key );
+
+ // KMceAvcBitrateLevel1_3
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel1_3 );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel1_3TestText );
+ CleanupStack::PopAndDestroy( key );
+
+ // KMceAvcBitrateLevel2
+ codec->SetAllowedBitrates( KMceAvcBitrateLevel2 );
+ key = iLiveSession->ReadCodecConfigKeyL( *codec );
+ EUNIT_ASSERT( key );
+ CleanupStack::PushL( key );
+ EUNIT_ASSERT_EQUALS( *key, KMusAvcBitrateLevel2TestText );
+ CleanupStack::PopAndDestroy( key );
+
+ CleanupStack::PopAndDestroy( codec );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_StoreEncoderConfigInfoLL()
+ {
+ CRepository::iStaticWriteAvcKeysToStaticData = ETrue;
+
+ // Try with clean CenRep
+ MultimediaSharingSettings::SetEncoderConfigInfoL( KNullDesC8() );
+
+ ESTABLISH_OUT_SESSION( iLiveSession ) // calls StoreEncoderConfigInfoL
+ // If StoreEncoderConfigInfoL leaves with KErrNoMemory,
+ // MMusEngSessionObserver::SessionFailed will be called.
+ if ( iLcSessionObserver->iCalledFunction == CLcSessionObserverStub::ESessionFailed )
+ {
+ User::Leave( KErrNoMemory );
+ }
+
+ HBufC8* keys = MultimediaSharingSettings::EncoderConfigInfoLC();
+ EUNIT_ASSERT_EQUALS( *keys, KMusAvcBitrateLevel_1b_ConfigKey() )
+ CleanupStack::PopAndDestroy( keys );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_RemoteVideoPlayerL()
+ {
+ EUNIT_ASSERT( iLiveSession->RemoteVideoPlayer() ==
+ iLiveSession->iRemoteVideoPlayer )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngTwoWaySession::UT_InactivityTimeoutL()
+ {
+ // Not receiving, no effect
+ iLiveSession->iReceiving = EFalse;
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+ CMceRtpSource* rtpSource = CMceRtpSource::NewLC();
+ iLiveSession->InactivityTimeout( *videoStream, *rtpSource );
+ EUNIT_ASSERT( iLcSessionObserver->IsReseted() );
+
+ // Receiving, state change is notified and
+ // receiving and buffering status are cleared
+ iLiveSession->iBuffered = ETrue;
+ iLiveSession->iReceiving = ETrue;
+ iLiveSession->InactivityTimeout( *videoStream, *rtpSource );
+ EUNIT_ASSERT_EQUALS( iLcSessionObserver->iCalledFunction,
+ CLcSessionObserverStub::EPlayerStateChanged );
+ EUNIT_ASSERT( !iLiveSession->iReceiving );
+ EUNIT_ASSERT( !iLiveSession->iBuffered );
+ CleanupStack::PopAndDestroy( rtpSource );
+ CleanupStack::PopAndDestroy( videoStream );
+ }
+
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusEngTwoWaySession,
+ "UT_CMusEngTwoWaySession",
+ "UNIT" )
+
+EUNIT_TEST(
+ "NewL - test ",
+ "CMusEngTwoWaySession",
+ "NewL",
+ "FUNCTIONALITY",
+ SetupL, UT_NewLL, Teardown)
+
+EUNIT_TEST(
+ "EstablishLcSessionL - test ",
+ "CMusEngTwoWaySession",
+ "EstablishLcSessionL",
+ "FUNCTIONALITY",
+ SetupL, UT_EstablishLcSessionLL, Teardown)
+
+EUNIT_TEST(
+ "EnableDisplayL - test ",
+ "CMusEngTwoWaySession",
+ "EnableDisplayL",
+ "FUNCTIONALITY",
+ SetupL, UT_EnableDisplayLL, Teardown)
+
+EUNIT_TEST(
+ "SetOrientationL - test ",
+ "CMusEngTwoWaySession",
+ "SetOrientationL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetOrientationLL, Teardown)
+
+EUNIT_TEST(
+ "SetLocalRectL - test ",
+ "CMusEngTwoWaySession",
+ "SetLocalRectL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetLocalRectLL, Teardown)
+
+EUNIT_TEST(
+ "SetRectsL - test ",
+ "CMusEngTwoWaySession",
+ "SetRectsL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetRectsLL, Teardown)
+
+EUNIT_TEST(
+ "CompleteSessionStructureL - test ",
+ "CMusEngTwoWaySession",
+ "CompleteSessionStructureL",
+ "FUNCTIONALITY",
+ SetupL, UT_CompleteSessionStructureLL, Teardown)
+
+EUNIT_TEST(
+ "HandleSessionStateChanged - test ",
+ "CMusEngTwoWaySession",
+ "HandleSessionStateChanged",
+ "FUNCTIONALITY",
+ SetupL, UT_HandleSessionStateChangedL, Teardown)
+
+EUNIT_TEST(
+ "AdjustVideoCodecL - test ",
+ "CMusEngTwoWaySession",
+ "AdjustVideoCodecL",
+ "FUNCTIONALITY",
+ SetupL, UT_AdjustVideoCodecLL, Teardown)
+
+EUNIT_TEST(
+ "AdjustAudioCodecL - test ",
+ "CMusEngTwoWaySession",
+ "AdjustAudioCodecL",
+ "FUNCTIONALITY",
+ SetupL, UT_AdjustAudioCodecLL, Teardown)
+
+EUNIT_TEST(
+ "DoCodecSelectionL- test ",
+ "CMusEngTwoWaySession",
+ "DoCodecSelectionL",
+ "FUNCTIONALITY",
+ SetupL, UT_DoCodecSelectionLL, Teardown)
+
+EUNIT_TEST(
+ "StreamStateChangedL() - test ",
+ "CMusEngTwoWaySession",
+ "StreamStateChangedL()",
+ "FUNCTIONALITY",
+ SetupL, UT_StreamStateChangedL, Teardown)
+
+EUNIT_TEST(
+ "StreamStateChangedL( src ) - test ",
+ "CMusEngTwoWaySession",
+ "StreamStateChangedL( src )",
+ "FUNCTIONALITY",
+ SetupL, UT_StreamStateChangedWithSourceL, Teardown)
+
+EUNIT_TEST(
+ "SetEncodingDeviceL - test ",
+ "CMusEngTwoWaySession",
+ "SetEncodingDeviceL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetEncodingDeviceLL, Teardown)
+
+EUNIT_TEST(
+ "SetCodecConfigKeyL - test ",
+ "CMusEngTwoWaySession",
+ "SetCodecConfigKeyL",
+ "FUNCTIONALITY",
+ SetupL, UT_SetCodecConfigKeyLL, Teardown)
+
+EUNIT_TEST(
+ "ReadCodecConfigKeyL - test ",
+ "CMusEngTwoWaySession",
+ "ReadCodecConfigKeyL",
+ "FUNCTIONALITY",
+ SetupL, UT_ReadCodecConfigKeyLL, Teardown)
+
+EUNIT_TEST(
+ "StoreEncoderConfigInfoL - test ",
+ "CMusEngTwoWaySession",
+ "StoreEncoderConfigInfoL",
+ "FUNCTIONALITY",
+ SetupL, UT_StoreEncoderConfigInfoLL, Teardown)
+
+EUNIT_TEST(
+ "RemoteVideoPlayer - test ",
+ "CMusEngTwoWaySession",
+ "RemoteVideoPlayer",
+ "FUNCTIONALITY",
+ SetupL, UT_RemoteVideoPlayerL, Teardown)
+
+EUNIT_TEST(
+ "EnableLcFileL - test ",
+ "CMusEngTwoWaySession",
+ "EnableLcFileL",
+ "FUNCTIONALITY",
+ SetupL, UT_EnableLcFileL, Teardown)
+
+EUNIT_TEST(
+ "InactivityTimeout - test ",
+ "CMusEngTwoWaySession",
+ "InactivityTimeout",
+ "FUNCTIONALITY",
+ SetupL, UT_InactivityTimeoutL, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE
+
+
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenguriparser.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenguriparser.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -25,7 +25,7 @@
// SYSTEM INCLUDES
#include <digia/eunit/eunitmacros.h>
-
+#include <e32property.h>
// -----------------------------------------------------------------------------
@@ -101,7 +101,9 @@
//
void UT_TMusEngUriParser::Teardown()
{
-
+ MultimediaSharingSettings::SetOperatorVariantSettingL(
+ MusSettingsKeys::EStandard );
+ PropertyHelper::Close();
}
@@ -245,7 +247,7 @@
parser.iUri = KTestRecipientRandomText8();
TRAPD( error, parser.ParseUriL() );
MUS_TEST_FORWARD_ALLOC_FAILURE( error );
- EUNIT_ASSERT_EQUALS( error, KErrCorrupt );
+ EUNIT_ASSERT_EQUALS( error, KErrArgument );
// Unsuccessful case, tel prefix and at sign present
parser.iUri = KTestRecipientTelUriWithAtSign8();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_muspropertywatch.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,268 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// INTERNAL INCLUDES
+#include "ut_muspropertywatch.h"
+#include "muspropertywatch.h"
+
+#include "mussessionproperties.h"
+
+// SYSTEM INCLUDES
+#include <eunitmacros.h>
+#include <e32property.h>
+
+using namespace NMusSessionApi;
+
+const TInt KMusUiTestKey = 1100;
+const TInt KMusUiTestPropertyReadInteger = 200;
+_LIT( KMusUiTestPropertyReadDesc, "testread" );
+TUid KMusUiDummyUid = { 1000 }; // Unit testing dummy
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusPropertyWatch* UT_CMusPropertyWatch::NewL()
+ {
+ UT_CMusPropertyWatch* self = UT_CMusPropertyWatch::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusPropertyWatch* UT_CMusPropertyWatch::NewLC()
+ {
+ UT_CMusPropertyWatch* self = new( ELeave ) UT_CMusPropertyWatch();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusPropertyWatch::~UT_CMusPropertyWatch()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusPropertyWatch::UT_CMusPropertyWatch()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void UT_CMusPropertyWatch::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusPropertyWatch::SetupL()
+ {
+ PropertyHelper::SetErrorCode( KErrNone );
+ RProperty::Set( KMusUiDummyUid, KMusUiTestKey, KMusUiTestPropertyReadInteger );
+ iPropertyWatch = CMusPropertyWatch::NewL( iPropertyObserver,
+ KMusUiDummyUid,
+ KMusUiTestKey );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusPropertyWatch::Teardown()
+ {
+ delete iPropertyWatch;
+ PropertyHelper::Close();
+ }
+
+
+
+// TEST CASES
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusPropertyWatch::UT_CMusPropertyWatch_ReadIntPropertyLL()
+ {
+
+ // Teesting leave
+ PropertyHelper::SetErrorCode( KErrNotFound );
+ RProperty::Set( KMusUiDummyUid, KMusUiTestKey, KMusUiTestPropertyReadInteger );
+ TInt value;
+ TRAPD( err, value = CMusPropertyWatch::ReadIntPropertyL( KMusUiTestKey ) );
+ EUNIT_ASSERT( err == KErrNotFound );
+
+ // Testing return value
+ PropertyHelper::SetErrorCode( KErrNone );
+ RProperty::Set( KMusUiDummyUid, KMusUiTestKey, KMusUiTestPropertyReadInteger );
+ EUNIT_ASSERT( CMusPropertyWatch::ReadIntPropertyL( KMusUiTestKey ) ==
+ KMusUiTestPropertyReadInteger );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusPropertyWatch::UT_CMusPropertyWatch_ReadDescPropertyLL()
+ {
+ // Teesting leave
+ PropertyHelper::SetErrorCode( KErrNotFound );
+ TRAPD( err, CMusPropertyWatch::ReadDescPropertyL( KMusUiTestKey ) );
+ EUNIT_ASSERT( err == KErrNotFound );
+
+ // Testing return value
+ RProperty::Set( KMusUiDummyUid, KMusUiTestKey, KMusUiTestPropertyReadDesc );
+ PropertyHelper::SetErrorCode( KErrNone );
+ HBufC* result = CMusPropertyWatch::ReadDescPropertyL( KMusUiTestKey );
+ CleanupStack::PushL( result );
+ EUNIT_ASSERT( KMusUiTestPropertyReadDesc().Compare( result->Des() ) == 0 );
+ CleanupStack::PopAndDestroy( result );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusPropertyWatch::UT_CMusPropertyWatch_DoCancelL()
+ {
+ PropertyHelper::SetErrorCode( KErrNone );
+ iPropertyWatch->Cancel();
+ EUNIT_ASSERT( PropertyHelper::GetCalledFunction() == RProperty::ECancel );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusPropertyWatch::UT_CMusPropertyWatch_RunLL()
+ {
+
+ // Leave test
+ PropertyHelper::SetErrorCode( KErrNotFound );
+ iPropertyWatch->Cancel();
+ TRAPD( err, iPropertyWatch->RunL() );
+ EUNIT_ASSERT( err == KErrNotFound );
+
+
+ // SessionPropertyChanged
+ PropertyHelper::SetErrorCode( KErrNone );
+ iPropertyWatch->Cancel();
+ iPropertyWatch->RunL();
+ EUNIT_ASSERT( iPropertyObserver.iCalledFunction ==
+ TMusPropertyObserverStub::EPropertyChanged );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusPropertyWatch::UT_CMusPropertyWatch_RunErrorL()
+ {
+
+ // Allways returns KErrNone
+ PropertyHelper::SetErrorCode( KErrNone );
+ EUNIT_ASSERT( iPropertyWatch->RunError( KErrNotFound ) == KErrNone );
+
+ // is right observer called
+ PropertyHelper::SetErrorCode( KErrNone );
+ EUNIT_ASSERT( iPropertyObserver.iCalledFunction ==
+ TMusPropertyObserverStub::EHandlePropertyError );
+ }
+
+
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusPropertyWatch,
+ "UT_CMusPropertyWatch",
+ "UNIT" )
+
+EUNIT_TEST(
+ "ReadIntPropertyLL - test ",
+ "CMusPropertyWatch",
+ "ReadIntPropertyLL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusPropertyWatch_ReadIntPropertyLL, Teardown)
+
+EUNIT_TEST(
+ "ReadDescPropertyLL - test ",
+ "CMusPropertyWatch",
+ "ReadDescPropertyLL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusPropertyWatch_ReadDescPropertyLL, Teardown)
+
+EUNIT_TEST(
+ "DoCancelL - test ",
+ "CMusPropertyWatch",
+ "DoCancelL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusPropertyWatch_DoCancelL, Teardown)
+
+EUNIT_TEST(
+ "RunLL - test ",
+ "CMusPropertyWatch",
+ "RunLL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusPropertyWatch_RunLL, Teardown)
+
+EUNIT_TEST(
+ "RunErrorL - test ",
+ "CMusPropertyWatch",
+ "RunErrorL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusPropertyWatch_RunErrorL, Teardown)
+
+
+EUNIT_END_TEST_TABLE
+
+
+// END OF FILE
+
+
--- a/mmsharing/mmshindicator/bwins/musindicatoru.def Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/bwins/musindicatoru.def Tue Aug 31 15:12:07 2010 +0300
@@ -1,6 +1,7 @@
EXPORTS
- ?NewL@CMusIndicatorApi@@SAPAV1@AAVMMusIndicatorObserver@@@Z @ 1 NONAME ; class CMusIndicatorApi * CMusIndicatorApi::NewL(class MMusIndicatorObserver &)
- ?NewL@CMusIndicatorApi@@SAPAV1@XZ @ 2 NONAME ; class CMusIndicatorApi * CMusIndicatorApi::NewL(void)
- ?NewLC@CMusIndicatorApi@@SAPAV1@AAVMMusIndicatorObserver@@@Z @ 3 NONAME ; class CMusIndicatorApi * CMusIndicatorApi::NewLC(class MMusIndicatorObserver &)
- ?IndicateAvailabilityL@CMusIndicatorApi@@QAEXXZ @ 4 NONAME ; void CMusIndicatorApi::IndicateAvailabilityL(void)
+ ?ConfirmationQueryL@CMusIndicatorApi@@SAHW4TVsPopupQuery@1@@Z @ 1 NONAME ; int CMusIndicatorApi::ConfirmationQueryL(enum CMusIndicatorApi::TVsPopupQuery)
+ ?IndicateAvailabilityL@CMusIndicatorApi@@QAEXXZ @ 2 NONAME ; void CMusIndicatorApi::IndicateAvailabilityL(void)
+ ?NewL@CMusIndicatorApi@@SAPAV1@AAVMMusIndicatorObserver@@@Z @ 3 NONAME ; class CMusIndicatorApi * CMusIndicatorApi::NewL(class MMusIndicatorObserver &)
+ ?NewLC@CMusIndicatorApi@@SAPAV1@AAVMMusIndicatorObserver@@@Z @ 4 NONAME ; class CMusIndicatorApi * CMusIndicatorApi::NewLC(class MMusIndicatorObserver &)
+ ?NewL@CMusIndicatorApi@@SAPAV1@XZ @ 5 NONAME ; class CMusIndicatorApi * CMusIndicatorApi::NewL(void)
--- a/mmsharing/mmshindicator/eabi/musindicatoru.def Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/eabi/musindicatoru.def Tue Aug 31 15:12:07 2010 +0300
@@ -1,10 +1,13 @@
EXPORTS
- _ZN16CMusIndicatorApi21IndicateAvailabilityLEv @ 1 NONAME
- _ZN16CMusIndicatorApi4NewLER21MMusIndicatorObserver @ 2 NONAME
- _ZN16CMusIndicatorApi4NewLEv @ 3 NONAME
+ _ZN16CMusIndicatorApi18ConfirmationQueryLENS_13TVsPopupQueryE @ 1 NONAME
+ _ZN16CMusIndicatorApi21IndicateAvailabilityLEv @ 2 NONAME
+ _ZN16CMusIndicatorApi4NewLER21MMusIndicatorObserver @ 3 NONAME
_ZN16CMusIndicatorApi5NewLCER21MMusIndicatorObserver @ 4 NONAME
- _ZTI15CMusSoundPlayer @ 5 NONAME
- _ZTI16CMusIndicatorApi @ 6 NONAME
- _ZTV15CMusSoundPlayer @ 7 NONAME
- _ZTV16CMusIndicatorApi @ 8 NONAME
+ _ZTI15CMusSoundPlayer @ 5 NONAME ; #<TI>#
+ _ZTI16CMusIndicatorApi @ 6 NONAME ; #<TI>#
+ _ZTI16CMusIndicatorDsa @ 7 NONAME ; #<TI>#
+ _ZTV15CMusSoundPlayer @ 8 NONAME ; #<VT>#
+ _ZTV16CMusIndicatorApi @ 9 NONAME ; #<VT>#
+ _ZTV16CMusIndicatorDsa @ 10 NONAME ; #<VT>#
+ _ZN16CMusIndicatorApi4NewLEv @ 11 NONAME
--- a/mmsharing/mmshindicator/group/musindicator.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/group/musindicator.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -38,6 +38,7 @@
SOURCEPATH ../src
SOURCE musindicatorapi.cpp
SOURCE mussoundplayer.cpp
+SOURCE musindicatordsa.cpp
SOURCE musresourceutil.cpp
USERINCLUDE ../inc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshindicator/inc/musindicatordsa.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,186 @@
+/*
+* 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: Draws availability indication to screen using direct screen
+* access.
+*
+*/
+
+
+
+#ifndef C_MUSINDICATORDSA_H
+#define C_MUSINDICATORDSA_H
+
+
+#include "musunittesting.h"
+#include <e32base.h>
+#include <w32std.h>
+#include <coecntrl.h>
+
+const TInt KMusIndicatorDelay = 400000;
+const TInt KMusRedrawDelay = 25000;
+
+/**
+ * CMusIndicatorDsa provides multimedia sharing ready indicator "box"
+ * indcating videosharing availability to user.
+ *
+ * @code
+ * // Activates indication
+ * CMusIndicatorDsa* dsa = CMusIndicatorDsa::NewL();
+ *
+ * // Deactivates indication
+ * delete dsa;
+ *
+ * @endcode
+ *
+ * @lib musindicator.lib
+ */
+class CMusIndicatorDsa : public CCoeControl
+ {
+public:
+
+ MUS_UNITTEST( UT_CMusIndicatorDsa )
+
+ static CMusIndicatorDsa* NewL();
+
+ /**
+ * Destructor.
+ */
+ ~CMusIndicatorDsa();
+
+
+public: //from CCoeControl
+
+
+ /**
+ * Draws video sharing ready box and text
+ */
+ void Draw( const TRect& aRect ) const;
+
+ /**
+ * Hanldes resource change i.e layout change
+ *
+ */
+ void HandleResourceChange( TInt aType);
+
+private:
+
+ /**
+ * Initializes
+ */
+ void Initialize();
+
+ /**
+ * Loads image.
+ */
+ void LoadImageL();
+
+ /**
+ * Loads resource string.
+ */
+ void LoadResourceStringL();
+
+
+private:
+
+ CMusIndicatorDsa();
+
+ void ConstructL();
+
+ const CFont& Font() const;
+
+ void TryActivateL();
+
+
+ /**
+ * Callback function to periodic timer.
+ *
+ * @param instanse of this.
+ * @return TInt value indicating if function completed succesfully
+ */
+ static TInt TryActivate( TAny* aThis );
+
+ /**
+ * Callback function to periodic timer.
+ *
+ * @param instanse of this.
+ * @return TInt value indicating if function completed succesfully
+ */
+ static TInt DoHandleResourceChange( TAny* aThis );
+
+ void StartPeriodicTimer( const TCallBack& aCallBack) const;
+
+ /**
+ * Stops peridoic timer.
+ */
+ void StopPeriodicTimer();
+
+
+private: // data
+
+
+ /**
+ * Periodic timer.
+ * Own.
+ */
+ CPeriodic* iPeriodic;
+
+ /**
+ * Used screen rectangle.
+ */
+ TRect iScreenRect;
+
+ /**
+ * Used client area size
+ */
+ TSize iScreenSize;
+
+ /**
+ * Calculated position of left-top point of text.
+ */
+ TPoint iTextpos;
+
+ /**
+ * Color of DSA boxes border.
+ */
+ TRgb iBorderColor;
+
+ /**
+ * DSA boxes background color.
+ */
+ TRgb iBorderBgColor;
+
+ /**
+ * Color of used font.
+ */
+ TRgb iFontColor;
+
+ /**
+ * Displayed text.
+ * Own.
+ */
+ HBufC* iText;
+
+ CFbsBitmap* iIcon;
+ CFbsBitmap* iIconMask;
+
+ TSize iImageSize;
+ TPoint iImagepos;
+
+ TCallBack iActivateCallBack;
+ TCallBack iRedrawCallBack;
+
+
+ };
+
+#endif // C_MUSINDICATORDSA_H
--- a/mmsharing/mmshindicator/src/musindicatorapi.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/src/musindicatorapi.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -21,20 +21,25 @@
#include "musindicatorapi.h"
#include "musresourcefinderutil.h"
#include "muslogger.h"
+#include "musindicatordsa.h"
#include "mussettings.h"
#include "mussettingskeys.h"
#include "mussoundplayer.h"
#include "musresourceutil.h"
#include <musindicator.rsg>
+#include <AknGlobalConfirmationQuery.h>
+#include <AknGlobalMsgQuery.h>
#include <coreapplicationuisdomainpskeys.h>
+const TInt KMusLiveSharingQueryTimeout = 5000000;
+
+
// ======== MEMBER FUNCTIONS ========
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
+using namespace MusSettingsKeys;
+
+
EXPORT_C CMusIndicatorApi* CMusIndicatorApi::NewL( MMusIndicatorObserver& aObserver )
{
CMusIndicatorApi* self = CMusIndicatorApi::NewLC( aObserver );
@@ -43,10 +48,6 @@
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
EXPORT_C CMusIndicatorApi* CMusIndicatorApi::NewLC( MMusIndicatorObserver& aObserver )
{
CMusIndicatorApi* self = new (ELeave) CMusIndicatorApi( &aObserver );
@@ -55,11 +56,6 @@
return self;
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
EXPORT_C CMusIndicatorApi* CMusIndicatorApi::NewL()
{
CMusIndicatorApi* self = new (ELeave) CMusIndicatorApi( NULL );
@@ -70,19 +66,19 @@
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
CMusIndicatorApi::~CMusIndicatorApi()
{
MUS_LOG( "mus: [MUSIND ] -> MusIndicatorApi::~CMusIndicatorApi" );
Cancel();
+ delete iQuery;
+ delete iIndicatorWindow;
delete iSoundPlayer;
-
- Indicator( EFalse );
-
+ delete iLiveSharingQueryTimeout;
+ if ( !IsSubscriber() )
+ {
+ Indicator( EFalse );
+ }
iProperty.Close();
@@ -90,21 +86,58 @@
}
-// -----------------------------------------------------------------------------
+TBool CMusIndicatorApi::IsSubscriber() const
+ {
+ return !iObserver;
+ }
+
+
+
+// ---------------------------------------------------------------------------
+// Provides a confirmation query to user and returns true if user selected
+// "yes".
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CMusIndicatorApi::ConfirmationQueryL( TVsPopupQuery aQuery )
+ {
+ MUS_LOG( "mus: [MUSIND ] -> MusIndicatorApi::ConfirmationQueryL" );
+
+ CAknGlobalConfirmationQuery* dlg = CAknGlobalConfirmationQuery::NewLC();
+ TRequestStatus status( KRequestPending );
+ HBufC* prompt = NoteTextLC( aQuery );
+ dlg->ShowConfirmationQueryL( status, *prompt, R_AVKON_SOFTKEYS_YES_NO );
+ User::WaitForRequest( status );
+ CleanupStack::PopAndDestroy( prompt );
+ CleanupStack::PopAndDestroy( dlg );
+ MUS_LOG( "mus: [MUSIND ] <- MusIndicatorApi::ConfirmationQueryL" );
+ return status == EAknSoftkeyYes;
+ }
+
+// ---------------------------------------------------------------------------
// Indicates VS availability to user.
-// In operator specific variant this can include DSA note and an audio tone
-// played with CMdaAudioPlayerUtility.
-// -----------------------------------------------------------------------------
+// In operator specific variant this can include a popup-note, DSA note and
+// an audio tone played with CMdaAudioPlayerUtility.
+// ---------------------------------------------------------------------------
//
EXPORT_C void CMusIndicatorApi::IndicateAvailabilityL()
{
MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::IndicateAvailabilityL" )
+ __ASSERT_ALWAYS( !IsSubscriber(), User::Leave( KErrArgument ) );
+
Indicator( ETrue );
+ if( MultimediaSharingSettings::PopupNotificationSettingL() ==
+ EPopupNotificationOn )
+ {
+ // Show dialog
+ MUS_LOG( "mus: [MUSIND] CMusIndicatorApi::IndicateAvailabilityL - Show popup" )
+ ShowLiveSharingQueryL( EFalse );
+ }
+
if( MultimediaSharingSettings::AuditoryNotificationSettingL() ==
- MusSettingsKeys::EAuditoryNotificationOn )
+ EAuditoryNotificationOn )
{
- MUS_LOG( "mus: [MUSIND] Play tone" )
+ MUS_LOG( "mus: [MUSIND] CMusIndicatorApi::IndicateAvailabilityL - Play tone" )
PlayToneL();
}
@@ -112,31 +145,46 @@
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// From CActive.
// Handles completion of an outstanding asynchronous request.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusIndicatorApi::RunL()
{
MUS_LOG( "mus: [MUSIND] <- CMusIndicatorApi::RunL" )
-
- MUS_LOG( "mus: [MUSIND ] : publisher" )
- StartLiveSharingL();
-
+ if ( !IsSubscriber() )
+ {
+ MUS_LOG( "mus: [MUSIND ] : publisher" )
+ StartLiveSharingL();
+ }
+ else
+ {
+ MUS_LOG( "mus: [MUSIND ] : subscriber" )
+ ToggleIndicatorL();
+ }
MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::RunL" )
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusIndicatorApi::StartLiveSharingL()
{
MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::StartLiveSharingL" )
+ delete iQuery;
+ iQuery = NULL;
+
+ if( iLiveSharingQueryTimeout )
+ {
+ iLiveSharingQueryTimeout->Cancel();
+ }
+ delete iLiveSharingQueryTimeout;
+ iLiveSharingQueryTimeout = NULL;
if( iStatus.Int() != KErrNotFound ) // eq. Cancel -button
{
@@ -150,24 +198,80 @@
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CMusIndicatorApi::ToggleIndicatorL()
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::ToggleIndicatorL" )
+ TInt val;
+
+
+
+ User::LeaveIfError( RProperty::Get( KPSUidCoreApplicationUIs,
+ KCoreAppUIsVideoSharingIndicator,
+ val ) );
+ iProperty.Subscribe( iStatus );
+ SetActive();
+
+ TBool on = ( val == ECoreAppUIsVideoSharingIndicatorOn );
+
+ if ( on && !iIndicatorWindow
+ && MultimediaSharingSettings::OperatorVariantSettingL() ==
+ EOperatorSpecific )
+ {
+ iIndicatorWindow = CMusIndicatorDsa::NewL();
+ }
+ else if ( !on )
+ {
+ delete iIndicatorWindow;
+ iIndicatorWindow = NULL;
+ }
+ else
+ {
+ //NOP
+ }
+
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorApi::ToggleIndicatorL" )
+ }
+
+
+// ---------------------------------------------------------------------------
// From CActive.
// Cancels an outstanding asynchronous request.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusIndicatorApi::DoCancel()
{
MUS_LOG( "mus: [MUSIND] <- CMusIndicatorApi::DoCancel" )
+
+ if( iLiveSharingQueryTimeout )
+ {
+ iLiveSharingQueryTimeout->Cancel();
+ }
+ delete iLiveSharingQueryTimeout;
+ iLiveSharingQueryTimeout = NULL;
+
+ if ( iQuery )
+ {
+ iQuery->CancelMsgQuery();
+ }
+ delete iQuery;
+ iQuery = NULL;
-
+ if ( IsSubscriber() )
+ {
+ iProperty.Cancel();
+ }
MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::DoCancel" )
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// From CActive.
// Handles a leave occurring in the request completion event handler RunL.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
#ifdef _DEBUG
TInt CMusIndicatorApi::RunError( TInt aError )
@@ -219,10 +323,21 @@
{
MUS_LOG( "mus: [MUSIND ] -> MusIndicatorApi::ConstructL" )
-
- MUS_LOG( "mus: [MUSIND ] : publisher (called by manager)" )
- CActiveScheduler::Add( this );
+ if ( IsSubscriber() )
+ {
+ MUS_LOG( "mus: [MUSIND ] : subscriber (called by aiwprovider)" )
+ User::LeaveIfError( iProperty.Attach( KPSUidCoreApplicationUIs,
+ KCoreAppUIsVideoSharingIndicator ) );
+ CActiveScheduler::Add( this );
+ iProperty.Subscribe( iStatus );
+ SetActive();
+ }
+ else
+ {
+ MUS_LOG( "mus: [MUSIND ] : publisher (called by manager)" )
+ CActiveScheduler::Add( this );
+ }
MUS_LOG( "mus: [MUSIND ] <- MusIndicatorApi::ConstructL" )
}
@@ -274,3 +389,107 @@
}
+// ---------------------------------------------------------------------------
+// Returns text associated with specified dialog.
+// ---------------------------------------------------------------------------
+//
+HBufC* CMusIndicatorApi::NoteTextLC( TVsPopupQuery aQuery )
+ {
+ MUS_LOG1( "mus: [MUSIND] -> MusIndicatorApi::NoteTextLC( %d )", aQuery )
+
+ HBufC* dlgPrompt( NULL );
+
+ switch ( aQuery )
+ {
+ case EVsRoamingActivationQuery:
+ {
+ dlgPrompt = MusResourceUtil::ReadResourceString16LC(
+ R_MUSINDICATOR_MANUAL_ACTIVATION_TXT,
+ KMusIndicatorResource );
+ break;
+ }
+
+ default:
+ {
+ MUS_LOG( "mus: [MUSIND] MusIndicatorApi::NoteTextLC, UNKNOWN" )
+ User::Leave( KErrNotFound );
+ }
+ }
+ // now pop and destroy the resource reader
+
+ MUS_LOG( "mus: [MUSIND] <- MusIndicatorApi::NoteTextLC" )
+
+ return dlgPrompt;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Reads resource string
+// -----------------------------------------------------------------------------
+//
+void CMusIndicatorApi::ShowLiveSharingQueryL( TBool aPlayTone )
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::ShowLiveSharingQuery" )
+ Cancel();
+
+ delete iQuery;
+ iQuery = NULL;
+
+ HBufC* dlgPrompt = MusResourceUtil::ReadResourceString16LC(
+ R_MUSINDICATOR_NOTE_CAPABILITY_TXT,
+ KMusIndicatorResource );
+
+ HBufC* dlgHeader = MusResourceUtil::ReadResourceString16LC(
+ R_MUSINDICATOR_NOTE_VSREADY_TXT,
+ KMusIndicatorResource );
+
+ iQuery = CAknGlobalMsgQuery::NewL();
+ TRAPD( error,
+ iQuery->ShowMsgQueryL(
+ iStatus,
+ *dlgPrompt,
+ R_AVKON_SOFTKEYS_OK_CANCEL,
+ *dlgHeader,
+ KNullDesC,
+ 0, // default image id
+ -1, // default image mask id
+ ( aPlayTone ?
+ CAknQueryDialog::EConfirmationTone :
+ CAknQueryDialog::ENoTone ) ) );
+
+ CleanupStack::PopAndDestroy( dlgHeader );
+ CleanupStack::PopAndDestroy( dlgPrompt );
+
+ if ( !error )
+ {
+ SetActive();
+
+ delete iLiveSharingQueryTimeout;
+ iLiveSharingQueryTimeout = NULL;
+ iLiveSharingQueryTimeout =
+ CPeriodic::NewL( CActive::EPriorityStandard );
+
+ iLiveSharingQueryTimeout->Start(
+ KMusLiveSharingQueryTimeout,
+ KMusLiveSharingQueryTimeout,
+ TCallBack( LiveSharingQueryTimeout, this ) );
+
+ }
+ else
+ {
+ delete iQuery;
+ iQuery = NULL;
+ }
+
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorApi::ShowLiveSharingQuery" )
+ }
+
+
+
+TInt CMusIndicatorApi::LiveSharingQueryTimeout( TAny* aThis )
+ {
+ static_cast< CMusIndicatorApi* >( aThis )->Cancel();
+ return KErrNone;
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshindicator/src/musindicatordsa.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,467 @@
+/*
+* 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: MusIndicatorApi provides means to show notes and indicate
+* availability of videosharing to user.
+*
+*/
+
+
+#include "musindicatordsa.h"
+#include "muslogger.h"
+#include "musresourceutil.h"
+#include "musresourcefinderutil.h"
+#include <e32cmn.h>
+#include <e32std.h>
+#include <musindicator.rsg>
+#include <eikenv.h>
+#include <coefontprovider.h>
+#include <AknsDrawUtils.h>
+#include <eikappui.h>
+#include <musindicatoricons.mbg>
+#include <AknUtils.h>
+
+// constants
+// Size and positions
+
+const TInt KMusIndicatorWindowHeight = 50;
+const TInt KMusIndicatorWindowShrink = 2;
+const TInt KMusSpaceBetweenImageAndText = 5;
+
+// appereance
+const TInt KMusIndicatorBorderRoundedCorners = 6;
+const TInt KMusIndicatorBorderSize = 1;
+//const TInt KMusIndicatorFontPenSize = 1;
+
+
+
+
+CMusIndicatorDsa* CMusIndicatorDsa::NewL()
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::NewL" )
+ CMusIndicatorDsa* self = new (ELeave) CMusIndicatorDsa();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::NewL" )
+ return self;
+ }
+
+
+CMusIndicatorDsa::CMusIndicatorDsa()
+ : iActivateCallBack( CMusIndicatorDsa::TryActivate, this ),
+ iRedrawCallBack( CMusIndicatorDsa::DoHandleResourceChange, this )
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::CMusIndicatorDsa" )
+
+ iBorderColor = KRgbBlack;
+ iBorderBgColor = KRgbWhite;
+ iFontColor = KRgbBlack;
+
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::CMusIndicatorDsa" )
+ }
+
+
+CMusIndicatorDsa::~CMusIndicatorDsa()
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::~CMusIndicatorDsa" )
+
+ StopPeriodicTimer();
+ delete iPeriodic;
+
+ delete iIcon;
+ delete iIconMask;
+
+ delete iText;
+
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::~CMusIndicatorDsa" )
+ }
+
+
+const CFont& CMusIndicatorDsa::Font() const
+ {
+ TCoeFont coeFont = TCoeFont::NormalFont();
+ TZoomFactor zoomFactor = AccumulatedZoom();
+ return FindFontProvider().Font(coeFont, zoomFactor);
+ }
+
+//------------------------------------------------------------------------------
+//
+//------------------------------------------------------------------------------
+//
+void CMusIndicatorDsa::ConstructL()
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::ConstructL" )
+
+ iPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
+
+ LoadResourceStringL();
+ LoadImageL();
+ CreateWindowL();
+
+ Initialize();
+ TryActivateL();
+
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::ConstructL" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusIndicatorDsa::TryActivateL()
+ {
+ MAknsControlContext* cc =
+ AknsDrawUtils::ControlContext( ControlEnv()->AppUi()->TopFocusedControl() );
+
+ if ( cc )
+ {
+ StopPeriodicTimer();
+ ActivateL();
+ }
+ else
+ {
+ StartPeriodicTimer( iActivateCallBack );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// Called by framework to redraw the screen area.
+// -----------------------------------------------------------------------------
+//
+void CMusIndicatorDsa::Draw( const TRect& aRect ) const
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::Draw" )
+ MUS_LOG2( "mus: [MUSIND] : x=%d,y=%d", aRect.iTl.iX, aRect.iTl.iY )
+ MUS_LOG2( "mus: [MUSIND] : x=%d,y=%d", aRect.iBr.iX, aRect.iBr.iY )
+
+ CWindowGc& gc = SystemGc();
+
+ TSize screenSizeNow = ControlEnv()->ScreenDevice()->SizeInPixels();
+
+ if ( screenSizeNow != iScreenSize )
+ {
+ StartPeriodicTimer( iRedrawCallBack );
+ }
+
+ MAknsControlContext* cc =
+ AknsDrawUtils::ControlContext( ControlEnv()->AppUi()->TopFocusedControl() );
+ MUS_LOG1( "mus: [MUSIND] : cc = %d", cc )
+
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ MUS_LOG1( "mus: [MUSIND] : skin = %d", skin )
+
+ TRgb fontColor;
+ AknsUtils::GetCachedColor( skin, fontColor,
+ KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
+ TRgb borderColor = fontColor;
+
+ TBool backgroundWithBitmap =
+ ( skin && !cc ) ?
+ EFalse :
+ AknsDrawUtils::Background( skin, cc,this,gc,aRect,KAknsDrawParamDefault );
+
+ if( !backgroundWithBitmap )
+ {
+ MUS_LOG( "mus: [MUSIND] : Clearing rect with null brush")
+ gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+ gc.Clear( aRect );
+ }
+ else
+ {
+ MUS_LOG( "mus: [MUSIND] : rect was cleared with bitmap")
+ }
+
+ gc.UseFont( &Font() );
+
+ // Border initialization
+ gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+
+ // Draw border
+ MUS_LOG( "mus: [MUSIND] : Draw border")
+ gc.SetPenStyle( CGraphicsContext::ESolidPen );
+ gc.SetPenColor( borderColor );
+ gc.SetPenSize(
+ TSize( KMusIndicatorBorderSize, KMusIndicatorBorderSize ) );
+ gc.DrawRoundRect( iScreenRect,
+ TSize( KMusIndicatorBorderRoundedCorners,
+ KMusIndicatorBorderRoundedCorners ) );
+
+ /*
+ // Draw smaller border with other color
+ MUS_LOG( "mus: [MUSIND] : Draw smaller border with other color")
+ gc.SetPenColor( iBorderBgColor );
+ TRect smallerRect = iScreenRect;
+ smallerRect.Shrink( KMusIndicatorBorderSize, KMusIndicatorBorderSize );
+ gc.DrawRoundRect( smallerRect,
+ TSize( KMusIndicatorBorderRoundedCorners,
+ KMusIndicatorBorderRoundedCorners ) );
+
+ // Font outline initialization
+
+ MUS_LOG( "mus: [MUSIND] : Draw text outlines")
+ gc.SetPenColor( iBorderBgColor );
+ gc.SetPenSize( TSize( KMusIndicatorFontPenSize, KMusIndicatorFontPenSize ) );
+
+ // Draw text outlines
+ TPoint outlineTextPos = iTextpos;
+ outlineTextPos -= TPoint( 1, 1 );
+ gc.DrawText( *iText, outlineTextPos );
+ */
+
+ // Font initialization
+ gc.SetPenColor( fontColor );
+
+ // Draw text
+ MUS_LOG( "mus: [MUSIND] : Draw text")
+ gc.DrawText( *iText, iTextpos );
+
+ gc.BitBltMasked( iImagepos,
+ iIcon,
+ TRect( 0, 0, iImageSize.iWidth, iImageSize.iHeight ),
+ iIconMask,
+ EFalse );
+
+
+
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::Draw" )
+ }
+
+
+//------------------------------------------------------------------------------
+//
+//------------------------------------------------------------------------------
+//
+void CMusIndicatorDsa::HandleResourceChange( TInt aType )
+ {
+
+ if ( aType == KEikDynamicLayoutVariantSwitch )
+ {
+ Initialize();
+ DrawDeferred();
+ }
+
+ StopPeriodicTimer();
+
+ }
+
+
+
+//------------------------------------------------------------------------------
+// Calculates topleft position of drawn text.
+//------------------------------------------------------------------------------
+//
+void CMusIndicatorDsa::Initialize()
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::Initialize" )
+
+ TRect clientRect = CEikonEnv::Static()->EikAppUi()->ClientRect();
+ MUS_LOG2( "mus: [MUSIND] clientrect : x=%d,y=%d", clientRect.iTl.iX, clientRect.iTl.iY )
+ MUS_LOG2( "mus: [MUSIND] clientrect : x=%d,y=%d", clientRect.iBr.iX, clientRect.iBr.iY )
+
+ iScreenSize = ControlEnv()->ScreenDevice()->SizeInPixels();
+
+ //test (indicator goes inside options menu area)
+ //clientRect.iTl.iY = 150;
+
+ SetPosition( clientRect.iTl );
+ SetSize(
+ TSize( iScreenSize.iWidth, KMusIndicatorWindowHeight ) );
+
+ iScreenRect = TRect(
+ TPoint( 0, 0 ),
+ TSize( iScreenSize.iWidth, KMusIndicatorWindowHeight ) );
+ iScreenRect.Shrink( KMusIndicatorWindowShrink, KMusIndicatorWindowShrink );
+
+
+ TInt imagePlusTextWidth = Font().TextWidthInPixels( *iText ) +
+ iImageSize.iWidth + KMusSpaceBetweenImageAndText;
+
+ iImagepos.iX = ( iScreenRect.Width() - imagePlusTextWidth ) >> 1;
+ iImagepos.iY = ( iScreenRect.Height() - iImageSize.iHeight ) >> 1;
+
+ // Text position
+ iTextpos.iX = iImagepos.iX + iImageSize.iWidth + KMusSpaceBetweenImageAndText;
+
+ iTextpos.iY = ( iScreenRect.Height() >> 1 ) +
+ ( Font().HeightInPixels() >> 1 ) +
+ iScreenRect.iTl.iY;
+
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::Initialize" )
+ }
+
+
+
+//------------------------------------------------------------------------------
+// Loads displayed image.
+//------------------------------------------------------------------------------
+//
+void CMusIndicatorDsa::LoadImageL()
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::LoadImageL" )
+
+ if ( iIcon || iIconMask )
+ {
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::LoadImageL" )
+ return;
+ }
+
+ _LIT( KMyBitmapRomFile, "Z:\\resource\\apps\\musindicatoricons.mbm" );
+ _LIT( KMyBitmapRamFile, "C:\\resource\\apps\\musindicatoricons.mbm" );
+
+ TFileName imageFileName;
+ if ( MusResourceFinderUtil::IsExistL( KMyBitmapRomFile ) )
+ {
+ imageFileName = KMyBitmapRomFile;
+ }
+ else if ( MusResourceFinderUtil::IsExistL( KMyBitmapRamFile ) )
+ {
+ imageFileName = KMyBitmapRamFile;
+ }
+ else
+ {
+ MUS_LOG( "mus: [MUSIND] Icon File Not Found!" );
+ User::Leave( KErrNotFound );
+ }
+
+ iIcon = new ( ELeave ) CFbsBitmap();
+ iIconMask = new ( ELeave ) CFbsBitmap();
+
+ // Enumerations of mbg file are usable only when vector images
+ // in mif file are used. Those cannot be loaded without UI components.
+ const TInt KMusIndicatorIconIndex = 0;
+ const TInt KMusIndicatorIconMaskIndex = 1;
+ User::LeaveIfError(
+ iIcon->Load( imageFileName, KMusIndicatorIconIndex ) );
+ User::LeaveIfError(
+ iIconMask->Load( imageFileName, KMusIndicatorIconMaskIndex ) );
+
+ iImageSize = iIcon->SizeInPixels();
+
+ // Crop icon if it is too big
+ if ( iImageSize.iHeight > KMusIndicatorWindowHeight )
+ {
+ TInt newHeight = KMusIndicatorWindowHeight >> 1;
+ TInt newWidth =
+ TReal( iImageSize.iHeight / iImageSize.iWidth ) * newHeight;
+ iIcon->Resize( TSize( newHeight, newWidth ) );
+ iIconMask->Resize( TSize( newHeight, newWidth ) );
+ }
+
+
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::LoadImageL" )
+ }
+
+
+//------------------------------------------------------------------------------
+//
+//------------------------------------------------------------------------------
+//
+void CMusIndicatorDsa::LoadResourceStringL()
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::LoadResourceStringL" )
+ delete iText;
+ iText = NULL;
+ iText = MusResourceUtil::ReadResourceString16L(
+ R_MUSINDICATOR_NOTE_VSREADY_TXT,
+ KMusIndicatorResource );
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::LoadResourceStringL" )
+ }
+
+//------------------------------------------------------------------------------
+// Periodic timer completion
+//------------------------------------------------------------------------------
+//
+TInt CMusIndicatorDsa::TryActivate( TAny* aThis )
+ {
+ if ( !aThis )
+ {
+ return KErrArgument;
+ }
+
+ CMusIndicatorDsa* handle = static_cast< CMusIndicatorDsa* > ( aThis );
+
+ TInt error = KErrNone;
+ TRAP( error, handle->TryActivateL() );
+
+ return error;
+ }
+
+
+//------------------------------------------------------------------------------
+// Periodic timer completion
+//------------------------------------------------------------------------------
+//
+TInt CMusIndicatorDsa::DoHandleResourceChange( TAny* aThis )
+ {
+
+ if ( !aThis )
+ {
+ return KErrArgument;
+ }
+
+ CMusIndicatorDsa* handle = static_cast< CMusIndicatorDsa* > ( aThis );
+
+ handle->HandleResourceChange( KEikDynamicLayoutVariantSwitch );
+
+ return KErrNone;
+
+ }
+
+
+
+//------------------------------------------------------------------------------
+//
+//------------------------------------------------------------------------------
+//
+void CMusIndicatorDsa::StartPeriodicTimer( const TCallBack& aCallBack) const
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::StartPeriodicTimer" )
+
+ if ( iPeriodic->IsActive() )
+ {
+ return;
+ }
+
+ TTimeIntervalMicroSeconds32 delay =
+ aCallBack.iFunction == CMusIndicatorDsa::TryActivate ?
+ KMusIndicatorDelay : KMusRedrawDelay;
+
+ iPeriodic->Start( delay, delay, aCallBack );
+
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::StartPeriodicTimer" )
+ }
+
+
+//------------------------------------------------------------------------------
+//
+//------------------------------------------------------------------------------
+//
+void CMusIndicatorDsa::StopPeriodicTimer()
+ {
+ MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::StopPeriodicTimer" )
+ if( iPeriodic )
+ {
+ iPeriodic->Cancel();
+ }
+ MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::StopPeriodicTimer" )
+ }
+
+
+
+
+
+// End of file
+
--- a/mmsharing/mmshindicator/tsrc/IndicatorTestApp/group/IndicatorTestApp.rss Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/IndicatorTestApp/group/IndicatorTestApp.rss Tue Aug 31 15:12:07 2010 +0300
@@ -92,6 +92,9 @@
MENU_ITEM {command = EIndicatorTestAppAudiotoryNotification; txt = "Set play sound";},
MENU_ITEM {command = EIndicatorTestAppNoAudiotoryNotification; txt = "Set no sound";},
+ MENU_ITEM {command = EIndicatorTestAppPopUpNotification; txt = "Set pop-up notification";},
+ MENU_ITEM {command = EIndicatorTestAppNoPopUpNotification; txt = "Set no pop-up notification";},
+
MENU_ITEM {command = EIndicatorTestAppIconNotification; txt = "Set icon notification";},
MENU_ITEM {command = EIndicatorTestAppNoIconNotification; txt = "Set no icon notification";},
--- a/mmsharing/mmshindicator/tsrc/IndicatorTestApp/inc/IndicatorTestApp.hrh Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/IndicatorTestApp/inc/IndicatorTestApp.hrh Tue Aug 31 15:12:07 2010 +0300
@@ -27,6 +27,8 @@
EIndicatorTestAppSharingNotAvailable,
EIndicatorTestAppAudiotoryNotification,
EIndicatorTestAppNoAudiotoryNotification,
+ EIndicatorTestAppPopUpNotification,
+ EIndicatorTestAppNoPopUpNotification,
EIndicatorTestAppIconNotification,
EIndicatorTestAppNoIconNotification
--- a/mmsharing/mmshindicator/tsrc/IndicatorTestApp/src/IndicatorTestAppAppui.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/IndicatorTestApp/src/IndicatorTestAppAppui.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -79,10 +79,13 @@
case EIndicatorTestAppSharingAvailable:
{
+
+ MultimediaSharingSettings::SetPopupNotificationSettingL( EPopupNotificationOn );
break;
}
case EIndicatorTestAppSharingNotAvailable:
{
+ MultimediaSharingSettings::SetPopupNotificationSettingL( EPopupNotificationOff );
break;
}
default:
@@ -106,7 +109,15 @@
void CIndicatorTestAppAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
{
if( aResourceId == R_INDICATORTESTAPP_MENU )
- {
+ {
+ if( MultimediaSharingSettings::PopupNotificationSettingL() == EPopupNotificationOn )
+ {
+ aMenuPane->DeleteMenuItem( EIndicatorTestAppNoPopUpNotification );
+ }
+ else
+ {
+ aMenuPane->DeleteMenuItem( EIndicatorTestAppPopUpNotification );
+ }
if( MultimediaSharingSettings::AuditoryNotificationSettingL() == EAuditoryNotificationOn )
{
aMenuPane->DeleteMenuItem( EIndicatorTestAppNoAudiotoryNotification );
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/BWINS/ut_musindicatoru.def Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/BWINS/ut_musindicatoru.def Tue Aug 31 15:12:07 2010 +0300
@@ -1,2 +1,37 @@
EXPORTS
- ?CreateTestSuiteL@@YAPAVMEUnitTest@@XZ @ 1 NONAME ; class MEUnitTest * CreateTestSuiteL(void)
+ ?CreateTestSuiteL@@YAPAVMEUnitTest@@XZ @ 1 NONAME ; class MEUnitTest * CreateTestSuiteL(void)
+ ?NewL@CAknGlobalMsgQuery@@SAPAV1@XZ @ 2 NONAME ; class CAknGlobalMsgQuery * CAknGlobalMsgQuery::NewL(void)
+ ?NewL@CAknGlobalConfirmationQuery@@SAPAV1@XZ @ 3 NONAME ; class CAknGlobalConfirmationQuery * CAknGlobalConfirmationQuery::NewL(void)
+ ?NewLC@CMusIndicatorApi@@SAPAV1@AAVMMusIndicatorObserver@@@Z @ 4 NONAME ; class CMusIndicatorApi * CMusIndicatorApi::NewLC(class MMusIndicatorObserver &)
+ ?DrawDeferred@CCoeControl@@QBEXXZ @ 5 NONAME ; void CCoeControl::DrawDeferred(void) const
+ ?SystemGc@CCoeControl@@QBEAAVCWindowGc@@XZ @ 6 NONAME ; class CWindowGc & CCoeControl::SystemGc(void) const
+ ?SetPenColor@CWindowGc@@UAEXABVTRgb@@@Z @ 7 NONAME ; void CWindowGc::SetPenColor(class TRgb const &)
+ ?ShowConfirmationQueryL@CAknGlobalConfirmationQuery@@QAEXAAVTRequestStatus@@ABVTDesC16@@HH1HHW4TTone@CAknQueryDialog@@H@Z @ 8 NONAME ; void CAknGlobalConfirmationQuery::ShowConfirmationQueryL(class TRequestStatus &, class TDesC16 const &, int, int, class TDesC16 const &, int, int, enum CAknQueryDialog::TTone, int)
+ ?CancelMsgQuery@CAknGlobalMsgQuery@@QAEXXZ @ 9 NONAME ; void CAknGlobalMsgQuery::CancelMsgQuery(void)
+ ?NewL@CMusIndicatorApi@@SAPAV1@AAVMMusIndicatorObserver@@@Z @ 10 NONAME ; class CMusIndicatorApi * CMusIndicatorApi::NewL(class MMusIndicatorObserver &)
+ ?DrawRoundRect@CWindowGc@@UAEXABVTRect@@ABVTSize@@@Z @ 11 NONAME ; void CWindowGc::DrawRoundRect(class TRect const &, class TSize const &)
+ ?ShowMsgQueryL@CAknGlobalMsgQuery@@QAEXAAVTRequestStatus@@ABVTDesC16@@H11HHW4TTone@CAknQueryDialog@@@Z @ 12 NONAME ; void CAknGlobalMsgQuery::ShowMsgQueryL(class TRequestStatus &, class TDesC16 const &, int, class TDesC16 const &, class TDesC16 const &, int, int, enum CAknQueryDialog::TTone)
+ ?SetPenStyle@CWindowGc@@UAEXW4TPenStyle@CGraphicsContext@@@Z @ 13 NONAME ; void CWindowGc::SetPenStyle(enum CGraphicsContext::TPenStyle)
+ ??1CAknGlobalMsgQuery@@UAE@XZ @ 14 NONAME ; CAknGlobalMsgQuery::~CAknGlobalMsgQuery(void)
+ ?ConfirmationQueryL@CMusIndicatorApi@@SAHW4TVsPopupQuery@1@@Z @ 15 NONAME ; int CMusIndicatorApi::ConfirmationQueryL(enum CMusIndicatorApi::TVsPopupQuery)
+ ?NewL@CMusIndicatorApi@@SAPAV1@XZ @ 16 NONAME ; class CMusIndicatorApi * CMusIndicatorApi::NewL(void)
+ ??1CAknGlobalConfirmationQuery@@UAE@XZ @ 17 NONAME ; CAknGlobalConfirmationQuery::~CAknGlobalConfirmationQuery(void)
+ ?NewLC@CAknGlobalConfirmationQuery@@SAPAV1@XZ @ 18 NONAME ; class CAknGlobalConfirmationQuery * CAknGlobalConfirmationQuery::NewLC(void)
+ ?SizeInPixels@CWsScreenDevice@@UBE?AVTSize@@XZ @ 19 NONAME ; class TSize CWsScreenDevice::SizeInPixels(void) const
+ ??1CWindowGc@@UAE@XZ @ 20 NONAME ; CWindowGc::~CWindowGc(void)
+ ?IndicateAvailabilityL@CMusIndicatorApi@@QAEXXZ @ 21 NONAME ; void CMusIndicatorApi::IndicateAvailabilityL(void)
+ ?ActivateL@CCoeControl@@UAEXXZ @ 22 NONAME ; void CCoeControl::ActivateL(void)
+ ?Start@CPeriodic@@QAEXVTTimeIntervalMicroSeconds32@@0VTCallBack@@@Z @ 23 NONAME ; void CPeriodic::Start(class TTimeIntervalMicroSeconds32, class TTimeIntervalMicroSeconds32, class TCallBack)
+ ?SetPenSize@CWindowGc@@UAEXABVTSize@@@Z @ 24 NONAME ; void CWindowGc::SetPenSize(class TSize const &)
+ ?Background@AknsDrawUtils@@SAHPAVMAknsSkinInstance@@PAVMAknsControlContext@@PBVCCoeControl@@AAVCWindowGc@@ABVTRect@@H@Z @ 25 NONAME ; int AknsDrawUtils::Background(class MAknsSkinInstance *, class MAknsControlContext *, class CCoeControl const *, class CWindowGc &, class TRect const &, int)
+ ?Clear@CWindowGc@@UAEXABVTRect@@@Z @ 26 NONAME ; void CWindowGc::Clear(class TRect const &)
+ ?NewLC@CAknGlobalMsgQuery@@SAPAV1@XZ @ 27 NONAME ; class CAknGlobalMsgQuery * CAknGlobalMsgQuery::NewLC(void)
+ ?ControlContext@AknsDrawUtils@@SAPAVMAknsControlContext@@PBVMObjectProvider@@@Z @ 28 NONAME ; class MAknsControlContext * AknsDrawUtils::ControlContext(class MObjectProvider const *)
+ ?CancelConfirmationQuery@CAknGlobalConfirmationQuery@@QAEXXZ @ 29 NONAME ; void CAknGlobalConfirmationQuery::CancelConfirmationQuery(void)
+ ?UseFont@CWindowGc@@UAEXPBVCFont@@@Z @ 30 NONAME ; void CWindowGc::UseFont(class CFont const *)
+ ?SetBrushStyle@CWindowGc@@UAEXW4TBrushStyle@CGraphicsContext@@@Z @ 31 NONAME ; void CWindowGc::SetBrushStyle(enum CGraphicsContext::TBrushStyle)
+ ?CreateWindowL@CCoeControl@@IAEXXZ @ 32 NONAME ; void CCoeControl::CreateWindowL(void)
+ ?DrawText@CWindowGc@@UAEXABVTDesC16@@ABVTPoint@@@Z @ 33 NONAME ; void CWindowGc::DrawText(class TDesC16 const &, class TPoint const &)
+ ?BitBltMasked@CWindowGc@@UAEXABVTPoint@@PBVCFbsBitmap@@ABVTRect@@1H@Z @ 34 NONAME ; void CWindowGc::BitBltMasked(class TPoint const &, class CFbsBitmap const *, class TRect const &, class CFbsBitmap const *, int)
+ ??0CWindowGc@@QAE@PAVCWsScreenDevice@@@Z @ 35 NONAME ; CWindowGc::CWindowGc(class CWsScreenDevice *)
+
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -19,5 +19,5 @@
PRJ_PLATFORMS
DEFAULT
-PRJ_TESTMMPFILES
+PRJ_MMPFILES
ut_musindicator.mmp
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/group/ut_musindicator.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/group/ut_musindicator.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -37,11 +37,13 @@
SOURCE dllmain.cpp
SOURCE ut_cmusindicatorapi.cpp
SOURCE ut_cmussoundplayer.cpp
+SOURCE ut_cmusindicatordsa.cpp
// tested classes
SOURCEPATH ../../../src
SOURCE mussoundplayer.cpp
SOURCE musindicatorapi.cpp
+SOURCE musindicatordsa.cpp
SOURCE musresourceutil.cpp
USERINCLUDE ../inc
@@ -54,23 +56,28 @@
USERINCLUDE ../../../../../inc
USERINCLUDE ../../../../../tsrc/ututils/inc
USERINCLUDE ../../../../../tsrc/propertystub/inc
+USERINCLUDE ../../../../../tsrc/fbsbitmapstub/inc
+USERINCLUDE ../../../../../tsrc/centralrepositorystub/inc
// STUB SOURCES
SOURCEPATH ../../../../../tsrc/propertystub/src
SOURCE e32property.cpp
SOURCEPATH ../../../../../tsrc/fbsbitmapstub/src
SOURCE fbs.cpp
+SOURCEPATH ../../../../../tsrc/centralrepositorystub/src
+SOURCE centralrepositorystub.cpp
// STUB INCLUDES
// To replace RProperty with a stub
SYSTEMINCLUDE ../../../../../tsrc/propertystub/inc
+SYSTEMINCLUDE ../../../../../tsrc/centralrepositorystub/inc
// INCLUDESs
APP_LAYER_SYSTEMINCLUDE
-LIBRARY centralrepository.lib
+//LIBRARY centralrepository.lib
LIBRARY commonengine.lib // RConeResourceLoader
LIBRARY bafl.lib
LIBRARY eunit.lib
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/group/ut_musindicator.pkg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-;
-; Copyright (c) 2009 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:
-;
-
-;Languages
-&EN
-
-;Header
-#{"EUnit: MMSHInd"},(0x01700000),1,0,0
-
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique vendor name
-:"Nokia"
-
-;DLL files
-"\epoc32\release\armv5\urel\ut_musindicator.dll"-"c:\sys\bin\ut_musindicator.dll"
-
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/inc/ut_cmusindicatorapi.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/inc/ut_cmusindicatorapi.h Tue Aug 31 15:12:07 2010 +0300
@@ -78,12 +78,16 @@
* Actual unit test methods.
*/
void UT_CMusIndicatorApi_NewLL();
+ void UT_CMusIndicatorApi_ConfirmationQueryLL();
void UT_CMusIndicatorApi_IndicateAvailabilityLL();
void UT_CMusIndicatorApi_RunLL();
void UT_CMusIndicatorApi_DoCancelL();
void UT_CMusIndicatorApi_RunErrorL();
void UT_CMusIndicatorApi_PlaySoundCompleteL();
void UT_CMusIndicatorApi_PlayToneLL();
+ void UT_CMusIndicatorApi_NoteTextLCL();
+ void UT_CMusIndicatorApi_ShowLiveSharingQueryLL();
+ void UT_CMusIndicatorApi_LiveSharingQueryTimeoutL();
private: // data
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/inc/ut_cmusindicatordsa.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,100 @@
+/*
+* 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: Unit tests for CMusIndicatorApi class.
+*
+*/
+
+
+
+#ifndef UT_CMUSINDICATORDSA_H
+#define UT_CMUSINDICATORDSA_H
+
+
+#include <digia/eunit/ceunittestsuiteclass.h>
+#include <e32def.h>
+
+
+#ifndef NONSHARABLE_CLASS
+ #define NONSHARABLE_CLASS(x) class x
+#endif
+
+
+class CMusIndicatorDsa;
+
+
+/**
+ * Unit test class for CMusIndicatorApi class.
+ * Implements unit tests for CMusIndicatorApi class.
+ */
+NONSHARABLE_CLASS( UT_CMusIndicatorDsa ) : public CEUnitTestSuiteClass
+ {
+public:
+
+ static UT_CMusIndicatorDsa* NewL();
+ static UT_CMusIndicatorDsa* NewLC();
+
+ /**
+ * Destructor.
+ */
+ ~UT_CMusIndicatorDsa();
+
+private:
+
+ UT_CMusIndicatorDsa();
+
+ void ConstructL();
+
+ /**
+ * Sets up a new test.
+ */
+ void SetupL();
+
+ /**
+ * Tears down a test.
+ */
+ void Teardown();
+
+ /**
+ * Actual unit test methods.
+ */
+ void UT_CMusIndicatorDsa_NewLL();
+ void UT_CMusIndicatorDsa_DrawL();
+ void UT_CMusIndicatorDsa_LoadImageLL();
+ void UT_CMusIndicatorDsa_LoadResourceStringLL();
+ void UT_CMusIndicatorDsa_InitializeL();
+ void UT_CMusIndicatorDsa_TryActivateL();
+ void UT_CMusIndicatorDsa_StartPeriodicTimerL();
+ void UT_CMusIndicatorDsa_StopPeriodicTimerL();
+ void UT_CMusIndicatorDsa_HandleResourceChangeL();
+ void UT_CMusIndicatorDsa_DoHandleResourceChangeL();
+
+
+ /**
+ * Helpers
+ */
+ void FakeVisibilityL();
+
+private: // data
+
+ /**
+ * Tested class.
+ * Own.
+ */
+ CMusIndicatorDsa* iIndicatorDsa;
+
+ EUNIT_DECLARE_TEST_TABLE;
+
+ };
+
+#endif // UT_CMUSINDICATORDSA_H
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/src/dllmain.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/src/dllmain.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -19,6 +19,7 @@
#include "ut_cmusindicatorapi.h"
#include "ut_cmussoundplayer.h"
+#include "ut_cmusindicatordsa.h"
#include <digia/eunit/ceunittestsuite.h>
@@ -38,6 +39,9 @@
rootSuite->AddL( UT_CMusSoundPlayer::NewLC() );
CleanupStack::Pop();
+ rootSuite->AddL( UT_CMusIndicatorDsa::NewLC() );
+ CleanupStack::Pop();
+
CleanupStack::Pop( rootSuite );
return rootSuite;
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/src/ut_cmusindicatorapi.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/src/ut_cmusindicatorapi.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -28,8 +28,134 @@
// Next row is to disable warning emerging from EUnit code.
#pragma warn_illtokenpasting off
+static TInt stubStatus = KErrNone;
+static TRequestStatus* rstatus = NULL;
+// ======== CAknGlobalMsgQuery stub ========
+
+
+CAknGlobalMsgQuery* CAknGlobalMsgQuery::NewL()
+ {
+ CAknGlobalMsgQuery* self = CAknGlobalMsgQuery::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+CAknGlobalMsgQuery* CAknGlobalMsgQuery::NewLC()
+ {
+ CAknGlobalMsgQuery* self = new (ELeave) CAknGlobalMsgQuery();
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+CAknGlobalMsgQuery::CAknGlobalMsgQuery()
+ {
+ }
+
+CAknGlobalMsgQuery::~CAknGlobalMsgQuery()
+ {
+ CancelMsgQuery();
+ iNotify.Close();
+ }
+
+void CAknGlobalMsgQuery::ShowMsgQueryL(
+ TRequestStatus& aStatus,
+ const TDesC& /*aMsgText*/,
+ TInt /*aSoftkeys*/,
+ const TDesC& /*HeaderText*/,
+ const TDesC& /*HeaderImageFile*/,
+ TInt /*aImageId*/,
+ TInt /*aImageMaskId*/,
+ CAknQueryDialog::TTone /*aTone*/)
+ {
+ if ( stubStatus == KErrNone )
+ {
+ aStatus = KRequestPending;
+ rstatus = &aStatus;
+ }
+ else
+ {
+ User::Leave( stubStatus );
+ }
+ }
+
+void CAknGlobalMsgQuery::CancelMsgQuery()
+ {
+ if ( rstatus )
+ {
+ User::RequestComplete( rstatus, KErrCancel );
+ rstatus = NULL;
+ }
+ }
+
+
+// ======== CAknGlobalConfirmationQuery stub ========
+
+CAknGlobalConfirmationQuery* CAknGlobalConfirmationQuery::NewL()
+ {
+ CAknGlobalConfirmationQuery* self = CAknGlobalConfirmationQuery::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+CAknGlobalConfirmationQuery* CAknGlobalConfirmationQuery::NewLC()
+ {
+ CAknGlobalConfirmationQuery* self = new (ELeave) CAknGlobalConfirmationQuery();
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+CAknGlobalConfirmationQuery::CAknGlobalConfirmationQuery()
+ {
+ }
+
+
+CAknGlobalConfirmationQuery::~CAknGlobalConfirmationQuery()
+ {
+ CancelConfirmationQuery();
+ iNotify.Close();
+ }
+
+
+
+
+void CAknGlobalConfirmationQuery::ShowConfirmationQueryL(
+ TRequestStatus& aStatus,
+ const TDesC& /*aPrompt*/,
+ TInt /*aSoftkeys*/,
+ TInt /*aAnimation*/,
+ const TDesC& /*aImageFile*/,
+ TInt /*aImageId*/,
+ TInt /*aImageMaskId*/,
+ CAknQueryDialog::TTone /*aTone*/,
+ TBool /*aDismissWithAllKeys*/ )
+
+ {
+ if ( stubStatus == KErrNone )
+ {
+ TRequestStatus* stat = &aStatus;
+ User::RequestComplete( stat, EAknSoftkeyYes );
+ // rstatus = &aStatus;
+ }
+ else
+ {
+ User::Leave( stubStatus );
+ }
+
+ }
+
+void CAknGlobalConfirmationQuery::CancelConfirmationQuery()
+ {
+ if ( rstatus )
+ {
+ User::RequestComplete( rstatus, KErrCancel );
+ rstatus = NULL;
+ }
+ }
+
// ======== MEMBER FUNCTIONS ========
@@ -78,6 +204,8 @@
void UT_CMusIndicatorApi::SetupL()
{
iIndicatorApi = CMusIndicatorApi::NewL( *this );
+ rstatus = NULL;
+ stubStatus = KErrNone;
iStartLiveSharingLCalled = EFalse;
}
@@ -89,6 +217,7 @@
void UT_CMusIndicatorApi::Teardown()
{
delete iIndicatorApi;
+ iIndicatorApi = NULL;
PropertyHelper::Close();
}
@@ -119,6 +248,19 @@
// ----------------------------------------------------------------------------
+// @TODO: Can this be tested without a dialog?
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorApi::UT_CMusIndicatorApi_ConfirmationQueryLL()
+ {
+ TBool ret = iIndicatorApi->ConfirmationQueryL(
+ CMusIndicatorApi::EVsRoamingActivationQuery );
+
+ EUNIT_ASSERT( ret );
+ }
+
+
+// ----------------------------------------------------------------------------
// Dummy test. @TODO: Can this be tested?
// ----------------------------------------------------------------------------
//
@@ -134,16 +276,24 @@
//
void UT_CMusIndicatorApi::UT_CMusIndicatorApi_RunLL()
{
- User::LeaveIfError( RProperty::Define(
- KPSUidCoreApplicationUIs,
- KCoreAppUIsVideoSharingIndicator,
- RProperty::EInt,
- 0 ) );
+ /* NOTE: EUnit reports leak for this test due AVKON resource reservation,
+ * which is not released by AVKON at end of test. Resource reservation
+ * happend in contruction of indicator(dsa)
+ */
+ TRAPD( error, RProperty::Define(
+ KPSUidCoreApplicationUIs,
+ KCoreAppUIsVideoSharingIndicator,
+ RProperty::EInt,
+ 0 ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
- User::LeaveIfError( RProperty::Set(
- KPSUidCoreApplicationUIs,
- KCoreAppUIsVideoSharingIndicator,
- ( TInt ) ECoreAppUIsVideoSharingIndicatorOn ) );
+ TRAP( error, RProperty::Set(
+ KPSUidCoreApplicationUIs,
+ KCoreAppUIsVideoSharingIndicator,
+ ( TInt ) ECoreAppUIsVideoSharingIndicatorOn ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
iIndicatorApi->Cancel();
iIndicatorApi->iStatus = KErrNotFound;
@@ -153,18 +303,42 @@
iIndicatorApi->Cancel();
iIndicatorApi->iStatus = KErrNone;
iIndicatorApi->RunL();
- EUNIT_ASSERT( iStartLiveSharingLCalled );
+ EUNIT_ASSERT( iStartLiveSharingLCalled );
+ EUNIT_ASSERT( !iIndicatorApi->iQuery );
+
+ delete iIndicatorApi->iLiveSharingQueryTimeout;
+ iIndicatorApi->iLiveSharingQueryTimeout = NULL;
+ iIndicatorApi->iLiveSharingQueryTimeout =
+ CPeriodic::NewL( CActive::EPriorityStandard );
+
+ iIndicatorApi->RunL();
+ EUNIT_ASSERT( !iIndicatorApi->iLiveSharingQueryTimeout );
+ EUNIT_ASSERT( !iIndicatorApi->IsSubscriber() );
+
+ iIndicatorApi->iObserver = NULL;
+ EUNIT_ASSERT( iIndicatorApi->IsSubscriber() );
+ iIndicatorApi->Indicator( ETrue );
+
+ iIndicatorApi->Cancel();
+
+ iIndicatorApi->RunL();
+
+ TRequestStatus& status = iIndicatorApi->iStatus;
+ rstatus = &status;
+ //User::RequestComplete( rstatus, KErrCancel );
}
// ----------------------------------------------------------------------------
-// Asserts that DoCancel removes current activity.
+// Asserts that DoCancel removes current activity and deletes used resources.
// ----------------------------------------------------------------------------
//
void UT_CMusIndicatorApi::UT_CMusIndicatorApi_DoCancelL()
{
+ iIndicatorApi->ShowLiveSharingQueryL( EFalse );
iIndicatorApi->Cancel();
+ EUNIT_ASSERT( !iIndicatorApi->iQuery );
EUNIT_ASSERT( !iIndicatorApi->IsActive() );
}
@@ -207,6 +381,62 @@
}
+// ----------------------------------------------------------------------------
+// Asserts that a note text is generated.
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorApi::UT_CMusIndicatorApi_NoteTextLCL()
+ {
+ HBufC* tmp = iIndicatorApi->NoteTextLC(
+ CMusIndicatorApi::EVsRoamingActivationQuery );
+ EUNIT_ASSERT( tmp );
+ EUNIT_ASSERT( tmp->Length() );
+ CleanupStack::PopAndDestroy();
+ }
+
+
+// ----------------------------------------------------------------------------
+// Asserts that method creates a query and calls CActive::SetActive.
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorApi::UT_CMusIndicatorApi_ShowLiveSharingQueryLL()
+ {
+
+ iIndicatorApi->ShowLiveSharingQueryL( EFalse );
+ EUNIT_ASSERT( iIndicatorApi->iQuery );
+ EUNIT_ASSERT( iIndicatorApi->IsActive() );
+
+ iIndicatorApi->Cancel();
+ EUNIT_ASSERT( !iIndicatorApi->iQuery );
+ EUNIT_ASSERT( !iIndicatorApi->IsActive() );
+
+ stubStatus = KErrNotFound;
+ iIndicatorApi->ShowLiveSharingQueryL( EFalse );
+ EUNIT_ASSERT( !iIndicatorApi->iQuery );
+ EUNIT_ASSERT( !iIndicatorApi->IsActive() );
+
+
+ }
+
+// ----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorApi::UT_CMusIndicatorApi_LiveSharingQueryTimeoutL()
+ {
+ iIndicatorApi->ShowLiveSharingQueryL( EFalse );
+ EUNIT_ASSERT( iIndicatorApi->iQuery );
+ EUNIT_ASSERT( iIndicatorApi->IsActive() );
+
+ EUNIT_ASSERT( CMusIndicatorApi::LiveSharingQueryTimeout( iIndicatorApi ) == KErrNone );
+
+ EUNIT_ASSERT( !iIndicatorApi->iQuery );
+ EUNIT_ASSERT( !iIndicatorApi->IsActive() );
+
+
+ }
+
+
+
// ======== EUNIT TEST TABLE ========
@@ -223,6 +453,13 @@
SetupL, UT_CMusIndicatorApi_NewLL, Teardown )
EUNIT_TEST(
+ "ConfirmationQueryL - test ",
+ "CMusIndicatorApi",
+ "ConfirmationQueryL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorApi_ConfirmationQueryLL, Teardown )
+
+EUNIT_TEST(
"IndicateAvailabilityL - test ",
"CMusIndicatorApi",
"IndicateAvailabilityL",
@@ -264,6 +501,27 @@
"FUNCTIONALITY",
SetupL, UT_CMusIndicatorApi_PlayToneLL, Teardown )
+EUNIT_TEST(
+ "NoteTextLC - test ",
+ "CMusIndicatorApi",
+ "NoteTextLC",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorApi_NoteTextLCL, Teardown )
+
+EUNIT_TEST(
+ "ShowLiveSharingQueryL - test ",
+ "CMusIndicatorApi",
+ "ShowLiveSharingQueryL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorApi_ShowLiveSharingQueryLL, Teardown )
+
+EUNIT_TEST(
+ "LiveSharingQueryTimeout - test ",
+ "CMusIndicatorApi",
+ "LiveSharingQueryTimeout",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorApi_LiveSharingQueryTimeoutL, Teardown )
+
EUNIT_END_TEST_TABLE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/src/ut_cmusindicatordsa.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,501 @@
+/*
+* 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: Implements unit tests for CMusIndicatorApi class.
+*
+*/
+
+
+
+#include "ut_cmusindicatordsa.h"
+#include "musindicatordsa.h"
+#include "mustesthelp.h"
+#include "e32property.h"
+
+#include <digia/eunit/eunitmacros.h>
+#include <AknGlobalMsgQuery.h>
+#include <AknsDrawUtils.h>
+
+
+// Next row is to disable warning emerging from EUnit code.
+#pragma warn_illtokenpasting off
+
+const TSize KOriginalSize = TSize( 176, 208 );
+const TSize KDifferentSize = TSize( 208, 176 );
+
+static CWindowGc* gc = NULL;
+static TAny* cc = NULL;
+static TTimeIntervalMicroSeconds32 delay = 0;
+static TSize sizeInPixels = KOriginalSize;
+
+
+// ======== stubs ========
+
+
+void CCoeControl::CreateWindowL()
+ {
+
+ }
+
+void CCoeControl::ActivateL()
+ {
+
+ }
+
+void CCoeControl::DrawDeferred() const
+ {
+ }
+
+CWindowGc& CCoeControl::SystemGc() const
+ {
+ return *gc;
+ }
+
+MWsClientClass::MWsClientClass()
+ {
+ }
+
+CWindowGc::CWindowGc(CWsScreenDevice* /*aDevice*/ )
+ {
+
+ }
+
+CWindowGc::~CWindowGc()
+ {
+
+ }
+
+void CWindowGc::SetBrushStyle( TBrushStyle /*aBrushStyle*/ )
+ {
+ }
+
+void CWindowGc::Clear( const TRect& /*aRect*/ )
+ {
+ }
+
+void CWindowGc::UseFont( const CFont* /*aFont*/ )
+ {
+ }
+
+void CWindowGc::SetPenStyle( TPenStyle /*aPenStyle*/ )
+ {
+ }
+
+void CWindowGc::SetPenColor( const TRgb& /*aColor*/ )
+ {
+ }
+
+void CWindowGc::SetPenSize( const TSize& /*aSize*/ )
+ {
+ }
+
+void CWindowGc::DrawRoundRect( const TRect& /*aRect*/,const TSize& /*aEllipse*/ )
+ {
+ }
+
+void CWindowGc::DrawText( const TDesC& /*aBuf*/,const TPoint& /*aPos*/ )
+ {
+ }
+
+//Cannot stub due it is virtual method. This is not called
+TSize CWsScreenDevice::SizeInPixels() const
+ {
+ return sizeInPixels;
+ }
+
+void CWindowGc::BitBltMasked(const TPoint& /*aPoint*/,const CFbsBitmap* /*aBitmap*/,
+ const TRect& /*aSourceRect*/,const CFbsBitmap* /*aMaskBitmap*/,TBool /*aInvertMask*/)
+ {
+ }
+
+MAknsControlContext* AknsDrawUtils::ControlContext( const MObjectProvider* /*aMop*/ )
+ {
+ return static_cast<MAknsControlContext*>( cc );
+ }
+
+TBool AknsDrawUtils::Background( MAknsSkinInstance* /*aInstance*/,
+ MAknsControlContext* /*aContext*/, const CCoeControl* /*aControl*/,
+ CWindowGc& /*aGc*/, const TRect& /*aRect*/, const TInt /*aDrawParam*/ )
+ {
+ return ETrue;
+ }
+
+
+void CPeriodic::Start(TTimeIntervalMicroSeconds32 aDelay,TTimeIntervalMicroSeconds32 /*anInterval*/,TCallBack /*aCallBack*/)
+ {
+ delay = aDelay;
+ After(aDelay);
+
+ }
+
+
+
+// ======== MEMBER FUNCTIONS ========
+
+
+UT_CMusIndicatorDsa* UT_CMusIndicatorDsa::NewL()
+ {
+ UT_CMusIndicatorDsa* self = UT_CMusIndicatorDsa::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+UT_CMusIndicatorDsa* UT_CMusIndicatorDsa::NewLC()
+ {
+ UT_CMusIndicatorDsa* self = new( ELeave ) UT_CMusIndicatorDsa();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+UT_CMusIndicatorDsa::~UT_CMusIndicatorDsa()
+ {
+ }
+
+
+UT_CMusIndicatorDsa::UT_CMusIndicatorDsa()
+ {
+ delete iIndicatorDsa;
+ iIndicatorDsa = NULL;
+ }
+
+
+// ---------------------------------------------------------------------------
+// The ConstructL from the base class CEUnitTestSuiteClass must be called.
+// It generates the test case table.
+// ---------------------------------------------------------------------------
+//
+void UT_CMusIndicatorDsa::ConstructL()
+ {
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+
+// ----------------------------------------------------------------------------
+// Prepares a test for execution.
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorDsa::SetupL()
+ {
+ /* NOTE: EUnit reports leak for any first test due AVKON resource reservation,
+ * which is not released by AVKON at end of test. Resource reservation
+ * happend in contruction of CMusIndicatorDsa
+ */
+
+ cc = this;
+ iIndicatorDsa = CMusIndicatorDsa::NewL();
+ if ( !gc )
+ {
+ gc = new (ELeave) CWindowGc( NULL );
+ }
+ delay = 0;
+ sizeInPixels = KOriginalSize;
+
+ }
+
+
+// ----------------------------------------------------------------------------
+// Finalizes a test by releasing used resources.
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorDsa::Teardown()
+ {
+ delete iIndicatorDsa;
+ iIndicatorDsa = NULL;
+ delete gc;
+ gc = NULL;
+ cc = NULL;
+ delay = 0;
+ sizeInPixels = KOriginalSize;
+ PropertyHelper::Close();
+
+ }
+
+
+// ======== UNIT TEST METHODS ========
+
+
+// ----------------------------------------------------------------------------
+// Asserts successful instantiation.
+// ----------------------------------------------------------------------------
+//
+
+void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_NewLL()
+ {
+ EUNIT_ASSERT( iIndicatorDsa );
+ }
+
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_DrawL()
+ {
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ TRect rect;
+ iIndicatorDsa->Draw( rect );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ cc = NULL;
+ iIndicatorDsa->Draw( rect );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ /*size cannot be changed
+ sizeInPixels = KDifferentSize;
+ iIndicatorDsa->Draw( rect );
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
+ */
+
+ }
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_InitializeL()
+ {
+ iIndicatorDsa->Initialize();
+
+
+ EUNIT_ASSERT( iIndicatorDsa->iTextpos.iX );
+ EUNIT_ASSERT( iIndicatorDsa->iTextpos.iY );
+
+ }
+
+
+// ----------------------------------------------------------------------------
+// Asserts that load image is not doing anything if icon is already loaded
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_LoadImageLL()
+ {
+ CFbsBitmap* icon = iIndicatorDsa->iIcon;
+ CFbsBitmap* iconMask = iIndicatorDsa->iIconMask;
+ EUNIT_ASSERT( icon != NULL );
+ EUNIT_ASSERT( iconMask != NULL );
+ iIndicatorDsa->LoadImageL();
+
+ EUNIT_ASSERT( icon == iIndicatorDsa->iIcon );
+ EUNIT_ASSERT( iconMask == iIndicatorDsa->iIconMask );
+ }
+
+
+// ----------------------------------------------------------------------------
+// Asserts successful loading of resource string.
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_LoadResourceStringLL()
+ {
+ iIndicatorDsa->LoadResourceStringL();
+ EUNIT_ASSERT( iIndicatorDsa->iText );
+ EUNIT_ASSERT( iIndicatorDsa->iText->Length() );
+ }
+
+
+
+// ----------------------------------------------------------------------------
+// Asserts that periodic timer is started after method call.
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_StartPeriodicTimerL()
+ {
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+ EUNIT_ASSERT( delay.Int() == 0 );
+
+ iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iActivateCallBack );
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
+ EUNIT_ASSERT( delay.Int() == KMusIndicatorDelay );
+
+ delay = 0;
+ iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iActivateCallBack );
+ EUNIT_ASSERT( delay.Int() == 0 );
+
+ iIndicatorDsa->iPeriodic->Cancel();
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+ EUNIT_ASSERT( delay.Int() == 0 );
+
+ iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iRedrawCallBack );
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
+ EUNIT_ASSERT( delay.Int() == KMusRedrawDelay );
+
+ }
+
+
+// ----------------------------------------------------------------------------
+// Asserts that periodic timer is stopped after method call.
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_StopPeriodicTimerL()
+ {
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+ iIndicatorDsa->StopPeriodicTimer();
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iActivateCallBack );
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
+
+ iIndicatorDsa->StopPeriodicTimer();
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ }
+
+// ----------------------------------------------------------------------------
+// Asserts that periodic timer
+// ----------------------------------------------------------------------------
+//
+void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_TryActivateL()
+ {
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ EUNIT_ASSERT_EQUALS( iIndicatorDsa->TryActivate( iIndicatorDsa ), KErrNone );
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ cc = NULL;
+
+ // Through async callback
+ EUNIT_ASSERT_EQUALS( iIndicatorDsa->TryActivate( iIndicatorDsa ), KErrNone );
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
+
+ EUNIT_ASSERT_EQUALS( iIndicatorDsa->TryActivate( NULL ), KErrArgument );
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
+
+ }
+
+void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_DoHandleResourceChangeL()
+ {
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ EUNIT_ASSERT_EQUALS( iIndicatorDsa->DoHandleResourceChange( iIndicatorDsa ), KErrNone );
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ EUNIT_ASSERT_EQUALS( iIndicatorDsa->DoHandleResourceChange( NULL ), KErrArgument );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ }
+
+void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_HandleResourceChangeL()
+ {
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+ iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iRedrawCallBack );
+ EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
+
+ iIndicatorDsa->iScreenSize = TSize();
+ iIndicatorDsa->HandleResourceChange( KEikDynamicLayoutVariantSwitch );
+ EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
+
+ EUNIT_ASSERT( iIndicatorDsa->iScreenSize != TSize() );
+
+ iIndicatorDsa->iScreenSize = TSize();
+ iIndicatorDsa->HandleResourceChange( 0 );
+ EUNIT_ASSERT( iIndicatorDsa->iScreenSize == TSize() );
+
+ }
+
+
+
+// ======== EUNIT TEST TABLE ========
+
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusIndicatorDsa,
+ "UT_CMusIndicatorDsa",
+ "UNIT" )
+
+EUNIT_TEST(
+ "NewL - test",
+ "CMusIndicatorDsa",
+ "NewL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorDsa_NewLL, Teardown )
+
+
+EUNIT_TEST(
+ "Draw - test",
+ "CMusIndicatorDsa",
+ "Draw",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorDsa_DrawL, Teardown )
+
+
+EUNIT_TEST(
+ "Initialize - test",
+ "CMusIndicatorDsa",
+ "Initialize",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorDsa_InitializeL, Teardown )
+
+EUNIT_TEST(
+ "LoadImageL - test",
+ "CMusIndicatorDsa",
+ "LoadImageL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorDsa_LoadImageLL, Teardown )
+
+EUNIT_TEST(
+ "LoadResourceStringL - test",
+ "CMusIndicatorDsa",
+ "LoadResourceStringL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorDsa_LoadResourceStringLL, Teardown )
+
+
+EUNIT_TEST(
+ "TryActivate - test",
+ "CMusIndicatorDsa",
+ "TryActivate",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorDsa_TryActivateL, Teardown )
+
+EUNIT_TEST(
+ "StartPeriodicTimer - test",
+ "CMusIndicatorDsa",
+ "StartPeriodicTimer",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorDsa_StartPeriodicTimerL, Teardown )
+
+EUNIT_TEST(
+ "StopPeriodicTimer - test",
+ "CMusIndicatorDsa",
+ "StopPeriodicTimer",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorDsa_StopPeriodicTimerL, Teardown )
+
+EUNIT_TEST(
+ "DoHandleResourceChange - test",
+ "CMusIndicatorDsa",
+ "DoHandleResourceChange",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorDsa_DoHandleResourceChangeL, Teardown )
+
+EUNIT_TEST(
+ "HandleResourceChange - test",
+ "CMusIndicatorDsa",
+ "HandleResourceChange",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusIndicatorDsa_HandleResourceChangeL, Teardown )
+
+
+EUNIT_END_TEST_TABLE
--- a/mmsharing/mmshmanagercli/src/musmanagerimpl.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagercli/src/musmanagerimpl.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -402,9 +402,6 @@
{
MUS_LOG1( "mus: [MUSCLI] CMusManagerImplListener::RunError: %d", \
aError );
- // Nothing can be done here.
- aError = KErrNone;
-
return aError;
}
--- a/mmsharing/mmshmanagercli/tsrc/ut_managercli/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagercli/tsrc/ut_managercli/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -16,5 +16,5 @@
*/
-PRJ_TESTMMPFILES
+PRJ_MMPFILES
ut_musmanagerclient.mmp
\ No newline at end of file
--- a/mmsharing/mmshmanagercli/tsrc/ut_managercli/group/ut_musmanagerclient.pkg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-;
-; Copyright (c) 2009 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:
-;
-
-;Languages
-&EN
-
-;Header
-#{"EUnit: MMSHMgrCli"},(0x01700000),1,0,0
-
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique vendor name
-:"Nokia"
-
-;DLL files
-"\epoc32\release\armv5\urel\ut_musmanagerclient.dll"-"c:\sys\bin\ut_musmanagerclient.dll"
--- a/mmsharing/mmshmanagersrv/group/musmanagerserver.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/group/musmanagerserver.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -30,6 +30,9 @@
VENDORID VID_DEFAULT
VERSION KMusBinaryVersionNumber
+// Stack Size 20K
+EPOCSTACKSIZE 0x5000
+
SOURCEPATH ../src
SOURCE musmanagerserver.cpp
SOURCE musmanagerservercore.cpp
@@ -44,6 +47,7 @@
USERINCLUDE ../../mmshshared/inc
USERINCLUDE ../../inc
USERINCLUDE ../../../inc
+USERINCLUDE ../../cenrep
APP_LAYER_SYSTEMINCLUDE
@@ -56,5 +60,7 @@
LIBRARY flogger.lib
LIBRARY ws32.lib
LIBRARY musindicator.lib
+LIBRARY centralrepository.lib
+LIBRARY charconv.lib
PAGED
--- a/mmsharing/mmshmanagersrv/inc/musapplicationmanager.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/inc/musapplicationmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -27,6 +27,9 @@
#include <e32base.h>
#include <w32std.h>
+
+const TInt KMusMgrMaxPluginNameLen = 256;
+
//class TApaTask;
/**
@@ -120,6 +123,12 @@
*
*/
void SetIndicatorStatusL( TBool aLaunch );
+
+ /**
+ * Resolves name of the ecom plugin which implements the livecomms engine api
+ * by using the callprovider
+ */
+ void ResolvePluginNameL(TDes8& aPluginName);
private: // helper functions
@@ -135,22 +144,15 @@
void SetPropertyL( TUint aProperty, TInt aValue );
/**
- *
+ * Reads the call provider information from PS key.
+ */
+ void CallProviderL(TDes8& aProvider);
+
+ /**
+ * Creates command line used when starting application.
+ *
*/
- TApaTask GetApaTask();
-
-
- private: // owned data
-
- /**
- * Window server session handle
- */
- RWsSession iWsSession;
-
- /**
- *
- */
- RApaLsSession iApaSession;
+ HBufC* CreateCommandLineArgsLC();
};
--- a/mmsharing/mmshmanagersrv/inc/musavailabilitypluginmanager.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/inc/musavailabilitypluginmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -105,6 +105,11 @@
void InvestigateAvailabilityL();
/**
+ *
+ */
+ void PrepareForReceivedInviteL();
+
+ /**
*
*/
void InvitationReceivedL();
@@ -151,14 +156,14 @@
virtual void AvailabilityError(
TAvailabilityName aName, TAvailabilityStatus aStatus );
- virtual void AvailabilitiesAbleToShowIndicator();
-
public: //from MMusAvaSettingsObserver
TApplicationState ApplicationState();
TBool OptionAllowed();
+
+ void StartApplicationL( MultimediaSharing::TMusUseCase aUseCase );
private: // from base class MMusIndicatorObserver.
--- a/mmsharing/mmshmanagersrv/inc/musavailabilitypluginmanagerobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/inc/musavailabilitypluginmanagerobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -40,7 +40,8 @@
virtual void AvailabilityChangedL(
MultimediaSharing::TMusAvailabilityStatus aAvailability ) = 0;
- virtual void StartLiveSharingL() = 0;
+ virtual void StartSharingWithUseCaseL( MultimediaSharing::TMusUseCase aUseCase ) = 0;
+
};
--- a/mmsharing/mmshmanagersrv/inc/musmanagerserverclosetimer.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/inc/musmanagerserverclosetimer.h Tue Aug 31 15:12:07 2010 +0300
@@ -39,7 +39,6 @@
void StopActiveSchedulerAfter( TUint aMilliSeconds );
void RunL();
- TInt RunError( TInt aError );
void DoCancel();
private:
--- a/mmsharing/mmshmanagersrv/inc/musmanagerservercommon.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/inc/musmanagerservercommon.h Tue Aug 31 15:12:07 2010 +0300
@@ -19,7 +19,7 @@
#ifndef MUSMANAGERSERVERCOMMON_H
#define MUSMANAGERSERVERCOMMON_H
-const TInt KParameterCount = 7;
+const TInt KParameterCount = 8;
enum EMusManagerServerParameter
{
@@ -30,7 +30,7 @@
KVideoCodec,
KSipProfileId,
KContactName,
- KPrivacyStatus
+ KFastMode
};
#endif // ? MUSMANAGERSERVERCOMMON_H
--- a/mmsharing/mmshmanagersrv/inc/musmanagerservercore.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/inc/musmanagerservercore.h Tue Aug 31 15:12:07 2010 +0300
@@ -25,6 +25,7 @@
#include "musmanagerserversessionobserver.h"
#include "musavailabilitypluginmanagerobserver.h"
#include "musmanagercommon.h"
+#include "musapplicationmanager.h"
class CMusApplicationManager;
class CMusAvailabilityPlugin;
@@ -98,13 +99,34 @@
virtual void AvailabilityChangedL( MultimediaSharing::TMusAvailabilityStatus aAvailability );
- virtual void StartLiveSharingL();
+ virtual void StartSharingWithUseCaseL( MultimediaSharing::TMusUseCase aUseCase );
+
+private: // private methods
+
+ TBool IsMusEnginePlugin();
+
+ MultimediaSharing::TMusAvailabilityStatus Availability();
+
+ TBool ApplicationAllowed();
+
+ void PrepareForReceivedInviteL();
+
+ void WriteSessionPropertiesL(
+ MultimediaSharing::TMusUseCase aUseCase,
+ MultimediaSharing::TMusAvailabilityStatus aStatus,
+ MDesCArray& aSessionParameters );
+
+ void WriteSessionPropertiesL(
+ MultimediaSharing::TMusAvailabilityStatus aStatus,
+ MDesCArray& aSessionParameters );
private: // owned data:
CMusAvailabilityPluginManager* iPluginManager;
CMusApplicationManager* iApplicationManager;
+
+ TBuf8<KMusMgrMaxPluginNameLen> iPluginName;
private: // not owned data
--- a/mmsharing/mmshmanagersrv/src/musapplicationmanager.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/src/musapplicationmanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -23,15 +23,23 @@
#include "musmanagerservercommon.h"
#include "mussessionproperties.h"
#include "musuid.hrh"
+#include "mussettings.h"
+/* PS keys related to NMusSessionInformationApi defined here */
+#include "mussesseioninformationapi.h"
+#include "muscleanupresetanddestroy.h"
+#include "lcengine.h"
#include <apacmdln.h>
#include <apgtask.h>
-//#include <badesca.h>
#include <e32cmn.h>
#include <e32property.h>
+#include <utf.h>
+#include <apadef.h>
+
// CONSTANTS
-
+_LIT8( KDefaultEngineName, "MultimediaSharing" );
+_LIT( KMusUiProcessName, "musui.exe" );
// -----------------------------------------------------------------------------
// CMusApplicationManager::NewL
@@ -79,9 +87,6 @@
MUS_LOG( "mus: [MUSSRV] -> \
CMusApplicationManager::~CMusApplicationManager()" );
- iApaSession.Close();
- iWsSession.Close();
-
MUS_LOG( "mus: [MUSSRV] <- \
CMusApplicationManager::~CMusApplicationManager()" );
}
@@ -95,8 +100,7 @@
{
MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::ConstructL()" );
- User::LeaveIfError( iApaSession.Connect() );
- User::LeaveIfError( iWsSession.Connect() );
+ SetPropertyL( NMusSessionApi::KFastMode, MusSettingsKeys::EFastModeOff );
MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::ConstructL()" );
}
@@ -118,7 +122,10 @@
TBool CMusApplicationManager::ApplicationRunning()
{
MUS_LOG( "mus: [MUSSRV] <> CMusApplicationManager::ApplicationRunning()" );
- return GetApaTask().Exists();
+
+ TFindProcess findProcess( KMusUiProcessName );
+ TFullName name;
+ return ( findProcess.Next( name ) == KErrNone );
}
@@ -136,13 +143,15 @@
}
else
{
- TUid appUid;
- appUid.iUid = KMusUiUid;
+ MUS_LOG( "mus: [MUSSRV] Starting app" );
- TThreadId aThreadId;
-
- User::LeaveIfError(
- iApaSession.StartDocument( KNullDesC, appUid, aThreadId) );
+ RProcess process;
+ CleanupClosePushL( process );
+ HBufC* args = CreateCommandLineArgsLC();
+ User::LeaveIfError( process.Create( KMusUiProcessName, *args ) );
+ process.Resume();
+ CleanupStack::PopAndDestroy( args );
+ CleanupStack::PopAndDestroy( &process );
}
MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::StartApplicationL()" );
@@ -157,8 +166,7 @@
{
MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::StopApplicationL()" );
- TApaTask task = GetApaTask();
- if( task.Exists() )
+ if( ApplicationRunning() )
{
SetPropertyL( NMusSessionApi::KStatus,
MultimediaSharing::EMultimediaSharingNotAvailable );
@@ -176,12 +184,7 @@
{
MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::ShowApplicationL()" );
- // does a task for multimediasharing exist?
- TApaTask task = GetApaTask();
- if( task.Exists() )
- {
- task.BringToForeground();
- }
+ // TODO: How to bring a QT application to foreground?
MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::ShowApplicationL()" );
}
@@ -199,10 +202,21 @@
MUS_LOG2( "mus: [MUSSRV] -> \
CMusApplicationManager::WriteSessionPropertiesL( %d, %d )",
( TInt ) aUseCase, ( TInt ) aStatus );
-
+ TRAPD( error,
+ if ( aUseCase == MultimediaSharing::EMusLiveVideo &&
+ MultimediaSharingSettings::VideoDirectionL() ==
+ MusSettingsKeys::ETwoWayVideo )
+ {
+ MUS_LOG( "mus: [MUSSRV] UseCase MultimediaSharing::EMusTwoWayVideo" );
+ aUseCase = MultimediaSharing::EMusTwoWayVideo;
+ }
+ )
+ if ( error == KErrNoMemory )
+ {
+ User::Leave( error );
+ }
// set use case property
- SetPropertyL( NMusSessionApi::KUseCase,
- ( TInt ) aUseCase );
+ SetPropertyL( NMusSessionApi::KUseCase, ( TInt ) aUseCase );
WriteSessionPropertiesL( aStatus, aSessionParameters );
@@ -257,14 +271,24 @@
SetPropertyL( NMusSessionApi::KContactName,
aSessionParameters.MdcaPoint( KContactName ) );
- // set status property
- SetStatusL( aStatus );
+ // fast mode
+ TInt fastMode;
+ User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KFastMode,
+ fastMode ) );
+ if ( fastMode != MusSettingsKeys::EFastModeDisabled )
+ {
+ lex.Assign( aSessionParameters.MdcaPoint( KFastMode ) );
+ lex.Val( val );
+ SetPropertyL( NMusSessionApi::KFastMode, val );
+ }
+ else
+ {
+ MUS_LOG( "mus: [MUSSRV] fast mode disabled, do not update it" );
+ }
- // set privacy property
- lex.Assign( aSessionParameters.MdcaPoint( KPrivacyStatus ) );
- lex.Val( val );
-
- SetPropertyL( NMusSessionApi::KPrivacyStatus, val );
+ // set status property
+ SetStatusL( aStatus );
MUS_LOG( "mus: [MUSSRV] <- \
CMusApplicationManager::WriteSessionPropertiesL()" );
@@ -368,15 +392,97 @@
MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::SetPropertyL()" );
}
+// -----------------------------------------------------------------------------
+// Reads the callprovider description from the PS key
+// return aProvider will have the proper callprovider name.
+// -----------------------------------------------------------------------------
+//
+void CMusApplicationManager::CallProviderL(TDes8& aProvider)
+ {
+ MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::CallProviderL");
+ const TInt KMusMgrMaxPluginNameLen = 256;
+ TBuf<KMusMgrMaxPluginNameLen> pluginName;
+
+ User::LeaveIfError(RProperty::Get(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ pluginName ));
+ User::LeaveIfError(
+ CnvUtfConverter::ConvertFromUnicodeToUtf8( aProvider, pluginName ));
+
+ MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::CallProviderL");
+ }
// -----------------------------------------------------------------------------
-//
+// Resolves name of the ecom plugin which implements the livecomms engine api
+// by using the callprovider
// -----------------------------------------------------------------------------
//
-TApaTask CMusApplicationManager::GetApaTask()
+void CMusApplicationManager::ResolvePluginNameL(TDes8& aPluginName)
{
- MUS_LOG( "mus: [MUSSRV] <> CMusApplicationManager::GetApaTask()" );
- TUid appUid;
- appUid.iUid = KMusUiUid;
- return TApaTaskList( iWsSession ).FindApp( appUid );
+ MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::ResolvePluginNameL");
+
+ TBuf8<RProperty::KMaxPropertySize> providerName ;
+
+ // Read the call provider name
+ CallProviderL( providerName );
+
+ RImplInfoPtrArray pluginArray;
+ MusCleanupResetAndDestroy<RImplInfoPtrArray>::PushL( pluginArray );
+
+ TEComResolverParams resolverParams;
+
+ resolverParams.SetDataType ( providerName );
+ resolverParams.SetWildcardMatch (ETrue);
+
+ // Use default plugin even if listing fails
+ TRAPD( err,
+ REComSession::ListImplementationsL(KLcEngineInterfaceUid, resolverParams, pluginArray) );
+ MUS_LOG1( "mus: [MUSSRV] List implementations compl:%d", err );
+ if ( err == KErrNoMemory )
+ {
+ User::Leave( err );
+ }
+
+ if( pluginArray.Count() > 0 )
+ {
+ CImplementationInformation* info = pluginArray[ 0 ];
+ __ASSERT_ALWAYS( aPluginName.MaxLength() >= info->DataType().Length(),
+ User::Leave( KErrArgument ) );
+ aPluginName.Copy( info->DataType() );
+ }
+ else
+ {
+ __ASSERT_ALWAYS( aPluginName.MaxLength() >= KDefaultEngineName().Length(),
+ User::Leave( KErrArgument ) );
+ aPluginName.Copy( KDefaultEngineName() );
+ }
+ CleanupStack::PopAndDestroy();//pluginArray
+ MUS_LOG( "mus: [MUSSRV] <- CMusApplicationManager::ResolvePluginNameL");
}
+
+// -----------------------------------------------------------------------------
+// Creates command line used when starting application.
+// -----------------------------------------------------------------------------
+//
+HBufC* CMusApplicationManager::CreateCommandLineArgsLC()
+ {
+ MUS_LOG( "mus: [MUSSRV] -> CMusApplicationManager::CreateCommandLineLC");
+
+ TBuf8<KMusMgrMaxPluginNameLen> pluginNameUtf8;
+ ResolvePluginNameL( pluginNameUtf8 );
+
+ MUS_LOG_TDESC8( "mus: [MUSSRV] Plugin name:", pluginNameUtf8 );
+
+ HBufC* commandLineArgs = HBufC::NewLC( KMusMgrMaxPluginNameLen );
+ TPtr commandLineArgsPtr( commandLineArgs->Des() );
+ User::LeaveIfError(
+ CnvUtfConverter::ConvertToUnicodeFromUtf8(
+ commandLineArgsPtr, pluginNameUtf8 ) );
+
+ MUS_LOG_TDESC( "mus: [MUSSRV] <- command line args:", commandLineArgsPtr );
+
+ return commandLineArgs;
+ }
+
+// End of File
--- a/mmsharing/mmshmanagersrv/src/musavailabilitypluginmanager.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/src/musavailabilitypluginmanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -33,6 +33,10 @@
// CONSTANTS
+// Max number of digits in unsigned 32 bit integer (TInt32)
+const TUint KMaxInt32Length = 16;
+
+
using namespace MultimediaSharing;
// -----------------------------------------------------------------------------
@@ -175,6 +179,21 @@
//
// -----------------------------------------------------------------------------
//
+void CMusAvailabilityPluginManager::PrepareForReceivedInviteL()
+ {
+ MUS_LOG( "mus: [MUSSRV] -> CMusAvailabilityPluginManager::\
+ PrepareForReceivedInviteL()" )
+
+ iPlugin->PrepareForReceivedInviteL();
+
+ MUS_LOG( "mus: [MUSSRV] <- CMusAvailabilityPluginManager::\
+ PrepareForReceivedInviteL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
void CMusAvailabilityPluginManager::InvitationReceivedL()
{
MUS_LOG( "mus: [MUSSRV] -> CMusAvailabilityPluginManager::\
@@ -268,10 +287,34 @@
MMusAvaSettings& settings = iPlugin->Settings();
MUS_LOG( "mus: [MUSSRV] Status available" )
-
- settings.SetManualActivation( MMusAvaSettings::EActivationAllowed );
- iPlugin->StartL();
-
+ if( !iIndicator )
+ {
+ MUS_LOG( "mus: [MUSSRV] Create indicator" )
+ iIndicator = CMusIndicatorApi::NewL( *this );
+ if( iIndicator->ConfirmationQueryL( CMusIndicatorApi::EVsRoamingActivationQuery ) )
+ {
+ settings.SetManualActivation( MMusAvaSettings::EActivationAllowed );
+ iPlugin->StartL();
+ }
+ else
+ {
+ settings.SetManualActivation( MMusAvaSettings::EActivationNotAllowed );
+ }
+ delete iIndicator;
+ iIndicator = NULL;
+ }
+ else
+ {
+ if( iIndicator->ConfirmationQueryL( CMusIndicatorApi::EVsRoamingActivationQuery ) )
+ {
+ settings.SetManualActivation( MMusAvaSettings::EActivationAllowed );
+ iPlugin->StartL();
+ }
+ else
+ {
+ settings.SetManualActivation( MMusAvaSettings::EActivationNotAllowed );
+ }
+ }
MUS_LOG( "mus: [MUSSRV] <- CMusAvailabilityPluginManager::\
ManualQueryL()" )
}
@@ -306,21 +349,6 @@
AvailabilityChanged()" )
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
- void CMusAvailabilityPluginManager::AvailabilitiesAbleToShowIndicator()
- {
- TInt err = 0;
- TRAP( err, IndicateAvailabilityL() );
- if ( err )
- {
- // Not sure about what to do. Very rare situation.
- MUS_LOG1( "mus: [MUSSRV] AvailabilitiesAbleToShowIndicator() leave code: %d",err )
- }
- }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -350,7 +378,7 @@
}
// -----------------------------------------------------------------------------
-//
+// From MMusAvaSettingsObserver
// -----------------------------------------------------------------------------
//
MMusAvaSettingsObserver::TApplicationState CMusAvailabilityPluginManager::
@@ -374,7 +402,7 @@
}
// -----------------------------------------------------------------------------
-//
+// From MMusAvaSettingsObserver
// -----------------------------------------------------------------------------
//
TBool CMusAvailabilityPluginManager::OptionAllowed()
@@ -389,13 +417,23 @@
}
// -----------------------------------------------------------------------------
+// From MMusAvaSettingsObserver
+// -----------------------------------------------------------------------------
+//
+void CMusAvailabilityPluginManager::StartApplicationL(
+ MultimediaSharing::TMusUseCase aUseCase )
+ {
+ iObserver.StartSharingWithUseCaseL( aUseCase );
+ }
+
+// -----------------------------------------------------------------------------
// From MMusIndicatorObserver.
// Starts live video sharing.
// -----------------------------------------------------------------------------
//
void CMusAvailabilityPluginManager::StartLiveSharingL()
{
- iObserver.StartLiveSharingL();
+ iObserver.StartSharingWithUseCaseL( MultimediaSharing::EMusLiveVideo );
}
// -----------------------------------------------------------------------------
@@ -575,22 +613,17 @@
// append sip address proposal
iSessionParameters->AppendL( settings.SipAddressProposal() );
- // Unsafe Magic number 16 is used but unsigned 32 bit integer (TInt32)
- // can't go beyond 16 digits .
- TBuf<16> contactIdBuf;
+ TBuf<KMaxInt32Length> contactIdBuf;
contactIdBuf.Num( settings.ContactId() );
// append contact id
iSessionParameters->AppendL( contactIdBuf );
-
// append video codec
HBufC* videoCodecs = VideoCodecsLC();
iSessionParameters->AppendL( *videoCodecs );
CleanupStack::PopAndDestroy( videoCodecs );
- // Unsafe Magic number 16 is used but unsigned 32 bit integer (TInt32)
- // can't go beyond 16 digits .
- TBuf<16> sipProfileIdBuf;
+ TBuf<KMaxInt32Length> sipProfileIdBuf;
sipProfileIdBuf.Num( settings.SipProfileId() );
MUS_LOG1("iSessionParameters -> SIP Profile ID = %d ",
@@ -602,15 +635,15 @@
HBufC* contactName = ContactNameLC();
iSessionParameters->AppendL( *contactName );
CleanupStack::PopAndDestroy( contactName );
+
+ TBuf<KMaxInt32Length> fastModeBuf;
+ fastModeBuf.Num( settings.FastMode() );
+ MUS_LOG1("iSessionParameters -> fast mode = %d ",
+ settings.FastMode() )
+
+ // append fast mode
+ iSessionParameters->AppendL( fastModeBuf );
- // append call privacy indication
- MUS_LOG1("iSessionParameters -> Call Privacy = %d ",
- settings.CallPrivacy() )
- TBuf<16> callPrivacy;
- callPrivacy.Num( settings.CallPrivacy() );
- iSessionParameters->AppendL( callPrivacy );
-
-
MUS_LOG( "mus: [MUSSRV] <- CMusAvailabilityPluginManager::\
UpdateSessionParametersL()" )
}
@@ -762,8 +795,8 @@
{
MUS_LOG( "mus: [MUSSRV] Create indicator" )
iIndicator = CMusIndicatorApi::NewL( *this );
+ iIndicator->IndicateAvailabilityL();
}
- iIndicator->IndicateAvailabilityL();
iApplicationManager.SetIndicatorStatusL( ETrue );
}
else
--- a/mmsharing/mmshmanagersrv/src/musmanagerserverclosetimer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/src/musmanagerserverclosetimer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -101,18 +101,6 @@
CActiveScheduler::Stop();
}
-// -------------------------------------------------------------------------
-// If RunL() leaves,It should be handled here.
-// -------------------------------------------------------------------------
-//
-TInt CMusManagerServerCloseTimer::RunError( TInt aError )
- {
- // Nothing can be done here.
- aError = KErrNone;
-
- return aError;
- }
-
// ----------------------------------------------------------------------------
// CMusManagerServerCloseTimer::DoCancel
// ----------------------------------------------------------------------------
--- a/mmsharing/mmshmanagersrv/src/musmanagerservercore.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/src/musmanagerservercore.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -25,10 +25,13 @@
#include "muslogger.h"
#include "musmanagerservercoreobserver.h"
#include "musmanager.h"
+#include "musmanagerservercommon.h"
using namespace MultimediaSharing;
// CONSTANTS
+_LIT8( KMusEngineName, "MultimediaSharing" );
+
// -----------------------------------------------------------------------------
// CMusManagerServerCore::NewL
@@ -81,6 +84,8 @@
iApplicationManager = CMusApplicationManager::NewL();
+ iApplicationManager->ResolvePluginNameL( iPluginName );
+
iPluginManager = CMusAvailabilityPluginManager::NewL( *this, *iApplicationManager );
MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::ConstructL" );
@@ -115,7 +120,7 @@
{
MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::AvailabilityQueryL" );
MultimediaSharing::TMusAvailabilityStatus status
- = iPluginManager->Availability();
+ = Availability();
MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::AvailabilityQueryL" );
return status;
@@ -127,7 +132,8 @@
void CMusManagerServerCore::CommandL( MultimediaSharing::TCommandType aCommandType )
{
MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::CommandL" );
- if ( aCommandType == MultimediaSharing::ECommandManualActivation )
+ if ( aCommandType == MultimediaSharing::ECommandManualActivation &&
+ IsMusEnginePlugin() )
{
MUS_LOG( "mus: [MUSSRV] Manual Activation is started" )
iPluginManager->ManualQueryL();
@@ -142,7 +148,10 @@
void CMusManagerServerCore::InvestigateAvailabilityL()
{
MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::InvestigateAvailabilityL" );
- iPluginManager->InvestigateAvailabilityL();
+ if ( IsMusEnginePlugin() )
+ {
+ iPluginManager->InvestigateAvailabilityL();
+ }
MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::InvestigateAvailabilityL" );
}
@@ -157,23 +166,41 @@
TInt uid = aChannelId.iUid;
if( uid == CMusManager::ESipInviteDesired &&
- iPluginManager->ApplicationAllowed() )
- {
+ ApplicationAllowed() )
+ {
+ PrepareForReceivedInviteL();
+
// write session boundary values
- iApplicationManager->WriteSessionPropertiesL(
- MultimediaSharing::EMusReceive,
- iPluginManager->Availability(),
- iPluginManager->SessionParametersL() );
+ WriteSessionPropertiesL(
+ MultimediaSharing::EMusReceive,
+ Availability(),
+ iPluginManager->SessionParametersL() );
iApplicationManager->StartApplicationL();
}
- else if( uid == CMusManager::ESipInviteNotDesired )
+ else if( uid == CMusManager::ESipInviteDesired2WayVideo &&
+ ApplicationAllowed() )
{
- iPluginManager->InvitationReceivedL();
+ PrepareForReceivedInviteL();
+
+ // write session boundary values
+ WriteSessionPropertiesL(
+ MultimediaSharing::EMusReceiveTwoWayVideo,
+ Availability(),
+ iPluginManager->SessionParametersL() );
+
+ iApplicationManager->StartApplicationL();
}
- else
+ else if ( IsMusEnginePlugin() )
{
- User::Leave( KErrNotReady );
+ if( uid == CMusManager::ESipInviteNotDesired )
+ {
+ iPluginManager->InvitationReceivedL();
+ }
+ else
+ {
+ User::Leave( KErrNotReady );
+ }
}
MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::InvitationReceivedL" );
@@ -186,7 +213,10 @@
void CMusManagerServerCore::OptionsReceivedL( TUid /*aChannelId*/ )
{
MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::OptionsReceivedL" );
- iPluginManager->OptionsReceivedL();
+ if ( IsMusEnginePlugin() )
+ {
+ iPluginManager->OptionsReceivedL();
+ }
MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::OptionsReceivedL" );
}
@@ -198,13 +228,13 @@
{
MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::StartMultimediaSharingL" );
if( !iApplicationManager->ApplicationRunning() &&
- iPluginManager->ApplicationAllowed() )
+ ApplicationAllowed() )
{
// write session boundary values
- iApplicationManager->WriteSessionPropertiesL(
- aUseCase,
- iPluginManager->Availability(),
- iPluginManager->SessionParametersL() );
+ WriteSessionPropertiesL(
+ aUseCase,
+ Availability(),
+ iPluginManager->SessionParametersL() );
// start actual application
iApplicationManager->StartApplicationL();
@@ -234,10 +264,13 @@
void CMusManagerServerCore::EventNoSessions()
{
MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::EventNoSessions" );
- TRAPD( error, iPluginManager->StopPluginL() );
- if( error )
+ if ( IsMusEnginePlugin() )
{
- // iObserver.StopServer();
+ TRAPD( error, iPluginManager->StopPluginL() );
+ if( error )
+ {
+ // iObserver.StopServer();
+ }
}
iObserver.StopServer();
MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::EventNoSessions" );
@@ -266,11 +299,18 @@
{
MUS_LOG1( "mus: [MUSSRV] -> CMusManagerServerCore::AvailabilityChangedL( %d )",
aAvailability );
+
+ if ( !IsMusEnginePlugin() )
+ {
+ MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::AvailabilityChangedL - \
+ non-MuS plugin");
+ return;
+ }
// inform ui via application manager (via session api)
- iApplicationManager->WriteSessionPropertiesL(
- aAvailability,
- iPluginManager->SessionParametersL() );
+ WriteSessionPropertiesL(
+ aAvailability,
+ iPluginManager->SessionParametersL() );
if( iAvailabilityMonitors.Count() )
{
@@ -337,9 +377,15 @@
// Starts live video sharing.
// -----------------------------------------------------------------------------
//
-void CMusManagerServerCore::StartLiveSharingL()
+void CMusManagerServerCore::StartSharingWithUseCaseL(
+ MultimediaSharing::TMusUseCase aUseCase )
{
- StartMultimediaSharingL( MultimediaSharing::EMusLiveVideo );
+ MUS_LOG1( "mus: [MUSSRV] -> CMusManagerServerCore::StartSharingWithUseCaseL:%d",
+ aUseCase );
+
+ StartMultimediaSharingL( aUseCase );
+
+ MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::StartSharingWithUseCaseL" );
}
// -----------------------------------------------------------------------------
@@ -357,4 +403,99 @@
}
}
+// -----------------------------------------------------------------------------
+// CMusManagerServerCore::IsMusEnginePlugin
+// -----------------------------------------------------------------------------
+//
+TBool CMusManagerServerCore::IsMusEnginePlugin()
+ {
+ TBool isMus( EFalse );
+ if ( !iPluginName.Compare( KMusEngineName ) )
+ {
+ isMus = ETrue;
+ }
+ return isMus;
+ }
+
+// -----------------------------------------------------------------------------
+// CMusManagerServerCore::Availability
+// -----------------------------------------------------------------------------
+//
+MultimediaSharing::TMusAvailabilityStatus CMusManagerServerCore::Availability()
+ {
+ MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::Availability" );
+ if ( IsMusEnginePlugin() )
+ {
+ MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::Availability - MuS plugin" );
+ return iPluginManager->Availability();
+ }
+ else
+ {
+ MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::Availability - non-MuS plugin" );
+ return EMultimediaSharingAvailable;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMusManagerServerCore::ApplicationAllowed
+// -----------------------------------------------------------------------------
+//
+TBool CMusManagerServerCore::ApplicationAllowed()
+ {
+ if ( IsMusEnginePlugin() )
+ {
+ return iPluginManager->ApplicationAllowed();
+ }
+ else
+ {
+ return ETrue;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMusManagerServerCore::PrepareForReceivedInviteL
+// -----------------------------------------------------------------------------
+//
+void CMusManagerServerCore::PrepareForReceivedInviteL()
+ {
+ if ( IsMusEnginePlugin() )
+ {
+ iPluginManager->PrepareForReceivedInviteL();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMusManagerServerCore::WriteSessionPropertiesL
+// -----------------------------------------------------------------------------
+//
+void CMusManagerServerCore::WriteSessionPropertiesL(
+ MultimediaSharing::TMusUseCase aUseCase,
+ MultimediaSharing::TMusAvailabilityStatus aStatus,
+ MDesCArray& aSessionParameters )
+ {
+ if ( IsMusEnginePlugin() )
+ {
+ iApplicationManager->WriteSessionPropertiesL(
+ aUseCase,
+ aStatus,
+ aSessionParameters );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMusManagerServerCore::WriteSessionPropertiesL
+// -----------------------------------------------------------------------------
+//
+void CMusManagerServerCore::WriteSessionPropertiesL(
+ MultimediaSharing::TMusAvailabilityStatus aStatus,
+ MDesCArray& aSessionParameters )
+ {
+ if ( IsMusEnginePlugin() )
+ {
+ iApplicationManager->WriteSessionPropertiesL(
+ aStatus,
+ aSessionParameters );
+ }
+ }
+
// End of File
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/BWINS/ut_musmanagerserveru.def Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/BWINS/ut_musmanagerserveru.def Tue Aug 31 15:12:07 2010 +0300
@@ -1,36 +1,3 @@
EXPORTS
- ?CreateTestSuiteL@@YAPAVMEUnitTest@@XZ @ 1 NONAME ; class MEUnitTest * __cdecl CreateTestSuiteL(void)
- ?KillTask@TApaTask@@QAEXXZ @ 2 NONAME ; void TApaTask::KillTask(void)
- ?Complete@RMessagePtr2@@QBEXH@Z @ 3 NONAME ; void RMessagePtr2::Complete(int) const
- ?FindApp@TApaTaskList@@QAE?AVTApaTask@@VTUid@@@Z @ 4 NONAME ; class TApaTask TApaTaskList::FindApp(class TUid)
- ?ReStart@CServer2@@QAEXXZ @ 5 NONAME ; void CServer2::ReStart(void)
- ?ListImplementationsL@REComSession@@SAXVTUid@@AAV?$RPointerArray@VCImplementationInformation@@@@@Z @ 6 NONAME ; void REComSession::ListImplementationsL(class TUid, class RPointerArray<class CImplementationInformation> &)
- ?Connect@RApaLsSession@@QAEHXZ @ 7 NONAME ; int RApaLsSession::Connect(void)
- ?StartDocument@RApaLsSession@@QAEHABVTDesC16@@VTUid@@AAVTThreadId@@W4TLaunchType@1@@Z @ 8 NONAME ; int RApaLsSession::StartDocument(class TDesC16 const &, class TUid, class TThreadId &, enum RApaLsSession::TLaunchType)
- ?Client@RMessagePtr2@@QBEHAAVRThread@@W4TOwnerType@@@Z @ 9 NONAME ; int RMessagePtr2::Client(class RThread &, enum TOwnerType) const
- ?Exists@TApaTask@@QAEHXZ @ 10 NONAME ; int TApaTask::Exists(void)
- ?NewLC@CApaCommandLine@@SAPAV1@XZ @ 11 NONAME ; class CApaCommandLine * CApaCommandLine::NewLC(void)
- ??0TApaTask@@QAE@AAVRWsSession@@@Z @ 12 NONAME ; TApaTask::TApaTask(class RWsSession &)
- ?DestroyedImplementation@REComSession@@SAXVTUid@@@Z @ 13 NONAME ; void REComSession::DestroyedImplementation(class TUid)
- ?GetAppInfo@RApaLsSession@@QBEHAAVTApaAppInfo@@VTUid@@@Z @ 14 NONAME ; int RApaLsSession::GetAppInfo(class TApaAppInfo &, class TUid) const
- ?CreateImplementationL@REComSession@@SAPAXVTUid@@J@Z @ 15 NONAME ; void * REComSession::CreateImplementationL(class TUid, long)
- ?Install@CActiveScheduler@@SAXPAV1@@Z @ 16 NONAME ; void CActiveScheduler::Install(class CActiveScheduler *)
- ??0RApaLsSession@@QAE@XZ @ 17 NONAME ; RApaLsSession::RApaLsSession(void)
- ?FindApp@TApaTaskList@@QAE?AVTApaTask@@ABVTDesC16@@@Z @ 18 NONAME ; class TApaTask TApaTaskList::FindApp(class TDesC16 const &)
- ?StartApp@RApaLsSession@@QAEHABVCApaCommandLine@@AAVTThreadId@@@Z @ 19 NONAME ; int RApaLsSession::StartApp(class CApaCommandLine const &, class TThreadId &)
- ?StartApp@RApaLsSession@@QAEHABVCApaCommandLine@@AAVTThreadId@@PAVTRequestStatus@@@Z @ 20 NONAME ; int RApaLsSession::StartApp(class CApaCommandLine const &, class TThreadId &, class TRequestStatus *)
- ??0TApaTaskList@@QAE@AAVRWsSession@@@Z @ 21 NONAME ; TApaTaskList::TApaTaskList(class RWsSession &)
- ?FindDoc@TApaTaskList@@QAE?AVTApaTask@@ABVTDesC16@@@Z @ 22 NONAME ; class TApaTask TApaTaskList::FindDoc(class TDesC16 const &)
- ?SetExecutableNameL@CApaCommandLine@@QAEXABVTDesC16@@@Z @ 23 NONAME ; void CApaCommandLine::SetExecutableNameL(class TDesC16 const &)
- ?RequestComplete@RThread@@QBEXAAPAVTRequestStatus@@H@Z @ 24 NONAME ; void RThread::RequestComplete(class TRequestStatus * &, int) const
- ?Version@RApaLsSession@@QBE?AVTVersion@@XZ @ 25 NONAME ; class TVersion RApaLsSession::Version(void) const
- ?BringToForeground@TApaTask@@QAEXXZ @ 26 NONAME ; void TApaTask::BringToForeground(void)
- ?EndTask@TApaTask@@QAEXXZ @ 27 NONAME ; void TApaTask::EndTask(void)
- ?SendToBackground@TApaTask@@QAEXXZ @ 28 NONAME ; void TApaTask::SendToBackground(void)
- ?WriteL@RMessagePtr2@@QBEXHABVTDesC8@@H@Z @ 29 NONAME ; void RMessagePtr2::WriteL(int, class TDesC8 const &, int) const
- ?ReadL@RMessagePtr2@@QBEXHAAVTDes8@@H@Z @ 30 NONAME ; void RMessagePtr2::ReadL(int, class TDes8 &, int) const
- ?StartApp@RApaLsSession@@QAEHABVCApaCommandLine@@@Z @ 31 NONAME ; int RApaLsSession::StartApp(class CApaCommandLine const &)
- ?GetDesMaxLength@RMessagePtr2@@QBEHH@Z @ 32 NONAME ; int RMessagePtr2::GetDesMaxLength(int) const
- ?FindByPos@TApaTaskList@@QAE?AVTApaTask@@H@Z @ 33 NONAME ; class TApaTask TApaTaskList::FindByPos(int)
- ?Close@RApaLsSession@@QAEXXZ @ 34 NONAME ; void RApaLsSession::Close(void)
+ ?CreateTestSuiteL@@YAPAVMEUnitTest@@XZ @ 1 NONAME ; class MEUnitTest * CreateTestSuiteL(void)
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/EABI/ut_musmanagerserveru.def Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/EABI/ut_musmanagerserveru.def Tue Aug 31 15:12:07 2010 +0300
@@ -1,19 +1,4 @@
EXPORTS
_Z16CreateTestSuiteLv @ 1 NONAME
- _ZTI16CMusAvaSettings2 @ 2 NONAME ; #<TI>#
- _ZTI17CMusAvaInterface2 @ 3 NONAME ; #<TI>#
- _ZTI17CMusManagerServer @ 4 NONAME ; #<TI>#
- _ZTI21CMusManagerServerCore @ 5 NONAME ; #<TI>#
- _ZTI22CMusApplicationManager @ 6 NONAME ; #<TI>#
- _ZTI24CMusManagerServerSession @ 7 NONAME ; #<TI>#
- _ZTI27CMusManagerServerCloseTimer @ 8 NONAME ; #<TI>#
- _ZTI29CMusAvailabilityPluginManager @ 9 NONAME ; #<TI>#
- _ZTV16CMusAvaSettings2 @ 10 NONAME ; #<VT>#
- _ZTV17CMusAvaInterface2 @ 11 NONAME ; #<VT>#
- _ZTV17CMusManagerServer @ 12 NONAME ; #<VT>#
- _ZTV21CMusManagerServerCore @ 13 NONAME ; #<VT>#
- _ZTV22CMusApplicationManager @ 14 NONAME ; #<VT>#
- _ZTV24CMusManagerServerSession @ 15 NONAME ; #<VT>#
- _ZTV27CMusManagerServerCloseTimer @ 16 NONAME ; #<VT>#
- _ZTV29CMusAvailabilityPluginManager @ 17 NONAME ; #<VT>#
+
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -15,6 +15,6 @@
*
*/
-
-PRJ_TESTMMPFILES
+PRJ_MMPFILES
+../../../../mmshindicator/group/musindicator.mmp
ut_musmanagerserver.mmp
\ No newline at end of file
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/group/ut_musmanagerserver.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/group/ut_musmanagerserver.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -17,7 +17,7 @@
#include <platform_paths.hrh>
-#include<eunitcaps.h>
+#include <eunitcaps.h>
TARGET ut_musmanagerserver.dll
TARGETTYPE dll
@@ -25,7 +25,7 @@
TARGETPATH /DigiaEUnit/Tests
UID 0x1000af5a 0x01700000
-CAPABILITY EUNIT_CAPS
+CAPABILITY EUNIT_CAPS
VENDORID VID_DEFAULT
MACRO UNIT_TESTING
@@ -33,10 +33,8 @@
SOURCEPATH ../../../../../tsrc/propertystub/src
SOURCE e32property.cpp
-SOURCEPATH ../../../../../tsrc/apastub/src
-SOURCE apgtask.cpp
-SOURCE apgcli.cpp
-SOURCE apacmdln.cpp
+SOURCEPATH ../../../../../tsrc/multimediasharingsettingsstub/src
+SOURCE mussettings.cpp
SOURCEPATH ../../../../../tsrc/mmusavasettingsstub/src
SOURCE mmusavasettingsstub.cpp
@@ -52,9 +50,10 @@
SOURCEPATH ../../../../mmshavailability/src
-SOURCE musavasettingsimp.cpp
+SOURCE musavasettingsimp.cpp
SOURCEPATH ../src
+SOURCE stubs.cpp
SOURCE ut_cmusapplicationmanager.cpp
SOURCE ut_cmusavailabilitypluginmanager.cpp
SOURCE ut_cmusmanagerserverclosetimer.cpp
@@ -73,6 +72,7 @@
SOURCE musmanagerservermain.cpp
SOURCE musmanagerserversession.cpp
+USERINCLUDE ../../../../../tsrc/multimediasharingsettingsstub/inc
USERINCLUDE ../inc
USERINCLUDE ../../../../mmshavailability/inc
USERINCLUDE ../../../inc
@@ -101,4 +101,5 @@
LIBRARY ws32.lib
LIBRARY flogger.lib
LIBRARY bafl.lib
+LIBRARY charconv.lib
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/group/ut_musmanagerserver.pkg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-;
-; Copyright (c) 2009 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:
-;
-
-;Languages
-&EN
-
-;Header
-#{"EUnit: MMSHMgrSRV"},(0x01700000),1,0,0
-
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique vendor name
-:"Nokia"
-
-;DLL files
-"\epoc32\release\armv5\urel\ut_musmanagerserver.dll"-"c:\sys\bin\ut_musmanagerserver.dll"
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/inc/ut_cmusapplicationmanager.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/inc/ut_cmusapplicationmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -75,9 +75,11 @@
void UT_CMusApplicationManager_WriteSessionPropertiesL();
void UT_CMusApplicationManager_SetPropertyLL();
void UT_CMusApplicationManager_SetPropertyL2L();
- void UT_CMusApplicationManager_GetApaTaskL();
void UT_CMusApplicationManager_MapAvailabilitiesL();
void UT_CMusApplicationManager_SetStatusLL();
+ void UT_CMusApplicationManager_CallProviderLL();
+ void UT_CMusApplicationManager_ResolvePluginNameLL();
+ void UT_CMusApplicationManager_CreateCommandLineArgsLCL();
private: // data
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/inc/ut_cmusavailabilitypluginmanager.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/inc/ut_cmusavailabilitypluginmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -77,7 +77,7 @@
*
* @since S60 v3.2
*/
- virtual void StartLiveSharingL();
+ virtual void StartSharingWithUseCaseL( MultimediaSharing::TMusUseCase aUseCase );
private:
@@ -115,6 +115,7 @@
void UT_CMusAvailabilityPluginManager_TelNumberLCL();
void UT_CMusAvailabilityPluginManager_ContactNameLCL();
void UT_CMusAvailabilityPluginManager_IndicateAvailabilityLL();
+ void UT_CMusAvailabilityPluginManager_PrepareForReceivedInviteLL();
private: // data
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/inc/ut_cmusmanagerservercore.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/inc/ut_cmusmanagerservercore.h Tue Aug 31 15:12:07 2010 +0300
@@ -109,6 +109,7 @@
void UT_CMusManagerServerCore_AvailabilityChangedLL();
void UT_CMusManagerServerCore_MonitorAvailabilityLL();
void UT_CMusManagerServerCore_RegisterObserverL();
+ void UT_CMusManagerServerCore_IsMusEnginePluginL();
private: // data
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/src/UT_CMusApplicationManager.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/src/UT_CMusApplicationManager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -24,6 +24,8 @@
#include "musmanagerservercommon.h"
#include "mussessionproperties.h"
#include "mustesthelp.h"
+#include "mussettings.h"
+#include "mussesseioninformationapi.h"
#include <apgcli.h>
#include <apgtask.h>
#include <e32std.h>
@@ -92,7 +94,8 @@
{
delete iManager;
iManager = NULL;
- PropertyHelper::Close();
+ PropertyHelper::Close();
+ Dll::FreeTls(); // Used by the RProcess and TFindProcess stubs
}
@@ -106,7 +109,11 @@
void UT_CMusApplicationManager::UT_CMusApplicationManager_NewLL()
{
EUNIT_ASSERT( iManager );
- EUNIT_ASSERT( iManager->iApaSession.iConnected );
+ TInt fastMode;
+ User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KFastMode,
+ fastMode ) );
+ EUNIT_ASSERT_EQUALS( TInt( MusSettingsKeys::EFastModeOff ), fastMode );
}
@@ -118,7 +125,6 @@
{
CMusApplicationManager* manager = CMusApplicationManager::NewLC();
EUNIT_ASSERT( manager );
- EUNIT_ASSERT( manager->iApaSession.iConnected );
CleanupStack::PopAndDestroy( manager );
}
@@ -129,12 +135,10 @@
//
void UT_CMusApplicationManager::UT_CMusApplicationManager_ApplicationRunningL()
{
- TApaTask::iApplicationExist = EFalse;
- EUNIT_ASSERT( !iManager->ApplicationRunning() );
- EUNIT_ASSERT( TApaTask::iApaTaskCalledFunction == TApaTask::EExists )
- TApaTask::iApplicationExist = ETrue;
- EUNIT_ASSERT( iManager->ApplicationRunning() );
- EUNIT_ASSERT( TApaTask::iApaTaskCalledFunction == TApaTask::EExists )
+ EUNIT_ASSERT( !iManager->ApplicationRunning() )
+
+ iManager->StartApplicationL();
+ EUNIT_ASSERT( iManager->ApplicationRunning() )
}
@@ -145,15 +149,13 @@
//
void UT_CMusApplicationManager::UT_CMusApplicationManager_StartApplicationLL()
{
- TApaTask::iApplicationExist = EFalse;
+ EUNIT_ASSERT( !iManager->ApplicationRunning() )
iManager->StartApplicationL();
- EUNIT_ASSERT( TApaTask::iApaTaskCalledFunction == TApaTask::EExists )
- EUNIT_ASSERT_EQUALS( PropertyHelper::GetCalledFunction(), RProperty::ENone )
-
- TApaTask::iApplicationExist = ETrue;
+ EUNIT_ASSERT_EQUALS( PropertyHelper::GetCalledFunction(), RProperty::EDefine )
+ EUNIT_ASSERT( iManager->ApplicationRunning() )
+
iManager->StartApplicationL();
- EUNIT_ASSERT_EQUALS( PropertyHelper::GetCalledFunction(), RProperty::ENone )
-
+ EUNIT_ASSERT( iManager->ApplicationRunning() )
}
@@ -164,16 +166,17 @@
//
void UT_CMusApplicationManager::UT_CMusApplicationManager_StopApplicationLL()
{
- TApaTask::iApplicationExist = EFalse;
- iManager->StopApplicationL();
- EUNIT_ASSERT( TApaTask::iApaTaskCalledFunction == TApaTask::EExists )
+ // MuS not running
+ iManager->StopApplicationL();
-
- TApaTask::iApplicationExist = ETrue;
+ // MuS running
+ User::LeaveIfError(
+ Dll::SetTls( reinterpret_cast< TAny* >( 1 ) ) );
+ // TLS is used by TFindProcess stub
iManager->StopApplicationL();
TInt availability = MultimediaSharing::EMultimediaSharingAvailable;
- TUint key(NMusSessionApi::KStatus);
- RProperty::Get( key,availability);
+ TUint key( NMusSessionApi::KStatus );
+ RProperty::Get( key, availability );
EUNIT_ASSERT_EQUALS( PropertyHelper::GetCalledFunction(), RProperty::EDefine )
EUNIT_ASSERT_EQUALS( availability,
MultimediaSharing::EMultimediaSharingNotAvailable )
@@ -181,18 +184,11 @@
// ---------------------------------------------------------------------------
-// Asserts that tested method calls TApaTask::Exists and if task exists it
-// calls TApaTask::BringToForeground.
+//
// ---------------------------------------------------------------------------
//
void UT_CMusApplicationManager::UT_CMusApplicationManager_ShowApplicationLL()
{
- TApaTask::iApplicationExist = EFalse;
- iManager->ShowApplicationL();
- EUNIT_ASSERT( TApaTask::iApaTaskCalledFunction == TApaTask::EExists )
- TApaTask::iApplicationExist = ETrue;
- iManager->ShowApplicationL();
- EUNIT_ASSERT( TApaTask::iApaTaskCalledFunction == TApaTask::EBringToForeground )
}
@@ -213,7 +209,7 @@
array->AppendL( _L( "e" ) );
array->AppendL( _L( "f" ) );
array->AppendL( _L( "g" ) );
- array->AppendL( _L( "h" ) );
+ array->AppendL( _L( "0" ) ); //EFastModeOn
iManager->WriteSessionPropertiesL(
MultimediaSharing::EMusLiveVideo,
@@ -229,7 +225,40 @@
*array ), KErrGeneral );
PropertyHelper::SetErrorCode(KErrNone);
+
+
+ MultimediaSharingSettings::iVideoDirection = MusSettingsKeys::ETwoWayVideo;
+ iManager->WriteSessionPropertiesL(
+ MultimediaSharing::EMusLiveVideo,
+ (MultimediaSharing::TMusAvailabilityStatus) KErrNone,
+ *array );
+
+ TInt val;
+ User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KUseCase,
+ val ) );
+
+ MultimediaSharing::TMusUseCase usecase =
+ static_cast< MultimediaSharing::TMusUseCase >( val );
+
+ EUNIT_ASSERT( usecase == MultimediaSharing::EMusTwoWayVideo );
+
+
+ //Ensure if fast mode key is "disabled", value from session params
+ //won't be published
+ User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KFastMode,
+ MusSettingsKeys::EFastModeDisabled ) );
+ iManager->WriteSessionPropertiesL(
+ MultimediaSharing::EMusLiveVideo,
+ (MultimediaSharing::TMusAvailabilityStatus) KErrNone,
+ *array );
+ User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KFastMode,
+ val ) );
+ EUNIT_ASSERT_EQUALS( TInt( MusSettingsKeys::EFastModeDisabled ), val );
+
CleanupStack::PopAndDestroy( array );
}
@@ -276,18 +305,6 @@
// ---------------------------------------------------------------------------
-// Asserts that TApaTaskList::FindApp is called by tested method.
-// ---------------------------------------------------------------------------
-//
-void UT_CMusApplicationManager::UT_CMusApplicationManager_GetApaTaskL()
- {
- TApaTask::iApplicationExist = EFalse;
- iManager->GetApaTask();
- EUNIT_ASSERT( TApaTaskList::iCalledFunction == TApaTaskList::EFindApp )
- }
-
-
-// ---------------------------------------------------------------------------
// Sets a videosharing status. Asserts that RProperty leaves are passed
// correctly to user and RProperty::Define is called.
// ---------------------------------------------------------------------------
@@ -306,6 +323,114 @@
}
+// ---------------------------------------------------------------------------
+// CallProviderL Test
+// ---------------------------------------------------------------------------
+//
+void UT_CMusApplicationManager::UT_CMusApplicationManager_CallProviderLL()
+ {
+ TInt error = KErrNone;
+
+ // Use Publish & Subscribe Keys to set CallProvider Name
+ _LIT( KProviderName1, "MultimediaSharing");
+ _LIT8( KProviderNameTest1, "MultimediaSharing");
+
+ _LIT( KProviderNameEmpty1, "");
+ _LIT8( KProviderNameEmptyTest1, "");
+
+
+ // Valid Test:
+ TRAP( error, RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ KProviderName1 ));
+
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ TBuf8<RProperty::KMaxPropertySize> providerName ;
+ iManager->CallProviderL( providerName );
+
+ EUNIT_ASSERT( providerName == KProviderNameTest1 );
+
+
+ //Empty Test
+ TRAP( error, RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ KProviderNameEmpty1 ));
+
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ iManager->CallProviderL( providerName );
+
+ EUNIT_ASSERT( providerName == KProviderNameEmptyTest1 );
+ }
+
+
+// ---------------------------------------------------------------------------
+// ResolvePluginName Test
+// ---------------------------------------------------------------------------
+//
+void UT_CMusApplicationManager::UT_CMusApplicationManager_ResolvePluginNameLL()
+ {
+ // Default Engine Name to be returned
+ TInt error = KErrNone;
+ _LIT( KEngineName, "MultimediaSharing");
+ _LIT8( KEngineTestName, "MultimediaSharing");
+
+ // Test String for the Publish/Subscribe Keys.
+ _LIT( KProviderName, "MultimediaSharing");
+ _LIT( KProviderName1, "CS");
+
+ TBuf8<RProperty::KMaxPropertySize> engineName ;
+
+ // Use Publish & Subscribe Keys to set Engine Name as
+ // 1. MultimediaSharing [Exact Name]
+ // 2. CS [No Match Found, Default MultiMediaSharing will be picked]
+
+ // 1. MultimediaSharing [Exact Name]
+
+ TRAP( error, RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ KProviderName ));
+
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ iManager->ResolvePluginNameL( engineName );
+ EUNIT_ASSERT( engineName == KEngineTestName );
+
+ // 2. CS [No Match Found, Default MultiMediaSharing will be picked]
+ TRAP( error, RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ KProviderName1 ));
+
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( error == KErrNone );
+
+ iManager->ResolvePluginNameL( engineName );
+ EUNIT_ASSERT( engineName == KEngineTestName );
+ }
+
+// ---------------------------------------------------------------------------
+// Command line arg test
+// ---------------------------------------------------------------------------
+//
+void UT_CMusApplicationManager::UT_CMusApplicationManager_CreateCommandLineArgsLCL()
+ {
+ _LIT( KEnginePluginName, "MultimediaSharing" );
+ HBufC* cmdLineArgs = iManager->CreateCommandLineArgsLC();
+
+ EUNIT_ASSERT( cmdLineArgs != NULL )
+ EUNIT_ASSERT_EQUALS( KEnginePluginName(), *cmdLineArgs )
+
+ CleanupStack::PopAndDestroy( cmdLineArgs );
+ }
+
// ======== EUNIT TEST TABLE ========
@@ -378,17 +503,31 @@
SetupL, UT_CMusApplicationManager_SetPropertyL2L, Teardown )
EUNIT_TEST(
- "GetApaTask - test ",
- "CMusApplicationManager",
- "GetApaTask",
- "FUNCTIONALITY",
- SetupL, UT_CMusApplicationManager_GetApaTaskL, Teardown )
-
-EUNIT_TEST(
"SetStatusL - test ",
"CMusApplicationManager",
"SetStatusL",
"FUNCTIONALITY",
SetupL, UT_CMusApplicationManager_SetStatusLL, Teardown )
+EUNIT_TEST(
+ "CallProviderL - test ",
+ "CMusApplicationManager",
+ "CallProviderL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusApplicationManager_CallProviderLL, Teardown )
+
+EUNIT_TEST(
+ "ResolvePluginNameL - test ",
+ "CMusApplicationManager",
+ "ResolvePluginNameL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusApplicationManager_ResolvePluginNameLL, Teardown )
+
+EUNIT_TEST(
+ "CreateCommandLineLC - test ",
+ "CMusApplicationManager",
+ "CreateCommandLineLC",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusApplicationManager_CreateCommandLineArgsLCL, Teardown )
+
EUNIT_END_TEST_TABLE
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/src/UT_CMusManagerServerCore.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/src/UT_CMusManagerServerCore.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -30,6 +30,8 @@
#include <apgtask.h>
#include <digia/eunit/eunitmacros.h>
+_LIT8( KMusEngineName, "MultimediaSharing" );
+_LIT8( KAnotherEngineName, "AnotherEngine" );
// ======== MEMBER FUNCTIONS ========
@@ -118,8 +120,7 @@
iCore = CMusManagerServerCore::NewL( *this );
iStopServerCalled = EFalse;
iAvailabilityChangedLCalled = EFalse;
- iSessionCount = 0;
- TApaTask::iApaTaskCalledFunction = TApaTask::ENone;
+ iSessionCount = 0;
}
@@ -130,7 +131,8 @@
void UT_CMusManagerServerCore::Teardown()
{
delete iCore;
- PropertyHelper::Close();
+ PropertyHelper::Close();
+ Dll::FreeTls(); // Used by the RProcess and TFindProcess stubs
}
@@ -190,17 +192,32 @@
//
void UT_CMusManagerServerCore::UT_CMusManagerServerCore_InvitationReceivedLL()
{
+ // 1. The cases with MuS engine
+ iCore->iPluginName = KMusEngineName;
+
TUid uid = { 0x10101010 }; // Not a valid UID in musmanager.h
// since used UID is not in appropriate, this should leave
EUNIT_ASSERT_SPECIFIC_LEAVE(
iCore->InvitationReceivedL( uid ), KErrNotReady );
uid.iUid = 0x1028238D; // ESipInviteNotDesired from musmanager.h
- EUNIT_ASSERT_NO_LEAVE( iCore->InvitationReceivedL( uid ) );
+ iCore->InvitationReceivedL( uid );
uid.iUid = 0x10282391; // ESipInviteDesired from musmanager.h
EUNIT_ASSERT_SPECIFIC_LEAVE(
iCore->InvitationReceivedL( uid ), KErrNotReady );
+
+ // 2. The cases with non-MuS engine
+ iCore->iPluginName = KAnotherEngineName;
+
+ uid.iUid = 0x10101010; // Not a valid UID in musmanager.h
+ iCore->InvitationReceivedL( uid );
+
+ uid.iUid = 0x1028238D; // ESipInviteNotDesired from musmanager.h
+ iCore->InvitationReceivedL( uid );
+
+ uid.iUid = 0x10282391; // ESipInviteDesired from musmanager.h
+ iCore->InvitationReceivedL( uid );
}
@@ -211,16 +228,22 @@
void UT_CMusManagerServerCore::UT_CMusManagerServerCore_OptionsReceivedLL()
{
TUid uid = { 0x10101010 };
+ iCore->iPluginName = KMusEngineName;
+ iCore->iPluginManager->iPluginStarted = EFalse;
iCore->OptionsReceivedL( uid );
EUNIT_ASSERT( iCore->iPluginManager->iPluginStarted );
+
+ iCore->iPluginName = KAnotherEngineName;
+ iCore->iPluginManager->iPluginStarted = EFalse;
+ iCore->OptionsReceivedL( uid );
+ EUNIT_ASSERT ( !(iCore->iPluginManager->iPluginStarted) );
}
// ---------------------------------------------------------------------------
// Asserts that tested method does not leave. In certain case it could leave
// with KErrPermissionDenied, but with this this test, used capabilities
-// and used stubs, tested method shouldn't leave. Checks also that
-// TApaTask function TaskExists is called.
+// and used stubs, tested method shouldn't leave.
// ---------------------------------------------------------------------------
//
void UT_CMusManagerServerCore::
@@ -241,10 +264,6 @@
// Test for "if( !iApplicationManager->ApplicationRunning() &&
// iPluginManager->ApplicationAllowed() ) branch ->
// -----------------------------------------------------------------------
-
- // CMusApplicationManager::ApplicationRunning = EFalse
- TApaTask::iApplicationExist = EFalse;
-
// CMusAvailabilityPluginManager::ApplicationAllowed = ETrue
abilityStub->iNameStub = MMusAvaObserver::EMusAvaNameRegistration;
abilityStub->iStatusStub = MMusAvaObserver::EMusAvaStatusAvailable;
@@ -263,7 +282,6 @@
MUS_EUNIT_ASSERT_NO_LEAVE(
iCore->StartMultimediaSharingL( MultimediaSharing::EMusLiveVideo ) );
EUNIT_ASSERT( PropertyHelper::GetCalledFunction() == RProperty::EDefine );
- EUNIT_ASSERT( TApaTask::iApaTaskCalledFunction == TApaTask::EExists );
// <- Test for "if( !iApplicationManager->ApplicationRunning() &&
// iPluginManager->ApplicationAllowed() ) branch
@@ -279,12 +297,8 @@
// CMusApplicationManager::ApplicationRunning = EFalse
- TApaTask::iApplicationExist = EFalse;
MUS_EUNIT_ASSERT_NO_LEAVE(
iCore->StartMultimediaSharingL( MultimediaSharing::EMusLiveVideo ) );
- EUNIT_ASSERT( TApaTask::iApaTaskCalledFunction == TApaTask::EExists );
-
- // <- Test for else branch
}
@@ -296,15 +310,17 @@
void UT_CMusManagerServerCore::
UT_CMusManagerServerCore_StopMultimediaSharingLL()
{
- TApaTask::iApplicationExist = EFalse;
+ // MuS not running
iCore->StopMultimediaSharingL();
- EUNIT_ASSERT( TApaTask::iApaTaskCalledFunction == TApaTask::EExists )
- TApaTask::iApplicationExist = ETrue;
+ // MuS running
+ User::LeaveIfError(
+ Dll::SetTls( reinterpret_cast< TAny* >( 1 ) ) );
+ // TLS is used by TFindProcess stub
iCore->StopMultimediaSharingL();
TInt availability = MultimediaSharing::EMultimediaSharingAvailable;
- TUint key(NMusSessionApi::KStatus);
- RProperty::Get( key,availability);
+ TUint key( NMusSessionApi::KStatus );
+ RProperty::Get( key, availability );
EUNIT_ASSERT_EQUALS( PropertyHelper::GetCalledFunction(), RProperty::EDefine )
EUNIT_ASSERT_EQUALS( availability,
MultimediaSharing::EMultimediaSharingNotAvailable )
@@ -318,7 +334,16 @@
//
void UT_CMusManagerServerCore::UT_CMusManagerServerCore_EventNoSessionsL()
{
+ iCore->iPluginName = KMusEngineName;
+ iCore->iPluginManager->iPluginStarted = ETrue;
iCore->EventNoSessions();
+ EUNIT_ASSERT ( !(iCore->iPluginManager->iPluginStarted) );
+ EUNIT_ASSERT( iStopServerCalled );
+
+ iCore->iPluginName = KAnotherEngineName;
+ iCore->iPluginManager->iPluginStarted = ETrue;
+ iCore->EventNoSessions();
+ EUNIT_ASSERT ( iCore->iPluginManager->iPluginStarted );
EUNIT_ASSERT( iStopServerCalled );
}
@@ -349,11 +374,15 @@
void UT_CMusManagerServerCore::
UT_CMusManagerServerCore_AvailabilityChangedLL()
{
+ iCore->iPluginName = KMusEngineName;
MUS_EUNIT_ASSERT_NO_LEAVE( iCore->AvailabilityChangedL(
(MultimediaSharing::TMusAvailabilityStatus) KErrNone ) );
-
EUNIT_ASSERT( iCore->iAvailabilityMonitors.Count() == 0 );
+ iCore->iPluginName = KAnotherEngineName;
+ MUS_EUNIT_ASSERT_NO_LEAVE( iCore->AvailabilityChangedL(
+ (MultimediaSharing::TMusAvailabilityStatus) KErrNone ) );
+ EUNIT_ASSERT( iCore->iAvailabilityMonitors.Count() == 0 );
}
@@ -370,6 +399,15 @@
EUNIT_ASSERT( iCore->iAvailabilityMonitors.Count() == monitors );
}
+void UT_CMusManagerServerCore::UT_CMusManagerServerCore_IsMusEnginePluginL()
+ {
+ iCore->iPluginName = KMusEngineName;
+ EUNIT_ASSERT( iCore->IsMusEnginePlugin() );
+
+ iCore->iPluginName = KAnotherEngineName;
+ EUNIT_ASSERT( !(iCore->IsMusEnginePlugin()) );
+ }
+
// ======== EUNIT TEST TABLE ========
@@ -464,5 +502,11 @@
"FUNCTIONALITY",
SetupL, UT_CMusManagerServerCore_AvailabilityChangedLL, Teardown)
+EUNIT_TEST(
+ "IsMusEnginePlugin - test ",
+ "CMusManagerServerCore",
+ "IsMusEnginePlugin",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusManagerServerCore_IsMusEnginePluginL, Teardown)
EUNIT_END_TEST_TABLE
--- a/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/src/UT_CMusavailabilityPluginManager.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/src/UT_CMusavailabilityPluginManager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -27,7 +27,6 @@
#include "cmusavainterfacestub.h"
#include "musmanagerservercommon.h"
#include "musapplicationmanager.h"
-#include "mussesseioninformationapi.h"
#include <digia/eunit/eunitmacros.h>
#include <E32Math.h>
#include <E32Property.h>
@@ -48,10 +47,6 @@
*/
_LIT( KUsedSipAddress, "sip:stadi@hesa.fi" );
-/*
- * Privacy status from MusAvaSettingsStub.
- */
-_LIT( KUsedPrivacyStatus, "1" );
// ======== MEMBER FUNCTIONS ========
@@ -118,7 +113,8 @@
// From class MMusAvailabilityPluginManagerObserver.
// ---------------------------------------------------------------------------
//
-void UT_CMusAvailabilityPluginManager::StartLiveSharingL()
+void UT_CMusAvailabilityPluginManager::StartSharingWithUseCaseL(
+ MultimediaSharing::TMusUseCase /*aUseCase*/ )
{
iCalledAStartLiveSharing = ETrue;
}
@@ -145,7 +141,8 @@
delete iManager;
iManager = NULL;
delete iAppManager;
- PropertyHelper::Close();
+ PropertyHelper::Close();
+ Dll::FreeTls(); // Used by the RProcess and TFindProcess stubs
}
@@ -256,15 +253,10 @@
//
void UT_CMusAvailabilityPluginManager::UT_CMusAvailabilityPluginManager_SessionParametersL()
{
- CMusAvaInterface* interface = iManager->iPlugin;
- CMusAvaInterface2* interface2 = static_cast<CMusAvaInterface2*>( interface );
- interface2->iSettings->iCallPrivacy = 1;
-
MDesCArray* params = &iManager->SessionParametersL();
EUNIT_ASSERT_EQUALS( KUsedTelNumber(), params->MdcaPoint( KTelNumber ) );
EUNIT_ASSERT_EQUALS( KUsedSipAddress(), params->MdcaPoint( KSipAddress ) );
EUNIT_ASSERT_EQUALS( KUsedVideoCodec(), params->MdcaPoint( KVideoCodec ) );
- EUNIT_ASSERT( !params->MdcaPoint( KPrivacyStatus ).Compare( KUsedPrivacyStatus() ) );
}
// ---------------------------------------------------------------------------
@@ -402,15 +394,11 @@
//
void UT_CMusAvailabilityPluginManager::
UT_CMusAvailabilityPluginManager_UpdateSessionParametersLL()
- {
+ {
MDesCArray* params = &iManager->SessionParametersL();
- CMusAvaInterface* interface = iManager->iPlugin;
- CMusAvaInterface2* interface2 = static_cast<CMusAvaInterface2*>( interface );
- interface2->iSettings->iCallPrivacy = 1;
EUNIT_ASSERT_EQUALS( KUsedTelNumber(), iManager->SessionParametersL().MdcaPoint( KTelNumber ) );
EUNIT_ASSERT_EQUALS( KUsedSipAddress(), iManager->SessionParametersL().MdcaPoint( KSipAddress ) );
EUNIT_ASSERT_EQUALS( KUsedVideoCodec(), iManager->SessionParametersL().MdcaPoint( KVideoCodec ) );
- EUNIT_ASSERT( !iManager->SessionParametersL().MdcaPoint( KPrivacyStatus ).Compare( KUsedPrivacyStatus() ) );
}
@@ -482,6 +470,19 @@
iManager->IndicateAvailabilityL();
}
+void UT_CMusAvailabilityPluginManager::UT_CMusAvailabilityPluginManager_PrepareForReceivedInviteLL()
+ {
+ CMusAvaInterface* interface = iManager->iPlugin;
+ CMusAvaInterface2* interface2 = static_cast<CMusAvaInterface2*>( interface );
+
+ CMusAvaAvailabilityStub* abilityStub =
+ static_cast<CMusAvaAvailabilityStub*>( interface2->iAvailabilities[0] );
+ abilityStub->iPrepareForInviteCalled = EFalse;
+
+ iManager->PrepareForReceivedInviteL();
+ EUNIT_ASSERT( abilityStub->iPrepareForInviteCalled );
+ }
+
// ======== EUNIT TEST TABLE ========
@@ -603,6 +604,12 @@
"IndicateAvailabilityL",
"FUNCTIONALITY",
SetupL, UT_CMusAvailabilityPluginManager_IndicateAvailabilityLL, Teardown )
-
+
+EUNIT_TEST(
+ "PrepareForReceivedInviteL - test ",
+ "CMusAvailabilityPluginManager",
+ "PrepareForReceivedInviteL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAvailabilityPluginManager_PrepareForReceivedInviteLL, Teardown )
EUNIT_END_TEST_TABLE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/src/stubs.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <e32std.h>
+
+// TFindProcess stub
+
+// -------------------------------------------------------------------------
+// TFindProcess::Next
+// -------------------------------------------------------------------------
+//
+TInt TFindProcess::Next( TFullName& aResult )
+ {
+ if ( Dll::Tls() != NULL )
+ {
+ return KErrNone;
+ }
+ return KErrNotFound;
+ }
+
+
+// RProcess stub
+
+// -------------------------------------------------------------------------
+// RProcess::Create
+// -------------------------------------------------------------------------
+//
+TInt RProcess::Create(
+ const TDesC& /*aFileName*/,
+ const TDesC& /*aCommand*/,
+ TOwnerType /*aType*/ )
+ {
+ return Dll::SetTls( reinterpret_cast< TAny* >( 1 ) );
+ }
+
+// -------------------------------------------------------------------------
+// RProcess::Resume
+// -------------------------------------------------------------------------
+//
+void RProcess::Resume()
+ {
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshshared/inc/muspropertyobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* 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: Mus Applications Event Observer Interface
+*
+*/
+
+
+
+#ifndef MUSPROPERTYOBSERVER_H
+#define MUSPROPERTYOBSERVER_H
+
+#include <e32base.h>
+
+class MMusPropertyObserver
+ {
+
+public:
+
+ virtual void PropertyChanged( const TUint aKey, const TInt aValue ) = 0;
+
+ virtual void HandlePropertyError( const TInt aReason ) = 0;
+
+ };
+
+#endif // MUSPROPERTYOBSERVER_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshshared/inc/muspropertywatch.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,127 @@
+/*
+* 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 MUSPROPERTYWATCH_H
+#define MUSPROPERTYWATCH_H
+
+#include "musunittesting.h"
+
+#include <e32base.h>
+#include <e32property.h>
+
+class MMusPropertyObserver;
+
+class CMusPropertyWatch : public CActive
+ {
+
+ MUS_UNITTEST( UT_CMusPropertyWatch )
+
+public: // constructors and destructor
+
+ /**
+ * Two-phased constructor. Leaves on failure.
+ * @return The constructed CMusPropertyWatch object.
+ */
+ static CMusPropertyWatch* NewL( MMusPropertyObserver& aObserver,
+ TUid aCategory,
+ const TInt aPropertyName );
+
+ /**
+ * Destructor.
+ */
+ ~CMusPropertyWatch();
+
+private:
+
+ /**
+ * C++ constructor.
+ */
+ CMusPropertyWatch( MMusPropertyObserver& aObserver,
+ TUid aCategory,
+ const TInt aPropertyName );
+
+ /**
+ * Symbian 2nd-phase constructor.
+ * @leave If return value of RProperty::Attach != KErrNone, e.q. KErrNoMemory
+ * or one of the system wide error codes if RunL() leaves
+ */
+ void ConstructL();
+
+
+public: // new functions
+
+ /**
+ * Reads a P&S integer value from the category KCategoryUid
+ * @pre P&S value has to be defined.
+ * @leave One of the system wide error codes, if RProperty::Get()
+ * returns an error value.
+ * @param aKey Name of the P&S Key, which value should be read
+ * @returns The integer value of the P&S Key.
+ */
+ static TInt ReadIntPropertyL( TUint aKey );
+
+ /**
+ * Reads a P&S descriptor value from the category KCategoryUid
+ * @pre P&S value has to be defined.
+ * @leave One of the system wide error codes, if RProperty::Get()
+ * returns an error value or if descriptor AllocL() leaves.
+ * @param aKey Name of the P&S Key, which value should be read
+ * @returns The descriptor value of the P&S Key.
+ * Ownership is transferred
+ */
+ static HBufC* ReadDescPropertyL( TUint aKey );
+
+
+private: // functions from base class CActive
+
+ /**
+ *
+ */
+ void DoCancel();
+
+ /**
+ * Reads a P&S integer value from the category KCategoryUid
+ * and starts to monitor changes in the property value.
+ * Calls observer function for read property values.
+ * @pre P&S value has to be defined as an integer.
+ * @leave One of the system wide error codes, if RProperty::Get()
+ * returns an error value.
+ */
+ void RunL();
+
+ /**
+ *
+ */
+ TInt RunError(TInt aError);
+
+private: // Data
+
+ RProperty iProperty;
+
+ TUid iPropertyCategory;
+
+ TUint iPropertyKey;
+
+ MMusPropertyObserver& iObserver;
+
+ };
+
+#endif // MUSPROPERTYWATCH_H
+
+// end of file
--- a/mmsharing/mmshshared/loc/mus.loc Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharing/mmshshared/loc/mus.loc Tue Aug 31 15:12:07 2010 +0300
@@ -699,13 +699,6 @@
#define qtn_msh_set_activation_off "Off"
// d:Text of a list item in video sharing settings view
-// d:Activation setting: on
-// l:list_set_graphic_pane_t1
-// r:3.2
-//
-#define qtn_msh_set_activation_on "On"
-
-// d:Text of a list item in video sharing settings view
// d:Capability auditory note setting title
// l:list_setting_pane_t1
// r:3.2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshshared/src/muspropertywatch.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,178 @@
+/*
+* 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:
+*
+*/
+
+
+
+#include "muspropertywatch.h"
+#include "muspropertyobserver.h"
+#include "mussessionproperties.h"
+#include "musresourceproperties.h"
+#include "muslogger.h" // debug logging
+
+using namespace NMusSessionApi;
+
+// -----------------------------------------------------------------------------
+// Symbian two-phase constructor.
+// -----------------------------------------------------------------------------
+//
+CMusPropertyWatch* CMusPropertyWatch::NewL(
+ MMusPropertyObserver& aObserver,
+ TUid aCategory,
+ const TInt aPropertyName )
+ {
+ CMusPropertyWatch* self = new (ELeave) CMusPropertyWatch(
+ aObserver,
+ aCategory,
+ aPropertyName );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// C++ destructor.
+// -----------------------------------------------------------------------------
+//
+CMusPropertyWatch::~CMusPropertyWatch()
+ {
+ MUS_LOG( "mus: [MUSSH ] -> CMusPropertyWatch::~CMusPropertyWatch" );
+ if ( IsActive() )
+ {
+ Cancel();
+ }
+ iProperty.Close();
+ MUS_LOG( "mus: [MUSSH ] <- CMusPropertyWatch::~CMusPropertyWatch" );
+ }
+
+
+// -----------------------------------------------------------------------------
+// C++ constructor.
+// -----------------------------------------------------------------------------
+//
+CMusPropertyWatch::CMusPropertyWatch( MMusPropertyObserver& aObserver,
+ TUid aCategory,
+ const TInt aPropertyName ) :
+ CActive( EPriorityNormal ),
+ iObserver( aObserver )
+ {
+ iPropertyCategory = aCategory;
+ iPropertyKey = aPropertyName;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Symbian second-phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CMusPropertyWatch::ConstructL( )
+ {
+ MUS_LOG( "mus: [MUSSH ] -> CMusPropertyWatch::ConstructL" );
+ User::LeaveIfError( iProperty.Attach( iPropertyCategory,
+ iPropertyKey) );
+ CActiveScheduler::Add( this );
+
+ iProperty.Subscribe( iStatus );
+ SetActive();
+
+ MUS_LOG( "mus: [MUSSH ] <- CMusPropertyWatch::ConstructL" );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CMusPropertyWatch::ReadIntPropertyL( TUint aKey )
+ {
+ MUS_LOG1( "mus: [MUSSH ] -> CMusPropertyWatch::ReadIntPropertyL: aKey: [%d]",
+ aKey );
+ TInt val;
+ User::LeaveIfError( RProperty::Get( KCategoryUid,
+ aKey,
+ val ) );
+ MUS_LOG1( "mus: [MUSSH ] <- CMusPropertyWatch::ReadIntPropertyL: val: [%d]",
+ val );
+ return val;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+HBufC* CMusPropertyWatch::ReadDescPropertyL( TUint aKey )
+ {
+ MUS_LOG1( "mus: [MUSSH ] -> CMusPropertyWatch::ReadDescPropertyL: aKey: [%d]",
+ aKey );
+ TBuf<RProperty::KMaxPropertySize> buffer;
+
+ User::LeaveIfError( RProperty::Get( KCategoryUid,
+ aKey,
+ buffer ) );
+ HBufC* desc = buffer.AllocL();
+ MUS_LOG_TDESC( "mus: [MUSSH ] <- CMusPropertyWatch::ReadDescPropertyL: val: ",
+ (*desc) );
+ return desc;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusPropertyWatch::DoCancel()
+ {
+ MUS_LOG( "mus: [MUSSH ] -> CMusPropertyWatch::DoCancel" );
+ iProperty.Cancel();
+ MUS_LOG( "mus: [MUSSH ] <- CMusPropertyWatch::DoCancel" );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusPropertyWatch::RunL()
+ {
+ MUS_LOG( "mus: [MUSSH ] -> CMusPropertyWatch::RunL" );
+ TInt val;
+
+ User::LeaveIfError( RProperty::Get( iPropertyCategory,
+ iPropertyKey,
+ val ) );
+
+ iObserver.PropertyChanged( iPropertyKey, val );
+ MUS_LOG( "mus: [MUSSH ] <- CMusPropertyWatch::RunL" );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CMusPropertyWatch::RunError( TInt aError )
+ {
+ MUS_LOG1( "mus: [MUSSH ] -> CMusPropertyWatch::RunError [%d]", aError );
+ iObserver.HandlePropertyError( aError );
+ MUS_LOG( "mus: [MUSSH ] <- CMusPropertyWatch::RunError" );
+ return KErrNone;
+ }
+
+
+// end of file
--- a/mmsharing/mmshui/data/musui.rss Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1645 +0,0 @@
-/*
-* 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: application resource file
-*
-*/
-
-
-
-// -----------------------------------------------------------------------------
-// FOUR-LETTER RESOURCE IDENTIFIER
-// -----------------------------------------------------------------------------
-//
-NAME MUSH
-
-
-// -----------------------------------------------------------------------------
-// INCLUDE FILES
-// -----------------------------------------------------------------------------
-//
-#include "musui.hrh"
-#include <mus.loc> // localization
-#include <musoperator.loc> //localization
-
-#include <musuiicons.mbg>
-#include <musuitoolbaricons.mbg>
-#include <appinfo.rh>
-#include <data_caging_paths_strings.hrh>
-#include <eikon.rh>
-#include <avkon.rsg>
-#include <avkon.mbg>
-#include <avkon.rh>
-#include <avkon.hrh>
-#include <avkon.loc>
-#include <drmcommon.loc>
-
-#include <aknsconstants.hrh>
-#include <incallmenuandsoftkeys.loc>
-// -----------------------------------------------------------------------------
-// RESOURCE DEFINITIONS
-// -----------------------------------------------------------------------------
-//
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF { buf = "MUSUI"; }
-
-RESOURCE EIK_APP_INFO
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// CONSTANTS
-// -----------------------------------------------------------------------------
-//
-#define KMyBitmapRomFile "Z:\\resource\\apps\\musuiicons.mif"
-#define KMyBitmapRamFile "C:\\resource\\apps\\musuiicons.mif"
-
-RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info
- {
- short_caption = qtn_apps_msh_grid;
- caption_and_icon = CAPTION_AND_ICON_INFO
- {
- caption = qtn_apps_msh_list;
- number_of_icons = 1;
- icon_file = APP_BITMAP_DIR"\\musui_aif.mif";
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// Hotkeys defined for application
-// -----------------------------------------------------------------------------
-//
-RESOURCE HOTKEYS r_musui_hotkeys
- {
- control =
- {
- HOTKEY { command = EEikCmdExit; key = 'e'; }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// Items for general menu
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_PANE r_musui_general_menu
- {
- items =
- {
- MENU_ITEM { command = EMusuiGenCmdExit; txt = qtn_options_exit; }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// View-resource definition for general view
-// -----------------------------------------------------------------------------
-//
-RESOURCE AVKON_VIEW r_musui_generalview
- {
- menubar = r_musui_generalview_menubar;
- toolbar = r_mus_toolbar;
- cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
- }
-
-
-// -----------------------------------------------------------------------------
-// View-resource definition for null view
-// -----------------------------------------------------------------------------
-//
-RESOURCE AVKON_VIEW r_musui_nullview
- {
- menubar = r_musui_generalview_menubar;
- cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
- }
-
-
-// -----------------------------------------------------------------------------
-// Menubar definition for general view
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_BAR r_musui_generalview_menubar
- {
- titles =
- {
- MENU_TITLE { menu_pane = r_musui_general_menu; txt = "--"; },
- MENU_TITLE { menu_pane = r_musui_generalview_menu; txt = "--"; }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// Items for menupane in general view
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_PANE r_musui_generalview_menu
- {
- items =
- {
- MENU_ITEM { command = EMusuiCmdAppTest; txt = "Test"; } // TODO: Fixme
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// View-resource definition for live sharing view
-// -----------------------------------------------------------------------------
-//
-RESOURCE AVKON_VIEW r_musui_view
- {
- menubar = r_musui_view_menubar;
-// toolbar = r_mus_toolbar;
- cba = r_musui_view_cba;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE CBA r_musui_view_cba
- {
- buttons=
- {
- CBA_BUTTON
- {
- txt = text_softkey_option;
- id = EAknSoftkeyOptions;
- },
- CBA_BUTTON
- {
- txt = qtn_msh_softkey_stop;
- id = EAknSoftkeyExit;
- },
- CBA_BUTTON
- {
- //txt = text_softkey_option; // qgn_prop_msk_select;
- id = EEikBidBlank; // EAknSoftkeyOptions;
- }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// Operator Specific Middle softkeys
-// -----------------------------------------------------------------------------
-//
-RESOURCE CBA_BUTTON r_musui_view_ops_msk_ihf_off
- {
- id = EMusuiCmdViewHandset;
- txt = qtn_msh_msk_ihf_off;
- }
-
-RESOURCE CBA_BUTTON r_musui_view_ops_msk_ihf_on
- {
- id = EMusuiCmdViewLoadspeaker;
- txt = qtn_msh_msk_ihf_on;
- }
-
-RESOURCE CBA_BUTTON r_musui_view_msk_ok
- {
- id = EMusuiCmdViewMiddleSoftkeyOk;
- txt = qtn_msh_msk_done;
- }
-
-
-// -----------------------------------------------------------------------------
-// Menubar definition for live sharing view
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_BAR r_musui_view_menubar
- {
- titles =
- {
- MENU_TITLE { menu_pane = r_musui_general_menu; txt = "--"; },
- MENU_TITLE { menu_pane = r_musui_view_menu; txt = "--"; }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// Items for menupane in live sharing view
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_PANE r_musui_view_menu
- {
- items =
- {
- MENU_ITEM
- {
- command = EMusuiCmdViewReplay;
- txt = qtn_msh_shareview_softk_replay;
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewShareVideo;
- txt = qtn_msh_options_gen_shareclip;
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewShareImage;
- txt = qtn_msh_options_gen_shareimage;
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewShareLive;
- txt = qtn_msh_options_gen_sharelive;
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewAudioNormal;
- txt = qtn_msh_options_clip_audio_normal;
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewAudioMute;
- txt = qtn_msh_options_clip_audio_mute;
- },
- MENU_ITEM
- {
- command = EMusuiCmdToolbarZoom;
- txt = qtn_msh_tooltip_zoom; // Adjust zoom
- },
- MENU_ITEM
- {
- command = EMusuiCmdToolbarBrightness;
- txt = qtn_msh_tooltip_brightness; // Adjust brightness
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewFullScreen;
- txt = qtn_msh_options_fullscreen;
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewZoom;
- txt = qtn_msh_options_zoom;
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewBrightness;
- txt = qtn_msh_options_brightness;
- },
- MENU_ITEM
- {
- command = EMusuiCmdRecord;
- txt = qtn_msh_options_rec_start;
- },
- MENU_ITEM
- {
- command = EMusuiCmdStopRecording;
- txt = qtn_msh_options_rec_stop;
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewMicrophoneMute;
- txt = qtn_incal_mute_option;
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewMicrophoneUnmute;
- txt = qtn_incal_unmute_option;
- },
- MENU_ITEM
- {
- command = EMusuiCmdViewEndActiveCall;
- txt = qtn_incal_drop_option;
- },
-#ifdef __SERIES60_HELP
- MENU_ITEM
- {
- command = EAknCmdHelp;
- txt = qtn_options_help;
- }
-#endif // __SERIES60_HELP
- };
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE AVKON_LAYOUT_RECT r_mus_navi_media_icon_layout_size
- {
- l = 0; t = 0; W = 13; H = 16;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE AVKON_LAYOUT_TEXT r_mus_navi_media_text_left_layout
- {
- font = ELatinPlain12;
- C = 10;
- l = 43;
- r = 4;
- B = 13;
- W = 73;
- J = ELayoutAlignLeft;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE AVKON_LAYOUT_TEXT r_mus_navi_media_text_right_layout
- {
- font = ELatinPlain12;
- C = 0;
- l = 43;
- r = 4;
- B = 13;
- W = 73;
- J = ELayoutAlignRight;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE AKN_ICON_ARRAY r_mus_navi_media_icon_array_rom
- {
- bmpfile = KMyBitmapRomFile; // HERE
- icons =
- {
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_forw;
- maskId = EMbmMusuiiconsQgn_indi_video_forw_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_pause;
- maskId = EMbmMusuiiconsQgn_indi_video_pause_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_play;
- maskId = EMbmMusuiiconsQgn_indi_video_play_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_record;
- maskId = EMbmMusuiiconsQgn_indi_video_record_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_record_not;
- maskId = EMbmMusuiiconsQgn_indi_video_record_not_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_rew;
- maskId = EMbmMusuiiconsQgn_indi_video_rew_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_stop;
- maskId = EMbmMusuiiconsQgn_indi_video_stop_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait1;
- maskId = EMbmMusuiiconsQgn_indi_video_wait1_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait2;
- maskId = EMbmMusuiiconsQgn_indi_video_wait2_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait3;
- maskId = EMbmMusuiiconsQgn_indi_video_wait3_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait4;
- maskId = EMbmMusuiiconsQgn_indi_video_wait4_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait5;
- maskId = EMbmMusuiiconsQgn_indi_video_wait5_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait6;
- maskId = EMbmMusuiiconsQgn_indi_video_wait6_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait7;
- maskId = EMbmMusuiiconsQgn_indi_video_wait7_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait8;
- maskId = EMbmMusuiiconsQgn_indi_video_wait8_mask; }
- };
- }
-
- // -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE AKN_ICON_ARRAY r_mus_navi_media_icon_array_ram
- {
- bmpfile = KMyBitmapRamFile; // HERE
- icons =
- {
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_forw;
- maskId = EMbmMusuiiconsQgn_indi_video_forw_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_pause;
- maskId = EMbmMusuiiconsQgn_indi_video_pause_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_play;
- maskId = EMbmMusuiiconsQgn_indi_video_play_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_record;
- maskId = EMbmMusuiiconsQgn_indi_video_record_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_record_not;
- maskId = EMbmMusuiiconsQgn_indi_video_record_not_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_rew;
- maskId = EMbmMusuiiconsQgn_indi_video_rew_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_stop;
- maskId = EMbmMusuiiconsQgn_indi_video_stop_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait1;
- maskId = EMbmMusuiiconsQgn_indi_video_wait1_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait2;
- maskId = EMbmMusuiiconsQgn_indi_video_wait2_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait3;
- maskId = EMbmMusuiiconsQgn_indi_video_wait3_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait4;
- maskId = EMbmMusuiiconsQgn_indi_video_wait4_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait5;
- maskId = EMbmMusuiiconsQgn_indi_video_wait5_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait6;
- maskId = EMbmMusuiiconsQgn_indi_video_wait6_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait7;
- maskId = EMbmMusuiiconsQgn_indi_video_wait7_mask; },
- AKN_ICON { iconId = EMbmMusuiiconsQgn_indi_video_wait8;
- maskId = EMbmMusuiiconsQgn_indi_video_wait8_mask; }
- };
- }
-
-///////////////////////////////////////////////////LG///////////////////////////////////////////
-// -----------------------------------------------------------------------------
-// Toolbar for non-touch mode
-// -----------------------------------------------------------------------------
-//
-RESOURCE AVKON_TOOLBAR r_mus_toolbar_nontouch
- {
- //KAknToolbarFlexiblePosition
- //3.2.3 -> KAknToolbarWithoutCba
- //5.0 -> KAknToolbarFixed
- flags = KAknToolbarWithoutCba | KAknToolbarFloatingUnTransparent;
-
- items =
- {
- // ****************************************************************** //
- TBAR_CTRL // Sending Live/Clip & Receiving: Activate Volume Mode
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarVolume;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_volume; // Adjust call volume
- helptxt = qtn_msh_tooltip_volume;
- // TODO: ROM/RAM:
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_call_volume;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_call_volume_mask;
- }
- };
- };
- },
- // ****************************************************************** //
-
- TBAR_CTRL // Receiving: Change to full screen mode
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarFullScreen;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_fullscreen; // View in full screen mode
- helptxt = qtn_msh_tooltip_fullscreen;
- // TODO: ROM/RAM:
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_fullscreen;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_fullscreen_mask;
-// extension = r_mus_fullscreen_button_state_extension;
- }
- };
- };
- },
-
- // ****************************************************************** //
-
- TBAR_CTRL // Sending Live: Pause sharing <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarPauseLive;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_pause_live; // Pause sharing
- helptxt = qtn_msh_tooltip_pause_live;
- // TODO: ROM/RAM:
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_pause_send_video;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_pause_send_video_mask;
-// extension = r_mus_pause_send_video_button_state_extension;
- }
- };
- };
- },
- TBAR_CTRL // Sending Live/Clip: Un-pause sharing <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarUnPauseLive;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_unpause_live;
- helptxt = qtn_msh_tooltip_unpause_live;
- // TODO: ROM/RAM
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_video;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_video_mask;
-// extension = r_mus_video_button_state_extension;
- }
- };
- };
- },
- // ****************************************************************** //
-
- TBAR_CTRL // Sending Clip: Pause sharing <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarPause;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_pause_live; // Pause sharing
- helptxt = qtn_msh_tooltip_pause_live;
- // TODO: ROM/RAM:
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_cams_tb_rec_pause;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_cams_tb_rec_pause_mask;
- // extension = r_mus_rec_pause_button_state_extension;
- }
- };
- };
- },
- TBAR_CTRL // Sending Live/Clip: Un-pause sharing <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarUnPause;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_unpause_live;
- helptxt = qtn_msh_tooltip_unpause_live;
- // TODO: ROM/RAM
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_play;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_play_mask;
- // extension = r_mus_play_button_state_extension;
- }
- };
- };
- },
-
- // ****************************************************************** //
- TBAR_CTRL // Sending Clip: Activate fast forward / reverse mode
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarFFRev;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_ffrev; // Fast forward or rewind clip
- helptxt = qtn_msh_tooltip_ffrev;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_ffw_frew;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_ffw_frew_mask;
- },
- AVKON_BUTTON_STATE
- {
- flags = KAknButtonStateHasLatchedFrame;
- //txt = qtn_msh_tooltip_ffrev;
- helptxt = qtn_msh_tooltip_ffrev;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_ffw_frew;
- // bmpmask = 0x8000; /*32768, tumma*/
- bmpmask = 0x7FFF; /*32767, vaalea*/
- }
- };
- };
- },
- // ****************************************************************** //
- TBAR_CTRL // Sending Live: Activate zoom mode
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarZoom;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_zoom; // Adjust zoom
- helptxt = qtn_msh_tooltip_zoom;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_zoom;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_zoom_mask;
- },
- AVKON_BUTTON_STATE
- {
- flags = KAknButtonStateHasLatchedFrame;
- //txt = qtn_msh_tooltip_zoom; // Adjust zoom
- helptxt = qtn_msh_tooltip_zoom;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_zoom; // TODO: Correct bitmap!!!
- // bmpmask = 0x8000; /*32768, tumma*/
- bmpmask = 0x7FFF; /*32767, vaalea*/
- }
- };
- };
- },
- // ****************************************************************** //
- TBAR_CTRL // Sending Live: Activate brightness mode
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarBrightness;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_brightness; // Adjust brightness
- helptxt = qtn_msh_tooltip_brightness;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_brightness;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_brightness_mask;
- },
- AVKON_BUTTON_STATE
- {
- flags = KAknButtonStateHasLatchedFrame;
- //txt = qtn_msh_tooltip_brightness; // Adjust brightness
- helptxt = qtn_msh_tooltip_brightness;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_brightness;
- // bmpmask = 0x8000; /*32768, tumma*/
- bmpmask = 0x7FFF; /*32767, vaalea*/
- }
- };
- };
- },
- // ****************************************************************** //
-
- TBAR_CTRL // Sending Live/Clip & Receiving: Mute microphone <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarMute;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_mute; // Mute Microphone
- helptxt = qtn_msh_tooltip_mute;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_microphone_mute;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_microphone_mute_mask;
-// extension = r_mus_microphone_mute_button_state_extension;
- }
- };
- };
- },
- TBAR_CTRL // Sending Live/Clip & Receiving: Unmute microphone <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarUnmute;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_unmute; // Unmute Microphone
- helptxt = qtn_msh_tooltip_unmute;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_microphone_unmute;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_microphone_unmute_mask;
- // extension = r_mus_microphone_unmute_button_state_extension;
- }
- };
- };
- },
-
- // ****************************************************************** //
-
- TBAR_CTRL // Sending LiveClip & Receiving: Speaker off <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarSpeakerOff;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_ihf_off; // Loudspeaker off
- helptxt = qtn_msh_tooltip_ihf_off;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_ihf_off;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_ihf_off_mask;
- // extension = r_mus_ihf_off_button_state_extension;
- }
- };
- };
- },
- TBAR_CTRL // Sending Live/Clip & Receiving: Speaker on <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarSpeakerOn;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_ihf_on; // Loudspeaker on
- helptxt = qtn_msh_tooltip_ihf_on;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_ihf_on;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_ihf_on_mask;
- // extension = r_mus_ihf_on_button_state_extension;
- }
- };
- };
- }
- };
- }
-///////////////////////////////////////////////////LG///////////////////////////////////////////
-
-
-
-// -----------------------------------------------------------------------------
-// Toolbar
-// -----------------------------------------------------------------------------
-//
-RESOURCE AVKON_TOOLBAR r_mus_toolbar
- {
- flags = KAknToolbarFixed;
-
- items =
- {
- // ****************************************************************** //
-
- TBAR_CTRL // Receiving: Change to full screen mode
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarFullScreen;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_fullscreen; // View in full screen mode
- helptxt = qtn_msh_tooltip_fullscreen;
- // TODO: ROM/RAM:
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_fullscreen;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_fullscreen_mask;
- extension = r_mus_fullscreen_button_state_extension;
- }
- };
- };
- },
-
- // ****************************************************************** //
-
- TBAR_CTRL // Sending Live: Pause sharing <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarPauseLive;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_pause_live; // Pause sharing
- helptxt = qtn_msh_tooltip_pause_live;
- // TODO: ROM/RAM:
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_pause_send_video;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_pause_send_video_mask;
- extension = r_mus_pause_send_video_button_state_extension;
- }
- };
- };
- },
- TBAR_CTRL // Sending Live/Clip: Un-pause sharing <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarUnPauseLive;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_unpause_live;
- helptxt = qtn_msh_tooltip_unpause_live;
- // TODO: ROM/RAM
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_video;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_video_mask;
- extension = r_mus_video_button_state_extension;
- }
- };
- };
- },
- // ****************************************************************** //
-
- TBAR_CTRL // Sending Clip: Pause sharing <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarPause;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_pause_live; // Pause sharing
- helptxt = qtn_msh_tooltip_pause_live;
- // TODO: ROM/RAM:
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_cams_tb_rec_pause;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_cams_tb_rec_pause_mask;
- extension = r_mus_rec_pause_button_state_extension;
- }
- };
- };
- },
- TBAR_CTRL // Sending Live/Clip: Un-pause sharing <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarUnPause;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_unpause_live;
- helptxt = qtn_msh_tooltip_unpause_live;
- // TODO: ROM/RAM
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif";
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_play;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_play_mask;
- extension = r_mus_play_button_state_extension;
- }
- };
- };
- },
-
- // ****************************************************************** //
-
- TBAR_CTRL // Sending Live/Clip & Receiving: Mute microphone <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarMute;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_mute; // Mute Microphone
- helptxt = qtn_msh_tooltip_mute;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_microphone_mute;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_microphone_mute_mask;
- extension = r_mus_microphone_mute_button_state_extension;
- }
- };
- };
- },
- TBAR_CTRL // Sending Live/Clip & Receiving: Unmute microphone <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarUnmute;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_unmute; // Unmute Microphone
- helptxt = qtn_msh_tooltip_unmute;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_microphone_unmute;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_microphone_unmute_mask;
- extension = r_mus_microphone_unmute_button_state_extension;
- }
- };
- };
- },
-
- //****************************************************************** //
- TBAR_CTRL
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarBlank;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText;
- };
- },
-
- // ****************************************************************** //
-
- TBAR_CTRL // Sending LiveClip & Receiving: Speaker off <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarSpeakerOff;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText ;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_ihf_off; // Loudspeaker off
- helptxt = qtn_msh_tooltip_ihf_off;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_ihf_off;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_ihf_off_mask;
- extension = r_mus_ihf_off_button_state_extension;
- }
- };
- };
- },
- TBAR_CTRL // Sending Live/Clip & Receiving: Speaker on <=> Toggled
- {
- type = EAknCtButton;
- id = EMusuiCmdToolbarSpeakerOn;
- control = AVKON_BUTTON
- {
- flags = KAknButtonSizeFitText;
- states =
- {
- AVKON_BUTTON_STATE
- {
- //txt = qtn_msh_tooltip_ihf_on; // Loudspeaker on
- helptxt = qtn_msh_tooltip_ihf_on;
- bmpfile = "Z:\\Resource\\apps\\musuitoolbaricons.mif"; // Only ROM . RAM is unofficial
- bmpid = EMbmMusuitoolbariconsQgn_indi_tb_ihf_on;
- bmpmask = EMbmMusuitoolbariconsQgn_indi_tb_ihf_on_mask;
- extension = r_mus_ihf_on_button_state_extension;
- }
- };
- };
- }
- };
- }
-
-
-
-// BUTTON STATE EXTENSION needed for skinning
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_call_volume_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbCallVolume;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_fullscreen_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbFullscreen;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_pause_send_video_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbPauseSendVideo;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_video_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbVideo;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_rec_pause_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiCamsTbRecPause;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_play_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbPlay;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_ffw_frew_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbFfwFrew;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_zoom_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbZoom;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_brightness_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbBrightness;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_microphone_mute_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbMicrophoneMute;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_microphone_unmute_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbMicrophoneUnmute;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_ihf_off_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbIhfOff;
- }
-
-RESOURCE AVKON_BUTTON_STATE_EXTENSION r_mus_ihf_on_button_state_extension
- {
- bmbSkinIdMajor= EAknsMajorGeneric;
- bmbSkinIdMinor= EAknsMinorGenericQgnIndiTbIhfOn;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_mus_text_query_dialog
- {
- flags = EAknGeneralQueryFlags;
- buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
- items =
- {
- DLG_LINE
- {
- type = EAknCtQuery;
- id = EGeneralQuery;
- control = AVKON_DATA_QUERY
- {
- layout = EDataLayout;
- control = EDWIN
- {
- flags = EEikEdwinOnlyASCIIChars;
- avkon_flags = EAknEditorFlagLatinInputModesOnly;
- default_input_mode = EAknEditorTextInputMode;
- allowed_input_modes = EAknEditorTextInputMode |
- EAknEditorNumericInputMode;
- };
- };
- }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// Resource for the address selection query.
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_mus_confirmation_query_dialog
- {
- flags = EGeneralQueryFlags;
- buttons = R_AVKON_SOFTKEYS_YES_NO;
- items =
- {
- DLG_LINE
- {
- type = EAknCtQuery;
- id = EMusConfirmationQuery;
- control = AVKON_CONFIRMATION_QUERY
- {
- layout = EConfirmationQueryLayout;
- };
- }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// Resource for the address selection query.
-// -----------------------------------------------------------------------------
-//
-RESOURCE AVKON_LIST_QUERY r_mus_livesharingview_address_query
- {
- flags = EGeneralQueryFlags;
- softkeys = R_AVKON_SOFTKEYS_OK_CANCEL;
- items =
- {
- AVKON_LIST_QUERY_DLG_LINE
- {
- control = AVKON_LIST_QUERY_CONTROL
- {
- listtype = EAknCtSinglePopupMenuListBox;
- listbox = AVKON_LIST_QUERY_LIST
- {
- array_id = r_mus_livesharingview_address_array;
- };
- heading = qtn_msh_inviteview_select_query_hdr_txt;
- };
- }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// Resource for the address selection query array
-// -----------------------------------------------------------------------------
-//
-RESOURCE ARRAY r_mus_livesharingview_address_array
- {
- items =
- {
- LBUF { txt = ""; }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// Resource for the inviting wait note
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_mus_view_inviting_wait_note
- {
- flags = EAknWaitNoteFlags | EEikDialogFlagWait;
- buttons = R_AVKON_SOFTKEYS_CANCEL;
- items =
- {
- DLG_LINE
- {
- type = EAknCtNote;
- id = EMusInvitingWaitNoteId;
- control = AVKON_NOTE
- {
- layout = EWaitLayout;
- animation = R_QGN_GRAF_WAIT_BAR_ANIM;
- };
- }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// Resource for the camera activation wait note
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_mus_live_sharing_view_activate_camera_wait_note
- {
- flags = EAknWaitNoteFlags | EEikDialogFlagWait;
- buttons = R_AVKON_SOFTKEYS_CANCEL;
- items =
- {
- DLG_LINE
- {
- type = EAknCtNote;
- id = EMusActivateCameraWaitNoteId;
- control = AVKON_NOTE
- {
- layout = EWaitLayout;
- animation = R_QGN_GRAF_WAIT_BAR_ANIM;
- };
- }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_mus_view_transcoding_wait_note
- {
- flags = EAknProgressNoteFlags;
- buttons = R_AVKON_SOFTKEYS_CANCEL;
- items =
- {
- DLG_LINE
- {
- type = EAknCtNote;
- id = EMusTranscodingProgressNoteId;
- control = AVKON_NOTE
- {
- layout = EWaitLayout;
- };
- }
- };
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_text_enter_address_dialog_prompt
- {
- buf = qtn_msh_inviteview_enter_sip;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_live_sharing_view_title
- {
- buf = qtn_msh_shareview_title;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_live_sharing_view_inviting_wait_note_txt
- {
- buf = qtn_msh_note_inviting;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_live_sharing_view_open_camera_lens_cover_wait_note_txt
- {
- buf = qtn_msh_note_change_camera_mode;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_registration_pending_wait_note_txt
- {
- //"Registering to SIP server"
- buf = qtn_msh_note_registration_pending;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_change_keypad_mode_txt
- {
- buf = qtn_msh_note_change_keypad_mode;
- }
-
-
-// --------------------------------------------------------
-// Resources related to video receive
-// --------------------------------------------------------
-
-RESOURCE TBUF r_mus_receive_view_note_incoming_video_request
- {
- buf = qtn_msh_note_incoming_video_request; // "Accept sharing request from %U[35]?"
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_receive_view_waiting_for_stream
- {
- buf = qtn_msh_note_waiting_for_stream;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_view_save_address_query_txt
- {
- buf = qtn_msh_query_save_contact;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_view_saved_filename
- {
- buf = qtn_msh_set_saving_filename;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_view_save_shared_video_query
- {
- buf = qtn_msh_query_save_clip;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_view_note_video_saved
- {
- buf = qtn_msh_note_video_saved;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_video_save_folder_name
- {
- buf = qtn_apps_mg_gs;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_progress_note_converting_clip
- {
- // "Converting clip for sharing"
- buf = qtn_msh_note_transcoding_video;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_view_note_transcoding_complete
- {
- // "Clip conversion complete"
- buf = qtn_msh_note_transcoding_complete;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_view_note_memorycard_problem
- {
- // "Memory card is not accessible. Phone memory will be used instead."
- buf = qtn_msh_note_memorycard_problem;
- }
-
-
-// -----------------------------------------------------------------------------
-// Error Note Strings
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_mus_live_sharing_view_note_recipient_not_found
- {
- // "Unable to find recipient"
- buf = qtn_msh_note_recipient_not_found;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_app_n_a
- {
- // "Recipient does not have 'Video sharing' application"
- buf = qtn_msh_note_app_n_a;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_connection_rejected
- {
- // "Invitation rejected by recipient"
- buf = qtn_msh_note_connection_rejected;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_no_response
- {
- // "No response received to invitation"
- buf = qtn_msh_note_no_response;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_invitation_cancelled
- {
- // "Invitation cancelled"
- buf = qtn_msh_note_invitation_cancelled;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_resource_n_a
- {
- // "Application not available"
- buf = qtn_msh_note_resource_n_a;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_error_mediainit
- {
- // "Media initialisation failed"
- buf = qtn_msh_note_error_mediainit;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_error_filelock
- {
- // "Unable to read file"
- buf = qtn_msh_note_error_filelock;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_error_genericfile
- {
- // "File error"
- buf = qtn_msh_note_error_genericfile;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_error_app_general
- {
- // "Application error"
- buf = qtn_msh_note_error_app_general;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_startup_failed
- {
- // "Start-up failed. Reinstall 'Video sharing' application."
- buf = qtn_msh_note_startup_failed;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_bad_startup_settings
- {
- // "Start-up failed. Check settings."
- buf = qtn_msh_note_bad_startup_settings;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_connection_lost
- {
- // "Disconnected"
- buf = qtn_msh_note_connection_lost;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_recipient_busy
- {
- // "Recipient already sharing video. Unable to establish connection."
- buf = qtn_msh_note_recipient_busy;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_network_n_a
- {
- // "No network coverage"
- buf = qtn_msh_note_network_n_a;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_recipient_n_a
- {
- // "Recipient busy. Try again later."
- buf = qtn_msh_note_recipient_n_a;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_wrong_address
- {
- // "Recipient not found. Check the address."
- buf = qtn_msh_note_wrong_address;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_timeout_expired
- {
- // "Connection time-out"
- buf = qtn_msh_note_timeout_expired;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_service_n_a
- {
- // "Service temporarily unavailable"
- buf = qtn_msh_note_service_n_a;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_only_3g
- {
- // "Video Sharing is supported only in 3G network."
- buf = qtn_mshstarter_note_network_incompatible;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_invite_error
- {
- // "Unable to send invitation"
- buf = qtn_msh_note_invite_error;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_no_reg
- {
- // "Unable to register to network"
- buf = qtn_msh_note_no_reg;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_transcoding_not_supported
- {
- // "Clip is not in correct format. Unable to share."
- buf = qtn_msh_note_transcoding_not_supported;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_sharing_ended
- {
- // "Video sharing ended"
- buf = qtn_msh_note_sharing_ended;
- }
-
-RESOURCE TBUF r_mus_live_sharing_view_note_sharing_ended_record
- {
- // "Video sharing ended. Continue recording?"
- buf = qtn_msh_note_sharing_ended_record;
- }
-
-RESOURCE TBUF r_mus_view_drm_info_send_forbid
- {
- // "Unable to send protected object"
- buf = qtn_drm_info_send_forbid_one;
- }
-
-RESOURCE TBUF r_mus_view_note_memory_low
- {
- // "Memory low. Recording stopped."
- buf = qtn_msh_note_memory_low;
- }
-
-RESOURCE TBUF r_mus_view_note_unable_to_convert
- {
- // "Unable to convert clip"
- buf = qtn_msh_note_transcoding_failed;
- }
-
-RESOURCE TBUF r_mus_note_hf_activated
- {
- // "Handsfree activated"
- buf = qtn_hf_conf_activate;
- }
-
-RESOURCE TBUF r_mus_note_hf_deactivated
- {
- // "Handsfree deactivated"
- buf = qtn_hf_conf_earpiece;
- }
-
-RESOURCE SLIDER r_mus_slider_vertical
- {
- layout=EAknSliderLayoutVertical;
- minvalue=0;
- maxvalue=100;
- step=1;
- valuetype=EAknSliderValueNone;
- minlabel="-";
- maxlabel="+";
- }
-
-RESOURCE SLIDER r_mus_slider_horizontal
- {
- layout=EAknSliderLayoutHorizontal;
- minvalue=0;
- maxvalue=100;
- step=1;
- valuetype=EAknSliderValueNone;
- }
-
-// end of file
-
--- a/mmsharing/mmshui/data/musui_reg.rss Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
-* 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: S60 v3.0-compatible application resource file
-*
-*/
-
-
-
-#include <appinfo.rh>
-#include <data_caging_paths_strings.hrh>
-
-#include <musui.rsg>
-
-#include "musuid.hrh"
-
-UID2 KUidAppRegistrationResourceFile
-UID3 KMusUiUid // 0x10282391
-
-RESOURCE APP_REGISTRATION_INFO
- {
- app_file = "musui";
- localisable_resource_file = APP_RESOURCE_DIR"\\musui";
- localisable_resource_id = R_LOCALISABLE_APP_INFO;
- hidden = KAppIsHidden;
- embeddability = KAppNotEmbeddable;
- //group_name = "musui";
- }
-
-
-// end of file
Binary file mmsharing/mmshui/graphics/Thumbs.db has changed
Binary file mmsharing/mmshui/graphics/qgn_graf_rop_black.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_indi_mus_end_rec.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_indi_mus_end_rec_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_indi_mus_paused.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_indi_mus_paused_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_indi_mus_speaker_muted.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_indi_mus_speaker_muted_mask.bmp has changed
--- a/mmsharing/mmshui/graphics/qgn_indi_tb_gallery.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 36 44">
-<g>
-<g>
-<rect fill="none" width="36" height="44"/>
-<g>
-<g>
-<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="-14.4209" y1="4.2197" x2="18.0901" y2="43.6343">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1142" style="stop-color:#E0EAF3"/>
-<stop offset="0.35" style="stop-color:#A2C2DD"/>
-<stop offset="0.4825" style="stop-color:#8CA9CF"/>
-<stop offset="0.7" style="stop-color:#6C83BB"/>
-<stop offset="0.7458" style="stop-color:#637DB5"/>
-<stop offset="0.8189" style="stop-color:#4C6EA4"/>
-<stop offset="0.9097" style="stop-color:#265689"/>
-<stop offset="0.9888" style="stop-color:#003D6D"/>
-<stop offset="1" style="stop-color:#003D6D"/>
-</linearGradient>
-<path fill="url(#XMLID_3_)" d="M4.926,32.898V21.056c-0.156-0.018-1.505-0.163-2.099-0.745v14.748h14.597v-2.16H4.926z"/>
-<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="3.5293" y1="-10.4531" x2="35.8526" y2="28.7339">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1142" style="stop-color:#E0EAF3"/>
-<stop offset="0.35" style="stop-color:#A2C2DD"/>
-<stop offset="0.4825" style="stop-color:#8CA9CF"/>
-<stop offset="0.7" style="stop-color:#6C83BB"/>
-<stop offset="0.7458" style="stop-color:#637DB5"/>
-<stop offset="0.8189" style="stop-color:#4C6EA4"/>
-<stop offset="0.9097" style="stop-color:#265689"/>
-<stop offset="0.9888" style="stop-color:#003D6D"/>
-<stop offset="1" style="stop-color:#003D6D"/>
-</linearGradient>
-<path fill="url(#XMLID_4_)" d="M32.229,11.113H12.192c0,0.814,0,1.568-0.003,2.16h17.938v4.547h2.102V11.113z"/>
-</g>
-<path fill="#496DA2" d="M28.954,20.28v2.103h-5.772V20.28h-3.3v14.812h3.3v-2.096h5.772v2.096h3.328V20.28H28.954z M22.154,34.199h-1.36v-2.08h1.36V34.199z M22.154,30.408h-1.36v-2.08h1.36V30.408z M22.154,26.908h-1.36v-2.08h1.36V26.908z M22.154,23.118h-1.36v-2.08h1.36V23.118z M28.982,30.894h-5.801v-6.409h5.801V30.894z M31.343,34.199h-1.36v-2.08h1.36V34.199z M31.343,30.408h-1.36v-2.08h1.36V30.408z M31.343,26.908h-1.36v-2.08h1.36V26.908z M31.343,23.118h-1.36v-2.08h1.36V23.118z"/>
-<path fill="#496DA2" d="M18.353,18.278V16.27H15.99v2.368l-7.078,7.101H6.327l4.8,4.751v-0.02h6.297V18.278H18.353z M15.99,25.739h-4.729l4.729-4.735V25.739z"/>
-<path fill="#496DA2" d="M8.597,3.858v8.868c-1.074-0.134-2.391,0.17-3.513,0.904c-1.92,1.259-2.533,3.282-1.652,4.625 c0.877,1.34,3.191,1.242,5.111-0.019c1.119-0.8,1.91-1.999,1.752-3.6l-0.004-8.142l3.837,1.919l0.667-1.451L8.597,3.858z"/>
-</g>
-</g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_tb_microphone_mute.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 36 44">
-<g>
-<g>
-<rect fill="none" width="36" height="44"/>
-<g>
-<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="5.2217" y1="-4.0654" x2="31.0705" y2="23.0325">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1142" style="stop-color:#E0EAF3"/>
-<stop offset="0.35" style="stop-color:#A2C2DD"/>
-<stop offset="0.4825" style="stop-color:#8CA9CF"/>
-<stop offset="0.7" style="stop-color:#6C83BB"/>
-<stop offset="0.7458" style="stop-color:#637DB5"/>
-<stop offset="0.8189" style="stop-color:#4C6EA4"/>
-<stop offset="0.9097" style="stop-color:#265689"/>
-<stop offset="0.9888" style="stop-color:#003D6D"/>
-<stop offset="1" style="stop-color:#003D6D"/>
-</linearGradient>
-<path fill="url(#XMLID_5_)" d="M29.774,20.07c0,0,0-4.112,0-4.416c-0.275,0-2.351,0-2.626,0 c0,0.303,0,4.416,0,4.416c0,1.436-0.293,2.795-0.806,4.026l1.956,1.959C29.233,24.27,29.774,22.229,29.774,20.07z"/>
-<linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="-6.9287" y1="7.5518" x2="18.9129" y2="34.642">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1142" style="stop-color:#E0EAF3"/>
-<stop offset="0.35" style="stop-color:#A2C2DD"/>
-<stop offset="0.4825" style="stop-color:#8CA9CF"/>
-<stop offset="0.7" style="stop-color:#6C83BB"/>
-<stop offset="0.7458" style="stop-color:#637DB5"/>
-<stop offset="0.8189" style="stop-color:#4C6EA4"/>
-<stop offset="0.9097" style="stop-color:#265689"/>
-<stop offset="0.9888" style="stop-color:#003D6D"/>
-<stop offset="1" style="stop-color:#003D6D"/>
-</linearGradient>
-<path fill="url(#XMLID_6_)" d="M18.01,29.928c-9.555-0.886-9.158-10.265-9.158-10.83l-2.626-2.629 c0,1.284,0,3.602,0,3.602c0.362,10.392,8.883,12.18,10.462,12.349c0,0,0,5.183,0,5.489c0.274,0,2.35,0,2.625,0 c0-0.307,0-5.515,0-5.515s1.557-0.17,2.314-0.505l-2.104-2.107C19.028,29.87,18.523,29.976,18.01,29.928z"/>
-<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="-4.6963" y1="5.4282" x2="21.1414" y2="32.5144">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1142" style="stop-color:#E0EAF3"/>
-<stop offset="0.35" style="stop-color:#A2C2DD"/>
-<stop offset="0.4825" style="stop-color:#8CA9CF"/>
-<stop offset="0.7" style="stop-color:#6C83BB"/>
-<stop offset="0.7458" style="stop-color:#637DB5"/>
-<stop offset="0.8189" style="stop-color:#4C6EA4"/>
-<stop offset="0.9097" style="stop-color:#265689"/>
-<stop offset="0.9888" style="stop-color:#003D6D"/>
-<stop offset="1" style="stop-color:#003D6D"/>
-</linearGradient>
-<path fill="url(#XMLID_7_)" d="M16.795,27.052L11.33,21.58C11.938,24.373,14.088,26.543,16.795,27.052z"/>
-<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="5.1543" y1="-3.9741" x2="30.9914" y2="23.1115">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1142" style="stop-color:#E0EAF3"/>
-<stop offset="0.35" style="stop-color:#A2C2DD"/>
-<stop offset="0.4825" style="stop-color:#8CA9CF"/>
-<stop offset="0.7" style="stop-color:#6C83BB"/>
-<stop offset="0.7458" style="stop-color:#637DB5"/>
-<stop offset="0.8189" style="stop-color:#4C6EA4"/>
-<stop offset="0.9097" style="stop-color:#265689"/>
-<stop offset="0.9888" style="stop-color:#003D6D"/>
-<stop offset="1" style="stop-color:#003D6D"/>
-</linearGradient>
-<path fill="url(#XMLID_8_)" d="M18.003,8.373c2.434,0,4.412,2.132,4.412,4.752v6.86 c0,0.056-0.013,0.107-0.016,0.163l2.082,2.083c0.224-0.711,0.375-1.457,0.375-2.246v-6.86c0-3.966-3.074-7.196-6.854-7.196 c-2.606,0-4.848,1.552-6.008,3.803l1.853,1.854C14.445,9.723,16.073,8.373,18.003,8.373z"/>
-<polygon fill="#496DA2" points="1.699,8.48 4.496,5.679 34.301,35.521 31.504,38.321 "/>
-</g>
-</g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_tb_microphone_unmute.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 36 44">
-<g>
-<g>
-<rect fill="none" width="36" height="44"/>
-<g>
-<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="-0.7407" y1="1.6509" x2="25.1012" y2="28.7416">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1142" style="stop-color:#E0EAF3"/>
-<stop offset="0.35" style="stop-color:#A2C2DD"/>
-<stop offset="0.4825" style="stop-color:#8CA9CF"/>
-<stop offset="0.7" style="stop-color:#6C83BB"/>
-<stop offset="0.7458" style="stop-color:#637DB5"/>
-<stop offset="0.8189" style="stop-color:#4C6EA4"/>
-<stop offset="0.9097" style="stop-color:#265689"/>
-<stop offset="0.9888" style="stop-color:#003D6D"/>
-<stop offset="1" style="stop-color:#003D6D"/>
-</linearGradient>
-<path fill="url(#XMLID_3_)" d="M27.148,15.654c0,0.303,0,4.416,0,4.416c0,5.435-4.1,9.858-9.139,9.858 c-5.05,0-9.158-4.423-9.158-9.858c0,0,0-4.112,0-4.416c-0.275,0-2.352,0-2.626,0c0,0.303,0,4.416,0,4.416 c0.282,11.337,10.462,12.348,10.462,12.348s0,5.184,0,5.49c0.274,0,2.35,0,2.625,0c0-0.307,0-5.516,0-5.516 s9.914-0.454,10.462-12.323c0,0,0-4.112,0-4.416C29.499,15.654,27.424,15.654,27.148,15.654z"/>
-<g>
-<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="1.6265" y1="-0.6118" x2="27.4665" y2="26.4769">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1142" style="stop-color:#E0EAF3"/>
-<stop offset="0.35" style="stop-color:#A2C2DD"/>
-<stop offset="0.4825" style="stop-color:#8CA9CF"/>
-<stop offset="0.7" style="stop-color:#6C83BB"/>
-<stop offset="0.7458" style="stop-color:#637DB5"/>
-<stop offset="0.8189" style="stop-color:#4C6EA4"/>
-<stop offset="0.9097" style="stop-color:#265689"/>
-<stop offset="0.9888" style="stop-color:#003D6D"/>
-<stop offset="1" style="stop-color:#003D6D"/>
-</linearGradient>
-<path fill="url(#XMLID_4_)" d="M18.003,5.929c-3.782,0-6.854,3.23-6.854,7.196v6.86 c0,3.968,3.072,7.194,6.854,7.194c3.779,0,6.854-3.227,6.854-7.194v-6.86C24.856,9.159,21.782,5.929,18.003,5.929z M22.415,19.985c0,2.619-1.979,4.75-4.412,4.75s-4.414-2.131-4.414-4.75v-6.86c0-2.621,1.98-4.752,4.414-4.752 s4.412,2.131,4.412,4.752V19.985z"/>
-</g>
-</g>
-</g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_tb_zoom.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 36 44">
-<g>
-<g>
-<rect y="0" fill="none" width="36" height="44"/>
-<g>
-<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="20.6406" y1="24.5981" x2="30.4117" y2="34.3692">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1142" style="stop-color:#E0EAF3"/>
-<stop offset="0.35" style="stop-color:#A2C2DD"/>
-<stop offset="0.4825" style="stop-color:#8CA9CF"/>
-<stop offset="0.7" style="stop-color:#6C83BB"/>
-<stop offset="0.7458" style="stop-color:#637DB5"/>
-<stop offset="0.8189" style="stop-color:#4C6EA4"/>
-<stop offset="0.9097" style="stop-color:#265689"/>
-<stop offset="0.9888" style="stop-color:#003D6D"/>
-<stop offset="1" style="stop-color:#003D6D"/>
-</linearGradient>
-<path fill="url(#XMLID_3_)" d="M32.647,33.026l-6.661-6.912c-0.97,1.473-2.214,2.747-3.668,3.742l6.565,6.815 L32.647,33.026z"/>
-<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="4.5537" y1="8.5444" x2="22.3187" y2="26.3087">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="0.1142" style="stop-color:#E0EAF3"/>
-<stop offset="0.35" style="stop-color:#A2C2DD"/>
-<stop offset="0.4825" style="stop-color:#8CA9CF"/>
-<stop offset="0.7" style="stop-color:#6C83BB"/>
-<stop offset="0.7458" style="stop-color:#637DB5"/>
-<stop offset="0.8189" style="stop-color:#4C6EA4"/>
-<stop offset="0.9097" style="stop-color:#265689"/>
-<stop offset="0.9888" style="stop-color:#003D6D"/>
-<stop offset="1" style="stop-color:#003D6D"/>
-</linearGradient>
-<path fill="url(#XMLID_4_)" d="M14.716,7.329c-6.274,0-11.364,5.093-11.364,11.377 c0,6.282,5.09,11.377,11.364,11.377c6.275,0,11.361-5.095,11.361-11.377C26.077,12.422,20.991,7.329,14.716,7.329z M14.716,27.637c-4.92,0-8.923-4.006-8.923-8.932c0-4.925,4.003-8.933,8.923-8.933c4.918,0,8.92,4.007,8.92,8.933 C23.636,23.631,19.634,27.637,14.716,27.637z"/>
-</g>
-<g>
-<rect x="10.564" y="22.668" fill="#496DA2" width="8.298" height="2.422"/>
-<polygon fill="#496DA2" points="18.976,15.529 15.771,15.529 15.771,12.321 13.659,12.321 13.659,15.529 10.455,15.529 10.455,17.646 13.659,17.646 13.659,20.853 15.771,20.853 15.771,17.646 18.976,17.646 "/>
-</g>
-</g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_forw.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="16" height="16" viewBox="0 0 16 16"
- overflow="visible" enable-background="new 0 0 16 16" xml:space="preserve">
-<g>
- <rect fill="none" width="16" height="16"/>
- <g>
- <linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="8.6704" y1="-1.3042" x2="7.0489" y2="13.5588">
- <stop offset="0.0225" style="stop-color:#DAF49A"/>
- <stop offset="0.1591" style="stop-color:#B1DA6F"/>
- <stop offset="0.3642" style="stop-color:#7AB733"/>
- <stop offset="0.5156" style="stop-color:#57A10E"/>
- <stop offset="0.5955" style="stop-color:#4A9900"/>
- <stop offset="0.6556" style="stop-color:#398419"/>
- <stop offset="0.7512" style="stop-color:#22663B"/>
- <stop offset="0.8301" style="stop-color:#135550"/>
- <stop offset="0.882" style="stop-color:#0E4E58"/>
- </linearGradient>
- <polygon fill="url(#XMLID_4_)" stroke="#115B7E" stroke-width="0.4706" stroke-linejoin="round" points="15.232,7.972
- 7.917,1.695 7.917,7.83 0.77,1.695 0.769,14.304 7.917,8.118 7.916,14.304 "/>
- <linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="4.2236" y1="-5.0122" x2="3.7113" y2="10.8517">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <polygon opacity="0.3" fill="url(#XMLID_5_)" enable-background="new " points="1.392,8.885 1.393,3.083 6.387,7.544 "/>
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="11.3467" y1="-5.0122" x2="10.8343" y2="10.8517">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <polygon opacity="0.3" fill="url(#XMLID_6_)" enable-background="new " points="8.515,8.885 8.516,3.083 13.51,7.544 "/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_pause.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="16" height="16" viewBox="0 0 16 16"
- overflow="visible" enable-background="new 0 0 16 16" xml:space="preserve">
-<g>
- <rect fill="none" width="16" height="16"/>
- <g>
- <linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="5.1387" y1="-0.7241" x2="5.1387" y2="17.4704">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.1737" style="stop-color:#9EC8D1"/>
- <stop offset="0.3357" style="stop-color:#62A9B3"/>
- <stop offset="0.4543" style="stop-color:#3D95A1"/>
- <stop offset="0.5169" style="stop-color:#2F8E9A"/>
- <stop offset="0.5662" style="stop-color:#247C90"/>
- <stop offset="0.6734" style="stop-color:#115A7D"/>
- <stop offset="0.762" style="stop-color:#044571"/>
- <stop offset="0.8202" style="stop-color:#003D6D"/>
- </linearGradient>
-
- <rect x="3.586" y="2.254" fill="url(#XMLID_5_)" stroke="#115B7E" stroke-width="0.524" stroke-linejoin="round" width="3.105" height="11.492"/>
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="10.6035" y1="-0.7241" x2="10.6035" y2="17.4704">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.1737" style="stop-color:#9EC8D1"/>
- <stop offset="0.3357" style="stop-color:#62A9B3"/>
- <stop offset="0.4543" style="stop-color:#3D95A1"/>
- <stop offset="0.5169" style="stop-color:#2F8E9A"/>
- <stop offset="0.5662" style="stop-color:#247C90"/>
- <stop offset="0.6734" style="stop-color:#115A7D"/>
- <stop offset="0.762" style="stop-color:#044571"/>
- <stop offset="0.8202" style="stop-color:#003D6D"/>
- </linearGradient>
-
- <rect x="9.051" y="2.254" fill="url(#XMLID_6_)" stroke="#115B7E" stroke-width="0.524" stroke-linejoin="round" width="3.106" height="11.492"/>
- <linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="5.5078" y1="-4.7964" x2="5.0184" y2="10.3557">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <rect x="4.274" y="3.041" opacity="0.3" fill="url(#XMLID_7_)" enable-background="new " width="1.783" height="5.485"/>
- <linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="10.959" y1="-4.7964" x2="10.4696" y2="10.3557">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <rect x="9.726" y="3.041" opacity="0.3" fill="url(#XMLID_8_)" enable-background="new " width="1.784" height="5.485"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_play.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="16" height="16" viewBox="0 0 16 16"
- overflow="visible" enable-background="new 0 0 16 16" xml:space="preserve">
-<g>
- <rect fill="none" width="16" height="16"/>
- <g>
- <linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="8.0005" y1="-1.4077" x2="8.0005" y2="15.1577">
- <stop offset="0.0225" style="stop-color:#DAF49A"/>
- <stop offset="0.1591" style="stop-color:#B1DA6F"/>
- <stop offset="0.3642" style="stop-color:#7AB733"/>
- <stop offset="0.5156" style="stop-color:#57A10E"/>
- <stop offset="0.5955" style="stop-color:#4A9900"/>
- <stop offset="0.6556" style="stop-color:#398419"/>
- <stop offset="0.7512" style="stop-color:#22663B"/>
- <stop offset="0.8301" style="stop-color:#135550"/>
- <stop offset="0.882" style="stop-color:#0E4E58"/>
- </linearGradient>
- <polygon fill="url(#XMLID_3_)" stroke="#115B7E" stroke-width="0.4706" stroke-linejoin="round" points="2.54,14.304 2.54,1.695
- 13.461,8 "/>
- <linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="7.8047" y1="-5.2505" x2="7.2691" y2="11.3333">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <polygon opacity="0.3" fill="url(#XMLID_4_)" enable-background="new " points="3.417,9.232 3.418,3.166 11.498,7.83 "/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_record.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="16" height="16" viewBox="0 0 16 16"
- overflow="visible" enable-background="new 0 0 16 16" xml:space="preserve">
-<g>
- <rect fill="none" width="16" height="16"/>
- <g>
- <g>
- <g>
- <g>
-
- <radialGradient id="XMLID_3_" cx="4.8145" cy="5.0918" r="11.5364" gradientTransform="matrix(0.9554 0 0 0.9553 0.7654 0.324)" gradientUnits="userSpaceOnUse">
- <stop offset="0" style="stop-color:#F4BB9A"/>
- <stop offset="0.0694" style="stop-color:#EDA98C"/>
- <stop offset="0.3115" style="stop-color:#D56D60"/>
- <stop offset="0.49" style="stop-color:#C64844"/>
- <stop offset="0.5843" style="stop-color:#C03A3A"/>
- <stop offset="0.7264" style="stop-color:#AD2323"/>
- <stop offset="0.8912" style="stop-color:#9C0E0E"/>
- <stop offset="1" style="stop-color:#960606"/>
- </radialGradient>
- <path fill="url(#XMLID_3_)" d="M1.205,8.001c0,3.747,3.048,6.795,6.794,6.795c3.748,0,6.797-3.048,6.797-6.795
- c0-3.748-3.049-6.796-6.797-6.796C4.252,1.205,1.205,4.253,1.205,8.001z"/>
- <path fill="#7B341F" d="M7.999,1C4.133,1,1,4.136,1,8.001C1,11.867,4.133,15,7.999,15C11.866,15,15,11.867,15,8.001
- C15,4.136,11.866,1,7.999,1L7.999,1z M7.999,14.591c-3.634,0-6.59-2.956-6.59-6.59c0-3.635,2.956-6.592,6.59-6.592
- c3.635,0,6.592,2.957,6.592,6.592C14.591,11.635,11.634,14.591,7.999,14.591L7.999,14.591z"/>
- </g>
- </g>
- </g>
-
- <linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="-63.9365" y1="-810.6626" x2="-63.9365" y2="-817.5543" gradientTransform="matrix(0.7258 -0.2808 -0.2871 -0.7419 -181.4041 -617.9587)">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <path opacity="0.3" fill="url(#XMLID_4_)" enable-background="new " d="M5.339,2.476c2.033-0.786,4.132-0.262,4.687,1.172
- c0.556,1.433-0.645,3.234-2.677,4.021C5.314,8.454,3.215,7.93,2.661,6.497C2.106,5.063,3.305,3.263,5.339,2.476z"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_record_not.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="15" height="15" viewBox="0 0 15 15"
- overflow="visible" enable-background="new 0 0 15 15" xml:space="preserve">
-<g>
- <rect fill="none" width="15" height="15"/>
- <g>
- <g>
- <g>
- <g>
-
- <radialGradient id="XMLID_3_" cx="5.2412" cy="4.4292" r="11.5378" gradientTransform="matrix(0.8955 0 0 0.8957 0.3363 0.8964)" gradientUnits="userSpaceOnUse">
- <stop offset="0" style="stop-color:#F4BB9A"/>
- <stop offset="0.0694" style="stop-color:#EDA98C"/>
- <stop offset="0.3115" style="stop-color:#D56D60"/>
- <stop offset="0.49" style="stop-color:#C64844"/>
- <stop offset="0.5843" style="stop-color:#C03A3A"/>
- <stop offset="0.7264" style="stop-color:#AD2323"/>
- <stop offset="0.8912" style="stop-color:#9C0E0E"/>
- <stop offset="1" style="stop-color:#960606"/>
- </radialGradient>
- <path fill="url(#XMLID_3_)" d="M2.996,2.995C1.792,4.198,1.129,5.797,1.129,7.499c0,3.514,2.858,6.372,6.371,6.372
- c3.514,0,6.372-2.858,6.372-6.372c0-1.702-0.663-3.302-1.866-4.504C10.803,1.792,9.202,1.129,7.5,1.129
- C5.798,1.129,4.199,1.792,2.996,2.995z"/>
- <path fill="#7B341F" d="M7.5,0.938c-3.624,0-6.563,2.937-6.563,6.562s2.939,6.563,6.563,6.563c3.625,0,6.563-2.938,6.563-6.563
- S11.125,0.938,7.5,0.938L7.5,0.938z M7.5,13.68c-3.408,0-6.18-2.771-6.18-6.18c0-3.407,2.772-6.179,6.18-6.179
- s6.18,2.772,6.18,6.179C13.68,10.908,10.908,13.68,7.5,13.68L7.5,13.68z"/>
- </g>
- </g>
- </g>
-
- <linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="-64.2925" y1="-811.7285" x2="-64.2925" y2="-818.1852" gradientTransform="matrix(0.7258 -0.2808 -0.2871 -0.7419 -181.6848 -618.9701)">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <path opacity="0.3" fill="url(#XMLID_4_)" enable-background="new " d="M5.079,2.289C6.984,1.55,8.951,2.042,9.473,3.386
- C9.991,4.73,8.866,6.417,6.961,7.155C5.056,7.893,3.089,7.402,2.569,6.059C2.048,4.713,3.173,3.026,5.079,2.289z"/>
- </g>
- <g>
-
- <rect x="-0.907" y="6.626" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -3.1064 7.4997)" fill="#540000" width="16.814" height="1.748"/>
-
- <rect x="-0.908" y="6.627" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 7.4996 18.1066)" fill="#540000" width="16.815" height="1.746"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_rew.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="16" height="16" viewBox="0 0 16 16"
- overflow="visible" enable-background="new 0 0 16 16" xml:space="preserve">
-<g>
- <rect fill="none" width="16" height="16"/>
- <g>
-
- <linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="8.6704" y1="-1.3042" x2="7.0489" y2="13.5588" gradientTransform="matrix(-1 0 0 1 16 0)">
- <stop offset="0.0225" style="stop-color:#DAF49A"/>
- <stop offset="0.1591" style="stop-color:#B1DA6F"/>
- <stop offset="0.3642" style="stop-color:#7AB733"/>
- <stop offset="0.5156" style="stop-color:#57A10E"/>
- <stop offset="0.5955" style="stop-color:#4A9900"/>
- <stop offset="0.6556" style="stop-color:#398419"/>
- <stop offset="0.7512" style="stop-color:#22663B"/>
- <stop offset="0.8301" style="stop-color:#135550"/>
- <stop offset="0.882" style="stop-color:#0E4E58"/>
- </linearGradient>
- <polygon fill="url(#XMLID_4_)" stroke="#115B7E" stroke-width="0.4706" stroke-linejoin="round" points="0.768,7.972 8.083,1.695
- 8.083,7.83 15.23,1.695 15.231,14.304 8.083,8.118 8.084,14.304 "/>
-
- <linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="4.2236" y1="-5.0122" x2="3.7113" y2="10.8517" gradientTransform="matrix(-1 0 0 1 16 0)">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <polygon opacity="0.3" fill="url(#XMLID_5_)" enable-background="new " points="14.608,8.885 14.607,3.083 9.613,7.544 "/>
-
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="11.3467" y1="-5.0122" x2="10.8343" y2="10.8517" gradientTransform="matrix(-1 0 0 1 16 0)">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <polygon opacity="0.3" fill="url(#XMLID_6_)" enable-background="new " points="7.485,8.885 7.484,3.083 2.49,7.544 "/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_stop.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="16" height="16" viewBox="0 0 16 16"
- overflow="visible" enable-background="new 0 0 16 16" xml:space="preserve">
-<g>
- <rect fill="none" width="16" height="16"/>
- <g>
- <linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="8.9023" y1="-0.2603" x2="7.516" y2="12.4474">
- <stop offset="0" style="stop-color:#D6D6D6"/>
- <stop offset="0.192" style="stop-color:#A4A4A4"/>
- <stop offset="0.3568" style="stop-color:#7F7F7F"/>
- <stop offset="0.4438" style="stop-color:#707070"/>
- <stop offset="0.61" style="stop-color:#474747"/>
- <stop offset="0.7752" style="stop-color:#242424"/>
- <stop offset="0.9108" style="stop-color:#0F0F0F"/>
- <stop offset="1" style="stop-color:#080808"/>
- </linearGradient>
-
- <rect x="2.84" y="2.839" fill="url(#XMLID_3_)" stroke="#000000" stroke-width="0.4706" stroke-linejoin="round" width="10.322" height="10.321"/>
- <linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="8.3242" y1="-4.1167" x2="7.8641" y2="10.1299">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <rect x="3.569" y="3.368" opacity="0.3" fill="url(#XMLID_4_)" enable-background="new " width="8.866" height="4.925"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_wait1.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="14" height="14" viewBox="0 0 14 14"
- overflow="visible" enable-background="new 0 0 14 14" xml:space="preserve">
-<g>
- <rect y="0" fill="none" width="14" height="14"/>
- <g>
- <g>
-
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="10.5508" y1="-3.3726" x2="10.5508" y2="15.2263" gradientTransform="matrix(0.7071 0.7071 -0.7071 0.7071 7.002 -3.0148)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_6_)" d="M7.046,6.917c-1.671,1.671-3.329,3.329-4.979,4.98c0.007,0.008,0.014,0.017,0.021,0.023
- c2.718,2.718,7.126,2.718,9.843,0c0.021-0.021,0.038-0.042,0.058-0.063C10.4,10.272,8.724,8.596,7.046,6.917z"/>
-
- <linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="10.5488" y1="2.7715" x2="10.5488" y2="14.2187" gradientTransform="matrix(0.7071 0.7071 -0.7071 0.7071 7.002 -3.0148)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_7_)" d="M11.931,2.077c-0.007-0.007-0.015-0.014-0.022-0.021C10.268,3.696,8.65,5.313,7.046,6.917
- c1.678,1.678,3.354,3.355,4.941,4.941C14.646,9.137,14.63,4.775,11.931,2.077z"/>
-
- <linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="3.5923" y1="-3.373" x2="3.5923" y2="15.2274" gradientTransform="matrix(0.7071 0.7071 -0.7071 0.7071 7.002 -3.0148)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_8_)" d="M11.908,2.056C9.21-0.62,4.865-0.631,2.15,2.021c1.56,1.56,3.222,3.224,4.896,4.896
- C8.65,5.313,10.268,3.696,11.908,2.056z"/>
-
- <linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="3.5894" y1="2.771" x2="3.5894" y2="14.2168" gradientTransform="matrix(0.7071 0.7071 -0.7071 0.7071 7.002 -3.0148)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_9_)" d="M2.15,2.021C2.129,2.04,2.106,2.057,2.086,2.077c-2.709,2.71-2.718,7.102-0.02,9.82
- c1.651-1.651,3.309-3.309,4.979-4.98C5.372,5.245,3.709,3.581,2.15,2.021z"/>
- <g>
- <path fill="#17594C" d="M6.999,0C3.133,0,0,3.134,0,7.001C0,10.866,3.133,14,6.999,14C10.866,14,14,10.866,14,7.001
- C14,3.134,10.866,0,6.999,0L6.999,0z M6.999,13.591c-3.634,0-6.59-2.956-6.59-6.59c0-3.635,2.956-6.592,6.59-6.592
- c3.635,0,6.592,2.957,6.592,6.592C13.591,10.635,10.634,13.591,6.999,13.591L6.999,13.591z"/>
- </g>
- </g>
- <linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="6.9282" y1="-0.4961" x2="6.9282" y2="6.2416">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <ellipse opacity="0.2" fill="url(#XMLID_10_)" enable-background="new " cx="6.928" cy="4.309" rx="4.983" ry="3.422"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_wait2.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="14" height="14" viewBox="0 0 14 14"
- overflow="visible" enable-background="new 0 0 14 14" xml:space="preserve">
-<g>
- <rect y="0" fill="none" width="14" height="14"/>
- <g>
- <g>
-
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="10.4727" y1="-3.4482" x2="10.4727" y2="15.148" gradientTransform="matrix(0 1 -1 0 14.0059 -0.0098)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_6_)" d="M7.092,6.968c-2.363,0-4.708,0-7.042,0c-0.001,0.01-0.002,0.021-0.002,0.031
- c0,3.844,3.116,6.961,6.96,6.96c0.029,0.001,0.057-0.003,0.084-0.004C7.092,11.713,7.092,9.341,7.092,6.968z"/>
-
- <linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="10.4707" y1="2.6938" x2="10.4707" y2="14.1403" gradientTransform="matrix(0 1 -1 0 14.0059 -0.0098)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_7_)" d="M13.969,6.999c0-0.01,0-0.021-0.001-0.031c-2.32,0-4.606,0-6.875,0c0,2.373,0,4.745,0,6.987
- C10.897,13.911,13.969,10.815,13.969,6.999z"/>
-
- <linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="3.5142" y1="-3.4497" x2="3.5142" y2="15.1495" gradientTransform="matrix(0 1 -1 0 14.0059 -0.0098)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_8_)" d="M13.968,6.968c-0.016-3.801-3.081-6.88-6.875-6.925c0,2.206,0,4.558,0,6.925
- C9.361,6.968,11.647,6.968,13.968,6.968z"/>
-
- <linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="3.5112" y1="2.6943" x2="3.5112" y2="14.1386" gradientTransform="matrix(0 1 -1 0 14.0059 -0.0098)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_9_)" d="M7.092,0.043C7.064,0.042,7.036,0.038,7.007,0.038c-3.832,0-6.943,3.1-6.958,6.93
- c2.335,0,4.679,0,7.042,0C7.092,4.601,7.092,2.249,7.092,0.043z"/>
- <g>
- <path fill="#17594C" d="M6.999,0C3.133,0,0,3.134,0,7.001C0,10.866,3.133,14,6.999,14C10.866,14,14,10.866,14,7.001
- C14,3.134,10.866,0,6.999,0L6.999,0z M6.999,13.591c-3.634,0-6.59-2.956-6.59-6.59c0-3.635,2.956-6.592,6.59-6.592
- c3.635,0,6.592,2.957,6.592,6.592C13.591,10.635,10.634,13.591,6.999,13.591L6.999,13.591z"/>
- </g>
- </g>
- <linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="6.9282" y1="-0.4961" x2="6.9282" y2="6.2416">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <ellipse opacity="0.2" fill="url(#XMLID_10_)" enable-background="new " cx="6.928" cy="4.309" rx="4.983" ry="3.422"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_wait3.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="14" height="14" viewBox="0 0 14 14"
- overflow="visible" enable-background="new 0 0 14 14" xml:space="preserve">
-<g>
- <rect y="0" fill="none" width="14" height="14"/>
- <g>
- <g>
-
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="10.5527" y1="-3.3711" x2="10.5527" y2="15.2264" gradientTransform="matrix(-0.7071 0.7071 -0.7071 -0.7071 17.0236 6.9917)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_6_)" d="M7.089,7.038C5.418,5.367,3.761,3.709,2.11,2.058C2.102,2.064,2.093,2.071,2.086,2.078
- c-2.718,2.718-2.718,7.126,0,9.843c0.021,0.021,0.042,0.038,0.063,0.058C3.734,10.393,5.412,8.715,7.089,7.038z"/>
-
- <linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="10.5508" y1="2.771" x2="10.5508" y2="14.2174" gradientTransform="matrix(-0.7071 0.7071 -0.7071 -0.7071 17.0236 6.9917)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_7_)" d="M11.931,11.922c0.007-0.007,0.014-0.016,0.021-0.023c-1.641-1.641-3.258-3.257-4.862-4.861
- c-1.678,1.677-3.355,3.355-4.941,4.941C4.871,14.638,9.232,14.62,11.931,11.922z"/>
-
- <linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="3.5942" y1="-3.3716" x2="3.5942" y2="15.2263" gradientTransform="matrix(-0.7071 0.7071 -0.7071 -0.7071 17.0236 6.9917)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_8_)" d="M11.951,11.898c2.676-2.698,2.687-7.042,0.035-9.757C10.427,3.7,8.763,5.364,7.089,7.038
- C8.693,8.642,10.311,10.258,11.951,11.898z"/>
-
- <linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="3.5918" y1="2.7715" x2="3.5918" y2="14.2165" gradientTransform="matrix(-0.7071 0.7071 -0.7071 -0.7071 17.0236 6.9917)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_9_)" d="M11.986,2.141c-0.02-0.021-0.036-0.044-0.057-0.064C9.22-0.632,4.828-0.641,2.11,2.058
- c1.651,1.651,3.309,3.309,4.979,4.98C8.763,5.364,10.427,3.7,11.986,2.141z"/>
- <g>
- <path fill="#17594C" d="M6.999,0C3.133,0,0,3.134,0,7.001C0,10.866,3.133,14,6.999,14C10.866,14,14,10.866,14,7.001
- C14,3.134,10.866,0,6.999,0L6.999,0z M6.999,13.591c-3.634,0-6.59-2.956-6.59-6.59c0-3.635,2.956-6.592,6.59-6.592
- c3.635,0,6.592,2.957,6.592,6.592C13.591,10.635,10.634,13.591,6.999,13.591L6.999,13.591z"/>
- </g>
- </g>
- <linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="6.9282" y1="-0.4961" x2="6.9282" y2="6.2416">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <ellipse opacity="0.2" fill="url(#XMLID_10_)" enable-background="new " cx="6.928" cy="4.309" rx="4.983" ry="3.422"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_wait4.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="14" height="14" viewBox="0 0 14 14"
- overflow="visible" enable-background="new 0 0 14 14" xml:space="preserve">
-<g>
- <rect y="0" fill="none" width="14" height="14"/>
- <g>
- <g>
-
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="10.4746" y1="-3.4502" x2="10.4746" y2="15.1461" gradientTransform="matrix(-1 0 0 -1 14.0176 13.9961)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_6_)" d="M7.039,7.084c0-2.363,0-4.708,0-7.042C7.029,0.04,7.019,0.039,7.008,0.039
- c-3.844,0-6.961,3.117-6.96,6.96c0,0.029,0.003,0.057,0.004,0.085C2.295,7.083,4.667,7.083,7.039,7.084z"/>
-
- <linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="10.4727" y1="2.6919" x2="10.4727" y2="14.1391" gradientTransform="matrix(-1 0 0 -1 14.0176 13.9961)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_7_)" d="M7.009,13.961c0.01,0,0.021-0.002,0.03-0.002c0-2.32,0-4.606,0-6.875c-2.372,0-4.744,0-6.987,0
- C0.097,10.889,3.192,13.961,7.009,13.961z"/>
-
- <linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="3.5161" y1="-3.4512" x2="3.5161" y2="15.1467" gradientTransform="matrix(-1 0 0 -1 14.0176 13.9961)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_8_)" d="M7.039,13.959c3.801-0.017,6.88-3.08,6.925-6.875c-2.205,0-4.558,0-6.925,0
- C7.039,9.353,7.039,11.639,7.039,13.959z"/>
-
- <linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="3.5137" y1="2.6924" x2="3.5137" y2="14.1366" gradientTransform="matrix(-1 0 0 -1 14.0176 13.9961)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_9_)" d="M13.964,7.084c0.001-0.028,0.005-0.057,0.005-0.086c0-3.831-3.099-6.942-6.93-6.957
- c0,2.335,0,4.679,0,7.042C9.406,7.084,11.759,7.084,13.964,7.084z"/>
- <g>
- <path fill="#17594C" d="M6.999,0C3.133,0,0,3.134,0,7.001C0,10.866,3.133,14,6.999,14C10.866,14,14,10.866,14,7.001
- C14,3.134,10.866,0,6.999,0L6.999,0z M6.999,13.591c-3.634,0-6.59-2.956-6.59-6.59c0-3.635,2.956-6.592,6.59-6.592
- c3.635,0,6.592,2.957,6.592,6.592C13.591,10.635,10.634,13.591,6.999,13.591L6.999,13.591z"/>
- </g>
- </g>
- <linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="6.9282" y1="-0.4961" x2="6.9282" y2="6.2416">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <ellipse opacity="0.2" fill="url(#XMLID_10_)" enable-background="new " cx="6.928" cy="4.309" rx="4.983" ry="3.422"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_wait5.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="14" height="14" viewBox="0 0 14 14"
- overflow="visible" enable-background="new 0 0 14 14" xml:space="preserve">
-<g>
- <rect y="0" fill="none" width="14" height="14"/>
- <g>
- <g>
-
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="10.5527" y1="-3.3721" x2="10.5527" y2="15.2242" gradientTransform="matrix(-0.7071 -0.7071 0.7071 -0.7071 7.0161 17.0138)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_6_)" d="M6.97,7.081c1.671-1.671,3.329-3.328,4.979-4.979c-0.006-0.008-0.013-0.017-0.021-0.023
- c-2.718-2.718-7.125-2.718-9.843,0C2.065,2.098,2.048,2.12,2.029,2.14C3.615,3.726,5.292,5.403,6.97,7.081z"/>
-
- <linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="10.5508" y1="2.7695" x2="10.5508" y2="14.2159" gradientTransform="matrix(-0.7071 -0.7071 0.7071 -0.7071 7.0161 17.0138)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_7_)" d="M2.085,11.922c0.007,0.007,0.015,0.014,0.022,0.021c1.641-1.641,3.257-3.257,4.862-4.862
- C5.292,5.403,3.615,3.726,2.029,2.14C-0.63,4.862-0.613,9.224,2.085,11.922z"/>
-
- <linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="3.5942" y1="-3.3735" x2="3.5942" y2="15.2256" gradientTransform="matrix(-0.7071 -0.7071 0.7071 -0.7071 7.0161 17.0138)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_8_)" d="M2.108,11.942c2.7,2.677,7.042,2.687,9.758,0.035c-1.56-1.56-3.223-3.224-4.896-4.897
- C5.365,8.686,3.749,10.302,2.108,11.942z"/>
-
- <linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="3.5918" y1="2.7705" x2="3.5918" y2="14.2147" gradientTransform="matrix(-0.7071 -0.7071 0.7071 -0.7071 7.0161 17.0138)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_9_)" d="M11.866,11.978c0.021-0.019,0.044-0.036,0.064-0.057c2.709-2.71,2.717-7.101,0.019-9.82
- C10.299,3.752,8.641,5.41,6.97,7.081C8.644,8.754,10.307,10.418,11.866,11.978z"/>
- <g>
- <path fill="#17594C" d="M6.999,0C3.133,0,0,3.134,0,7.001C0,10.866,3.133,14,6.999,14C10.866,14,14,10.866,14,7.001
- C14,3.134,10.866,0,6.999,0L6.999,0z M6.999,13.591c-3.634,0-6.59-2.956-6.59-6.59c0-3.635,2.956-6.592,6.59-6.592
- c3.635,0,6.592,2.957,6.592,6.592C13.591,10.635,10.634,13.591,6.999,13.591L6.999,13.591z"/>
- </g>
- </g>
- <linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="6.9282" y1="-0.4961" x2="6.9282" y2="6.2416">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <ellipse opacity="0.2" fill="url(#XMLID_10_)" enable-background="new " cx="6.928" cy="4.309" rx="4.983" ry="3.422"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_wait6.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="14" height="14" viewBox="0 0 14 14"
- overflow="visible" enable-background="new 0 0 14 14" xml:space="preserve">
-<g>
- <rect y="0" fill="none" width="14" height="14"/>
- <g>
- <g>
-
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="10.4727" y1="-3.4492" x2="10.4727" y2="15.147" gradientTransform="matrix(0 -1 1 0 0.0107 14.0078)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_6_)" d="M6.923,7.03c2.364,0,4.708,0,7.042,0c0.001-0.01,0.003-0.021,0.002-0.031
- c0-3.844-3.116-6.96-6.96-6.96c-0.029,0-0.057,0.003-0.084,0.004C6.923,2.286,6.923,4.658,6.923,7.03z"/>
-
- <linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="10.4707" y1="2.6924" x2="10.4707" y2="14.1388" gradientTransform="matrix(0 -1 1 0 0.0107 14.0078)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_7_)" d="M0.046,7c0,0.01,0.001,0.021,0.001,0.031c2.32,0,4.606,0,6.875,0c0-2.373,0-4.745,0-6.987
- C3.119,0.088,0.046,3.184,0.046,7z"/>
-
- <linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="3.5146" y1="-3.4507" x2="3.5146" y2="15.1485" gradientTransform="matrix(0 -1 1 0 0.0107 14.0078)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_8_)" d="M0.048,7.03c0.016,3.802,3.081,6.88,6.875,6.925c0-2.205,0-4.559,0-6.925
- C4.654,7.03,2.368,7.03,0.048,7.03z"/>
-
- <linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="3.5117" y1="2.6924" x2="3.5117" y2="14.1374" gradientTransform="matrix(0 -1 1 0 0.0107 14.0078)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_9_)" d="M6.923,13.955c0.028,0.001,0.056,0.006,0.085,0.006c3.833,0,6.943-3.101,6.958-6.931
- c-2.335,0-4.679,0-7.042,0C6.923,9.396,6.923,11.75,6.923,13.955z"/>
- <g>
- <path fill="#17594C" d="M6.999,0C3.133,0,0,3.134,0,7.001C0,10.866,3.133,14,6.999,14C10.866,14,14,10.866,14,7.001
- C14,3.134,10.866,0,6.999,0L6.999,0z M6.999,13.591c-3.634,0-6.59-2.956-6.59-6.59c0-3.635,2.956-6.592,6.59-6.592
- c3.635,0,6.592,2.957,6.592,6.592C13.591,10.635,10.634,13.591,6.999,13.591L6.999,13.591z"/>
- </g>
- </g>
- <linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="6.9282" y1="-0.4961" x2="6.9282" y2="6.2416">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <ellipse opacity="0.2" fill="url(#XMLID_10_)" enable-background="new " cx="6.928" cy="4.309" rx="4.983" ry="3.422"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_wait7.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="14" height="14" viewBox="0 0 14 14"
- overflow="visible" enable-background="new 0 0 14 14" xml:space="preserve">
-<g>
- <rect x="0.001" y="0" fill="none" width="14" height="14"/>
- <g>
- <g>
-
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="10.5522" y1="-3.3711" x2="10.5522" y2="15.2264" gradientTransform="matrix(0.7071 -0.7071 0.7071 0.7071 -3.0068 7.0062)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_6_)" d="M6.927,6.961c1.671,1.671,3.329,3.328,4.98,4.979c0.008-0.007,0.017-0.013,0.023-0.021
- c2.718-2.718,2.718-7.126,0-9.843c-0.021-0.021-0.042-0.038-0.063-0.057C10.282,3.606,8.604,5.283,6.927,6.961z"/>
-
- <linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="10.5503" y1="2.771" x2="10.5503" y2="14.2174" gradientTransform="matrix(0.7071 -0.7071 0.7071 0.7071 -3.0068 7.0062)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_7_)" d="M2.086,2.076C2.079,2.083,2.073,2.092,2.065,2.099C3.706,3.74,5.323,5.356,6.927,6.961
- c1.677-1.678,3.355-3.355,4.941-4.941C9.145-0.639,4.785-0.622,2.086,2.076z"/>
-
- <linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="3.5938" y1="-3.3726" x2="3.5937" y2="15.2279" gradientTransform="matrix(0.7071 -0.7071 0.7071 0.7071 -3.0068 7.0062)">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_8_)" d="M2.065,2.099c-2.676,2.7-2.687,7.043-0.036,9.758c1.56-1.559,3.224-3.223,4.897-4.896
- C5.323,5.356,3.706,3.74,2.065,2.099z"/>
-
- <linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="3.5913" y1="2.7715" x2="3.5913" y2="14.2157" gradientTransform="matrix(0.7071 -0.7071 0.7071 0.7071 -3.0068 7.0062)">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_9_)" d="M2.03,11.857c0.02,0.021,0.036,0.043,0.057,0.063c2.71,2.711,7.102,2.718,9.82,0.02
- c-1.651-1.651-3.309-3.309-4.98-4.979C5.253,8.635,3.589,10.299,2.03,11.857z"/>
- <g>
- <path fill="#17594C" d="M6.999,0C3.133,0,0,3.134,0,7.001C0,10.865,3.133,14,6.999,14C10.866,14,14,10.865,14,7.001
- C14,3.134,10.866,0,6.999,0L6.999,0z M6.999,13.592c-3.634,0-6.59-2.957-6.59-6.59c0-3.635,2.956-6.593,6.59-6.593
- c3.635,0,6.592,2.958,6.592,6.593C13.59,10.635,10.633,13.592,6.999,13.592L6.999,13.592z"/>
- </g>
- </g>
- <linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="6.9282" y1="-0.4961" x2="6.9282" y2="6.2416">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <ellipse opacity="0.2" fill="url(#XMLID_10_)" enable-background="new " cx="6.928" cy="4.309" rx="4.982" ry="3.422"/>
- </g>
-</g>
-</svg>
--- a/mmsharing/mmshui/graphics/qgn_indi_video_wait8.svg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_svg "http://www.w3.org/2000/svg">
- <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
-]>
-<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="14" height="14" viewBox="0 0 14 14"
- overflow="visible" enable-background="new 0 0 14 14" xml:space="preserve">
-<g>
- <rect x="0.001" y="0" fill="none" width="14" height="14"/>
- <g>
- <g>
- <linearGradient id="XMLID_6_" gradientUnits="userSpaceOnUse" x1="10.4731" y1="-3.4497" x2="10.4731" y2="15.1491">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_6_)" d="M6.978,6.914c0,2.364,0,4.707,0,7.043c0.01,0,0.021,0.002,0.031,0.002
- c3.844,0,6.96-3.117,6.96-6.96c0-0.029-0.003-0.056-0.004-0.084C11.721,6.914,9.349,6.914,6.978,6.914z"/>
- <linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="10.4712" y1="2.6934" x2="10.4712" y2="14.1398">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_7_)" d="M7.008,0.037c-0.01,0-0.021,0.002-0.031,0.002c0,2.32,0,4.606,0,6.875c2.372,0,4.744,0,6.987,0
- C13.918,3.109,10.824,0.037,7.008,0.037z"/>
- <linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="3.5146" y1="-3.4492" x2="3.5146" y2="15.1486">
- <stop offset="0" style="stop-color:#E6EEF4"/>
- <stop offset="0.0772" style="stop-color:#C6DCC1"/>
- <stop offset="0.211" style="stop-color:#91C06F"/>
- <stop offset="0.321" style="stop-color:#6BAB33"/>
- <stop offset="0.4014" style="stop-color:#539E0E"/>
- <stop offset="0.4438" style="stop-color:#4A9900"/>
- <stop offset="0.5475" style="stop-color:#398419"/>
- <stop offset="0.7125" style="stop-color:#22663B"/>
- <stop offset="0.8486" style="stop-color:#135550"/>
- <stop offset="0.9382" style="stop-color:#0E4E58"/>
- </linearGradient>
- <path fill="url(#XMLID_8_)" d="M6.978,0.039c-3.802,0.016-6.88,3.08-6.926,6.875c2.206,0,4.559,0,6.926,0
- C6.978,4.646,6.978,2.359,6.978,0.039z"/>
- <linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="3.5127" y1="2.6938" x2="3.5127" y2="14.1397">
- <stop offset="0" style="stop-color:#DCE8E4"/>
- <stop offset="1" style="stop-color:#43910A"/>
- </linearGradient>
- <path fill="url(#XMLID_9_)" d="M0.052,6.914c0,0.028-0.004,0.056-0.004,0.084c0,3.833,3.1,6.943,6.93,6.958
- c0-2.336,0-4.679,0-7.043C4.61,6.914,2.257,6.914,0.052,6.914z"/>
- <g>
- <path fill="#17594C" d="M6.999,0C3.133,0,0,3.134,0,7.001C0,10.865,3.133,14,6.999,14C10.866,14,14,10.865,14,7.001
- C14,3.134,10.866,0,6.999,0L6.999,0z M6.999,13.592c-3.634,0-6.59-2.957-6.59-6.59c0-3.635,2.956-6.593,6.59-6.593
- c3.635,0,6.592,2.958,6.592,6.593C13.59,10.635,10.633,13.592,6.999,13.592L6.999,13.592z"/>
- </g>
- </g>
- <linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="6.9282" y1="-0.4961" x2="6.9282" y2="6.2416">
- <stop offset="0.0056" style="stop-color:#FFFFFF"/>
- <stop offset="1" style="stop-color:#FFFFFF"/>
- </linearGradient>
- <ellipse opacity="0.2" fill="url(#XMLID_10_)" enable-background="new " cx="6.928" cy="4.309" rx="4.982" ry="3.422"/>
- </g>
-</g>
-</svg>
Binary file mmsharing/mmshui/graphics/qgn_menu_mus_app_cxt.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_menu_mus_app_cxt_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_menu_mus_app_cxt_mask_soft.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_menu_mus_app_lst.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_menu_mus_app_lst_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_menu_mus_app_lst_mask_soft.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_clip_rec_sub.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_clip_rec_sub_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_file_video.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_file_video_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_folder_sub_large.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_folder_sub_large_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_memc_mmc_tab.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_memc_mmc_tab2.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_memc_mmc_tab2_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_memc_mmc_tab_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_memc_phone_tab.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_memc_phone_tab2.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_memc_phone_tab2_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_memc_phone_tab_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_sip_url.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_sip_url_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_view_clip_sub.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_view_clip_sub_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_view_live_sub.bmp has changed
Binary file mmsharing/mmshui/graphics/qgn_prop_mus_view_live_sub_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/Thumbs.db has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_ff.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_ff_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_norec.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_norec_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_pause.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_pause_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_play.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_play_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_rec.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_rec_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_rew.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_rew_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_stop.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_stop_mask.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_wait.bmp has changed
Binary file mmsharing/mmshui/graphics/temp_icons/qgn_msh_temp_wait_mask.bmp has changed
--- a/mmsharing/mmshui/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* 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: project specification
-*
-*/
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-ARMV5 THUMB WINSCW
-
-PRJ_MMPFILES
-musui.mmp
-
-PRJ_EXTENSIONS
-START EXTENSION s60/mifconv
-OPTION TARGETFILE musuitoolbaricons.mif
-OPTION HEADERFILE musuitoolbaricons.mbg
-OPTION SOURCEFILE toolbariconslist.txt
-END
-
-PRJ_EXTENSIONS
-START EXTENSION s60/mifconv
-OPTION TARGETFILE musuiicons.mif
-OPTION HEADERFILE musuiicons.mbg
-OPTION SOURCEFILE musuiiconlist.txt
-END
-
-START EXTENSION s60/mifconv
-OPTION TARGETFILE musui_aif.mif
-OPTION HEADERFILE musui_aif.mbg
-OPTION SOURCEDIR ../graphics
-OPTION SOURCES -c8,8 qgn_menu_mus_app_lst -c8,8 qgn_menu_mus_app_cxt
-END
-
-// end of file
--- a/mmsharing/mmshui/group/musui.mmp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/*
-* 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: Specifies the project for building musui.exe, the
-* application executable.
-*
-*/
-
-
-#include <platform_paths.hrh>
-#include <data_caging_paths.hrh>
-
-#include "../../../inc/musuid.hrh"
-
-
-TARGET musui.exe
-TARGETTYPE EXE
-UID 0x100039CE KMusUiUid //0x10282391
-EPOCSTACKSIZE 0x8000 // 32 kB
-EPOCHEAPSIZE 0x4000 0x500000 // Max heapsize ~= 5MB
-VENDORID VID_DEFAULT
-CAPABILITY CAP_APPLICATION NetworkControl SwEvent Location MultimediaDD
-
-START RESOURCE ../data/musui.rss
-HEADER
-LANGUAGE_IDS
-TARGETPATH APP_RESOURCE_DIR
-END // RESOURCE
-
-START RESOURCE ../data/musui_reg.rss
-DEPENDS musui.rsg
-TARGETPATH /private/10003a3f/apps // Do not change the UID in this path.
-END
-
-START BITMAP musui.mbm
-HEADER
-TARGETPATH APP_BITMAP_DIR
-SOURCEPATH ../graphics
-SOURCE c16 qgn_menu_mus_app_cxt.bmp
-SOURCE 8 qgn_menu_mus_app_cxt_mask.bmp
-SOURCE c8 qgn_graf_rop_black.bmp
-END // BITMAP
-
-SOURCEPATH ../src
-SOURCE musuiapp.cpp
-SOURCE musuidocument.cpp
-SOURCE musuiappui.cpp
-SOURCE musuigeneralview.cpp
-SOURCE musuisendview.cpp
-SOURCE musuilivesharingview.cpp
-SOURCE musuireceiveview.cpp
-SOURCE musuiclipsharingview.cpp
-SOURCE musuiviewcontainer.cpp
-SOURCE musuisendviewcontainer.cpp
-SOURCE musuilivesharingviewcontainer.cpp
-SOURCE musuiclipsharingviewcontainer.cpp
-SOURCE musuireceivecontainer.cpp
-SOURCE musuistatuspanehandler.cpp
-SOURCE musuinavimediadecorator.cpp
-SOURCE musuinavimediaanimator.cpp
-SOURCE musuiinvitationquery.cpp
-SOURCE musuiactivequerydialog.cpp
-SOURCE musuilevelindicator.cpp
-SOURCE musuiactivetimer.cpp
-SOURCE musuistartcontroller.cpp
-SOURCE musuipropertywatch.cpp
-SOURCE musuiresourcehandler.cpp
-SOURCE musuieventcontroller.cpp
-SOURCE musuisendcontroller.cpp
-SOURCE musuilivesharingcontroller.cpp
-SOURCE musuireceivecontroller.cpp
-SOURCE musuiclipsharingcontroller.cpp
-SOURCE musuibitmapdecoder.cpp
-SOURCE musuiactivitymanger.cpp
-SOURCE musuimmcmonitor.cpp
-SOURCE musuicallbackservice.cpp
-SOURCE musuidialogutil.cpp
-SOURCE musuifileutil.cpp
-SOURCE musuicontactutil.cpp
-SOURCE musuibackgroundviewcontainer.cpp
-
-
-USERINCLUDE .
-USERINCLUDE ../inc
-
-USERINCLUDE ../data
-USERINCLUDE ../../mmshshared/inc
-USERINCLUDE ../../mmshengine/inc
-USERINCLUDE ../../inc
-USERINCLUDE ../../../inc
-
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE .
-
-// MUS libraries:
-
-// Symbian libraries:
-LIBRARY apgrfx.lib // AppArc server client APIs
-LIBRARY apparc.lib // Application framework API
-LIBRARY bafl.lib // Resource readers
-LIBRARY centralrepository.lib // Central repository
-LIBRARY cntmodel.lib // Contact Model
-LIBRARY cone.lib // Cone framework API
-LIBRARY efsrv.lib // File Server API
-LIBRARY eikcoctl.lib // Control framework API
-LIBRARY eikcore.lib // Eikon core controls API
-LIBRARY eikctl.lib // Eikon controls
-LIBRARY eikdlg.lib // Eikon Dialog API
-LIBRARY euser.lib // Base library
-LIBRARY ws32.lib // Window server client API
-LIBRARY fbscli.lib // CFbsBitmap
-LIBRARY remconcoreapi.lib
-LIBRARY remconinterfacebase.lib
-LIBRARY hlplch.lib // HlpLauncher
-
-// S60 libraries:
-LIBRARY aknnotify.lib // CAknGlobalNote
-LIBRARY aknskins.lib // Avkon Skins Utils
-LIBRARY avkon.lib // Avkon Utils
-LIBRARY commonengine.lib // StringLoader
-LIBRARY featmgr.lib // S60 Feature manager API
-LIBRARY mgfetch.lib // Media Gallery Fetch Dialog
-LIBRARY pbkeng.lib // PhoneBook Engine API
-LIBRARY pbkview.lib // PhoneBook view API
-LIBRARY platformenv.lib // PathInfo
-LIBRARY aknicon.lib // AknIconUtils
-LIBRARY aknlayout.lib // CdlEngine
-LIBRARY gdi.lib // CFont
-LIBRARY flogger.lib // RFileLogger
-LIBRARY imageconversion.lib // CIImageDecoder
-LIBRARY egul.lib // CGulIcon
-LIBRARY pbk2commonui.lib // CPbk2ViewState
-LIBRARY directorylocalizer.lib // CDirectoryLocalizer
-
-// MUS libarires:
-LIBRARY musengine.lib // Engine
-
-PAGED
-
-// end of file
--- a/mmsharing/mmshui/group/musuiiconlist.txt Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
--c8,8 qgn_indi_video_forw
--c8,8 qgn_indi_video_pause
--c8,8 qgn_indi_video_play
--c8,8 qgn_indi_video_record
--c8,8 qgn_indi_video_record_not
--c8,8 qgn_indi_video_rew
--c8,8 qgn_indi_video_stop
--c8,8 qgn_indi_video_wait1
--c8,8 qgn_indi_video_wait2
--c8,8 qgn_indi_video_wait3
--c8,8 qgn_indi_video_wait4
--c8,8 qgn_indi_video_wait5
--c8,8 qgn_indi_video_wait6
--c8,8 qgn_indi_video_wait7
--c8,8 qgn_indi_video_wait8
--c8,8 qgn_indi_cams_zoom_bg
--c8,8 qgn_indi_cams_zoom_bg_max
--c8,8 qgn_indi_cams_zoom_bg_min
--c8,8 qgn_indi_cams_zoom_elevator
--c8,8 qgn_indi_browser_tb_zoom_out
--c8,8 qgn_indi_browser_tb_zoom_in
-
--- a/mmsharing/mmshui/group/toolbariconslist.txt Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
--c8,8 qgn_indi_tb_call_volume
--c8,8 qgn_indi_tb_fullscreen
--c8,8 qgn_indi_cams_tb_rec_pause
--c8,8 qgn_indi_tb_pause_send_video
--c8,8 qgn_indi_tb_play
--c8,8 qgn_indi_tb_video
--c8,8 qgn_indi_tb_ffw_frew
--c8,8 qgn_indi_tb_zoom
--c8,8 qgn_indi_tb_brightness
--c8,8 qgn_indi_tb_microphone_mute
--c8,8 qgn_indi_tb_microphone_unmute
--c8,8 qgn_indi_tb_ihf_off
--c8,8 qgn_indi_tb_ihf_on
Binary file mmsharing/mmshui/help/data/xhtml.zip has changed
--- a/mmsharing/mmshui/help/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-* Export help related files.
-*
-*/
-
-#include <platform_paths.hrh>
-PRJ_EXPORTS
-:zip ../data/xhtml.zip /epoc32/data/z/resource/ overwrite
-:zip ../data/xhtml.zip /epoc32/winscw/c/resource/ overwrite
-
-../inc/msh.hlp.hrh MW_LAYER_PLATFORM_EXPORT_PATH(csxhelp/msh.hlp.hrh)
-../rom/mmshuihelps_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(mmshuihelps_variant.iby)
--- a/mmsharing/mmshui/help/inc/msh.hlp.hrh Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-//
-// msh.hlp.hrh generated by CSXHelp Utilities.
-//
-
-#ifndef __MSH_HLP_HRH__
-#define __MSH_HLP_HRH__
-
-_LIT(KMSH_HLP_LIVE, "MSH_HLP_LIVE"); //
-_LIT(KMSH_HLP_CLIP, "MSH_HLP_CLIP"); //
-_LIT(KMSH_HLP_SETTINGS, "MSH_HLP_SETTINGS"); //
-_LIT(KMSH_HLP_RECEIVE, "MSH_HLP_RECEIVE"); //
-
-#endif
\ No newline at end of file
--- a/mmsharing/mmshui/help/rom/mmshuihelps_variant.iby Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
-* 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 __MMSHUIHELPS_VARIANT_IBY__
-#define __MMSHUIHELPS_VARIANT_IBY__
-
-#if defined(FF_S60_HELPS_IN_USE) && defined(__MULTIMEDIA_SHARING)
- data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x10282391\contents.zip, RESOURCE_FILES_DIR\xhtml\%02d\0x10282391\contents.zip)
- data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x10282391\index.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x10282391\index.xml)
- data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x10282391\keywords.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x10282391\keywords.xml)
- data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x10282391\meta.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x10282391\meta.xml)
-#endif
-
-#endif
\ No newline at end of file
--- a/mmsharing/mmshui/inc/musui.hrh Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
-* 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: The MUS application's resource header file.
-*
-*/
-
-
-#ifndef MUS_HRH
-#define MUS_HRH
-
-//
-// Application menu commands
-//
-enum TMusUiMenuCommands
- {
- // General commands start
- EMusuiCmdAppTest = 1,
- EMusuiCmdViewPause,
- EMusuiCmdViewContinue,
- EMusuiCmdViewReplay,
- EMusuiCmdViewShareVideo,
- EMusuiCmdViewShareImage,
- EMusuiCmdViewShareLive,
- EMusuiCmdViewClipAudio,
- EMusuiCmdViewAudioNormal,
- EMusuiCmdViewAudioMute,
- EMusuiCmdViewFullScreen,
- EMusuiCmdViewZoom,
- EMusuiCmdViewBrightness,
- EMusuiCmdViewMicrophoneMute,
- EMusuiCmdViewMicrophoneUnmute,
- EMusuiCmdViewIncreaseBrightness,
- EMusuiCmdViewDecreaseBrightness,
- EMusuiCmdViewZoomIn,
- EMusuiCmdViewZoomOut,
- EMusuiCmdViewVolumeUp, // Not in menu
- EMusuiCmdViewVolumeDown, // Not in menu
- EMusuiCmdViewVolumeChanged, // Not in menu
- EMusuiCmdViewFastForward, // Not in menu
- EMusuiCmdViewFastReverse, // Not in menu
- EMusuiCmdViewFastForwardEnd, // Not in menu
- EMusuiCmdViewFastReverseEnd, // Not in menu
- EMusuiCmdViewLoadspeaker,
- EMusuiCmdViewHandset,
- EMusuiCmdViewEndActiveCall,
- EMusuiCmdViewMiddleSoftkeyOk,
- EMusuiCmdRecord,
- EMusuiCmdStopRecording,
- EMusuiGenCmdExit,
- EMusuiGenCmdBack,
- // Toolbar commands:
- EMusuiCmdToolbarVolume,
- EMusuiCmdToolbarFullScreen,
- EMusuiCmdToolbarPauseLive,
- EMusuiCmdToolbarUnPauseLive,
- EMusuiCmdToolbarPause,
- EMusuiCmdToolbarUnPause,
- EMusuiCmdToolbarZoom,
- EMusuiCmdToolbarFFRev,
- EMusuiCmdToolbarBrightness,
- EMusuiCmdToolbarMute,
- EMusuiCmdToolbarUnmute,
- EMusuiCmdToolbarBlank,
- EMusuiCmdToolbarSpeakerOff,
- EMusuiCmdToolbarSpeakerOn,
- EMusuiCmdToolbarGallery,
- EMusUiCmdToolbarLastIndex // For loops
- };
-
-enum TMusUiDlgIds
- {
- EMusDialogTextQuery = 0x200,
- EMusConfirmationQuery
- };
-
-enum TMusUiControlIds
- {
- EMusDummyControlId = 1000,
- EMusInvitingWaitNoteId,
- EMusTranscodingProgressNoteId,
- EMusActivateCameraWaitNoteId
- };
-//
-// MUS clip list view icons
-//
-enum TMusUiIconID
- {
- EMusuiMarkingIconId = 0, // Icon for marking
- EMusuiFolderIconId, // Folder icon for user created folder
- EMusuiFolderSubfolderIconId, // - " - with subfolders
- EMusuiVideoIconId, // Icon for video file
- EMusuiOtherIconId, // Icon for other file type
- // Icon # of this enumeration (MUST be the last entry in this enumeration):
- EMusuiIconCount
- };
-
-
-#endif
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiactivequerydialog.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUIACTIVEQUERYDIALOG_H
-#define MUSUIACTIVEQUERYDIALOG_H
-
-//#include "musuiactivetimerobserver.h"
-
-#include <e32base.h>
-
-class CAknGlobalConfirmationQuery;
-class MMusUiQueryObserver;
-
-/**
- *
- *
- *
- * @lib musui.exe
- */
-class CMusUiActiveQueryDialog : public CActive
- {
-
-public: // constructor
-
- static CMusUiActiveQueryDialog* NewL( MMusUiQueryObserver& aObserver );
-
- ~CMusUiActiveQueryDialog();
-
-private:
-
- CMusUiActiveQueryDialog( MMusUiQueryObserver& aObserver );
-
- void ConstructL();
-
-
-public: // new functions
-
- void ShowL( const TDesC& aPrompt );
-
-
-protected: // from CActive
-
- void RunL();
-
- void DoCancel();
-
- TInt RunError( TInt aError );
-
-
-private: // data
-
- /** A global confirmation query. Own. */
- CAknGlobalConfirmationQuery* iGlobalQuery;
-
- /** Observer. */
- MMusUiQueryObserver& iObserver;
- };
-
-
-#endif // MUSUIACTIVEQUERYDIALOG_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiactivetimer.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
-* 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 MUSUIACTIVETIMER_H
-#define MUSUIACTIVETIMER_H
-
-#include <e32base.h>
-
-class MMusUiActiveTimerObserver;
-
-class CMusUiActiveTimer : public CActive
- {
-
-public: // constructors and destructor
-
- /**
- * Destructor.
- */
- ~CMusUiActiveTimer();
-
- /**
- * Two-phased constructor. Leaves on failure.
- * @return The constructed CMusUiActiveTimer object.
- */
- static CMusUiActiveTimer* NewL( MMusUiActiveTimerObserver* aObserver );
-
-private:
-
- /**
- * C++ constructor.
- */
- CMusUiActiveTimer( MMusUiActiveTimerObserver* aObserver );
-
- /**
- * Symbian 2nd-phase constructor.
- */
- void ConstructL();
-
-public: // new funtions:
-
- void After( TTimeIntervalMicroSeconds32 anInterval );
-
-private: // functions from base class CActive
-
- void DoCancel();
-
- void RunL();
-
- TInt RunError( TInt aError );
-
-private: // Data
-
- RTimer iTimer;
- MMusUiActiveTimerObserver* iObserver;
-
- };
-
-#endif // MUSUIACTIVETIMER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiactivetimerobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUIACTIVETIMEROBSERVER_H
-#define MUSUIACTIVETIMEROBSERVER_H
-
-class CMusUiActiveTimer;
-
-class MMusUiActiveTimerObserver
- {
-
-public:
-
- virtual void TimerComplete( CMusUiActiveTimer* aTimer ) = 0;
-
- };
-
-#endif // MUSUIACTIVETIMEROBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiactivitymanger.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
-* 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 MUSUIACTIVITYMANGER_H
-#define MUSUIACTIVITYMANGER_H
-
-#include <e32base.h>
-
-
-class CMusUiActivityManager : public CActive
- {
-
-public:
-
- static CMusUiActivityManager* NewL( TInt aTimeout = 60 );
-
- ~CMusUiActivityManager();
-
-
-protected:
-
- CMusUiActivityManager( TInt aTimeout );
-
- void ConstructL();
-
-
-public: // new functions:
-
- void SetTimeout(TInt aTimeout);
-
- void Start();
-
- void Reset();
-
-
-protected: // from CActive
-
- void DoCancel();
-
- void RunL();
-
- TInt RunError( TInt aError );
-
-
-protected:
-
- RTimer iTimer;
-
- TInt iTimeout;
-
-};
-
-#endif // MUSUIACTIVITYMANGER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiapp.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
-* 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: The application's application class.
-*
-*/
-
-
-#ifndef MUSUIAPP_H
-#define MUSUIAPP_H
-
-
-#include <eikapp.h>
-
-
-/**
- * Application class of the MUS application.
- *
- * @lib musui.exe
- */
-class CMusUiApp : public CEikApplication
- {
-
-private:
-
- /**
- * From CApaApplication, creates CMusUiDocument document object.
- * @return A pointer to the created document object.
- */
- CApaDocument* CreateDocumentL();
-
- /**
- * From CApaApplication, returns application's UID.
- * @return The value of KUidMusUi
- */
- TUid AppDllUid() const;
-
- };
-
-#endif // MUSUIAPP_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiappui.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,206 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-#ifndef MUSUIAPPUI_H
-#define MUSUIAPPUI_H
-
-#include "musuieventobserver.h"
-#include "musuiqueryobserver.h"
-
-#include <eikapp.h>
-#include <eikdoc.h>
-#include <e32std.h>
-#include <coeccntx.h>
-#include <aknViewAppUi.h>
-#include <remconcoreapitargetobserver.h>
-#include <coecobs.h>
-
-class CMusUiStatusPaneHandler;
-class CMusUiActiveQueryDialog;
-class CRemConInterfaceSelector;
-class CRemConCoreApiTarget;
-
-/**
- * The MUS application's UI class.
- *
- * @lib musui.exe
- */
-class CMusUiAppUi : public CAknViewAppUi,
- public MMusUiEventObserver,
- public MMusUiQueryObserver,
- public MRemConCoreApiTargetObserver,
- public MCoeControlObserver
- {
-
-public: // constructors and destructor
-
- /**
- * EPOC default constructor.
- */
- void ConstructL( );
-
- /**
- * Destructor.
- */
- ~CMusUiAppUi();
-
-public: // New functions
-
- CMusUiStatusPaneHandler* MusStatusPane();
-
- TBool ExitValue();
-
-
-public: // from base class CEikAppUi
-
- void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination );
-
- void HandleForegroundEventL( TBool aForeground );
-
-public: // from MRemConCoreApiTargetObserver
-
- void MrccatoCommand( TRemConCoreApiOperationId aOperationId,
- TRemConCoreApiButtonAction aButtonAct );
-
-
-public: // from MMusUiQueryObserver
-
- virtual void QueryAcceptedL( TBool aAccepted );
-
- /**
- * Error handler for QueryAcceptedL.
- *
- * @param aError is error to be handled.
- * @return KErrNone means handled value. All other values will lead to
- * a panic.
- */
- virtual TInt HandleQueryError( TInt aError );
-
-
-public: // from MMusUiEventObserver
-
- virtual void ActivateLocalMusViewL( TUid aViewId );
-
- virtual void ActivateLocalMusViewL( TUid aViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage );
-
- virtual void ShowAsyncConfirmationQueryDialogL( const TDesC& aPrompt );
-
- virtual void SetToolbarVisibility( TBool aVisible );
-
- virtual void ShowNaviPaneIconL( TMusUiNaviMediaDecorator aIcon );
-
- virtual CEikonEnv* EikonEnv( ) const;
-
- virtual void TerminateCall();
-
- virtual CAknAppUiBase::TAppUiOrientation AppOrientation() const;
-
- /**
- * Switch the active view's orientation, if it's in the foreground,
- * from landscape to portrait, or vice versa.
- */
- virtual void SwitchOrientationL( TAppUiOrientation aAppOrientation );
-
- virtual void HandleError( const TInt aReason );
-
- virtual void HandleExit();
-
- virtual TBool OrientationCanBeChanged() const;
-
- virtual TInt GetUiVolumeValue();
-
- virtual CMusUiResourceHandler* ResourceHandler();
-
-private: // from base class CEikAppUi
-
- /**
- * Takes care of command handling.
- *
- * @param aCommand The command to be handled.
- */
- void HandleCommandL( TInt aCommand );
-
- /**
- * Handles a change to the application's resources which are shared
- * across the environment.
- *
- * @param aType The type of resources that have changed.
- */
- void HandleResourceChangeL( TInt aType );
-
- TKeyResponse HandleKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
-
- // Help context from CCoeAppUi
- CArrayFix<TCoeHelpContext>* HelpContextL() const;
-
-private:
-
- //from MCoeControlObserver
- void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
-
-private:
-
- void DoHandleForegroundEventL( TInt aEventType );
-
- void FindWindowGroupIdentifiersL();
-
-
-private: // data
-
- /** Owns. Handle to status pane handler */
- CMusUiStatusPaneHandler* iStatusPaneHandler;
-
- CMusUiActiveQueryDialog* iConfirmationQuery;
-
- CRemConInterfaceSelector* iInterfaceSelector;
-
- CRemConCoreApiTarget* iCoreTarget;
-
- TBool iExit;
-
- TInt iLastKeyCode;
-
- /**
- * ETrue if operator specific functionality is needed
- */
- TBool iOperatorSpecificFunctionality;
-
- // Window group id of this application.
- TInt iThisApplicationWgId;
-
- // Window group id of eikon server.
- TInt iEikonServerWgId;
-
- // Window group id for AknCapServer
- TInt iAknCapServerWgId;
-
- // Window group id for Akn Notifier Server
- TInt iAknNfyServerWgId;
-
- TBool iForeground;
-
- CMusUiResourceHandler* iResourceHandler;
-
-
- };
-
-#endif // MUSUIAPPUI_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuibackgroundviewcontainer.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUIBACKGROUNDVIEWCONTAINER_H
-#define MUSUIBACKGROUNDVIEWCONTAINER_H
-
-#include <coecntrl.h> // Control base class
-
-class MAknsControlContext;
-
-/**
- * This class handles ordinal position two plain window.
- *
- *
- * @lib musui.exe
- */
-class CMusUiBackgroundViewContainer : public CCoeControl,
- public MCoeControlObserver
- {
-public: // Constructors and destructor
-
- static CMusUiBackgroundViewContainer* NewL(
- const TRect& aRect,
- TInt aOrdinalPosition );
-
- ~CMusUiBackgroundViewContainer();
-
-
-public:
-
- /**
- * Refreshes the view. Called after the mode has been changed
- * from portrait to landscape or vice versa.
- */
- void RefreshView();
-
- /**
- * Sets the windows group ordinal position which is supplied
- * at construction phase
- */
- void SetOrdinalPosition();
-
- /**
- * Sets the windows group ordinal position for this container
- * @aOrdianlPosition : Ordinal Position
- */
- void SetOrdinalPosition( TInt aOrdianlPosition);
-
- /**
- * Increase/decrease the windows group ordinal position which is supplied
- * at construction phase based on aUp.
- * @aUp : ETrue to increment else EFalse.
- */
- void UpdateOrdinalPositionValue( TBool aUp );
-
-private: // Construction
-
- CMusUiBackgroundViewContainer( TInt aOrdinalPosition );
-
- void ConstructL( const TRect& aRect );
-
-private: // from base class CCoeControl
-
- /**
- * From CoeControl,SizeChanged.
- */
- void SizeChanged();
-
- /**
- * Returns the number of control contained by this class.
- *
- * @return Number of controls contained
- */
- TInt CountComponentControls() const;
-
- /**
- * Returns handle to control pointed by aIndex.
- *
- * @param aIndex Wanted control's index [0..n]
- * @return Handle to wanted control
- */
- CCoeControl* ComponentControl( TInt aIndex ) const;
-
- /**
- * Gets called by the application framework when drawing is
- * needed.
- *
- * @param aRect The rectangle that needs to be drawn.
- */
- void Draw( const TRect& aRect ) const;
-
- /**
- * From MCoeControlObserver
- * Acts upon changes in the hosted control's state.
- *
- * @param aControl The control changing its state
- * @param aEventType The type of control event
- */
- void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
-
- /**
- * Handles key events.
- *
- * @param aEvent The event that occured.
- * @param aType Type of key event: EEventKey, EEventKeyUp, or
- * EEventKeyDown.
- * @return The container's response to event: either
- * EKeyWasNotConsumed or EKeyWasConsumed.
- */
- TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent, TEventCode aType );
-
- /**
- *
- */
- TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
-
-
-private: // data
-
- /** Background skin control context */
- MAknsControlContext* iBackGround;
-
- /**
- * Created window group identifier
- */
- TInt iGroupIdentifier;
-
- /**
- * Ordinal Postion for windows group
- */
- TInt iOrdinalPosition;
-
- };
-
-
-#endif // MUSUILIVESHARINGVIEWCONTAINER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuibitmapdecoder.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
-* 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 MUSUIBITMAPDECODER_H
-#define MUSUIBITMAPDECODER_H
-
-#include <e32base.h>
-#include <f32file.h>
-
-class MMusUiBitmapDecoderObserver;
-class CImageDecoder;
-class CFbsBitmap;
-
-class CMusUiBitmapDecoder : public CActive
- {
-
-public: // constructors and destructor
-
- /**
- * Destructor.
- */
- ~CMusUiBitmapDecoder();
-
- /**
- * Two-phased constructor. Leaves on failure.
- * @return The constructed CMusUiBitmapDecoder instance.
- */
- static CMusUiBitmapDecoder* NewL( MMusUiBitmapDecoderObserver& aObserver );
-
-private:
-
- /**
- * C++ constructor.
- */
- CMusUiBitmapDecoder( MMusUiBitmapDecoderObserver& aObserver );
-
- /**
- * Symbian 2nd-phase constructor.
- */
- void ConstructL();
-
-
-public: // new funtions:
-
- void ConvertL( HBufC8* aData, CFbsBitmap* aBitmap );
-
-
-private: // functions from base class CActive
-
- void DoCancel();
-
- void RunL();
-
- TInt RunError( TInt aError );
-
-private: // Data
-
- MMusUiBitmapDecoderObserver& iObserver;
-
- CImageDecoder* iDecoder;
-
- CFbsBitmap* iBitmap;
-
- RFs iFs;
-
- HBufC8* iData;
- };
-
-#endif // MUSUIBITMAPDECODER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuibitmapdecoderobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUIBITMAPDECODEROBSERVER_H
-#define MUSUIBITMAPDECODEROBSERVER_H
-
-class CFbsBitmap;
-
-class MMusUiBitmapDecoderObserver
- {
-
-public:
-
- virtual void UpdateBitmap( CFbsBitmap* aBitmap ) = 0;
-
- };
-
-#endif // MUSUIBITMAPDECODEROBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuicallbackobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* 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 MUSUICALLBACKOBSERVER_H
-#define MUSUICALLBACKOBSERVER_H
-
-
-#include "musuidefinitions.h"
-
-
-/**
- * MUS application's note request interface.
- */
-class MMusUiCallbackObserver
- {
-
-public: // new functions
-
- /**
- * Process asynchronous event.
- *
- * @param aEventId Id of the triggered event
- */
- virtual void HandleAsyncEventL( TMusUiAsyncEvent aEventId ) = 0;
-
- /**
- * Error handler for HandleAsyncEventL.
- *
- * @param aError is error to be handled.
- * @return KErrNone means handled value. All other values will lead to
- * a panic.
- */
- virtual TInt HandleAsyncError( TInt aError ) = 0;
-
- };
-
-
-#endif // MUSUICALLBACKOBSERVER_H
--- a/mmsharing/mmshui/inc/musuicallbackservice.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
-* 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 MUSUICALLBACKSERVICE_H
-#define MUSUICALLBACKSERVICE_H
-
-#include "musuidefinitions.h"
-#include <e32base.h>
-
-class MMusUiCallbackObserver;
-
-
-/**
- * Callback Service used to pass asynchronous events
- */
-class CMusUiCallbackService : public CActive
- {
-
-public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- * @param aCallbackObserver the observer that will receive the callbacks.
- * @return new instance of CMusUiCallbackService.
- */
- static CMusUiCallbackService* NewL(
- MMusUiCallbackObserver& aCallbackObserver );
-
- /**
- * Destructor.
- */
- ~CMusUiCallbackService();
-
-private: // Constructors
-
- /**
- * C++ default constructor.
- * @param aCallbackObserver the observer that will receive the callbacks.
- */
- CMusUiCallbackService( MMusUiCallbackObserver& aCallbackObserver );
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void ConstructL();
-
-
-public: // New functions
-
- /**
- * Buffer a request to trigger an event.
- * @param aEventId Id of the event
- */
- void AsyncEventL( TMusUiAsyncEvent aEventId );
-
- /**
- * Called when the notifier has been deactivated so resources can be
- * freed and outstanding messages completed.
- */
- void Cancel();
-
- /**
- * Check what event is currently pending
- * @return EMusUiAsyncUninitialized is no events are pending
- */
- TMusUiAsyncEvent CurrentEvent() const;
-
-
-public: // Functions from CActive base class
-
- /**
- * From CActive. Called when a request completes.
- */
- void RunL();
-
- /**
- * From CActive. Called when a leave occurres in RunL.
- * @param aError Symbian OS errorcode.
- * @return Error Code.
- */
- TInt RunError(TInt aError);
-
- /**
- * From CActive. Called when a request is cancelled.
- */
- void DoCancel();
-
-
-private: // New functions
-
- /**
- * Activate the object.
- */
- void Activate();
-
-
-private: // Data
-
- /** Handle to callback observer. */
- MMusUiCallbackObserver& iCallbackObserver;
-
- /** Event ID to pass through. */
- TMusUiAsyncEvent iEventId;
-
- };
-
-#endif // MUSUICALLBACKSERVICE_H
--- a/mmsharing/mmshui/inc/musuiclipsharingcontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-/*
-* 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
--- a/mmsharing/mmshui/inc/musuiclipsharingobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUICLIPSHARINGOBSERVER_H
-#define MUSUICLIPSHARINGOBSERVER_H
-
-#include "musuidefinitions.h"
-
-#include <aknappui.h>
-#include <badesca.h>
-
-class MMusUiClipSharingObserver
- {
-
-public:
-
- virtual void RunFetchDialogL() = 0;
-
- virtual void ShowTranscodingProgressDialogL() = 0;
-
- virtual void UpdateClipTranscodingPercentageL( TInt aPercetage ) = 0;
-
- virtual void CancelTranscodingDialogL() = 0;
-
- virtual void UpdateClipPositionL( TInt aPositionInSeconds,
- const TDesC& aFormattedPosition ) = 0;
-
- virtual void SetDurationValue( TInt aDurationValue ) = 0;
-
- virtual void SetPositionValueL( TInt aPositionValue ) = 0;
-
- virtual void SetDurationVisible() = 0;
-
- virtual void InvalidVideoFrame( TBool aInvalid = EFalse ) = 0;
-
- };
-
-#endif // MUSUICLIPSHARINGOBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiclipsharingview.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUICLIPSHARINGVIEW_H
-#define MUSUICLIPSHARINGVIEW_H
-
-
-#include "musuisendview.h" // Base view class
-#include "musuiclipsharingobserver.h"
-
-#include <aknview.h>
-
-class CMusUiClipSharingViewContainer;
-class CMusUiClipSharingController;
-class CMusUiActivityManager;
-class CMusUiBackgroundViewContainer;
-class CAknToolbar;
-
-
-/**
- * The MUS application's clip sharing view.
- *
- * @lib musui.exe
- */
-class CMusUiClipSharingView : public CMusUiSendView,
- public MMusUiClipSharingObserver
- {
-
-public: // constructors and destructor
-
- /**
- * EPOC 2nd phase constructor.
- */
- void ConstructL();
-
- /**
- * Destructor.
- */
- virtual ~CMusUiClipSharingView();
-
-
-public: // from base class CAknView
-
- /**
- * From CAknView returns Uid of View
- * @return TUid uid of the view
- */
- virtual TUid Id() const;
-
- // From MEikMenuObserver, Called by framework before constructing menupane
- virtual void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-
-public: // from CMusUiGeneralView
-
- virtual void HandleToolbarCommandL( TInt aCommand );
-
- virtual void HandleKeyUpEvent( TInt aKeyCode );
-
- virtual void SetInitialFocusedItemL();
-
-public: // from base class MAknToolbarObserver
-
- virtual void DynInitToolbarL( TInt aResourceId, CAknToolbar* aToolbar );
-
-
-public: // from MMusUiClipSharingObserver
-
- virtual void RunFetchDialogL();
-
- virtual void ShowTranscodingProgressDialogL();
-
- virtual void UpdateClipTranscodingPercentageL( TInt aPercetage );
-
- virtual void CancelTranscodingDialogL();
-
- virtual void UpdateClipPositionL( TInt aPositionInSeconds,
- const TDesC& aFormattedPosition );
-
- virtual void SetDurationValue( TInt aDurationValue );
-
- virtual void SetPositionValueL( TInt aPositionValue );
-
- virtual void SetDurationVisible();
-
- virtual void ReplaceToolbarCommand( TInt aOldCommand,
- TInt aNewCommand,
- TBool aSetNewCommandFocused );
-
- virtual void InvalidVideoFrame( TBool aInvalid = EFalse );
-
-public: // new functions
-
- void RefreshView();
-
- void CancelTranscodingL();
-
-
-protected: // from CMusUiSendView
-
- virtual CMusUiSendController* SendController() const;
-
- virtual CMusUiSendViewContainer* SendContainer() const;
-
-
-private:
-
- /**
- * Gets called by the framework when it's activating this view.
- *
- * @param aPrevViewId Previous view id
- * @param aCustomMessageId Custom message's id
- * @param aCustomMessage Custom message
- */
- void DoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage );
-
- /**
- * Gets called by the framework when it's deactivating this view.
- */
- void DoDeactivate();
-
-
-private: // data
-
- /** Container for all controls in this view. Owns. */
- CMusUiClipSharingViewContainer* iContainer;
-
- CMusUiClipSharingController* iController;
-
- };
-
-#endif // MUSUICLIPSHARINGVIEW_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiclipsharingviewcontainer.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUICLIPSHARINGVIEWCONTAINER_H
-#define MUSUICLIPSHARINGVIEWCONTAINER_H
-
-#include "musuisendviewcontainer.h"
-
-#include <MMGFetchVerifier.h> // Media Gallery fetcher verifier
-#include <AknProgressDialog.h>
-
-class CAknProgressDialog;
-class CEikProgressInfo;
-
-/**
- *
- *
- *
- */
-class CMusUiClipSharingViewContainer : public CMusUiSendViewContainer,
- public MMGFetchVerifier,
- public MProgressDialogCallback
-
- {
-
-public: // constructors and destructor
-
- /**
- * Symbian second-phase constructor.
- *
- * @param aView Parent view of container.
- * @param aRect Frame rectangle for container.
- * @param aInputParams Packaged data.
- */
- void ConstructL( CMusUiGeneralView* aView, const TRect& aRect );
-
- /**
- * Destructor.
- */
- ~CMusUiClipSharingViewContainer();
-
-
-public: // new functions
-
- void ShowTranscodingProgressDialogL();
-
- void UpdateClipTranscodingPercentageL( TInt aPercentage );
-
- void CancelTranscodingL();
-
- void RunFetchDialogL();
-
- const TDesC& FetchedFileName();
-
- TBool FileSelected();
-
- void SetDurationValue( TInt aDurationValue );
-
- void SetPositionValueL( TInt aPositionValue );
-
- void SetDurationIndicatorVisible( TBool aVisible );
-
-public: // from base class MMGFetchVerifier
-
- /**
- * Verifies the current user selection.
- *
- * @param aSelectedFiles Descriptor array of selected files.
- * @return EFalse if selection can't be used. If ok, returns ETrue.
- */
- TBool VerifySelectionL( const MDesCArray* aSelectedFiles );
-
-public: // from MProgressDialogCallback
-
- /**
- * Callback method
- * Get's called when a dialog is dismissed.
- */
- void DialogDismissedL( TInt aButtonId );
-
-
-private: // from base class CCoeControl
-
- /**
- * Returns the number of control contained by this class.
- *
- * @return Number of controls contained
- */
- TInt CountComponentControls() const;
-
- /**
- * Returns handle to control pointed by aIndex.
- *
- * @param aIndex Wanted control's index [0..n]
- * @return Handle to wanted control
- */
- CCoeControl* ComponentControl( TInt aIndex ) const;
-
- /**
- * Gets called by the application framework when drawing is
- * needed.
- *
- * @param aRect The rectangle that needs to be drawn.
- */
- void Draw( const TRect& aRect ) const;
-
- /**
- * Handles key events.
- *
- * @param aEvent The event that occured.
- * @param aType Type of key event: EEventKey, EEventKeyUp, or
- * EEventKeyDown.
- * @return The container's response to event: either
- * EKeyWasNotConsumed or EKeyWasConsumed.
- */
- TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent, TEventCode aType );
-
-protected: // data
-
- /**
- * ETrue if operator specific functionality is needed
- */
- TBool iOperatorSpecificFunctionality;
-private: // data
-
- /**
- * A progress dialog to show the transcoding progress. Own.
- */
- CAknProgressDialog* iTranscodingDialog;
-
- /**
- * A progress dialog to show the transcoding progress. Own.
- */
- CEikProgressInfo* iTranscodingProgress;
-
- HBufC* iFileName;
-
- TBool iFileSelected;
-
- TBool iTranscodingOngoing;
-
- };
-
-
-#endif // MUSUICLIPSHARINGVIEWCONTAINER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuicontactutil.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 MUSUICONTACTUTIL_H
-#define MUSUICONTACTUTIL_H
-
-#include <e32base.h>
-#include <coemain.h>
-#include <CPbkContactEngine.h>
-#include <CPbkContactItem.h>
-
-class MusUiContactUtil
- {
-
- public:
-
- /**
- */
- static TBool ShareViewFieldExistsL( CCoeEnv& aEnv, TInt aContactId );
-
- /**
- */
- static TBool CheckPbContactForVSAddressesL( CCoeEnv& aEnv,
- const TDesC& aOriginator,
- TInt aContactId);
- /**
- */
- static TBool MatchTextWithPbFieldsL( CCoeEnv& aEnv,
- TPbkFieldId aFieldId,
- const TDesC& aText,
- TInt aContactId);
- /**
- */
- static void ActivateContactViewL( CCoeEnv& aEnv,
- TContactItemId aId,
- const TDesC& aTypedAddress,
- const TDesC& aMusTelNumberValue );
-
- private:
-
- /**
- */
- static void EditContactL( CPbkContactItem& aContact,
- TBool aNewOne,
- CPbkContactEngine* aPbkContactEngine,
- const TDesC& aTypedAddress,
- const TDesC& aMusTelNumberValue,
- TContactItemId aId );
-
- /**
- */
- static CContactTextField* EditableContactFieldL(
- CPbkContactItem& aContact,
- TInt aFieldId,
- CPbkContactEngine* aPbkContactEngine );
- };
-
-
-
-#endif // MUSUICONTACTUTIL_H
--- a/mmsharing/mmshui/inc/musuidefinitions.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUIDEFINITIONS_H
-#define MUSUIDEFINITIONS_H
-
-#include <e32base.h>
-
-
-// View UIDs
-const TUid KMusUidNullView = { 0 };
-const TUid KMusUidReceivingView = { 1 };
-const TUid KMusUidLiveSharingView = { 2 };
-const TUid KMusUidClipSharingView = { 3 };
-const TUid KMusUidGeneralView = { 4 };
-const TUid KMusUidSendView = { 5 };
-
-// Volume settings
-const TInt KMusVolumeMuted = 0;
-const TInt KMusVolumeMaximum = 10;
-const TInt KMusVolumeDefault = 5;
-
-// protocol prefixes and address components
-const TInt KMusSipAddressesMaxAmount = 8;
-const TInt KMusPrefixMaxLength = 4;
-const TInt KMusSipAddressMaxLength = 256;
-_LIT( KMusPrefixSipUri, "sip:" );
-_LIT( KMusPrefixTelUri, "tel:" );
-_LIT( KMusAtSymbol, "@" );
-_LIT( KMusSpaceSymbol, " " );
-_LIT( KMusEmptyStringSymbol, "" );
-_LIT( KMusCommaSymbol, "," );
-_LIT( KMusVideoFileNameExtension, ".3gp" );
-_LIT( KMusVideoFileNameBegining, "VS" );
-_LIT( KMusVideoFileNameVersion, "V" );
-
-const TInt KMusDriveAndColonStringLength = 2;
-const TInt KMusPercentUStringLength = 2;
-const TInt KMusVideoFileNameNumberStringStartPos = 7;
-const TInt KMusVideoFileNameNumberStringLength = 3;
-
-const TInt KMusDefaultArrayGranularity = 5;
-const TInt KMusStringSubstArrayGranularity = 2;
-
-const TInt KMusOneHundredPercent = 100;
-
-const TInt KMusErrorMessageMaxLength = 512;
-const TInt KMusNameFieldMaxLength = 512;
-const TInt KMusFileNameMaxLength = 256;
-
-// time constants
-const TInt KMusOneSecond = 1000000; // one second in microseconds
-const TInt KMusInviteExpireTimeout = 60; // seconds
-const TInt KMusReceiveTimeout = 10 * KMusOneSecond; // ten seconds
-const TInt KMusOneMinuteInSeconds = 60;
-const TInt KMusNumberValueTen = 10;
-const TInt KMusLocaleHoursAndMinutesSeparator = 1;
-const TInt KMusLocaleMinutesAndSecondsSeparator = 2;
-const TInt KMusBacklightTimeOut = 4; // seconds
-
-const TInt KMusNumberValueTwo = 2;
-
-/** asynchronous UI events */
-enum TMusUiAsyncEvent
- {
- EMusUiAsyncUninitialized = 0,
- EMusUiAsyncInviteCancel,
- EMusUiAsyncManualAddressEntry,
- EMusUiAsyncInviteAccepted,
- EMusUiAsyncStartInvitation,
- EMusUiAsyncStartMediaGallery,
- EMusUiAsyncStartTranscoding,
- EMusUiAsyncHandleExit
- };
-
-enum TMusUiNaviMediaDecorator
- {
- EMusUiNaviIconNone = -1,
- EMusUiNaviIconForward,
- EMusUiNaviIconPause,
- EMusUiNaviIconPlay,
- EMusUiNaviIconRecord,
- EMusUiNaviIconRecordNot,
- EMusUiNaviIconRew,
- EMusUiNaviIconStop,
- EMusUiNaviIconWaitAnim
- };
-
-enum TMusUiLoudspeakerStatus
- {
- ELoudspeakerDisabled = 0,
- ELoudspeakerEnabled = 1
- };
-
-enum TMusUiLoudspeakerDialogStatus
- {
- ELoudspeakerDialogDisabled = 0,
- ELoudspeakerDialogEnabled = 1
- };
-
-enum TMusUiVolumeStatus
- {
- EVolumeDown = 0,
- EVolumeUp = 1
- };
-
-enum TMusUiIndicatorType
- {
- EMusUiIndicatorTypeZoom = 0,
- EMusUiIndicatorTypeBrightness,
- EMusUiIndicatorTypeDuration
- };
-
-
-
-#endif // MUSUIDEFINITIONS_H
-
-
-// end of file
--- a/mmsharing/mmshui/inc/musuidialogutil.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 MUSDIALOGUTIL_H
-#define MUSDIALOGUTIL_H
-
-#include <e32base.h>
-#include <badesca.h>
-
-class MusUiDialogUtil
- {
-
- public:
- /**
- */
- static TBool ShowGlobalConfirmationQueryDialogL( const TDesC& aPrompt );
-
- static void ShowInformationDialogL( const TDesC& aPrompt );
-
- static void ShowInformationDialogL( TInt aResourceId );
-
- static void ShowGlobalInformationDialogL( TInt aResourceId );
-
- static void ShowGlobalInformationDialogL( const TDesC& aMessage );
-
- static void ShowGlobalErrorDialogL( const TDesC& aMessage );
-
- static void ShowGlobalErrorDialogL( TInt aResourceId );
-
- static void ShowGlobalErrorModalDialogL( const TDesC& aMessage );
-
- static void ShowGlobalErrorModalDialogL( TInt aResourceId );
-
- static TBool SelectAddressDialogL( CDesCArray* aAddressArray,
- TDes& aSelectedAddress );
-
- static TBool ShowTextQueryDialogL( const TDesC& aPrompt, TDes& aValue );
-
- static TBool ShowTextQueryDialogL( TInt aPromptResourceId,
- TDes& aValue );
-
- };
-
-
-
-#endif // MUSDIALOGUTIL_H
--- a/mmsharing/mmshui/inc/musuidocument.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
-* 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: Document class of the application.
-*
-*/
-
-
-#ifndef MUSUIDOCUMENT_H
-#define MUSUIDOCUMENT_H
-
-#include <AknDoc.h> // Avkon document base class
-
-class CEikAppUi;
-
-/**
- * Document class of MUS application.
- *
- * @lib musui.exe
- */
-class CMusUiDocument : public CAknDocument
- {
-
-public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- * @param aApp Handle to Eikon's application class
- * @return a new instance of CMusUiDocument
- */
- static CMusUiDocument* NewL( CEikApplication& aApp );
-
- /**
- * Destructor.
- */
- virtual ~CMusUiDocument();
-
-private:
-
- /**
- * Default constructor
- * @param aApp Handle to Eikon's application class
- */
- CMusUiDocument( CEikApplication& aApp );
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void ConstructL();
-
-private: // Functions from base classes
-
- /**
- * From CEikDocument, create CMusUiAppUi "App UI" object.
- * @return a new instance of Mus Applications AppUi class
- */
- CEikAppUi* CreateAppUiL();
-
-private: // data
-
-
- };
-
-#endif // CMUSUIDOCUMENT_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuieventcontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,482 +0,0 @@
-/*
-* 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 MUSUIEVENTCONTROLLER_H
-#define MUSUIEVENTCONTROLLER_H
-
-#include "musuipropertyobserver.h"
-#include "musuicallbackobserver.h"
-#include "musuibitmapdecoderobserver.h"
-#include "musresourceproperties.h"
-#include "musuidefinitions.h"
-#include "musmanagercommon.h"
-#include "musuimmcobserver.h"
-#include "musunittesting.h"
-
-#include "musengsessionobserver.h"
-#include "musengaudioroutingobserver.h"
-#include "musengvolumechangeobserver.h"
-
-#include <aknappui.h> // CAknAppUiBase::TAppUiOrientation
-
-class CMusUiCallbackService;
-class MMusUiEventObserver;
-class CMusUiMmcMonitor;
-class CMusUiPropertyWatch;
-class CMusUiBitmapDecoder;
-class CFbsBitmap;
-class CMusEngMceSession;
-class MMusUiSharingObserver;
-class CMusUiActivityManager;
-class CMusUiResourceHandler;
-
-using namespace MultimediaSharing;
-
-
-/**
- *
- *
- * @lib musui.exe
- */
-class CMusUiEventController : public CBase,
- public MMusUiPropertyObserver,
- public MMusUiCallbackObserver,
- public MMusUiMmcObserver,
- public MMusEngSessionObserver,
- public MMusEngAudioRoutingObserver,
- public MMusEngVolumeChangeObserver
- {
-
-public: // enumerations
-
- enum TMusUiShutdownState
- {
- EMusUiShutdownNotDefined,
- EMusUiShutdownStarted,
- EMusUiShutdownVideoSaved,
- EMusUiShutdownContactSavingQueried,
- EMusUiShutdownOver
- };
-
-
-public:
-
- /**
- *
- */
- virtual ~CMusUiEventController();
-
-
-protected:
-
- /**
- *
- */
- void ConstructL();
-
- /**
- *
- */
- CMusUiEventController( MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver );
-
-
-public: // From MMusUiPropertyObserver
-
- /**
- * Sets the property key value common to all sharing types.
- * To be overridden for specific key values.
- * CMusUiPropertyWatch calls MMusUiPropertyObserver::PropertyChanged,
- * when P&S key values change
- *
- * @param TUint aKey - The Property key
- * @param TInt aValue - The value of the Property key
- */
- virtual void PropertyChanged( const TUint aKey, const TInt aValue );
-
- /**
- *
- */
- virtual void HandlePropertyError( const TInt aReason );
-
-
-public: // From MMusUiCallbackObserver
-
- /**
- * Handles async events common to all session types.
- * Should be called if child classes are not able to handle the call.
- */
- virtual void HandleAsyncEventL( TMusUiAsyncEvent aEventId );
-
- /**
- * Error handler for HandleAsyncEventL.
- */
- virtual TInt HandleAsyncError( TInt aError );
-
-
-public: // From MMusUiMmcObserver
-
- /**
- *
- */
- virtual void MmcRemoved();
-
-
-public: // From
-
- /**
- * Handles session establishment procedures common to all session types.
- */
- virtual void SessionEstablished();
-
-
-public: // From MMusEngAudioRoutingObserver
-
- /**
- * Indicates that some other application has changed audio routing.
- *
- */
- virtual void AudioRoutingChanged( TBool aShowNote );
-
- /**
- * Before doing audio routing, permission is asked
- *
- */
- virtual TBool AudioRouteChangeAllowed() const;
-
-public: // From MMusEngVolumeChangeObserver
-
- /**
- * Indicates that some other application has changed volume level.
- *
- */
- virtual void VolumeChanged( TInt aVolume, TBool aAudioRouteChanged );
-
-
-public: // New functions
-
- /**
- *
- */
- void SetRect( const TRect& aRect );
-
- /**
- *
- */
- const TDesC& MusContactName();
-
- /**
- *
- */
- const TDesC& MusVideoCodecValue();
-
- /**
- *
- */
- const TDesC& MusTelNumberValue();
-
- /**
- *
- */
- const TDesC& SessionTimeFormatted( const TTimeIntervalSeconds& aSeconds );
-
- /**
- *
- */
- void SaveContactQueryL();
-
- /**
- *
- */
- void HandleError( const TInt aError );
-
- /**
- * Starts shutdown process
- */
- void HandleExitL( TBool aTerminateCall = EFalse );
-
- /**
- *
- */
- void AsyncQueryDialogAcceptedL( TBool aAccepted );
-
- /**
- *
- */
- TBool ExitOccured();
-
- /**
- *
- */
- TBool AudioRoutingCanBeChanged();
-
- /**
- *
- */
- TBool IsLoudSpeakerEnabled();
-
- /**
- *
- */
- TBool DeviceHasDedicatedVolumeKeys();
-
- /**
- * Queries flag for session state
- */
- TBool ConnectionEstablished() const;
-
- /**
- * Set session initialization state
- */
- void SetConnectionInitialized( TBool aConnectionInitialized );
-
- /**
- * Queries flag for session state
- */
- TBool ConnectionInitialized() const;
-
- /**
- *
- */
- void EnableDisplayL( TBool aEnable );
-
- /**
- *
- */
- void ChangeOrientationL( CAknAppUiBase::TAppUiOrientation aOrientation );
-
- /**
- *
- */
- TBool ToolbarVolumeSelected();
-
- /**
- *
- */
- TBool IsMicMutedL();
-
- /**
- * Function to be overridden in sibling classes
- * @return EFalse by default
- */
- virtual TBool ManualAddressTyped() const;
-
- /**
- *
- */
- virtual void HandleForegroundEventL( TBool aForeground );
-
- /**
- *
- */
- virtual TBool IsForeground() const;
-
- /**
- *
- */
- virtual void OfferToolbarEventL( TInt aCommand );
-
- /**
- *
- */
- virtual void HandleCommandL( TInt aCommand );
-
- /**
- * Returns a pointer to engine side session.
- */
- virtual CMusEngMceSession* EngineSession() = 0;
-
- /**
- *
- */
- virtual const TDesC& TypedAddress() const = 0;
-
- /**
- *
- */
- virtual void DeleteEngineSession() = 0;
-
- /**
- *
- */
- TBool IsDisplayEnabledL();
-
- /**
- *
- */
- TBool IsAudioRoutingLoudSpeaker();
-
-protected: // New functions
-
- /**
- * General functionality of exit procedure
- */
- virtual void ExitProcedureL( TBool aUserAcceptance );
-
- /**
- * Handles status changes common to all sharing types.
- * To be overridden in sibling classes for sharing type specific
- * status changes.
- */
- virtual void HandleChangedStatusL( TMusAvailabilityStatus aStatus );
-
-
-protected:
-
- /**
- *
- */
- MMusUiEventObserver& iEventObserver;
-
- /**
- *
- */
- MMusUiSharingObserver& iSharingObserver;
-
- /**
- *
- */
- CMusUiCallbackService* iCallbackService;
-
- /**
- * Flag of the connection state
- */
- TBool iConnectionEstablished;
-
- /**
- * Flag of the connection state
- */
- TBool iConnectionInitialized;
-
- /**
- *
- */
- TFileName iVideoFilePath;
-
- /**
- *
- */
- TFileName iLocalizedVideoFilePath;
-
- /**
- *
- */
- TFileName iVideoFileNamePlain;
-
- /**
- *
- */
- TInt iSipProfileId;
-
- /**
- *
- */
- TInt iContactId;
-
- /**
- *
- */
- HBufC* iContactName;
-
- /**
- *
- */
- HBufC* iTelNumber;
-
- /**
- *
- */
- HBufC* iDialogPrompt;
-
- /**
- *
- */
- HBufC* iVideoCodec;
-
- /**
- *
- */
- TBool iForeground;
-
- /**
- * ETrue if operator specific functionality is needed
- */
- TBool iOperatorSpecificFunctionality;
-
- /**
- *
- */
- CMusUiResourceHandler* iResourceHandler;
-
- /**
- *
- */
- TMusUiShutdownState iShutdownState;
-
- /**
- * Flag indicating whether show "loudspeaker deactived"
- */
- TBool iShowDialog;
-
-
-private:
-
- /**
- *
- */
- CMusUiMmcMonitor* iMmcMonitor;
-
- /**
- *
- */
- CMusUiActivityManager* iActivityManager;
-
- /**
- *
- */
- CMusUiPropertyWatch* iStatusPropertyWatch;
-
- /**
- *
- */
- CMusUiPropertyWatch* iMicMuteStatusPropertyWatch;
-
- /**
- *
- */
- TBuf<7> iTimeBuffer;
-
- /**
- * Flag of the Volume item in the Toolbar
- */
- TBool iToolbarVolumeSelected;
-
- /**
- * Flag indicating whether call has ended
- */
- TBool iActiveCall;
-
- MUS_UNITTEST( UT_CMusUiEventController )
- MUS_UNITTEST( UT_CMusUiLiveSharingController )
- MUS_UNITTEST( UT_CMusUiClipSharingController )
- MUS_UNITTEST( UT_CMusUiReceiveController )
- };
-
-#endif // MUSUIEVENTCONTROLLER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuieventobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUIEVENTOBSERVER_H
-#define MUSUIEVENTOBSERVER_H
-
-#include "musuidefinitions.h"
-
-#include <e32base.h>
-#include <eikenv.h>
-#include <aknappui.h>
-#include <cntdef.h>
-
-class CMusUiResourceHandler;
-
-class MMusUiEventObserver
- {
-
-public:
-
- virtual void ActivateLocalMusViewL( TUid aViewId ) = 0;
-
- virtual void ActivateLocalMusViewL( TUid aViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage ) = 0;
-
- virtual void ShowAsyncConfirmationQueryDialogL( const TDesC& aPrompt ) = 0;
-
- virtual void SetToolbarVisibility( TBool aVisible ) = 0;
-
- /**
- *
- */
- virtual void ShowNaviPaneIconL( TMusUiNaviMediaDecorator aIcon ) = 0;
-
- virtual CEikonEnv* EikonEnv() const = 0;
-
- virtual void TerminateCall() = 0;
-
- /**
- * Return current app orientation.
- */
- virtual CAknAppUiBase::TAppUiOrientation AppOrientation() const = 0;
-
- virtual void SwitchOrientationL(
- CAknAppUiBase::TAppUiOrientation aOrientation ) = 0;
-
- virtual void HandleError( const TInt aReason ) = 0;
-
- virtual void HandleExit() = 0;
-
- virtual TBool OrientationCanBeChanged() const = 0;
-
- virtual TInt GetUiVolumeValue() = 0;
-
- virtual CMusUiResourceHandler* ResourceHandler() = 0;
- };
-
-#endif // MUSUIEVENTOBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuifileutil.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 MUSFILEUTIL_H
-#define MUSFILEUTIL_H
-
-#include <e32cmn.h>
-
-class MusUiFileUtil
- {
-
- public:
-
- /**
- * return Existence of specified file
- */
- static TBool FileExists( const TDesC& aFullFileName );
-
- /**
- */
- static void VideoFilePathExistsL( const TDesC& aVideoFilePath );
-
- /**
- */
- static void CreateVideoFileNameL( const TDesC& aVideoFilePath,
- TFileName& aFileName );
-
- /**
- */
- static void DeleteFileL( const TDesC& aFileName );
-
- };
-
-
-
-#endif // MUSFILEUTIL_H
--- a/mmsharing/mmshui/inc/musuigeneralview.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,279 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUIGENERALVIEW_H
-#define MUSUIGENERALVIEW_H
-
-#include "musuisharingobserver.h"
-#include "musuiactivetimerobserver.h"
-
-#include <avkon.rsg> // Avkon resource file
-#include <aknview.h> // Avkon base view class
-#include <akntoolbarobserver.h>
-
-class CMusUiAppUi;
-class CMusUiEventController;
-class CMusUiActivityManager;
-class CMusUiViewContainer;
-class CAknIncallBubble;
-class CMusUiActiveTimer;
-class CMusUiBackgroundViewContainer;
-
-/**
- * The base class for the MUS application's view classes.
- * Encapsulates common methods for views.
- *
- * @lib musui.exe
- */
-class CMusUiGeneralView : public CAknView,
- public MAknToolbarObserver,
- public MMusUiSharingObserver,
- public MMusUiActiveTimerObserver
- {
-
-public: // constructors and destructor
-
- enum TMusFgBgEventType
- {
- EMusFgBgEventNone,
- EMusFgEvent,
- EMusBgEvent
- };
-
- /**
- * EPOC default constructor.
- */
- void ConstructL();
-
- /**
- * Destructor.
- */
- virtual ~CMusUiGeneralView();
-
-public: // new functions
-
- /**
- * @return the pointer to the application's AppUi (CMusUiAppUi).
- */
- CMusUiAppUi* MusAppUi() const;
-
- /**
- * Refreshes the view. Called after the mode has been changed from portrait
- * to landscape or vice versa. This is a virtual function that must be
- * implemented by all concrete MUS UI views.
- */
- virtual void RefreshView() = 0;
-
- virtual void HandleToolbarCommandL( TInt aCommand ) = 0;
-
- virtual void HandleKeyUpEvent( TInt aKeyCode );
-
- virtual void SetToolbarVisibility( TBool aVisible );
-
- void AsyncQueryDialogAcceptedL( TBool aAccepted );
-
- TInt FocusedToolbarItem() const;
-
- virtual void LevelIndicatorDismissed() {};
- virtual void SetInitialFocusedItemL() = 0;
-
- TBool OperatorSpecificFunctionality() const;
- /**
- * Called when UI comes to foregound / goes to background.
- * CAknView version of HandleForegroundEventL is not used
- * at it generates lots of events. Instead, appui implements
- * foreground event callback funtion and forwards events to views
- * via this method.
- */
- virtual void DoHandleForegroundEventL( TBool aForeground ) = 0;
-
-
-public: // from base class MAknToolbarObserver
-
- virtual void DynInitToolbarL( TInt aResourceId, CAknToolbar* aToolbar );
-
- virtual void OfferToolbarEventL( TInt aCommand );
-
-
-public: // from MMusUiSharingObserver
-
- /*
- * Shows sychronous wait dialog with softkey R_AVKON_SOFTKEYS_CANCEL.
- * @param aPrompt Prompt text shown in dialog
- * @param aTimerInSeconds Timer in seconds when dialog is dismissed
- * automatically. Timer value 0 means that no timer is used.
- * @param aExpirationMessageResourceId is ID of resource indicating
- * the message to be shown if timer expires. Value 0 means that
- * no message is shown.
- * @return EFalse if dialog is dismissed by user pressing cancel
- * or by expiration of timer. ETrue if DismissWaitDialogL
- * is called with parameter ETrue;
- */
- virtual TBool ShowWaitDialogL( const TDesC& aPrompt,
- TInt aTimerInSeconds = 0,
- TInt aExpirationMessageResourceId = 0 );
-
- /*
- * Dismisses sychronous wait dialog shown by calling ShowWaitDialogL.
- * @param aReturnValue determines return value of function
- * ShowWaitDialogL.
- */
- virtual void DismissWaitDialogL( TBool aReturnValue = ETrue );
-
- /*
- * Set call back service of wait dialog
- * @param aCallback A pointer of class MProgressDialogCallback
- * which implemented DialogDismissedL
- */
- virtual void SetWaitDialogCallbackL( MProgressDialogCallback* aCallback );
-
- virtual void ShowStatusPaneTitleL();
-
- virtual void EnableMiddleSoftkeyL( TInt aResourceId );
-
- virtual void ActivateVolumeControlL( TInt aValue, TBool aOnlyIfVisible = EFalse );
-
- virtual void HighlightSelectedToolbarItem( TInt aCommand );
-
- /**
- * General functionality for replacing a toolbar command
- * Function should be overridden for specific functionality
- */
- virtual void ReplaceToolbarCommand( TInt aOldCommand,
- TInt aNewCommand,
- TBool aSetNewCommandFocused );
-
- /**
- * If toolbar is shown, audio routing button will be refreshed according to
- * current state of audio routing.
- * In case there is no toolbar, middle softkey will be updated
- */
- virtual void RefreshAudioRoutingToolbarButton();
-
- virtual void UpdateSessionTime( const TDesC& aSessionTime );
-
- virtual void DismissMenuBar();
-
-
-public: // from base class CAknView
-
- /**
- * Takes care of command handling.
- *
- * @param aCommand The command that was received.
- */
- virtual void HandleCommandL( TInt aCommand );
-
- /**
- * From MEikMenuObserver, called by framework before constructing menupane.
- * Initializes menu items common to all sharing types.
- */
- virtual void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-public: // from MMusUiActiveTimerObserver
-
- /**
- * Indicates that a certain amount of time elapsed
- */
- virtual void TimerComplete( CMusUiActiveTimer* aTimer );
-
-
-protected: // New functions
-
- virtual CMusUiEventController* EventController() const = 0;
-
- virtual CMusUiViewContainer& SharingContainer() const = 0;
-
- /**
- * Leaves with KErrNotFound if eventcontroller is not available
- */
- CMusUiEventController& EventControllerL() const;
-
- /**
- * Called when event occurs of type EEventFocusLost or
- * EEventFocusGained.
- *
- * @param aForeground ETrue if the application is in the foreground,
- * otherwise EFalse.
- * @param aExit indicates if the application should exit
- */
- void HandleForegroundEventL( TBool aForeground, TBool aExit );
-
-
-protected:
-
- /**
- * Gets called by the framework when it's activating this view.
- *
- * @param aPrevViewId Previous view id
- * @param aCustomMessageId Custom message's id
- * @param aCustomMessage Custom message
- */
- void DoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage );
-
- /**
- * Gets called by the framework when it's deactivating this view.
- */
- void DoDeactivate();
-
-protected:
-
-
- void CompleteForegroundEventL();
- void DoForegroundEventL();
- void DoBackgroundEventL( TBool aExit );
- void SetCurrentFgBgEvent( TMusFgBgEventType aEventType );
- TInt ToolbarPlaceHolderHeight() const;
- TInt ToolbarPlaceHolderWidth() const;
- void UpdateBackgroundOrdinalPosition( TBool aUp );
- void RefreshBackgroundContainer();
-
-protected: // data
-
- /**
- * ETrue if operator specific functionality is needed
- */
- TBool iOperatorSpecificFunctionality;
-
- TBool iToolbarItemSelected;
-
- CMusUiBackgroundViewContainer* iBackgroundContainer; // skin background drawer
-
-private: // data
-
- CAknIncallBubble* iIncallBubble;
-
- CMusUiActiveTimer* iSessionEndTimer;
-
- CMusUiActiveTimer* iFgBgTimer;
-
- TMusFgBgEventType iCurrentFgBgEvent;
-
- TBool iCurrentExitSetting;
-
- };
-
-// macro for NO_TOOLBAR case
-#define MUS_NO_TOOLBAR ( iOperatorSpecificFunctionality && !(AknLayoutUtils::PenEnabled()))
-
-#endif // MUSUIGENERALVIEW_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiinvitationquery.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUIINVITATIONQUERY_H
-#define MUSUIINVITATIONQUERY_H
-
-#include "musuiactivetimerobserver.h"
-
-#include <e32base.h>
-
-class CAknGlobalConfirmationQuery;
-class CMusUiActiveTimer;
-class MMusUiInvitationQueryObserver;
-
-/**
- *
- *
- *
- * @lib musui.exe
- */
-class CMusUiInvitationQuery : public CActive,
- public MMusUiActiveTimerObserver
- {
-
-public: // constructor
-
- static CMusUiInvitationQuery* NewL( MMusUiInvitationQueryObserver& aView );
-
- ~CMusUiInvitationQuery();
-
-private:
-
- CMusUiInvitationQuery( MMusUiInvitationQueryObserver& aView );
-
- void ConstructL();
-
-
-public: // new functions
-
- void ShowL( const TDesC& aContact );
-
-
-public: // from: MMusUiActiveTimerObserver
-
- void TimerComplete( CMusUiActiveTimer* aTimer );
-
-
-protected: // from CActive
-
- void RunL();
-
- void DoCancel();
-
- TInt RunError( TInt aError );
-
-
-private: // data
-
- /** A global confirmation query. Own. */
- CAknGlobalConfirmationQuery* iGlobalQuery;
-
- /** A descriptor buffer for prompting. Own. */
- HBufC* iPrompt;
-
- CMusUiActiveTimer* iActiveTimer;
-
- /** Observer. */
- MMusUiInvitationQueryObserver& iObserver;
- };
-
-
-#endif // MUSUIINVITATIONQUERY_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiinvitationqueryobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUIINVITATIONQUERYOBSERVER_H
-#define MUSUIINVITATIONQUERYOBSERVER_H
-
-
-class MMusUiInvitationQueryObserver
- {
-public:
-
- /**
- *
- */
- virtual void InvitationAcceptedL() = 0;
-
- /**
- *
- */
- virtual void InvitationRejectedL() = 0;
- };
-
-
-#endif // MUSUIINVITATIONQUERYOBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuilevelindicator.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,205 +0,0 @@
-/*
-* 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: Class for displaying icons in viewfinder view
-*
-*/
-
-
-#ifndef MUSUILEVELINDICATOR_H
-#define MUSUILEVELINDICATOR_H
-
-#include "musuidefinitions.h"
-#include "musuiactivetimerobserver.h"
-
-// SYSTEM
-#include <AknsControlContext.h>
-#include <AknUtils.h>
-#include <coecntrl.h>
-
-class MAknsSkinInstance;
-class CGulIcon;
-class MMusUiLevelIndicatorObserver;
-class CAknSlider;
-
-/**
-* Class for displaying icons in viewfinder view
-*/
-class CMusUiLevelIndicator : public CCoeControl,
- public MCoeControlObserver,
- public MMusUiActiveTimerObserver
- {
-
-
- public: // Constructors and destructor
-
- /**
- * Symbian OS two-phased constructor.
- * @param aController reference to CCcorController
- */
- static CMusUiLevelIndicator* NewL(
- TAknOrientation aLayout,
- TInt aMinLevel,
- TInt aMaxLevel,
- CCoeControl* aParent,
- const TRect& aRect,
- MMusUiLevelIndicatorObserver* aObserver );
-
- /**
- * Symbian OS two-phased constructor.
- * @param aController reference to CCcorController
- */
- static CMusUiLevelIndicator* NewLC(
- TAknOrientation aLayout,
- TInt aMinLevel,
- TInt aMaxLevel,
- CCoeControl* aParent,
- const TRect& aRect,
- MMusUiLevelIndicatorObserver* aObserver );
-
- /**
- * Destructor.
- */
- ~CMusUiLevelIndicator();
-
-
- public: // New functions
-
- /**
- *
- */
- void SetLevelL( TMusUiIndicatorType aType,
- TInt aLevel,
- TBool aUseTimer );
-
- /**
- *
- */
- TInt GetLevel(TMusUiIndicatorType aType);
-
- /**
- *
- */
- void SetRange( TInt aMinLevel, TInt aMaxLevel, TBool aUseTimer);
-
- /**
- *
- */
- void SetIndicatorType( TMusUiIndicatorType aType );
-
- /**
- *
- */
- TMusUiIndicatorType GetIndicatorType();
-
-
- private: // From CCoeControl
-
- /**
- * Handles the size change events.
- *
- */
- virtual void SizeChanged();
-
- virtual void Draw(const TRect& aRect) const;
-
- virtual TInt CountComponentControls() const;
-
- virtual CCoeControl* ComponentControl( TInt aIndex ) const;
-
- virtual void HandleResourceChange( TInt aType );
-
-
- private: // From CCoeControlObserver
-
- virtual void HandleControlEventL( CCoeControl* aControl,
- TCoeEvent aEventType );
-
-
- private: // From MMusUiActiveTimerObserver
-
- virtual void TimerComplete( CMusUiActiveTimer* aTimer );
-
-
- private: // Constructors and destructor
-
- /**
- * C++ constructor
- */
- CMusUiLevelIndicator( TInt aMinLevel,
- TInt aMaxLevel,
- MMusUiLevelIndicatorObserver* aObserver );
-
- /**
- * Symbian 2nd phase constructor.
- */
- void ConstructL( TAknOrientation aLayout,
- CCoeControl* aParent,
- const TRect& aRect );
-
-
- private: // HELPERS
-
- void ConstructImageL( CEikImage* aImage,
- MAknsSkinInstance* aSkin,
- const TAknsItemID& aId,
- TInt aBitmapId,
- TInt aMaskId,
- TParse aParse );
-
- /**
- * Callback for disable level indicator.
- * @since 2.8
- * @return KErrNone
- */
- //static TInt DisableLevelIndicator( TAny* aThis );
- //void DisableTimer();
- //void EnableTimer();
-
-
- private: //data
-
-
- TRect iParentRect;
-
- TRect iViewfinderRect;
-
- TInt iMinLevel;
-
- TInt iMaxLevel;
-
- TInt iZoomLevel;
-
- TInt iBrightnessLevel;
-
- TInt iDurationLevel;
-
- CMusUiActiveTimer* iDisableLevelTimer;
-
- TMusUiIndicatorType iIndicatorType;
-
- CAknSlider* iSlider;
-
- CMusUiActiveTimer* iSliderEventTimer;
-
- /**
- * NOT OWN!!!
- */
- MMusUiLevelIndicatorObserver* iObserver;
-
- };
-
-
-#endif
-
-// End of File
--- a/mmsharing/mmshui/inc/musuilevelindicatorobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* 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: Mus level indicator Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUILEVELINDICATOROBSERVER_H
-#define MUSUILEVELINDICATOROBSERVER_H
-
-
-class MMusUiLevelIndicatorObserver
- {
- public:
-
- virtual void SetLevelIndicatorVisibility(TBool aVisible) = 0;
-
- virtual void IndicatorLevelChanged( TInt aNewLevel ) = 0;
-
- };
-
-#endif // MUSUILEVELINDICATOROBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuilivesharingcontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-/*
-* 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 MUSUILIVESHARINGCONTROLLER_H
-#define MUSUILIVESHARINGCONTROLLER_H
-
-#include "musuisendcontroller.h"
-#include "musenglivesessionobserver.h"
-#include "musunittesting.h"
-
-#include <e32base.h>
-#include <badesca.h>
-
-class MMusUiLiveSharingObserver;
-class CMusEngLiveSession;
-class CMusUiActiveTimer;
-
-/**
- *
- *
- * @lib musui.exe
- */
-class CMusUiLiveSharingController : public CMusUiSendController,
- public MMusEngLiveSessionObserver
- {
-
- MUS_UNITTEST( UT_CMusUiLiveSharingController; )
- MUS_UNITTEST( UT_CMusUiEventController; )
-
-public:
-
- static CMusUiLiveSharingController* NewL(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiSendObserver& aSendObserver,
- MMusUiLiveSharingObserver& aLiveObserver,
- const TRect& aRect );
-
- virtual ~CMusUiLiveSharingController();
-
-
-private:
-
- CMusUiLiveSharingController(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiSendObserver& aSendObserver,
- MMusUiLiveSharingObserver& aLiveObserver );
-
- void ConstructL( const TRect& aRect );
-
-
-public: // From CMusUiEventController:
-
- virtual void PlayL();
-
- virtual void PauseL();
-
- virtual void OfferToolbarEventL( TInt aCommand );
-
- virtual void HandleCommandL( TInt aCommand );
-
- virtual void DeleteEngineSession();
-
-
-public: // from CMusUiSendController
-
- virtual CMusEngMceOutSession* EngineOutSession();
-
- virtual void InviteL( const TDesC& aRecipient );
-
- virtual void HandleSliderValueChangeL( TInt aNewLevel );
-
-public: // new functions
-
- TMusUiNaviMediaDecorator RecordIcon();
-
- TBool IsBrightnessSupported();
-
- TBool IsDiskFull();
-
- /**
- * Determines whether zoom adjustment is selected either from toolbar
- * or menu
- */
- TBool ZoomSelected();
-
- /**
- * Determines whether brightness adjustment is selected either from toolbar
- * or menu
- */
- TBool BrightnessSelected();
-
- void LevelIndicatorDismissed();
- TBool ToolbarZoomSelected();
-
- TBool ToolbarBrightnessSelected();
-
- /**
- *
- */
- void RefreshCameraOrientationL();
-
- /**
- * Determines whether Session established or not
- */
- TBool IsSessionEstablished();
-
-
-private: // new functions:
-
- void ZoomInL();
-
- void ZoomOutL();
-
- void IncreaseBrightnessL();
-
- void DecreaseBrightnessL();
-
- void ZoomL();
-
- void BrightnessL();
-
- void HandleMiddleSoftkeyOkL();
-public: // From MMusEngLiveSessionObserver
-
- void DiskFull();
-
- void OrientationRefreshEnded();
-
-public: // from MMusEngSessionObserver
-
- void SessionEstablished();
-
- void SessionTerminated();
-
- void SessionConnectionLost();
-
- void SessionFailed();
-
- void StreamIdle();
-
- void StreamStreaming();
-
- void SessionTimeChanged( const TTimeIntervalSeconds& aSeconds );
-
- void InactivityTimeout();
-
- void HandlePauseResumeInToolbar();
-
- void UserInitiatedCameraStateChangeL(TBool aEnable);
-
-private:
-
- MMusUiLiveSharingObserver& iLiveObserver;
-
- CMusEngLiveSession* iSession;
-
- TBool iToolbarZoomSelected;
-
- TBool iToolbarBrightnessSelected;
-
- TBool iZoomSelected;
-
- TBool iBrightnessSelected;
-
- TBool iDiskFull;
-
- TBool iSessionEstablished;
-
- CMusUiActiveTimer* iPauseResumeGuardTimer;
-
- };
-
-#endif // MUSUILIVESHARINGCONTROLLER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuilivesharingobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUILIVESHARINGOBSERVER_H
-#define MUSUILIVESHARINGOBSERVER_H
-
-#include "musuidefinitions.h"
-
-#include <aknappui.h>
-#include <badesca.h>
-
-class MMusUiLiveSharingObserver
- {
-
-public:
-
- virtual void SetZoomValues( TInt aMinZoom, TInt aMaxZoom ) = 0;
-
- virtual void SetBrightnessValues( TInt aMinBrightness, TInt aMaxBrightness ) = 0;
-
- virtual void SetZoomL( TInt aZoomLevel ) = 0;
-
- virtual void SetBrightnessL( TInt aBrightnessLevel ) = 0;
-
- virtual void SetZoomVisible( TBool aVisible ) = 0;
-
- virtual void SetBrightnessVisible( TBool aVisible ) = 0;
-
- virtual void DoRefreshView() = 0;
-
- };
-
-#endif // MUSUILIVESHARINGOBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuilivesharingview.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,172 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUILIVESHARINGVIEW_H
-#define MUSUILIVESHARINGVIEW_H
-
-
-#include "musuisendview.h" // Base view class
-#include "musuilivesharingobserver.h"
-
-#include <aknview.h>
-
-class CMusUiLiveSharingViewContainer;
-class CMusUiLiveSharingController;
-class CMusUiActivityManager;
-class CMusUiBackgroundViewContainer;
-class CAknToolbar;
-
-
-/**
- * The MUS application's live sharing view.
- *
- * @lib musui.exe
- */
-class CMusUiLiveSharingView : public CMusUiSendView,
- public MMusUiLiveSharingObserver
- {
-
-public: // constructors and destructor
-
- /**
- * EPOC 2nd phase constructor.
- */
- void ConstructL();
-
- /**
- * Destructor.
- */
- virtual ~CMusUiLiveSharingView();
-
-
-public: // from base class CAknView
-
- /**
- * From CAknView returns Uid of View
- * @return TUid uid of the view
- */
- TUid Id() const;
-
- // From MEikMenuObserver, Called by framework before constructing menupane
- void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-
-public: // from CMusUiGeneralView
-
- void HandleToolbarCommandL( TInt aCommand );
-
- virtual void SetInitialFocusedItemL();
-
- void RefreshAudioRoutingButton();
-public: // from base class MAknToolbarObserver
-
- void DynInitToolbarL( TInt aResourceId, CAknToolbar* aToolbar );
-
-
-public: // from MMusUiLiveSharingObserver
-
- void SetZoomValues( TInt aMinZoom, TInt aMaxZoom );
-
- void SetBrightnessValues( TInt aMinBrightness, TInt aMaxBrightness );
-
- void SetZoomL( TInt aZoomLevel );
-
- void SetBrightnessL( TInt aBrightnessLevel );
-
- void SetZoomVisible( TBool aVisible );
-
- void SetBrightnessVisible( TBool aVisible );
-
- void ReplaceToolbarCommand( TInt aOldCommand,
- TInt aNewCommand,
- TBool aSetNewCommandFocused );
- void DoRefreshView();
-
-public: // new functions
-
- void RefreshView();
-
- void LevelIndicatorDismissed();
-
- void HandleKeyUpArrowL();
-
- void HandleKeyDownArrowL();
-
- /* In order to receive right oriented frames from camera when
- * orientation changed, it has to be recreated.Only way to do
- * from UI is to pause and play.
- *
- * aNewRect : New rectangle co-ordinates.
- * This will be compared to old rectangle co-ordinates
- * to find out whether orientation changed.
- */
- void RefreshCameraOrientationL(TRect& aNewRect);
-
- /* -----------------------------------------------------------------------------
- * When Live sharing paused , camera source will be unavilable, hence
- * it is inappropriate to show the zoom and brightness
- * so hide those item. And unhide it again when unpaused.
- *
- * @aIsPaused : ETrue if paused else EFalse
- */
- void HideToolbarCommandForPause( TBool aIsPaused );
-
- void ResetToolBarSelected();
-
-protected: // from CMusUiSendView
-
- virtual CMusUiSendController* SendController() const;
-
- virtual CMusUiSendViewContainer* SendContainer() const;
-
-
-private:
-
- /**
- * Gets called by the framework when it's activating this view.
- *
- * @param aPrevViewId Previous view id
- * @param aCustomMessageId Custom message's id
- * @param aCustomMessage Custom message
- */
- void DoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage );
-
- /**
- * Gets called by the framework when it's deactivating this view.
- */
- void DoDeactivate();
-
-
-private: // data
-
- /** Container for all controls in this view. Owns. */
- CMusUiLiveSharingViewContainer* iContainer;
-
- CMusUiLiveSharingController* iController;
-
- TBool iPauseSelected;
-
- };
-
-
-#endif // MUSUILIVESHARINGVIEW_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuilivesharingviewcontainer.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUILIVESHARINGVIEWCONTAINER_H
-#define MUSUILIVESHARINGVIEWCONTAINER_H
-
-#include "musuisendviewcontainer.h"
-#include "musuilevelindicatorobserver.h"
-
-
-/**
- *
- *
- *
- * @lib musui.exe
- */
-class CMusUiLiveSharingViewContainer : public CMusUiSendViewContainer
- {
-
-public: // constructors and destructor
-
- /**
- * Symbian second-phase constructor.
- *
- * @param aView Parent view of container.
- * @param aRect Frame rectangle for container.
- * @param aInputParams Packaged data.
- */
- void ConstructL( CMusUiGeneralView* aView,
- const TRect& aRect );
-
- /**
- * Destructor.
- */
- ~CMusUiLiveSharingViewContainer();
-
-
-public: // new functions
-
- void SetZoomValues( TInt aMinZoom, TInt aMaxZoom );
-
- void SetBrightnessValues( TInt aMinBrightness, TInt aMaxBrightness );
-
- void SetZoomL( TInt aZoomLevel );
-
- void SetBrightnessL( TInt aBrightnessLevel );
-
- void SetZoomVisible( TBool aVisible );
-
- void SetBrightnessVisible( TBool aVisible );
-
- TMusUiIndicatorType GetIndicatorType();
-
-
-private: // from base class CCoeControl
-
- /**
- * Returns the number of control contained by this class.
- *
- * @return Number of controls contained
- */
- TInt CountComponentControls() const;
-
- /**
- * Returns handle to control pointed by aIndex.
- *
- * @param aIndex Wanted control's index [0..n]
- * @return Handle to wanted control
- */
- CCoeControl* ComponentControl( TInt aIndex ) const;
-
- /**
- * Handles key events.
- *
- * @param aEvent The event that occured.
- * @param aType Type of key event: EEventKey, EEventKeyUp, or
- * EEventKeyDown.
- * @return The container's response to event: either
- * EKeyWasNotConsumed or EKeyWasConsumed.
- */
- TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent, TEventCode aType );
-
- /**
- * Handles pointer events.
- *
- * @param aEvent The event that occured.
- */
- virtual void HandlePointerEventL( const TPointerEvent& aPointerEvent );
-
-protected: // data
-
- /**
- * ETrue if operator specific functionality is needed
- */
- TBool iOperatorSpecificFunctionality;
-
-private: // data
-
- };
-
-
-#endif // MUSUILIVESHARINGVIEWCONTAINER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuimmcmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
-* 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 MUSUIMMCMONITOR_H
-#define MUSUIMMCMONITOR_H
-
-// INCLUDES
-#include "musuimmcobserver.h"
-
-#include <e32base.h>
-#include <f32file.h>
-
-
-// CLASS DECLARATION
-
-/**
-* Listen changes on the filesystem and notifies observers if
-* MMC card has been removed.
-* Notifies clients only once about MMC removal and only
-* in that case that user wanted to listen MMC drive
-*/
-class CMusUiMmcMonitor : public CActive
- {
- public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- * @param aObserver MMC observer pointer.
- */
- static CMusUiMmcMonitor* NewL( MMusUiMmcObserver& aObserver );
-
- /**
- * Destructor.
- */
- ~CMusUiMmcMonitor();
-
- private: // from CActive
-
- void RunL();
- TInt RunError( TInt aError );
- void DoCancel();
-
- private: // New functions.
-
- void ConstructL();
- CMusUiMmcMonitor( MMusUiMmcObserver& aObserver );
-
- void MonitorMmc();
- TBool DriveRemoved();
- TBool IsRemovableDrive( TDriveNumber aDriveNumber );
-
- private: // Data
-
- RFs iFs;
- TDriveNumber iDriveNumber;
- TBool iRemovableDrive;
- TBool iDriveRemoved;
- MMusUiMmcObserver& iObserver;
- };
-
-#endif // MUSUIMMCMONITOR_H
-
-// End of File
-
--- a/mmsharing/mmshui/inc/musuimmcobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
-* 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 MUSUIMMCOBSERVER_H
-#define MUSUIMMCOBSERVER_H
-
-
-/**
-* Interface for listening MMC removal indication.
-*/
-class MMusUiMmcObserver
- {
- public:
-
- /**
- * Called when MMC was removed.
- */
- virtual void MmcRemoved() = 0;
- };
-
-#endif // MUSUIMMCOBSERVER_H
-
-// End of File
--- a/mmsharing/mmshui/inc/musuinavimediaanimator.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/*
-* 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 MUSUINAVIMEDIAANIMATOR_H
-#define MUSUINAVIMEDIAANIMATOR_H
-
-#include "musuidefinitions.h"
-#include "musuinavimediaanimatorobserver.h"
-
-#include <coecntrl.h>
-#include <AknUtils.h>
-
-class CAknIconArray;
-class MAknsSkinInstance;
-class CPeriodic;
-
-/**
- * CMusUiNaviMediaDecorator
- *
- * @lib musui.exe
- */
-class CMusUiNaviMediaAnimator : public CBase
- {
-
- public: // constructors and destructor
-
- /**
- * Two-phased constructor.
- *
- */
- static CMusUiNaviMediaAnimator* NewL(
- MMusUiNaviMediaAnimatorObserver& aObserver, TSize aImageSize );
-
- /**
- *
- *
- */
- virtual ~CMusUiNaviMediaAnimator();
-
-
- private: // constructors
-
- /**
- * C++ default constructor.
- *
- */
- CMusUiNaviMediaAnimator(
- MMusUiNaviMediaAnimatorObserver& aObserver, TSize aImageSize );
-
- /**
- * By default Symbian second-phase constructor is private.
- *
- */
- void ConstructL();
-
-
- public: // API
-
- /**
- * Sets animation timer interval eq. speed of animation
- *
- * @param aAnimationInterval Milliseconds between image transitions
- */
- void SetInterval( const TInt aAnimationInterval );
-
-
- private: // Perioidic timer CallBack
-
- static TInt AnimationInterval( TAny* aThis );
-
-
- private: // HELPERS
-
- /**
- * Layouts all images. And also set size.
- *
- */
- void LoadImagesL();
-
-
- /**
- * Construct image from resourse file
- *
- */
- void ConstructImageL( MAknsSkinInstance* aSkin,
- const TAknsItemID& aId,
- TInt aBitmapId,
- TInt aMaskId,
- TParse parse );
-
-
-
- private: // DATA
-
- /**
- *
- */
- CAknIconArray* iBitmapArray;
-
- /**
- *
- */
- //CAknIconArray* iMaskArray;
-
- /**
- * resource file location ( eq. Z or C )
- */
- TBool iResourceRam;
-
- /**
- * Animation image index
- */
- TInt iIndex;
-
- /**
- *
- */
- MMusUiNaviMediaAnimatorObserver& iObserver;
-
- /**
- *
- */
- TInt iInterval;
-
- /**
- * Image size
- */
- TSize iSize;
-
- /**
- *
- */
- CPeriodic* iAnimationTimer; // owned
-
-
- };
-
-#endif // MUSUINAVIMEDIADECORATOR_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuinavimediaanimatorobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUINAVIMEDIAANIMATOROBSERVER_H
-#define MUSUINAVIMEDIAANIMATOROBSERVER_H
-
-#include <e32base.h>
-#include <eikenv.h>
-#include <cntdef.h>
-
-class MMusUiNaviMediaAnimatorObserver
- {
-
- public:
-
- /**
- * Sets new image for drawing. Ownership is not transferred.
- *
- */
- virtual void SetIcon( CGulIcon* aIcon ) = 0;
-
- };
-
-#endif // MUSUIEVENTOBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuinavimediadecorator.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-/*
-* 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 MUSUINAVIMEDIADECORATOR_H
-#define MUSUINAVIMEDIADECORATOR_H
-
-#include "musuidefinitions.h"
-#include "musuinavimediaanimatorobserver.h"
-
-#include <coecntrl.h>
-#include <AknUtils.h>
-
-class CAknIconArray;
-class CMusUiNaviMediaAnimator;
-class MAknsSkinInstance;
-
-/**
- * CMusUiNaviMediaDecorator
- *
- * @lib musui.exe
- */
-class CMusUiNaviMediaDecorator : public CCoeControl,
- public MMusUiNaviMediaAnimatorObserver
- {
-
- public: // constructors and destructor
-
- /**
- * Two-phased constructor.
- *
- */
- static CMusUiNaviMediaDecorator* NewL();
-
- /**
- *
- *
- */
- virtual ~CMusUiNaviMediaDecorator();
-
-
- private: // constructors
-
- /**
- * C++ default constructor.
- *
- */
- CMusUiNaviMediaDecorator();
-
- /**
- * By default Symbian second-phase constructor is private.
- *
- */
- void ConstructL();
-
-
- public: // API
-
- /**
- * Updates left label (usually time string) in navi pane.
- *
- * @param aLabel New label
- */
- void SetLeftLabelL( const TDesC& aLabel );
-
- /**
- * Updates right label (usually time string) in navi pane.
- *
- * @param aLabel New label
- */
- void SetRightLabelL( const TDesC& aLabel );
-
- /**
- * Selects icon show
- *
- */
- void ShowIcon( TMusUiNaviMediaDecorator aIcon );
-
-
- protected: // from MMusUiNaviMediaAnimatorObserver
-
- void SetIcon( CGulIcon* aIcon );
-
-
- protected: // from CCoeControl
-
- /**
- * Handles the size change events.
- *
- */
- void SizeChanged();
-
- /**
- * Draws the control.
- *
- * @param aRect The region of the control to be redrawn.
- */
- void Draw( const TRect& aRect ) const;
-
-
- private: // HELPERS
-
- /**
- * Layouts the text depending on current situation.
- *
- */
- void DoLayoutText();
-
-
- void LoadImagesL();
-
- void ConstructImageL( MAknsSkinInstance* aSkin,
- const TAknsItemID& aId,
- TInt aBitmapId,
- TInt aMaskId,
- TParse parse,
- TBool aIconHasOwnColor = ETrue);
-
-
- private: // DATA
-
- /**
- *
- *
- */
- HBufC* iLeftLabel;
-
- /**
- *
- *
- */
- HBufC* iRightLabel;
-
-
- CAknLayoutFont *iFont;
-
- /**
- *
- *
- */
- TAknLayoutText iLeftTextLayout;
-
- /**
- *
- *
- */
- TAknLayoutText iRightTextLayout;
-
- /**
- *
- *
- */
- TAknLayoutRect iIconLayout;
-
- /**
- *
- *
- */
- CAknIconArray* iIconArray;
-
- /**
- *
- *
- */
- TInt iMiddle;
-
- TInt iIconLeft;
-
- /**
- *
- *
- */
- TSize iLeftTextSize;
-
- /**
- *
- *
- */
- TSize iRightTextSize;
-
- /**
- *
- *
- */
- CGulIcon* iIcon;
-
- /**
- * resource file location ( eq. Z or C )
- */
- TBool iResourceRam;
-
-
- CMusUiNaviMediaAnimator* iAnimation;
-
- TSize iImageSize;
-
- };
-
-#endif // MUSUINAVIMEDIADECORATOR_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuipropertyobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUIPROPERTYOBSERVER_H
-#define MUSUIPROPERTYOBSERVER_H
-
-#include <e32base.h>
-
-class MMusUiPropertyObserver
- {
-
-public:
-
- //virtual void ResourcePropertyChanged( const TUint aKey, const TInt aValue ) = 0;
-
- //virtual void SessionPropertyChanged( const TUint aKey, const TInt aValue ) = 0;
-
- virtual void PropertyChanged( const TUint aKey, const TInt aValue ) = 0;
-
- virtual void HandlePropertyError( const TInt aReason ) = 0;
-
- };
-
-#endif // MUSUIPROPERTYOBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuipropertywatch.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
-* 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 MUSUIPROPERTYWATCH_H
-#define MUSUIPROPERTYWATCH_H
-
-#include "musunittesting.h"
-
-#include <e32base.h>
-#include <e32property.h>
-
-class MMusUiPropertyObserver;
-
-class CMusUiPropertyWatch : public CActive
- {
-
- MUS_UNITTEST( UT_CMusUiPropertyWatch; )
-
-public: // constructors and destructor
-
- /**
- * Two-phased constructor. Leaves on failure.
- * @return The constructed CMusUiPropertyWatch object.
- */
- static CMusUiPropertyWatch* NewL( MMusUiPropertyObserver& aObserver,
- TUid aCategory,
- const TInt aPropertyName );
-
- /**
- * Destructor.
- */
- ~CMusUiPropertyWatch();
-
-private:
-
- /**
- * C++ constructor.
- */
- CMusUiPropertyWatch( MMusUiPropertyObserver& aObserver,
- TUid aCategory,
- const TInt aPropertyName );
-
- /**
- * Symbian 2nd-phase constructor.
- * @leave If return value of RProperty::Attach != KErrNone, e.q. KErrNoMemory
- * or one of the system wide error codes if RunL() leaves
- */
- void ConstructL();
-
-
-public: // new functions
-
- /**
- * Reads a P&S integer value from the category KCategoryUid
- * @pre P&S value has to be defined.
- * @leave One of the system wide error codes, if RProperty::Get()
- * returns an error value.
- * @param aKey Name of the P&S Key, which value should be read
- * @returns The integer value of the P&S Key.
- */
- static TInt ReadIntPropertyL( TUint aKey );
-
- /**
- * Reads a P&S descriptor value from the category KCategoryUid
- * @pre P&S value has to be defined.
- * @leave One of the system wide error codes, if RProperty::Get()
- * returns an error value or if descriptor AllocL() leaves.
- * @param aKey Name of the P&S Key, which value should be read
- * @returns The descriptor value of the P&S Key.
- * Ownership is transferred
- */
- static HBufC* ReadDescPropertyL( TUint aKey );
-
-
-private: // functions from base class CActive
-
- /**
- *
- */
- void DoCancel();
-
- /**
- * Reads a P&S integer value from the category KCategoryUid
- * and starts to monitor changes in the property value.
- * Calls observer function for read property values.
- * @pre P&S value has to be defined as an integer.
- * @leave One of the system wide error codes, if RProperty::Get()
- * returns an error value.
- */
- void RunL();
-
- /**
- *
- */
- TInt RunError(TInt aError);
-
-private: // Data
-
- RProperty iProperty;
-
- TUid iPropertyCategory;
-
- TUint iPropertyKey;
-
- MMusUiPropertyObserver& iObserver;
-
- };
-
-#endif // MUSUIPROPERTYWATCH_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiqueryobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUIQUERYOBSERVER_H
-#define MUSUIQUERYOBSERVER_H
-
-
-class MMusUiQueryObserver
- {
-public:
-
- /**
- *
- */
- virtual void QueryAcceptedL( TBool aAccepted ) = 0;
-
- /**
- * Error handler for QueryAcceptedL.
- *
- * @param aError is error to be handled.
- * @return KErrNone means handled value. All other values will lead to
- * a panic.
- */
- virtual TInt HandleQueryError( TInt aError ) = 0;
-
- };
-
-
-#endif // MUSUIQUERYOBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuireceivecontainer.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUIRECEIVECONTAINER_H
-#define MUSUIRECEIVECONTAINER_H
-
-#include "musuiviewcontainer.h"
-
-class MAknsControlContext;
-class CMusUiGeneralView;
-class CMusUiInvitationQuery;
-class MMusUiInvitationQueryObserver;
-class CMusUiReceiveView;
-
-/**
- *
- *
- */
-class CMusUiReceiveContainer : public CMusUiViewContainer
- {
-
-public: // constructors and destructor
-
- /**
- * Public constructor.
- */
- static CMusUiReceiveContainer* NewL( CMusUiReceiveView& aView,
- TRect aRect );
-
- /**
- * Destructor.
- */
- ~CMusUiReceiveContainer();
-
-
-private: // hidden constructors
-
- /**
- * C++ Constructor
- */
- CMusUiReceiveContainer( CMusUiReceiveView& aView );
-
- /**
- * Symbian second-phase constructor.
- *
- * @param aView Parent view of container.
- * @param aRect Frame rectangle for container.
- * @param aInputParams Packaged data.
- */
- void ConstructL( const TRect& aRect );
-
-protected: // data
-
- /**
- * ETrue if operator specific functionality is needed
- */
- TBool iOperatorSpecificFunctionality;
-
-public: // new functions
-
- /**
- * Shows an invitation query.
- */
- void ShowInvitationQueryL( const TDesC& aContact,
- MMusUiInvitationQueryObserver& aObserver );
-
- /**
- *
- */
- void DismissInvitationQuery( TBool aDelete );
-
- /**
- * Return pointer to view class. User needs to type cast to
- * appropriate concrete view class.
- *
- * @return handle to view
- */
- CMusUiGeneralView* MusUiView() const;
-
-
- void SetFullScreen( TBool aFullScreen, TRect aRect );
-
- void UpdatePointerCapture();
-
-
-private: // from base class CCoeControl
-
- /**
- *
- */
- virtual void SizeChanged();
-
- /**
- * Returns the number of control contained by this class.
- *
- * @return Number of controls contained
- */
- virtual TInt CountComponentControls() const;
-
- /**
- * Returns handle to control pointed by aIndex.
- *
- * @param aIndex Wanted control's index [0..n]
- * @return Handle to wanted control
- */
- virtual CCoeControl* ComponentControl( TInt aIndex ) const;
-
- /**
- * Gets called by the application framework when drawing is
- * needed.
- *
- * @param aRect The rectangle that needs to be drawn.
- */
- virtual void Draw( const TRect& aRect ) const;
-
- /**
- * Handles key events.
- *
- * @param aEvent The event that occured.
- * @param aType Type of key event: EEventKey, EEventKeyUp, or
- * EEventKeyDown.
- * @return The container's response to event: either
- * EKeyWasNotConsumed or EKeyWasConsumed.
- */
- virtual TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent,
- TEventCode aType );
-
- /**
- * Handles pointer events. Will return from full screen mode as a response
- * to whatever pointer event.
- *
- * @param aEvent The event that occured.
- */
- virtual void HandlePointerEventL( const TPointerEvent& aPointerEvent );
-
-
-private: // data
-
- /** A dialog for invitation query (accept/reject). Own.*/
- CMusUiInvitationQuery* iInvitationQuery;
-
- /** Background skin control context. */
- MAknsControlContext* iBackGround;
-
- /** Handle to the view that owns of this container. Not own. */
- CMusUiGeneralView& iView;
-
- TBool iFullScreen;
-
- };
-
-
-#endif // MUSUIRECEIVECONTAINER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuireceivecontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,322 +0,0 @@
-/*
-* 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 MUSUIRECEIVECONTROLLER_H
-#define MUSUIRECEIVECONTROLLER_H
-
-#include "musuieventcontroller.h"
-#include "musengreceivesessionobserver.h"
-#include "musengmcesession.h"
-#include "musuiinvitationqueryobserver.h"
-#include "musunittesting.h"
-#include "musuiactivetimerobserver.h"
-
-#include <e32base.h>
-
-class MMusUiReceiveObserver;
-class CMusEngReceiveSession;
-class MMusUiReceiveObserver;
-class CMusUiActiveTimer;
-
-/**
- *
- *
- * @lib musui.exe
- */
-class CMusUiReceiveController : public CMusUiEventController,
- public MMusEngReceiveSessionObserver,
- public MMusUiInvitationQueryObserver,
- public MMusUiActiveTimerObserver
- {
-
-public:
-
- /**
- * Two-phased constructor. Leaves on failure.
- * @return The constructed CMusUiReceiveController object.
- */
- static CMusUiReceiveController* NewL(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiReceiveObserver& aReceiveObserver,
- const TRect& aRect );
-
- /**
- * Destructor.
- */
- virtual ~CMusUiReceiveController();
-
-private:
-
- /**
- * C++ constructor.
- */
- CMusUiReceiveController( MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiReceiveObserver& aReceiveObserver );
-
- /**
- * Symbian 2nd-phase constructor.
- * @leave One of the system wide error codes
- * @param aRect Original view's rectangle, which is centered and passed
- * for the Engine.
- */
- void ConstructL( const TRect& aRect );
-
-
-public: // new functions:
-
- /**
- * Gets called by MMusEngReceiveSessionObserver's Incoming Session.
- * Function cancels the timer and displays the invitation query dialog.
- * MO Address is saved into memeber variable iOriginator.
- * @leave One of the system wide error codes
- * @param aOriginator The Address of MO.
- * @param aOriginatorIdentity The identity of MO.
- */
- void HandleIncomingSessionL( const TDesC& aOriginator,
- const TDesC& iOriginatorIdentity );
-
- TBool ClipMutedL();
-
- TBool ClipContainsAudioL();
-
- /**
- * Determines whether video is being played in full screen mode.
- */
- TBool FullScreenSelected();
-
-
-public: // from CMusUiEventController
-
- /**
- * Returns a pointer to engine side session.
- */
- virtual CMusEngMceSession* EngineSession();
-
- /**
- * Implementation of the pure virtual function in MMusUiCallbackObserver.
- * Handled async. event in the MT is EMusUiAsyncInviteAccepted.
- * @param aEventId Async. event
- */
- virtual void HandleAsyncEventL( TMusUiAsyncEvent aEventId );
-
- /**
- * Implementation of the pure virtual function from CMusUiEventController
- * @return iOriginator, the address of MO
- */
- virtual const TDesC& TypedAddress() const;
-
- /**
- * Updates softkeys specific to receiving. Delegates other requests to
- * a base class.
- */
- // virtual void UpdateSoftkeyL( TInt aToolbarItem );
-
- /**
- * Handles commands generated by UI's Toolbar in the Receive View.
- * @pre iSession != NULL
- * @leave One of the system wide error codes
- * @param aCommand Identiefier of the event's command.
- */
- virtual void OfferToolbarEventL( TInt aCommand );
-
- virtual void HandleCommandL( TInt aCommand );
-
- /**
- * Implementation of the pure virtual function from CMusUiEventController
- * Deletes the Engine instance.
- */
- virtual void DeleteEngineSession();
-
-
-public: // from MMusEngReceiveSessionObserver
-
- /**
- * Called by engine when timer can be cancelled.
- */
- virtual void IncomingSessionPreNotification();
-
- /**
- * Called by the engine, when session is incoming.
- * @param aOriginator The address of MO.
- * @param aOriginatorIdentity The identity of MO.
- */
- virtual void IncomingSession( const TDesC& aOriginator,
- const TDesC& iOriginatorIdentity );
-
- /**
- * Called by the engine, when current receiving session is buffering
- * received RTP.
- */
- virtual void StreamBuffering();
-
-
-public: // from MMusEngSessionObserver
-
- /**
- * Called by the engine, when incoming session is established.
- * Dismisses the wait dialog and sets up the status pane
- */
- void SessionEstablished();
-
- /**
- * Called by the engine, when session has been terminated.
- * If connection is not established, dismisses the invitation query dialog,
- * shows an error dialog and exits.
- * Otherwise dismisses wait dialog and exits.
- */
- void SessionTerminated();
-
- /**
- * Called by the engine, when current session has lost network connection.
- * Displays an error dialog.
- */
- void SessionConnectionLost();
-
- /**
- * Called by the engine, when an undefined exception has occurred.
- * Dismisses the wait dialog.
- */
- void SessionFailed();
-
- /**
- * Called by the engine, when we are not sending or receiving RTP.
- * Updates the icon to be Pause icon.
- */
- void StreamIdle();
-
- /**
- * Called by the engine, when current session state is changed to streaming
- * Dismisses the wait dialog, and updates the icon to Play icon.
- */
- void StreamStreaming();
-
- /**
- * Called by the engine, when time information of the session
- * should be updated.
- * Calls Observer's UpdateSessionTime() function.
- * @param aSeconds Session time in secods to be formatted.
- */
- void SessionTimeChanged( const TTimeIntervalSeconds& aSeconds );
-
- /**
- * Called by the engine, when RTCP inactivity timeout has occurred.
- * Exits the application.
- */
- void InactivityTimeout();
-
-
-public: // from MMusUiInvitationQueryObserver
-
- /**
- * Called if the user accepts the incoming invitation.
- * Calls Engine's AcceptInvitationL() function with ETrue and starts
- * to show the wait dialog async.
- * @pre iSession != NULL
- * @leave One of the system wide error codes
- */
- void InvitationAcceptedL();
-
- /*
- * Called if the user rejects the incoming invitation.
- * Calls Engine's AcceptInvitationL() with EFalse and exits the application.
- * @pre iSession != NULL
- * @leave One of the system wide error codes
- */
- void InvitationRejectedL();
-
-public: // from MMusUiActiveTimerObserver
-
- /*
- * Called if the timer completes.
- * Calls ShutdownL() function.
- */
- void TimerComplete( CMusUiActiveTimer* aTimer );
-
-
-protected: // from CMusUiEventController
-
- /**
- * Receive specific functionality of exit procedure
- */
- virtual void ExitProcedureL( TBool aUserAcceptance );
-
-
-private: // new functions:
- /**
- * Changes video playing mode to the opposite.
- * Value of iFullScreenSelected will be changed to opposite as well.
- */
- void ChangeFullScreenModeL();
-
-
- /**
- * Displays the wait dialog calling Observer's ShowWaitDialogL with a string
- * loaded from resources.
- * @leave One of the system wide error codes
- */
- void ShowWaitDialogL();
-
- /**
- *
- */
- void SessionEstablishedL();
-
-
-private:
-
- /**
- * Observer interface for receiving specific callbacks
- */
- MMusUiReceiveObserver& iReceiveObserver;
-
- /**
- * The engine object for MT
- */
- CMusEngReceiveSession* iSession;
-
- /**
- * Address of the MO
- */
- HBufC* iOriginator;
-
- /**
- * Flag indicating that video is being played in Full Screen mode
- */
- TBool iFullScreenSelected;
- /**
- * Active object timer instance
- */
- CMusUiActiveTimer* iTimer;
-
- CMusEngMceSession::TDisplayOrientation iOriginalMceOrientation;
-
- /**
- * Flag indicating that the stream is paused
- */
- TBool iStreamPaused;
-
-
- MUS_UNITTEST( UT_CMusUiReceiveController; )
-
- };
-
-#endif // MUSUIRECEIVECONTROLLER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuireceiveobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUIRECEIVEOBSERVER_H
-#define MUSUIRECEIVEOBSERVER_H
-
-#include "musuidefinitions.h"
-
-#include <aknappui.h>
-
-class MMusUiReceiveObserver
- {
-
-public:
-
- virtual void ShowInvitationQueryL( const TDesC& aQuery ) = 0;
-
- virtual void DismissInvitationQuery( TBool aDelete ) = 0;
-
- virtual void SetFullScreenL( TBool aFullScreen ) = 0;
-
- };
-
-#endif // MUSUILIVESHARINGOBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuireceiveview.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUIRECEIVEVIEW_H
-#define MUSUIRECEIVEVIEW_H
-
-
-#include "musuigeneralview.h" // Base view class
-#include "musuinavimediadecorator.h"
-#include "musuireceiveobserver.h"
-#include "musuidefinitions.h"
-
-#include <aknview.h>
-
-
-class CMusUiReceiveContainer;
-class CMusUiReceiveController;
-class CMusUiActivityManager;
-class CMusUiBackgroundViewContainer;
-
-
-/**
- * The MUS application's live sharing view.
- *
- */
-class CMusUiReceiveView : public CMusUiGeneralView,
- public MMusUiReceiveObserver
- {
-
-public: // constructors and destructor
-
- /**
- * EPOC 2nd phase constructor.
- */
- void ConstructL();
-
- /**
- * Destructor.
- */
- virtual ~CMusUiReceiveView();
-
-
-public: // from base class CAknView
-
- /**
- * From CAknView returns Uid of View
- * @return TUid uid of the view
- */
- virtual TUid Id() const;
-
- // From MEikMenuObserver, Called by framework before constructing menupane
- virtual void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-public: // from CMusUiGeneralView
-
- virtual void HandleToolbarCommandL( TInt aCommand );
-
- virtual void SetInitialFocusedItemL();
-
- virtual void SetToolbarVisibility( TBool aVisible );
-
- virtual void DoHandleForegroundEventL( TBool aForeground );
-
-public: // from base class MAknToolbarObserver
-
- virtual void DynInitToolbarL( TInt aResourceId, CAknToolbar* aToolbar );
-
-
-public: // from MMusUiReceiveObserver
-
- virtual void ShowInvitationQueryL( const TDesC& aQuery );
-
- virtual void DismissInvitationQuery( TBool aDelete );
-
- virtual void SetFullScreenL( TBool aFullScreen );
-
-
-public: // new functions
-
- void RefreshView();
-
-
-protected: // from MusUiGeneralView
-
- virtual CMusUiEventController* EventController() const;
-
- virtual CMusUiViewContainer& SharingContainer() const;
-
-
-private:
-
- /**
- * Gets called by the framework when it's activating this view.
- *
- * @param aPrevViewId Previous view id
- * @param aCustomMessageId Custom message's id
- * @param aCustomMessage Custom message
- */
- void DoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage );
-
- /**
- * Gets called by the framework when it's deactivating this view.
- */
- void DoDeactivate();
-
-
-private: // data
-
- /** Container for all controls in this view. Owns. */
- CMusUiReceiveContainer* iContainer;
-
- CMusUiReceiveController* iController;
-
- HBufC* iAddress;
-
- TRect iOriginalRect;
-
- };
-
-#endif // MUSUIRECEIVEVIEW_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiresourcehandler.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,162 +0,0 @@
-/*
-* 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: Handler for camera, keypad and video player resources
-*
-*/
-
-
-
-#include "musuipropertyobserver.h"
-#include "musresourceproperties.h"
-#include "mussettingskeys.h"
-#include "musmanagercommon.h"
-
-#include <e32base.h>
-
-class CMusUiPropertyWatch;
-class MMusUiEventObserver;
-class CAknWaitDialog;
-
-/**
- * Encapsulates handling and observing of camera, keypad and video player
- * hardware and software resources.
- */
-class CMusUiResourceHandler : public CBase,
- public MMusUiPropertyObserver
- {
-
- public:
-
- virtual ~CMusUiResourceHandler();
-
- static CMusUiResourceHandler* NewL( MMusUiEventObserver& aObserver );
-
- public: // API
-
- TBool RequestKeypadL( TBool aMandatory = EFalse );
-
- TBool RequestCameraL( TBool aMandatory = EFalse );
-
- TBool RequestVideoPlayerL( TBool aMandatory = EFalse );
-
- void CheckInitialOrientationL( MultimediaSharing::TMusUseCase aUsecase );
-
-
- public: // From MMusUiPropertyObserver
-
- /**
- * @param TUint aKey - The Property key
- * @param TInt aValue - The value of the Property key
- */
- virtual void PropertyChanged( const TUint aKey, const TInt aValue );
-
- virtual void HandlePropertyError( const TInt aReason );
-
-
- private:
-
- CMusUiResourceHandler( MMusUiEventObserver& aObserver );
-
- void ConstructL();
-
-
- private: // Helpers
-
- TBool ShowChangeProductModeDialogL( const TDesC& aPrompt );
-
- TBool IsCurrentlyAvailable( NMusResourceApi::TAvailability aResourceAvailability,
- MusSettingsKeys::TUsability aResourceUsability );
-
-
- private: // data
-
- /**
- *
- */
- MMusUiEventObserver& iObserver;
-
- /**
- *
- */
- CMusUiPropertyWatch* iCameraResourceWatch;
-
- /**
- *
- */
- CMusUiPropertyWatch* iKeypadResourceWatch;
-
- /**
- * It holds the value for CameraAvailability.
- * If it is static available ( Bit set to 0 in Cenrep)
- * then it will be available always , if the bit set
- * to 1 ( dynamic ) then it should be monitored by property
- * listner and set the value accordingly.
- */
- NMusResourceApi::TAvailability iCameraAvailability;
-
- /**
- * It holds the value for KeypadAvailability.
- * If it is static available ( Bit set to 0 in Cenrep)
- * then it will be available always , if the bit set
- * to 1 ( dynamic ) then it should be monitored by property
- * listner and set the value accordingly.
- */
- NMusResourceApi::TAvailability iKeypadAvailability;
-
- /**
- * It holds the value for CameraUsability.
- * Intially read from cenrep and assigned
- * Refer mussettingskeys.h to know the bit value.
- */
- MusSettingsKeys::TUsability iCameraUsability;
-
- /**
- * It holds the value for KeypadUsability.
- * Intially read from cenrep and assigned
- * Refer mussettingskeys.h to know the bit value.
- */
- MusSettingsKeys::TUsability iKeypadUsability;
-
- /**
- * It holds the value for VideoplayerUsability.
- * Intially read from cenrep and assigned
- * Refer mussettingskeys.h to know the bit value.
- */
- MusSettingsKeys::TUsability iVideoplayerUsability;
-
- /**
- *
- */
- TBool iCameraAvailibilityInProgress;
-
- /**
- *
- */
- TBool iKeypadAvailibilityInProgress;
-
- /**
- *
- */
- CAknWaitDialog* iChangeProductModeDialog;
-
- /**
- *
- */
- HBufC* iDialogPrompt;
-
- };
-
-
-
-
--- a/mmsharing/mmshui/inc/musuisendcontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-/*
-* 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 <AknProgressDialog.h>
-
-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
--- a/mmsharing/mmshui/inc/musuisendobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
-* 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: Mus Application's Send Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUISENDOBSERVER_H
-#define MUSUISENDOBSERVER_H
-
-class MMusUiSendObserver
- {
-
- public:
-
- virtual void ManualAddressEntryL( const TDesC& aAddress ) = 0;
-
-
- };
-
-#endif // MUSUISENDOBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuisendview.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUISENDVIEW_H
-#define MUSUISENDVIEW_H
-
-
-#include "musuigeneralview.h" // Base view class
-#include "musuisendobserver.h"
-#include <aknappui.h>
-
-class CMusUiSendViewContainer;
-class CMusUiSendController;
-
-/**
- * The MUS application's share view.
- *
- * @lib musui.exe
- */
-class CMusUiSendView : public CMusUiGeneralView,
- public MMusUiSendObserver
- {
-
-public: // constructors and destructor
-
- /**
- * EPOC default constructor.
- */
- void ConstructL();
-
- /**
- * Destructor.
- */
- virtual ~CMusUiSendView();
-
-
-public: // from MMusUiSendObserver
-
- virtual void ManualAddressEntryL( const TDesC& aAddress );
-
-public: // from CMusUiGeneralView
-
- virtual void DoHandleForegroundEventL( TBool aForeground );
-
-protected: // New functions
-
- virtual CMusUiSendController* SendController() const = 0;
-
- virtual CMusUiSendViewContainer* SendContainer() const = 0;
-
-
-protected: // from CMusUiGeneralView
-
- virtual CMusUiEventController* EventController() const;
-
- virtual CMusUiViewContainer& SharingContainer() const;
-
-
-protected: // from base class CAknView
-
- /**
- * Gets called by the framework when it's activating this view.
- *
- * @param aPrevViewId Previous view id
- * @param aCustomMessageId Custom message's id
- * @param aCustomMessage Custom message
- */
- void DoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage );
-
- /**
- * Gets called by the framework when it's deactivating this view.
- */
- void DoDeactivate();
-
-
-
-
-protected: // data
-
- TBool iPauseSelected;
-
- };
-
-#endif // MUSUISENDVIEW_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuisendviewcontainer.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUISENDVIEWCONTAINER_H
-#define MUSUISENDVIEWCONTAINER_H
-
-
-#include "musuiviewcontainer.h"
-#include "musuilevelindicatorobserver.h"
-
-#include <avkon.hrh>
-
-class MAknsControlContext;
-class CMusUiGeneralView;
-class CAknWaitDialog;
-class CMusUiLevelIndicator;
-class CMusUiSendController;
-
-/**
- *
- *
- */
-class CMusUiSendViewContainer : public CMusUiViewContainer,
- public MMusUiLevelIndicatorObserver
- {
-
-public: // constructors and destructor
-
- /**
- * Destructor.
- */
- ~CMusUiSendViewContainer();
-
-public: // new functions
-
- /**
- * Return pointer to view class. User needs to type cast to
- * appropriate concrete view class.
- *
- * @return handle to view
- */
- CMusUiGeneralView* MusUiView() const;
-
- /**
- * @param Pointer to instance of controller who is notified about changes in
- * indicator. NULL if notifications are to be suppressed.
- */
- void SetController( CMusUiSendController* aController );
-
-
-protected: // constructors
-
- /**
- * Meant to be a base class, no instantiation
- */
- CMusUiSendViewContainer();
-
- /**
- * Symbian second-phase constructor.
- *
- * @param aView Parent view of container.
- * @param aRect Frame rectangle for container.
- * @param aInputParams Packaged data.
- * @param aContainerVisible
- * @param aIndicatorVisible
- */
- void ConstructL( CMusUiGeneralView* aView,
- const TRect& aRect,
- TAknOrientation aIndicatorLayout,
- TBool aContainerVisible = EFalse,
- TBool aIndicatorVisible = EFalse );
-
-
-private: // from base class CCoeControl
-
- /**
- * Gets called by the application framework when drawing is
- * needed.
- *
- * @param aRect The rectangle that needs to be drawn.
- */
- virtual void Draw( const TRect& aRect ) const;
-
- virtual void SizeChanged();
-
- virtual TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
-
-
-private: // MMusUiLevelIndicatorObserver
-
- virtual void SetLevelIndicatorVisibility( TBool aVisible );
-
- virtual void IndicatorLevelChanged( TInt aNewLevel );
-
-
-protected: // data
-
- CMusUiLevelIndicator* iIndicator;
-
-
-private: // data
-
- /** Background skin control context. */
- MAknsControlContext* iBackGround;
-
- /** Handle to the view that owns of this container. Not own. */
- CMusUiGeneralView* iView;
-
- /**
- * Engine DSA area
- */
- TRect iVideoRect;
-
- // Can be NULL
- CMusUiSendController* iSendController;
-
- };
-
-
-#endif // MUSUISENDVIEWCONTAINER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuisharingobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
-* 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: Mus Application's Sharing Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUISHARINGOBSERVER_H
-#define MUSUISHARINGOBSERVER_H
-
-
-#include <e32cmn.h>
-#include <AknProgressDialog.h>
-
-class MMusUiSharingObserver
- {
-
- public:
-
- /*
- * Shows sychronous wait dialog with softkey R_AVKON_SOFTKEYS_CANCEL.
- * @param aPrompt Prompt text shown in dialog
- * @param aTimerInSeconds Timer in seconds when dialog is dismissed
- * automatically. Timer value 0 means that no timer is used.
- * @param aExpirationMessageResourceId is ID of resource indicating
- * the message to be shown if timer expires. Value 0 means that
- * no message is shown.
- * @return EFalse if dialog is dismissed by user pressing cancel
- * or by expiration of timer. ETrue if DismissWaitDialogL
- * is called with parameter ETrue;
- */
- virtual TBool ShowWaitDialogL(
- const TDesC& aPrompt,
- TInt aTimerInSeconds = 0,
- TInt aExpirationMessageResourceId = 0 ) = 0;
-
- /*
- * Dismisses sychronous wait dialog shown by calling ShowWaitDialogL.
- * @param aReturnValue determines return value of function
- * ShowWaitDialogL.
- */
- virtual void DismissWaitDialogL( TBool aReturnValue = ETrue ) = 0;
-
- /**
- * Set call back service of wait dialog
- * @param aCallback A pointer of class MProgressDialogCallback
- * which implemented DialogDismissedL
- */
- virtual void SetWaitDialogCallbackL( MProgressDialogCallback* aCallback ) = 0;
-
- virtual void ShowStatusPaneTitleL() = 0;
-
- /**
- *
- */
- virtual void EnableMiddleSoftkeyL( TInt aResourceId ) = 0;
-
- virtual void ActivateVolumeControlL( TInt aValue, TBool aOnlyIfVisible = EFalse ) = 0;
-
- virtual void HighlightSelectedToolbarItem( TInt aCommand ) = 0;
-
- virtual void ReplaceToolbarCommand( TInt aOldCommand,
- TInt aNewCommand,
- TBool aSetNewCommandFocused ) = 0;
-
- virtual void RefreshAudioRoutingToolbarButton() = 0;
-
- virtual void UpdateSessionTime( const TDesC& aSessionTime ) = 0;
-
- virtual void DismissMenuBar() = 0;
-
- };
-
-#endif // MUSUISHARINGOBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuistartcontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* 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 MUSUISTARTCONTROLLER_H
-#define MUSUISTARTCONTROLLER_H
-
-#include "musmanagercommon.h"
-#include "musunittesting.h"
-
-
-/**
- * Class to read startup parameter from publish & subscribe
- */
-class MusUiStartController
- {
-
-private: // second phase constructors
-
- /**
- * Disable instantiation by declaring C++ constructor private.
- */
- MusUiStartController();
-
-
-public: // static new functions
-
- /**
- * Reads a P&S integer value from the category KCategoryUid
- * @pre P&S property KUseCase has to be defined.
- * @leave One of the system wide error codes, if RProperty::Get()
- * returns an error value.
- * @return Defined use case (TMusUseCase) for launching MUS.
- */
- static MultimediaSharing::TMusUseCase ReadUseCaseL();
-
-
- MUS_UNITTEST( UT_CMusUiStartController; )
-
- };
-
-#endif // MUSUISTARTCONTROLLER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuistatuspanehandler.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
-* 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 MUSUISTATUSPANEHANDLER_H
-#define MUSUISTATUSPANEHANDLER_H
-
-
-#include "musuinavimediadecorator.h"
-
-#include <akntabgrp.h> // Tab group
-#include <akntitle.h> // Title pane
-#include <akncontext.h> // Context pane
-#include <AknIndicatorContainer.h> // Indicator container
-#include <aknEditStateIndicator.h>
-#include <aknnavide.h> // CAknNavigationDecorator
-
-
-class CAknNavigationControlContainer;
-class CAknVolumePopup;
-
-/**
- * Handles status, title and contextpane operations.
- *
- * @lib musui.exe
- */
-class CMusUiStatusPaneHandler : public CBase
- {
-
-public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- */
- static CMusUiStatusPaneHandler* NewL( CEikonEnv& aEikonEnv );
-
- /**
- * Destructor.
- */
- virtual ~CMusUiStatusPaneHandler();
-
-private:
-
- /**
- * C++ default constructor.
- */
- CMusUiStatusPaneHandler( CEikonEnv& aEikonEnv );
-
- /**
- * Symbian 2nd-phase constructor.
- */
- void ConstructL();
-
-
-public: // New functions
-
- /**
- * Sets statuspane icons.
- *
- * @param aIconId ID of icon from .mbg file.
- * @param aIconMaskId ID of icon mask from .mbg file.
- */
- void SetStatusPaneIconsL( TInt32 aIconId, TInt32 aIconMaskId );
-
- /**
- * Sets statuspane icons.
- *
- */
- void SetStatusPaneIconsL( CFbsBitmap* aBitmap );
-
- /**
- * Hides navi-pane decorators and clears text
- */
- void ClearNaviPaneL();
-
- /**
- * Sets title-pane text
- *
- * @param aTitle Title text
- */
- void SetTitleL( const TDesC& aTitle );
-
- /**
- * Sets title-pane text
- *
- */
- void SetTitleFromResourceL( TInt aResourceId );
-
- /**
- * Get the current volume setting.
- *
- * @return Current volume.
- */
- TInt GetVolumeControlValue() const;
-
- /**
- * Activates volume control.
- *
- * @return Volume controller.
- */
- void ActivateVolumeControlL( TInt aVolume, TBool aOnlyIfVisible );
-
- /**
- * Activate media navi pane.
- */
- void ActivateNaviPaneMediaL();
-
- /**
- *
- */
- void ShowNaviPaneIconL( TMusUiNaviMediaDecorator aIcon );
-
- /**
- * Set text in media navi pane.
- *
- * @param aLabel New label of media navi pane control
- */
- void SetLeftLabelL( const TDesC& aLabel );
-
- /**
- * Set text in media navi pane.
- *
- * @param aLabel New label of media navi pane control
- */
- void SetRightLabelL( const TDesC& aLabel );
-
- /**
- * Create media navi pane.
- */
- CAknNavigationDecorator* CreateMediaNaviL();
-
- /**
- * Get Volume popup control pointer
- * @return pointer of VolumePopup control
- */
- CAknVolumePopup* GetVolumePopup() const;
-
-
-private: // data
-
- CEikonEnv& iEikonEnvironment;
-
- // UI controls
- CAknNavigationControlContainer* iNaviPane;
- CAknTitlePane* iTitlePane;
- CAknContextPane* iContextPane;
- CAknNavigationDecorator* iNaviPaneText;
- CAknVolumePopup* iVolumePopup;
- // Navi pane media control
- CAknNavigationDecorator* iMediaControl;
- };
-
-#endif // MUSUISTATUSPANEHANDLER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuiviewcontainer.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#ifndef MUSUIVIEWCONTAINER_H
-#define MUSUIVIEWCONTAINER_H
-
-
-#include <coecntrl.h> // Control base class
-#include <AknProgressDialog.h>
-
-class CAknWaitDialog;
-class CMusUiGeneralView;
-
-/**
- *
- *
- */
-class CMusUiViewContainer : public CCoeControl
- {
-
-public: // constructors and destructor
-
- /**
- * Destructor.
- */
- ~CMusUiViewContainer();
-
-public: // new functions
-
- void CancelWaitTimer();
-
- /**
- * Dismisses the current active wait note, if any.
- */
- void DismissWaitDialogL( TBool aReturnValue = ETrue );
-
- /**
- * Shows sychronous wait dialog with softkey R_AVKON_SOFTKEYS_CANCEL.
- * @param aPrompt Prompt text shown in dialog
- * @param aTimerInSeconds Timer in seconds when dialog is dismissed
- * automatically. Timer value 0 means that no timer is used.
- * @param aExpirationMessageResourceId Message to be loaded and shown if
- * timer expires. Value 0 means that no message is shown.
- * @return ETrue if wait note is dismissed by calling DismissWaitDialogL
- * with param ETrue. EFalse if user pressed cancel, timer expires
- * or if DismissWaitDialogL is called with param EFalse.
- */
- TBool RunWaitDialogL( const TDesC& aPrompt,
- TInt aTimerInSeconds = 0,
- TInt aExpirationMessageResourceId = 0 );
-
- /**
- * Set call back service of wait dialog
- * @param aCallback A pointer of class MProgressDialogCallback
- * which implemented DialogDismissedL
- */
- void SetWaitDialogCallbackL( MProgressDialogCallback* aCallback );
-
- /**
- * Checks whether wait dialog is shown currently.
- * @return ETrue if wait dialog is show.
- */
- TBool WaitDialogShown() const;
-
- /**
- * Request that toolbar visibility is set once currently shown dialog
- * is dismissed.
- * @param aToolbarHandler if NULL is passed, previous request is canceled.
- * Ownership not transferred.
- */
- void RequestToolbarVisibilityOnceDialogDismissed(
- CMusUiGeneralView* aToolbarHandler );
-
-protected: // constructors
-
- /**
- * Meant to be a base class, no instantiation
- */
- CMusUiViewContainer();
-
-private: // new static functions
-
- /**
- * Tick handler, callback function directly called by periodic timer
- *
- * @param aObject Pointer passed to TCallback.
- * @return Value to indicate if callback function should be called again.
- */
- static TInt DoWaitNoteTimeout( TAny* aObject );
-
-
-private: // data
-
- /** Wait dialog to show the invite is sent. Not own. */
- CAknWaitDialog* iWaitDialog;
-
- /** Periodic timer active object. Owns. */
- CPeriodic* iWaitDialogTimer;
-
- /**
- * Indicates if wait note is dismissed using DismissWaitDialogL
- */
- TBool iInvitationWaitDialogDismissed;
-
- /**
- * If iInvitationWaitDialogDismissed is ETrue, this value should be returned
- * from RunWaitDialogL
- */
- TBool iWaitDialogReturnValueWhenDismissed;
-
- /**
- * Resource ID of message to be shown if timer expires
- */
- TInt iExpirationMessageResourceId;
-
- /**
- * Flag indicating whether wait dialog is currently shown.
- */
- TBool iShowingWaitDialog;
-
- /**
- * Not owned.
- */
- CMusUiGeneralView* iToolbarHandler;
-
- };
-
-
-#endif // MUSUISENDVIEWCONTAINER_H
-
-// end of file
--- a/mmsharing/mmshui/inc/musuizoomindicator.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-/*
-* 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: Class for displaying icons in viewfinder view
-*
-*/
-
-
-#ifndef CMUSUIZOOMINDICATORS_H
-#define CMUSUIZOOMINDICATORS_H
-
-// SYSTEM
-#include <AknsControlContext.h>
-#include <aknutils.h>
-#include <coecntrl.h>
-
-class MAknsSkinInstance;
-class CGulIcon;
-class MMusUiZoomIndicatorObserver;
-
-/**
-* Class for displaying icons in viewfinder view
-* @since 2.8
-*/
-class CMusUiZoomIndicator : public CCoeControl
- {
-
-
- public: // Constructors and destructor
-
- /**
- * Symbian OS two-phased constructor.
- * @since 2.8
- * @param aController reference to CCcorController
- */
- static CMusUiZoomIndicator* NewLC(
- TInt aZoomMin,
- TInt aZoomMax,
- MMusUiZoomIndicatorObserver* aObserver );
-
- /**
- * Symbian OS two-phased constructor.
- * @since 2.8
- * @param aController reference to CCcorController
- */
- static CMusUiZoomIndicator* NewL(
- TInt aZoomMin,
- TInt aZoomMax,
- MMusUiZoomIndicatorObserver* aObserver );
-
- /**
- * Destructor.
- */
- ~CMusUiZoomIndicator();
-
- public: // New functions
-
- /**
- *
- * @since 3.2
- */
- void SetZoomLevel( TInt aZoomLevel );
-
- /**
- *
- * @since 3.2
- */
- TInt GetZoomLevel();
-
- /**
- *
- * @since 3.2
- */
- void SetZoomMin( TInt aZoomMin );
-
- /**
- *
- * @since 3.2
- */
- void SetZoomMax( TInt aZoomMax );
-
- /**
- *
- * @since 3.2
- */
- void SetFullRect( const TRect aRect );
-
-
-
- private: // From CCoeConrol
-
- /**
- * Handles the size change events.
- *
- */
- void SizeChanged();
-
- /**
- * Draws the control.
- *
- * @param aRect The region of the control to be redrawn.
- */
- void Draw(const TRect& aRect) const;
-
- TInt CountComponentControls() const;
-
- CCoeControl* ComponentControl( TInt aIndex ) const;
-
-
-
- private: // Constructors and destructor
-
- /**
- * C++ constructor
- * @since 2.8
- * @param aController reference to CCcorController
- */
- CMusUiZoomIndicator( TInt aZoomMin,
- TInt aZoomMax,
- MMusUiZoomIndicatorObserver* aObserver );
-
- /**
- * Symbian 2nd phase constructor.
- * @since 2.8
- */
- void ConstructL();
-
-
- private: // HELPERS
-
- /**
- *
- */
- void DrawIcons( const TRect& aRect );
-
- /**
- *
- */
- void UpdateZoomLayout();
-
- void ConstructImageL( CEikImage* aImage,
- MAknsSkinInstance* aSkin,
- const TAknsItemID& aId,
- TInt aBitmapId,
- TInt aMaskId );
-
- /**
- * Callback for disable zoom indicator.
- * @since 2.8
- * @return KErrNone
- */
- static TInt DisableZoomIndicator( TAny* aThis );
-
- /**
- *
- */
- void DisableTimer();
-
- /**
- *
- */
- void EnableTimer();
-
-
- private: //data
-
- /**
- *
- */
- TRect iParentRect;
-
- /**
- *
- */
- TRect iViewfinderRect;
-
- /**
- *
- */
- TInt iZoomMin;
-
- /**
- *
- */
- TInt iZoomMax;
-
- /**
- *
- */
- TInt iZoomLevel;
-
- /**
- *
- */
- CPeriodic* iDisableZoomTimer; // owned
-
- /**
- *
- */
- TRgb iIconColor;
-
- /**
- *
- */
- CEikImage* iIconElevator;
-
- /**
- *
- */
- CEikImage* iIconMin;
-
- /**
- *
- */
- CEikImage* iIconMax;
-
- /**
- *
- */
- CEikImage* iIconBg;
-
- /**
- *
- */
- TInt iTopMargin;
-
- /**
- *
- */
- TInt iBottomMargin;
-
- /**
- *
- */
- TInt iScaleStep;
-
- /**
- *
- */
- TInt iScaleY;
-
- /**
- *
- */
- TInt iMiddle;
-
- /**
- * NOT OWN!!!
- */
- MMusUiZoomIndicatorObserver* iObserver;
-
- TInt iElevatorWidth;
-
- TInt iElevatorHeight;
-
- TRect iFullRect;
-
-
- };
-
-
-#endif
-
-// End of File
--- a/mmsharing/mmshui/inc/musuizoomindicatorobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* 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: Mus zoom indicator Event Observer Interface
-*
-*/
-
-
-
-#ifndef MUSUIZOOMINDICATOROBSERVER_H
-#define MUSUIZOOMINDICATOROBSERVER_H
-
-
-class MMusUiZoomIndicatorObserver
- {
- public:
-
- virtual void DisableZoomIndicator() = 0;
- };
-
-#endif // MUSUIZOOMINDICATOROBSERVER_H
-
-// end of file
--- a/mmsharing/mmshui/src/musuiactivequerydialog.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-#include "musuiactivequerydialog.h"
-#include "musuiqueryobserver.h"
-#include "muslogger.h"
-#include "musunittesting.h"
-
-#include <AknGlobalConfirmationQuery.h>
-#include <avkon.rsg>
-#include <musui.rsg>
-#include <StringLoader.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiActiveQueryDialog* CMusUiActiveQueryDialog::NewL(
- MMusUiQueryObserver& aObserver )
- {
- CMusUiActiveQueryDialog* self
- = new( ELeave ) CMusUiActiveQueryDialog( aObserver );
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-CMusUiActiveQueryDialog::~CMusUiActiveQueryDialog()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActiveQueryDialog::~CMusUiActiveQueryDialog" );
-
- Cancel();
- delete iGlobalQuery;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActiveQueryDialog::~CMusUiActiveQueryDialog" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiActiveQueryDialog::CMusUiActiveQueryDialog( MMusUiQueryObserver& aObserver )
- : CActive( EPriorityNormal ), iObserver( aObserver )
- {
- CActiveScheduler::Add( this );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActiveQueryDialog::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActiveQueryDialog::ConstructL" );
-
- iGlobalQuery = CAknGlobalConfirmationQuery::NewL();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActiveQueryDialog::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActiveQueryDialog::ShowL( const TDesC& aPrompt )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActiveQueryDialog::ShowL" );
-
- iGlobalQuery->ShowConfirmationQueryL(
- iStatus,
- aPrompt,
- R_AVKON_SOFTKEYS_YES_NO );
- SetActive();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActiveQueryDialog::ShowL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActiveQueryDialog::RunL()
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiActiveQueryDialog::RunL [%d]", iStatus.Int() );
- if ( iStatus == EAknSoftkeyYes )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiActiveQueryDialog::RunL: if" );
- iObserver.QueryAcceptedL( ETrue );
- }
- else // EAknSoftkeyNo
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiActiveQueryDialog::RunL: else" );
- iObserver.QueryAcceptedL( EFalse );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActiveQueryDialog::RunL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActiveQueryDialog::DoCancel()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActiveQueryDialog::DoCancel" );
- iGlobalQuery->CancelConfirmationQuery();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActiveQueryDialog::DoCancel" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiActiveQueryDialog::RunError( TInt aError )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiActiveQueryDialog::RunError [%d]",
- aError );
-
- iObserver.HandleQueryError( aError );
-
- return KErrNone;
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuiactivetimer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-
-#include "musuiactivetimer.h"
-#include "musuiactivetimerobserver.h"
-
-#include "muslogger.h" // debug logging
-
-
-// -----------------------------------------------------------------------------
-// Symbian two-phase constructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiActiveTimer* CMusUiActiveTimer::NewL( MMusUiActiveTimerObserver* aObserver )
- {
- CMusUiActiveTimer* self = new (ELeave) CMusUiActiveTimer( aObserver );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-// Symbian second-phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CMusUiActiveTimer::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActiveTimer::ConstructL" );
-
- User::LeaveIfError( iTimer.CreateLocal() );
- CActiveScheduler::Add( this );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActiveTimer::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// .
-// -----------------------------------------------------------------------------
-//
-void CMusUiActiveTimer::After( TTimeIntervalMicroSeconds32 anInterval )
- {
- // No logging due to huge amount of calls in some use cases
-
- Cancel();
- iTimer.After( iStatus, anInterval );
- SetActive();
-
- // No logging due to huge amount of calls in some use cases
- }
-
-
-// -----------------------------------------------------------------------------
-// C++ constructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiActiveTimer::CMusUiActiveTimer( MMusUiActiveTimerObserver* aObserver ) :
- CActive( EPriorityNormal ),
- iObserver( aObserver )
- {
- // nothing
- }
-
-
-// -----------------------------------------------------------------------------
-// C++ destructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiActiveTimer::~CMusUiActiveTimer()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActiveTimer::~CMusUiActiveTimer" );
-
- Cancel();
- iTimer.Close();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActiveTimer::~CMusUiActiveTimer" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActiveTimer::DoCancel()
- {
- // No logging due to huge amount of calls in some use cases
-
- iTimer.Cancel();
-
- // No logging due to huge amount of calls in some use cases
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActiveTimer::RunL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActiveTimer::RunL" );
- if (iObserver && iStatus == KErrNone)
- {
- iObserver->TimerComplete( this );
- }
- else
- {
- User::LeaveIfError(iStatus.Int());
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActiveTimer::RunL" );
- }
-
-// -------------------------------------------------------------------------
-// If RunL() leaves,It should be handled here.
-// -------------------------------------------------------------------------
-//
-TInt CMusUiActiveTimer::RunError( TInt aError )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActiveTimer::RunError" );
- // Nothing can be done here.
- aError = KErrNone;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActiveTimer::RunError" );
- return aError;
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuiactivitymanger.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-
-#include "musuiactivitymanger.h"
-#include "muslogger.h" // debug logging
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiActivityManager* CMusUiActivityManager::NewL( TInt aTimeout )
-
- {
- CMusUiActivityManager* self =
- new (ELeave) CMusUiActivityManager( aTimeout );
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiActivityManager::~CMusUiActivityManager()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActivityManager::~CMusUiActivityManager" );
- Cancel();
- iTimer.Close();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActivityManager::~CMusUiActivityManager" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiActivityManager::CMusUiActivityManager( TInt aTimeout )
- : CActive( CActive::EPriorityHigh ),
- iTimeout( aTimeout )
-
- {
- CActiveScheduler::Add(this);
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActivityManager::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActivityManager::ConstructL" );
- iTimer.CreateLocal();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActivityManager::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActivityManager::SetTimeout( TInt aTimeout )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiActivityManager::SetTimeout [%d]", aTimeout );
- iTimeout = aTimeout;
- Reset();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActivityManager::SetTimeout" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActivityManager::Start()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActivityManager::Start" );
- if (!IsActive())
- {
- iTimer.Inactivity( iStatus, iTimeout );
- SetActive();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActivityManager::Start" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActivityManager::Reset()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActivityManager::Reset" );
- Cancel();
- Start();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActivityManager::Reset" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActivityManager::DoCancel()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActivityManager::DoCancel" );
- iTimer.Cancel();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActivityManager::DoCancel" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiActivityManager::RunL()
- {
-
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActivityManager::RunL" );
-
- if ( iStatus == KErrNone )
- {
-
- TInt inactivity = User::InactivityTime().Int();
-
- if ( inactivity >= iTimeout )
- {
- User::ResetInactivityTime();
- Reset();
- }
- else
- {
- iTimer.Inactivity( iStatus, iTimeout );
- }
-
- if ( !IsActive() )
- {
- SetActive();
- }
-
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActivityManager::RunL" );
- }
-
-// -------------------------------------------------------------------------
-// If RunL() leaves,It should be handled here.
-// -------------------------------------------------------------------------
-//
-TInt CMusUiActivityManager::RunError( TInt aError )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiActivityManager::RunError" );
- // Nothing can be done here.
- aError = KErrNone;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiActivityManager::RunError" );
- return aError;
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuiapp.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
-* 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: Application class for MUS App.
-*
-*/
-
-
-
-#include "musuiapp.h" // Header file for this class
-#include "musuidocument.h" // Mus UI Document
-#include "musuid.hrh"
-#include "muslogger.h" // debug logging
-
-#include <eikstart.h>
-
-
-// ============================ MEMBER FUNCTIONS ===========================
-
-// Returns application UID
-TUid CMusUiApp::AppDllUid() const
- {
- const TUid KUidRetVal = { KMusUiUid };
- return KUidRetVal;
- }
-
-// Creates CMusUiDocument object
-CApaDocument* CMusUiApp::CreateDocumentL()
- {
- return CMusUiDocument::NewL( *this );
- }
-
-
-// ==================== OTHER EXPORTED FUNCTIONS ===========================
-
-// Constructs and returns an application object
-EXPORT_C CApaApplication* NewApplication()
- {
- MUS_LOG( "mus: [MUSUI ] -------------------------------------------------" );
- return new CMusUiApp;
- }
-
-// Main function of the application executable
-GLDEF_C TInt E32Main()
- {
- return EikStart::RunApplication( NewApplication );
- }
-
-// end of file
--- a/mmsharing/mmshui/src/musuiappui.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,777 +0,0 @@
-/*
-* 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: Application's UI class.
-*
-*/
-
-
-
-#include "musuiappui.h"
-#include "musuilivesharingview.h"
-#include "musuiclipsharingview.h"
-#include "musuireceiveview.h"
-#include "musuistatuspanehandler.h"
-#include "musuistartcontroller.h"
-#include "musuiactivequerydialog.h"
-#include "musuidefinitions.h"
-#include "mussettings.h"
-#include "mussettingskeys.h"
-#include "musmanagercommon.h"
-#include "musuiresourcehandler.h"
-#include "musui.hrh"
-#include "musuid.hrh"
-#include "muslogger.h" // debug logging
-#include <musui.rsg>
-#include <musui.mbg>
-
-#include <csxhelp/msh.hlp.hrh>
-#include <avkon.hrh>
-#include <AknsUtils.h>
-#include <remconcoreapitarget.h>
-#include <remconinterfaceselector.h>
-#include <akntoolbar.h>
-#include <AknVolumePopup.h>
-
-using namespace MusSettingsKeys;
-
-// -----------------------------------------------------------------------------
-// Symbian second-phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::ConstructL" );
- BaseConstructL( EAknEnableSkin | EAppOrientationAutomatic | EAknEnableMSK
- | EAknSingleClickCompatible );
-
- iResourceHandler = CMusUiResourceHandler::NewL( *this );
- MultimediaSharing::TMusUseCase usecase = MusUiStartController::ReadUseCaseL();
- iResourceHandler->CheckInitialOrientationL(usecase);
-
- iForeground = ETrue;
-
- // View for Live Sharing:
- CMusUiLiveSharingView* liveSharingView =
- new ( ELeave ) CMusUiLiveSharingView;
- CleanupStack::PushL( liveSharingView );
- liveSharingView->ConstructL();
- AddViewL( liveSharingView ); // transfer ownership to CAknViewAppUi
- CleanupStack::Pop( liveSharingView );
-
- // View for Clip Sharing:
- CMusUiClipSharingView* clipSharingView =
- new ( ELeave ) CMusUiClipSharingView;
- CleanupStack::PushL( clipSharingView );
- clipSharingView->ConstructL();
- AddViewL( clipSharingView ); // transfer ownership to CAknViewAppUi
- CleanupStack::Pop( clipSharingView );
-
- // View for Receiving:
- CMusUiReceiveView* receiveView = new ( ELeave ) CMusUiReceiveView;
- CleanupStack::PushL( receiveView );
- receiveView->ConstructL();
- AddViewL( receiveView ); // transfer ownership to CAknViewAppUi
- CleanupStack::Pop( receiveView );
-
- FindWindowGroupIdentifiersL();
-
- iStatusPaneHandler = CMusUiStatusPaneHandler::NewL( *iEikonEnv );
- // The application icon:
- iStatusPaneHandler->SetStatusPaneIconsL(
- EMbmMusuiQgn_menu_mus_app_cxt,
- EMbmMusuiQgn_menu_mus_app_cxt_mask );
-
- iStatusPaneHandler->GetVolumePopup()->SetObserver(this);
-
- AknsUtils::InitSkinSupportL();
- AknsUtils::SetAvkonSkinEnabledL( ETrue );
-
- // Check use case and set default view
- switch ( usecase )
- {
- case MultimediaSharing::EMusLiveVideo:
- ActivateLocalViewL( liveSharingView->Id() );
- break;
- case MultimediaSharing::EMusClipVideo:
- ActivateLocalViewL( clipSharingView->Id() );
- break;
- case MultimediaSharing::EMusReceive:
- ActivateLocalViewL( receiveView->Id() );
- break;
- default:
- User::Leave( KErrNotSupported );
- break;
- }
-
- iInterfaceSelector = CRemConInterfaceSelector::NewL();
- iCoreTarget = CRemConCoreApiTarget::NewL(*iInterfaceSelector, *this);
- iInterfaceSelector->OpenTargetL();
-
- // check if operator specific functionality is needed
- iOperatorSpecificFunctionality =
- ( MultimediaSharingSettings::OperatorVariantSettingL() ==
- EOperatorSpecific );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiAppUi::~CMusUiAppUi()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::~CMusUiAppUi" );
- delete iResourceHandler;
- delete iConfirmationQuery;
- delete iStatusPaneHandler;
- delete iInterfaceSelector;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::~CMusUiAppUi" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Fetches a handle to status pane handler
-// -----------------------------------------------------------------------------
-//
-CMusUiStatusPaneHandler* CMusUiAppUi::MusStatusPane()
- {
- return iStatusPaneHandler;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiAppUi::ExitValue()
- {
- return iExit;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::HandleWsEventL" );
-
- const TInt type = aEvent.Type();
-
- // Avoiding unknown failures
- if( !iView )
- {
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::HandleWsEventL, view is NULL" );
- return;
- }
-
- if( type == EEventKeyUp )
- {
- static_cast<CMusUiGeneralView*>
- ( iView )->HandleKeyUpEvent( iLastKeyCode );
- }
-
- if ( ( type == EEventKey ) && iView->Toolbar()->IsShown() && !MUS_NO_TOOLBAR )
- {
- const TKeyEvent* keyEvent = aEvent.Key();
-
- iLastKeyCode = keyEvent->iCode;
-
- MUS_LOG1( "mus: [MUSUI ] CMusUiAppUi::HandleWsEventL iCode: %d",
- keyEvent->iCode );
- CMusUiGeneralView* activatedView =
- static_cast<CMusUiGeneralView*>( iView );
- activatedView->HandleToolbarCommandL( keyEvent->iCode );
- }
-
- if ( type == KAknFullOrPartialForegroundLost ||
- type == EEventFocusLost ||
- type == KAknFullOrPartialForegroundGained ||
- type == EEventFocusGained )
- {
- DoHandleForegroundEventL( type );
- }
-
- // All events are sent to base class.
- CAknAppUi::HandleWsEventL( aEvent, aDestination );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::HandleWsEventL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::HandleForegroundEventL( TBool aForeground )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::HandleForegroundEventL" );
-
- CAknViewAppUi::HandleForegroundEventL( aForeground );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::HandleForegroundEventL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::MrccatoCommand( TRemConCoreApiOperationId aOperationId,
- TRemConCoreApiButtonAction aButtonAct )
- {
- MUS_LOG2( "mus: [MUSUI ] -> CMusUiAppUi::MrccatoCommand: %d, %d",
- aOperationId,
- aButtonAct );
-
- switch ( aOperationId )
- {
- case ERemConCoreApiVolumeUp: // Volume Up
- {
- switch ( aButtonAct )
- {
- case ERemConCoreApiButtonClick:
- {
- // volume up clicked
- CMusUiGeneralView* activatedView =
- static_cast<CMusUiGeneralView*>( iView );
- if( MUS_NO_TOOLBAR )
- {
- TRAP_IGNORE( activatedView->HandleCommandL(
- EMusuiCmdViewVolumeUp ) )
- }
- else
- {
- TRAP_IGNORE( activatedView->HandleToolbarCommandL(
- EMusuiCmdViewVolumeUp ) )
- }
- break;
- }
- default:
- // Never hits this
- break;
- }
- break;
- }
- case ERemConCoreApiVolumeDown: // Volume Down
- {
- switch ( aButtonAct )
- {
- case ERemConCoreApiButtonClick:
- {
- // volume down clicked
- CMusUiGeneralView* activatedView =
- static_cast<CMusUiGeneralView*>( iView );
- if( MUS_NO_TOOLBAR )
- {
- TRAP_IGNORE( activatedView->HandleCommandL(
- EMusuiCmdViewVolumeDown ) )
- }
- else
- {
- TRAP_IGNORE( activatedView->HandleToolbarCommandL(
- EMusuiCmdViewVolumeDown ) )
- }
- break;
- }
- default:
- // Never hits this
- break;
- }
- break;
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::MrccatoCommand" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::QueryAcceptedL( TBool aAccepted )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::QueryAccepted" );
- CMusUiGeneralView* activatedView = static_cast<CMusUiGeneralView*>( iView );
- // TODO: If next call leaves, it causes error handling to be done with
- // previously deleted query object. This leads to crash.
- activatedView->AsyncQueryDialogAcceptedL( aAccepted );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::QueryAccepted" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiAppUi::HandleQueryError( TInt aError )
- {
- HandleError( aError ); // Forward to general error handler
- return KErrNone;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::ActivateLocalMusViewL( TUid aViewId )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::ActivateLocalMusViewL" );
- ActivateLocalViewL( aViewId );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::ActivateLocalMusViewL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::ActivateLocalMusViewL( TUid aViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::ActivateLocalMusViewL" );
- ActivateLocalViewL( aViewId, aCustomMessageId, aCustomMessage );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::ActivateLocalMusViewL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::ShowAsyncConfirmationQueryDialogL( const TDesC& aPrompt )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::ShowAsyncConfirmationQueryDialogL" );
- if ( !iConfirmationQuery )
- {
- iConfirmationQuery = CMusUiActiveQueryDialog::NewL( *this );
- }
- iConfirmationQuery->ShowL( aPrompt );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::ShowAsyncConfirmationQueryDialogL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::SetToolbarVisibility( TBool aVisible )
- {
- CMusUiGeneralView* activatedView = static_cast<CMusUiGeneralView*>( iView );
- if ( activatedView )
- {
- activatedView->SetToolbarVisibility( aVisible );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::ShowNaviPaneIconL( TMusUiNaviMediaDecorator aIcon )
- {
- MusStatusPane()->ShowNaviPaneIconL( aIcon );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CEikonEnv* CMusUiAppUi::EikonEnv( ) const
- {
- return iEikonEnv;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::TerminateCall()
- {
- // TODO: Remove hard-coded values!
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::TerminateCall" );
- RWsSession sess = iEikonEnv->WsSession();
-
- TApaTaskList taskList(sess);
-
- TApaTask phoneTask = taskList.FindApp(TUid::Uid(0x100058B3));
- MUS_LOG( "mus: [MUSUI ] phoneTask" );
- TInt id = 0;
- if (phoneTask.Exists())
- id = phoneTask.WgId();
- MUS_LOG1( "PhoneTask ID: %d",id );
- TWsEvent event;
-
- MUS_LOG( "mus: [MUSUI ] CMusUiAppUi::TerminateCall: 1" );
- MUS_LOG( "mus: [MUSUI ] CMusUiAppUi::EEventKeyDown" );
- event.SetType( EEventKeyDown );
- event.SetTimeNow();
- event.Key()->iCode = 0;
- event.Key()->iModifiers = EModifierNumLock;
- event.Key()->iRepeats = 0;
- event.Key()->iScanCode = EStdKeyNo;
- sess.SendEventToWindowGroup( id, event );
-
- MUS_LOG( "mus: [MUSUI ] CMusUiAppUi::TerminateCall: 2" );
- MUS_LOG( "mus: [MUSUI ] CMusUiAppUi::EEventKey" );
- event.SetType( EEventKey );
- event.SetTimeNow();
- event.Key()->iCode = EKeyNo;
- event.Key()->iModifiers = 32769;
- event.Key()->iRepeats = 0;
- event.Key()->iScanCode = EStdKeyNo;
- sess.SendEventToWindowGroup( id, event );
-
- MUS_LOG( "mus: [MUSUI ] CMusUiAppUi::TerminateCall: 3" );
- MUS_LOG( "mus: [MUSUI ] CMusUiAppUi::EEventKeyUp" );
- event.SetType( EEventKeyUp );
- event.SetTimeNow();
- event.Key()->iCode = 0;
- event.Key()->iModifiers = 32769;
- event.Key()->iRepeats = 0;
- event.Key()->iScanCode = EStdKeyNo;
- sess.SendEventToWindowGroup( id, event );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::TerminateCall" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Return current app orientation.
-// -----------------------------------------------------------------------------
-//
-CAknAppUiBase::TAppUiOrientation CMusUiAppUi::AppOrientation() const
- {
- return ( ApplicationRect().Width() > ApplicationRect().Height() ) ?
- CAknAppUiBase::EAppUiOrientationLandscape :
- CAknAppUiBase::EAppUiOrientationPortrait;
- }
-
-
-// -----------------------------------------------------------------------------
-// Switch the active view's orientation, if it's in the foreground.
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::SwitchOrientationL( TAppUiOrientation aAppOrientation )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::SwitchOrientationL" );
- SetOrientationL( aAppOrientation );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::SwitchOrientationL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::HandleError( const TInt aReason )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::HandleError" );
- if ( aReason != KErrNone )
- {
- HandleExit();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::HandleError" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::HandleExit()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::HandleExit" );
- if ( !iExit )
- {
- iExit = ETrue;
- PrepareToExit();
-
- RemoveView( KMusUidLiveSharingView );
- RemoveView( KMusUidClipSharingView );
- RemoveView( KMusUidReceivingView );
-
- User::Exit( KErrNone );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::HandleExit" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiAppUi::OrientationCanBeChanged() const
- {
- return CAknAppUiBase::OrientationCanBeChanged();
- }
-
-
-// -----------------------------------------------------------------------------
-// From base class CEikAppUi. Handles a change to the application's
-// resources which are shared across the environment.
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::HandleResourceChangeL( TInt aResourceChangeType )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::HandleResourceChangeL" );
- CAknAppUi::HandleResourceChangeL( aResourceChangeType );
-
- if ( aResourceChangeType == KEikDynamicLayoutVariantSwitch && iView )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiAppUi::HandleResourceChangeL:\
- aResourceChangeType == KEikDynamicLayoutVariantSwitch" );
-
- iView->Toolbar()->HandleResourceChange( aResourceChangeType );
-
- CMusUiGeneralView* activatedView =
- static_cast<CMusUiGeneralView*>( iView );
- if ( !IsForeground() )
- {
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::HandleResourceChangeL" );
- return;
- }
-
- if ( activatedView )
- {
- activatedView->RefreshView();
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::HandleResourceChangeL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// takes care of key event handling
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CMusUiAppUi::HandleKeyEventL( const TKeyEvent& aKeyEvent,
- TEventCode /*aType*/ )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiAppUi::HandleKeyEventL: %d",
- aKeyEvent.iScanCode );
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiAppUi::HandleKeyEventL: %d",
- aKeyEvent.iCode );
-
- if ( aKeyEvent.iScanCode == EStdKeyDevice1 /*165*/ ) // Cancel in Options
- {
- SetToolbarVisibility( ETrue );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::HandleKeyEventL" );
- return EKeyWasNotConsumed;
- }
-
-
-// -----------------------------------------------------------------------------
-// takes care of command handling
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::HandleCommandL( TInt aCommand )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiAppUi::HandleCommandL [%d]",
- aCommand );
- switch ( aCommand )
- {
- case EMusuiGenCmdExit:
- case EAknSoftkeyExit:
- case EEikCmdExit:
- {
- CMusUiGeneralView* activatedView =
- static_cast<CMusUiGeneralView*>( iView );
- activatedView->HandleCommandL( EAknSoftkeyExit );
-
- break;
- }
- default:
- break;
- }
- MUS_LOG( "mus: [MUSUI ] <-> CMusUiAppUi::HandleCommandL" );
- }
-
-// -----------------------------------------------------------------------------
-// CMusUiAppUi::GetVolumeFromUi()
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiAppUi::GetUiVolumeValue()
- {
- return iStatusPaneHandler->GetVolumeControlValue();
- }
-
-// -----------------------------------------------------------------------------
-// CMusUiAppUi::ResourceHandler()
-// -----------------------------------------------------------------------------
-//
-CMusUiResourceHandler* CMusUiAppUi::ResourceHandler()
- {
- return iResourceHandler;
- }
-
-// -----------------------------------------------------------------------------
-// CMusUiAppUi::AppHelpContextL()
-// -----------------------------------------------------------------------------
-//
-CArrayFix<TCoeHelpContext>* CMusUiAppUi::HelpContextL() const
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::HelpContextL" );
- CArrayFix<TCoeHelpContext>* contexts =
- new (ELeave) CArrayFixFlat<TCoeHelpContext>(1);
- CleanupStack::PushL(contexts);
-
- TCoeHelpContext help;
- help.iMajor.iUid = KMusUiUid;
-
- if ( iView->Id() == KMusUidLiveSharingView )
- {
- help.iContext = KMSH_HLP_LIVE;
- }
- else if ( iView->Id() == KMusUidClipSharingView )
- {
- help.iContext = KMSH_HLP_CLIP;
- }
- else if ( iView->Id() == KMusUidReceivingView )
- {
- help.iContext = KMSH_HLP_RECEIVE;
- }
-
- contexts->AppendL(help);
- CleanupStack::Pop(); // contexts
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::HelpContextL" );
- return contexts;
- }
-
-
-// -----------------------------------------------------------------------------
-// We might get PartialFocusLost also for some notes and
-// overally items that are somehow overlapping screen instead of
-// FocusLost. In those cases we should not put app to background.
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::DoHandleForegroundEventL( TInt aEventType )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiAppUi::DoHandleForegroundEventL, event:%d",
- aEventType );
-
- __ASSERT_ALWAYS( aEventType == KAknFullOrPartialForegroundGained ||
- aEventType == KAknFullOrPartialForegroundLost ||
- aEventType == EEventFocusLost ||
- aEventType == EEventFocusGained, User::Leave( KErrArgument ) );
-
- TBool handleEvent( EFalse );
- TBool foreground(
- aEventType == KAknFullOrPartialForegroundGained ||
- aEventType == EEventFocusGained );
-
- const TInt windowGroupId =
- iCoeEnv->WsSession().GetFocusWindowGroup();
-
- MUS_LOG1( "mus: [MUSUI ] focus wgid:%d", windowGroupId );
-
- if ( foreground )
- {
- iCoeEnv->RootWin().EnableFocusChangeEvents();
- handleEvent = ETrue;
- }
- else if ( ( windowGroupId != iThisApplicationWgId ) &&
- ( windowGroupId != iEikonServerWgId ) &&
- ( windowGroupId != iAknNfyServerWgId ) )
- {
- iCoeEnv->RootWin().DisableFocusChangeEvents();
- handleEvent = ETrue;
- }
- else
- {
- // NOP
- }
-
- if ( handleEvent && iView && foreground != iForeground )
- {
- iForeground = foreground;
-
- CMusUiGeneralView* activatedView =
- static_cast<CMusUiGeneralView*>( iView );
-
- activatedView->DoHandleForegroundEventL( foreground );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::DoHandlerForegroundEventL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::FindWindowGroupIdentifiersL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiAppUi::FindWindowGroupIdentifiersL" );
-
- // Name of the EIKON server window group.
- _LIT( KMusUiEikonServer, "EikonServer" );
-
- // Name of the AknCapServer window group.
- _LIT( KMusUiAknCapServer, "*akncapserver*" );
-
- // Name of the AknNotifierServer window group.
- _LIT( KMusUiAknNotifierServer, "*aknnfysrv*" );
-
- CEikonEnv& eikEnv = *( iEikonEnv );
- eikEnv.SetSystem( ETrue );
- eikEnv.WsSession().ComputeMode( RWsSession::EPriorityControlDisabled );
-
- iThisApplicationWgId = eikEnv.RootWin().Identifier();
- MUS_LOG1( "mus: [MUSUI ] own wgid:%d", iThisApplicationWgId );
- iEikonServerWgId =
- eikEnv.WsSession().FindWindowGroupIdentifier( 0, KMusUiEikonServer );
- MUS_LOG1( "mus: [MUSUI ] eikonserv wgid:%d", iEikonServerWgId );
- iAknCapServerWgId =
- eikEnv.WsSession().FindWindowGroupIdentifier( 0, KMusUiAknCapServer );
- MUS_LOG1( "mus: [MUSUI ] akncapserv wgid:%d", iAknCapServerWgId );
- iAknNfyServerWgId =
- eikEnv.WsSession().FindWindowGroupIdentifier( 0,
- KMusUiAknNotifierServer );
- MUS_LOG1( "mus: [MUSUI ] aknnotifserv wgid:%d", iAknNfyServerWgId );
-
- eikEnv.RootWin().EnableFocusChangeEvents();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiAppUi::FindWindowGroupIdentifiersL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiAppUi::HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType)
- {
- CAknVolumePopup* popup = iStatusPaneHandler->GetVolumePopup();
- if ( popup && popup->IsVisible() && (popup == aControl) &&
- (aEventType == MCoeControlObserver::EEventStateChanged) )
- {
- MUS_LOG1( "mus: [MUSUI ] CMusUiAppUi::HandleControlEventL(): volume[%d]",
- popup->Value() );
- CMusUiGeneralView* activatedView =
- static_cast<CMusUiGeneralView*>( iView );
- activatedView->HandleCommandL( EMusuiCmdViewVolumeChanged );
- }
-
- }
-// end of file
--- a/mmsharing/mmshui/src/musuibackgroundviewcontainer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-#include "musuibackgroundviewcontainer.h"
-#include "musuiappui.h"
-#include "muslogger.h" // debug logging
-
-#include <AknsControlContext.h>
-#include <AknsBasicBackgroundControlContext.h>
-#include <AknsDrawUtils.h>
-#include <StringLoader.h> // StringLoader
-#include <aknnotewrappers.h>
-#include <AknWaitDialog.h>
-#include <AknGlobalNote.h>
-#include <AknDef.h>
-
-
-// Hidden window group. magic number 32 hiddens window
-_LIT( KMusUiBackgroundWindowGroupName,"32MusUiBackground" );
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiBackgroundViewContainer* CMusUiBackgroundViewContainer::NewL(
- const TRect& aRect,
- TInt aOrdinalPosition )
- {
- CMusUiBackgroundViewContainer* self =
- new( ELeave )CMusUiBackgroundViewContainer( aOrdinalPosition );
- CleanupStack::PushL( self );
- self->ConstructL( aRect );
- CleanupStack::Pop( self );
- return self;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiBackgroundViewContainer::CMusUiBackgroundViewContainer(
- TInt aOrdinalPosition ) : iOrdinalPosition( aOrdinalPosition )
- {
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiBackgroundViewContainer::ConstructL( const TRect& aRect )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBackgroundViewContainer::ConstructL()" );
-
- RWindowGroup iMyWindowGroup = RWindowGroup( iCoeEnv->WsSession() );
- User::LeaveIfError( iMyWindowGroup.Construct( ( TUint32 )&iMyWindowGroup) );
-
- iMyWindowGroup.SetName( KMusUiBackgroundWindowGroupName );
- iMyWindowGroup.SetOrdinalPosition( iOrdinalPosition, ECoeWinPriorityNormal );
- iMyWindowGroup.EnableReceiptOfFocus( EFalse );
- iMyWindowGroup.AutoForeground( EFalse );
- iMyWindowGroup.SetNonFading( ETrue );
-
- CreateWindowL(&iMyWindowGroup);
-
- iGroupIdentifier = iMyWindowGroup.Identifier();
-
- iBackGround = CAknsBasicBackgroundControlContext::NewL(
- KAknsIIDQsnBgAreaMain,
- aRect,
- EFalse );
-
- SetRect( aRect );
-
- ActivateL();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBackgroundViewContainer::ConstructL()" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiBackgroundViewContainer::~CMusUiBackgroundViewContainer()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBackgroundViewContainer::~CMusUiBackgroundViewContainer()" );
- delete iBackGround;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBackgroundViewContainer::~CMusUiBackgroundViewContainer()" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiBackgroundViewContainer::RefreshView()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBackgroundViewContainer::RefreshView()" );
-
- DrawNow();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBackgroundViewContainer::RefreshView()" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Set's this group right ordinal position
-// -----------------------------------------------------------------------------
-//
-void CMusUiBackgroundViewContainer::SetOrdinalPosition()
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiBackgroundViewContainer::SetOrdinalPosition(): %d",
- iOrdinalPosition );
- MakeVisible( ETrue );
-
- iCoeEnv->WsSession().SetWindowGroupOrdinalPosition( iGroupIdentifier,
- iOrdinalPosition );
-
- DrawNow();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBackgroundViewContainer::SetOrdinalPosition()" );
- }
-
-// -----------------------------------------------------------------------------
-// Set's this group right ordinal position
-// -----------------------------------------------------------------------------
-//
-void CMusUiBackgroundViewContainer::SetOrdinalPosition( TInt aOrdianlPosition)
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiBackgroundViewContainer::SetOrdinalPosition(): %d",
- aOrdianlPosition );
- MakeVisible( ETrue );
-
- iCoeEnv->WsSession().SetWindowGroupOrdinalPosition( iGroupIdentifier,
- aOrdianlPosition );
-
- DrawNow();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBackgroundViewContainer::SetOrdinalPosition()" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiBackgroundViewContainer::UpdateOrdinalPositionValue( TBool aUp )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiBackgroundViewContainer::UpdateOrdinalPositionValue(): %d",
- aUp );
- if ( aUp )
- {
- ++iOrdinalPosition;
- }
- else
- {
- --iOrdinalPosition;
- }
- SetOrdinalPosition();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBackgroundViewContainer::UpdateOrdinalPositionValue()" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework when the view size is changed
-// -----------------------------------------------------------------------------
-//
-void CMusUiBackgroundViewContainer::SizeChanged()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBackgroundViewContainer::SizeChanged()" );
- TRect parentRect(Rect());
- if (iBackGround)
- {
- (static_cast<CAknsBasicBackgroundControlContext*>(iBackGround))->SetRect(parentRect);
- }
-
- SetOrdinalPosition();
- //MakeVisible( EFalse );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBackgroundViewContainer::SizeChanged()" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework when to retrieve the no. of controls.
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiBackgroundViewContainer::CountComponentControls() const
- {
- return 0; // return nbr of controls inside this container
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to retrieve the control specified by index.
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CMusUiBackgroundViewContainer::ComponentControl( TInt /*aIndex*/ ) const
- {
- return NULL;
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to redraw the screen area.
-// -----------------------------------------------------------------------------
-//
-void CMusUiBackgroundViewContainer::Draw( const TRect& aRect ) const
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBackgroundViewContainer::Draw()" );
-
- CWindowGc& gc = SystemGc();
-
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
- if(!AknsDrawUtils::Background( skin, cc,this,gc,aRect,KAknsDrawParamDefault ))
- {
- MUS_LOG( "mus: [MUSUI ] Skin not valid or not found" );
- gc.SetBrushColor( iEikonEnv->ControlColor( EColorWindowBackground, *this ) );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.Clear( aRect );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBackgroundViewContainer::Draw()" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiBackgroundViewContainer::HandleControlEventL(
- CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
- {
- // TODO: Add your control event handler code here
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to act on key events if required.
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CMusUiBackgroundViewContainer::OfferKeyEventL(
- const TKeyEvent& /*aKeyEvent*/,
- TEventCode /*aType*/ )
- {
- return EKeyWasNotConsumed;
- }
-
-
-// -----------------------------------------------------------------------------
-// Supply the Mob Object for background skin drawing
-// -----------------------------------------------------------------------------
-//
-TTypeUid::Ptr CMusUiBackgroundViewContainer::MopSupplyObject( TTypeUid aId )
- {
- if (aId.iUid == MAknsControlContext::ETypeId && iBackGround )
- {
- return MAknsControlContext::SupplyMopObject( aId, iBackGround );
- }
- return CCoeControl::MopSupplyObject( aId );
- }
-
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuibitmapdecoder.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-
-#include "musuibitmapdecoder.h"
-#include "musuibitmapdecoderobserver.h"
-#include "muslogger.h" // debug logging
-
-#include <imageconversion.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiBitmapDecoder::~CMusUiBitmapDecoder()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBitmapDecoder::~CMusUiBitmapDecoder" );
- Cancel();
- iFs.Close();
- delete iData;
- delete iDecoder;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBitmapDecoder::~CMusUiBitmapDecoder" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Symbian two-phase constructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiBitmapDecoder* CMusUiBitmapDecoder::NewL(
- MMusUiBitmapDecoderObserver& aObserver )
- {
- CMusUiBitmapDecoder* self = new (ELeave) CMusUiBitmapDecoder( aObserver );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiBitmapDecoder::CMusUiBitmapDecoder(
- MMusUiBitmapDecoderObserver& aObserver ) :
- CActive( EPriorityNormal ),
- iObserver( aObserver )
- {
- // nothing
- }
-
-
-// -----------------------------------------------------------------------------
-// Symbian second-phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CMusUiBitmapDecoder::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBitmapDecoder::ConstructL" );
- User::LeaveIfError( iFs.Connect() );
- //delete iData;
- iData = NULL;
- //delete iDecoder;
- iDecoder = NULL;
- CActiveScheduler::Add( this );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBitmapDecoder::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiBitmapDecoder::ConvertL( HBufC8* aData, CFbsBitmap* aBitmap )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBitmapDecoder::ConvertL" );
-
- if ( IsActive() )
- {
- Cancel();
- }
-
- iData = aData->AllocL();
- iBitmap = aBitmap;
-
- delete iDecoder;
- iDecoder = NULL;
- iDecoder = CImageDecoder::DataNewL( iFs, *iData );
-
- iBitmap->Create( iDecoder->FrameInfo().iFrameCoordsInPixels.Size(),
- iDecoder->FrameInfo().iFrameDisplayMode );
-
- iDecoder->Convert( &iStatus, *iBitmap, 0 );
- SetActive();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBitmapDecoder::ConvertL" );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiBitmapDecoder::DoCancel()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBitmapDecoder::DoCancel" );
- iDecoder->Cancel();
- Cancel();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBitmapDecoder::DoCancel" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiBitmapDecoder::RunL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBitmapDecoder::RunL" );
- if (iStatus == KErrNone)
- {
- iObserver.UpdateBitmap( iBitmap );
- }
- else
- {
- MUS_LOG1( "mus: [MUSUI ] CMusUiBitmapDecoder::RunL: iStatus: [%d]",
- iStatus.Int() );
- User::Leave( iStatus.Int() );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBitmapDecoder::RunL" );
- }
-
-// -------------------------------------------------------------------------
-// If RunL() leaves,It should be handled here.
-// -------------------------------------------------------------------------
-//
-TInt CMusUiBitmapDecoder::RunError( TInt aError )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiBitmapDecoder::RunError" );
- // Nothing can be done here.
- aError = KErrNone;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiBitmapDecoder::RunError" );
- return aError;
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuicallbackservice.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Asynchronous callback service provider.
-*
-*/
-
-
-
-#include "musuicallbackservice.h"
-#include "musuicallbackobserver.h" // callback observer interface
-#include "muslogger.h"
-
-
-// -----------------------------------------------------------------------------
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiCallbackService* CMusUiCallbackService::NewL(
- MMusUiCallbackObserver& aCallbackObserver )
- {
- CMusUiCallbackService* self =
- new ( ELeave ) CMusUiCallbackService(
- aCallbackObserver );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiCallbackService::~CMusUiCallbackService()
- {
- // Cancel active object
- MUS_LOG( "mus: [MUSUI ] -> CMusUiCallbackService::~CMusUiCallbackService" );
- Cancel();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiCallbackService::~CMusUiCallbackService" );
- }
-
-
-// -----------------------------------------------------------------------------
-// C++ default constructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiCallbackService::CMusUiCallbackService(
- MMusUiCallbackObserver& aCallbackObserver )
- : CActive( EPriorityStandard ),
- iCallbackObserver( aCallbackObserver ),
- iEventId( EMusUiAsyncUninitialized )
- {
- CActiveScheduler::Add( this );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiCallbackService::ConstructL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// Buffer a request to trigger an event.
-// -----------------------------------------------------------------------------
-//
-void CMusUiCallbackService::AsyncEventL( TMusUiAsyncEvent aEventId )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiCallbackService::AsyncEventL" );
- iEventId = aEventId;
- Activate();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiCallbackService::AsyncEventL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Cancels the active request.
-// -----------------------------------------------------------------------------
-//
-void CMusUiCallbackService::Cancel()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiCallbackService::Cancel" );
- CActive::Cancel();
- iStatus = NULL;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiCallbackService::Cancel" );
- }
-
-// -----------------------------------------------------------------------------
-// Check what event is currently pending.
-// -----------------------------------------------------------------------------
-//
-TMusUiAsyncEvent CMusUiCallbackService::CurrentEvent() const
- {
- if ( IsActive() )
- {
- return iEventId;
- }
- return EMusUiAsyncUninitialized;
- }
-
-// -----------------------------------------------------------------------------
-// From CActive. Called when a request completes.
-// -----------------------------------------------------------------------------
-//
-void CMusUiCallbackService::RunL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiCallbackService::RunL" );
- if ( iEventId )
- {
- // Copy the id from member to local so the member can be cleared.
- TMusUiAsyncEvent eventId = iEventId;
- iEventId = EMusUiAsyncUninitialized;
- // Issue the call to the observer interface.
- iCallbackObserver.HandleAsyncEventL( eventId );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiCallbackService::RunL returns" );
- return;
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiCallbackService::RunL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From CActive. Called when a leave occurres in RunL.
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiCallbackService::RunError( TInt aError )
- {
- MUS_LOG1( "mus: [MUSUI ] CMusUiCallbackService::RunError [%d]",
- aError );
- iCallbackObserver.HandleAsyncError( aError );
-
- return KErrNone;
- }
-
-
-// -----------------------------------------------------------------------------
-// From CActive. Called when a request is cancelled.
-// -----------------------------------------------------------------------------
-//
-void CMusUiCallbackService::DoCancel()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiCallbackService::DoCancel" );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiCallbackService::DoCancel" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Activate the object.
-// -----------------------------------------------------------------------------
-//
-void CMusUiCallbackService::Activate()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiCallbackService::Activate" );
- // Call SetActive() so RunL() will be called by the active scheduler
- if ( IsActive() )
- {
- Cancel();
- }
- SetPriority( EPriorityHigh );
- SetActive();
- iStatus = KRequestPending;
- TRequestStatus* stat = &iStatus;
- User::RequestComplete( stat, KErrNone );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiCallbackService::Activate" );
- }
-
-
--- a/mmsharing/mmshui/src/musuiclipsharingcontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1230 +0,0 @@
-/*
-* 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: Application's UI class.
-*
-*/
-
-
-
-#include "musuiclipsharingcontroller.h"
-#include "musuicallbackservice.h"
-#include "musuieventobserver.h"
-#include "musuisharingobserver.h"
-#include "musuisendobserver.h"
-#include "musuiclipsharingobserver.h"
-#include "musuidialogutil.h"
-#include "musengclipsession.h"
-#include "mussettings.h"
-#include "mussettingskeys.h"
-#include "musuiresourcehandler.h"
-#include "musui.hrh"
-#include "muslogger.h" // debug logging
-#include "musuiactivetimer.h"
-#include "musuigeneralview.h"
-
-#include <musui.rsg>
-#include <StringLoader.h>
-#include <AknUtils.h>
-
-#include <badesca.h>
-#include <avkon.hrh>
-
-// CONSTANTS
-const TInt KMusTimeToCloseAfterClipEndedStandard = 60 * 1000000; // 60 seconds
-const TInt KMusTimeToCloseAfterClipEndedOpVariant = 1 * 1000000; // 1 second
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiClipSharingController* CMusUiClipSharingController::NewL(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiSendObserver& aSendObserver,
- MMusUiClipSharingObserver& aClipObserver,
- const TRect& aRect )
- {
- CMusUiClipSharingController* self =
- new( ELeave ) CMusUiClipSharingController( aEventObserver,
- aSharingObserver,
- aSendObserver,
- aClipObserver );
- CleanupStack::PushL( self );
- self->ConstructL( aRect );
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiClipSharingController::~CMusUiClipSharingController()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::~CMusUiClipSharingController" );
- delete iCloseTimer;
- DeleteEngineSession();
- delete iFileName;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::~CMusUiClipSharingController" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiClipSharingController::CMusUiClipSharingController(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiSendObserver& aSendObserver,
- MMusUiClipSharingObserver& aClipObserver )
- :CMusUiSendController( aEventObserver, aSharingObserver, aSendObserver ),
- iClipObserver( aClipObserver )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::ConstructL( const TRect& aRect )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::ConstructL" );
-
- CMusUiSendController::ConstructL(); // Base class construction
-
- iRect = aRect;
- iSession = CMusEngClipSession::NewL( iRect,
- *this,
- *this,
- *this,
- iSipProfileId );
- iSession->SetAudioRoutingObserver( this );
- iSession->SetVolumeChangeObserver( this );
-
- if ( iSession->AudioRoutingCanBeChanged() && !iSession->IsAudioRoutingHeadset() )
- {
- iSession->EnableLoudspeakerL( ELoudspeakerEnabled, ETrue );
- }
-
- if ( iVideoCodec && iVideoCodec->Length() > 0 )
- {
- iSession->SetSupportedVideoCodecListL( *iVideoCodec );
- }
-
- iCallbackService->AsyncEventL( EMusUiAsyncStartMediaGallery );
-
- iCloseTimer = CMusUiActiveTimer::NewL( this );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::HandleAsyncEventL( TMusUiAsyncEvent aEventId )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::HandleAsyncEventL" );
- switch ( aEventId )
- {
- case EMusUiAsyncStartMediaGallery:
- {
- iTranscode = EFalse;
- iTranscodingGoing = EFalse;
-
- if ( !iSession )
- {
- iSession = CMusEngClipSession::NewL( iRect,
- *this,
- *this,
- *this,
- iSipProfileId );
- iSession->SetAudioRoutingObserver( this );
- }
-
- // Do fetching guarded. If registration completes during fetching,
- // there is no need to do anything.
- iFileFetchingOngoing = ETrue;
- iClipObserver.RunFetchDialogL();
- iFileFetchingOngoing = EFalse;
-
- TRAPD( error,
- iSession->SetClipL( *iFileName ) )
- MUS_LOG_TDESC( "mus: [MUSUI ] File name: ",
- iFileName->Des() )
- if ( error == KErrNone)
- {
- if ( iSession->AudioRoutingCanBeChanged() )
- {
- iSession->EnableLoudspeakerL( ELoudspeakerEnabled, ETrue );
- }
- iClipEnded = EFalse;
- StartInvitationL();
- }
- else if ( error == KErrPermissionDenied )
- {
- MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_VIEW_DRM_INFO_SEND_FORBID );
- DeleteEngineSession();
- delete iFileName;
- iFileName = NULL;
- iSession = CMusEngClipSession::NewL( iRect,
- *this,
- *this,
- *this,
- iSipProfileId );
- iSession->SetAudioRoutingObserver( this );
- if ( iSession->AudioRoutingCanBeChanged() )
- {
- iSession->EnableLoudspeakerL( ELoudspeakerEnabled, ETrue );
- }
- iCallbackService->AsyncEventL( EMusUiAsyncStartMediaGallery );
- }
- else
- {
- HandleExitL();
- }
-
- break;
- }
- case EMusUiAsyncStartTranscoding:
- {
- // Parse Target Filename for the transcoding result
- // and start transcoding:
- //iSession->TranscodeL( VideoFileNameL() );
- // Show progress dialog:
- //iObserver->ShowTranscodingProgressDialogL();
- iTranscodingGoing = ETrue;
- break;
- }
-
- default:
- {
- // Not clip specific, let the base class handle
- CMusUiSendController::HandleAsyncEventL( aEventId );
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::HandleAsyncEventL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::DeleteEngineSession()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::DeleteEngineSession" );
-
- CMusUiSendController::DeleteEngineSession();
- // Cancel transcoding
- if ( iSession && iTranscodingGoing )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::DeleteEngineSession:\
- Canceling transcoding..." );
- DismissWaitDialog();
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_VIEW_NOTE_UNABLE_TO_CONVERT );
- iSession->CancelTranscodeL() );
- }
- if ( iSession && iSession->IsAudioRoutingLoudSpeaker() )
- {
- iShowDialog = ETrue;
- }
- delete iSession;
- iSession = NULL;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::DeleteEngineSession" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngMceOutSession* CMusUiClipSharingController::EngineOutSession()
- {
- return iSession; // Clip session is CMusEngMceOutSession
- }
-
-
-// -----------------------------------------------------------------------------
-// Handles status changes specific to sending sharing types.
-// Calls base class version for status changes that are not sending specific.
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::HandleChangedStatusL(
- TMusAvailabilityStatus aStatus )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::HandleChangedStatusL" )
-
- switch( aStatus )
- {
- case EMultimediaSharingAvailable:
- {
- MUS_LOG( "mus: [MUSUI ] EMultimediaSharingAvailable" )
-
- if ( iSipRegistrationPending )
- {
- iSipRegistrationPending = EFalse;
-
- // If fecth dialog is still open, there is no need to do anything
- if ( !iFileFetchingOngoing )
- {
- iSipRegistrationPending = EFalse;
- // Set callback service, Call StartInvitationL when wait dialog dismissed
- TRAPD( err, iSharingObserver.SetWaitDialogCallbackL(
- &iWaitDialogCallback ) );
- // Dismiss pending wait note
- iSharingObserver.DismissWaitDialogL();
- if ( err == KErrNotReady )
- {
- StartInvitationL();
- }
- }
- }
- break;
- }
- default:
- {
- // Not clip specific, let the base class handle
- CMusUiSendController::HandleChangedStatusL( aStatus );
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::HandleChangedStatusL" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::InviteL( const TDesC& aRecipient )
- {
- MUS_LOG_TDESC( "mus: [MUSUI ] -> CMusUiClipSharingController::InviteL:",
- aRecipient );
-
- // Registration must not be pending in this phase
- __ASSERT_ALWAYS( !iSipRegistrationPending,
- iEventObserver.HandleError( KErrNotReady ) );
-
- delete iAddress;
- iAddress = NULL;
- iAddress = aRecipient.AllocL();
-
-
- TBool inviteProceeding = DoInviteL();
- if ( !inviteProceeding )
- {
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::InviteL, invite failed" );
- return;
- }
- if( iTranscode )
- {
- MUS_LOG( "mus: [MUSUI ] Starting transcode..." );
- iTranscode = EFalse;
-
- // Start transcoding
- iTranscodingGoing = ETrue;
-
- SetFileNameL( VideoFileNameL() );
- TRAPD( err, iSession->TranscodeL( *iFileName ) );
-
- if ( err != KErrNone )
- {
- MUS_LOG1( "mus: [MUSUI ] Transcoding failed: %d", err );
- iTranscodingGoing = EFalse;
- if ( iTranscodeDueUnknownRemoteCapas )
- {
- MUS_LOG( "mus: [MUSUI ] Retry invite without transcoding" );
- // Still retry the clip without transcoding as other end might support current codec.
- iVideoToBeSaved = EFalse;
- inviteProceeding = DoInviteL();
- }
- else if ( err == KErrNotFound ) // No Video Editor Engine
- {
- MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_TRANSCODING_NOT_SUPPORTED );
- DeleteEngineSession();
- iVideoToBeSaved = EFalse;
- HandleExitL();
- inviteProceeding = EFalse;
- }
- else
- {
- // Unable to convert clip, if transc. leaves.
- // After note return back to the media gallery.
- TranscodingFailed();
- inviteProceeding = EFalse;
- }
- }
- else
- {
- // Show progress dialog:
- iClipObserver.ShowTranscodingProgressDialogL();
- inviteProceeding = EFalse;
- }
- }
-
- if ( inviteProceeding )
- {
- SetConnectionInitialized( ETrue );
- ShowInvitingWaitDialogL();
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::InviteL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiClipSharingController::DoInviteL()
- {
- __ASSERT_ALWAYS( iAddress, User::Leave( KErrNotReady ) );
- TRAPD( err, iSession->InviteL( *iAddress ) );
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::DoInviteL: After TRAPD" );
-
- // If address is in wrong format, Manual Address Entry Dialog
- // is displayed
- if ( err != KErrNone )
- {
- DismissWaitDialog();
- MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_INVITE_ERROR );
- if ( ( ++iTriedInvitations < 2 ) && ( err == KErrArgument ) )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingController::DoInviteL: iTriedInvitations < 2" );
- iManualAddressTyped = ETrue;
- iResourceHandler->RequestKeypadL( ETrue );
-
- // If the address has to be queried again...:
- iTranscode = EFalse;
-
- MUS_LOG_TDESC( "mus: [MUSUI ] CMusUiClipSharingController::DoInviteL: ",
- iFileName->Des() )
-
- iSendObserver.ManualAddressEntryL( *iRemoteSipAddressProposal );
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingController::DoInviteL: ++iTriedInvitations > 1" );
- DeleteEngineSession();
- HandleExitL();
- }
- }
- return ( err == KErrNone );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::HandleSliderValueChangeL( TInt aNewLevel )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::HandleSliderValueChangeL(%d)",
- aNewLevel )
-
- __ASSERT_ALWAYS( !ExitOccured(), User::Leave( KErrDied ) );
- __ASSERT_ALWAYS( iConnectionEstablished, User::Leave( KErrNotReady ) );
-
- iSession->SetPositionL( TTimeIntervalSeconds( aNewLevel ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::HandleSliderValueChangeL" )
- }
-
-
-
-void CMusUiClipSharingController::OfferToolbarEventL( TInt aCommand )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::OfferToolbarEventL [%d]",
- aCommand );
-
- switch ( aCommand )
- {
- case EMusuiCmdToolbarPause:
- {
- HandleCommandL( EMusuiCmdViewPause );
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarPause,
- EMusuiCmdToolbarUnPause,
- ETrue );
- break;
- }
- case EMusuiCmdToolbarUnPause:
- {
- HandleCommandL( EMusuiCmdViewContinue );
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarUnPause,
- EMusuiCmdToolbarPause,
- ETrue );
- break;
- }
- case EMusuiCmdToolbarFFRev:
- {
- iToolbarFFRevSelected = !iToolbarFFRevSelected;
- iClipObserver.SetDurationValue( iSession->DurationL().Int() );
- if ( iToolbarFFRevSelected )
- {
- iWasPlayingBeforeWinding = iSession->IsPlayingL();
- PauseL();
- }
- else
- {
- StopWindingL();
- if ( iWasPlayingBeforeWinding )
- {
- PlayL();
- }
- }
-// iClipObserver.SetDurationVisible();
- iSharingObserver.HighlightSelectedToolbarItem( EMusuiCmdToolbarFFRev );
- break;
- }
- default: // Not clip specific, let the base class handle
- {
- CMusUiEventController::OfferToolbarEventL( aCommand );
- break;
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::OfferToolbarEventL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::HandleCommandL(TInt aCommand)
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::HandleCommandL" );
-
- __ASSERT_ALWAYS( !ExitOccured(), User::Leave( KErrDied ) );
-
- switch ( aCommand )
- {
- case EMusuiCmdViewPause:
- {
- PauseL();
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause );
- break;
- }
- case EMusuiCmdViewContinue:
- {
- PlayL();
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPlay );
- break;
- }
-
- case EMusuiCmdViewReplay:
- {
- if( !MUS_NO_TOOLBAR )
- {
- if (!AknLayoutUtils::PenEnabled())
- {
- iEventObserver.SetToolbarVisibility( ETrue );
- }
-
- if ( ClipEnded() )
- {
- iEventObserver.SetToolbarVisibility( ETrue );
- // Simulate press of play in toolbar
- OfferToolbarEventL( EMusuiCmdToolbarUnPause );
- }
- }
- break;
- }
-
- case EMusuiCmdViewShareVideo:
- {
- PauseL();
- // TODO: Change to video sharing
- break;
- }
- case EMusuiCmdViewShareImage:
- {
- PauseL();
- // TODO: Change to image sharing
- break;
- }
- case EMusuiCmdViewShareLive:
- {
- // TODO: Change to live sharing
- break;
- }
-
- case EMusuiCmdViewAudioNormal:
- {
- if( !MUS_NO_TOOLBAR )
- {
- if (!AknLayoutUtils::PenEnabled())
- {
- iEventObserver.SetToolbarVisibility( ETrue );
- }
- }
- iSession->UnmuteL();
- break;
- }
- case EMusuiCmdViewAudioMute:
- {
- if (!AknLayoutUtils::PenEnabled())
- {
- iEventObserver.SetToolbarVisibility( ETrue );
- }
-
- iSession->MuteL();
- break;
- }
- case EMusuiCmdViewFastForward:
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::HandleCommandL: EMusuiCmdViewFastForward" );
- if ( DoFastForwardingL( ETrue ) )
- {
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconForward );
- iClipObserver.SetPositionValueL( iSession->PositionL().Int() );
- //iClipObserver.SetDurationVisible();
- }
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::HandleCommandL: EMusuiCmdViewFastForward END" );
- break;
- }
- case EMusuiCmdViewFastReverse:
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::HandleCommandL: EMusuiCmdViewFastReverse" );
- if ( DoFastRewindingL( ETrue ) )
- {
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconRew );
- iClipObserver.SetPositionValueL( iSession->PositionL().Int() );
- //iClipObserver.SetDurationVisible();
- }
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::HandleCommandL: EMusuiCmdViewFastReverse END" );
- break;
- }
- case EMusuiCmdViewFastForwardEnd:
- {
- if ( DoFastForwardingL( EFalse ) )
- {
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause );
- PauseL();
- }
- break;
- }
- case EMusuiCmdViewFastReverseEnd:
- {
- if ( DoFastRewindingL( EFalse ) )
- {
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause );
- PauseL();
- }
- break;
- }
- default:
- {
- // Try more general handling
- CMusUiEventController::HandleCommandL( aCommand );
- break;
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::HandleCommandL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::SetFileNameL( const TDesC& aFileName )
- {
- iFileName = aFileName.AllocL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiClipSharingController::ClipEnded()
- {
- return iClipEnded;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiClipSharingController::ClipMutedL()
- {
- return iSession->IsMutedL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiClipSharingController::ClipContainsAudioL()
- {
- if ( !iConnectionInitialized || !iSession )
- {
- return EFalse; // We cannot be sure yet
- }
-
- return iSession->ContainsAudioL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::CancelTranscodingL()
- {
- if ( iSession && iTranscodingGoing )
- {
- iTranscodingGoing = EFalse;
- iSession->CancelTranscodeL();
- }
- iVideoToBeSaved = EFalse;
- HandleExitL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::StopWindingL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::StopWindingL" );
-
- if ( DoFastForwardingL( EFalse ) || DoFastRewindingL( EFalse ) )
- {
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::StopWindingL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiClipSharingController::ToolbarFFRevSelected()
- {
- return iToolbarFFRevSelected;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::TranscodingProgressedL( TInt aPercentage )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingProgressedL ( %d )", aPercentage );
- if ( aPercentage < KMusOneHundredPercent )
- {
- iTranscodingGoing = ETrue;
- iClipObserver.UpdateClipTranscodingPercentageL( aPercentage );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingProgressedL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::TranscodingCompletedInitL()
- {
- MUS_LOG(
- "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingCompletedInitL" );
- if ( iTranscodingGoing )
- {
- iVideoToBeSaved = ETrue;
- iTranscodingGoing = EFalse;
- iClipObserver.CancelTranscodingDialogL();
- MusUiDialogUtil::ShowInformationDialogL( R_MUS_VIEW_NOTE_TRANSCODING_COMPLETE );
- }
- MUS_LOG(
- "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingCompletedInitL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::TranscodingCompletedFinalizeL()
- {
- MUS_LOG(
- "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingCompletedFinalizeL" );
- SetConnectionInitialized( ETrue );
- if ( !iTranscodingGoing )
- {
- ShowInvitingWaitDialogL();
- }
- MUS_LOG(
- "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingCompletedFinalizeL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMusUiClipSharingController::FormattedDurationString(
- const TTimeIntervalSeconds& aDurationSeconds,
- const TTimeIntervalSeconds& aPositionSeconds )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::FormattedDurationString" );
- _LIT( KDurationAndPositionSeparator, "/" );
-
- iDurationStringBuffer.SetLength( 0 );
- TLocale locale;
- _LIT( KZeroSymbol, "0" );
-
- TInt durationMinutes( 0 );
- TInt durationSeconds( aDurationSeconds.Int() );
- if ( aDurationSeconds.Int() > ( KMusOneMinuteInSeconds - 1 ) )
- {
- durationMinutes = (int)( aDurationSeconds.Int() / KMusOneMinuteInSeconds );
- durationSeconds = durationSeconds - ( durationMinutes * KMusOneMinuteInSeconds );
- }
-
- iDurationStringBuffer.AppendNum( durationMinutes );
- iDurationStringBuffer.Append( locale.TimeSeparator( KMusLocaleMinutesAndSecondsSeparator ) );
- if ( durationSeconds < KMusNumberValueTen )
- {
- iDurationStringBuffer.Append( KZeroSymbol );
- }
- iDurationStringBuffer.AppendNum( durationSeconds );
- iDurationStringBuffer.Append( KDurationAndPositionSeparator );
-
- TInt positionMinutes( 0 );
- TInt positionSeconds( aPositionSeconds.Int() );
- if ( aPositionSeconds.Int() > ( KMusOneMinuteInSeconds - 1 ) )
- {
- positionMinutes = (int)( aPositionSeconds.Int() / KMusOneMinuteInSeconds );
- positionSeconds = positionSeconds - ( positionMinutes * KMusOneMinuteInSeconds );
- }
-
- iDurationStringBuffer.AppendNum( positionMinutes );
- iDurationStringBuffer.Append( locale.TimeSeparator( KMusLocaleMinutesAndSecondsSeparator ) );
- if ( positionSeconds < KMusNumberValueTen )
- {
- iDurationStringBuffer.Append( KZeroSymbol );
- }
- iDurationStringBuffer.AppendNum( positionSeconds );
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::FormattedDurationString" );
- return iDurationStringBuffer;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::EndOfClip()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::EndOfClip" );
- iClipEnded = ETrue;
-
- TRAP_IGNORE( iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconStop ) );
- if(!MUS_NO_TOOLBAR)
- {
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarPause,
- EMusuiCmdToolbarUnPause,
- ETrue );
- }
- iCloseTimer->Cancel();
- iCloseTimer->After( iOperatorSpecificFunctionality ?
- KMusTimeToCloseAfterClipEndedOpVariant :
- KMusTimeToCloseAfterClipEndedStandard );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::EndOfClip" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::TranscodingNeeded(TBool aDueUnknownRemoteCapabilities)
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingNeeded, %d",
- aDueUnknownRemoteCapabilities);
- iTranscode = ETrue;
- iTranscodeDueUnknownRemoteCapas = aDueUnknownRemoteCapabilities;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingNeeded" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::TranscodingProgressed( TInt aPercentage )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingProgressed %d",
- aPercentage );
- TRAP_IGNORE( TranscodingProgressedL( aPercentage ) )
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingProgressed" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::TranscodingCompletedInit()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingCompleted" );
- TRAPD( error, TranscodingCompletedInitL() );
- if ( error != KErrNone )
- {
- HandleError( error );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingCompleted" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::TranscodingCompletedFinalize()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingCompleted" );
- TRAPD( error, TranscodingCompletedFinalizeL() );
- if ( error != KErrNone )
- {
- HandleError( error );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingCompleted" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::TranscodingFailed()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingFailed" );
- iTranscodingGoing = EFalse;
- DismissWaitDialog();
- TRAP_IGNORE( iClipObserver.CancelTranscodingDialogL();
- MusUiDialogUtil::ShowGlobalErrorModalDialogL(
- R_MUS_VIEW_NOTE_UNABLE_TO_CONVERT ) );
- DeleteEngineSession();
- delete iFileName;
- iFileName = NULL;
- TRAPD( error,
- iCallbackService->AsyncEventL( EMusUiAsyncStartMediaGallery ) );
- if ( error != KErrNone )
- {
- HandleError( error );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingFailed" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::SessionRecipientNotFound()
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionRecipientNotFound [%d]", iTriedInvitations );
-
- // If the address has to be queried again...:
- iTranscode = EFalse;
-
- CMusUiSendController::SessionRecipientNotFound();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionRecipientNotFound" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::SessionTerminated()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionTerminated" );
- DismissWaitDialog();
- if ( iTranscodingGoing )
- {
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_VIEW_NOTE_UNABLE_TO_CONVERT ) );
- }
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionTerminated" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::SessionConnectionLost()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionConnectionLost" );
- DismissWaitDialog();
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_CONNECTION_LOST ) );
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionConnectionLost" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::SessionFailed()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionFailed" );
- DismissWaitDialog();
- if ( iTranscodingGoing )
- {
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_VIEW_NOTE_UNABLE_TO_CONVERT ) );
- }
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionFailed" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::StreamIdle()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::StreamIdle" );
- iClipObserver.InvalidVideoFrame( ETrue );
- TRAPD( error, StreamIdleL() );
- if ( error != KErrNone )
- {
- iEventObserver.HandleError( error );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::StreamIdle" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::StreamStreaming()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::StreamStreaming" );
- iClipObserver.InvalidVideoFrame( EFalse );
- TRAPD( error, StreamStreamingL() );
- if ( error != KErrNone )
- {
- iEventObserver.HandleError( error );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::StreamStreaming" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::SessionTimeChanged(
- const TTimeIntervalSeconds& aSeconds )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionTimeChanged" );
- TRAP_IGNORE( SessionTimeChangedL( aSeconds ) );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionTimeChanged" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::InactivityTimeout()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::InactivityTimeout" );
- DismissWaitDialog();
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SERVICE_N_A ) );
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::InactivityTimeout" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Called when predefined time elapsed
-// after the clip had reached the end
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::TimerComplete( CMusUiActiveTimer* /*aTimer*/ )
- {
- MUS_LOG( "mus: [MUSUI ] Close time elapsed from clip ending => \
- closing session" );
- TRAP_IGNORE( HandleExitL() )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::StreamStreamingL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::StreamStreamingL" );
-
- if ( ConnectionEstablished() )
- {
- iClipEnded = EFalse;
- iCloseTimer->Cancel();
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPlay );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::StreamStreamingL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::StreamIdleL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::StreamIdleL" );
-
- if ( ConnectionEstablished() )
- {
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::StreamIdleL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::SessionTimeChangedL( const TTimeIntervalSeconds& aSeconds )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionTimeChangedL" );
- if ( aSeconds.Int() > -1 )
- {
- TTimeIntervalSeconds clipDuration = iSession->DurationL();
- TTimeIntervalSeconds clipPosition = iSession->PositionL();
-
- iSharingObserver.UpdateSessionTime( SessionTimeFormatted( aSeconds ) );
- iClipObserver.UpdateClipPositionL( clipPosition.Int(),
- FormattedDurationString(
- clipPosition,
- clipDuration ) );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionTimeChangedL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusUiClipSharingController::SessionEstablished()
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::SessionEstablished()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionEstablished" );
-
- TRAPD( error, iResourceHandler->RequestVideoPlayerL( ETrue ) );
- if ( error != KErrNone )
- {
- MUS_LOG1( "mus: [MUSUI ] RequestVideoPlayerL leave code: %d", error )
- }
-
- // Duration setting visible
- TRAP( error, iClipObserver.SetDurationValue( iSession->DurationL().Int() ) )
- if ( error != KErrNone )
- {
- HandleError( error );
- }
- iClipObserver.SetDurationVisible();
-
- // General handling
- CMusUiSendController::SessionEstablished(); // Base class handling
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionEstablished" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusUiClipSharingController::DoFastForwardingL()
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiClipSharingController::DoFastForwardingL( TBool aUseWinding )
- {
- if( iFastForward ^ aUseWinding )
- {
- iSession->FastForwardL( aUseWinding );
- iFastForward = aUseWinding;
- return ETrue;
- }
- return EFalse;
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusUiClipSharingController::DoFastRewindingL()
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiClipSharingController::DoFastRewindingL( TBool aUseWinding )
- {
- if( iFastRewind ^ aUseWinding )
- {
- iSession->FastRewindL( aUseWinding );
- iFastRewind = aUseWinding;
- return ETrue;
- }
- return EFalse;
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusUiClipSharingController::RewindFromEndL()
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingController::RewindFromEndL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::RewindFromEndL" );
- PauseL();
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause );
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarPause,
- EMusuiCmdToolbarUnPause,
- ETrue );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::RewindFromEndL" );
- }
-// End of file
-
--- a/mmsharing/mmshui/src/musuiclipsharingview.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,677 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#include "musuiclipsharingview.h"
-#include "musuiclipsharingviewcontainer.h"
-#include "musuibackgroundviewcontainer.h"
-#include "musuiclipsharingcontroller.h"
-#include "musuiactivitymanger.h"
-#include "musuiappui.h"
-#include "musuistatuspanehandler.h"
-#include "musui.hrh"
-#include "musuidefinitions.h"
-#include "muslogger.h" // debug logging
-#include <musui.rsg>
-#include <musui.mbg>
-#include "musuidialogutil.h"
-
-#include <aknViewAppUi.h>
-#include <avkon.hrh>
-#include <eikmenup.h>
-#include <eikbtgpc.h>
-#include <akntoolbar.h>
-
-
-const TInt KMusUiContainerHeight = 50;
-const TInt KDefaultResolutionHeight = 640;
-
-// -----------------------------------------------------------------------------
-// EPOC two-phased constructor
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::ConstructL" );
-
- CMusUiSendView::ConstructL();
-
- Toolbar()->SetToolbarObserver( this );
- Toolbar()->UpdateBackground();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CMusUiClipSharingView::~CMusUiClipSharingView()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::~CMusUiClipSharingView" );
- if ( iContainer )
- {
- AppUi()->RemoveFromViewStack( *this, iContainer );
- }
- delete iContainer;
-
- delete iController;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::~CMusUiClipSharingView" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TUid CMusUiClipSharingView::Id() const
- {
- return KMusUidClipSharingView;
- }
-
-// -----------------------------------------------------------------------------
-// From MEikMenuObserver, Called by framework before constructing menupane
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::DynInitMenuPaneL( TInt aResourceId,
- CEikMenuPane* aMenuPane )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::DynInitMenuPaneL" );
-
-
- // Base class initiated initialization first
- CMusUiGeneralView::DynInitMenuPaneL( aResourceId, aMenuPane );
-
- if(! MUS_NO_TOOLBAR )
- {
- SetInitialFocusedItemL();
- }
-
- if ( aResourceId == R_MUSUI_VIEW_MENU )
- {
-
- // Delete items not related to clip sharing:
- aMenuPane->DeleteMenuItem( EMusuiCmdRecord );
- aMenuPane->DeleteMenuItem( EMusuiCmdStopRecording );
-
- aMenuPane->DeleteMenuItem( EMusuiCmdToolbarZoom );
- aMenuPane->DeleteMenuItem( EMusuiCmdToolbarBrightness );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewZoom );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewBrightness );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewFullScreen );
-
- // Delete EMusuiCmdViewAudioNormal or EMusuiCmdViewAudioMute
- // depending on the audio state of the clip:
- if ( iController->ClipContainsAudioL() )
- {
- aMenuPane->DeleteMenuItem( iController->ClipMutedL() ?
- EMusuiCmdViewAudioMute :
- EMusuiCmdViewAudioNormal );
- }
- else
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdViewAudioMute );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewAudioNormal );
- }
-
- // Delete "Replay" item, if the end of the clip not reached:
- if ( !iController->ClipEnded() )
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdViewReplay );
- }
-
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::DynInitMenuPaneL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::HandleToolbarCommandL( TInt aCommand )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::HandleToolbarCommandL" );
-
- __ASSERT_ALWAYS( iController, User::Leave( KErrNotReady ) );
-
- switch ( aCommand )
- {
- case EKeyLeftArrow:
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
- iController->ToolbarFFRevSelected() ? EMusuiCmdViewFastReverse :
- EMusUiCmdToolbarLastIndex );
- break;
- }
- case EKeyRightArrow:
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
- iController->ToolbarFFRevSelected() ? EMusuiCmdViewFastForward :
- EMusUiCmdToolbarLastIndex );
- break;
- }
- case EKeyUpArrow:
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
- iController->ToolbarFFRevSelected() ? EMusuiCmdViewFastForward :
- EMusUiCmdToolbarLastIndex );
- break;
- }
- case EKeyDownArrow:
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
- iController->ToolbarFFRevSelected() ? EMusuiCmdViewFastReverse :
- EMusUiCmdToolbarLastIndex );
- break;
- }
- case EMusuiCmdViewVolumeDown:
- {
- HandleCommandL( EMusuiCmdViewVolumeDown );
- break;
- }
- case EMusuiCmdViewVolumeUp:
- {
- HandleCommandL( EMusuiCmdViewVolumeUp );
- break;
- }
- default:
- {
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::HandleToolbarCommandL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::HandleKeyUpEvent( TInt /*aKeyCode*/ )
- {
- TRAP_IGNORE( iController->StopWindingL() )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::SetInitialFocusedItemL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::SetInitialFocusedItemL" );
-
- __ASSERT_ALWAYS( iController, User::Leave( KErrNotReady ) );
-
- if ( iOperatorSpecificFunctionality && !AknLayoutUtils::PenEnabled() )
- {
- MUS_LOG( "Focus changed in OPERATOR mode !!!!!!!!!!!!!" );
-
- if ( !( iController->DeviceHasDedicatedVolumeKeys() ) )
- {
- Toolbar()->SetFocusedItemL( EMusuiCmdToolbarVolume );
- }
- else
- {
-
- Toolbar()->SetFocusedItemL( EventControllerL().IsMicMutedL() ?
- EMusuiCmdToolbarUnmute :
- EMusuiCmdToolbarMute );
- }
-
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::SetInitialFocusedItemL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::DynInitToolbarL( TInt aResourceId,
- CAknToolbar* aToolbar )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::DynInitToolbarL" );
-
- // Items to be removed in Clip Sharing View:
-
-
- if (!AknLayoutUtils::PenEnabled())//(aResourceId == R_MUS_TOOLBAR_NONTOUCH)//
- {
- if ( iController->DeviceHasDedicatedVolumeKeys() )
- {
- aToolbar->RemoveItem( EMusuiCmdToolbarVolume );
- }
- else
- {
- aToolbar->SetFocusedItemL( EMusuiCmdToolbarVolume );
- }
-
- aToolbar->RemoveItem( EMusuiCmdToolbarZoom );
- aToolbar->RemoveItem( EMusuiCmdToolbarBrightness );
- }
-
- Toolbar()->RemoveItem( EMusuiCmdToolbarPauseLive );
- Toolbar()->RemoveItem( EMusuiCmdToolbarUnPauseLive );
- Toolbar()->RemoveItem( EMusuiCmdToolbarFullScreen );
-
-
- if ( iOperatorSpecificFunctionality )
- {
- // Remove pause/unpause functionality in operator variant case
- Toolbar()->RemoveItem( EMusuiCmdToolbarPause );
- Toolbar()->RemoveItem( EMusuiCmdToolbarUnPause );
-
- if ( aToolbar->FocusedItem() == KErrNotFound &&
- !AknLayoutUtils::PenEnabled() )
- {
- aToolbar->SetFocusedItemL( EventControllerL().IsMicMutedL() ?
- EMusuiCmdToolbarUnmute :
- EMusuiCmdToolbarMute );
- }
-
- }
- else
- {
- // Toggled items to be hidden:
- Toolbar()->HideItem( iPauseSelected ?
- EMusuiCmdToolbarPause :
- EMusuiCmdToolbarUnPause,
- ETrue,
- ETrue );
- if ( aToolbar->FocusedItem() == KErrNotFound &&
- !AknLayoutUtils::PenEnabled() )
- {
- aToolbar->SetFocusedItemL( EMusuiCmdToolbarPause );
- }
- Toolbar()->RemoveItem( EMusuiCmdToolbarBlank );
- }
-
- // Last generic base class functionality
- CMusUiGeneralView::DynInitToolbarL( aResourceId, aToolbar );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::DynInitToolbarL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::RunFetchDialogL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::RunFetchDialogL" );
- iContainer->RunFetchDialogL();
- if ( iContainer->FileSelected() )
- {
- iController->SetFileNameL( iContainer->FetchedFileName() );
- RefreshView();
- }
- else
- {
- if ( SendController() && SendController()->IsAudioRoutingLoudSpeaker() )
- {
- MusUiDialogUtil::ShowGlobalInformationDialogL(
- R_MUS_NOTE_HF_DEACTIVATED );
- }
- MusAppUi()->HandleExit();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::RunFetchDialogL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::ShowTranscodingProgressDialogL()
- {
- iContainer->ShowTranscodingProgressDialogL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::UpdateClipTranscodingPercentageL( TInt aPercetage )
- {
- iContainer->UpdateClipTranscodingPercentageL( aPercetage );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::CancelTranscodingDialogL()
- {
- iContainer->CancelTranscodingL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::UpdateClipPositionL(
- TInt aPositionInSeconds,
- const TDesC& aFormattedPosition )
- {
- MUS_LOG_TDESC( "mus: [MUSUI ] -> CMusUiClipSharingView::UpdateClipPositionL: ",
- aFormattedPosition );
-
- MusAppUi()->MusStatusPane()->SetRightLabelL( aFormattedPosition );
- iContainer->SetPositionValueL( aPositionInSeconds );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::UpdateClipPositionL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::SetDurationValue( TInt aDurationValue )
- {
- iContainer->SetDurationValue( aDurationValue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::SetPositionValueL( TInt aDurationValue )
- {
- iContainer->SetPositionValueL( aDurationValue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::SetDurationVisible()
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLiveSharingView::SetDurationVisible: %d",
- iToolbarItemSelected );
- if ( !iToolbarItemSelected )
- {
- iContainer->SetDurationIndicatorVisible( ETrue );
- }
- else
- {
- iContainer->SetDurationIndicatorVisible( EFalse );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::SetDurationVisible" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::ReplaceToolbarCommand( TInt aOldCommand,
- TInt aNewCommand,
- TBool aSetNewCommandFocused )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingView::ReplaceToolbarCommand: %d",
- aOldCommand );
- switch ( aOldCommand )
- {
- case EMusuiCmdToolbarPause:
- {
- iPauseSelected = ETrue;
- break;
- }
- case EMusuiCmdToolbarUnPause:
- {
- iPauseSelected = EFalse;
- break;
- }
- default:
- {
- break;
- }
-
- }
-
- // Call base class version for generic part
-
- CMusUiGeneralView::ReplaceToolbarCommand( aOldCommand,
- aNewCommand,
- aSetNewCommandFocused );
-
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiClipSharingView::ReplaceToolbarCommand: %d",
- aOldCommand );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::RefreshView()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::RefreshView" );
-
- RefreshBackgroundContainer();
-
- if ( iContainer )
- {
- TInt height = MusAppUi()->ApplicationRect().Height();
- MUS_LOG1( "mus: [MUSUI ] -> application rect height: %d", height );
- TInt containerHeight = (KMusUiContainerHeight * height) / KDefaultResolutionHeight;
-
- MUS_LOG1( "mus: [MUSUI ] -> container rect height: %d", containerHeight );
- TRect containerRect(
- ClientRect().iTl.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight()
- - containerHeight,//KMusUiContainerHeight,
- ClientRect().iBr.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
-
- if (!AknLayoutUtils::PenEnabled())
- {
- containerRect = TRect(
- ClientRect().iTl.iX,
- ClientRect().iTl.iY,
- ClientRect().iBr.iX,
- ClientRect().iTl.iY + containerHeight );
- }
- iContainer->SetRect( containerRect );
-
- if ( iController )
- {
-
- TRect videoRect( ClientRect().iTl.iX,
- ClientRect().iTl.iY,
- ClientRect().iBr.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight()
- - iContainer->Size().iHeight );
-
- if (!AknLayoutUtils::PenEnabled())
- {
- TInt dy = iContainer->Size().iHeight;
- videoRect.Move(0, dy);
- }
- iController->SetRect( videoRect );
-
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::RefreshView" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::CancelTranscodingL()
- {
- if ( iController )
- {
- iController->CancelTranscodingL();
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiSendController* CMusUiClipSharingView::SendController() const
- {
- return iController;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiSendViewContainer* CMusUiClipSharingView::SendContainer() const
- {
- return iContainer;
- }
-
-
-// -----------------------------------------------------------------------------
-// From CAknView, Gets called from framework when activating this view
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::DoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::DoActivateL" );
-
- // Base class activation first
- CMusUiSendView::DoActivateL( aPrevViewId,
- aCustomMessageId,
- aCustomMessage );
-
- TInt height = MusAppUi()->ApplicationRect().Height();
- MUS_LOG1( "mus: [MUSUI ] -> application rect height: %d", height );
- TInt containerHeight = (KMusUiContainerHeight * height) / KDefaultResolutionHeight;
-
- MUS_LOG1( "mus: [MUSUI ] -> container rect height: %d", containerHeight );
- TRect containerRect(
- ClientRect().iTl.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight()
- - containerHeight,//KMusUiContainerHeight,
- ClientRect().iBr.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
-
- if (!AknLayoutUtils::PenEnabled())
- {
- containerRect = TRect(
- ClientRect().iTl.iX,
- ClientRect().iTl.iY,
- ClientRect().iBr.iX,
- ClientRect().iTl.iY + containerHeight );
- }
-
- if ( !iContainer )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingView::DoActivateL: !iContainer" );
- iContainer = new ( ELeave ) CMusUiClipSharingViewContainer();
- iContainer->SetMopParent( this );
- iContainer->ConstructL( this, containerRect );
- AppUi()->AddToViewStackL( *this, iContainer );
- }
-
- /* Increase the ordinal position of background container
- * So that other control will be drawn first.
- */
- UpdateBackgroundOrdinalPosition( ETrue );
-
- TRect videoRect( ClientRect().iTl.iX,
- ClientRect().iTl.iY,
- ClientRect().iBr.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight()
- - iContainer->Size().iHeight );
-
- if (!AknLayoutUtils::PenEnabled())
- {
- TInt dy = iContainer->Size().iHeight;
- videoRect.Move(0, dy);
- }
- if ( !iController )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingView::DoActivateL: !iController" );
- iController = CMusUiClipSharingController::NewL( *MusAppUi(),
- *this,
- *this,
- *this,
- videoRect );
- }
-
- iContainer->SetController( iController );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::DoActivateL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From AknView, Gets called from framework when deactivating this view
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::DoDeactivate()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::DoDeactivate" );
-
- CMusUiSendView::DoDeactivate(); // Base class deactivation first
-
- if ( iContainer )
- {
- AppUi()->RemoveFromViewStack( *this, iContainer );
- delete iContainer;
- iContainer = NULL;
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::DoDeactivate" );
- }
-
-// -----------------------------------------------------------------------------
-// When Mmc is removed, dimmed the pause icon on toolbar
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingView::InvalidVideoFrame( TBool aInvalid )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingView::InvalidVideoFrame" );
- Toolbar()->SetItemDimmed( iPauseSelected ?
- EMusuiCmdToolbarUnPause :
- EMusuiCmdToolbarPause,
- aInvalid ?
- ETrue :
- EFalse,
- ETrue );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::InvalidVideoFrame" );
- }
-
-// end of file
--- a/mmsharing/mmshui/src/musuiclipsharingviewcontainer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,428 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-#include "musuidefinitions.h"
-#include "musuiclipsharingviewcontainer.h"
-#include "musuieventcontroller.h"
-#include "musuilevelindicator.h"
-#include "musuiclipsharingview.h"
-#include "musuiappui.h"
-#include "musuidialogutil.h"
-#include "musui.hrh"
-#include "muslogger.h" // debug logging
-#include "mussettings.h"
-#include <musui.rsg>
-
-
-#include <AknsDrawUtils.h>
-#include <AknProgressDialog.h>
-#include <eikprogi.h> // CEikProgressInfo
-#include <AknDef.h>
-#include <MGFetch.h>
-#include <MediaFileTypes.hrh>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingViewContainer::ConstructL( CMusUiGeneralView* aView,
- const TRect& aRect )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingViewContainer::ConstructL" );
-
- CMusUiSendViewContainer::ConstructL( aView,
- aRect,
- EAknOrientationHorizontal,
- ETrue,
- EFalse );
- // check if operator specific functionality is needed
- iOperatorSpecificFunctionality =
- ( MultimediaSharingSettings::OperatorVariantSettingL() ==
- MusSettingsKeys::EOperatorSpecific );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingViewContainer::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiClipSharingViewContainer::~CMusUiClipSharingViewContainer()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingViewContainer::~CMusUiClipSharingViewContainer" );
-
- delete iFileName;
-
- TRAP_IGNORE( CancelTranscodingL() );
-
- if ( iTranscodingDialog )
- {
- TRAP_IGNORE( iTranscodingDialog->ProcessFinishedL() );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingViewContainer::~CMusUiClipSharingViewContainer" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingViewContainer::ShowTranscodingProgressDialogL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingViewContainer::ShowTranscodingProgressDialogL" );
- iTranscodingOngoing = ETrue;
- HBufC* transcodText;
- iTranscodingDialog =
- new ( ELeave ) CAknProgressDialog(
- ( reinterpret_cast<CEikDialog**>( &iTranscodingDialog ) ) );
-
- iTranscodingDialog->SetCallback( this );
- transcodText = iEikonEnv->AllocReadResourceLC(
- R_MUS_PROGRESS_NOTE_CONVERTING_CLIP );
- iTranscodingDialog->SetCurrentLabelL( EAknCtNote, *transcodText );
- CleanupStack::PopAndDestroy( transcodText );
- iTranscodingDialog->ExecuteLD( R_MUS_VIEW_TRANSCODING_WAIT_NOTE );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingViewContainer::ShowTranscodingProgressDialogL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingViewContainer::UpdateClipTranscodingPercentageL(
- TInt aPercentage )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingViewContainer::UpdateClipTranscodingPercentageL" );
- if ( iTranscodingDialog )
- {
- if ( aPercentage < KMusOneHundredPercent )
- {
- iTranscodingProgress = iTranscodingDialog->GetProgressInfoL();
- iTranscodingProgress->SetFinalValue( KMusOneHundredPercent );
- if ( iTranscodingProgress )
- {
- iTranscodingProgress->IncrementAndDraw(
- aPercentage - iTranscodingProgress->CurrentValue() );
- }
- }
- else
- {
- iTranscodingOngoing = EFalse;
- iTranscodingDialog->ProcessFinishedL();
- iTranscodingDialog = NULL;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingViewContainer::UpdateClipTranscodingPercentageL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingViewContainer::CancelTranscodingL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingViewContainer::CancelTranscodingL" );
- if ( iTranscodingOngoing )
- {
- iTranscodingOngoing = EFalse;
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingViewContainer::CancelTranscodingL: iTranscodingOngoing" );
- if ( iTranscodingDialog )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingViewContainer::CancelTranscodingL: iTranscodingDialog" );
- iTranscodingDialog->ProcessFinishedL();
- iTranscodingDialog = NULL;
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingViewContainer::CancelTranscodingL: ProcessFinishedL()" );
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingViewContainer::CancelTranscodingL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Runs the Media Gallery Fetch dialog.
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingViewContainer::RunFetchDialogL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingViewContainer::RunFetchDialogL" );
-
- // Create array of descriptors for the selected files
- CDesCArrayFlat* fileArray = new ( ELeave ) CDesCArrayFlat( KMusDefaultArrayGranularity );
- CleanupStack::PushL( fileArray );
-
- // Open the dialog.
- TBool ret = MGFetch::RunL(
- *fileArray, // When dialog is closed, fileArray contains selected files
- EVideoFile, // Displays only media files of type aMediaType
- EFalse, // Not used in S60 2.0 ( single or multiple file selection )
- this // Pointer to class implementing MMGFetchVerifier;
- // when user has selected file( s ),
- // MMGFetchVerifier::VerifySelectionL is called.
- );
-
- if ( ret )
- {
- iFileSelected = ETrue;
- iFileName = fileArray->MdcaPoint( 0 ).AllocL();
- }
- else
- {
- // The user has not selected any file
- iFileSelected = EFalse;
- }
-
- CleanupStack::PopAndDestroy( fileArray );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingViewContainer::RunFetchDialogL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMusUiClipSharingViewContainer::FetchedFileName()
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingViewContainer::FetchedFileName" );
- return *iFileName;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiClipSharingViewContainer::FileSelected()
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingViewContainer::FileSelected" );
- return iFileSelected;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingViewContainer::SetDurationValue( TInt aDurationValue )
- {
- const TInt KMinLevel = 0;
- iIndicator->SetRange( KMinLevel, aDurationValue, EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingViewContainer::SetPositionValueL( TInt aPositionValue )
- {
- iIndicator->SetLevelL( EMusUiIndicatorTypeDuration,
- aPositionValue,
- EFalse /*never use timer*/ );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingViewContainer::SetDurationIndicatorVisible( TBool aVisible )
- {
- iIndicator->SetIndicatorType(EMusUiIndicatorTypeDuration);
- iIndicator->MakeVisible( aVisible );
- }
-
-
-// -----------------------------------------------------------------------------
-// Verifies the current user selection.
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiClipSharingViewContainer::VerifySelectionL( const MDesCArray*
- aSelectedFiles )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingViewContainer::\
- VerifySelectionL" );
- return ( aSelectedFiles->MdcaCount() > 0 ) ? ETrue : EFalse;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingViewContainer::DialogDismissedL( TInt /*aButtonId*/ )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingViewContainer::DialogDismissedL" );
- if ( iTranscodingOngoing )
- {
- (static_cast <CMusUiClipSharingView*>(MusUiView()))->CancelTranscodingL();
- iTranscodingOngoing = EFalse;
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingViewContainer::DialogDismissedL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework when to retrieve the no. of controls.
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiClipSharingViewContainer::CountComponentControls() const
- {
- return 1; // return nbr of controls inside this container
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to retrieve the control specified by index.
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CMusUiClipSharingViewContainer::ComponentControl( TInt aIndex ) const
- {
- CCoeControl* control = NULL;
-
- switch ( aIndex )
- {
- case 0:
- control = iIndicator;
- break;
- default:
- break;
- }
- return control;
- }
-
-// -----------------------------------------------------------------------------
-// Called by framework to redraw the screen area.
-// -----------------------------------------------------------------------------
-//
-void CMusUiClipSharingViewContainer::Draw( const TRect& aRect ) const
- {
- CWindowGc& gc = SystemGc();
-
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
- if(!AknsDrawUtils::Background( skin, cc,this,gc,aRect,KAknsDrawParamDefault ))
- {
- MUS_LOG( "mus: [MUSUI ] Skin not valid or not found" );
- gc.SetBrushColor( iEikonEnv->ControlColor( EColorWindowBackground, *this ) );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.Clear( aRect );
- }
- }
-
-// -----------------------------------------------------------------------------
-// Called by framework to act on key events if required.
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CMusUiClipSharingViewContainer::OfferKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode aType )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingViewContainer::OfferKeyEventL: %d",
- aKeyEvent.iCode );
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingViewContainer::OfferKeyEventL: %d",
- aKeyEvent.iScanCode );
-
- TKeyResponse ret( EKeyWasNotConsumed );
-
- /**
- * special keys have scancode
- */
- switch( aKeyEvent.iScanCode )
- {
- // Fast Forward:
- case EStdKeyUpArrow: // EKeyUpArrow:
- {
- if ( !MUS_NO_TOOLBAR )
- {
- if( aType == EEventKeyDown )
- {
- (static_cast <CMusUiClipSharingView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdViewFastForward );
- }
-
- if( aType == EEventKeyUp )
- {
- (static_cast <CMusUiClipSharingView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdViewFastForwardEnd );
- }
- }
- return EKeyWasConsumed;
- }
-
- // Fast Reverse:
- case EStdKeyDownArrow: // EKeyDownArrow:
- {
- if ( !MUS_NO_TOOLBAR )
- {
- if( aType == EEventKeyDown )
- {
- (static_cast <CMusUiClipSharingView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdViewFastReverse );
- }
- if( aType == EEventKeyUp )
- {
- (static_cast <CMusUiClipSharingView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdViewFastReverseEnd );
- }
- }
- return EKeyWasConsumed;
- }
- default:
- {
- ret = EKeyWasNotConsumed;
- break;
- }
- }
-
-
- switch ( aKeyEvent.iCode )
- {
- // Volume Control
- case EKeyLeftArrow:
- {
- (static_cast <CMusUiClipSharingView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdViewVolumeDown );
- ret = EKeyWasConsumed;
- break;
- }
- case EKeyRightArrow:
- {
- (static_cast <CMusUiClipSharingView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdViewVolumeUp );
- ret = EKeyWasConsumed;
- break;
- }
-
- default:
- {
- ret = EKeyWasNotConsumed;
- break;
- }
- }
-
- return ret;
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuicontactutil.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,388 +0,0 @@
-/*
-* Copyright (c) 2006 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:
-*
-*/
-
-
-#include "musuicontactutil.h"
-#include "musuidefinitions.h"
-#include "muslogger.h"
-#include "musenguriparser.h"
-#include "musuid.hrh"
-
-#include <RPbkViewResourceFile.h> // Phonebook view resource
-#include <CPbkContactEditorDlg.h>
-#include <CPbkFieldsInfo.h>
-#include <TPbkContactItemField.h>
-
-#include <cntdb.h>
-#include <cntitem.h>
-#include <cntfield.h>
-#include <cntdef.h>
-#include <cntfldst.h>
-#include <CPbkContactEngine.h>
-#include <apgtask.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool MusUiContactUtil::ShareViewFieldExistsL( CCoeEnv& aEnv, TInt aContactId )
- {
- MUS_LOG( "mus: [MUSUI ] -> MusUiContactUtil::ShareViewFieldExistsL" );
-
- TBool ret( EFalse );
-
- RPbkViewResourceFile pbkResourceFile( aEnv );
- CleanupClosePushL( pbkResourceFile );
- pbkResourceFile.OpenL();
- CPbkContactEngine* pbkContactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( pbkContactEngine );
- CPbkContactItem* contactItem = NULL;
- CleanupStack::PushL( contactItem );
- if ( aContactId > 0 )
- {
- contactItem = pbkContactEngine->OpenContactL( aContactId );
- if ( contactItem->FindField( EPbkFieldIdShareView ) )
- {
- MUS_LOG( "mus: [MUSUI ] EPbkFieldIdShareView found!!" );
- ret = ETrue;
- }
- else if ( contactItem->FindField( EPbkFieldIdSIPID ) )
- {
- MUS_LOG( "mus: [MUSUI ] EPbkFieldIdSIPID found, NOT EPbkFieldIdShareView defined!!!" );
- ret = ETrue;
- }
- else
- {
- ret = EFalse;
- }
- }
- else
- {
- ret = EFalse;
- }
- CleanupStack::PopAndDestroy( 3 ); // contactItem, pbkContactEngine, &pbkResourceFile
- MUS_LOG( "mus: [MUSUI ] <- MusUiContactUtil::ShareViewFieldExistsL" );
- return ret;
-
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool MusUiContactUtil::CheckPbContactForVSAddressesL( CCoeEnv& aEnv,
- const TDesC& aOriginator,
- TInt aContactId)
-{
- MUS_LOG( "mus: [MUSUI ] -> MusUiContactUtil::CheckPbContactForVSAddressesL" );
-
- TBool sipAddrMatches(EFalse);
- TBool shareViewAddrMatches(EFalse);
- TBool ret(EFalse);
-
- if(MatchTextWithPbFieldsL(aEnv, EPbkFieldIdSIPID, aOriginator, aContactId))
- {
- sipAddrMatches=ETrue;
- }
- if(MatchTextWithPbFieldsL(aEnv, EPbkFieldIdShareView, aOriginator, aContactId))
- {
- shareViewAddrMatches=ETrue;
- }
-
- if(aOriginator.Find(KMusPrefixSipUri) != KErrNotFound)
- {
- //pb field without sip:-prefix are checked.
- HBufC * withoutPrefix;
- withoutPrefix = HBufC::NewLC(aOriginator.Length());
- *withoutPrefix = aOriginator;
- TPtr ptr = withoutPrefix->Des();
- ptr.Delete(0,KMusPrefixMaxLength);
-
- if(MatchTextWithPbFieldsL(aEnv, EPbkFieldIdSIPID, *withoutPrefix, aContactId))
- {
- sipAddrMatches=ETrue;
- }
- if(MatchTextWithPbFieldsL(aEnv, EPbkFieldIdShareView, *withoutPrefix, aContactId))
- {
- shareViewAddrMatches=ETrue;
- }
-
- CleanupStack::PopAndDestroy(withoutPrefix);
- }
-
- if(sipAddrMatches||shareViewAddrMatches)
- {
- ret=ETrue;
- }
- else
- {
- ret=EFalse;
- }
-
- MUS_LOG( "mus: [MUSUI ] -> MusUiContactUtil::CheckPbContactForVSAddressesL" );
- return ret;
-}
-// -----------------------------------------------------------------------------
-// @function MatchTextWithPbFieldsL
-// searches all contactId´s fieldIds of same type for a text
-// returns ETrue if text is found from at least one of them.
-// -----------------------------------------------------------------------------
-//
-TBool MusUiContactUtil::MatchTextWithPbFieldsL( CCoeEnv& aEnv,
- TPbkFieldId aFieldId,
- const TDesC& aText,
- TInt aContactId )
-{
- MUS_LOG( "mus: [MUSUI ] -> MusUiContactUtil::MatchTextWithPbFieldsL" );
-
- TBool textMatch(EFalse);
-
- RPbkViewResourceFile pbkResourceFile(aEnv);
- CleanupClosePushL( pbkResourceFile );
- pbkResourceFile.OpenL();
- CPbkContactEngine* pbkContactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( pbkContactEngine );
- CPbkContactItem* contactItem = NULL;
- CleanupStack::PushL( contactItem );
-
- if ( aContactId > 0 )
- {
- contactItem = pbkContactEngine->OpenContactL( aContactId );
-
- TInt index(0);
-
- while(index!=KErrNotFound)
- {
- TPbkContactItemField* contactItemField =
- contactItem->FindField( aFieldId, index );
-
- if( contactItemField )
- {
- if( contactItemField->Text() == aText && !textMatch )
- {
- textMatch=ETrue;
- }
- }
-
- if( index != KErrNotFound )
- {
- index++;
- }
- }
-
- }
-
- CleanupStack::PopAndDestroy( 3 ); // contactItem, pbkContactEngine, &pbkResourceFile
-
- MUS_LOG( "mus: [MUSUI ] <- MusUiContactUtil::MatchTextWithPbFieldsL" );
- return textMatch;
-
-}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiContactUtil::ActivateContactViewL( CCoeEnv& aEnv,
- TContactItemId aId,
- const TDesC& aTypedAddress,
- const TDesC& aMusTelNumberValue )
- {
- MUS_LOG( "mus: [MUSUI ] -> MusUiContactUtil::ActivateContactViewL" );
- RPbkViewResourceFile pbkResourceFile( aEnv );
- CleanupClosePushL( pbkResourceFile );
- pbkResourceFile.OpenL();
- CPbkContactEngine* pbkContactEngine = CPbkContactEngine::NewL();
- CleanupStack::PushL( pbkContactEngine );
-
- CPbkContactItem* contactItem = NULL;
- CleanupStack::PushL( contactItem );
-
- if ( aId > 0 )
- {
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::ActivateContactViewL\
- TContactItemId > 0 => Opening Existing Contact..." );
- contactItem = pbkContactEngine->OpenContactL( aId );
- EditContactL( *contactItem,
- EFalse,
- pbkContactEngine,
- aTypedAddress,
- aMusTelNumberValue,
- aId );
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::ActivateContactViewL\
- TContactItemId < 1 => Creating new Contact..." );
- contactItem = pbkContactEngine->CreateEmptyContactL();
- EditContactL( *contactItem,
- ETrue,
- pbkContactEngine,
- aTypedAddress,
- aMusTelNumberValue,
- aId );
- }
-
- CleanupStack::PopAndDestroy( 3 ); // contactItem, pbkContactEngine, &pbkResourceFile
- MUS_LOG( "mus: [MUSUI ] <- MusUiContactUtil::ActivateContactViewL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiContactUtil::EditContactL( CPbkContactItem& aContact,
- TBool aNewOne,
- CPbkContactEngine* aPbkContactEngine,
- const TDesC& aTypedAddress,
- const TDesC& aMusTelNumberValue,
- TContactItemId aContactId )
- {
- MUS_LOG( "mus: [MUSUI ] -> MusUiContactUtil::EditContactL" );
-
- TMusEngUriParser parser( aTypedAddress );
- parser.ParseUriL();
- HBufC* uri = NULL;
- CleanupStack::PushL( uri );
-
- CContactTextField* addressField = NULL;
- CleanupStack::PushL( addressField );
-
- if ( parser.UriType() == TMusEngUriParser::ESip )
- {
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::EditContactL\
- parser.UriType() == TMusEngUriParser::ESip" );
- addressField = EditableContactFieldL(
- aContact,
- EPbkFieldIdShareView,
- aPbkContactEngine );
- uri = parser.GetUri16L( ETrue );
- }
- else if ( parser.UriType() == TMusEngUriParser::ETel )
- {
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::EditContactL\
- parser.UriType() == TMusEngUriParser::ETel" );
- addressField = EditableContactFieldL(
- aContact,
- EPbkFieldIdPhoneNumberMobile,
- aPbkContactEngine );
- uri = parser.GetUri16L( EFalse );
- }
-
- if ( addressField )
- {
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::EditContactL\
- addressField OK" );
- addressField->SetTextL( *uri );
- }
-
- if ( ( aMusTelNumberValue.Length() > 0 ) && aContactId == KErrNotFound )
- {
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::EditContactL\
- !iPhoneNumberFieldFound" );
- CContactTextField* phoneNumberField = EditableContactFieldL(
- aContact,
- EPbkFieldIdPhoneNumberMobile,
- aPbkContactEngine );
- if ( phoneNumberField )
- {
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::EditContactL\
- phoneNumberField OK" );
- phoneNumberField->SetTextL( aMusTelNumberValue );
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::EditContactL: Creating dialog..." );
-
- // Bring MuSh UI foreground
- RWsSession wsSession;
- User::LeaveIfError( wsSession.Connect() );
- CleanupClosePushL( wsSession );
- TApaTaskList taskList( wsSession );
- TUid appUid;
- appUid.iUid = KMusUiUid;
- TApaTask task = taskList.FindApp( appUid );
- task.BringToForeground();
- CleanupStack::PopAndDestroy( &wsSession );
-
- // Launch pbk new entry editor dlg
- CPbkContactEditorDlg* editorDlg = CPbkContactEditorDlg::NewL(
- *aPbkContactEngine,
- aContact,
- aNewOne,
- -1, // Move focus to the topmost field
- ETrue );
- editorDlg->ResetWhenDestroyed( &editorDlg );
- editorDlg->HideExitCommand();
- editorDlg->ExecuteLD();
-
- CleanupStack::Pop( 2 ); // uri, addressField
-
- MUS_LOG( "mus: [MUSUI ] <- MusUiContactUtil::EditContactL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Get editable contact field.
-// -----------------------------------------------------------------------------
-//
-CContactTextField* MusUiContactUtil::EditableContactFieldL(
- CPbkContactItem& aContact,
- TInt aFieldId,
- CPbkContactEngine* aPbkContactEngine )
- {
- MUS_LOG( "mus: [MUSUI ] -> MusUiContactUtil::EditableContactFieldL" );
-
- // Get fields info from pbk engine
- const CPbkFieldsInfo& fieldsInfo = aPbkContactEngine->FieldsInfo();
-
- // Try to get the SIP URI storage field for this contact
- TPbkContactItemField* itemField = aContact.FindField( aFieldId );
-
- if ( !itemField )
- {
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::EditableContactFieldL: !itemField" );
- CPbkFieldInfo* fieldInfo = fieldsInfo.Find( aFieldId );
- // Add field to this contact
- if ( fieldInfo )
- {
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::EditableContactFieldL\
- fieldInfo OK" );
- // Contact takes ownership of the field.
- aContact.AddFieldL( *fieldInfo );
- itemField = aContact.FindField( aFieldId );
- return ( itemField ) ? itemField->TextStorage() : NULL;
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::EditableContactFieldL\
- fieldInfo == NULL" );
- return NULL;
- }
- }
- else
- {
- // Does not pass ownership.
- MUS_LOG( "mus: [MUSUI ] MusUiContactUtil::EditableContactFieldL\
- itemField OK" );
- return itemField->TextStorage();
- }
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuidialogutil.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-/*
-* Copyright (c) 2006 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:
-*
-*/
-
-
-#include "musuidialogutil.h"
-#include <musui.rsg>
-
-#include <AknGlobalConfirmationQuery.h>
-#include <aknnotewrappers.h>
-#include <AknGlobalNote.h>
-#include <aknlistquerydialog.h>
-#include <StringLoader.h>
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool MusUiDialogUtil::ShowGlobalConfirmationQueryDialogL( const TDesC& aPrompt )
- {
- CAknGlobalConfirmationQuery* dlg = CAknGlobalConfirmationQuery::NewLC();
- TRequestStatus status;
- dlg->ShowConfirmationQueryL( status, aPrompt, R_AVKON_SOFTKEYS_YES_NO );
- User::WaitForRequest( status );
- CleanupStack::PopAndDestroy( dlg );
- return ( status == EAknSoftkeyYes ) ? ETrue : EFalse;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiDialogUtil::ShowInformationDialogL( const TDesC& aPrompt )
- {
- CAknInformationNote* dlg = new ( ELeave ) CAknInformationNote( ETrue );
- dlg->ExecuteLD( aPrompt );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiDialogUtil::ShowInformationDialogL( TInt aResourceId )
- {
- HBufC* dlgPrompt = StringLoader::LoadLC( aResourceId );
- ShowInformationDialogL( *dlgPrompt );
- CleanupStack::PopAndDestroy( dlgPrompt );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiDialogUtil::ShowGlobalInformationDialogL( const TDesC& aMessage )
- {
- TRequestStatus status;
- CAknGlobalNote* dlg= CAknGlobalNote::NewLC();
- dlg->ShowNoteL( status, EAknGlobalInformationNote, aMessage );
- User::WaitForRequest( status );
- CleanupStack::PopAndDestroy( dlg );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiDialogUtil::ShowGlobalInformationDialogL( TInt aResourceId )
- {
- HBufC* dlgPrompt = StringLoader::LoadLC( aResourceId );
- ShowGlobalInformationDialogL( *dlgPrompt );
- CleanupStack::PopAndDestroy( dlgPrompt );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiDialogUtil::ShowGlobalErrorDialogL( const TDesC& aMessage )
- {
- CAknGlobalNote* dlg = CAknGlobalNote::NewLC();
- dlg->ShowNoteL( EAknGlobalErrorNote, aMessage );
- CleanupStack::PopAndDestroy( dlg );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiDialogUtil::ShowGlobalErrorDialogL( TInt aResourceId )
- {
- HBufC* dlgPrompt = StringLoader::LoadLC( aResourceId );
- ShowGlobalErrorDialogL( *dlgPrompt );
- CleanupStack::PopAndDestroy( dlgPrompt );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiDialogUtil::ShowGlobalErrorModalDialogL( const TDesC& aMessage )
- {
- CAknGlobalNote* dlg = CAknGlobalNote::NewLC();
- TRequestStatus status;
- dlg->ShowNoteL( status , EAknGlobalErrorNote, aMessage );
- User::WaitForRequest( status );
- CleanupStack::PopAndDestroy( dlg );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiDialogUtil::ShowGlobalErrorModalDialogL( TInt aResourceId )
- {
- HBufC* dlgPrompt = StringLoader::LoadLC( aResourceId );
- ShowGlobalErrorModalDialogL( *dlgPrompt );
- CleanupStack::PopAndDestroy( dlgPrompt );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool MusUiDialogUtil::SelectAddressDialogL( CDesCArray* aAddressArray,
- TDes& aSelectedAddress )
- {
- __ASSERT_ALWAYS( aAddressArray, User::Leave( KErrArgument ) );
- __ASSERT_ALWAYS( aAddressArray->Count() > 0, User::Leave( KErrArgument ) );
-
- TInt selectedIndex( 0 );
- CAknListQueryDialog* dlg = new ( ELeave ) CAknListQueryDialog( &selectedIndex );
- dlg->PrepareLC( R_MUS_LIVESHARINGVIEW_ADDRESS_QUERY );
- dlg->SetItemTextArray( aAddressArray );
- dlg->SetOwnershipType( ELbmDoesNotOwnItemArray );
- TInt dlgResponse( dlg->RunLD() );
- aSelectedAddress = (*aAddressArray)[ selectedIndex ];
- delete aAddressArray;
- aAddressArray = NULL;
- return dlgResponse;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool MusUiDialogUtil::ShowTextQueryDialogL( const TDesC& aPrompt, TDes& aValue )
- {
- CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( aValue );
- CleanupStack::PushL( dlg );
- dlg->SetPromptL( aPrompt );
- CleanupStack::Pop( dlg );
- return dlg->ExecuteLD( R_MUS_TEXT_QUERY_DIALOG );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool MusUiDialogUtil::ShowTextQueryDialogL( TInt aPromptResourceId, TDes& aValue )
- {
- TBool retval( EFalse );
- HBufC* dlgPrompt = StringLoader::LoadLC( aPromptResourceId );
- retval = ShowTextQueryDialogL( *dlgPrompt, aValue );
- CleanupStack::PopAndDestroy( dlgPrompt );
- return retval;
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuidocument.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
-* 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: Document class of MUS App.
-*
-*/
-
-
-
-#include "musuidocument.h" // Header for this class
-#include "musuiappui.h" // Application UI class
-
-#include <AknGlobalNote.h>
-#include <musui.rsg>
-
-
-// -----------------------------------------------------------------------------
-// CMusUiDocument::CMusUiDocument
-// C++ default constructor.
-// -----------------------------------------------------------------------------
-CMusUiDocument::CMusUiDocument( CEikApplication& aApp ) : CAknDocument( aApp )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusUiDocument::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-CMusUiDocument* CMusUiDocument::NewL( CEikApplication& aApp )
- {
- CMusUiDocument* self = new( ELeave ) CMusUiDocument( aApp );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusUiDocument::ConstructL
-// Symbian 2nd phase constructor.
-// -----------------------------------------------------------------------------
-void CMusUiDocument::ConstructL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusUiDocument::~CMusUiDocument
-// Destructor.
-// -----------------------------------------------------------------------------
-CMusUiDocument::~CMusUiDocument()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusUiDocument::CreateAppUiL()
-// Constructs CMusUiAppUi.
-// -----------------------------------------------------------------------------
-CEikAppUi* CMusUiDocument::CreateAppUiL()
- {
- return new ( ELeave ) CMusUiAppUi( );
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuieventcontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1124 +0,0 @@
-/*
-* 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: Application's UI class.
-*
-*/
-
-
-
-#include "musuieventcontroller.h"
-#include "musuieventobserver.h"
-#include "musuisharingobserver.h"
-#include "musuipropertywatch.h"
-#include "musuicallbackservice.h"
-#include "musuiactivitymanger.h"
-#include "musuifileutil.h"
-#include "musuidialogutil.h"
-#include "musuicontactutil.h"
-#include "mussessionproperties.h"
-#include "musuibitmapdecoder.h"
-#include "muscommon.h"
-#include "mussettings.h"
-#include "musenguriparser.h"
-#include "musuimmcmonitor.h"
-#include "musresourceproperties.h"
-#include "musuiresourcehandler.h"
-#include "musui.hrh"
-#include "muslogger.h" // debug logging
-#include "musuigeneralview.h"
-
-#include "musengmcesession.h"
-
-#include <musui.rsg>
-
-#include <fbs.h>
-#include <e32property.h>
-
-#include <StringLoader.h>
-#include <pathinfo.h>
-#include <featmgr.h>
-#include <bldvariant.hrh> // for feature definitions
-#include <pathconfiguration.hrh>
-
-#include <hlplch.h> // HlpLauncher
-#include <AknUtils.h>
-#include <telmicmutestatuspskeys.h>
-
-using namespace MusSettingsKeys;
-using namespace NMusSessionApi;
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiEventController::~CMusUiEventController()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::~CMusUiEventController" );
- delete iStatusPropertyWatch;
- delete iContactName;
- delete iTelNumber;
- delete iVideoCodec;
- delete iDialogPrompt;
- delete iCallbackService;
- delete iMmcMonitor;
- delete iActivityManager;
- delete iMicMuteStatusPropertyWatch;
- FeatureManager::UnInitializeLib();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::~CMusUiEventController" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::ConstructL" );
-
- TInt error( KErrNotFound );
-
- FeatureManager::InitializeLibL();
-
- iCallbackService = CMusUiCallbackService::NewL( *this );
-
- // read ps properties (no need to read again later)
-
- TRAP( error, iVideoCodec = CMusUiPropertyWatch::ReadDescPropertyL(
- KVideoCodecs ) );
- if ( error != KErrNone )
- {
- iVideoCodec = KNullDesC().AllocL();
- }
-
- TRAP( error, iTelNumber = CMusUiPropertyWatch::ReadDescPropertyL(
- KTelNumber ) );
- if ( error != KErrNone )
- {
- iTelNumber = KNullDesC().AllocL();
- }
-
- TRAP( error, iSipProfileId = CMusUiPropertyWatch::ReadIntPropertyL(
- NMusSessionApi::KSipProfileId ) );
- if ( error != KErrNone )
- {
- iSipProfileId = KErrNotFound;
- }
-
- TRAP( error,
- iContactId = CMusUiPropertyWatch::ReadIntPropertyL( KContactId ) );
- if ( error != KErrNone )
- {
- iContactId = KErrNotFound;
- }
-
- TRAP( error, iContactName = CMusUiPropertyWatch::ReadDescPropertyL(
- KContactName ) );
-
- if ( error != KErrNone )
- {
- iContactName = KNullDesC().AllocL();
- }
-
- // follow session status property
- iStatusPropertyWatch = CMusUiPropertyWatch::NewL(
- *this,
- NMusSessionApi::KCategoryUid,
- KStatus );
-
- iMmcMonitor = CMusUiMmcMonitor::NewL( *this );
-
- iResourceHandler = iEventObserver.ResourceHandler();
- __ASSERT_ALWAYS( iResourceHandler, User::Leave( KErrNotFound ) );
-
- //Mic mute status property
- iMicMuteStatusPropertyWatch = CMusUiPropertyWatch::NewL(
- *this,
- KPSUidTelMicrophoneMuteStatus,
- KTelMicrophoneMuteState );
-
- // start monitoring activity
- iActivityManager = CMusUiActivityManager::NewL( KMusBacklightTimeOut );
- iActivityManager->Reset();
-
- // check if operator specific functionality is needed
- iOperatorSpecificFunctionality =
- ( MultimediaSharingSettings::OperatorVariantSettingL() ==
- EOperatorSpecific );
-
- iShutdownState = EMusUiShutdownNotDefined;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiEventController::CMusUiEventController(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver )
- : iEventObserver( aEventObserver ),
- iSharingObserver( aSharingObserver ),
- iForeground( ETrue ),
- iShowDialog( EFalse ),
- iActiveCall( ETrue )
-
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by CMusUiPropertyWatch, when resource key values change in P&S
-// Sets the member values common to all sharing types.
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::PropertyChanged( const TUint aKey,
- const TInt aValue )
- {
- MUS_LOG2( "mus: [MUSUI ] -> CMusUiEventController::ResourcePropertyChanged:\
- aKey: [%u] aValue: [%d]", aKey, aValue );
- switch( aKey )
- {
- case KTelMicrophoneMuteState:
- {
- if ( aValue == EPSTelMicMuteOff)
- {
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarUnmute,
- EMusuiCmdToolbarMute,ETrue );
- }
- else if ( aValue == EPSTelMicMuteOn )
- {
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarMute,
- EMusuiCmdToolbarUnmute,ETrue );
- }
- break;
- }
- case KStatus:
- {
- TRAP_IGNORE(
- HandleChangedStatusL( ( TMusAvailabilityStatus ) aValue ) );
- break;
- }
- default:
- {
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::ResourcePropertyChanged" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::HandlePropertyError( const TInt aReason )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiEventController::HandleError [%d]",
- aReason );
-
- HandleError( aReason );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::HandleError" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::HandleAsyncEventL( TMusUiAsyncEvent aEventId )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiEventController::HandleAsyncEventL [%d]",
- aEventId );
-
- switch ( aEventId )
- {
- case EMusUiAsyncHandleExit:
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiEventController::\
- HandleAsyncEventL: EMusUiAsyncHandleExit" );
- HandleExitL();
- break;
- }
- default:
- {
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::HandleAsyncEventL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiEventController::HandleAsyncError( TInt aError )
- {
- iEventObserver.HandleError( aError ); // Stop the execution
-
- return KErrNone;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::MmcRemoved()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::MmcRemoved" );
- TRAP_IGNORE( MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SHARING_ENDED ) )
-
- iEventObserver.HandleExit();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::MmcRemoved" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::SessionEstablished()
- {
- TRAPD( error, iSharingObserver.ShowStatusPaneTitleL() )
-
- if ( error != KErrNone )
- {
- iEventObserver.HandleError( error );
- }
-
- if ( MUS_NO_TOOLBAR )
- {
- TRAPD( error, iSharingObserver.EnableMiddleSoftkeyL( IsLoudSpeakerEnabled() ?
- R_MUSUI_VIEW_OPS_MSK_IHF_OFF :
- R_MUSUI_VIEW_OPS_MSK_IHF_ON ));
- if ( error != KErrNone )
- {
- iEventObserver.HandleError( error );
- }
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::AudioRoutingChanged( TBool aShowNote )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::AudioRoutingChanged" );
-
- if ( aShowNote )
- {
- if ( IsLoudSpeakerEnabled() )
- {
- MUS_LOG( "mus: [MUSUI ] show activated note" );
- TRAP_IGNORE(
- MusUiDialogUtil::ShowGlobalInformationDialogL( R_MUS_NOTE_HF_ACTIVATED ) )
- }
- }
-
- iSharingObserver.RefreshAudioRoutingToolbarButton();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::AudioRoutingChanged" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::AudioRouteChangeAllowed() const
- {
- // Do not allow audio routing if call has ended
- return iActiveCall;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::VolumeChanged( TInt aVolume, TBool aAudioRouteChanged )
- {
- // Set Volume:
- //If volume changed due to audio route change, we want to update volume
- //popup control only if it is already visible
- TBool onlyIfVisible = aAudioRouteChanged;
- TRAP_IGNORE( iSharingObserver.ActivateVolumeControlL(aVolume, onlyIfVisible) );
- }
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::SetRect(const TRect& aRect)
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::SetRect" );
-
- if ( EngineSession() )
- {
- TRAPD( err, EngineSession()->SetRectL( aRect ) );
- if ( err != KErrNone )
- {
- iEventObserver.HandleError( err );
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::SetRect" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMusUiEventController::MusContactName()
- {
- return *iContactName;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMusUiEventController::MusVideoCodecValue()
- {
- return *iVideoCodec;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMusUiEventController::MusTelNumberValue()
- {
- MUS_LOG_TDESC("mus: [MUSUI ] <> CMusUiEventController::MusTelNumberValue()",
- iTelNumber->Des() )
- return *iTelNumber;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMusUiEventController::SessionTimeFormatted(
- const TTimeIntervalSeconds& aSeconds )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::SessionTimeFormatted" );
- iTimeBuffer.SetLength( 0 );
- TLocale locale;
- _LIT( KZeroSymbol, "0" );
- TInt sessionHours( 0 );
- TInt sessionMinutes( 0 );
- TInt sessionSeconds( aSeconds.Int() );
- if ( aSeconds.Int() > ( KMusOneMinuteInSeconds - 1 ) )
- {
- sessionMinutes = (int)(aSeconds.Int() / KMusOneMinuteInSeconds );
- sessionSeconds = sessionSeconds - ( sessionMinutes * KMusOneMinuteInSeconds );
- }
- if ( sessionMinutes > ( KMusOneMinuteInSeconds - 1 ) )
- {
- sessionHours = (int)( sessionMinutes / KMusOneMinuteInSeconds );
- sessionMinutes = sessionMinutes - ( sessionHours * KMusOneMinuteInSeconds );
- }
- if ( sessionHours != 0 )
- {
- iTimeBuffer.AppendNum( sessionHours );
- iTimeBuffer.Append( locale.TimeSeparator( KMusLocaleHoursAndMinutesSeparator ) );
- if ( sessionMinutes < KMusNumberValueTen )
- {
- iTimeBuffer.Append( KZeroSymbol );
- }
- }
-
- iTimeBuffer.AppendNum( sessionMinutes );
- iTimeBuffer.Append( locale.TimeSeparator( KMusLocaleMinutesAndSecondsSeparator ) );
- if ( sessionSeconds < KMusNumberValueTen )
- {
- iTimeBuffer.Append( KZeroSymbol );
- }
- iTimeBuffer.AppendNum( sessionSeconds );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::SessionTimeFormatted" );
- return iTimeBuffer;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::SaveContactQueryL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::SaveContactQueryL" );
- if ( !MusUiContactUtil::ShareViewFieldExistsL( *iEventObserver.EikonEnv(),
- iContactId ) )
- {
- delete iDialogPrompt;
- iDialogPrompt = NULL;
- iDialogPrompt = StringLoader::LoadL( R_MUS_VIEW_SAVE_ADDRESS_QUERY_TXT );
- iEventObserver.ShowAsyncConfirmationQueryDialogL( *iDialogPrompt );
- }
- else
- {
- AsyncQueryDialogAcceptedL( EFalse );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::SaveContactQueryL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::HandleError( const TInt aError )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiEventController::HandleError %d",
- aError );
-
- iEventObserver.HandleError( aError );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::HandleError" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::ExitOccured()
- {
- return ( iShutdownState != EMusUiShutdownNotDefined );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::AudioRoutingCanBeChanged()
- {
- return ( EngineSession() && EngineSession()->AudioRoutingCanBeChanged() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::IsLoudSpeakerEnabled()
- {
- return ( EngineSession() && EngineSession()->IsLoudSpeakerEnabled() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::DeviceHasDedicatedVolumeKeys()
- {
- return FeatureManager::FeatureSupported( KFeatureIdSideVolumeKeys );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::HandleExitL( TBool aTerminateCall )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::HandleExitL" );
- if ( iShutdownState == EMusUiShutdownNotDefined )
- {
- iShutdownState = EMusUiShutdownStarted;
-
- if ( iStatusPropertyWatch )
- {
- iStatusPropertyWatch->Cancel();
- }
-
- if ( iMmcMonitor )
- {
- iMmcMonitor->Cancel();
- }
-
- if ( iActivityManager )
- {
- iActivityManager->Cancel();
- }
-
- if ( iCallbackService )
- {
- iCallbackService->Cancel();
- }
-
- iEventObserver.SetToolbarVisibility( EFalse );
-
- // This must be done before showing the end note, because showing of
- // note may cause the session to continue for extra few seconds.
- DeleteEngineSession();
- if ( iShowDialog )
- {
- MusUiDialogUtil::ShowGlobalInformationDialogL(
- R_MUS_NOTE_HF_DEACTIVATED );
- }
- // Sharing Ended note
- MusUiDialogUtil::ShowGlobalInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SHARING_ENDED );
-
- if( aTerminateCall )
- {
- iEventObserver.TerminateCall();
- }
-
- // TODO: Continue Recording query, if sharing live video and receiving end
- // terminates the sharing session
-
- ExitProcedureL( EFalse );
-
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::HandleExitL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::ExitProcedureL( TBool aUserAcceptance )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::ExitProcedureL" );
-
- iSharingObserver.DismissMenuBar();
-
- switch ( iShutdownState )
- {
- case EMusUiShutdownStarted:
- {
- MUS_LOG( "mus: [MUSUI ] ExitProcedureL: EMusUiShutdownStarted" );
- // No general functionality, skip the state
- iShutdownState = EMusUiShutdownVideoSaved;
- ExitProcedureL( EFalse );
- break;
- }
- case EMusUiShutdownVideoSaved:
- {
- MUS_LOG( "mus: [MUSUI ] ExitProcedureL: EMusuiShutdownVideoSaved" );
- iEventObserver.HandleExit();
- break;
- }
-
- case EMusUiShutdownContactSavingQueried:
- {
- MUS_LOG( "mus: [MUSUI ] ExitProcedureL: EMusUiShutdownContactSavingQueried" );
- // Stop app execution
- if ( aUserAcceptance )
- {
- if ( iResourceHandler->RequestKeypadL( EFalse ) )
- {
- MusUiContactUtil::ActivateContactViewL(
- *iEventObserver.EikonEnv(),
- iContactId,
- TypedAddress(),
- MusTelNumberValue() );
- }
- }
- iEventObserver.HandleExit();
- break;
- }
- case EMusUiShutdownOver:
- {
- iEventObserver.HandleExit();
- break;
- }
- case EMusUiShutdownNotDefined:
- default:
- {
- break;
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::ExitProcedureL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::AsyncQueryDialogAcceptedL( TBool aAccepted )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::AsyncQueryDialogAcceptedL" );
-
- if ( ExitOccured() )
- {
- ExitProcedureL( aAccepted );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::AsyncQueryDialogAcceptedL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::ConnectionEstablished() const
- {
- return iConnectionEstablished;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::SetConnectionInitialized(
- TBool aConnectionInitialized )
- {
- MUS_LOG1(
- "mus: [MUSUI ] -> CMusUiEventController::SetConnectionInitialized ( %d )",
- aConnectionInitialized );
-
- iConnectionInitialized = aConnectionInitialized;
-
- if ( !iForeground && !ExitOccured() )
- {
- TRAP_IGNORE( EnableDisplayL(EFalse) )
- }
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::ConnectionInitialized() const
- {
- return iConnectionInitialized;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::EnableDisplayL( TBool aEnable )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::EnableDisplayL" );
- if ( EngineSession() )
- {
- EngineSession()->EnableDisplayL( aEnable );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::EnableDisplayL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::ChangeOrientationL(
- CAknAppUiBase::TAppUiOrientation aOrientation )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::ChangeOrientationL" );
- iEventObserver.SwitchOrientationL( aOrientation );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::ChangeOrientationL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::IsDisplayEnabledL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::IsDisplayEnabledL" );
- TBool ret = EFalse;
- if ( EngineSession() )
- {
- ret = EngineSession()->IsDisplayEnabledL();
- }
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiEventController::IsDisplayEnabledL, %d", ret );
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::IsAudioRoutingLoudSpeaker()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::IsAudioRoutingLoudSpeaker" );
- TBool ret = EFalse;
- if ( EngineSession() )
- {
- ret = EngineSession()->IsAudioRoutingLoudSpeaker();
- }
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiEventController::IsAudioRoutingLoudSpeaker, %d", ret );
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::ToolbarVolumeSelected()
- {
- return iToolbarVolumeSelected;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::IsMicMutedL()
- {
- __ASSERT_ALWAYS( EngineSession(), User::Leave( KErrNotReady ) );
-
- return EngineSession()->IsMicMutedL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::ManualAddressTyped() const
- {
- return EFalse;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::HandleForegroundEventL( TBool aForeground )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::HandleForegroundEventL" );
-
- iForeground = aForeground;
-
- if ( ConnectionInitialized() && !ExitOccured() )
- {
- EnableDisplayL( aForeground );
-
- // Change toolbar according to a real state. Other items than speaker
- // and mic states cannot be changed from phone app and thus there is
- // no need to check them
- if ( aForeground )
- {
- if ( MUS_NO_TOOLBAR )
- {
- iSharingObserver.EnableMiddleSoftkeyL( IsLoudSpeakerEnabled() ?
- R_MUSUI_VIEW_OPS_MSK_IHF_OFF :
- R_MUSUI_VIEW_OPS_MSK_IHF_ON );
- }
- else
- {
- if ( IsMicMutedL() )
- {
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarMute,
- EMusuiCmdToolbarUnmute,
- EFalse );
- }
- else
- {
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarUnmute,
- EMusuiCmdToolbarMute,
- EFalse );
- }
-
- if ( IsLoudSpeakerEnabled() )
- {
- iSharingObserver.ReplaceToolbarCommand(
- EMusuiCmdToolbarSpeakerOn,
- EMusuiCmdToolbarSpeakerOff,
- EFalse );
- }
- else
- {
- iSharingObserver.ReplaceToolbarCommand(
- EMusuiCmdToolbarSpeakerOff,
- EMusuiCmdToolbarSpeakerOn,
- EFalse );
- }
- if ( ConnectionEstablished() )
- {
- iEventObserver.SetToolbarVisibility( aForeground );
- }
-
- }
- }
-
- }
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::HandleForegroundEventL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiEventController::IsForeground() const
- {
- return iForeground;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::OfferToolbarEventL( TInt aCommand )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiEventController::OfferToolbarEventL [%d]",
- aCommand );
-
- __ASSERT_ALWAYS( EngineSession(), User::Leave( KErrNotReady ) );
-
- switch ( aCommand )
- {
- case EMusuiCmdToolbarVolume:
- {
- iToolbarVolumeSelected = !iToolbarVolumeSelected;
- iSharingObserver.HighlightSelectedToolbarItem(
- EMusuiCmdToolbarVolume );
- iSharingObserver.ActivateVolumeControlL(
- EngineSession()->VolumeL() );
- break;
- }
- case EMusuiCmdToolbarMute:
- {
- EngineSession()->MuteMicL( ETrue );
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarMute,
- EMusuiCmdToolbarUnmute,
- ETrue );
- break;
- }
- case EMusuiCmdToolbarUnmute:
- {
- EngineSession()->MuteMicL( EFalse );
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarUnmute,
- EMusuiCmdToolbarMute,
- ETrue );
- break;
- }
- case EMusuiCmdToolbarSpeakerOff:
- {
- EngineSession()->EnableLoudspeakerL( ELoudspeakerDisabled, EFalse );
- // Toolbar will be changed when asynchronous request is completed
- break;
- }
- case EMusuiCmdToolbarSpeakerOn:
- {
- EngineSession()->EnableLoudspeakerL( ELoudspeakerEnabled, EFalse );
- // Toolbar will be changed when asynchronous request is completed
- break;
- }
- default: // Never should be the case
- {
- HandleExitL();
- break;
- }
-
- }
-
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiEventController::OfferToolbarEventL [%d]",
- aCommand );
-
- }
-
-
-// -----------------------------------------------------------------------------
-// Handles commands common to all sharing types.
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::HandleCommandL( TInt aCommand )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::HandleCommandL" );
-
- switch ( aCommand )
- {
- case EMusuiCmdViewVolumeUp:
- {
- // Set Volume:
- __ASSERT_ALWAYS( EngineSession(), User::Leave( KErrNotReady ) );
- EngineSession()->VolumeUpL();
- // Status pane update will be done later. When we get
- // VolumeChanged() callback
- break;
- }
- case EMusuiCmdViewVolumeDown:
- {
- // Set Volume:
- __ASSERT_ALWAYS( EngineSession(), User::Leave( KErrNotReady ) );
- EngineSession()->VolumeDownL();
- // Status pane update will be done later. When we get
- // VolumeChanged() callback
- break;
- }
- case EMusuiCmdViewVolumeChanged:
- {
- __ASSERT_ALWAYS( EngineSession(), User::Leave( KErrNotReady ) );
- TInt volumeFromEngine = EngineSession()->VolumeL();
- TInt volumeFromUi = iEventObserver.GetUiVolumeValue();
- if ( volumeFromUi != volumeFromEngine )
- {
- EngineSession()->SetVolumeL( volumeFromUi );
- }
- break;
- }
-
- case EMusuiCmdViewLoadspeaker:
- {
- EngineSession()->EnableLoudspeakerL( ELoudspeakerEnabled, ETrue );
- break;
- }
-
- case EMusuiCmdViewHandset:
- {
- EngineSession()->EnableLoudspeakerL( ELoudspeakerDisabled, ETrue );
- break;
- }
-
- case EMusuiCmdViewMicrophoneMute:
- {
- EngineSession()->MuteMicL( ETrue );
- break;
- }
-
- case EMusuiCmdViewMicrophoneUnmute:
- {
- EngineSession()->MuteMicL( EFalse );
- break;
- }
-
- case EMusuiCmdViewEndActiveCall:
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiReceiveController::ConstructL:\
- EMusuiCmdViewEndActiveCall" );
- HandleExitL( ETrue );
- break;
- }
- case EMusuiGenCmdExit:
- case EAknSoftkeyExit:
- {
- HandleExitL();
- break;
- }
-
- case EAknCmdHelp:
- {
- if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- HlpLauncher::LaunchHelpApplicationL(
- iEventObserver.EikonEnv()->WsSession(),
- iEventObserver.EikonEnv()->AppUi()->AppHelpContextL() );
- }
- break;
- }
-
- default:
- {
- //NOP
- break;
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::HandleCommandL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Handles status changes common to all sharing types.
-// -----------------------------------------------------------------------------
-//
-void CMusUiEventController::HandleChangedStatusL(
- TMusAvailabilityStatus aStatus )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiEventController::HandleChangedStatusL" );
- switch( aStatus )
- {
- case EErrNoActiveCall:
- {
- MUS_LOG( "mus: [MUSUI ] EErrNoActiveCall" );
- iActiveCall = EFalse;
- HandleExitL();
- break;
- }
- case EErrCallOnHold:
- case EErrConferenceCall:
- case EMultimediaSharingNotAvailable:
- {
- MUS_LOG( "mus: [MUSUI ]\
- EErrCallOnHold, EErrConferenceCall, EMultimediaSharingNotAvailable" );
- HandleExitL();
- break;
- }
- case EErrSipRegistration:
- {
- MUS_LOG( "mus: [MUSUI ] EErrSipRegistration" );
- MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SERVICE_N_A );
- HandleExitL();
- break;
- }
- case EErrRoaming:
- {
- MUS_LOG( "mus: [MUSUI ] EErrRoaming" );
- HandleExitL();
- break;
- }
- case EErrNetwork:
- {
- MUS_LOG( "mus: [MUSUI ] EErrNetwork" );
- MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SERVICE_N_A );
- HandleExitL();
- break;
- }
- case EErrConnection:
- {
- MUS_LOG( "mus: [MUSUI ] EErrConnection" );
- MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_ONLY_3G );
- HandleExitL();
- break;
- }
-
- case EErrServerShutDown:
- {
- MUS_LOG( "mus: [MUSUI ] EErrServerShutDown" );
- HandleExitL();
- break;
- }
-
- default:
- {
- MUS_LOG( "mus: [MUSUI ] Default" );
- // TODO
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::HandleChangedStatusL" );
- }
-
-
--- a/mmsharing/mmshui/src/musuifileutil.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-/*
-* Copyright (c) 2006 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:
-*
-*/
-
-
-#include "musuifileutil.h"
-#include "muslogger.h" // debug logging
-#include "musuidefinitions.h"
-#include "musuidialogutil.h"
-#include "mussettings.h"
-#include <musui.rsg>
-
-#include <f32file.h>
-#include <StringLoader.h>
-#include <AknGlobalNote.h>
-#include <apparc.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool MusUiFileUtil::FileExists( const TDesC& aFullFileName )
- {
- MUS_LOG( "mus: [MUSUI ] -> MusUiFileUtil::FileExists" );
-
- TBool fileExists( EFalse );
- RFs fs;
-
- if ( fs.Connect() == KErrNone )
- {
- TUint att;
- fileExists = ( fs.Att( aFullFileName, att ) != KErrNotFound );
- fs.Close();
- }
-
- MUS_LOG( "mus: [MUSUI ] <- MusUiFileUtil::FileExists" );
-
- return fileExists;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiFileUtil::VideoFilePathExistsL( const TDesC& aVideoFilePath)
- {
- MUS_LOG( "mus: [MUSUI ] -> MusUiFileUtil::VideoFilePathExistsL" );
-
- RFs fs;
-
- User::LeaveIfError( fs.Connect() );
- CleanupClosePushL( fs );
- TInt error = fs.MkDirAll( aVideoFilePath );
- CleanupStack::PopAndDestroy( &fs );
-
- MUS_LOG1( "mus: [MUSUI ] <- MusUiFileUtil::VideoFilePathExistsL,%d",error );
- User::Leave(error);
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiFileUtil::CreateVideoFileNameL( const TDesC& aVideoFilePath,
- TFileName& aFileName )
- {
- MUS_LOG( "mus: [MUSUI ] -> MusUiFileUtil::CreateVideoFileNameL" );
-
- RFs fs;
- TParse parse;
- TFileName fullFileName;
- TUint att;
-
- User::LeaveIfError( fs.Connect() );
- CleanupClosePushL( fs );
-
- if ( fs.Att( aVideoFilePath, att ) == KErrNone )
- {
- if ( MultimediaSharingSettings::OperatorVariantSettingL() ==
- MusSettingsKeys::EStandard )
- {
- HBufC* temp = StringLoader::LoadLC( R_MUS_VIEW_SAVED_FILENAME );
- User::LeaveIfError( parse.Set( aVideoFilePath, temp, NULL ) );
- CleanupStack::PopAndDestroy( temp );
- fullFileName = parse.FullName();
- fullFileName.Append( KMusVideoFileNameExtension );
- User::LeaveIfError(
- CApaApplication::GenerateFileName( fs, fullFileName ) );
- User::LeaveIfError( parse.Set( fullFileName, NULL, NULL ) );
- }
- else // operator specific case
- {
- RBuf newName;
- newName.CreateL( KMaxFileName );
- CleanupClosePushL( newName );
-
- TEntry entry;
- TInt i = 1;
- // path + 'VS' + date + 'V' + counter + extension
- _LIT( KFormatStringOne, "%S%S%S%S%02d%S" );
- _LIT( KFormatStringTwo, "%S%S%S%S%d%S" );
- TBuf<16> format;
- format = KFormatStringOne;
-
- // get current date
- _LIT( KDateFormat, "%F%M%D%*Y" );
- TTime time;
- time.UniversalTime();
- TBuf<6> dateString;
- time.FormatL( dateString, KDateFormat );
-
- // generate a valid filename that doesn't already exist...
- do
- {
- TPtrC driveAndPath = aVideoFilePath;
- TPtrC date = dateString;
- newName.Format( format,
- &driveAndPath, &KMusVideoFileNameBegining,
- &date, &KMusVideoFileNameVersion,
- i++, &KMusVideoFileNameExtension );
-
- if ( newName.Length() > KMaxFileName )
- {
- User::Leave( KErrOverflow );
- }
-
- if ( i >= 100 )
- {
- format = KFormatStringTwo;
- }
- } // Continue until DoesNotExist
- while ( fs.Entry( newName, entry ) == KErrNone );
-
- fullFileName.Copy( newName );
- User::LeaveIfError( parse.Set( newName, NULL, NULL ) );
-
- CleanupStack::PopAndDestroy( &newName );
- }
-
- RFile file;
- CleanupClosePushL( file );
- User::LeaveIfError(
- file.Create( fs, fullFileName, EFileWrite | EFileShareExclusive ) );
- CleanupStack::PopAndDestroy( &file );
- }
-
- CleanupStack::PopAndDestroy( &fs );
-
- aFileName = parse.Name();
-
- MUS_LOG( "mus: [MUSUI ] < - MusUiFileUtil::CreateVideoFileNameL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiFileUtil::DeleteFileL( const TDesC& aFileName )
- {
- RFs fs;
- User::LeaveIfError( fs.Connect() );
- CleanupClosePushL( fs );
- TInt error = fs.Delete( aFileName );
- if ( ( error != KErrNone ) && ( error != KErrNotFound ) )
- {
- User::Leave( error );
- }
- CleanupStack::PopAndDestroy( &fs );
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuigeneralview.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,930 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#include "musuigeneralview.h"
-#include "musui.hrh"
-#include "musuiappui.h" // Application UI class
-#include "musuistatuspanehandler.h"
-#include "musuieventcontroller.h"
-#include "musuiviewcontainer.h"
-#include "musuidefinitions.h"
-#include "mussettings.h"
-#include "mussettingskeys.h"
-#include "muslogger.h" // debug logging
-#include "musuiactivetimer.h"
-#include "musuibackgroundviewcontainer.h"
-#include <musui.rsg>
-#include <musui.mbg>
-
-#include <eikenv.h> // Eikon enviroment
-#include <aknViewAppUi.h>
-#include <avkon.hrh>
-#include <eikmenup.h>
-#include <akntoolbar.h>
-#include <aknbutton.h>
-#include <AknIncallBubbleNotify.h>
-#include <featmgr.h>
-
-const TInt KBackgroundIntervalForClose = 10 * 1000 * 1000; // 10s
-const TInt KMusFgBgEventFiltering = 200 * 1000; // 200 ms
-
-// -----------------------------------------------------------------------------
-// EPOC two-phased constructor
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::ConstructL" );
-
- BaseConstructL( R_MUSUI_VIEW );
- TInt toolbarId = R_MUS_TOOLBAR;
- if (!AknLayoutUtils::PenEnabled())
- {
- toolbarId = R_MUS_TOOLBAR_NONTOUCH;
- }
- CreateAndSetToolbarL(toolbarId);
-
- // check if operator specific functionality is needed
- iOperatorSpecificFunctionality =
- ( MultimediaSharingSettings::OperatorVariantSettingL() ==
- MusSettingsKeys::EOperatorSpecific );
-
- iIncallBubble = CAknIncallBubble::NewL();
- iSessionEndTimer = CMusUiActiveTimer::NewL( this );
-
- iFgBgTimer = CMusUiActiveTimer::NewL( this );
-
- if( MUS_NO_TOOLBAR )
- {
- MUS_LOG( "mus: [MUSUI ] Operator variant hides toolbar!" );
- Toolbar()->SetToolbarVisibility( EFalse );
- Toolbar()->MakeVisible(EFalse);
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CMusUiGeneralView::~CMusUiGeneralView()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::~CMusUiGeneralView" );
-
- delete iSessionEndTimer;
-
- delete iFgBgTimer;
-
- if ( iIncallBubble )
- {
- TRAP_IGNORE( iIncallBubble->SetIncallBubbleAllowedInUsualL( ETrue ) )
- }
- delete iIncallBubble;
-
- /* Remove and delete background container */
- if ( iBackgroundContainer )
- {
- AppUi()->RemoveFromViewStack( *this, iBackgroundContainer );
- }
- delete iBackgroundContainer;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::~CMusUiGeneralView" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Fetches a pointer to the application's AppUi class ( CMusUiAppUi )
-// -----------------------------------------------------------------------------
-//
-CMusUiAppUi* CMusUiGeneralView::MusAppUi() const
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiGeneralView::MusAppUi()" );
- return static_cast<CMusUiAppUi*>( iEikonEnv->AppUi() );
- }
-
-
-
-// -----------------------------------------------------------------------------
-// To be overridden in subclasses
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::HandleKeyUpEvent( TInt /*aKeyCode*/ )
- {
- // NOP
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::SetToolbarVisibility( TBool aVisible )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiGeneralView::SetToolbarVisibility: %d",
- aVisible );
-
- if( MUS_NO_TOOLBAR )
- {
- MUS_LOG( "mus: [MUSUI ] Operator variant hides toolbar!" );
- Toolbar()->SetToolbarVisibility( EFalse );
- Toolbar()->MakeVisible(EFalse);
- return;
- }
-
- // Show toolbar only after established session and before of exit procedure
- if ( aVisible &&
- EventController() &&
- !EventController()->ExitOccured() &&
- EventController()->ConnectionEstablished() )
- {
- MUS_LOG( "mus: [MUSUI ] setting toolbar visible" );
-
- if ( SharingContainer().WaitDialogShown() )
- {
- // Cannot show toolbar at the moment as it would go over the dialog.
- // Instead, request container to set visibility once dialog
- // is dismissed.
- SharingContainer().RequestToolbarVisibilityOnceDialogDismissed( this );
- }
- else
- {
- Toolbar()->SetToolbarVisibility( ETrue );
- Toolbar()->MakeVisible(ETrue);
- }
- }
- else if ( !aVisible && EventController()->ExitOccured() )
- {
- Toolbar()->SetToolbarVisibility( EFalse );
- Toolbar()->MakeVisible(EFalse);
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] We do not set fixed toolbar invisible" );
- if (!AknLayoutUtils::PenEnabled())
- {
- Toolbar()->SetToolbarVisibility( EFalse );
- Toolbar()->MakeVisible(EFalse);
- }
-
- SharingContainer().RequestToolbarVisibilityOnceDialogDismissed( NULL );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::SetToolbarVisibility" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::AsyncQueryDialogAcceptedL( TBool aAccepted )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::AsyncQueryDialogAcceptedL" );
-
- EventControllerL().AsyncQueryDialogAcceptedL( aAccepted );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::AsyncQueryDialogAcceptedL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiGeneralView::FocusedToolbarItem() const
- {
- MUS_LOG( "mus: [MUSUI ] <-> CMusUiGeneralView::FocusedToolbarItem" );
- return Toolbar()->FocusedItem();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::DynInitToolbarL( TInt /*aResourceId*/,
- CAknToolbar* /*aToolbar*/ )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::DynInitToolbarL" );
-
- Toolbar()->SetWithSliding( EFalse );
-
- // Hide items according to states of speaker and microphone:
-
- Toolbar()->HideItem( EventControllerL().IsMicMutedL() ?
- EMusuiCmdToolbarMute :
- EMusuiCmdToolbarUnmute,
- ETrue,
- ETrue );
-
- TBool loudSpeakerEnabled( EventControllerL().IsLoudSpeakerEnabled() );
-
- Toolbar()->HideItem( loudSpeakerEnabled ?
- EMusuiCmdToolbarSpeakerOn :
- EMusuiCmdToolbarSpeakerOff,
- ETrue,
- ETrue );
-
- // Dim audio routing button if audio routing cannot be changed
- // or when some button is selected
- TBool dimAudioRouting( iToolbarItemSelected ||
- !EventControllerL().AudioRoutingCanBeChanged() );
-
- Toolbar()->SetItemDimmed( loudSpeakerEnabled ?
- EMusuiCmdToolbarSpeakerOff :
- EMusuiCmdToolbarSpeakerOn,
- dimAudioRouting,
- ETrue );
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::DynInitToolbarL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::OfferToolbarEventL( TInt aCommand )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiGeneralView::OfferToolbarEventL: %d",
- aCommand );
- EventControllerL().OfferToolbarEventL( aCommand );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::OfferToolbarEventL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiGeneralView::ShowWaitDialogL( const TDesC& aPrompt,
- TInt aTimerInSeconds,
- TInt aExpirationMessageResourceId )
- {
- MUS_LOG_TDESC( "mus: [MUSUI ] -> CMusUiGeneralView::ShowWaitDialogL: ",
- aPrompt );
-
- TBool retVal = SharingContainer().RunWaitDialogL(
- aPrompt,
- aTimerInSeconds,
- aExpirationMessageResourceId );
-
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiGeneralView::ShowWaitDialogL: retVal = %d",
- retVal )
-
- return retVal;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::DismissWaitDialogL( TBool aReturnValue )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::DismissWaitDialogL" );
-
- SharingContainer().DismissWaitDialogL( aReturnValue );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::DismissWaitDialogL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::SetWaitDialogCallbackL( MProgressDialogCallback* aCallback )
- {
- SharingContainer().SetWaitDialogCallbackL( aCallback );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::ShowStatusPaneTitleL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::ShowStatusPaneTitleL" );
-
- MusAppUi()->MusStatusPane()->ActivateNaviPaneMediaL();
-
- // Status Pane Title:
- if ( EventControllerL().MusContactName().Length() > 0 )
- {
- MusAppUi()->MusStatusPane()->SetTitleL(
- EventControllerL().MusContactName() );
- }
- else if ( EventControllerL().MusTelNumberValue().Length() > 0 )
- {
- MusAppUi()->MusStatusPane()->SetTitleL(
- EventControllerL().MusTelNumberValue() );
- }
- else
- {
- MusAppUi()->MusStatusPane()->SetTitleFromResourceL(
- R_MUS_LIVE_SHARING_VIEW_TITLE );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::ShowStatusPaneTitleL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::EnableMiddleSoftkeyL( TInt aResourceId )
- {
- // Update Middle softkey
- CEikButtonGroupContainer* cba = Cba();
- if ( cba )
- {
- cba->SetCommandL( CEikButtonGroupContainer::EMiddleSoftkeyPosition,
- aResourceId );
- cba->DrawDeferred();
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::ActivateVolumeControlL( TInt aValue, TBool aOnlyIfVisible )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::ActivateVolumeControlL" );
- MusAppUi()->MusStatusPane()->ActivateVolumeControlL( aValue, aOnlyIfVisible );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::ActivateVolumeControlL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::HighlightSelectedToolbarItem( TInt aCommand )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::HightlightSelectedToolbarItem" );
- iToolbarItemSelected = !iToolbarItemSelected;
- CAknButton* button = static_cast<CAknButton*>( Toolbar()->ControlOrNull(
- aCommand ) );
- button->SetCurrentState( iToolbarItemSelected ? 1 : 0, ETrue );
-
- TBool dimAudioRouting( iToolbarItemSelected ||
- !( EventController() &&
- EventController()->AudioRoutingCanBeChanged() ) );
-
- for ( TInt i = EMusuiCmdToolbarVolume; i < EMusUiCmdToolbarLastIndex; i++ )
- {
- // Undim audio routing buttons only if changing the routing is allowed
- if ( i == EMusuiCmdToolbarSpeakerOn )
- {
- Toolbar()->SetItemDimmed(
- EMusuiCmdToolbarSpeakerOn,
- dimAudioRouting,
- ETrue );
- }
- else if ( i == EMusuiCmdToolbarSpeakerOff )
- {
- Toolbar()->SetItemDimmed(
- EMusuiCmdToolbarSpeakerOff,
- dimAudioRouting,
- ETrue );
- }
- else if ( i != aCommand )
- {
- Toolbar()->SetItemDimmed( i, iToolbarItemSelected, ETrue );
- }
- else
- {
- // NOP
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::HightlightSelectedToolbarItem" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::ReplaceToolbarCommand( TInt aOldCommand,
- TInt aNewCommand,
- TBool aSetNewCommandFocused )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiGeneralView::ReplaceToolbarCommand: %d",
- aNewCommand );
-
- // Hide the old item:
- Toolbar()->HideItem( aOldCommand, ETrue, EFalse );
- // Show new item:
- Toolbar()->HideItem( aNewCommand, EFalse, ETrue );
-
- TBool dimAudioRouting( iToolbarItemSelected ||
- !( EventController() &&
- EventController()->AudioRoutingCanBeChanged() ) );
-
- if ( aNewCommand == EMusuiCmdToolbarSpeakerOn ||
- aNewCommand == EMusuiCmdToolbarSpeakerOff )
- {
- // Dim audio routing button if audio routing cannot be changed
- Toolbar()->SetItemDimmed( aNewCommand,
- dimAudioRouting,
- ETrue );
- }
-
- if ( aSetNewCommandFocused &&
- !AknLayoutUtils::PenEnabled() )
- {
- TRAP_IGNORE( Toolbar()->SetFocusedItemL( aNewCommand ) );
- }
-
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiGeneralView::ReplaceToolbarCommand: %d",
- aNewCommand );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::DismissMenuBar()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::DismissMenuBar" );
- StopDisplayingMenuBar();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::DismissMenuBar" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::RefreshAudioRoutingToolbarButton()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::RefreshAudioRoutingToolbarButton" )
- TBool loudSpeakerEnabled( EventController() &&
- EventController()->IsLoudSpeakerEnabled() );
- if ( MUS_NO_TOOLBAR )
- {
- TRAP_IGNORE( EnableMiddleSoftkeyL( loudSpeakerEnabled ?
- R_MUSUI_VIEW_OPS_MSK_IHF_OFF :
- R_MUSUI_VIEW_OPS_MSK_IHF_ON ) );
- }
- else if ( Toolbar()->IsShown() )
- {
- // If toolbar is not shown, it will be refreshed automatically when shown.
- TInt focusedItem( Toolbar()->FocusedItem() );
- TBool focusInAudioRouting( focusedItem == EMusuiCmdToolbarSpeakerOff ||
- focusedItem == EMusuiCmdToolbarSpeakerOn );
-
- TBool loudSpeakerEnabled( EventController() &&
- EventController()->IsLoudSpeakerEnabled() );
-
- // Hide old audio routing buttton
- Toolbar()->HideItem( loudSpeakerEnabled ?
- EMusuiCmdToolbarSpeakerOn :
- EMusuiCmdToolbarSpeakerOff,
- ETrue,
- EFalse );
-
- // Show new audio routing button
- Toolbar()->HideItem( loudSpeakerEnabled ?
- EMusuiCmdToolbarSpeakerOff :
- EMusuiCmdToolbarSpeakerOn,
- EFalse,
- ETrue );
-
- // Dim new audio routing button if audio routing cannot be changed
- // or when some button is selected
- TBool dimAudioRouting( iToolbarItemSelected ||
- !( EventController() &&
- EventController()->AudioRoutingCanBeChanged() ) );
-
- Toolbar()->SetItemDimmed( loudSpeakerEnabled ?
- EMusuiCmdToolbarSpeakerOff :
- EMusuiCmdToolbarSpeakerOn,
- dimAudioRouting,
- ETrue );
-
- // If audio routing button has been focused, focus also the new button
- // if it is not dimmed
- if ( focusInAudioRouting &&
- !dimAudioRouting &&
- !AknLayoutUtils::PenEnabled() )
- {
- TRAP_IGNORE( Toolbar()->SetFocusedItemL( loudSpeakerEnabled ?
- EMusuiCmdToolbarSpeakerOff :
- EMusuiCmdToolbarSpeakerOn ) )
- }
-
-
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::RefreshAudioRoutingToolbarButton" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::UpdateSessionTime( const TDesC& aSessionTime )
- {
- MUS_LOG_TDESC( "mus: [MUSUI ] -> CMusUiGeneralView::UpdateSessionTime: ",
- aSessionTime );
-
- TRAPD( err, MusAppUi()->MusStatusPane()->SetLeftLabelL( aSessionTime ) );
- if ( err != KErrNone )
- {
- EventController()->HandleError( err );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::UpdateSessionTime" );
- }
-
-
-// -----------------------------------------------------------------------------
-// takes care of view command handling
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::HandleCommandL( TInt aCommand )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::HandleCommandL" );
-
- EventControllerL().HandleCommandL( aCommand );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::HandleCommandL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiEventController& CMusUiGeneralView::EventControllerL() const
- {
- __ASSERT_ALWAYS( EventController(), User::Leave( KErrNotFound ) );
-
- return *EventController();
- }
-
-
-// -----------------------------------------------------------------------------
-// Called when focus event occurs. Timer is started once coming to foreground
-// as often in such case we receive burst of foreground/background events.
-// Timer is used to filter that burst and to determine the final condition.
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::HandleForegroundEventL( TBool aForeground, TBool aExit )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiGeneralView::HandleForegroundEventL: %d",
- aForeground );
-
- SetCurrentFgBgEvent( ( aForeground ? EMusFgEvent : EMusBgEvent ) );
- iCurrentExitSetting = aExit;
-
- if ( !iFgBgTimer->IsActive() )
- {
- if ( aForeground )
- {
- MUS_LOG( "mus: [MUSUI ] delayed to fg" );
- }
- else
- {
- DoBackgroundEventL( iCurrentExitSetting );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::HandleForegroundEventL,\
-immediately to bg" );
- return;
- }
- }
-
- iFgBgTimer->After( KMusFgBgEventFiltering );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::HandleForegroundEventL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusUiActiveTimerObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::TimerComplete( CMusUiActiveTimer* aTimer )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::TimerComplete" );
-
- if ( aTimer == iSessionEndTimer )
- {
- MUS_LOG( "mus: [MUSUI ] Close application because of going \
-in background" );
-
- TRAP_IGNORE( EventControllerL().HandleExitL() )
- }
- else
- {
- TRAP_IGNORE( CompleteForegroundEventL() )
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::TimerComplete" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MEikMenuObserver, Called by framework before constructing menupane.
-// Initializes menu items common to all sharing types.
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::DynInitMenuPaneL( TInt aResourceId,
- CEikMenuPane* aMenuPane )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiGeneralView::DynInitMenuPaneL [%d]",
- aResourceId );
-
- if ( aResourceId == R_MUSUI_VIEW_MENU )
- {
-
- // Delete Single session items:
- aMenuPane->DeleteMenuItem( EMusuiCmdViewShareVideo );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewShareImage );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewShareLive );
- if ( MUS_NO_TOOLBAR )
- {
- aMenuPane->DeleteMenuItem( EventControllerL().IsMicMutedL() ?
- EMusuiCmdViewMicrophoneMute :
- EMusuiCmdViewMicrophoneUnmute );
- }
- else
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdViewMicrophoneMute );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewMicrophoneUnmute );
- }
-
- if ( !FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- aMenuPane->DeleteMenuItem( EAknCmdHelp );
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::DynInitMenuPaneL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusUiGeneralView::DoActivateL
-// From CAknView, Gets called from framework when activating this view
-// -----------------------------------------------------------------------------
-void CMusUiGeneralView::DoActivateL( const TVwsViewId& /*aPrevViewId*/,
- TUid /*aCustomMessageId*/,
- const TDesC8& /*aCustomMessage*/ )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::DoActivateL()" )
-
-
- MusAppUi()->MusStatusPane()->ClearNaviPaneL();
- MusAppUi()->MusStatusPane()->SetTitleFromResourceL(
- R_MUS_LIVE_SHARING_VIEW_TITLE );
-
- iIncallBubble->SetIncallBubbleAllowedInUsualL( EFalse );
-
- /* Draw the skin background in the client rectangle area.*/
- if ( !iBackgroundContainer )
- {
- /* Construct background container with clientrect area and
- * Ordinal position of 0 ie highest so that it draws the initial
- * skin background first.
- */
- iBackgroundContainer =
- CMusUiBackgroundViewContainer::NewL( ClientRect(), 0 );
- /* Add container to view stack so that it get view events */
- AppUi()->AddToViewStackL( *this, iBackgroundContainer );
- }
- else
- {
- /* Set the windows ordinal position to highest ie 0,
- * so that background gets priority and drawn first.
- */
- iBackgroundContainer->SetOrdinalPosition( 0 );
- }
- /* Draw the skin background now */
- iBackgroundContainer->DrawNow();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::DoActivateL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusUiGeneralView::DoDeactivate
-// From AknView, Gets called from framework when deactivating this view
-// -----------------------------------------------------------------------------
-void CMusUiGeneralView::DoDeactivate()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::DoDeactivate()" )
- if ( iBackgroundContainer )
- {
- AppUi()->RemoveFromViewStack( *this, iBackgroundContainer );
- delete iBackgroundContainer;
- iBackgroundContainer = NULL;
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::DoDeactivate()" )
- }
-
-
-// -----------------------------------------------------------------------------
-// Asynchronous completion of last fg/bg condition.
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::CompleteForegroundEventL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::CompleteForegroundEventL()" )
-
- if ( iCurrentFgBgEvent == EMusFgEvent )
- {
- DoForegroundEventL();
- }
- else if ( iCurrentFgBgEvent == EMusBgEvent && EventControllerL().IsForeground() )
- {
- // Bg handling when already at bg would cause problems in state
- // restoring phase when coming back to fg. Easiest to deal with that
- // at this level.
- DoBackgroundEventL( iCurrentExitSetting );
- }
-
- SetCurrentFgBgEvent( EMusFgBgEventNone );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::CompleteForegroundEventL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-// Complete foreground event.
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::DoForegroundEventL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::DoForegroundEventL()" )
-
- RefreshView();
-
- iSessionEndTimer->Cancel();
-
- EventControllerL().HandleForegroundEventL( ETrue );
- iIncallBubble->SetIncallBubbleAllowedInUsualL( EFalse );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::DoForegroundEventL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-// Complete background event.
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::DoBackgroundEventL( TBool aExit )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::DoBackgroundEventL()" )
-
- if ( aExit )
- {
- MUS_LOG( "mus: [MUSUI ] Go to background, \
- wait some seconds before closing..." );
- iSessionEndTimer->After( KBackgroundIntervalForClose );
- }
- if ( !MusAppUi()->ExitValue() )
- {
- MUS_LOG( "mus: [MUSUI ] Calling EventControllerL()" );
- EventControllerL().HandleForegroundEventL( EFalse );
- // If exiting, next will be called by destructor
- iIncallBubble->SetIncallBubbleAllowedInUsualL( ETrue );
- }
-
- SetCurrentFgBgEvent( EMusFgBgEventNone );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::DoBackgroundEventL()" )
- }
-
-// -----------------------------------------------------------------------------
-// Set current fg/bg condition.
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::SetCurrentFgBgEvent( TMusFgBgEventType aEventType )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiGeneralView::SetCurrentFgBgEvent() event:%d",
- aEventType )
-
- iCurrentFgBgEvent = aEventType;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiGeneralView::OperatorSpecificFunctionality() const
- {
- return iOperatorSpecificFunctionality;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiGeneralView::ToolbarPlaceHolderHeight() const
- {
- TInt toolbarPlaceHolderHeight( 0 );
- CAknAppUiBase::TAppUiOrientation orientation = MusAppUi()->AppOrientation();
- if ( !Toolbar()->IsShown() &&
- orientation == CAknAppUiBase::EAppUiOrientationPortrait &&
- AknLayoutUtils::PenEnabled() )
- {
- // In touch UI in portrait mode the toolbar
- // fills the whole lower part of the screen
- toolbarPlaceHolderHeight = Toolbar()->Size().iHeight;
- }
- return toolbarPlaceHolderHeight;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiGeneralView::ToolbarPlaceHolderWidth() const
- {
- TInt toolbarPlaceHolderWidth( 0 );
- CAknAppUiBase::TAppUiOrientation orientation = MusAppUi()->AppOrientation();
- if ( !Toolbar()->IsShown() &&
- orientation == CAknAppUiBase::EAppUiOrientationLandscape &&
- AknLayoutUtils::PenEnabled() )
- {
- // In touch UI in EAppUiOrientationLandscape mode the toolbar
- // fills the whole lower part of the screen
- toolbarPlaceHolderWidth = Toolbar()->Size().iWidth;
- }
- return toolbarPlaceHolderWidth;
- }
-
-// -----------------------------------------------------------------------------
-// Increase/Decrease background container ordinal so that other controls
-// can preceed background
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::UpdateBackgroundOrdinalPosition( TBool aUp )
- {
- // If there is no background container then do not care
- if ( iBackgroundContainer )
- {
- iBackgroundContainer->UpdateOrdinalPositionValue( aUp );
- }
- }
-
-// -----------------------------------------------------------------------------
-// Do refresh for background container only if display is disabled.
-// Refreshing if display is enabled would cause bg container
-// to draw itself on top of display area, making it invisible.
-// -----------------------------------------------------------------------------
-//
-void CMusUiGeneralView::RefreshBackgroundContainer()
- {
- if ( !iBackgroundContainer )
- {
- return;
- }
- TBool displayEnabled( EFalse );
- if ( EventController() )
- {
- TRAP_IGNORE( displayEnabled = EventController()->IsDisplayEnabledL() )
- }
-
- if ( !displayEnabled )
- {
- MUS_LOG( "mus: [MUSUI ] <-> CMusUiGeneralView::RefreshBackgroundContainer()" )
- iBackgroundContainer->SetRect( ClientRect() );
- }
- }
-
-// end of file
-
-
-
-
-
-
--- a/mmsharing/mmshui/src/musuiinvitationquery.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-#include "musuiinvitationquery.h"
-#include "musuiinvitationqueryobserver.h"
-#include "musuidefinitions.h"
-#include "musuiactivetimer.h"
-#include "muslogger.h"
-#include "musunittesting.h"
-
-#include <AknGlobalConfirmationQuery.h>
-#include <avkon.rsg>
-#include <musui.rsg>
-#include <StringLoader.h>
-
-
-// -----------------------------------------------------------------------------
-// Two phase constructor
-// -----------------------------------------------------------------------------
-//
-CMusUiInvitationQuery* CMusUiInvitationQuery::NewL(
- MMusUiInvitationQueryObserver& aView )
- {
- CMusUiInvitationQuery* self
- = new( ELeave ) CMusUiInvitationQuery( aView );
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CMusUiInvitationQuery::~CMusUiInvitationQuery()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiInvitationQuery::~CMusUiInvitationQuery" );
-
- delete iGlobalQuery;
- delete iPrompt;
-
- delete iActiveTimer;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiInvitationQuery::~CMusUiInvitationQuery" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Constructor
-// -----------------------------------------------------------------------------
-//
-CMusUiInvitationQuery::CMusUiInvitationQuery( MMusUiInvitationQueryObserver& aView )
- : CActive( EPriorityNormal ), iObserver( aView )
- {
- CActiveScheduler::Add( this );
- }
-
-
-// -----------------------------------------------------------------------------
-// Second phase constructor
-// -----------------------------------------------------------------------------
-//
-void CMusUiInvitationQuery::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiInvitationQuery::ConstructL" );
-
- iGlobalQuery = CAknGlobalConfirmationQuery::NewL();
- iPrompt = NULL;
-
- iActiveTimer = CMusUiActiveTimer::NewL( this );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiInvitationQuery::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Shows the confirmation query dialog
-// -----------------------------------------------------------------------------
-//
-void CMusUiInvitationQuery::ShowL( const TDesC& aContact )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiInvitationQuery::ShowL" );
- if ( iPrompt )
- {
- delete iPrompt;
- iPrompt = NULL;
- }
-
- iPrompt = StringLoader::LoadL(
- R_MUS_RECEIVE_VIEW_NOTE_INCOMING_VIDEO_REQUEST,
- aContact );
- if ( iActiveTimer->IsActive() )
- {
- // If Timer is active already , dont know what to do
- // It might mean a invitation ongoing.
- }
- else
- {
- iActiveTimer->After( KMusInviteExpireTimeout * KMusOneSecond );
- iGlobalQuery->ShowConfirmationQueryL(
- iStatus,
- *iPrompt,
- R_AVKON_SOFTKEYS_YES_NO );
- SetActive();
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiInvitationQuery::ShowL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Timer Expiry event.
-// -----------------------------------------------------------------------------
-//
-void CMusUiInvitationQuery::TimerComplete( CMusUiActiveTimer* /*aTimer*/ )
- {
- Cancel();
- TRAP_IGNORE( iObserver.InvitationRejectedL() );
- }
-
-
-// -----------------------------------------------------------------------------
-// CActive RunL implementation.
-// -----------------------------------------------------------------------------
-//
-void CMusUiInvitationQuery::RunL()
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiInvitationQuery::RunL [%d]", iStatus.Int() );
- iActiveTimer->Cancel();
- if ( iStatus == EAknSoftkeyYes )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiInvitationQuery::RunL: if" );
- iObserver.InvitationAcceptedL();
- }
- else // EAknSoftkeyNo
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiInvitationQuery::RunL: else" );
- iObserver.InvitationRejectedL();
- }
- Cancel();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiInvitationQuery::RunL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Cancel() will call this
-// -----------------------------------------------------------------------------
-//
-void CMusUiInvitationQuery::DoCancel()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiInvitationQuery::DoCancel" );
- iGlobalQuery->CancelConfirmationQuery();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiInvitationQuery::DoCancel" );
- }
-
-
-// -----------------------------------------------------------------------------
-// If RunL() leaves should be handled here.
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiInvitationQuery::RunError( TInt aError )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiInvitationQuery::RunError [%d]", aError );
-
- // Handle the error fully here. No cleanup needed in this case.
- // default active scheduler will panic by calling Error() if
- // it not handled here. so return KErrNone.
- aError = KErrNone;
-
- return aError;
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuilevelindicator.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,490 +0,0 @@
-/*
-* Copyright (c) 2003, 2004 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: Class for displaying level indicator icons
-*
-*/
-
-
-// USER
-#include "musuilevelindicator.h"
-#include "musuilevelindicatorobserver.h"
-#include "muslogger.h"
-#include "musresourcefinderutil.h"
-#include "musuiactivetimer.h"
-#include <musuiicons.mbg>
-#include <musui.rsg>
-
-// SYSTEM
-#include <aknslider.h>
-#include <barsread.h>
-#include <AknUtils.h>
-#include <AknsUtils.h>
-#include <data_caging_path_literals.hrh>
-#include <gulicon.h>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <AknsDrawUtils.h>
-
-
-// CONSTANTS
-const TInt KMusUiLevelDisableTime = 4000000;
-const TInt KMusUiSliderEventDelay = 300000;
-
-
-_LIT( KMyBitmapRomFile, "Z:\\resource\\apps\\musuiicons.mif" );
-//_LIT( KMyBitmapRamFile, "C:\\resource\\apps\\musuiicons.mif" );
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiLevelIndicator::CMusUiLevelIndicator(
- TInt aMinLevel,
- TInt aMaxLevel,
- MMusUiLevelIndicatorObserver* aObserver )
- : iMinLevel( aMinLevel ),
- iMaxLevel( aMaxLevel ),
- iObserver( aObserver )
- {
- MUS_LOG( "mus: mus: [MUSUI ] -> CMusUiLevelIndicator::CMusUiLevelIndicator()" );
- // pass
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLevelIndicator::CMusUiLevelIndicator()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiLevelIndicator* CMusUiLevelIndicator::NewL(
- TAknOrientation aLayout,
- TInt aMinLevel,
- TInt aMaxLevel,
- CCoeControl* aParent,
- const TRect& aRect,
- MMusUiLevelIndicatorObserver* aObserver )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLevelIndicator::NewL()" );
-
- CMusUiLevelIndicator* self = NewLC( aLayout,
- aMinLevel,
- aMaxLevel,
- aParent,
- aRect,
- aObserver );
- CleanupStack::Pop( self );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLevelIndicator::NewL()" );
-
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiLevelIndicator* CMusUiLevelIndicator::NewLC(
- TAknOrientation aLayout,
- TInt aMinLevel,
- TInt aMaxLevel,
- CCoeControl* aParent,
- const TRect& aRect,
- MMusUiLevelIndicatorObserver* aObserver )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLevelIndicator::NewLC()" );
-
- CMusUiLevelIndicator* self = new ( ELeave ) CMusUiLevelIndicator(
- aMinLevel,
- aMaxLevel,
- aObserver );
- CleanupStack::PushL( self );
- self->ConstructL( aLayout, aParent, aRect );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLevelIndicator::NewLC()" );
-
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiLevelIndicator::~CMusUiLevelIndicator()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLevelIndicator::~CMusUiLevelIndicator()" );
-
- delete iSlider;
- delete iSliderEventTimer;
- delete iDisableLevelTimer;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLevelIndicator::~CMusUiLevelIndicator()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLevelIndicator::ConstructL( TAknOrientation aLayout,
- CCoeControl* aParent,
- const TRect& aRect )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLevelIndicator::ConstructL()" );
-
- SetRect(aRect);
-
- if( iMinLevel > iMaxLevel )
- {
- User::Leave( KErrArgument );
- }
-
- iDisableLevelTimer = CMusUiActiveTimer::NewL( this );
- iSliderEventTimer = CMusUiActiveTimer::NewL( this );
-
- iSlider = new CAknSlider();
-
- TResourceReader reader;
-
- if( aLayout == EAknOrientationHorizontal )
- {
- iEikonEnv->CreateResourceReaderLC( reader, R_MUS_SLIDER_HORIZONTAL );
- MUS_LOG( "mus: [MUSUI ] -> ConstructFromResourceL" );
- iSlider->ConstructFromResourceL( aParent, 0, reader);
- CleanupStack::PopAndDestroy(); // reader
- iSlider->SetRange( iMinLevel, iMaxLevel );
- iSlider->SetRect( aRect );
- }
- else
- {
- iEikonEnv->CreateResourceReaderLC( reader, R_MUS_SLIDER_VERTICAL );
- iSlider->ConstructFromResourceL( aParent, 0 ,reader);
- CleanupStack::PopAndDestroy(); // reader
- TRect rect = TRect( TPoint( (aRect.iBr.iX - iSlider->Size().iWidth),(aRect.iTl.iY) ),TSize( iSlider->Size() ) );
- iSlider->SetRect(rect);
-
- /* Draw the Min and Max Zoom */
- TParse parse;
- parse.Set( KMyBitmapRomFile, &KDC_APP_RESOURCE_DIR, NULL );
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- KAknsIIDQsnBgScreen,
- bitmap,
- mask,
- parse.FullName(),
- EMbmMusuiiconsQgn_indi_browser_tb_zoom_in,
- EMbmMusuiiconsQgn_indi_browser_tb_zoom_in_mask);
- iSlider->SetGraphics(CAknSlider::EElemEmptyLeftCap,bitmap,mask);
- AknsUtils::CreateIconL(AknsUtils::SkinInstance(),
- KAknsIIDQsnBgScreen,
- bitmap,
- mask,
- parse.FullName(),
- EMbmMusuiiconsQgn_indi_browser_tb_zoom_out,
- EMbmMusuiiconsQgn_indi_browser_tb_zoom_out_mask);
- iSlider->SetGraphics(CAknSlider::EElemEmptyRightCap,bitmap,mask);
- }
-
- iSlider->HandleResourceChange(
- KEikMessageCaptionedControlEditableStateChange );
- iSlider->SetObserver( this );
- iSlider->SetPositionIndicators( CAknSlider::EPosMarker );
- iSlider->SetTicksEnabled( EFalse );
- iSlider->EnableDrag();
- iSlider->SetStepSize( 1 );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLevelIndicator::ConstructL()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLevelIndicator::SetLevelL( TMusUiIndicatorType aType,
- TInt aLevel,
- TBool aUseTimer )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLevelIndicator::SetLevelL( %d ) ",
- aLevel );
- if ( aLevel >= iMinLevel && aLevel <= iMaxLevel )
- {
- switch(aType)
- {
- case EMusUiIndicatorTypeZoom:
- {
- iZoomLevel=aLevel;
- break;
- }
- case EMusUiIndicatorTypeBrightness:
- {
- iBrightnessLevel=aLevel;
- break;
- }
- case EMusUiIndicatorTypeDuration:
- {
- iDurationLevel=aLevel;
- break;
- }
- }
- }
-
- // Set it to the slider
- if ( !iSliderEventTimer->IsActive() )
- {
- iSlider->SetValueL( aLevel );
- }
-
- DrawNow();
-
- if ( aUseTimer )
- {
- iDisableLevelTimer->After( KMusUiLevelDisableTime );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLevelIndicator::SetLevelL()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiLevelIndicator::GetLevel( TMusUiIndicatorType aType )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLevelIndicator::GetLevel()" );
-
- TInt ret=KErrNotFound;
-
- switch(aType)
- {
- case EMusUiIndicatorTypeZoom:
- {
- ret=iZoomLevel;
- break;
- }
- case EMusUiIndicatorTypeBrightness:
- {
- ret=iBrightnessLevel;
- break;
- }
-
- case EMusUiIndicatorTypeDuration:
- {
- ret = iSlider->Value();
- break;
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLevelIndicator::GetLevel()" );
- return ret;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLevelIndicator::SetRange( TInt aMinLevel,
- TInt aMaxLevel,
- TBool aUseTimer)
- {
- MUS_LOG2( "mus: [MUSUI ] -> CMusUiLevelIndicator::SetRange( %d - %d ) ",
- aMinLevel, aMaxLevel );
-
- if( aMinLevel < aMaxLevel )
- {
- iMinLevel = aMinLevel;
- iMaxLevel = aMaxLevel;
- iSlider->SetRange( iMinLevel, iMaxLevel );
- }
-
- if ( aUseTimer )
- {
- iDisableLevelTimer->After( KMusUiLevelDisableTime );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLevelIndicator::SetRange()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLevelIndicator::SetIndicatorType( TMusUiIndicatorType aType )
- {
- iIndicatorType = aType;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TMusUiIndicatorType CMusUiLevelIndicator::GetIndicatorType()
- {
- return iIndicatorType;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLevelIndicator::SizeChanged()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLevelIndicator::SizeChanged()" );
-
- if ( iSlider )
- {
- iSlider->SetRect( Rect() );
- }
-
- DrawNow();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLevelIndicator::SizeChanged()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-void CMusUiLevelIndicator::Draw( const TRect& aRect ) const
- {
- CWindowGc& gc = SystemGc();
- gc.SetBrushColor( iEikonEnv->ControlColor( EColorWindowBackground, *this ) );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.Clear( aRect );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiLevelIndicator::CountComponentControls() const
- {
- return 1; // return nbr of controls inside this container
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to retrieve the control specified by index.
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CMusUiLevelIndicator::ComponentControl( TInt aIndex ) const
- {
- switch ( aIndex )
- {
- case 0:
- {
- return iSlider;
- }
- default:
- {
- return NULL;
- }
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLevelIndicator::HandleResourceChange( TInt aType )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLevelIndicator::HandleResourceChange()" );
-
- if( aType==KEikDynamicLayoutVariantSwitch )
- {
- if ( iSlider ) // Force a re-layout
- {
- iSlider->SetRect( Rect() );
- }
- }
-
- DrawNow();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLevelIndicator::HandleResourceChange()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLevelIndicator::HandleControlEventL( CCoeControl* aControl,
- TCoeEvent aEventType)
- {
- // No logging due to huge amount of events
-
- if ( aControl == iSlider &&
- aEventType == MCoeControlObserver::EEventStateChanged )
- {
- // Restart the disable timer if running
- if ( iDisableLevelTimer->IsActive() )
- {
- iDisableLevelTimer->After( KMusUiLevelDisableTime );
- }
-
- if ( iObserver )
- {
- iSliderEventTimer->After( KMusUiSliderEventDelay );
- }
- }
-
- // No logging due to huge amount of events
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLevelIndicator::TimerComplete( CMusUiActiveTimer* aTimer )
- {
- if ( aTimer == iSliderEventTimer )
- {
- MUS_LOG( "mus: [MUSUI ] Slider event timer complete" );
-
- if ( iObserver )
- {
- iObserver->IndicatorLevelChanged( iSlider->Value() );
- }
- }
- else if ( aTimer == iDisableLevelTimer )
- {
- MUS_LOG( "mus: [MUSUI ] Slider visibility timer complete" );
-
- if ( iObserver )
- {
- iObserver->SetLevelIndicatorVisibility( EFalse );
- }
- }
- else
- {
- // NOP
- }
- }
-
-
-
-// End of File
-
-
-
--- a/mmsharing/mmshui/src/musuilivesharingcontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,991 +0,0 @@
-/*
-* 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: Application's UI class.
-*
-*/
-
-
-
-#include "musuilivesharingcontroller.h"
-#include "musuicallbackservice.h"
-#include "musuieventobserver.h"
-#include "musuisharingobserver.h"
-#include "musuisendobserver.h"
-#include "musuilivesharingobserver.h"
-#include "musuidialogutil.h"
-#include "musenglivesession.h"
-#include "musuiresourcehandler.h"
-#include "musui.hrh"
-#include "mussettings.h"
-#include "mussettingskeys.h"
-#include "muslogger.h" // debug logging
-#include "musuigeneralview.h"
-#include "musuiactivetimer.h"
-
-#include <musui.rsg>
-#include <avkon.hrh>
-#include <StringLoader.h>
-
-#include <AknUtils.h>
-
-using namespace NMusResourceApi;
-using namespace MusSettingsKeys;
-
-const TInt KMusUiPauseResumeGuardPeriod = 500000;
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiLiveSharingController* CMusUiLiveSharingController::NewL(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiSendObserver& aSendObserver,
- MMusUiLiveSharingObserver& aLiveObserver,
- const TRect& aRect )
- {
- CMusUiLiveSharingController* self =
- new( ELeave ) CMusUiLiveSharingController( aEventObserver,
- aSharingObserver,
- aSendObserver,
- aLiveObserver );
- CleanupStack::PushL( self );
- self->ConstructL( aRect );
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiLiveSharingController::~CMusUiLiveSharingController()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::~CMusUiLiveSharingController" );
- delete iSession;
- delete iPauseResumeGuardTimer;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::~CMusUiLiveSharingController" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiLiveSharingController::CMusUiLiveSharingController(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiSendObserver& aSendObserver,
- MMusUiLiveSharingObserver& aLiveObserver )
- : CMusUiSendController( aEventObserver, aSharingObserver, aSendObserver ),
- iLiveObserver( aLiveObserver )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::ConstructL( const TRect& aRect )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::ConstructL" );
-
- CMusUiSendController::ConstructL(); // Base class construction
-
- iSession = CMusEngLiveSession::NewL( VideoFileNameL(),
- aRect,
- *this,
- *this,
- *this,
- iSipProfileId );
-
- iSession->SetAudioRoutingObserver( this );
- iSession->SetVolumeChangeObserver( this );
-
- if ( iSession->AudioRoutingCanBeChanged() && !iSession->IsAudioRoutingHeadset() )
- {
- iSession->EnableLoudspeakerL( ELoudspeakerEnabled, ETrue );
- }
-
- if ( iVideoCodec && iVideoCodec->Length() > 0 )
- {
- iSession->SetSupportedVideoCodecListL( *iVideoCodec );
- }
-
- iPauseResumeGuardTimer = CMusUiActiveTimer::NewL( NULL );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::PlayL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::PlayL" );
-
- CMusUiSendController::PlayL();
- iEventObserver.ShowNaviPaneIconL(
- (!iDiskFull) ? RecordIcon() : EMusUiNaviIconRecordNot );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::PlayL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// When orientation changed , Camera instances has to be recreated inorder
-// to receive proper orientated frames.
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::RefreshCameraOrientationL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::RefreshCameraOrientationL" );
-
- if ( EngineSession() ){
- EngineSession()->RefreshOrientationL();
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::RefreshCameraOrientationL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::PauseL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::PauseL" );
-
- CMusUiSendController::PauseL();
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::PauseL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::DeleteEngineSession()
- {
- CMusUiSendController::DeleteEngineSession();
- if ( iSession && iSession->IsAudioRoutingLoudSpeaker() )
- {
- iShowDialog = ETrue;
- }
- delete iSession;
- iSession = NULL;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngMceOutSession* CMusUiLiveSharingController::EngineOutSession()
- {
- return iSession; // Live session is CMusEngMceOutSession
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::InviteL( const TDesC& aRecipient )
- {
- MUS_LOG_TDESC( "mus: [MUSUI ] -> CMusUiLiveSharingController::InviteL:",
- aRecipient );
-
- // Registration must not be pending in this phase
- __ASSERT_ALWAYS( !iSipRegistrationPending,
- iEventObserver.HandleError( KErrNotReady ) );
-
- delete iAddress;
- iAddress = NULL;
- iAddress = aRecipient.AllocL();
-
-
- TRAPD( err, iSession->InviteL( aRecipient ) );
- MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingController::InviteL: After TRAPD" );
-
- // If address is in wrong format, Manual Address Entry Dialog
- // is displayed
- if ( err != KErrNone )
- {
- // Display the error message
- DismissWaitDialog();
- if ( !ExitOccured() )
- {
- MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_INVITE_ERROR );
- }
- if ( ( ++iTriedInvitations < 2 ) && ( err == KErrArgument ) )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingController::InviteL: iTriedInvitations < 2" );
- iManualAddressTyped = ETrue;
- iResourceHandler->RequestKeypadL( ETrue );
- iSendObserver.ManualAddressEntryL( *iRemoteSipAddressProposal );
- return;
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingController::InviteL: ++iTriedInvitations > 1" );
- HandleExitL();
- return;
- }
- }
-
- SetConnectionInitialized( ETrue );
-
- ShowInvitingWaitDialogL();
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::InviteL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::HandleSliderValueChangeL( TInt aNewLevel )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLiveSharingController::HandleSliderValueChangeL(%d)",
- aNewLevel )
-
- __ASSERT_ALWAYS( !ExitOccured(), User::Leave( KErrDied ) );
- __ASSERT_ALWAYS( iConnectionEstablished, User::Leave( KErrNotReady ) );
-
- if ( iToolbarZoomSelected )
- {
- iSession->SetZoomL( aNewLevel );
- iLiveObserver.SetZoomL( iSession->CurrentZoomL() );
- }
- else
- {
- iSession->SetBrightnessL( aNewLevel );
- iLiveObserver.SetBrightnessL( iSession->CurrentBrightnessL() );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::HandleSliderValueChangeL" )
- }
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::OfferToolbarEventL( TInt aCommand )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLiveSharingController::OfferToolbarEventL [%d]",
- aCommand );
-
- iLiveObserver.SetZoomVisible( EFalse );
- iLiveObserver.SetBrightnessVisible( EFalse );
-
- switch ( aCommand )
- {
- case EMusuiCmdToolbarPauseLive:
- {
- HandleCommandL( EMusuiCmdViewPause );
- HandlePauseResumeInToolbar();
- break;
- }
-
- case EMusuiCmdToolbarUnPauseLive:
- {
- HandleCommandL( EMusuiCmdViewContinue );
- HandlePauseResumeInToolbar();
- break;
- }
- case EMusuiCmdToolbarZoom:
- {
- iToolbarZoomSelected = !iToolbarZoomSelected;
-
- if ( iToolbarZoomSelected )
- {
- iLiveObserver.SetZoomValues( iSession->MinZoomL(),
- iSession->MaxZoomL() );
- iLiveObserver.SetZoomL( iSession->CurrentZoomL() );
- }
-
- iLiveObserver.SetZoomVisible( iToolbarZoomSelected );
- iSharingObserver.HighlightSelectedToolbarItem( EMusuiCmdToolbarZoom );
-
- break;
- }
- case EMusuiCmdToolbarBrightness:
- {
- iToolbarBrightnessSelected = !iToolbarBrightnessSelected;
-
- if ( iToolbarBrightnessSelected )
- {
- MUS_LOG1( "mus: [MUSUI ] CMusUiLiveSharingController::OfferToolbarEventL: Brightness %d",
- iSession->CurrentBrightnessL() );
-
- iLiveObserver.SetBrightnessValues( iSession->MinBrightnessL(),
- iSession->MaxBrightnessL() );
-
- iLiveObserver.SetBrightnessL( iSession->CurrentBrightnessL() );
- }
-
- iLiveObserver.SetBrightnessVisible( iToolbarBrightnessSelected );
- iSharingObserver.HighlightSelectedToolbarItem( EMusuiCmdToolbarBrightness );
-
- break;
- }
- default: // Not live specific, let the base class handle
- {
- CMusUiEventController::OfferToolbarEventL( aCommand );
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::OfferToolbarEventL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::HandleCommandL( TInt aCommand )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLiveSharingController::HandleCommandL [%d]",
- aCommand );
-
- __ASSERT_ALWAYS( !ExitOccured(), User::Leave( KErrDied ) );
-
- switch ( aCommand )
- {
- case EMusuiCmdViewPause:
- {
- UserInitiatedCameraStateChangeL(EFalse);
- break;
- }
- case EMusuiCmdViewContinue:
- {
- UserInitiatedCameraStateChangeL(ETrue);
- break;
- }
-
- case EMusuiCmdViewShareVideo:
- {
- PauseL();
- // TODO: Change to video sharing
- break;
- }
- case EMusuiCmdViewShareImage:
- {
- PauseL();
- // TODO: Change to image sharing
- break;
- }
-
- case EMusuiCmdToolbarZoom:
- {
- iToolbarZoomSelected = ETrue;
- iToolbarBrightnessSelected = EFalse;
- iLiveObserver.SetZoomValues( iSession->MinZoomL(),
- iSession->MaxZoomL() );
- iLiveObserver.SetZoomL( iSession->CurrentZoomL() );
-
- iLiveObserver.SetZoomVisible( iToolbarZoomSelected );
- break;
- }
- case EMusuiCmdViewMiddleSoftkeyOk:
- {
- HandleMiddleSoftkeyOkL();
- break;
- }
-
- case EMusuiCmdViewZoom:
- {
- ZoomL();
- break;
- }
-
- case EMusuiCmdViewZoomIn:
- {
- iLiveObserver.SetZoomVisible( MUS_NO_TOOLBAR ? iZoomSelected : iToolbarZoomSelected );
- iSession->ZoomInL();
- iLiveObserver.SetZoomL( iSession->CurrentZoomL() );
- break;
- }
- case EMusuiCmdViewZoomOut:
- {
- iLiveObserver.SetZoomVisible( MUS_NO_TOOLBAR ? iZoomSelected : iToolbarZoomSelected );
- iSession->ZoomOutL();
- iLiveObserver.SetZoomL( iSession->CurrentZoomL() );
- break;
- }
-
- case EMusuiCmdToolbarBrightness:
- {
- iToolbarZoomSelected = EFalse;
- iToolbarBrightnessSelected = ETrue;
- iLiveObserver.SetBrightnessValues( iSession->MinBrightnessL(),
- iSession->MaxBrightnessL() );
- iLiveObserver.SetBrightnessL( iSession->CurrentBrightnessL() );
-
- iLiveObserver.SetBrightnessVisible( iToolbarBrightnessSelected );
- break;
- }
- case EMusuiCmdViewBrightness:
- {
- BrightnessL();
- break;
- }
-
- case EMusuiCmdViewIncreaseBrightness:
- {
- iLiveObserver.SetBrightnessVisible( MUS_NO_TOOLBAR ? iBrightnessSelected : iToolbarBrightnessSelected );
- iSession->IncreaseBrightnessL();
- iLiveObserver.SetBrightnessL( iSession->CurrentBrightnessL() );
- break;
- }
- case EMusuiCmdViewDecreaseBrightness:
- {
- iLiveObserver.SetBrightnessVisible( MUS_NO_TOOLBAR ? iBrightnessSelected : iToolbarBrightnessSelected );
- iSession->DecreaseBrightnessL();
- iLiveObserver.SetBrightnessL( iSession->CurrentBrightnessL() );
- break;
- }
-
- case EMusuiCmdRecord:
- {
- // Show toolbar hidden while showing options menu
- iEventObserver.SetToolbarVisibility( ETrue );
-
- if ( iDiskFull )
- {
- DiskFull();
- }
- else
- {
- iSession->RecordL( ETrue );
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconRecord );
- }
- break;
- }
- case EMusuiCmdStopRecording:
- {
- // Show toolbar hidden while showing options menu
- iEventObserver.SetToolbarVisibility( ETrue );
-
- iSession->RecordL( EFalse );
- iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconRecordNot );
- break;
- }
-
- default:
- {
- // Try more general handling
- CMusUiEventController::HandleCommandL( aCommand );
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::HandleCommandL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::LevelIndicatorDismissed()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::LevelIndicatorDismissed" );
- if ( MUS_NO_TOOLBAR )
- {
- iZoomSelected = EFalse;
- iBrightnessSelected = EFalse;
- TRAP_IGNORE( iSharingObserver.EnableMiddleSoftkeyL( IsLoudSpeakerEnabled() ?
- R_MUSUI_VIEW_OPS_MSK_IHF_OFF :
- R_MUSUI_VIEW_OPS_MSK_IHF_ON ) );
- }
- else
- {
- if ( iToolbarZoomSelected )
- {
- iToolbarZoomSelected = EFalse;
- if ( !AknLayoutUtils::PenEnabled() )
- {
- TRAP_IGNORE( iSharingObserver.HighlightSelectedToolbarItem(EMusuiCmdToolbarZoom) );
- }
- }
- else if( iToolbarBrightnessSelected )
- {
- iToolbarBrightnessSelected = EFalse;
- if ( !AknLayoutUtils::PenEnabled() )
- {
- TRAP_IGNORE( iSharingObserver.HighlightSelectedToolbarItem(EMusuiCmdToolbarBrightness) );
- }
- }
-
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::LevelIndicatorDismissed" );
- }
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TMusUiNaviMediaDecorator CMusUiLiveSharingController::RecordIcon()
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingController::RecordIcon" );
-
- return (iSession->IsRecording() == EFalse) ?
- EMusUiNaviIconRecordNot :
- EMusUiNaviIconRecord;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiLiveSharingController::IsBrightnessSupported()
- {
- if ( !iSession )
- {
- return EFalse;
- }
- TRAPD( error, iSession->SetBrightnessL( iSession->CurrentBrightnessL() ) )
- return ( error == KErrNotSupported ) ? EFalse : ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiLiveSharingController::IsDiskFull()
- {
- return iDiskFull;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiLiveSharingController::ToolbarZoomSelected()
- {
- return iToolbarZoomSelected;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiLiveSharingController::ToolbarBrightnessSelected()
- {
- return iToolbarBrightnessSelected;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiLiveSharingController::ZoomSelected()
- {
- return iZoomSelected;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiLiveSharingController::BrightnessSelected()
- {
- return iBrightnessSelected;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::ZoomL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::ZoomL" );
- iZoomSelected = ETrue;
- iLiveObserver.SetZoomValues( iSession->MinZoomL(), iSession->MaxZoomL() );
- iLiveObserver.SetZoomL( iSession->CurrentZoomL() );
- iLiveObserver.SetZoomVisible( ETrue );
-
- if ( MUS_NO_TOOLBAR )
- {
- iSharingObserver.EnableMiddleSoftkeyL( R_MUSUI_VIEW_MSK_OK );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::ZoomL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::BrightnessL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::BrightnessL" );
- iBrightnessSelected = ETrue;
- iLiveObserver.SetBrightnessValues( iSession->MinBrightnessL(),
- iSession->MaxBrightnessL() );
- iLiveObserver.SetBrightnessL( iSession->CurrentBrightnessL() );
- iLiveObserver.SetBrightnessVisible( ETrue );
-
- if ( MUS_NO_TOOLBAR )
- {
- iSharingObserver.EnableMiddleSoftkeyL( R_MUSUI_VIEW_MSK_OK );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::BrightnessL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::HandleMiddleSoftkeyOkL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::HandleMiddleSoftkeyOkL" );
-
- if ( iZoomSelected )
- {
- iZoomSelected = EFalse;
- iLiveObserver.SetZoomVisible( EFalse );
- }
- else if ( iBrightnessSelected )
- {
- iZoomSelected = EFalse;
- iLiveObserver.SetBrightnessVisible( EFalse );
- }
-
- iSharingObserver.EnableMiddleSoftkeyL( IsLoudSpeakerEnabled() ?
- R_MUSUI_VIEW_OPS_MSK_IHF_OFF :
- R_MUSUI_VIEW_OPS_MSK_IHF_ON );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::HandleMiddleSoftkeyOkL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::ZoomInL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::ZoomInL" );
- iSession->ZoomInL();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::ZoomInL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::ZoomOutL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::ZoomOutL" );
- iSession->ZoomOutL();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::ZoomOutL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::IncreaseBrightnessL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::IncreaseBrightnessL" );
- iSession->IncreaseBrightnessL();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::IncreaseBrightnessL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::DecreaseBrightnessL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::DecreaseBrightnessL" );
- iSession->DecreaseBrightnessL();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::DecreaseBrightnessL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::DiskFull()
- {
- // Update the icon:
- TRAP_IGNORE( iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconRecordNot );
- DismissWaitDialog();
- // Saving ends when disk is full but streaming continues (user is notified)
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL( R_MUS_VIEW_NOTE_MEMORY_LOW ) ) );
- iDiskFull = ETrue;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::OrientationRefreshEnded()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::OrientationRefreshEnded" );
- iLiveObserver.DoRefreshView();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::OrientationRefreshEnded" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::SessionEstablished()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::SessionEstablished" );
-
- iSessionEstablished = ETrue;
-
- TRAPD( error, iResourceHandler->RequestCameraL( ETrue ) );
- if ( error != KErrNone )
- {
- MUS_LOG1( "mus: [MUSUI ] RequestCameraL leave code: %d", error )
- }
-
- CMusUiSendController::SessionEstablished(); // Base class handling
-
- iVideoToBeSaved = ETrue;
-
- MusSettingsKeys::TAutoRecord autoRecordValue = EAutoRecordOff;
- TRAPD ( errAutoRecord, autoRecordValue =
- MultimediaSharingSettings::AutoRecordSettingL() );
- if ( errAutoRecord != KErrNone )
- {
- MUS_LOG1( "mus: [MUSUI ] AutoRecordSettingL leave code: %d", errAutoRecord )
- HandleError( errAutoRecord );
- }
-
- if ( autoRecordValue != EAutoRecordOff )
- {
- TRAPD ( errRecordL, iSession->RecordL( ETrue ) );
- if ( errRecordL != KErrNone )
- {
- MUS_LOG1( "mus: [MUSUI ] RecordL leave code: %d", errRecordL )
- HandleError( errRecordL );
- }
- }
-
- TRAP_IGNORE( iEventObserver.ShowNaviPaneIconL( RecordIcon() ) )
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::SessionEstablished" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::SessionTerminated()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::SessionTerminated" );
- iSessionEstablished = EFalse;
- if ( !ExitOccured() )
- {
- DismissWaitDialog();
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::SessionTerminated" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::SessionConnectionLost()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::SessionConnectionLost" );
- iSessionEstablished = EFalse;
- DismissWaitDialog();
- if ( !ExitOccured() )
- {
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_CONNECTION_LOST ) );
- }
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::SessionConnectionLost" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::SessionFailed()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::SessionFailed" );
- iSessionEstablished = EFalse;
- if ( !ExitOccured() )
- {
- DismissWaitDialog();
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::SessionFailed" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::StreamIdle()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::StreamIdle" );
- DismissWaitDialog();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::StreamIdle" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::StreamStreaming()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::StreamStreaming" );
- //DismissWaitDialog();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::StreamStreaming" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::SessionTimeChanged(
- const TTimeIntervalSeconds& aSeconds )
- {
- if ( aSeconds.Int() > -1 )
- {
- iSharingObserver.UpdateSessionTime( SessionTimeFormatted( aSeconds ) );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::InactivityTimeout()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingController::InactivityTimeout" );
- DismissWaitDialog();
- if ( !ExitOccured() )
- {
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SERVICE_N_A ) );
- }
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::InactivityTimeout" );
- }
-
-// -----------------------------------------------------------------------------
-// Determines whether Session established or not
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiLiveSharingController::IsSessionEstablished()
- {
- return iSessionEstablished;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::HandlePauseResumeInToolbar()
- {
- TBool isPlaying( EFalse );
- TRAP_IGNORE( isPlaying = IsPlayingL() )
- if ( isPlaying )
- {
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarUnPauseLive,
- EMusuiCmdToolbarPauseLive,
- ETrue );
- }
- else
- {
- iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarPauseLive,
- EMusuiCmdToolbarUnPauseLive,
- ETrue );
- }
- }
-
-// -----------------------------------------------------------------------------
-// Workaround for problem at lower level (encoder side) which causes crash
-// if several sequential pause/resumes are done too rapidly. Discard state change
-// attempt if it occurs too quickly after previous state change.
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::UserInitiatedCameraStateChangeL( TBool aEnable )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLiveSharingController::UserInitiatedCameraStateChangeL, enable:",
- aEnable );
-
- if ( iPauseResumeGuardTimer->IsActive() ){
- MUS_LOG( "mus: [MUSUI ] <- State change ignored as guard timer is running!" );
- return;
- }
-
- if ( aEnable )
- {
- PlayL();
- }
- else
- {
- PauseL();
- }
-
- iPauseResumeGuardTimer->After( KMusUiPauseResumeGuardPeriod );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::UserInitiatedCameraStateChangeL" );
- }
-
-
-// End of file
-
--- a/mmsharing/mmshui/src/musuilivesharingview.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,786 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#include "musenglivesession.h"
-#include "musuilivesharingview.h"
-#include "musuilivesharingviewcontainer.h"
-#include "musuibackgroundviewcontainer.h"
-#include "musuilivesharingcontroller.h"
-#include "musuiactivitymanger.h"
-#include "musuiappui.h"
-#include "musuistatuspanehandler.h"
-#include "musui.hrh"
-#include "musuidefinitions.h"
-#include "muslogger.h" // debug logging
-#include <musui.rsg>
-#include <musui.mbg>
-#include "musengmcesession.h"
-
-#include <aknViewAppUi.h>
-#include <avkon.hrh>
-#include <eikmenup.h>
-#include <akntoolbar.h>
-
-
-const TInt KMusUiContainerWidth = 30;
-
-
-// -----------------------------------------------------------------------------
-// EPOC two-phased constructor
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::ConstructL" );
-
- CMusUiSendView::ConstructL();
-
- Toolbar()->SetToolbarObserver( this );
- Toolbar()->UpdateBackground();
-/*
- if( MUS_NO_TOOLBAR )
- {
- MUS_LOG( "mus: [MUSUI ] Operator variant hides toolbar!" );
- Toolbar()->SetToolbarVisibility( EFalse );
- Toolbar()->MakeVisible(EFalse);
- }
-*/
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CMusUiLiveSharingView::~CMusUiLiveSharingView()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::~CMusUiLiveSharingView" );
- if ( iContainer )
- {
- AppUi()->RemoveFromViewStack( *this, iContainer );
- }
- delete iContainer;
- delete iController;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::~CMusUiLiveSharingView" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TUid CMusUiLiveSharingView::Id() const
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingView::Id()" );
- return KMusUidLiveSharingView;
- }
-
-
-// -----------------------------------------------------------------------------
-// Handle EKeyUpArrow key presses
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::HandleKeyUpArrowL()
- {
- HandleCommandL(
- iController->ZoomSelected() ? EMusuiCmdViewZoomIn :
- iController->BrightnessSelected() ? EMusuiCmdViewIncreaseBrightness :
- EMusUiCmdToolbarLastIndex );
- }
-
-
-// -----------------------------------------------------------------------------
-// Handle EKeyDownArrow key presses
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::HandleKeyDownArrowL()
- {
- HandleCommandL(
- iController->ZoomSelected() ? EMusuiCmdViewZoomOut :
- iController->BrightnessSelected() ? EMusuiCmdViewDecreaseBrightness :
- EMusUiCmdToolbarLastIndex );
- }
-
-
-
-
-// -----------------------------------------------------------------------------
-// From MEikMenuObserver, Called by framework before constructing menupane
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::DynInitMenuPaneL( TInt aResourceId,
- CEikMenuPane* aMenuPane )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::DynInitMenuPaneL [%d]" );
- SetZoomVisible(EFalse);
- SetBrightnessVisible(EFalse);
- // Base class initiated initialization first
- CMusUiGeneralView::DynInitMenuPaneL( aResourceId, aMenuPane );
- if( !MUS_NO_TOOLBAR )
- {
- SetInitialFocusedItemL();
- }
-
- if ( aResourceId == R_MUSUI_VIEW_MENU )
- {
- // Delete items not related to live sharing:
- aMenuPane->DeleteMenuItem( EMusuiCmdViewReplay );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewAudioMute );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewAudioNormal );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewFullScreen );
-
- if ( iController->ConnectionEstablished()
- && !iController->IsDiskFull() )
- {
- CMusEngLiveSession *session = dynamic_cast <CMusEngLiveSession*>
- ( iController->EngineOutSession() );
-
- if ( session->IsPlayingL() )
- {
- aMenuPane->DeleteMenuItem( session->IsRecording() ?
- EMusuiCmdRecord :
- EMusuiCmdStopRecording );
- }
- else
- {
- // when camera source was paused, hide the command
- aMenuPane->DeleteMenuItem( EMusuiCmdRecord );
- aMenuPane->DeleteMenuItem( EMusuiCmdStopRecording );
- }
- }
- else
- {
- // Hide recording commands if the session is not established
- // TODO: check autorecord on/off
- aMenuPane->DeleteMenuItem( EMusuiCmdRecord );
- aMenuPane->DeleteMenuItem( EMusuiCmdStopRecording );
- }
-
- __ASSERT_ALWAYS( iController, User::Leave( KErrNotReady ) );
-
- if( MUS_NO_TOOLBAR )
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdToolbarBrightness );
- aMenuPane->DeleteMenuItem( EMusuiCmdToolbarZoom );
- if ( !iController->IsBrightnessSupported() ||
- !SendController()->IsPlayingL() )
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdViewBrightness );
- }
-
- if ( !SendController()->IsPlayingL() )
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdViewZoom );
- }
- }
- else
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdViewBrightness );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewZoom );
- if ( !iController->IsBrightnessSupported() ||
- !SendController()->IsPlayingL() ||
- !AknLayoutUtils::PenEnabled() )
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdToolbarBrightness );
- }
-
- if ( !SendController()->IsPlayingL() ||
- !AknLayoutUtils::PenEnabled() )
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdToolbarZoom );
- }
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::DynInitMenuPaneL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::HandleToolbarCommandL( TInt aCommand )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLiveSharingView::HandleToolbarCommandL: %d",
- aCommand );
-
- __ASSERT_ALWAYS( iController, User::Leave( KErrNotReady ) );
-
- switch ( aCommand )
- {
- case EKeyLeftArrow:
- {
- if( MUS_NO_TOOLBAR )
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
- iController->BrightnessSelected() ? EMusuiCmdViewDecreaseBrightness :
- iController->ZoomSelected() ? EMusuiCmdViewZoomOut :
- EMusUiCmdToolbarLastIndex );
- }
- else
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
- iController->ToolbarBrightnessSelected() ? EMusuiCmdViewDecreaseBrightness :
- iController->ToolbarZoomSelected() ? EMusuiCmdViewZoomOut :
- EMusUiCmdToolbarLastIndex );
- }
- break;
- }
- case EKeyRightArrow:
- {
- if( MUS_NO_TOOLBAR )
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
- iController->BrightnessSelected() ? EMusuiCmdViewIncreaseBrightness :
- iController->ZoomSelected() ? EMusuiCmdViewZoomIn :
- EMusUiCmdToolbarLastIndex );
- }
- else
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
- iController->ToolbarBrightnessSelected() ? EMusuiCmdViewIncreaseBrightness :
- iController->ToolbarZoomSelected() ? EMusuiCmdViewZoomIn :
- EMusUiCmdToolbarLastIndex );
- }
- break;
- }
- case EKeyUpArrow:
- {
- if( MUS_NO_TOOLBAR )
- {
- HandleCommandL(
- iController->ZoomSelected() ? EMusuiCmdViewZoomIn :
- iController->BrightnessSelected() ? EMusuiCmdViewIncreaseBrightness :
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
- EMusUiCmdToolbarLastIndex );
- }
- else
- {
- HandleCommandL(
- iController->ToolbarZoomSelected() ? EMusuiCmdViewZoomIn :
- iController->ToolbarBrightnessSelected() ? EMusuiCmdViewIncreaseBrightness :
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
- EMusUiCmdToolbarLastIndex );
- }
- break;
- }
- case EKeyDownArrow:
- {
- if( MUS_NO_TOOLBAR )
- {
- HandleCommandL(
- iController->ZoomSelected() ? EMusuiCmdViewZoomOut :
- iController->BrightnessSelected() ? EMusuiCmdViewDecreaseBrightness :
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
- EMusUiCmdToolbarLastIndex );
- }
- else
- {
- HandleCommandL(
- iController->ToolbarZoomSelected() ? EMusuiCmdViewZoomOut :
- iController->ToolbarBrightnessSelected() ? EMusuiCmdViewDecreaseBrightness :
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
- EMusUiCmdToolbarLastIndex );
- }
- break;
- }
- case EMusuiCmdViewVolumeDown:
- {
- HandleCommandL( EMusuiCmdViewVolumeDown );
- break;
- }
- case EMusuiCmdViewVolumeUp:
- {
- HandleCommandL( EMusuiCmdViewVolumeUp );
- break;
- }
- default:
- {
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::HandleToolbarCommandL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::SetInitialFocusedItemL()
- {
- MUS_LOG( "mus: [MUSUI ] -> MusUiLiveSharingView::SetInitialFocusedItemL" );
-
- __ASSERT_ALWAYS( iController, User::Leave( KErrNotReady ) );
-
- if ( iOperatorSpecificFunctionality && !AknLayoutUtils::PenEnabled() )
- {
- MUS_LOG( "Focus changed in OPERATOR mode !!!!!!!!!!!!!" );
- Toolbar()->SetFocusedItemL( EMusuiCmdToolbarZoom );
-
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::SetInitialFocusedItemL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::DynInitToolbarL( TInt aResourceId,
- CAknToolbar* aToolbar )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::DynInitToolbarL" );
-
- // Items to be removed in Live Sharing View:
- if (!AknLayoutUtils::PenEnabled())//(aResourceId == R_MUS_TOOLBAR_NONTOUCH)//
- {
- Toolbar()->RemoveItem( EMusuiCmdToolbarFFRev );
-
- // Items to be removed in Live Sharing View:
- if ( iController->DeviceHasDedicatedVolumeKeys() )
- {
- Toolbar()->RemoveItem( EMusuiCmdToolbarVolume );
- }
- else
- {
- aToolbar->SetFocusedItemL( EMusuiCmdToolbarVolume );
- }
-
-
- if ( !iController->IsBrightnessSupported() )
- {
- Toolbar()->HideItem( EMusuiCmdToolbarBrightness, ETrue, ETrue );
- }
- else
- {
- if ( aToolbar->FocusedItem() == KErrNotFound )
- {
- aToolbar->SetFocusedItemL( EMusuiCmdToolbarBrightness );
- }
- }
- }
- Toolbar()->RemoveItem( EMusuiCmdToolbarPause );
- Toolbar()->RemoveItem( EMusuiCmdToolbarUnPause );
- Toolbar()->RemoveItem( EMusuiCmdToolbarFullScreen );
-
- if ( iOperatorSpecificFunctionality )
- {
- // Remove pause/unpause functionality in operator variant case
- Toolbar()->RemoveItem( EMusuiCmdToolbarPauseLive );
- Toolbar()->RemoveItem( EMusuiCmdToolbarUnPauseLive );
- if ( (aToolbar->FocusedItem() == KErrNotFound ) &&
- !AknLayoutUtils::PenEnabled() )
- {
- aToolbar->SetFocusedItemL( EMusuiCmdToolbarZoom );
- }
- }
- else
- {
- // Toggled items to be hidden:
- Toolbar()->HideItem( iPauseSelected ?
- EMusuiCmdToolbarPauseLive :
- EMusuiCmdToolbarUnPauseLive,
- ETrue,
- ETrue );
- if ( aToolbar->FocusedItem() == KErrNotFound &&
- !AknLayoutUtils::PenEnabled() )
- {
- aToolbar->SetFocusedItemL( EMusuiCmdToolbarPauseLive );
- }
- Toolbar()->RemoveItem( EMusuiCmdToolbarBlank );
- }
-
- // Last generic base class functionality
- CMusUiGeneralView::DynInitToolbarL( aResourceId, aToolbar );
-
- MUS_LOG1( "aToolbar Focused Item: %d", aToolbar->FocusedItem() );
- MUS_LOG1( "toolbar() Focused Item: %d", Toolbar()->FocusedItem() );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::DynInitToolbarL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::SetZoomValues( TInt aMinZoom, TInt aMaxZoom )
- {
- iContainer->SetZoomValues( aMinZoom, aMaxZoom );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::SetBrightnessValues( TInt aMinBrightness,
- TInt aMaxBrightness )
- {
- iContainer->SetBrightnessValues( aMinBrightness, aMaxBrightness );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::SetZoomL( TInt aZoomLevel )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::SetZoomL" );
- iContainer->SetZoomL( aZoomLevel );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::SetZoomL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::SetBrightnessL( TInt aBrightnessLevel )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::SetBrightnessL" );
- iContainer->SetBrightnessL( aBrightnessLevel );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::SetBrightnessL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::SetZoomVisible( TBool aVisible )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::SetZoomVisible" );
-
- iContainer->SetZoomVisible( aVisible );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::SetZoomVisible" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::SetBrightnessVisible( TBool aVisible )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::SetBrightnessVisible" );
-
- iContainer->SetBrightnessVisible( aVisible );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::SetBrightnessVisible" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::LevelIndicatorDismissed()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::LevelIndicatorDismissed" );
- iController->LevelIndicatorDismissed();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::LevelIndicatorDismissed" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::RefreshAudioRoutingButton()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::RefreshAudioRoutingButton" );
- //We ignore audio routing change event in case there is Zoom/Brightness
- //adjustment ongoing in operator variant. Middle softkey will be
- //updated once adjustment is done
- if ( !MUS_NO_TOOLBAR ||
- ( !iController->ZoomSelected() &&
- !iController->BrightnessSelected() ) )
- {
- CMusUiGeneralView::RefreshAudioRoutingToolbarButton();
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::RefreshAudioRoutingButton" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::ReplaceToolbarCommand( TInt aOldCommand,
- TInt aNewCommand,
- TBool aSetNewCommandFocused )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLiveSharingView::ReplaceToolbarCommand: %d",
- aOldCommand );
- switch ( aOldCommand )
- {
- case EMusuiCmdToolbarPauseLive:
- {
- iPauseSelected = ETrue;
- /* Hide pause related toolbar items */
- HideToolbarCommandForPause(ETrue);
- break;
- }
- case EMusuiCmdToolbarUnPauseLive:
- {
- iPauseSelected = EFalse;
- /* Unhide pause related toolbar items */
- HideToolbarCommandForPause(EFalse);
- break;
- }
- default:
- {
- break;
- }
- }
-
- // Call base class version for generic part
-
- CMusUiGeneralView::ReplaceToolbarCommand( aOldCommand,
- aNewCommand,
- aSetNewCommandFocused );
-
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiLiveSharingView::ReplaceToolbarCommand: %d",
- aNewCommand );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::RefreshView()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::RefreshView" );
- if ( iController )
- {
- DoRefreshView();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::RefreshView" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::DoRefreshView()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::DoRefreshView" );
-
- // Refresh background container before and after as display status
- // may change due async orientation change handling.
- RefreshBackgroundContainer();
-
- if ( iContainer )
- {
- TRect containerRect( ClientRect().iBr.iX - KMusUiContainerWidth,
- ClientRect().iTl.iY,
- ClientRect().iBr.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
- iContainer->SetRect( containerRect );
- }
-
- if ( iController )
- {
- TRect videoRect( ClientRect().iTl.iX,
- ClientRect().iTl.iY,
- ClientRect().iBr.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
- // if this function leaves we can nothing to do for camera orientation.
- // Alteast we can try further to set right rectangle for display
- TRAPD(err,RefreshCameraOrientationL(videoRect));
- if( err )
- {
- MUS_LOG1( "mus: [MUSUI ] -> Orientation can not be changed =%d",err );
- }
- iController->SetRect( videoRect );
- }
-
- RefreshBackgroundContainer();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::DoRefreshView" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiSendController* CMusUiLiveSharingView::SendController() const
- {
- return iController;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiSendViewContainer* CMusUiLiveSharingView::SendContainer() const
- {
- return iContainer;
- }
-
-
-// -----------------------------------------------------------------------------
-// From CAknView, Gets called from framework when activating this view
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::DoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::DoActivateL" );
-
- // Base class activation first
- CMusUiSendView::DoActivateL( aPrevViewId,
- aCustomMessageId,
- aCustomMessage );
-
- TRect clientRect = ClientRect();
- clientRect.iBr.iX -= ToolbarPlaceHolderWidth();
- clientRect.iBr.iY -= ToolbarPlaceHolderHeight();
-
- TRect containerRect( clientRect.iBr.iX - KMusUiContainerWidth,
- clientRect.iTl.iY,
- clientRect.iBr.iX,
- clientRect.iBr.iY );
-
- if ( !iContainer )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingView::DoActivateL: !iContainer" );
- iContainer = new ( ELeave ) CMusUiLiveSharingViewContainer();
- iContainer->SetMopParent( this );
- iContainer->ConstructL( this,
- containerRect );
- AppUi()->AddToViewStackL( *this, iContainer );
- }
-
- /* Increase the ordinal position of background container
- * So that other control will be drawn first.
- */
- UpdateBackgroundOrdinalPosition( ETrue );
-
- TRect videoRect( ClientRect().iTl.iX,
- ClientRect().iTl.iY,
- ClientRect().iBr.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
-
- if ( !iController )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingView::DoActivateL: !iController" );
- iController = CMusUiLiveSharingController::NewL( *MusAppUi(),
- *this,
- *this,
- *this,
- videoRect );
- iController->StartInvitationL();
- }
-
- iContainer->SetController( iController );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::DoActivateL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From AknView, Gets called from framework when deactivating this view
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::DoDeactivate()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::DoDeactivate" );
-
- CMusUiSendView::DoDeactivate(); // Base class deactivation first
-
- if ( iContainer )
- {
- AppUi()->RemoveFromViewStack( *this, iContainer );
- delete iContainer;
- iContainer = NULL;
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::DoDeactivate" );
- }
-
-// -----------------------------------------------------------------------------
-// When orientation changed , Camera instances has to be recreated inorder
-// to receive proper orientated frames.
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::RefreshCameraOrientationL(TRect& aNewRect)
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingView::RefreshCameraOrientation" );
- if ( !iController || !iController->EngineSession() )
- {
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::RefreshCameraOrientation, no session" );
- return;
- }
- TRect oldRect = iController->EngineSession()->Rect();
- MUS_LOG2( "mus: [MUSUI ] -> Old Rect (width = %d,height=%d)",oldRect.Width(),oldRect.Height() );
- MUS_LOG2( "mus: [MUSUI ] -> New Rect (width = %d,height=%d)",aNewRect.Width(),aNewRect.Height() );
- if ( !( ( ( oldRect.Width() > oldRect.Height() ) && //check lanscape
- ( aNewRect.Width() > aNewRect.Height() )
- )
- ||
- (
- ( oldRect.Width() < oldRect.Height() ) && // check portrait
- ( aNewRect.Width() < aNewRect.Height() )
- )
- )
- )
- {
- MUS_LOG( "mus: [MUSUI ] -> Orientation Changed.Restart Camera" );
- iController->RefreshCameraOrientationL();
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] -> Orientation Not changed. dont restart camera");
- }
-
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::RefreshCameraOrientation" );
- }
-
-// -----------------------------------------------------------------------------
-// When Live sharing paused , camera source will be unavilable, hence
-// it is inappropriate to show the zoom and brightness
-// so hide those item. And unhide it again when unpaused.
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingView::HideToolbarCommandForPause( TBool aIsPaused )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLiveSharingView::HideToolbarCommandForPause() %d",aIsPaused);
- /* Hide brightness toolbar item if paused else unhide. Draw immediately.*/
- Toolbar()->HideItem( EMusuiCmdToolbarBrightness, aIsPaused, ETrue );
- /* Hide zoom toolbar item if paused else unhide. Draw immediately.*/
- Toolbar()->HideItem( EMusuiCmdToolbarZoom, aIsPaused, ETrue );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingView::HideToolbarCommandForPause");
- }
-
-// end of file
--- a/mmsharing/mmshui/src/musuilivesharingviewcontainer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-#include "musuidefinitions.h"
-#include "musuilivesharingviewcontainer.h"
-#include "musuieventcontroller.h"
-#include "musuigeneralview.h"
-#include "musuilivesharingview.h"
-#include "musuiappui.h"
-#include "musuilevelindicator.h"
-#include "musuidialogutil.h"
-#include "musui.hrh"
-#include "muslogger.h" // debug logging
-#include "mussettings.h"
-#include <musui.rsg>
-
-#include <AknsDrawUtils.h>
-#include <AknDef.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingViewContainer::ConstructL( CMusUiGeneralView* aView,
- const TRect& aRect )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingViewContainer::ConstructL" );
-
- CMusUiSendViewContainer::ConstructL( aView,
- aRect,
- EAknOrientationVertical );
- // check if operator specific functionality is needed
- iOperatorSpecificFunctionality =
- ( MultimediaSharingSettings::OperatorVariantSettingL() ==
- MusSettingsKeys::EOperatorSpecific );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingViewContainer::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiLiveSharingViewContainer::~CMusUiLiveSharingViewContainer()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingViewContainer::~CMusUiLiveSharingViewContainer" );
- // NOP
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingViewContainer::~CMusUiLiveSharingViewContainer" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingViewContainer::SetZoomValues( TInt aMinZoom, TInt aMaxZoom )
- {
- iIndicator->SetRange( aMinZoom, aMaxZoom, ETrue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingViewContainer::SetBrightnessValues( TInt aMinBrightness,
- TInt aMaxBrightness )
- {
- iIndicator->SetRange( aMinBrightness, aMaxBrightness, ETrue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingViewContainer::SetZoomL( TInt aZoomLevel )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingViewContainer::SetZoomL" )
-
- iIndicator->SetLevelL( EMusUiIndicatorTypeZoom,
- aZoomLevel,
- ETrue /* use timer */ );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingViewContainer::SetZoomL" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingViewContainer::SetBrightnessL( TInt aBrightnessLevel )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiLiveSharingViewContainer::SetBrightnessL" )
-
- iIndicator->SetLevelL( EMusUiIndicatorTypeBrightness,
- aBrightnessLevel,
- ETrue /* use timer */ );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingViewContainer::SetBrightnessL" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingViewContainer::SetZoomVisible( TBool aVisible )
- {
- iIndicator->SetIndicatorType( EMusUiIndicatorTypeZoom );
- MakeVisible( aVisible );
- SetGloballyCapturing( aVisible );
- SetPointerCapture( aVisible );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingViewContainer::SetBrightnessVisible( TBool aVisible)
- {
- iIndicator->SetIndicatorType(EMusUiIndicatorTypeBrightness);
- MakeVisible( aVisible );
- SetGloballyCapturing( aVisible );
- SetPointerCapture( aVisible );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TMusUiIndicatorType CMusUiLiveSharingViewContainer::GetIndicatorType()
- {
- return iIndicator->GetIndicatorType();
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework when to retrieve the no. of controls.
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiLiveSharingViewContainer::CountComponentControls() const
- {
- return 1; // return nbr of controls inside this container
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to retrieve the control specified by index.
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CMusUiLiveSharingViewContainer::ComponentControl( TInt aIndex ) const
- {
- CCoeControl* control = NULL;
- switch ( aIndex )
- {
- case 0:
- control = iIndicator;
- break;
- default:
- break;
- }
- return control;
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to act on key events if required.
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CMusUiLiveSharingViewContainer::OfferKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode /*aType*/ )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLiveSharingViewContainer::OfferKeyEventL: %d",
- aKeyEvent.iCode );
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiLiveSharingViewContainer::OfferKeyEventL: %d",
- aKeyEvent.iScanCode );
-
- TKeyResponse ret( EKeyWasNotConsumed );
-
- if ( MUS_NO_TOOLBAR )
- {
- CMusUiLiveSharingView* view =
- static_cast< CMusUiLiveSharingView* >( MusUiView() );
- switch ( aKeyEvent.iCode )
- {
- case EKeyLeftArrow:
- {
- view->HandleCommandL( EMusuiCmdViewVolumeDown );
- ret = EKeyWasConsumed;
- break;
- }
- case EKeyRightArrow:
- {
- view->HandleCommandL( EMusuiCmdViewVolumeUp );
- ret = EKeyWasConsumed;
- break;
- }
- case EKeyUpArrow:
- {
- view->HandleKeyUpArrowL();
- ret = EKeyWasConsumed;
- break;
- }
- case EKeyDownArrow:
- {
- view->HandleKeyDownArrowL();
- ret = EKeyWasConsumed;
- break;
- }
- default:
- break;
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingViewContainer::OfferKeyEventL" );
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingViewContainer::HandlePointerEventL(
- const TPointerEvent& aPointerEvent)
- {
- // Forward to base class in order to use slider
- CCoeControl::HandlePointerEventL( aPointerEvent );
-
- if ( !Rect().Contains( aPointerEvent.iPosition ) )
- {
- MakeVisible( EFalse );
- }
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuimmcmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-#include "musuimmcmonitor.h"
-#include "muslogger.h" // debug logging
-
-#include <pathinfo.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiMmcMonitor* CMusUiMmcMonitor::NewL( MMusUiMmcObserver& aObserver )
- {
- CMusUiMmcMonitor* self = new ( ELeave ) CMusUiMmcMonitor( aObserver );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiMmcMonitor::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiMmcMonitor::ConstructL" );
- User::LeaveIfError( iFs.Connect() );
- const TDesC& memoryCardPath = PathInfo::MemoryCardRootPath();
- TInt driveNumber = 0;
- if ( memoryCardPath.Length() > 0 )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiMmcMonitor::ConstructL: \
- ( memoryCardPath.Length() > 0 )" );
- TChar driveChar( memoryCardPath[0] );
- iFs.CharToDrive( driveChar, driveNumber );
- iDriveNumber = static_cast<TDriveNumber>(driveNumber);
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiMmcMonitor::ConstructL: else" );
- TParsePtrC parser( RProcess().FileName() );
- TChar driveChar( parser.Drive()[0] );
- iFs.CharToDrive( driveChar, driveNumber );
- iDriveNumber = static_cast<TDriveNumber>(driveNumber);
- }
-
- iRemovableDrive = IsRemovableDrive( iDriveNumber );
- iDriveRemoved = DriveRemoved();
- MonitorMmc();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiMmcMonitor::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiMmcMonitor::CMusUiMmcMonitor( MMusUiMmcObserver& aObserver )
- : CActive( CActive::EPriorityStandard ),
- iObserver( aObserver )
- {
- CActiveScheduler::Add( this );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiMmcMonitor::~CMusUiMmcMonitor()
- {
- Cancel();
- iFs.Close();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiMmcMonitor::RunL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiMmcMonitor::RunL" );
- if( DriveRemoved() )
- {
- iObserver.MmcRemoved();
- }
- else // continue monitoring
- {
- MonitorMmc();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiMmcMonitor::RunL" );
- }
-
-// -------------------------------------------------------------------------
-// If RunL() leaves,It should be handled here.
-// -------------------------------------------------------------------------
-//
-TInt CMusUiMmcMonitor::RunError( TInt aError )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiMmcMonitor::RunError" );
- // Nothing can be done here.
- aError = KErrNone;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiMmcMonitor::RunError" );
- return aError;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiMmcMonitor::DoCancel()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiMmcMonitor::DoCancel" );
- iFs.NotifyChangeCancel();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiMmcMonitor::DoCancel" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiMmcMonitor::MonitorMmc()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiMmcMonitor::MonitorMmc" );
- if( !IsActive() && iRemovableDrive && !iDriveRemoved )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiMmcMonitor::MonitorMmc: calling iFs.NotifyChange" );
- iFs.NotifyChange( ENotifyDisk, iStatus );
- SetActive();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiMmcMonitor::MonitorMmc" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiMmcMonitor::DriveRemoved()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiMmcMonitor::DriveRemoved" );
- if ( iDriveRemoved )
- {
- return iDriveRemoved;
- }
-
- TDriveInfo driveInfo;
- iFs.Drive( driveInfo, iDriveNumber );
-
- if ( driveInfo.iType == EMediaNotPresent )
- {
- iDriveRemoved = ETrue;
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiMmcMonitor::DriveRemoved" );
- return iDriveRemoved;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiMmcMonitor::IsRemovableDrive( TDriveNumber aDriveNumber )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiMmcMonitor::IsRemovableDrive" );
- TDriveInfo driveInfo;
- iFs.Drive( driveInfo, aDriveNumber );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiMmcMonitor::IsRemovableDrive" );
- return ( driveInfo.iDriveAtt & KDriveAttRemovable );
- }
-
-// End of File
--- a/mmsharing/mmshui/src/musuinavimediaanimator.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,333 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-
-#include "musuinavimediaanimator.h"
-#include "musuidefinitions.h"
-#include "muslogger.h" // debug logging
-#include <musuiicons.mbg>
-//#include <musui.mbg>
-//#include <musui_temp_icons.mbg>
-#include <musui.rsg>
-#include "musresourcefinderutil.h"
-
-#include <data_caging_path_literals.hrh> // KDC_APP_BITMAP_DIR
-#include <AknsUtils.h>
-#include <aknnavi.h> // CAknNavigationControlContainer
-#include <eikspane.h> // CEikStatusPaneBase
-#include <StringLoader.h>
-#include <applayout.cdl.h> // scalable UI
-#include <AknIconUtils.h> // SetSize for the icons
-#include <AknIconArray.h>
-#include <gulicon.h>
-#include <applayout.cdl.h>
-#include <e32std.h>
-#include <e32base.h>
-
-using namespace AppLayout;
-
-
-// CONSTANTS
-const TInt KMusUiAnimatorTimer = 50000; // Default 50 ms, 20 fps
-
-const TInt KIconArraySize = 15;
-
-_LIT( KMyBitmapRomFile, "Z:\\resource\\apps\\musuiicons.mif" );
-_LIT( KMyBitmapRamFile, "C:\\resource\\apps\\musuiicons.mif" );
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiNaviMediaAnimator* CMusUiNaviMediaAnimator::NewL(
- MMusUiNaviMediaAnimatorObserver& aObserver, TSize aImageSize )
- {
- CMusUiNaviMediaAnimator* self =
- new( ELeave ) CMusUiNaviMediaAnimator( aObserver, aImageSize );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiNaviMediaAnimator::~CMusUiNaviMediaAnimator()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaAnimator::~CMusUiNaviMediaAnimator" );
-
- if ( iAnimationTimer->IsActive() )
- {
- iAnimationTimer->Cancel();
- }
- delete iAnimationTimer;
- delete iBitmapArray;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaAnimator::~CMusUiNaviMediaAnimator" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiNaviMediaAnimator::CMusUiNaviMediaAnimator(
- MMusUiNaviMediaAnimatorObserver& aObserver, TSize aImageSize )
- : iObserver( aObserver )
- {
- iSize = aImageSize;
- MUS_LOG1( "mus: [MUSUI ] -> \
- CMusUiNaviMediaAnimator::CMusUiNaviMediaAnimator(): iSize.iWidth %d",
- iSize.iWidth )
- MUS_LOG1( "mus: [MUSUI ] -> \
- CMusUiNaviMediaAnimator::CMusUiNaviMediaAnimator(): iSize.iHeight %d",
- iSize.iHeight )
- iBitmapArray = NULL;
- iInterval = KMusUiAnimatorTimer;
- iIndex = 0;
-
-
-
-
-/* iAnimationTimer->Start( iInterval,
- iInterval,
- TCallBack( AnimationInterval, this ) );
- */
- }
-
-
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaAnimator::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaAnimator::ConstructL" );
-
- if( MusResourceFinderUtil::IsExistL( KMyBitmapRomFile ) )
- {
- iResourceRam = EFalse;
- }
- else if( MusResourceFinderUtil::IsExistL( KMyBitmapRamFile ) )
- {
- iResourceRam = ETrue;
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] Icon File Not Found " );
- User::Leave(KErrNotFound);
- }
-
-
- LoadImagesL();
-
- iAnimationTimer = CPeriodic::NewL( CActive::EPriorityStandard );
-
- iAnimationTimer->Start( iInterval,
- iInterval,
- TCallBack( AnimationInterval, this ) );
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaAnimator::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaAnimator::SetInterval( const TInt aAnimationInterval )
- {
- iInterval = aAnimationInterval;
-
-
- if ( iAnimationTimer->IsActive() )
- {
- iAnimationTimer->Cancel();
- }
-
- iAnimationTimer->Start( iInterval,
- iInterval,
- TCallBack( AnimationInterval, this ) );
- }
-
-
-// -----------------------------------------------------------------------------
-// Callback for disable level indicator.
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiNaviMediaAnimator::AnimationInterval( TAny* aThis )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaAnimator::AnimationInterval()" );
- CMusUiNaviMediaAnimator* animator =
- static_cast< CMusUiNaviMediaAnimator* > ( aThis );
-
-
- if ( animator->iBitmapArray )
- {
- animator->iObserver.SetIcon( animator->iBitmapArray->At( animator->iIndex ) );
- if( animator->iIndex < ( animator->iBitmapArray->Count() - 1 ) )
- {
- animator->iIndex++;
- }
- else
- {
- animator->iIndex = 0;
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaAnimator::AnimationInterval()" );
- return KErrNone;
- }
-
-
-// -----------------------------------------------------------------------------
-// Layouts the text depending on current icon situation.
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaAnimator::LoadImagesL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaAnimator::DoLayoutText" );
-
- delete iBitmapArray;
- iBitmapArray = NULL;
- iBitmapArray = new ( ELeave ) CAknIconArray( KIconArraySize );
-
- TParse parse;
- if( iResourceRam )
- {
- parse.Set( KMyBitmapRamFile, &KDC_APP_RESOURCE_DIR, NULL );
- }
- else
- {
- parse.Set( KMyBitmapRomFile, &KDC_APP_RESOURCE_DIR, NULL );
- }
-
-
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
- TAknsItemID item;
- item.Set( 0xFFCC, 0xC ); // It's a kind a magic
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_wait1,
- EMbmMusuiiconsQgn_indi_video_wait1_mask,
- parse );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_wait2,
- EMbmMusuiiconsQgn_indi_video_wait2_mask,
- parse );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_wait3,
- EMbmMusuiiconsQgn_indi_video_wait3_mask,
- parse );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_wait4,
- EMbmMusuiiconsQgn_indi_video_wait4_mask,
- parse );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_wait5,
- EMbmMusuiiconsQgn_indi_video_wait5_mask,
- parse );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_wait6,
- EMbmMusuiiconsQgn_indi_video_wait6_mask,
- parse );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_wait7,
- EMbmMusuiiconsQgn_indi_video_wait7_mask,
- parse );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_wait8,
- EMbmMusuiiconsQgn_indi_video_wait8_mask,
- parse );
-
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaAnimator::DoLayoutText" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaAnimator::ConstructImageL( MAknsSkinInstance* aSkin,
- const TAknsItemID& aId,
- TInt aBitmapId,
- TInt aMaskId,
- TParse parse )
-
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaAnimator::ConstructImageL()" );
-
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
-
-
- AknsUtils::CreateIconL(aSkin,
- aId,
- bitmap,
- mask,
- parse.FullName(),
- aBitmapId,
- aMaskId);
-
- AknIconUtils::SetSize( bitmap, iSize );
- AknIconUtils::SetSize( mask, iSize );
-
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaAnimator::ConstructImageL(): iSize.iWidth %d",
- iSize.iWidth )
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaAnimator::ConstructImageL(): iSize.iHeight %d",
- iSize.iHeight )
-
- CGulIcon* icon = CGulIcon::NewL();
- icon->SetBitmap( bitmap );
- icon->SetMask( mask );
-
- CleanupStack::PushL( icon );
- iBitmapArray->AppendL( icon );
- CleanupStack::Pop( icon );
-
- //aImage->SetPicture(bitmap, mask); // Owership transferred to CEikImage
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaAnimator::ConstructImageL()" );
-
- }
-
--- a/mmsharing/mmshui/src/musuinavimediadecorator.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,546 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-
-#include "musuinavimediadecorator.h"
-#include "musuinavimediaanimator.h"
-#include "musuidefinitions.h"
-#include "muslogger.h" // debug logging
-#include <musuiicons.mbg>
-//#include <musui.mbg>
-//#include <musui_temp_icons.mbg>
-#include <musui.rsg>
-#include "musresourcefinderutil.h"
-
-#include <data_caging_path_literals.hrh> // KDC_APP_BITMAP_DIR
-#include <AknsUtils.h>
-#include <aknnavi.h> // CAknNavigationControlContainer
-#include <eikspane.h> // CEikStatusPaneBase
-#include <StringLoader.h>
-#include <applayout.cdl.h> // scalable UI
-#include <AknIconUtils.h> // SetSize for the icons
-#include <AknsDrawUtils.h>
-#include <AknIconArray.h>
-#include <gulicon.h>
-#include <applayout.cdl.h>
-#include <AknUtils.h>
-
-using namespace AppLayout;
-
-
-const TInt KMusDecoratorStability = 0;
-const TInt KIconArraySize = 15;
-
-_LIT( KMyBitmapRomFile, "Z:\\resource\\apps\\musuiicons.mif" );
-_LIT( KMyBitmapRamFile, "C:\\resource\\apps\\musuiicons.mif" );
-
-
-#ifndef __MIN
-#define __MIN(A, B) ((A) < (B) ? (A): (B))
-#endif
-//macro
-//_LIT( KMyMbmFileName, "z:Camcorder.mbm");
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiNaviMediaDecorator* CMusUiNaviMediaDecorator::NewL()
- {
- CMusUiNaviMediaDecorator* self = new( ELeave ) CMusUiNaviMediaDecorator();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator" );
- delete iLeftLabel;
- delete iRightLabel;
- delete iIconArray;
- delete iAnimation;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiNaviMediaDecorator::CMusUiNaviMediaDecorator()
- {
- iMiddle = 0;
- iLeftTextSize = TSize( 0, 0 );
- iRightTextSize = TSize( 0, 0 );
- iIcon = NULL;
- iIconLeft = 50; // Only defaylt valut, it's overrided right away
- iImageSize = TSize( 18, 18 ); // Only default value, it's overrided right avay
- }
-
-
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructL" );
- iLeftLabel = HBufC16::NewL(0);
- iRightLabel = HBufC16::NewL(0);
-
-
- iIconLayout.LayoutRect( Rect(), R_MUS_NAVI_MEDIA_ICON_LAYOUT_SIZE );
- iImageSize.iWidth = iIconLayout.Rect().Width();
- iImageSize.iHeight = iIconLayout.Rect().Height();
-
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructL(): iImageSize.iWidth %d",
- iImageSize.iWidth )
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructL(): iImageSize.iHeight %d",
- iImageSize.iHeight )
- iLeftTextLayout.LayoutText( Rect(),
- R_MUS_NAVI_MEDIA_TEXT_LEFT_LAYOUT );
- iRightTextLayout.LayoutText( Rect(),
- R_MUS_NAVI_MEDIA_TEXT_RIGHT_LAYOUT );
-
-
- if( MusResourceFinderUtil::IsExistL( KMyBitmapRomFile ) )
- {
- iResourceRam = EFalse;
- }
- else if( MusResourceFinderUtil::IsExistL( KMyBitmapRamFile ) )
- {
- iResourceRam = ETrue;
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] Icon File Not Found " );
- User::Leave(KErrNotFound);
- }
-
- LoadImagesL();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::SetLeftLabelL( const TDesC& aLabel )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::SetLabelL" );
- HBufC* newLabel = aLabel.AllocL();
- delete iLeftLabel; // after the AllocL succeeds
- iLeftLabel = NULL;
- iLeftLabel = newLabel;
- TPtr ptr( iLeftLabel->Des() );
- AknTextUtils::LanguageSpecificNumberConversion( ptr );
- DoLayoutText();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::SetLabelL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::SetRightLabelL( const TDesC& aLabel )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::SetLabelL" );
- HBufC* newLabel = aLabel.AllocL();
- delete iRightLabel; // after the AllocL succeeds
- iRightLabel = NULL;
- iRightLabel = newLabel;
- TPtr ptr( iRightLabel->Des() );
- AknTextUtils::LanguageSpecificNumberConversion( ptr );
- DoLayoutText();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::SetLabelL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::ShowIcon( TMusUiNaviMediaDecorator aIcon )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ShowIcon( \
- TMusMediaNaviIcons aIcon ) #%d", aIcon );
-
- delete iAnimation;
- iAnimation = NULL;
-
- if( aIcon == EMusUiNaviIconNone )
- {
- iIcon = NULL;
- return;
- }
- else if( aIcon == EMusUiNaviIconWaitAnim )
- {
- iIcon = NULL;
- iIconLayout.LayoutRect( Rect(), R_MUS_NAVI_MEDIA_ICON_LAYOUT_SIZE );
- iImageSize.iWidth = iIconLayout.Rect().Width();
- iImageSize.iHeight = iIconLayout.Rect().Height();
- TRAPD( err, iAnimation = CMusUiNaviMediaAnimator::NewL( *this, iImageSize ); )
- if( err == KErrNone )
- {
- //iAnimation->SetInterval( 50000 );
- }
- }
- else if( iIconArray->Count() > aIcon )
- {
- iIcon = static_cast< CGulIcon* > ( iIconArray->At( aIcon) );
- }
- else
- {
- iIcon = NULL;
- }
- if( !iAnimation )
- {
- DrawNow();
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::ShowIcon( \
- TMusMediaNaviIcons aIcon )" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::SetIcon( CGulIcon* aIcon )
- {
- iIcon = aIcon;
- DrawNow();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::SizeChanged()
- {
- AknsUtils::RegisterControlPosition( this );
- DoLayoutText();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::Draw( const TRect& aRect ) const
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::Draw" );
-
- CWindowGc& gc = SystemGc();
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- // Get skinned bitmap
- CFbsBitmap* skinBitmap =
- AknsUtils::GetCachedBitmap( skin, KAknsIIDQsnIconColors );
- if( iIcon )
- {
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
- AknsDrawUtils::Background( skin, cc,this, gc , aRect , KAknsDrawParamDefault );
- gc.BitBltMasked( TPoint( iIconLeft,1),
- iIcon->Bitmap(),
- iIconLayout.Rect(),
- iIcon->Mask(),
- EFalse );
- }
- // draw time indicator
-
- //TRgb color = iLeftTextLayout.Color();
-
- TRgb color;
-
- AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG2 );
-
- gc.SetPenColor( color );
- gc.UseFont( iLeftTextLayout.Font() );
-
-
- TInt flTop = ( ( aRect.Height() >> 1 )
- - ( iLeftTextLayout.Font()->AscentInPixels() >> 1 ) )
- + aRect.iTl.iY - 1; // -1 because some rounding things
-
- gc.DrawText( *iLeftLabel,
- TRect( aRect.iTl.iX+1, flTop, aRect.iBr.iX, aRect.iBr.iY ),
- iLeftTextLayout.Font()->AscentInPixels() + 1,
- iLeftTextLayout.Align() );
-
- TInt frTop = ( ( aRect.Height() >> 1 )
- - ( iRightTextLayout.Font()->AscentInPixels() >> 1 ) )
- + aRect.iTl.iY - 1; // -1 because some rounding things
-
- TInt frLeft;
- TInt frRight;
-
- if ( AknLayoutUtils::LayoutMirrored() )
- {
- frLeft = aRect.iTl.iX;
- frRight = iRightTextSize.iWidth + 1;
- }
- else
- {
- frLeft = aRect.iBr.iX - iRightTextSize.iWidth - 1;
- frRight = aRect.iBr.iX;
- }
-
- gc.DrawText( *iRightLabel,
- TRect( frLeft, frTop, frRight, aRect.iBr.iY ),
- iRightTextLayout.Font()->AscentInPixels() + 1,
- iRightTextLayout.Align() );
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::Draw " );
- }
-
-
-// -----------------------------------------------------------------------------
-// Layouts the text depending on current icon situation.
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::DoLayoutText()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::DoLayoutText" );
- TRect parent( Rect() );
- if ( parent.IsEmpty() )
- {
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::DoLayoutText: return" );
- return;
- }
-
- TInt minsize = __MIN( parent.Width(), parent.Height() );
- iImageSize = TSize( minsize-2, minsize-2 );
-
-
- // Reassign text sizes
- TAknTextLineLayout txtLayout = AppLayout::Navipanetexts_Line_2();
- const TInt spaceBetweenIconsAndText = 1;
- txtLayout.il = spaceBetweenIconsAndText;
-
- iLeftTextLayout.LayoutText( parent, txtLayout );
- iRightTextLayout.LayoutText( parent, txtLayout );
-
- TSize parentSize = TSize( parent.iBr.iX - parent.iTl.iX,
- parent.iBr.iY - parent.iTl.iY );
-
- //TInt clientWidth = parent.iBr.iX - parent.iTl.iX;
-
- iLeftTextSize.iWidth =
- iLeftTextLayout.Font()->TextWidthInPixels( iLeftLabel->Des() );
- iRightTextSize.iWidth =
- iRightTextLayout.Font()->TextWidthInPixels( iRightLabel->Des() );
-
- // First testing elements total width
- if( iLeftTextSize.iWidth + iRightTextSize.iWidth + iIconLayout.Rect().iBr.iX
- > parentSize.iWidth )
- {
- // Whole stuff is too large
- _LIT( KMusStringThreeDots, "...");
- TRAP_IGNORE( SetRightLabelL( KMusStringThreeDots ) );
- }
-
- // Middle point of Icon box in current text parameters
- TInt middle = parent.iTl.iX + ( parentSize.iWidth >> 1 );
-
- // If there collision, calculates middle of the text fields
- iIconLeft = middle - parent.iTl.iX - ( iIconLayout.Rect().iBr.iX >> 1 );
- TInt iconRight =
- middle - parent.iTl.iX + ( iIconLayout.Rect().iBr.iX >> 1 );
-
- if( iLeftTextSize.iWidth > iIconLeft ||
- ( parentSize.iWidth - iRightTextSize.iWidth ) < iconRight )
- {
- middle = (( parentSize.iWidth
- - ( iLeftTextSize.iWidth + iRightTextSize.iWidth )) >> 1 )
- + parent.iTl.iX + iLeftTextSize.iWidth;
- }
-
-
- // Move only if middle place moves enough eq. ignoring jumping
- if( middle < ( iMiddle - KMusDecoratorStability )
- || middle > ( iMiddle + KMusDecoratorStability ) )
- {
- iMiddle = middle;
- }
-
- iLeftTextSize.iHeight = iLeftTextLayout.Font()->HeightInPixels();
- iRightTextSize.iHeight = iRightTextLayout.Font()->HeightInPixels();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::DoLayoutText" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::LoadImagesL()
- {
-
- delete iIconArray;
- iIconArray = NULL;
- iIconArray = new ( ELeave ) CAknIconArray( KIconArraySize );
-
- TParse parse;
- if( iResourceRam )
- {
- parse.Set( KMyBitmapRamFile, &KDC_APP_RESOURCE_DIR, NULL );
- }
- else
- {
- parse.Set( KMyBitmapRomFile, &KDC_APP_RESOURCE_DIR, NULL );
- }
-
-
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
- TAknsItemID item;
- item.Set( 0xFFCC, 0xC ); // It's a kind a magic
-
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_forw,
- EMbmMusuiiconsQgn_indi_video_forw_mask,
- parse,
- EFalse );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_pause,
- EMbmMusuiiconsQgn_indi_video_pause_mask,
- parse,
- EFalse );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_play,
- EMbmMusuiiconsQgn_indi_video_play_mask,
- parse,
- ETrue );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_record,
- EMbmMusuiiconsQgn_indi_video_record_mask,
- parse,
- ETrue );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_record_not,
- EMbmMusuiiconsQgn_indi_video_record_not_mask,
- parse,
- ETrue );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_rew,
- EMbmMusuiiconsQgn_indi_video_rew_mask,
- parse,
- EFalse );
-
- ConstructImageL( skin,
- item,
- EMbmMusuiiconsQgn_indi_video_stop,
- EMbmMusuiiconsQgn_indi_video_stop_mask,
- parse,
- EFalse );
-
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::ConstructImageL( MAknsSkinInstance* aSkin,
- const TAknsItemID& aId,
- TInt aBitmapId,
- TInt aMaskId,
- TParse parse,
- TBool aIconHasOwnColor )
-
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructImageL()" );
-
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
-
- if (aIconHasOwnColor)
- {
- AknsUtils::CreateIconL(aSkin,
- aId,
- bitmap,
- mask,
- parse.FullName(),
- aBitmapId,
- aMaskId);
-
- }
- else
- {
- AknsUtils::CreateColorIconL(aSkin,
- aId,
- KAknsIIDQsnIconColors,
- EAknsCIQsnIconColorsCG7,
- bitmap,
- mask,
- parse.FullName(),
- aBitmapId,
- aMaskId,
- KRgbBlack);
- }
-
- AknIconUtils::SetSize( bitmap, iImageSize );
- AknIconUtils::SetSize( mask, iImageSize );
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructIconL(): iImageSize.iWidth %d",
- iImageSize.iWidth )
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructIconL(): iImageSize.iHeight %d",
- iImageSize.iHeight )
-
-
- CGulIcon* icon = CGulIcon::NewL();
- icon->SetBitmap( bitmap );
- icon->SetMask( mask );
-
- CleanupStack::PushL( icon );
- iIconArray->AppendL( icon );
- CleanupStack::Pop( icon );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::ConstructIconL()" );
-
- }
-
-// end of file
--- a/mmsharing/mmshui/src/musuipropertywatch.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-
-#include "musuipropertywatch.h"
-#include "musuipropertyobserver.h"
-#include "mussessionproperties.h"
-#include "musresourceproperties.h"
-#include "muslogger.h" // debug logging
-
-using namespace NMusSessionApi;
-
-// -----------------------------------------------------------------------------
-// Symbian two-phase constructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiPropertyWatch* CMusUiPropertyWatch::NewL(
- MMusUiPropertyObserver& aObserver,
- TUid aCategory,
- const TInt aPropertyName )
- {
- CMusUiPropertyWatch* self = new (ELeave) CMusUiPropertyWatch(
- aObserver,
- aCategory,
- aPropertyName );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-// C++ destructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiPropertyWatch::~CMusUiPropertyWatch()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiPropertyWatch::~CMusUiPropertyWatch" );
- if ( IsActive() )
- {
- Cancel();
- }
- iProperty.Close();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiPropertyWatch::~CMusUiPropertyWatch" );
- }
-
-
-// -----------------------------------------------------------------------------
-// C++ constructor.
-// -----------------------------------------------------------------------------
-//
-CMusUiPropertyWatch::CMusUiPropertyWatch( MMusUiPropertyObserver& aObserver,
- TUid aCategory,
- const TInt aPropertyName ) :
- CActive( EPriorityNormal ),
- iObserver( aObserver )
- {
- iPropertyCategory = aCategory;
- iPropertyKey = aPropertyName;
- }
-
-
-// -----------------------------------------------------------------------------
-// Symbian second-phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CMusUiPropertyWatch::ConstructL( )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiPropertyWatch::ConstructL" );
- User::LeaveIfError( iProperty.Attach( iPropertyCategory,
- iPropertyKey) );
- CActiveScheduler::Add( this );
- RunL();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiPropertyWatch::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiPropertyWatch::ReadIntPropertyL( TUint aKey )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiPropertyWatch::ReadIntPropertyL: aKey: [%d]",
- aKey );
- TInt val;
- User::LeaveIfError( RProperty::Get( KCategoryUid,
- aKey,
- val ) );
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiPropertyWatch::ReadIntPropertyL: val: [%d]",
- val );
- return val;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-HBufC* CMusUiPropertyWatch::ReadDescPropertyL( TUint aKey )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiPropertyWatch::ReadDescPropertyL: aKey: [%d]",
- aKey );
- TBuf<RProperty::KMaxPropertySize> buffer;
-
- User::LeaveIfError( RProperty::Get( KCategoryUid,
- aKey,
- buffer ) );
- HBufC* desc = buffer.AllocL();
- MUS_LOG_TDESC( "mus: [MUSUI ] <- CMusUiPropertyWatch::ReadDescPropertyL: val: ",
- (*desc) );
- return desc;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiPropertyWatch::DoCancel()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiPropertyWatch::DoCancel" );
- iProperty.Cancel();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiPropertyWatch::DoCancel" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiPropertyWatch::RunL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiPropertyWatch::RunL" );
- TInt val;
-
- User::LeaveIfError( RProperty::Get( iPropertyCategory,
- iPropertyKey,
- val ) );
- iProperty.Subscribe( iStatus );
- SetActive();
-
- iObserver.PropertyChanged( iPropertyKey, val );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiPropertyWatch::RunL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiPropertyWatch::RunError( TInt aError )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiPropertyWatch::RunError [%d]", aError );
- iObserver.HandlePropertyError( aError );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiPropertyWatch::RunError" );
- return KErrNone;
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuireceivecontainer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,341 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-#include "musuireceivecontainer.h"
-#include "musuieventcontroller.h"
-#include "musuigeneralview.h"
-#include "musuireceiveview.h"
-#include "musuiinvitationquery.h"
-#include "musuiinvitationqueryobserver.h"
-#include "musuiappui.h"
-#include "musuidialogutil.h"
-#include "musuidefinitions.h"
-#include "musui.hrh"
-#include "muslogger.h" // debug logging
-#include <musui.rsg>
-
-#include <AknsControlContext.h>
-#include <AknsBasicBackgroundControlContext.h>
-#include <AknsDrawUtils.h>
-#include <AknWaitDialog.h>
-#include <AknDef.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiReceiveContainer* CMusUiReceiveContainer::NewL(
- CMusUiReceiveView& aView,
- const TRect aRect )
- {
- CMusUiReceiveContainer* self
- = new( ELeave ) CMusUiReceiveContainer( aView );
-
- CleanupStack::PushL( self );
- self->ConstructL( aRect );
- CleanupStack::Pop( self );
-
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiReceiveContainer::~CMusUiReceiveContainer()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveContainer::~CMusUiReceiveContainer" );
-
- if ( iInvitationQuery )
- {
- iInvitationQuery->Cancel();
- delete iInvitationQuery;
- iInvitationQuery = NULL;
- }
-
- delete iBackGround;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveContainer::~CMusUiReceiveContainer" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiReceiveContainer::CMusUiReceiveContainer( CMusUiReceiveView& aView )
- : iView( aView )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveContainer::ConstructL( const TRect& aRect )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveContainer::ConstructL" );
- CreateWindowL();
- iBackGround = CAknsBasicBackgroundControlContext::NewL(
- KAknsIIDQsnBgAreaMain,
- aRect,
- EFalse );
- iFullScreen = EFalse;
- SetRect( aRect );
- ActivateL();
-
- iOperatorSpecificFunctionality = iView.OperatorSpecificFunctionality();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveContainer::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveContainer::ShowInvitationQueryL(
- const TDesC& aContact,
- MMusUiInvitationQueryObserver& aObserver )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveContainer::ShowInvitationQueryL" );
- if ( !iInvitationQuery )
- {
- iInvitationQuery = CMusUiInvitationQuery::NewL( aObserver );
- }
- iInvitationQuery->ShowL( aContact );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveContainer::ShowInvitationQueryL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveContainer::DismissInvitationQuery( TBool aDelete )
- {
- if ( iInvitationQuery )
- {
- iInvitationQuery->Cancel();
- if ( aDelete )
- {
- delete iInvitationQuery;
- iInvitationQuery = NULL;
- }
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// Fetches a pointer to the view that owns this container.
-// -----------------------------------------------------------------------------
-//
-CMusUiGeneralView* CMusUiReceiveContainer::MusUiView() const
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveContainer::MusUiView" );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveContainer::MusUiView" );
- return &iView;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveContainer::SetFullScreen( TBool aFullScreen, TRect aRect )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiReceiveContainer::SetFullScreen: %d",
- aFullScreen );
- iFullScreen = aFullScreen;
-
- if ( aFullScreen )
- {
- // In order to capture pointer events this container must be visible.
- // Thus we make it as small as possible.
- SetRect( TRect( 0, 0, 0, 0) );
- MakeVisible( ETrue );
- SetGloballyCapturing( ETrue );
- SetPointerCapture( ETrue );
- }
- else
- {
- SetRect( aRect );
- SetPointerCapture( EFalse );
- MakeVisible( EFalse );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveContainer::SetFullScreen" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework when the view size is changed
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveContainer::SizeChanged()
- {
- TRect parentRect(Rect());
- if (iBackGround)
- {
- (static_cast<CAknsBasicBackgroundControlContext*>(iBackGround))->SetRect(parentRect);
- }
- MakeVisible( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework when to retrieve the no. of controls.
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiReceiveContainer::CountComponentControls() const
- {
- return 0; // return nbr of controls inside this container
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to retrieve the control specified by index.
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CMusUiReceiveContainer::ComponentControl( TInt aIndex ) const
- {
- switch ( aIndex )
- {
- default:
- return NULL;
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to redraw the screen area.
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveContainer::Draw( const TRect& aRect ) const
- {
- CWindowGc& gc = SystemGc();
-
- gc.Clear( aRect );
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
- if(!AknsDrawUtils::Background( skin, cc,this,gc,aRect,KAknsDrawParamDefault ))
- {
- gc.SetBrushColor( iEikonEnv->ControlColor( EColorWindowBackground, *this ) );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.Clear( aRect );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CMusUiReceiveContainer::OfferKeyEventL( const TKeyEvent& aEvent,
- TEventCode aType )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveContainer::OfferKeyEventL" );
-
- if ( iFullScreen && aType == EEventKey )
- {
- // We respond to whatever key by returning from fullscreen
- if( MUS_NO_TOOLBAR )
- {
- (static_cast <CMusUiReceiveView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdViewFullScreen );
- }
- else
- {
- (static_cast <CMusUiReceiveView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdToolbarFullScreen );
- }
- return EKeyWasConsumed;
- }
-
- switch ( aEvent.iCode )
- {
- // Volume Control
- case EKeyLeftArrow:
- {
- (static_cast <CMusUiReceiveView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdViewVolumeDown );
- return EKeyWasConsumed;
- }
- case EKeyRightArrow:
- {
- (static_cast <CMusUiReceiveView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdViewVolumeUp );
- return EKeyWasConsumed;
- }
-
- // TODO:
- case EKeyUpArrow:
- {
- break;
- }
- case EKeyDownArrow:
- {
- break;
- }
- default:
- return EKeyWasNotConsumed;
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveContainer::OfferKeyEventL" );
- return EKeyWasNotConsumed;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveContainer::HandlePointerEventL( const TPointerEvent& )
- {
- if ( iFullScreen )
- {
- // We respond to whatever pointer event by returning from fullscreen
- (static_cast <CMusUiReceiveView*>
- (MusUiView()))->HandleCommandL( EMusuiCmdToolbarFullScreen );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveContainer::UpdatePointerCapture()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveContainer::UpdatePointerCapture" );
-
- if ( iFullScreen )
- {
- // In order to capture pointer events this container must be visible.
- // Thus we make it as small as possible.
- SetRect( TRect( 0, 0, 0, 0 ) );
- MakeVisible( ETrue );
- SetGloballyCapturing( ETrue );
- SetPointerCapture( ETrue );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveContainer::UpdatePointerCapture" );
- }
-
-// end of file
--- a/mmsharing/mmshui/src/musuireceivecontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,876 +0,0 @@
-/*
-* 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: Application's UI class.
-* Version : %version: be1sipx1#75.1.17 % << Don't touch! Updated by Synergy at check-out.
-*
-*/
-
-
-
-#include "musuireceivecontroller.h"
-#include "musuieventobserver.h"
-#include "musuisharingobserver.h"
-#include "musuireceiveobserver.h"
-#include "musuicallbackservice.h"
-#include "musuiactivetimer.h"
-#include "musuidialogutil.h"
-#include "musuicontactutil.h"
-#include "mussettings.h"
-#include "mussettingskeys.h"
-#include "musuiresourcehandler.h"
-#include "musengreceivesession.h"
-#include "musenguriparser.h"
-#include "mussessionproperties.h"
-#include "muslogger.h" // debug logging
-#include "musuiappui.h"
-#include "musuireceiveview.h"
-#include "musuipropertywatch.h"
-#include "mussesseioninformationapi.h"
-#include "musui.hrh"
-#include <musui.rsg>
-
-#include <avkon.hrh>
-#include <aknappui.h>
-#include <StringLoader.h>
-
-using namespace MusSettingsKeys;
-using namespace NMusSessionApi;
-
-const TInt KMusMinDigitCountInValidTelNumber = 7;
-
-/*
- * Private number.
-*/
-_LIT( KPrivateNumber, "" );
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiReceiveController* CMusUiReceiveController::NewL(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiReceiveObserver& aReceiveObserver,
- const TRect& aRect )
- {
- CMusUiReceiveController* self = new( ELeave ) CMusUiReceiveController(
- aEventObserver,
- aSharingObserver,
- aReceiveObserver );
- CleanupStack::PushL( self );
- self->ConstructL( aRect );
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiReceiveController::~CMusUiReceiveController()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::~CMusUiReceiveController" );
- delete iSession;
- delete iOriginator;
- delete iTimer;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::~CMusUiReceiveController" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiReceiveController::CMusUiReceiveController(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiReceiveObserver& aReceiveObserver )
- : CMusUiEventController( aEventObserver, aSharingObserver ),
- iReceiveObserver( aReceiveObserver )
- {
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::ConstructL( const TRect& aRect )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::ConstructL" );
-
- // construct event listener
- CMusUiEventController::ConstructL();
-
- // construct an engine session
- iSession = CMusEngReceiveSession::NewL( aRect, *this, *this );
- iSession->SetAudioRoutingObserver( this );
- iSession->SetVolumeChangeObserver( this );
-
- iTimer = CMusUiActiveTimer::NewL( this );
- iTimer->After( KMusReceiveTimeout );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::ConstructL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::ChangeFullScreenModeL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::ChangeFullScreenModeL" );
-
- iFullScreenSelected = !iFullScreenSelected;
-
- if ( !MUS_NO_TOOLBAR )
- {
- iSharingObserver.HighlightSelectedToolbarItem( EMusuiCmdToolbarFullScreen );
- }
-
- iReceiveObserver.SetFullScreenL( iFullScreenSelected );
-
- if ( ( iEventObserver.AppOrientation()!= CAknAppUiBase::EAppUiOrientationLandscape )
- && iFullScreenSelected )
- {
- if( !iEventObserver.OrientationCanBeChanged() )
- {
- MUS_LOG( "mus: [MUSUI ] !OrientationCanBeChanged()" );
- iSession->SetOrientationL( CMusEngMceSession::ELandscape );
- }
- }
- else if ( ( iSession->OrientationL() != iOriginalMceOrientation )
- && !iFullScreenSelected )
- {
- if( !iEventObserver.OrientationCanBeChanged() )
- {
- MUS_LOG( "mus: [MUSUI ] !OrientationCanBeChanged()" );
- iSession->SetOrientationL( iOriginalMceOrientation );
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::ChangeFullScreenModeL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::OfferToolbarEventL( TInt aCommand )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiReceiveController::OfferToolbarEventL [%d]",
- aCommand );
-
- switch ( aCommand )
- {
- case EMusuiCmdToolbarFullScreen:
- {
- ChangeFullScreenModeL();
- break;
- }
- default: // Not receive specific, let the base class handle
- {
- CMusUiEventController::OfferToolbarEventL( aCommand );
- break;
- }
-
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::OfferToolbarEventL" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::HandleCommandL( TInt aCommand )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiReceiveController::HandleCommandL: %d",
- aCommand );
-
- switch ( aCommand )
- {
- // Menu commands from view's HandleCommandL:
- case EMusuiCmdViewAudioNormal:
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiReceiveController::ConstructL:\
- EMusuiCmdViewAudioNormal" );
- if ( iSession->ContainsAudioL() )
- {
- iSession->UnmuteL();
- }
- break;
- }
- case EMusuiCmdViewAudioMute:
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiReceiveController::ConstructL:\
- EMusuiCmdViewAudioMute" );
- if ( iSession->ContainsAudioL() )
- {
- iSession->MuteL();
- }
- break;
- }
- case EMusuiCmdToolbarFullScreen:
- {
- OfferToolbarEventL( EMusuiCmdToolbarFullScreen );
- break;
- }
- case EMusuiCmdViewFullScreen:
- {
- ChangeFullScreenModeL();
- break;
- }
- default:
- {
- // Try more general handling
- CMusUiEventController::HandleCommandL( aCommand );
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::HandleCommandL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::HandleIncomingSessionL(
- const TDesC& aOriginator,
- const TDesC& aOriginatorIdentity )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::HandleIncomingSessionL" )
-
- delete iOriginator;
- iOriginator = NULL;
- TInt privacyStatus(0);
-
-
- MUS_LOG( "mus: [MUSUI ] Check private number" )
- TRAPD( errorPrivacyStatus, privacyStatus =
- CMusUiPropertyWatch::ReadIntPropertyL( NMusSessionApi::KPrivacyStatus ) );
- if ( errorPrivacyStatus != KErrNone )
- {
- MUS_LOG1( "mus: [MUSUI ] ReadIntPropertyL leave code: %d", errorPrivacyStatus )
- HandleError( errorPrivacyStatus );
- }
-
- if ( privacyStatus == 1 && !iOperatorSpecificFunctionality )
- {
- MUS_LOG( "mus: [MUSUI ] Call is from private number" )
- iOriginator = KPrivateNumber().AllocL();
- }
- else if( iOperatorSpecificFunctionality )
- {
- iOriginator = aOriginatorIdentity.AllocL();
- }
- else
- {
- iOriginator = aOriginator.AllocL();
- }
-
- // Cancel the 10 seconds timer:
- iTimer->Cancel();
-
- // Display the query dialog:
-
- if ( privacyStatus == 1 && !iOperatorSpecificFunctionality )
- {
- iReceiveObserver.ShowInvitationQueryL( *iOriginator );
- }
- else if ( iOperatorSpecificFunctionality && aOriginatorIdentity.Length() != 0 )
- {
- // We compare last seven digits, since that is the minimum amount
- // that can make up a valid telephone number.
- MUS_LOG_TDESC( "mus: [MUSUI ] Right7 of MusTelNumberValue(): ",
- MusTelNumberValue().Right( KMusMinDigitCountInValidTelNumber ) )
- MUS_LOG_TDESC( "mus: [MUSUI ] Right7 of aOriginatorIdentity: ",
- aOriginatorIdentity.Right( KMusMinDigitCountInValidTelNumber ) )
- MUS_LOG_TDESC( "mus: [MUSUI ] MusContactName: ", MusContactName() )
-
- if ( !( MusTelNumberValue().Length() >=
- KMusMinDigitCountInValidTelNumber &&
- aOriginatorIdentity.Length() >=
- KMusMinDigitCountInValidTelNumber &&
- MusTelNumberValue().Right( KMusMinDigitCountInValidTelNumber ) ==
- aOriginatorIdentity.Right( KMusMinDigitCountInValidTelNumber ) &&
- MusContactName().Length() > 0 ) )
- {
- // In some very rare scenario a valid session may come from MSISDN
- // that is not the same as the one received from manager. To avoid
- // showing of wrong MSISDN, we replace phone number with one
- // received from P-Asserted-Identity header. Since in this scenario
- // we cannot be sure about contact name either, we replace it with
- // phone number. Replacing of contact name must happen also when we
- // have no name for contact.
- delete iTelNumber;
- iTelNumber = NULL;
- iTelNumber = aOriginatorIdentity.AllocL();
-
- delete iContactName;
- iContactName = NULL;
- iContactName = aOriginatorIdentity.AllocL();
- }
-
- iReceiveObserver.ShowInvitationQueryL( MusContactName() );
-
- }
- else
- {
- if( MusUiContactUtil::CheckPbContactForVSAddressesL(
- *( iEventObserver.EikonEnv() ), *iOriginator, iContactId ) )
- {
- if ( MusContactName().Length() < 1 )
- { // originator is defined in Contacts but the name is empty
- iReceiveObserver.ShowInvitationQueryL( *iOriginator );
- }
- else
- {
- iReceiveObserver.ShowInvitationQueryL( MusContactName() );
- }
- }
- else
- {
- iReceiveObserver.ShowInvitationQueryL( *iOriginator );
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::HandleIncomingSessionL" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiReceiveController::ClipMutedL()
- {
- return iSession->IsMutedL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiReceiveController::ClipContainsAudioL()
- {
- if ( !ConnectionInitialized() )
- {
- return EFalse; // We cannot be sure yet
- }
-
- return iSession->ContainsAudioL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngMceSession* CMusUiReceiveController::EngineSession()
- {
- return iSession; // CMusEngReceiveSession is CMusEngMceSession
- }
-
-
-// -----------------------------------------------------------------------------
-// Virtual function from CMusUiEventController
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::HandleAsyncEventL( TMusUiAsyncEvent aEventId )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::HandleAsyncEventL" );
- switch ( aEventId )
- {
- case EMusUiAsyncInviteAccepted:
- {
- ShowWaitDialogL();
- break;
- }
- default:
- {
- // Not receive specific, let the base class handle
- CMusUiEventController::HandleAsyncEventL( aEventId );
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::HandleAsyncEventL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Virtual function from CMusUiEventController
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMusUiReceiveController::TypedAddress() const
- {
- return *iOriginator;
- }
-
-
-// -----------------------------------------------------------------------------
-// Virtual function from CMusUiEventController
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::DeleteEngineSession()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::DeleteEngineSession" );
- if ( iSession && iSession->IsAudioRoutingLoudSpeaker() )
- {
- iShowDialog = ETrue;
- }
- delete iSession;
- iSession = NULL;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::DeleteEngineSession" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiReceiveController::FullScreenSelected()
- {
- return iFullScreenSelected;
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngReceiveSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::IncomingSessionPreNotification()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::IncomingSessionPreNotification" );
- iTimer->Cancel();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::IncomingSessionPreNotification" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngReceiveSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::IncomingSession( const TDesC& aOriginator,
- const TDesC& aOriginatorIdentity )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::IncomingSession" );
- TRAPD( err, HandleIncomingSessionL( aOriginator, aOriginatorIdentity ) );
- if ( err != KErrNone )
- {
- iEventObserver.HandleError( err );
- }
- else
- {
- SetConnectionInitialized( ETrue );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::IncomingSession" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngReceiveSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::StreamBuffering()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::StreamBuffering" );
- if ( iStreamPaused )
- {
- MUS_LOG( "mus: [MUSUI ] Stream was paused, not show buffering state" );
- }
- else
- {
- TRAPD( err, iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconWaitAnim ) );
- if ( err != KErrNone )
- {
- iEventObserver.HandleError( err );
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::StreamBuffering" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::SessionEstablished()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::SessionEstablished" );
-
- // Common handling first
- CMusUiEventController::SessionEstablished();
-
- TRAPD( error, SessionEstablishedL() )
-
- if ( error != KErrNone )
- {
- iEventObserver.HandleError( error );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::SessionEstablished" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::SessionTerminated()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::SessionTerminated" );
- if ( !ConnectionEstablished() )
- {
- iReceiveObserver.DismissInvitationQuery( ETrue );
- TRAP_IGNORE( MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_INVITATION_CANCELLED ) )
- iEventObserver.HandleExit();
- }
- else
- {
- TRAP_IGNORE( iSharingObserver.DismissWaitDialogL() );
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::SessionTerminated" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::SessionConnectionLost()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::SessionConnectionLost" );
- TRAPD( err,
- iSharingObserver.DismissWaitDialogL();
- MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_CONNECTION_LOST ) );
- if ( err != KErrNone )
- {
- iEventObserver.HandleError( err );
- }
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::SessionConnectionLost" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::SessionFailed()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::SessionFailed" );
- TRAPD( error, iSharingObserver.DismissWaitDialogL() );
- if ( error != KErrNone )
- {
- iEventObserver.HandleError( error );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::SessionFailed" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::StreamIdle()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::StreamIdle" );
- iStreamPaused = ETrue;
- TRAPD( err, iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause ) );
- if ( iFullScreenSelected )
- {
- TRAP_IGNORE( ChangeFullScreenModeL() );
- }
- if ( err != KErrNone )
- {
- iEventObserver.HandleError( err );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::StreamIdle" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::StreamStreaming()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::StreamStreaming" );
-
- if ( ConnectionEstablished() )
- {
- TRAP_IGNORE( iSharingObserver.DismissWaitDialogL() )
- TRAPD( err, iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPlay ) )
-
- if ( err != KErrNone )
- {
- iEventObserver.HandleError( err );
- }
- iStreamPaused = EFalse;
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::StreamStreaming" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::SessionTimeChanged(
- const TTimeIntervalSeconds& aSeconds )
- {
- if ( aSeconds.Int() > -1 )
- {
- iSharingObserver.UpdateSessionTime( SessionTimeFormatted( aSeconds ) );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::InactivityTimeout()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::InactivityTimeout" );
- TRAP_IGNORE( iSharingObserver.DismissWaitDialogL();
- MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SERVICE_N_A ) );
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::InactivityTimeout" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusUiInvitationQueryObserver: Invitation accepted by the user
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::InvitationAcceptedL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::InvitationAcceptedL" );
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
-
- // Enable loud speaker already before answering but disable it immediately
- // if accepting fails for some reason
- if ( iSession->AudioRoutingCanBeChanged() && !iSession->IsAudioRoutingHeadset() )
- {
- iSession->EnableLoudspeakerL( ELoudspeakerEnabled, ETrue );
- }
-
- TRAPD( err, iSession->AcceptInvitationL( ETrue ) );
- if ( err )
- {
- if ( iSession->AudioRoutingCanBeChanged() )
- {
- iSession->EnableLoudspeakerL( ELoudspeakerDisabled, ETrue );
- }
- User::Leave( err );
- }
-
- iCallbackService->AsyncEventL( EMusUiAsyncInviteAccepted );
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::InvitationAcceptedL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusUiInvitationQueryObserver: Invitation rejected by the user
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::InvitationRejectedL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::InvitationRejectedL" );
- __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
- iSession->AcceptInvitationL( EFalse );
- HandleExitL();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::InvitationRejectedL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusUiActiveTimerObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::TimerComplete( CMusUiActiveTimer* /*aTimer*/ )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::TimerComplete" );
- iEventObserver.HandleExit();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::TimerComplete" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::ExitProcedureL( TBool aUserAcceptance )
- {
-
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::ExitProcedureL" );
-
- switch ( iShutdownState )
- {
- case EMusUiShutdownVideoSaved:
- {
- MUS_LOG( "mus: [MUSUI ] ExitProcedureL: EMusuiShutdownVideoSaved" );
-
- // Check if our address is valid sip or tel uri. If not, there is no
- // reason to query user about permission to save it to contacts.
-
- TInt error = KErrNotFound;
- if ( iOriginator )
- {
- TMusEngUriParser parser( *iOriginator );
- TRAP( error, parser.ParseUriL() )
- }
-
- // Save Address to Contacts query if contact found and
- // there is no address in contacts
- // and if is the standard variant.
- if ( !iOperatorSpecificFunctionality && iContactId > 0 &&
- !MusUiContactUtil::ShareViewFieldExistsL(
- *( iEventObserver.EikonEnv() ), iContactId ) &&
- error == KErrNone )
- {
- iShutdownState = EMusUiShutdownContactSavingQueried;
- iEventObserver.SetToolbarVisibility( EFalse );
- SaveContactQueryL();
- }
- else
- {
- // Nothing receive specific, let the base class handle
- CMusUiEventController::ExitProcedureL( aUserAcceptance );
- }
- break;
- }
-
- default:
- {
- // Nothing receive specific, let the base class handle
- CMusUiEventController::ExitProcedureL( aUserAcceptance );
- break;
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::ExitProcedureL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::ShowWaitDialogL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::ShowWaitDialogL" );
-
- delete iDialogPrompt;
- iDialogPrompt = NULL;
-
- iDialogPrompt = StringLoader::LoadL(
- R_MUS_RECEIVE_VIEW_WAITING_FOR_STREAM,
- ( MusContactName().Length() > 0 ) ?
- MusContactName() :
- *iOriginator );
-
- if ( !iSharingObserver.ShowWaitDialogL(
- *iDialogPrompt,
- KMusInviteExpireTimeout,
- R_MUS_LIVE_SHARING_VIEW_NOTE_TIMEOUT_EXPIRED ) )
- {
- HandleExitL();
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::ShowWaitDialogL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From MMusEngSessionObserver
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveController::SessionEstablishedL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveController::SessionEstablishedL" );
-
- iConnectionEstablished = ETrue;
- iSharingObserver.DismissWaitDialogL();
-
- if ( iCallbackService->CurrentEvent() == EMusUiAsyncInviteAccepted )
- {
- iCallbackService->Cancel();
- }
-
- // Orientation for video player
- iResourceHandler->RequestVideoPlayerL( ETrue );
-
- iOriginalMceOrientation = iSession->OrientationL();
-
- // set the mce orientation if different than videoplayer orientation
- CAknAppUiBase::TAppUiOrientation currentOrientation =
- STATIC_CAST(CMusUiReceiveView&,iReceiveObserver).MusAppUi()->Orientation();
-
- if( (iOriginalMceOrientation == CMusEngMceSession::EPortrait &&
- currentOrientation== CAknAppUiBase::EAppUiOrientationPortrait ) ||
- (iOriginalMceOrientation == CMusEngMceSession::ELandscape &&
- currentOrientation== CAknAppUiBase::EAppUiOrientationLandscape ))
- {
- MUS_LOG( "mus: [MUSUI ] -> MCE & Videoplayer orientation is same" );
- // Both MCE and Videoplayer has same orientation.
- }
- else
- {
- if(currentOrientation == CAknAppUiBase::EAppUiOrientationPortrait)
- {
- MUS_LOG( "mus: [MUSUI ] -> Setting MCE Orientation to Portrait" );
- iSession->SetOrientationL(CMusEngMceSession::EPortrait);
- }
- else if(currentOrientation == CAknAppUiBase::EAppUiOrientationLandscape)
- {
- MUS_LOG( "mus: [MUSUI ] -> Setting MCE Orientation to Landscape" );
- iSession->SetOrientationL(CMusEngMceSession::ELandscape);
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] -> Undefined Orientation. " );
- }
- }
-
- if ( iForeground )
- {
- EnableDisplayL( ETrue );
- iEventObserver.SetToolbarVisibility( ETrue );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveController::SessionEstablishedL" );
- }
-
-
-// End of file
-
--- a/mmsharing/mmshui/src/musuireceiveview.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,503 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-
-#include "musuireceiveview.h"
-#include "musuireceivecontainer.h"
-#include "musuibackgroundviewcontainer.h"
-#include "musuireceivecontroller.h"
-#include "musuiactivitymanger.h"
-#include "musuiappui.h"
-#include "musuistatuspanehandler.h"
-#include "musui.hrh"
-#include "musuidefinitions.h"
-#include "muslogger.h" // debug logging
-#include <musui.rsg>
-#include <musui.mbg>
-
-#include <aknViewAppUi.h>
-#include <avkon.hrh>
-#include <eikmenup.h>
-#include <akntoolbar.h>
-
-
-// -----------------------------------------------------------------------------
-// EPOC two-phased constructor
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::ConstructL" );
-
- CMusUiGeneralView::ConstructL();
-
- Toolbar()->SetToolbarObserver( this );
- Toolbar()->UpdateBackground();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CMusUiReceiveView::~CMusUiReceiveView()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::~CMusUiReceiveView" );
- if ( iContainer )
- {
- AppUi()->RemoveFromViewStack( *this, iContainer );
- }
- delete iContainer;
-
- delete iController;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::~CMusUiReceiveView" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TUid CMusUiReceiveView::Id() const
- {
- return KMusUidReceivingView;
- }
-
-// -----------------------------------------------------------------------------
-// From MEikMenuObserver, Called by framework before constructing menupane
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::DynInitMenuPaneL( TInt aResourceId,
- CEikMenuPane* aMenuPane )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::DynInitMenuPaneL" );
-
- // Base class initiated initialization first
- CMusUiGeneralView::DynInitMenuPaneL( aResourceId, aMenuPane );
- if(!MUS_NO_TOOLBAR)
- {
- SetInitialFocusedItemL();
- }
-
- if ( aResourceId == R_MUSUI_VIEW_MENU )
- {
- // Delete item which is present on toolbar
- if ( !MUS_NO_TOOLBAR )
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdViewFullScreen );
- }
-
- // Delete items not related to receiving side:
- aMenuPane->DeleteMenuItem( EMusuiCmdViewReplay );
- aMenuPane->DeleteMenuItem( EMusuiCmdToolbarZoom );
- aMenuPane->DeleteMenuItem( EMusuiCmdToolbarBrightness );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewZoom );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewBrightness );
- aMenuPane->DeleteMenuItem( EMusuiCmdRecord );
- aMenuPane->DeleteMenuItem( EMusuiCmdStopRecording );
-
- // Delete EMusuiCmdViewAudioNormal or EMusuiCmdViewAudioMute
- // depending on the audio state of the clip:
- if ( iController->ClipContainsAudioL() )
- {
- aMenuPane->DeleteMenuItem( iController->ClipMutedL() ?
- EMusuiCmdViewAudioMute :
- EMusuiCmdViewAudioNormal );
- }
- else
- {
- aMenuPane->DeleteMenuItem( EMusuiCmdViewAudioMute );
- aMenuPane->DeleteMenuItem( EMusuiCmdViewAudioNormal );
- }
-
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::DynInitMenuPaneL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Called when focus event occurs.
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::DoHandleForegroundEventL( TBool aForeground )
- {
- CMusUiGeneralView::HandleForegroundEventL( aForeground, EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::HandleToolbarCommandL( TInt aCommand )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::HandleToolbarCommandL" );
-
- __ASSERT_ALWAYS( iController, User::Leave( KErrNotReady ) );
-
- switch ( aCommand )
- {
- case EKeyLeftArrow:
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
- EMusUiCmdToolbarLastIndex );
- break;
- }
- case EKeyRightArrow:
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
- EMusUiCmdToolbarLastIndex );
- break;
- }
- case EKeyUpArrow:
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
- EMusUiCmdToolbarLastIndex );
- break;
- }
- case EKeyDownArrow:
- {
- HandleCommandL(
- iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
- EMusUiCmdToolbarLastIndex );
- break;
- }
- case EMusuiCmdViewVolumeDown:
- {
- HandleCommandL( EMusuiCmdViewVolumeDown );
- break;
- }
- case EMusuiCmdViewVolumeUp:
- {
- HandleCommandL( EMusuiCmdViewVolumeUp );
- break;
- }
- default:
- {
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::HandleToolbarCommandL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::SetInitialFocusedItemL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::SetInitialFocusedItemL" );
-
- __ASSERT_ALWAYS( iController, User::Leave( KErrNotReady ) );
-
- if ( iOperatorSpecificFunctionality && !AknLayoutUtils::PenEnabled() )
- {
- MUS_LOG( "Focus changed in OPERATOR mode !!!!!!!!!!!!!" );
- if ( !( iController->DeviceHasDedicatedVolumeKeys() ) )
- {
- Toolbar()->SetFocusedItemL( EMusuiCmdToolbarVolume );
- }
- else
- {
-
- Toolbar()->SetFocusedItemL( EMusuiCmdToolbarFullScreen );
- }
-
- }
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::SetInitialFocusedItemL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::SetToolbarVisibility( TBool aVisible )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiReceiveView::SetToolbarVisibility: %d",
- aVisible );
- if ( MUS_NO_TOOLBAR )
- {
- MUS_LOG( " Operator variant, no toolbar! Ignoring.." )
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::SetToolbarVisibility" );
- return;
- }
-
- // Show toolbar only after established session and before of exit procedure
- if ( iController->FullScreenSelected() )
- {
- MUS_LOG( "mus: [MUSUI ] setting toolbar invisible" );
-
- Toolbar()->SetToolbarVisibility( EFalse );
-
- SharingContainer().RequestToolbarVisibilityOnceDialogDismissed( NULL );
- }
- else
- {
- CMusUiGeneralView::SetToolbarVisibility( aVisible );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::SetToolbarVisibility" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::DynInitToolbarL( TInt aResourceId,
- CAknToolbar* aToolbar )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::DynInitToolbarL" );
-
- // Items to be removed in Receive View:
- if (!AknLayoutUtils::PenEnabled())//(aResourceId == R_MUS_TOOLBAR_NONTOUCH)//
- {
- if ( iController->DeviceHasDedicatedVolumeKeys() )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiReceiveView::DynInitToolbarL\
- DeviceHasDedicatedVolumeKeys" );
- Toolbar()->RemoveItem( EMusuiCmdToolbarVolume );
- }
- else
- {
- aToolbar->SetFocusedItemL( EMusuiCmdToolbarVolume );
- }
-
- Toolbar()->RemoveItem( EMusuiCmdToolbarFFRev );
- Toolbar()->RemoveItem( EMusuiCmdToolbarZoom );
- Toolbar()->RemoveItem( EMusuiCmdToolbarBrightness);
- }
-
- Toolbar()->RemoveItem( EMusuiCmdToolbarPauseLive );
- Toolbar()->RemoveItem( EMusuiCmdToolbarUnPauseLive );
- Toolbar()->RemoveItem( EMusuiCmdToolbarPause );
- Toolbar()->RemoveItem( EMusuiCmdToolbarUnPause );
-
- if ( aToolbar->FocusedItem() == KErrNotFound &&
- !AknLayoutUtils::PenEnabled() )
- {
- aToolbar->SetFocusedItemL( EMusuiCmdToolbarFullScreen );
- }
-
- Toolbar()->RemoveItem( EMusuiCmdToolbarBlank );
-
- // Last generic base class functionality
- CMusUiGeneralView::DynInitToolbarL( aResourceId, aToolbar );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::DynInitToolbarL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::ShowInvitationQueryL( const TDesC& aQuery )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::ShowInvitationQueryL" );
- iContainer->ShowInvitationQueryL( aQuery, *iController );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::ShowInvitationQueryL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::DismissInvitationQuery( TBool aDelete )
- {
- iContainer->DismissInvitationQuery( aDelete );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::SetFullScreenL( TBool aFullScreen )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::SetFullScreenL" );
-
- if ( aFullScreen )
- {
- Cba()->MakeVisible( EFalse );
- SetToolbarVisibility( EFalse );
- MusAppUi()->StatusPane()->MakeVisible( EFalse );
-
- if( MusAppUi()->CurrentFixedToolbar() )
- MusAppUi()->CurrentFixedToolbar()->MakeVisible( EFalse );
-
- if( MusAppUi()->CurrentPopupToolbar() )
- MusAppUi()->CurrentPopupToolbar()->MakeVisible( EFalse );
-
- if( MusAppUi()->PopupToolbar() )
- MusAppUi()->PopupToolbar()->MakeVisible( EFalse );
- iController->ChangeOrientationL( CAknAppUiBase::EAppUiOrientationLandscape );
-
- iContainer->SetFullScreen( ETrue, MusAppUi()->ApplicationRect() );
- iController->SetRect( MusAppUi()->ApplicationRect() );
- }
- else
- {
- if( MusAppUi()->CurrentFixedToolbar() )
- MusAppUi()->CurrentFixedToolbar()->MakeVisible( ETrue );
-
- if( MusAppUi()->CurrentPopupToolbar() )
- MusAppUi()->CurrentPopupToolbar()->MakeVisible( ETrue );
-
- if( MusAppUi()->PopupToolbar() )
- MusAppUi()->PopupToolbar()->MakeVisible( ETrue);
- // First make toolbar, cba and statuspane visible as those affect
- // to client rect
- MusAppUi()->StatusPane()->MakeVisible( ETrue );
- SetToolbarVisibility( ETrue );
- Cba()->MakeVisible( ETrue );
-
- iController->ChangeOrientationL( CAknAppUiBase::EAppUiOrientationAutomatic );
- iContainer->SetFullScreen( EFalse, ClientRect() );
- iController->SetRect( ClientRect() );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::SetFullScreenL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::RefreshView()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::RefreshView" );
-
- RefreshBackgroundContainer();
-
- if ( iContainer )
- {
- iContainer->SetRect( ClientRect() );
- iContainer->UpdatePointerCapture();
- }
-
- TRect videoRect( ClientRect().iTl.iX,
- ClientRect().iTl.iY,
- ClientRect().iBr.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
-
- if ( iController )
- {
- iController->SetRect( videoRect );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::RefreshView" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiEventController* CMusUiReceiveView::EventController() const
- {
- return iController;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiViewContainer& CMusUiReceiveView::SharingContainer() const
- {
- return *iContainer;
- }
-
-
-// -----------------------------------------------------------------------------
-// From CAknView, Gets called from framework when activating this view
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::DoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::DoActivateL" );
-
- // Base class activation first
- CMusUiGeneralView::DoActivateL( aPrevViewId,
- aCustomMessageId,
- aCustomMessage );
-
- if ( !iContainer )
- {
- // create the container and then add myself to the view stack
- iContainer = CMusUiReceiveContainer::NewL( *this, ClientRect() );
- iContainer->SetMopParent( this );
- AppUi()->AddToViewStackL( *this, iContainer );
- }
-
- /* Increase the ordinal position of background container
- * So that other control will be drawn first.
- */
- UpdateBackgroundOrdinalPosition( ETrue );
-
- TRect videoRect( ClientRect().iTl.iX,
- ClientRect().iTl.iY,
- ClientRect().iBr.iX,
- ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
-
- if ( !iController )
- {
- iController = CMusUiReceiveController::NewL( *MusAppUi(),
- *this,
- *this,
- videoRect );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::DoActivateL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// From AknView, Gets called from framework when deactivating this view
-// -----------------------------------------------------------------------------
-//
-void CMusUiReceiveView::DoDeactivate()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiReceiveView::DoDeactivate" );
-
- CMusUiGeneralView::DoDeactivate(); // Base class deactivation first
-
- if ( iContainer )
- {
- AppUi()->RemoveFromViewStack( *this, iContainer );
- delete iContainer;
- iContainer = NULL;
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiReceiveView::DoDeactivate" );
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuiresourcehandler.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,558 +0,0 @@
-/*
-* 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: Handler for camera, keypad and video player resources
-*
-*/
-
-
-
-#include "musuiresourcehandler.h"
-#include "musuipropertywatch.h"
-#include "musuieventobserver.h"
-#include "musuidialogutil.h"
-#include "muslogger.h"
-#include "mussettings.inl"
-
-#include <musui.rsg>
-#include <AknWaitDialog.h>
-#include <StringLoader.h>
-
-using namespace NMusResourceApi;
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiResourceHandler::~CMusUiResourceHandler()
- {
- delete iCameraResourceWatch;
- delete iKeypadResourceWatch;
-
- delete iChangeProductModeDialog;
- delete iDialogPrompt;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiResourceHandler* CMusUiResourceHandler::NewL(
- MMusUiEventObserver& aObserver )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiResourceHandler::NewL()" )
-
- CMusUiResourceHandler* self =
- new ( ELeave ) CMusUiResourceHandler( aObserver );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiResourceHandler::NewL()" )
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiResourceHandler::RequestKeypadL( TBool aMandatory )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiResourceHandler::RequestKeypadL" )
-
- TBool keypadAvailable( EFalse );
-
- switch ( iKeypadAvailability )
- {
- case NMusResourceApi::EAvailable:
- {
- MUS_LOG( "mus: [MUSUI ] Keypad is available" )
- break;
- }
- case NMusResourceApi::ENotAvailable:
- {
- MUS_LOG( "mus: [MUSUI ] Keypad is not available, changing mode" )
- iKeypadAvailibilityInProgress = ETrue;
- delete iDialogPrompt;
- iDialogPrompt = NULL;
- iDialogPrompt = StringLoader::LoadL( R_MUS_CHANGE_KEYPAD_MODE_TXT );
- ShowChangeProductModeDialogL( *iDialogPrompt );
- MUS_LOG( " Product mode changed" )
- MUS_LOG1( " Keypad availability is %d",
- iKeypadAvailability )
- break;
- }
- default:
- {
- MUS_LOG( "mus: [MUSUI ] availability default." )
- break;
- }
-
- }
-
- switch(iKeypadUsability)
- {
- case MusSettingsKeys::EUsabilityLandscape:
- {
- MUS_LOG( "mus: [MUSUI ] Keypad is usable in landscape" )
- iObserver.SwitchOrientationL(
- CAknAppUiBase::EAppUiOrientationLandscape );
- break;
- }
- case MusSettingsKeys::EUsabilityPortrait:
- {
- MUS_LOG( "mus: [MUSUI ] Keypad is usable in portrait" )
- iObserver.SwitchOrientationL(
- CAknAppUiBase::EAppUiOrientationPortrait );
- break;
- }
- case MusSettingsKeys::EUsabilityAlways:
- {
- MUS_LOG( "mus: [MUSUI ] Keypad is usable in all mode" )
- keypadAvailable = ETrue;
- }
- break;
- default:
- MUS_LOG( "mus: [MUSUI ] usuability default ." )
- break;
- }
-
- keypadAvailable = IsCurrentlyAvailable( iKeypadAvailability,
- iKeypadUsability );
-
- if ( aMandatory && !keypadAvailable )
- {
- MUS_LOG( "mus: [MUSUI ] Mandatory keypad not available, exiting" )
- MusUiDialogUtil::ShowGlobalInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SHARING_ENDED );
- iObserver.HandleExit();
- }
-
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiResourceHandler::RequestKeypadL( %d )",
- keypadAvailable )
-
- return keypadAvailable;
-
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiResourceHandler::RequestCameraL( TBool aMandatory )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiResourceHandler::RequestCameraL" )
-
- TBool cameraAvailable( EFalse );
-
- switch ( iCameraAvailability )
- {
- case NMusResourceApi::EAvailable:
- {
- MUS_LOG( "mus: [MUSUI ] Camera is available" )
- cameraAvailable = ETrue;
- break;
- }
-
- case NMusResourceApi::ENotAvailable:
- {
- MUS_LOG( "mus: [MUSUI ] Camera is not available, changing mode" )
-
- iCameraAvailibilityInProgress = ETrue;
- delete iDialogPrompt;
- iDialogPrompt = NULL;
- iDialogPrompt = StringLoader::LoadL(
- R_MUS_LIVE_SHARING_VIEW_OPEN_CAMERA_LENS_COVER_WAIT_NOTE_TXT );
- ShowChangeProductModeDialogL( *iDialogPrompt );
-
- MUS_LOG( " Product mode changed" )
- MUS_LOG1( " Camera availability is %d",
- iCameraAvailability )
- break;
- }
- default:
- MUS_LOG( "mus: [MUSUI ] availability default." )
- break;
- }
-
- switch(iCameraUsability)
- {
- case MusSettingsKeys::EUsabilityLandscape:
- {
- MUS_LOG( "mus: [MUSUI ] Camera is usable in landscape" )
- iObserver.SwitchOrientationL(
- CAknAppUiBase::EAppUiOrientationLandscape );
- break;
- }
- case MusSettingsKeys::EUsabilityPortrait:
- {
- MUS_LOG( "mus: [MUSUI ] Camera is usable in portrait" )
- iObserver.SwitchOrientationL(
- CAknAppUiBase::EAppUiOrientationPortrait );
- break;
- }
- case MusSettingsKeys::EUsabilityAlways:
- {
- MUS_LOG( "mus: [MUSUI ] camera is usable in all mode" )
- cameraAvailable = ETrue;
- }
- default:
- {
- MUS_LOG( "mus: [MUSUI ] usuability default." )
- break;
- }
- }
-
- cameraAvailable = IsCurrentlyAvailable( iCameraAvailability,
- iCameraUsability );
- if ( aMandatory && !cameraAvailable )
- {
- MUS_LOG( "mus: [MUSUI ] Mandatory camera not available, exiting" )
- MusUiDialogUtil::ShowGlobalInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SHARING_ENDED );
- iObserver.HandleExit();
- }
-
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiResourceHandler::RequestCameraL( %d )",
- cameraAvailable )
-
- return cameraAvailable;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiResourceHandler::RequestVideoPlayerL( TBool aMandatory )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiResourceHandler::RequestVideoPlayerL" )
-
- TBool videoPlayerAvailable( EFalse );
-
- /* Video Player will be always available. There is no dynamic variation */
- NMusResourceApi::TAvailability vpAvailability = NMusResourceApi::EAvailable;
-
- switch ( iVideoplayerUsability )
- {
- case MusSettingsKeys::EUsabilityAlways:
- {
- MUS_LOG( "mus: [MUSUI ] Video player is usuable in all mode" )
- videoPlayerAvailable = ETrue;
- break;
- }
- case MusSettingsKeys::EUsabilityLandscape:
- {
- MUS_LOG( "mus: [MUSUI ] Video player is usable in landscape" )
-
- iObserver.SwitchOrientationL(
- CAknAppUiBase::EAppUiOrientationLandscape );
- videoPlayerAvailable = IsCurrentlyAvailable( vpAvailability,
- iVideoplayerUsability );
- break;
- }
- case MusSettingsKeys::EUsabilityPortrait:
- {
- MUS_LOG( "mus: [MUSUI ] Video player is usable in portrait" )
-
- iObserver.SwitchOrientationL(
- CAknAppUiBase::EAppUiOrientationPortrait );
- videoPlayerAvailable = IsCurrentlyAvailable( vpAvailability,
- iVideoplayerUsability );
- break;
- }
- default:
- {
- MUS_LOG( "mus: [MUSUI ] usuability default." )
- break;
- }
- }
-
- if ( aMandatory && !videoPlayerAvailable )
- {
- MUS_LOG( "mus: [MUSUI ] Mandatory player not available, exiting" )
- MusUiDialogUtil::ShowGlobalInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SHARING_ENDED );
- iObserver.HandleExit();
- }
-
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiResourceHandler::RequestVideoPlayerL(%d)",
- videoPlayerAvailable )
-
- return videoPlayerAvailable;
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by CMusUiPropertyWatch, when resource key values change in P&S
-// -----------------------------------------------------------------------------
-//
-void CMusUiResourceHandler::PropertyChanged( const TUint aKey,
- const TInt aValue )
- {
-
- MUS_LOG2( "mus: [MUSUI ] -> CMusUiResourceHandler::ResourcePropertyChanged:\
- aKey: [%u] aValue: [%d]", aKey, aValue )
-
- switch( aKey )
- {
- case NMusResourceApi::KCameraAvailability:
- {
- MUS_LOG( "mus: [MUSUI ] KCameraAvailability " )
- iCameraAvailability = static_cast< TAvailability >( aValue );
- if ( iCameraAvailibilityInProgress && iChangeProductModeDialog )
- {
- TRAP_IGNORE( iChangeProductModeDialog->ProcessFinishedL() );
- }
- iCameraAvailibilityInProgress = EFalse;
- break;
- }
- case NMusResourceApi::KKeypadAvailability:
- {
- MUS_LOG( "mus: [MUSUI ] KKeypadAvailability " )
- iKeypadAvailability = static_cast< TAvailability >( aValue );
- if ( iKeypadAvailibilityInProgress && iChangeProductModeDialog )
- {
- TRAP_IGNORE( iChangeProductModeDialog->ProcessFinishedL() );
- }
- iKeypadAvailibilityInProgress = EFalse;
- break;
- }
- default:
- {
- MUS_LOG( "mus: [MUSUI ] avilability property watch default." )
- break;
- }
-
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiResourceHandler::ResourcePropertyChanged" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiResourceHandler::HandlePropertyError( const TInt aReason )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiResourceHandler::HandlePropertyError()" )
-
- iObserver.HandleError( aReason );
- }
-
-
-// -----------------------------------------------------------------------------
-// C++ constructor
-// -----------------------------------------------------------------------------
-//
-CMusUiResourceHandler::CMusUiResourceHandler( MMusUiEventObserver& aObserver )
- :iObserver( aObserver ),
- iCameraAvailability(NMusResourceApi::EAvailable),
- iKeypadAvailability(NMusResourceApi::EAvailable),
- iCameraUsability(MusSettingsKeys::EUsabilityAlways),
- iKeypadUsability(MusSettingsKeys::EUsabilityAlways),
- iVideoplayerUsability(MusSettingsKeys::EUsabilityAlways)
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// Symbian second phase constructor
-// -----------------------------------------------------------------------------
-//
-void CMusUiResourceHandler::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiResourceHandler::ConstructL()" )
-
- iCameraAvailibilityInProgress = EFalse;
- iKeypadAvailibilityInProgress = EFalse;
-
- // Read the value from cenrep and check whether camera,keypad
- // and videoplayer usability.
- MultimediaSharingSettings::ResourceUsability( iCameraUsability ,
- iKeypadUsability,
- iVideoplayerUsability);
-
- // Read the value from cenrep and check whether camera and keypad
- // available dynamically.
- MusSettingsKeys::TAvailability camera,keypad;
- MultimediaSharingSettings::ResourceAvailability( camera ,
- keypad);
-
- TInt err = KErrNone;
-
- // Set Camera availability
- if(camera == MusSettingsKeys::EAvailabilityDynamic)
- {
- // read the PS key intial value
- err = RProperty::Get(
- NMusResourceApi::KCategoryUid,
- NMusResourceApi::KCameraAvailability,
- (TInt&)iCameraAvailability );
- if(err)
- {
- MUS_LOG1( "mus: [MUSUI ] Error = %d",err )
- iCameraAvailability = NMusResourceApi::ENotAvailable;
- }
- // watch the camera ps key for further change
- iCameraResourceWatch = CMusUiPropertyWatch::NewL(
- *this,
- NMusResourceApi::KCategoryUid,
- KCameraAvailability );
- }
- else
- {
- iCameraAvailability = NMusResourceApi::EAvailable;
- }
-
- // Set Keypad availability
- if(keypad == MusSettingsKeys::EAvailabilityDynamic)
- {
- // read the PS key intial value
- err = RProperty::Get(
- NMusResourceApi::KCategoryUid,
- NMusResourceApi::KKeypadAvailability,
- (TInt&)iKeypadAvailability );
- if(err)
- {
- MUS_LOG1( "mus: [MUSUI ] Error = %d",err )
- iKeypadAvailability = NMusResourceApi::ENotAvailable;
- }
- // watch the keypad ps key
- iKeypadResourceWatch = CMusUiPropertyWatch::NewL(
- *this,
- NMusResourceApi::KCategoryUid,
- KKeypadAvailability );
- }
- else
- {
- iKeypadAvailability = NMusResourceApi::EAvailable;
- }
-
- // Videoplayer availability always static
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiResourceHandler::ConstructL()" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiResourceHandler::ShowChangeProductModeDialogL(
- const TDesC& aPrompt )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiResourceHandler::ShowChangeProductModeDialogL()" )
-
- TBool returnValue = EFalse;
-
- if ( !iChangeProductModeDialog )
- {
- iChangeProductModeDialog = new ( ELeave ) CAknWaitDialog( (
- reinterpret_cast<CEikDialog**>( &iChangeProductModeDialog ) ),
- ETrue );
-
- iChangeProductModeDialog->SetTextL( aPrompt );
-
- iChangeProductModeDialog->PrepareLC(
- R_MUS_LIVE_SHARING_VIEW_ACTIVATE_CAMERA_WAIT_NOTE );
- returnValue = iChangeProductModeDialog->RunLD();
-
- iChangeProductModeDialog = NULL;
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiResourceHandler::ShowChangeProductModeDialogL()" )
-
- return returnValue;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiResourceHandler::IsCurrentlyAvailable(
- NMusResourceApi::TAvailability aResourceAvailability,
- MusSettingsKeys::TUsability aResourceUsability
- )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiResourceHandler::IsCurrentlyAvailable()" )
-
- CAknAppUiBase::TAppUiOrientation orientation = iObserver.AppOrientation();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiResourceHandler::IsCurrentlyAvailable()" )
-
- return ( aResourceAvailability == NMusResourceApi::EAvailable &&
- (
- aResourceUsability == MusSettingsKeys::EUsabilityAlways ||
- (aResourceUsability == MusSettingsKeys::EUsabilityLandscape &&
- orientation == CAknAppUiBase::EAppUiOrientationLandscape) ||
- (aResourceUsability == MusSettingsKeys::EUsabilityPortrait &&
- orientation == CAknAppUiBase::EAppUiOrientationPortrait)
- )
- );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiResourceHandler::CheckInitialOrientationL(MultimediaSharing::TMusUseCase aUsecase )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiResourceHandler::CheckInitialOrientationL()" )
- if ( aUsecase != MultimediaSharing::EMusLiveVideo &&
- aUsecase != MultimediaSharing::EMusClipVideo &&
- aUsecase != MultimediaSharing::EMusReceive )
- {
- return;
- }
-
- MusSettingsKeys::TUsability usability = ( aUsecase == MultimediaSharing::EMusLiveVideo ) ?
- iCameraUsability : iVideoplayerUsability;
- if ( usability == MusSettingsKeys::EUsabilityPortrait )
- {
- iObserver.SwitchOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
- }
- else if ( usability == MusSettingsKeys::EUsabilityLandscape )
- {
- iObserver.SwitchOrientationL( CAknAppUiBase::EAppUiOrientationLandscape );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiResourceHandler::CheckInitialOrientationL()" )
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- a/mmsharing/mmshui/src/musuisendcontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1077 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-
-#include "musuisendcontroller.h"
-#include "musuieventobserver.h"
-#include "musuisharingobserver.h"
-#include "musuisendobserver.h"
-#include "musuidialogutil.h"
-#include "musuicallbackservice.h"
-#include "musuifileutil.h"
-#include "mussettings.h"
-#include "musuipropertywatch.h"
-#include "mussessionproperties.h"
-#include "mussettingskeys.h"
-#include "musuiresourcehandler.h"
-#include "muslogger.h" // debug logging
-
-#include "musengmceoutsession.h"
-#include "musenguriparser.h"
-#include <musui.rsg>
-
-#include <StringLoader.h>
-#include <pathinfo.h>
-#include <CDirectoryLocalizer.h>
-
-
-using namespace NMusSessionApi;
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiSendController::~CMusUiSendController()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::~CMusUiSendController" );
-
- delete iAddress;
- delete iRemoteSipAddress;
- delete iRemoteSipAddressProposal;
- TRAP_IGNORE( DeleteFileL() );
- delete iVideoFileName;
- delete iLocalizer;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::~CMusUiSendController" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngMceSession* CMusUiSendController::EngineSession()
- {
- return EngineOutSession(); // Engine out session is CMusEngMceSession
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::DeleteEngineSession()
- {
- // Cancel invite
- if ( EngineOutSession() && !ConnectionEstablished() )
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiSendController::DeleteEngineSession:\
- Canceling inviting..." );
- TRAP_IGNORE( EngineOutSession()->CancelInviteL() );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::HandlePropertyError( const TInt aReason )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiEventController::HandleError [%d]",
- aReason );
- TRAP_IGNORE( DeleteVideoL() );
-
- CMusUiEventController::HandlePropertyError( aReason ); // For the base class
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiEventController::HandleError" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::HandleAsyncEventL( TMusUiAsyncEvent aEventId )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::HandleAsyncEventL" );
- switch ( aEventId )
- {
- case EMusUiAsyncInviteCancel:
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiSendController::\
- HandleAsyncEventL: EMusUiAsyncInviteCancel" );
- HandleExitL();
- break;
- }
- case EMusUiAsyncManualAddressEntry:
- {
- iResourceHandler->RequestKeypadL( ETrue ); // Exits on fail
- iSendObserver.ManualAddressEntryL( *iRemoteSipAddressProposal );
- break;
- }
- case EMusUiAsyncStartInvitation:
- {
- MUS_LOG( "mus: [MUSUI ] CMusUiSendController::\
- HandleAsyncEventL: EMusUiAsyncStartInvitation" );
- InviteL();
- break;
- }
- default:
- {
- // Not send specific, let the base class handle
- CMusUiEventController::HandleAsyncEventL( aEventId );
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::HandleAsyncEventL" );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMusUiSendController::TypedAddress() const
- {
- return *iAddress;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiSendController::ManualAddressTyped() const
- {
- return iManualAddressTyped;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::StartInvitationL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::StartInvitationL" );
-
- iCallbackService->AsyncEventL( EMusUiAsyncStartInvitation );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::StartInvitationL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::InviteL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::InviteL" );
-
- if ( !iSipRegistrationPending )
- {
- TRAPD( error,
- iRemoteSipAddress = CMusUiPropertyWatch::ReadDescPropertyL(
- KRemoteSipAddress ) );
- if ( error != KErrNone )
- {
- iRemoteSipAddress = KNullDesC().AllocL();
- }
-
- TRAP( error, iRemoteSipAddressProposal =
- CMusUiPropertyWatch::ReadDescPropertyL(
- KRemoteSipAddressProposal ) );
- if ( error != KErrNone )
- {
- iRemoteSipAddressProposal = KNullDesC().AllocL();
- }
-
- if ( iRemoteSipAddress->Length() > 0 )
- {
- if ( iRemoteSipAddress->Find( KMusCommaSymbol ) == KErrNotFound )
- {
- InviteL( *iRemoteSipAddress );
- }
- else
- {
- // Split the addresses using KMusCommaSymbol as a separator
- CDesCArray* addressArray =
- new ( ELeave ) CDesCArrayFlat(
- KMusSipAddressesMaxAmount );
- SplitL( *iRemoteSipAddress, KMusCommaSymbol, addressArray );
- // Show List Query Dialog
- TBuf<KMusSipAddressMaxLength> selectedAddress;
- if ( MusUiDialogUtil::SelectAddressDialogL( addressArray,
- selectedAddress ) )
- {
- // Invite with the chosen address
- InviteL( selectedAddress );
- }
- else
- {
- HandleExitL();
- }
- }
- }
- else
- {
- iResourceHandler->RequestKeypadL( ETrue ); // Exits on failure
- iManualAddressTyped = ETrue;
- iSendObserver.ManualAddressEntryL( *iRemoteSipAddressProposal );
- }
- }
- else
- {
- // Show waiting dialog
- delete iDialogPrompt;
- iDialogPrompt = NULL;
- iDialogPrompt = StringLoader::LoadL(
- R_MUS_REGISTRATION_PENDING_WAIT_NOTE_TXT );
-
- if ( !iSharingObserver.ShowWaitDialogL(
- *iDialogPrompt,
- KMusInviteExpireTimeout, //Reuse 1 min timer
- R_MUS_LIVE_SHARING_VIEW_NOTE_NO_REG ) )
- {
- iEventObserver.HandleExit();
- }
-
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::InviteL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::CancelInvitationL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::CancelInvitationL" );
-
- if ( EngineOutSession() && !ConnectionEstablished() )
- {
- TRAP_IGNORE( EngineOutSession()->CancelInviteL() );
- }
-
- HandleExitL();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::CancelInvitationL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::HandleForegroundEventL( TBool aForeground )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::HandleForegroundEventL" );
-
- CMusUiEventController::HandleForegroundEventL( aForeground );
-
- if ( ConnectionEstablished() && !ExitOccured() )
- {
- if ( aForeground )
- {
- if ( iContinuePlayingWhenForeground )
- {
- MUS_LOG( "mus: [MUSUI ] Resume playing" );
- PlayL();
- }
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] Pause playing" );
- if ( EngineOutSession() )
- {
- iContinuePlayingWhenForeground = IsPlayingL();
- }
- PauseL();
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::HandleForegroundEventL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::PlayL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::PlayL" );
- if ( EngineOutSession() )
- {
- EngineOutSession()->PlayL();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::PlayL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::PauseL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::PauseL" );
- if ( EngineOutSession() )
- {
- EngineOutSession()->PauseL();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::PauseL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiSendController::IsPlayingL()
- {
- TBool isPlaying( EFalse );
-
- if ( EngineOutSession() )
- {
- isPlaying = EngineOutSession()->IsPlayingL();
- }
-
- return isPlaying;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionEstablished()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionEstablished" );
-
- // Common handling first
- CMusUiEventController::SessionEstablished();
-
- iConnectionEstablished = ETrue;
- DismissWaitDialog();
-
- if ( iForeground )
- {
- MUS_LOG( "mus: [MUSUI ] Enable display and start playing" );
- TRAP_IGNORE( PlayL();
- EnableDisplayL( ETrue ); )
-
- iEventObserver.SetToolbarVisibility( ETrue );
-
- }
- else
- {
- MUS_LOG( "mus: [MUSUI ] In background, don't start playing yet" );
- iContinuePlayingWhenForeground = ETrue;
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionEstablished" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionRejected()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionRejected" );
- DismissWaitDialog();
- TRAP_IGNORE (
- MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_CONNECTION_REJECTED ) );
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionRejected" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionBadRequest()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionBadRequest" );
-
- DismissWaitDialog();
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionBadRequest" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionUnauthorized()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionUnauthorized" );
-
- DismissWaitDialog();
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionUnauthorized" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionPaymentRequired()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionPaymentRequired" );
-
- DismissWaitDialog();
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionPaymentRequired" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionRecipientNotFound()
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiSendController::SessionRecipientNotFound [%d]",
- iTriedInvitations );
- DismissWaitDialog();
- if ( ExitOccured() )
- {
- return;
- }
- if ( ++iTriedInvitations > 1 )
- {
- TRAP_IGNORE( MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_WRONG_ADDRESS ) );
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncInviteCancel ) );
-
- }
- else
- {
- TRAP_IGNORE( MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_WRONG_ADDRESS ) );
- iManualAddressTyped = ETrue;
-
- TRAP_IGNORE(
- iCallbackService->AsyncEventL( EMusUiAsyncManualAddressEntry ) );
-
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionRecipientNotFound" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionProxyAuthenticationRequired()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionProxyAuthenticationRequired" );
-
- DismissWaitDialog();
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionProxyAuthenticationRequired" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionRequestTimeOut()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionRequestTimeOut" );
- DismissWaitDialog();
- TRAP_IGNORE( MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_NO_RESPONSE ) );
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionRequestTimeOut" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionUnsupportedMediaType()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionUnsupportedMediaType" );
- DismissWaitDialog();
- if ( !ExitOccured() )
- {
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_APP_N_A ) );
- }
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionUnsupportedMediaType" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionBusyHere()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionBusyHere" );
- DismissWaitDialog();
- TRAP_IGNORE(
- MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_RECIPIENT_N_A ) );
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionBusyHere" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionRequestCancelled()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionRequestCancelled" );
- DismissWaitDialog();
- TRAP_IGNORE(
- MusUiDialogUtil::ShowInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_INVITATION_CANCELLED ) );
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionRequestCancelled" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SessionTemporarilyNotAvailable()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SessionRequestCancelled" );
- DismissWaitDialog();
- if ( !ExitOccured() )
- {
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SERVICE_N_A ) );
- }
-
- TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::SessionRequestCancelled" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::ConstructL" );
-
- CMusUiEventController::ConstructL(); // Base class construction
- iLocalizer = CDirectoryLocalizer::NewL();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiSendController::CMusUiSendController(
- MMusUiEventObserver& aEventObserver,
- MMusUiSharingObserver& aSharingObserver,
- MMusUiSendObserver& aSendObserver )
- : CMusUiEventController( aEventObserver, aSharingObserver ),
- iSendObserver( aSendObserver ),
- iTriedInvitations( 0 ),
- iContinuePlayingWhenForeground( ETrue ),
- iWaitDialogCallback( *this )
- {
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::ExitProcedureL( TBool aUserAcceptance )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::ExitProcedureL" );
-
- DismissWaitDialog();
-
- switch ( iShutdownState )
- {
- case EMusUiShutdownStarted:
- {
- MUS_LOG( "mus: [MUSUI ] ExitProcedureL: EMusuiShutdownStarted" );
-
- if ( iVideoToBeSaved &&
- iVideoFileName &&
- MusUiFileUtil::FileExists( *iVideoFileName ) )
- {
- iShutdownState = EMusUiShutdownVideoSaved;
- ShowVideoSavedDialogL();
- ExitProcedureL( ETrue ); // Accept saving
- }
- else
- {
- CMusUiEventController::ExitProcedureL( aUserAcceptance );
- }
- break;
- }
-
- case EMusUiShutdownVideoSaved:
- {
- MUS_LOG( "mus: [MUSUI ] ExitProcedureL: EMusuiShutdownVideoSaved" );
-
- // Check if our address is valid sip or tel uri. If not, there is no
- // point to query user about permission to save it to contacts.
-
- TInt error = KErrNotFound;
- if ( iAddress )
- {
- TMusEngUriParser parser( *iAddress );
- TRAP( error, parser.ParseUriL() )
- }
-
- // Save Address to Contacts query if manually entered
- // and if is the standard variant.
- // NOTE: KErrNotSupported means there is more than one contact id.
- if ( !iOperatorSpecificFunctionality && ManualAddressTyped() &&
- iContactId != KErrNotSupported &&
- error == KErrNone )
- {
- iShutdownState = EMusUiShutdownContactSavingQueried;
- SaveContactQueryL();
- }
- else
- {
- // Nothing send specific, let the base class handle
- CMusUiEventController::ExitProcedureL( aUserAcceptance );
- }
- break;
- }
-
- default:
- {
- // Nothing send specific, let the base class handle
- CMusUiEventController::ExitProcedureL( aUserAcceptance );
- break;
- }
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::ExitProcedureL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Handles status changes specific to sending sharing types.
-// Calls base class version for status changes that are not sending specific.
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::HandleChangedStatusL(
- TMusAvailabilityStatus aStatus )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::HandleChangedStatusL" )
- switch( aStatus )
- {
- case ESipRegistrationPending:
- {
- MUS_LOG( "mus: [MUSUI ] ESipRegistrationPending" );
- iSipRegistrationPending = ETrue;
- break;
- }
- case ESipOptionsNotSent: // FALLTHROUGH
- case ESipOptionsSent: // FALLTHROUGH
- {
- break;
- }
- case EManualActivation: // FALLTHROUGH
- case EMultimediaSharingAvailable:
- {
- MUS_LOG( "mus: [MUSUI ] EManualActivation or EMultimediaSharingAvailable" )
-
- if( iSipRegistrationPending )
- {
- iSipRegistrationPending = EFalse;
- // Set callback service, Call StartInvitationL when wait dialog dismissed
- TRAPD( err, iSharingObserver.SetWaitDialogCallbackL(
- &iWaitDialogCallback ) );
- // Dismiss pending wait note
- iSharingObserver.DismissWaitDialogL();
- if ( err == KErrNotReady )
- {
- StartInvitationL();
- }
- }
- break;
- }
-
- default:
- {
- // Not sending specific, let the base class handle
- CMusUiEventController::HandleChangedStatusL( aStatus );
- break;
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::HandleChangedStatusL" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMusUiSendController::VideoFileNameL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::VideoFileNameL" );
-
- TParse parse;
- TPtrC rootPath;
-
- SetVideoPathValueL();//sets video rootpath according to setting value.
-
- if ( parse.Set( iVideoFilePath,NULL,NULL) != KErrBadName )
- {
-
- if(parse.Drive().Compare( PathInfo::MemoryCardRootPath()))
- {
- TRAPD(error,MusUiFileUtil::VideoFilePathExistsL(iVideoFilePath));
-
- switch(error)
- {
- case KErrNotReady:
- case KErrCorrupt:
- case KErrLocked:
- {
- MusUiDialogUtil::ShowGlobalInformationDialogL(
- R_MUS_VIEW_NOTE_MEMORYCARD_PROBLEM);
-
- MUS_LOG( "mus: [MUSUI ] -> Changing to Phone Memory " );
- rootPath.Set(PathInfo::PhoneMemoryRootPath());
- TParsePtrC pathPtr(rootPath);
- iVideoFilePath = rootPath;
- iVideoFilePath += PathInfo::VideosPath();
- // Make sure the new path exists
- TRAP_IGNORE( MusUiFileUtil::VideoFilePathExistsL(iVideoFilePath) )
- break;
- }
- case KErrAlreadyExists:
- case KErrNone:
- {
- MUS_LOG( "mus: [MUSUI ] -> Using MMC " );
- rootPath.Set(PathInfo::MemoryCardRootPath());
- break;
- }
- default:
- {
- delete iVideoFileName;
- iVideoFileNamePlain = KNullDesC;
- iVideoFileName = iVideoFileNamePlain.AllocL();
- HandleError( error);
- break;
- }
- }
- }
- else//Phone memory is being used.
- {
- TRAPD(error,MusUiFileUtil::VideoFilePathExistsL(iVideoFilePath));
-
- switch(error)
- {
- case KErrAlreadyExists:
- case KErrNone:
- {
- MUS_LOG( "mus: [MUSUI ] -> Using Phone memory" );
- rootPath.Set(PathInfo::PhoneMemoryRootPath());
- break;
- }
- default:
- {
- delete iVideoFileName;
- iVideoFileNamePlain = KNullDesC;
- iVideoFileName = iVideoFileNamePlain.AllocL();
- HandleError( error);
- break;
- }
- }
- }
-
- }
- else
- {
- delete iVideoFileName;
- iVideoFileNamePlain = KNullDesC;
- iVideoFileName = iVideoFileNamePlain.AllocL();
- HandleError(KErrBadName);
- }
-
- TParsePtrC pathPtr(rootPath);
- iVideoFilePath += pathPtr.NameAndExt();
- MusUiFileUtil::CreateVideoFileNameL(iVideoFilePath,
- iVideoFileNamePlain);
-
- delete iVideoFileName;
- TFileName videoFileName;
- videoFileName += iVideoFilePath;
- videoFileName += iVideoFileNamePlain;
- videoFileName += KMusVideoFileNameExtension;
- iVideoFileName = videoFileName.AllocL();
-
- MUS_LOG_TDESC( "mus: [MUSUI ] <- CMusUiSendController::VideoFileNameL:",
- iVideoFileName->Des() );
- return *iVideoFileName;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::ShowInvitingWaitDialogL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::ShowWaitDialogL" );
- delete iDialogPrompt;
- iDialogPrompt = NULL;
- iDialogPrompt = StringLoader::LoadL(
- R_MUS_LIVE_SHARING_VIEW_INVITING_WAIT_NOTE_TXT,
- MusContactName().Length() > 0 ?
- MusContactName() : iOperatorSpecificFunctionality ?
- MusTelNumberValue() : *iAddress );
-
- if ( !iSharingObserver.ShowWaitDialogL(
- *iDialogPrompt,
- KMusInviteExpireTimeout,
- R_MUS_LIVE_SHARING_VIEW_NOTE_NO_RESPONSE ) )
- {
- CancelInvitationL();
- }
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::ShowWaitDialogL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::DismissWaitDialog()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::DismissWaitDialog" );
- TRAPD( err, iSharingObserver.DismissWaitDialogL(); );
- if ( err != KErrNone )
- {
- HandleError( err );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::DismissWaitDialog" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SplitL( const TDesC& aDes,
- const TDesC& aChar,
- CDesCArray* aArray )
- {
- TInt charPos( 0 );
- TPtrC ptr( aDes );
- TBool found = EFalse;
- while( ( charPos = ptr.Find( aChar ) ) > 0 )
- {
- found = ETrue;
- TPtrC str = ptr.Left( charPos );
- aArray->AppendL( str );
- ptr.Set( ptr.Right( ptr.Length() - str.Length() - 1 ) );
- }
- if ( found && ptr.Length() > 0 )
- {
- aArray->AppendL( ptr );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::SetVideoPathValueL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::SetVideoPathValueL" );
- TInt drive = MultimediaSharingSettings::VideoLocationSettingL();
-
- TFileName rootPath;
- User::LeaveIfError( PathInfo::GetRootPath( rootPath, drive ) );
-
- TParsePtrC pathPtr(rootPath);
- iVideoFilePath = rootPath;
- iVideoFilePath += PathInfo::VideosPath();
- MUS_LOG_TDESC( "mus: [MUSUI ] <- CMusUiSendController::SetVideoPathValueL: ",
- iVideoFilePath );
- iLocalizer->SetFullPath( iVideoFilePath );
- if ( iLocalizer->IsLocalized() )
- {
- iLocalizedVideoFilePath =iLocalizer->LocalizedName();
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::ShowVideoSavedDialogL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::ShowVideoSavedDialogL" );
- //MUS_LOG_TDESC( "mus: [MUSUI ] ", iVideoFileNamePlain );
- //MUS_LOG_TDESC( "mus: [MUSUI ] ", iVideoFilePath );
-
- delete iDialogPrompt;
- iDialogPrompt = NULL;
-
- TBuf<KMusFileNameMaxLength> buf;
- TFileName videoFileName;
- videoFileName += iVideoFileNamePlain;
- videoFileName += KMusVideoFileNameExtension;
- buf = videoFileName;
-
- CDesCArrayFlat* savingTextsArray =
- new ( ELeave ) CDesCArrayFlat( KMusStringSubstArrayGranularity );
- CleanupStack::PushL( savingTextsArray );
- //"File %0U saved to folder %1U"
- //%0U = iVideoFileName
- //%1U = iVideoFilePath
- savingTextsArray->InsertL( 0, videoFileName );
-
- if ( MultimediaSharingSettings::OperatorVariantSettingL() ==
- MusSettingsKeys::EOperatorSpecific ) // For AT&T products
- {
- HBufC* folder = StringLoader::LoadLC( R_MUS_VIDEO_SAVE_FOLDER_NAME );
- savingTextsArray->InsertL( 1, *folder );
- CleanupStack::PopAndDestroy( folder );
- }
- else // Standard products
- {
- if ( iLocalizer->IsLocalized() )
- {
- savingTextsArray->InsertL( 1, iLocalizedVideoFilePath );
- }
- else
- {
- savingTextsArray->InsertL( 1, iVideoFilePath );
- }
- }
-
- MUS_LOG_TDESC( "mus: [MUSUI ] filename:", savingTextsArray->MdcaPoint( 0 ) );
- MUS_LOG_TDESC( "mus: [MUSUI ] path:", savingTextsArray->MdcaPoint( 1 ) );
-
- iDialogPrompt = StringLoader::LoadL( R_MUS_VIEW_NOTE_VIDEO_SAVED,
- *savingTextsArray );
- CleanupStack::Pop( savingTextsArray );
-
- MUS_LOG_TDESC( "mus: [MUSUI ] ", iDialogPrompt->Des() );
-
- MusUiDialogUtil::ShowGlobalInformationDialogL( *iDialogPrompt );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::ShowVideoSavedDialogL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::DeleteVideoL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::DeleteVideoL" );
- if ( iVideoFileName )
- {
- MusUiFileUtil::DeleteFileL( *iVideoFileName );
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::DeleteVideoL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::DeleteFileL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendController::DeleteFileL" );
- if ( iVideoFileName &&
- MusUiFileUtil::FileExists( *iVideoFileName ) && !iVideoToBeSaved )
- {
- DeleteVideoL();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendController::DeleteFileL" );
- }
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiSendController::
-TWaitDialogCallback::TWaitDialogCallback( CMusUiSendController& aController )
- : iController( aController )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendController::
-TWaitDialogCallback::DialogDismissedL( TInt /*aButtonId*/ )
- {
- iController.StartInvitationL();
- }
-
-// End of file
-
--- a/mmsharing/mmshui/src/musuisendview.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-#include "musuisendview.h"
-#include "musuiappui.h"
-#include "musuisendcontroller.h"
-#include "musuisendviewcontainer.h"
-#include "musuidefinitions.h"
-#include "musuidialogutil.h"
-#include "muslogger.h" // debug logging
-
-#include <musui.rsg>
-
-#include <aknViewAppUi.h>
-
-
-// -----------------------------------------------------------------------------
-// EPOC two-phased constructor
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendView::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendView::ConstructL" );
- CMusUiGeneralView::ConstructL();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendView::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CMusUiSendView::~CMusUiSendView()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendView::~CMusUiSendView" );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendView::~CMusUiSendView" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendView::ManualAddressEntryL( const TDesC& aAddress )
- {
- MUS_LOG_TDESC( "mus: [MUSUI ] -> CMusUiSendView::ManualAddressEntryL: ",
- aAddress );
-
-
- TBuf<KMusSipAddressMaxLength> address( aAddress );
- if ( SendController() && MusUiDialogUtil::ShowTextQueryDialogL(
- R_MUS_TEXT_ENTER_ADDRESS_DIALOG_PROMPT,
- address ) )
- {
- SendController()->InviteL( address );
- }
- else
- {
- if ( SendController() && SendController()->IsAudioRoutingLoudSpeaker() )
- {
- MusUiDialogUtil::ShowGlobalInformationDialogL(
- R_MUS_NOTE_HF_DEACTIVATED );
- }
- MusUiDialogUtil::ShowGlobalInformationDialogL(
- R_MUS_LIVE_SHARING_VIEW_NOTE_SHARING_ENDED );
- MusAppUi()->HandleExit();
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendView::ManualAddressEntryL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiEventController* CMusUiSendView::EventController() const
- {
- return SendController();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiViewContainer& CMusUiSendView::SharingContainer() const
- {
- return *SendContainer();
- }
-
-
-// -----------------------------------------------------------------------------
-// From CAknView, Gets called from framework when activating this view
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendView::DoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage )
- {
- // Base class activation first
- CMusUiGeneralView::DoActivateL( aPrevViewId,
- aCustomMessageId,
- aCustomMessage );
-
- }
-
-
-// -----------------------------------------------------------------------------
-// From AknView, Gets called from framework when deactivating this view
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendView::DoDeactivate()
- {
- CMusUiGeneralView::DoDeactivate(); // Base class deactivation first
- }
-
-
-// -----------------------------------------------------------------------------
-// Called when focus event occurs.
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendView::DoHandleForegroundEventL( TBool aForeground )
- {
- CMusUiGeneralView::HandleForegroundEventL(
- aForeground,
- iOperatorSpecificFunctionality &&
- EventControllerL().ConnectionEstablished() &&
- !EventControllerL().ExitOccured() );
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuisendviewcontainer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-#include "musuiclipsharingviewcontainer.h"
-#include "musuisendview.h"
-#include "musuilevelindicator.h"
-#include "musuidialogutil.h"
-#include "musuidefinitions.h"
-#include "musuisendcontroller.h"
-#include "muslogger.h" // debug logging
-#include <musui.rsg>
-
-#include <AknWaitDialog.h>
-#include <AknsBasicBackgroundControlContext.h>
-#include <AknsUtils.h>
-#include <AknsDrawUtils.h>
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiSendViewContainer::CMusUiSendViewContainer()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendViewContainer::ConstructL( CMusUiGeneralView* aView,
- const TRect& aRect,
- TAknOrientation aIndicatorLayout,
- TBool aContainerVisible,
- TBool aIndicatorVisible )
- {
- MUS_LOG2( "mus: [MUSUI ] -> CMusUiSendViewContainer::ConstructL, visibilty:%d,%d",
- aContainerVisible, aIndicatorVisible );
-
- CreateWindowL();
- iView = aView;
- iBackGround = CAknsBasicBackgroundControlContext::NewL(
- KAknsIIDQsnBgAreaMain,
- aRect,
- EFalse );
-
- iIndicator = CMusUiLevelIndicator::NewL( aIndicatorLayout,
- 0,
- 100,
- this,
- aRect,
- this );
- iIndicator->SetContainerWindowL( *this );
-
- iVideoRect = aRect;
-
- SetRect( aRect );
-
- iIndicator->SetRect( Rect() );
-
- if ( aContainerVisible && !aIndicatorVisible )
- {
- iIndicator->MakeVisible( aIndicatorVisible );
- }
-
- MakeVisible( aContainerVisible );
- ActivateL();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendViewContainer::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiSendViewContainer::~CMusUiSendViewContainer()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendViewContainer::~CMusUiSendViewContainer" );
-
- delete iIndicator;
- delete iBackGround;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendViewContainer::~CMusUiSendViewContainer" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Fetches a pointer to the view that owns this container.
-// -----------------------------------------------------------------------------
-//
-CMusUiGeneralView* CMusUiSendViewContainer::MusUiView() const
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendViewContainer::MusUiView" );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendViewContainer::MusUiView" );
- return iView;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendViewContainer::SetController( CMusUiSendController* aController )
- {
- iSendController = aController;
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to redraw the screen area.
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendViewContainer::Draw( const TRect& aRect ) const
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiSendViewContainer::Draw" );
- CWindowGc& gc = SystemGc();
-
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
- if(!AknsDrawUtils::Background( skin,
- cc,
- this,
- gc,
- iVideoRect,
- KAknsDrawParamDefault ))
- {
- MUS_LOG( "mus: [MUSUI ] Skin not valid or not found" );
- gc.SetBrushColor( iEikonEnv->ControlColor( EColorWindowBackground, *this ) );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.Clear( aRect );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendViewContainer::Draw" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework when the view size is changed
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendViewContainer::SizeChanged()
- {
- if (iBackGround)
- {
- static_cast<CAknsBasicBackgroundControlContext*>
- ( iBackGround )->SetRect( Rect() );
- }
- iIndicator->SetRect( Rect() );
- }
-
-
-// -----------------------------------------------------------------------------
-// Supply the Mob Object for background skin drawing
-// -----------------------------------------------------------------------------
-//
-TTypeUid::Ptr CMusUiSendViewContainer::MopSupplyObject( TTypeUid aId )
- {
- if (aId.iUid == MAknsControlContext::ETypeId && iBackGround )
- {
- return MAknsControlContext::SupplyMopObject( aId, iBackGround );
- }
- return CCoeControl::MopSupplyObject( aId );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendViewContainer::SetLevelIndicatorVisibility( TBool aVisible)
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiSendViewContainer::SetLevelIndicatorVisibility( %d )",
- aVisible )
-
- MakeVisible( aVisible );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiSendViewContainer::SetLevelIndicatorVisibility" )
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiSendViewContainer::IndicatorLevelChanged( TInt aNewLevel )
- {
- if ( iSendController )
- {
- TRAPD( error, iSendController->HandleSliderValueChangeL( aNewLevel ) )
-
- if ( error != KErrNone )
- {
- MUS_LOG1( "mus: [MUSUI ] Error during handling of slider value change( %d )",
- error )
-
- iSendController->HandleError( error );
- }
- }
- }
-
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuistartcontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
-* 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: Application's UI class.
-*
-*/
-
-
-
-#include "musuistartcontroller.h"
-#include "musmanagercommon.h"
-#include "mussessionproperties.h"
-#include "muslogger.h" // debug logging
-
-#include <e32property.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-MusUiStartController::MusUiStartController()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-MultimediaSharing::TMusUseCase MusUiStartController::ReadUseCaseL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStartController::UseCasePropertyL()" );
- TInt val;
- User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid,
- NMusSessionApi::KUseCase,
- val ) );
-
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiStartController::UseCasePropertyL():\
- [%d]", val );
-
- return static_cast< MultimediaSharing::TMusUseCase >( val );
- }
--- a/mmsharing/mmshui/src/musuistatuspanehandler.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,325 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-
-#include "musuistatuspanehandler.h"
-#include "musuidefinitions.h"
-#include "muslogger.h" // debug logging
-#include <musui.mbg>
-
-#include <eikspane.h>
-#include <barsread.h>
-#include <StringLoader.h>
-#include <akntitle.h>
-#include <aknenv.h>
-#include <akncontext.h>
-#include <AknIndicatorContainer.h>
-#include <aknnavi.h> // Navi pane container ( CAknNavigationControlContainer )
-#include <AknVolumePopup.h>
-#include <eikapp.h>
-#include <eikenv.h>
-#include <eikappui.h>
-
-
-// constants
-#define KMUSMBMFILENAME iEikonEnvironment.EikAppUi()->Application()->BitmapStoreName()
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiStatusPaneHandler* CMusUiStatusPaneHandler::NewL( CEikonEnv& aEikonEnv )
- {
- CMusUiStatusPaneHandler* self =
- new ( ELeave ) CMusUiStatusPaneHandler( aEikonEnv );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiStatusPaneHandler::~CMusUiStatusPaneHandler()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::~CMusUiStatusPaneHandler" );
-
- delete iNaviPaneText;
- delete iMediaControl;
- delete iVolumePopup;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::~CMusUiStatusPaneHandler" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiStatusPaneHandler::CMusUiStatusPaneHandler( CEikonEnv& aEikonEnv )
- :iEikonEnvironment( aEikonEnv )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::ConstructL" );
-
- CEikStatusPane* statusPane = iEikonEnvironment.AppUiFactory()->StatusPane();
-
- iNaviPane = STATIC_CAST(
- CAknNavigationControlContainer*,
- statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
- iTitlePane = STATIC_CAST(
- CAknTitlePane*,
- statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
- iContextPane = STATIC_CAST(
- CAknContextPane*,
- statusPane->ControlL( TUid::Uid( EEikStatusPaneUidContext ) ) );
-
- iVolumePopup = CAknVolumePopup::ConstructFromResourceL(
- R_AVKON_NAVI_PANE_VOLUME_INDICATOR );
-
- iMediaControl = CreateMediaNaviL();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::ConstructL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Updates statuspane icons
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::SetStatusPaneIconsL( TInt32 aIconId,
- TInt32 aIconMaskId )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetStatusPaneIconsL" )
-
- iContextPane->SetPictureFromFileL( KMUSMBMFILENAME, aIconId, aIconMaskId );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetStatusPaneIconsL" )
- }
-
-
-// -----------------------------------------------------------------------------
-// Updates statuspane icons
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::SetStatusPaneIconsL( CFbsBitmap* aBitmap )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetStatusPaneIconsL" );
- CEikImage* image = new (ELeave) CEikImage();
- image->SetBitmap( aBitmap );
- CEikImage* oldImage = iContextPane->SwapPicture( image );
- delete oldImage;
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetStatusPaneIconsL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Hides navi-pane decorators and clears text
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::ClearNaviPaneL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::ClearNaviPaneL" );
- delete iNaviPaneText;
- iNaviPaneText = NULL;
-
- // Pushes default decorator object (empty one) to top of the stack
- // and draws it
- iNaviPane->PushDefaultL();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::ClearNaviPaneL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Sets title-pane text
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::SetTitleL( const TDesC& aTitle )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetTitleL" );
- iTitlePane->SetTextL( aTitle );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetTitleL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::SetTitleFromResourceL( TInt aResourceId )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetTitleFromResourceL" );
- HBufC* titlePaneTitle = StringLoader::LoadLC( aResourceId );
- iTitlePane->SetTextL( *titlePaneTitle );
- CleanupStack::PopAndDestroy( titlePaneTitle );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetTitleFromResourceL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Get the current volume setting.
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiStatusPaneHandler::GetVolumeControlValue() const
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::GetVolumeControlValue" );
-
- TInt volume = iVolumePopup->Value();
-
- MUS_LOG1( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::GetVolumeControlValue: [%d]",
- volume );
- return volume;
- }
-
-
-// -----------------------------------------------------------------------------
-// Activates volume control.
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::ActivateVolumeControlL( TInt aVolume, TBool aOnlyIfVisible )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::ActivateVolumeControlL" );
-
- if ( aVolume < KMusVolumeMuted || aVolume > KMusVolumeMaximum )
- {
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetVolumeControlValue: returning" );
- return;
- }
-
- if ( !aOnlyIfVisible || (aOnlyIfVisible && iVolumePopup->IsVisible()) )
- {
- iVolumePopup->SetValue( aVolume );
- iVolumePopup->ShowVolumePopupL();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::ActivateVolumeControlL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Activate media navi pane.
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::ActivateNaviPaneMediaL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::ActivateNaviPaneMediaL" );
- iNaviPane->PushL( *iMediaControl );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::ActivateNaviPaneMediaL" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::ShowNaviPaneIconL(
- TMusUiNaviMediaDecorator aIcon )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::ShowNaviPaneIconL" );
- CMusUiNaviMediaDecorator* mediaNavi =
- static_cast<CMusUiNaviMediaDecorator*>(
- iMediaControl->DecoratedControl() );
- mediaNavi->ShowIcon( aIcon );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::ShowNaviPaneIconL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Sets navi-pane label for left side
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::SetLeftLabelL( const TDesC& aLabel )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetLeftLabelL" );
-
- static_cast<CMusUiNaviMediaDecorator*>
- ( iMediaControl->DecoratedControl() )->SetLeftLabelL( aLabel );
- iNaviPane->DrawNow();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetLeftLabelL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Sets navi-pane label for right side
-// -----------------------------------------------------------------------------
-//
-void CMusUiStatusPaneHandler::SetRightLabelL( const TDesC& aLabel )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::SetRightLabelL" );
-
- static_cast<CMusUiNaviMediaDecorator*>
- ( iMediaControl->DecoratedControl() )->SetRightLabelL( aLabel );
- iNaviPane->DrawNow();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::SetRightLabelL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Create media navi pane.
-// -----------------------------------------------------------------------------
-//
-CAknNavigationDecorator* CMusUiStatusPaneHandler::CreateMediaNaviL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiStatusPaneHandler::CreateMediaNaviL" );
- CMusUiNaviMediaDecorator* naviDecorator = CMusUiNaviMediaDecorator::NewL();
- CleanupStack::PushL( naviDecorator );
-
- CAknNavigationDecorator* decoratedFolder =
- CAknNavigationDecorator::NewL(
- iNaviPane,
- naviDecorator,
- CAknNavigationDecorator::ENotSpecified );
- CleanupStack::Pop( naviDecorator );// decoratedFolder owns naviDecorator now
-
- CleanupStack::PushL( decoratedFolder );
- decoratedFolder->SetContainerWindowL( *iNaviPane );
- naviDecorator->SetContainerWindowL( *decoratedFolder );
- CleanupStack::Pop( decoratedFolder );
-
- decoratedFolder->MakeScrollButtonVisible( EFalse );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiStatusPaneHandler::CreateMediaNaviL" );
- return decoratedFolder;
- }
-
-
-// -----------------------------------------------------------------------------
-// Get Volump Popup control pointer
-// -----------------------------------------------------------------------------
-//
-CAknVolumePopup* CMusUiStatusPaneHandler::GetVolumePopup() const
- {
- return iVolumePopup;
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuiviewcontainer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-/*
-* 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: The MUS application's UI class.
-*
-*/
-
-
-#include "musuiviewcontainer.h"
-#include "musuidialogutil.h"
-#include "musuidefinitions.h"
-#include "muslogger.h" // debug logging
-#include "musuigeneralview.h"
-#include <musui.rsg>
-
-#include <AknWaitDialog.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiViewContainer::~CMusUiViewContainer()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiViewContainer::~CMusUiViewContainer" );
-
- CancelWaitTimer();
- delete iWaitDialogTimer;
-
- if ( iWaitDialog )
- {
- TRAP_IGNORE( iWaitDialog->ProcessFinishedL() );
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiViewContainer::~CMusUiViewContainer" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiViewContainer::CancelWaitTimer()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiViewContainer::CancelWaitTimer" );
- if ( iWaitDialogTimer )
- {
- iWaitDialogTimer->Cancel();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiViewContainer::CancelWaitTimer" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Dismisses the current active wait note, if any.
-// -----------------------------------------------------------------------------
-//
-void CMusUiViewContainer::DismissWaitDialogL( TBool aReturnValue )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiViewContainer::DismissWaitDialogL" );
-
- if ( iWaitDialog )
- {
- iInvitationWaitDialogDismissed = ETrue;
- iWaitDialogReturnValueWhenDismissed = aReturnValue;
-
- iWaitDialog->ProcessFinishedL();
- iWaitDialog = NULL;
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiViewContainer::DismissWaitDialogL" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Runs the Inviting recipient wait note
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiViewContainer::RunWaitDialogL( const TDesC& aPrompt,
- TInt aTimerInSeconds,
- TInt aExpirationMessageResourceId )
- {
- MUS_LOG_TDESC( "mus: [MUSUI ] -> CMusUiViewContainer::RunWaitDialogL: ", aPrompt );
-
- __ASSERT_ALWAYS( !iWaitDialog, User::Leave( KErrAlreadyExists ) );
- __ASSERT_ALWAYS( !iWaitDialogTimer, User::Leave( KErrAlreadyExists ) );
-
- MUS_LOG( " No previous wait dialog, continue " )
-
- iExpirationMessageResourceId = aExpirationMessageResourceId;
-
- iWaitDialog = new( ELeave ) CAknWaitDialog(
- reinterpret_cast<CEikDialog**>(&iWaitDialog) );
-
- iWaitDialog->SetTextL( aPrompt );
-
- TBool retVal = ETrue;
- iWaitDialog->PrepareLC( R_MUS_VIEW_INVITING_WAIT_NOTE );
-
- if ( aTimerInSeconds > 0 )
- {
- iWaitDialogTimer = CPeriodic::NewL( CActive::EPriorityStandard );
- iWaitDialogTimer->Start( KMusOneSecond * aTimerInSeconds,
- KMusOneSecond * aTimerInSeconds,
- TCallBack( DoWaitNoteTimeout, this ) );
- }
-
- iShowingWaitDialog = ETrue;
- retVal = iWaitDialog->RunLD();
- iShowingWaitDialog = EFalse;
- iWaitDialog = NULL;
-
- MUS_LOG( " Wait dialog's RunLD returned" )
-
- if ( iToolbarHandler )
- {
- MUS_LOG( " Completing toobar request" )
- iToolbarHandler->SetToolbarVisibility( ETrue );
- iToolbarHandler = NULL;
- }
-
- // Cancel timer when dialog returns.
- CancelWaitTimer();
- delete iWaitDialogTimer;
- iWaitDialogTimer = NULL;
-
- if ( iInvitationWaitDialogDismissed )
- {
- iInvitationWaitDialogDismissed = EFalse;
- retVal = iWaitDialogReturnValueWhenDismissed;
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiViewContainer::RunWaitDialogL" );
- return retVal;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiViewContainer::SetWaitDialogCallbackL( MProgressDialogCallback* aCallback )
- {
- __ASSERT_ALWAYS( iWaitDialog, User::Leave( KErrNotReady ) );
- iWaitDialog->SetCallback( aCallback );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusUiViewContainer::WaitDialogShown() const
- {
- return iShowingWaitDialog;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiViewContainer::RequestToolbarVisibilityOnceDialogDismissed(
- CMusUiGeneralView* aToolbarHandler )
- {
- MUS_LOG1(
- "mus: [MUSUI ] <-> \
-CMusUiViewContainer::RequestToolbarVisibilityOnceDialogDismissed, handler:%d",
- reinterpret_cast<TUint32>( aToolbarHandler ) );
-
- iToolbarHandler = aToolbarHandler;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiViewContainer::CMusUiViewContainer()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Tick handler, callback function directly called by periodic timer
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiViewContainer::DoWaitNoteTimeout( TAny* aObject )
- {
- // Cast, and call non-static function.
- MUS_LOG( "mus: [MUSUI ] -> CMusUiViewContainer::DoWaitNoteTimeout" );
-
- CMusUiViewContainer* self =
- static_cast<CMusUiViewContainer*>( aObject );
-
- TRAP_IGNORE( self->DismissWaitDialogL( EFalse ) );
-
- if ( self->iExpirationMessageResourceId != 0 )
- {
- TRAP_IGNORE( MusUiDialogUtil::ShowGlobalInformationDialogL(
- self->iExpirationMessageResourceId ) )
- }
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiViewContainer::DoWaitNoteTimeout" );
- // Return 0 ( false ) to indicate that we don't want more ticks
- return KErrNone;
- }
-
-
-// end of file
--- a/mmsharing/mmshui/src/musuizoomindicator.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,483 +0,0 @@
-/*
-* Copyright (c) 2003, 2004 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: Class for displaying icons in viewfinder view
-*
-*/
-
-
-// USER
-#include "musuizoomindicator.h"
-#include "muslogger.h"
-#include "musuizoomindicatorobserver.h"
-
-// SYSTEM
-#include <aknutils.h>
-#include <aknsutils.h>
-#include <data_caging_path_literals.hrh>
-#include <camcorder.mbg>
-#include <gulicon.h>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <AknsDrawUtils.h>
-
-
-
-// CONSTANTS
-const TInt KMusUiZoomDisableTime = 3000000;
-
-
-using namespace AknLayoutScalable_Apps;
-
-_LIT( KMyMbmFileName, "z:Camcorder.mbm");
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiZoomIndicator::CMusUiZoomIndicator(
- TInt aZoomMin,
- TInt aZoomMax,
- MMusUiZoomIndicatorObserver* aObserver )
- : iZoomMin( aZoomMin ),
- iZoomMax( aZoomMax ),
- iZoomLevel( aZoomMin ),
- iObserver( aObserver )
- {
- MUS_LOG( "mus: mus: [MUSUI ] -> CMusUiZoomIndicator::CMusUiZoomIndicator()" );
- // pass
- iDisableZoomTimer = NULL;
- iTopMargin = 5;
- iBottomMargin = 5;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::CMusUiZoomIndicator()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiZoomIndicator* CMusUiZoomIndicator::NewLC(
- TInt aZoomMin,
- TInt aZoomMax,
- MMusUiZoomIndicatorObserver* aObserver )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::NewLC()" );
- CMusUiZoomIndicator* self = new ( ELeave ) CMusUiZoomIndicator(
- aZoomMin,
- aZoomMax,
- aObserver );
- CleanupStack::PushL( self );
- self->ConstructL();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::NewLC()" );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiZoomIndicator* CMusUiZoomIndicator::NewL(
- TInt aZoomMin,
- TInt aZoomMax,
- MMusUiZoomIndicatorObserver* aObserver )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::NewL()" );
- CMusUiZoomIndicator* self = NewLC( aZoomMin,
- aZoomMax,
- aObserver );
- CleanupStack::Pop( self );
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::NewL()" );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::ConstructL()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::ConstructL()" );
-
- if( iZoomMin > iZoomMax )
- {
- User::Leave( KErrArgument );
- }
-
- iIconElevator = new (ELeave) CEikImage();
- iIconElevator->SetContainerWindowL( *this );
-
- iIconMin = new (ELeave) CEikImage();
- iIconMin->SetContainerWindowL( *this );
-
- iIconMax = new (ELeave) CEikImage();
- iIconMax->SetContainerWindowL( *this );
-
- iIconBg = new (ELeave) CEikImage();
- iIconBg->SetContainerWindowL( *this );
-
-
- ConstructImageL( iIconMin,
- AknsUtils::SkinInstance(),
- KAknsIIDQsnIconColors,
- EMbmCamcorderQgn_indi_cams_zoom_bg_min,
- EMbmCamcorderQgn_indi_cams_zoom_bg_min);
-
- ConstructImageL( iIconMax,
- AknsUtils::SkinInstance(),
- KAknsIIDQsnIconColors,
- EMbmCamcorderQgn_indi_cams_zoom_bg_max,
- EMbmCamcorderQgn_indi_cams_zoom_bg_max);
-
- ConstructImageL( iIconBg,
- AknsUtils::SkinInstance(),
- KAknsIIDQsnIconColors,
- EMbmCamcorderQgn_indi_cams_zoom_bg,
- EMbmCamcorderQgn_indi_cams_zoom_bg);
-
- ConstructImageL( iIconElevator,
- AknsUtils::SkinInstance(),
- KAknsIIDQsnIconColors,
- EMbmCamcorderQgn_indi_cams_zoom_elevator,
- EMbmCamcorderQgn_indi_cams_zoom_elevator);
-
-
- UpdateZoomLayout();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::ConstructL()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiZoomIndicator::~CMusUiZoomIndicator()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::~CMusUiZoomIndicator()" );
-
- DisableTimer();
- delete iDisableZoomTimer;
-
- delete iIconElevator;
- delete iIconMin;
- delete iIconMax;
- delete iIconBg;
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::~CMusUiZoomIndicator()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::SetZoomLevel( TInt aZoomLevel )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiZoomIndicator::SetZoomLevel( %d ) ",
- aZoomLevel );
- if( aZoomLevel >= iZoomMin && aZoomLevel <= iZoomMax )
- {
- iZoomLevel = aZoomLevel;
- }
- DisableTimer();
- UpdateZoomLayout();
- EnableTimer();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::SetZoomLevel()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiZoomIndicator::GetZoomLevel()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::GetZoomLevel()" );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::GetZoomLevel()" );
- return iZoomLevel;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::SetZoomMin( TInt aZoomMin )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiZoomIndicator::SetZoomMin( %d ) ", aZoomMin );
- if( aZoomMin >= 0 && aZoomMin < iZoomMax )
- {
- iZoomMin = aZoomMin;
- }
- DisableTimer();
- UpdateZoomLayout();
- EnableTimer();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::SetZoomMin()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::SetZoomMax( TInt aZoomMax )
- {
- MUS_LOG1( "mus: [MUSUI ] -> CMusUiZoomIndicator::SetZoomMax( %d ) ", aZoomMax );
- if( aZoomMax >= iZoomMin )
- {
- iZoomMax = aZoomMax;
- }
- DisableTimer();
- UpdateZoomLayout();
- EnableTimer();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::SetZoomMax()" );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::SetFullRect( const TRect aRect )
- {
- iFullRect = aRect;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::SizeChanged()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::SizeChanged()" );
- UpdateZoomLayout();
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::SizeChanged()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::Draw( const TRect& aRect ) const
- {
-
- CWindowGc& gc = SystemGc();
-
- TRect rect( 0,0, iFullRect.Width(), iFullRect.Height() );
- //TRect rect( iFullRect.Width()-20, iFullRect.iTl.iY, iFullRect.iBr.iX, iFullRect.iBr.iY ); //TRect( 40,0,380,382 ) );
-
-/*
- AknsUtils::RegisterControlPosition( this, TPoint( iFullRect.Width()-20, iFullRect.iTl.iY ) );
- // gc.Clear( aRect );
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
- if(!AknsDrawUtils::Background( skin, cc,this,gc,rect,KAknsDrawParamDefault ))
- {
-*/
- MUS_LOG( "mus: [MUSUI ] Skin not valid or not found" );
- gc.SetBrushColor( iEikonEnv->ControlColor( EColorWindowBackground, *this ) );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.Clear( aRect );
-// }
-
-}
-
-
-// -----------------------------------------------------------------------------
-// Draw all icons and texts to given graphics context.
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::DrawIcons( const TRect& /*aRect*/ )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::DrawIcons()" );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::DrawIcons()" );
- }
-
-
-// -----------------------------------------------------------------------------
-// Draw all icons and texts to given graphics context.
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::UpdateZoomLayout()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::UpdateZoomLayout()" );
-
- TSize sz = iIconBg->MinimumSize();
-
- TRect rect = Rect();
-
- // TODO: Remove all magic constants!
- AknLayoutUtils::LayoutImage(iIconMax, Rect(), 0, 0, 0, 0, 0, 20, 20 );
- AknLayoutUtils::LayoutImage(iIconMin, Rect(), 0, 0, 68, 0, 0, 20, 20 );
- AknLayoutUtils::LayoutImage(iIconBg, Rect(), 0, 0, 20, 0, 0, 20, 48 );
-
- // 20 - 68
- iScaleStep = ( 48 << 8 ) /
- ( ( iZoomMax - iZoomMin ) );
- iScaleY = ( 58 ) -
- ( ( iScaleStep * iZoomLevel ) >> 8 );
-
-
- AknLayoutUtils::LayoutImage(iIconElevator, Rect(), 0, 0, iScaleY, 0, 0, 20, 20 );
-
- DrawNow();
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::UpdateZoomLayout()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiZoomIndicator::CountComponentControls() const
- {
- return 4; //iIconElevator ? 1 : 0; // return nbr of controls inside this container
- //return 0; // return nbr of controls inside this container
- }
-
-
-// --------------------------------------------------------------------------
-// Called by framework to retrieve the control specified by index.
-// --------------------------------------------------------------------------
-//
-CCoeControl* CMusUiZoomIndicator::ComponentControl( TInt aIndex ) const
- {
- switch ( aIndex )
- {
-
- case 0:
- return iIconMin;
- case 1:
- return iIconMax;
- case 2:
- return iIconBg;
- case 3:
- return iIconElevator;
-
- default:
- return NULL;
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::ConstructImageL( CEikImage* aImage,
- MAknsSkinInstance* aSkin,
- const TAknsItemID& aId,
- TInt aBitmapId,
- TInt aMaskId )
-
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::ConstructIconL()" );
-
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
-
- TParse parse;
- parse.Set( KMyMbmFileName, &KDC_APP_RESOURCE_DIR, NULL );
-
- AknsUtils::CreateIconL(aSkin,
- aId,
- bitmap,
- mask,
- parse.FullName(),
- aBitmapId,
- aMaskId);
-
- aImage->SetPicture(bitmap, mask); // Owership transferred to CEikImage
-
-
-
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::ConstructIconL()" );
-
- }
-
-
-
-// -----------------------------------------------------------------------------
-// Callback for disable zoom indicator.
-// -----------------------------------------------------------------------------
-//
-TInt CMusUiZoomIndicator::DisableZoomIndicator( TAny* aThis )
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::DisableZoomIndicator()" );
- CMusUiZoomIndicator* indicator =
- static_cast< CMusUiZoomIndicator* > ( aThis );
- indicator->DisableTimer();
- if( indicator->iObserver )
- {
- indicator->iObserver->DisableZoomIndicator();
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::DisableZoomIndicator()" );
- return KErrNone;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::DisableTimer()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::DisableTimer()" );
- if ( iDisableZoomTimer )
- {
- if ( iDisableZoomTimer->IsActive() )
- {
- iDisableZoomTimer->Cancel();
- }
- }
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::DisableTimer()" );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiZoomIndicator::EnableTimer()
- {
- MUS_LOG( "mus: [MUSUI ] -> CMusUiZoomIndicator::EnableTimer()" );
-
- if ( !iDisableZoomTimer )
- {
- TRAP_IGNORE( iDisableZoomTimer = CPeriodic::NewL( CActive::EPriorityStandard ) );
- }
- else
- {
- DisableTimer();
- }
-
- // Start disable timer; callback triggers exit.
- iDisableZoomTimer->Start( KMusUiZoomDisableTime,
- KMusUiZoomDisableTime,
- TCallBack( DisableZoomIndicator, this ) );
- MUS_LOG( "mus: [MUSUI ] <- CMusUiZoomIndicator::EnableTimer()" );
- }
-
-
-// End of File
-
-
-
--- a/mmsharing/mmshui/tsrc/ut_ui/BWINS/ut_uiU.DEF Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-EXPORTS
- ?CreateTestSuiteL@@YAPAVMEUnitTest@@XZ @ 1 NONAME ; class MEUnitTest * __cdecl CreateTestSuiteL(void)
\ No newline at end of file
--- a/mmsharing/mmshui/tsrc/ut_ui/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-PRJ_TESTMMPFILES
-
-//../../../../internal/stubs/mceclientstub/group/mceclientstub.mmp
-ut_ui.mmp
--- a/mmsharing/mmshui/tsrc/ut_ui/group/ut_ui.mmp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,230 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-// To get the APP_LAYER_SYSTEMINCLUDE-definition
-#include <platform_paths.hrh>
-#include <eunitcaps.h>
-
-TARGET ut_ui.dll
-TARGETTYPE dll
-TARGETPATH /DigiaEUnit/Tests
-UID 0x1000af5a 0x01700000
-
-CAPABILITY EUNIT_CAPS
-VENDORID VID_DEFAULT
-
-MACRO UNIT_TESTING
-
-
-SOURCEPATH ../../../../../tsrc/multimediasharingsettingsstub/src
-SOURCE mussettings.cpp
-
-
-// Test suite classes
-SOURCEPATH ../src
-SOURCE ut_musuidllmain.cpp
-
-// Defines, stubs and other test helpers
-SOURCEPATH ../src
-//SOURCE musengstubs.cpp
-
-SOURCEPATH ../../../../../tsrc/musenginestub/src
-SOURCE musengsession.cpp
-SOURCE musengmcesession.cpp
-SOURCE musengmceoutsession.cpp
-SOURCE musenglivesession.cpp
-SOURCE musengreceivesession.cpp
-SOURCE musengsessiondurationtimer.cpp
-SOURCE musengclipsession.cpp
-
-//SOURCE musengmceutils.cpp
-
-//SOURCEPATH ../../../../../tsrc/rfsstub/src
-//SOURCE f32file.cpp
-
-SOURCEPATH ../../../../../tsrc/fbsbitmapstub/src
-SOURCE fbs.cpp
-
-SOURCEPATH ../../../../../tsrc/imagedecoderstub/src
-SOURCE imageconversion.cpp
-
-//SOURCEPATH ../../../../../tsrc/centralrepositorystub/src
-//SOURCE centralrepositorystub.cpp
-
-SOURCEPATH ../../../../../tsrc/stringloaderstub/src
-SOURCE stringloader.cpp
-
-SOURCEPATH ../../../../../tsrc/propertystub/src
-SOURCE e32property.cpp
-
-SOURCEPATH ../../../../../tsrc/aknstub/src
-SOURCE aknappui.cpp
-
-
-//SOURCE sipstub.cpp
-//SOURCE sipprofileregistrybasestub.cpp
-//SOURCE sipprofileregistrystub.cpp
-//SOURCE sipprofilestub.cpp
-
-//SOURCEPATH ../../../../../tsrc/telephonyaudioroutingstub/src
-//SOURCE telephonyaudioroutingstub.cpp
-
-//SOURCEPATH ../../../../../tsrc/centralrepositorystub/src
-//SOURCE centralrepositorystub.cpp
-
-//SOURCEPATH ../../../../../tsrc/drmstub/src
-//SOURCE drmcommonstub.cpp
-
-// Test classes
-SOURCEPATH ../src
-SOURCE ut_musuiclipsharingcontroller.cpp
-SOURCE ut_musuieventcontroller.cpp
-SOURCE ut_musuilivesharingcontroller.cpp
-SOURCE ut_musuipropertywatch.cpp
-SOURCE ut_musuireceivecontroller.cpp
-SOURCE ut_musuistartcontroller.cpp
-SOURCE musuipropertyobserveradapter.cpp
-SOURCE musuicallbackobserveradapter.cpp
-SOURCE musuilivesharingobserveradapter.cpp
-SOURCE musuieventobserveradapter.cpp
-SOURCE musuiclipsharingobserveradapter.cpp
-SOURCE musuireceiveobserveradapter.cpp
-
-// Tested classes
-SOURCEPATH ../../../src
-//SOURCE musuiapp.cpp
-//SOURCE musuidocument.cpp
-//SOURCE musuiappui.cpp
-//SOURCE musuigeneralview.cpp
-//SOURCE musuisendview.cpp
-//SOURCE musuinullview.cpp
-//SOURCE musuilivesharingview.cpp
-//SOURCE musuilivesharingviewcontainer.cpp
-//SOURCE musuireceiveview.cpp
-//SOURCE musuiclipsharingview.cpp
-//SOURCE musuireceivecontainer.cpp
-//SOURCE musuiclipsharingviewcontainer.cpp
-
-//SOURCE musuistatuspanehandler.cpp
-//SOURCE musuinavimediadecorator.cpp
-//SOURCE musuiinvitationquery.cpp
-//SOURCE musuizoomindicator.cpp
-
-SOURCE musuistartcontroller.cpp
-SOURCE musuipropertywatch.cpp
-
-SOURCE musuieventcontroller.cpp
-SOURCE musuilivesharingcontroller.cpp
-SOURCE musuireceivecontroller.cpp
-SOURCE musuiclipsharingcontroller.cpp
-SOURCE musuibitmapdecoder.cpp
-//SOURCE musuiactivitymanger.cpp
-
-SOURCE musuicallbackservice.cpp
-
-// Includes
-
-
-USERINCLUDE ../inc
-USERINCLUDE ../../../inc
-
-// Must be before common
-USERINCLUDE ../../../../../tsrc/multimediasharingsettingsstub/inc
-
-USERINCLUDE ../../../../mmshshared/inc
-
-// to replace musengine with a stub
-USERINCLUDE ../../../../../tsrc/musenginestub/inc //TODO: added 4.11.
-USERINCLUDE ../../../../mmshengine/inc //TODO: commented 4.11.
-USERINCLUDE ../../../../inc
-USERINCLUDE ../../../../../inc
-
-// to replace musengine with a stub
-SYSTEMINCLUDE ../../../../../tsrc/musenginestub/inc
-//SYSTEMINCLUDE ../../../../../tsrc/rfsstub/inc
-SYSTEMINCLUDE ../../../../../tsrc/fbsbitmapstub/inc
-SYSTEMINCLUDE ../../../../../tsrc/imagedecoderstub/inc
-//SYSTEMINCLUDE ../../../../../tsrc/centralrepositorystub/inc
-SYSTEMINCLUDE ../../../../../tsrc/stringloaderstub/inc
-
-//SYSTEMINCLUDE ../../../../../tsrc/contactdatabasestub/inc
-SYSTEMINCLUDE ../../../../../tsrc/propertystub/inc
-
-SYSTEMINCLUDE ../../../../../tsrc/aknstub/inc
-
-
-
-
-
-// ui internal stub
-
-
-// to replace MCE API with a stub:
-//SYSTEMINCLUDE ../../../../../tsrc/mceclientstub/inc
-// to replace telephony audio routing with a stub:
-//SYSTEMINCLUDE ../../../../../tsrc/telephonyaudioroutingstub/src
-// to replace DRMCommon with a tub
-//SYSTEMINCLUDE ../../../../../tsrc/drmstub/inc
-
-APP_LAYER_SYSTEMINCLUDE
-
-
-LIBRARY euser.lib
-LIBRARY eunit.lib
-
-LIBRARY musenginestub.lib
-LIBRARY pbkeng.lib // PhoneBook Engine API
-LIBRARY phoneclient.lib // Phone client
-LIBRARY fbscli.lib // CFbsBitmap
-LIBRARY centralrepository.lib // Central repository
-LIBRARY cntmodel.lib // Contact Model
-
-
-LIBRARY apgrfx.lib // AppArc server client APIs
-LIBRARY apparc.lib // Application framework API
-LIBRARY bafl.lib // Resource readers
-LIBRARY cone.lib // Cone framework API
-LIBRARY efsrv.lib // File Server API
-LIBRARY eikcoctl.lib // Control framework API
-LIBRARY eikcore.lib // Eikon core controls API
-LIBRARY eikctl.lib // Eikon controls
-LIBRARY eikdlg.lib // Eikon Dialog API
-LIBRARY ws32.lib // Window server client API
-
-// S60 libraries:
-LIBRARY aknnotify.lib // CAknGlobalNote
-LIBRARY aknskins.lib // Avkon Skins Utils
-LIBRARY avkon.lib // Avkon Utils
-LIBRARY commonengine.lib // StringLoader
-LIBRARY featmgr.lib // S60 Feature manager API
-LIBRARY mgfetch.lib // Media Gallery Fetch Dialog
-LIBRARY MGXMediaFileApi.lib // Media Gallery File manager, for updating
-LIBRARY pbkview.lib // PhoneBook view API
-LIBRARY platformenv.lib // PathInfo
-LIBRARY aknicon.lib // AknIconUtils
-LIBRARY aknlayout.lib // CdlEngine
-LIBRARY gdi.lib // CFont
-LIBRARY imageconversion.lib // CIImageDecoder
-LIBRARY egul.lib // CGulIcon
-
-
-DEBUGLIBRARY flogger.lib
-
-//EXPORTUNFROZEN
-
-
-// End of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/musengtestdefs.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
-* 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 MUSENGTESTDEFS_H
-#define MUSENGTESTDEFS_H
-
-#include <mcesession.h>
-#include <mcemanager.h>
-
-// Next row is to disable warning emerging from EUnit code.
-// Placement is due to a fact that most test case files
-// include this file. Directive can be removed when
-// EUnit is fixed.
-#pragma warn_illtokenpasting off
-
-// Test values
-
-_LIT( KTestRecipientSipUri, "sip:TestRecipient@host.domain" );
-_LIT( KTestRecipientSipUriNoSipPrefix, "TestRecipient@host.domain" );
-_LIT( KTestRecipientTelUri, "tel:+3581111111");
-_LIT( KTestRecipientTelUriNoTelPrefix, "+3581111111" );
-
-_LIT( KTestRecipientRandomText, "sfjsfjklsjdkfsj" );
-_LIT( KTestRecipientSipUriWithSpace, "s:re cipi ent@" );
-_LIT( KTestRecipientTelUriWithAtSign, "tel:+3581111111@host.domain" ); //invalid
-
-_LIT8( KTestRecipientSipUri8, "sip:TestRecipient@host.domain" );
-_LIT8( KTestRecipientTelUri8, "tel:+3581111111");
-_LIT8( KTestRecipientRandomText8, "sfjsfjklsjdkfsj" );
-
-_LIT8( KTestOriginator, "Frank Swis" );
-
-_LIT( KTestAudioFileName, "audiofile" );
-_LIT( KTestVideoFileName, "videofile" );
-_LIT( KTestAnotherVideoFileName, "another" );
-
-const TInt KSipStatusCodeNoCodeSet = 0;
-const TInt KSipStatusCode200OK = 200;
-const TInt KSipStatusCode400BadRequest = 400;
-const TInt KSipStatusCode401Unauthorized = 401;
-const TInt KSipStatusCode402PaymentRequired = 402;
-const TInt KSipStatusCode404RecipientNotFound = 404;
-const TInt KSipStatusCode407ProxyAuthenticationRequired = 407;
-const TInt KSipStatusCode408ConnectionTimeOut = 408;
-const TInt KSipStatusCode415UnsupportedMediaType = 415;
-const TInt KSipStatusCode487RequestCancelled = 487;
-const TInt KSipStatusCodeUnknown = 10000;
-const TInt KTelephonyVolumeMinValue = 1;
-const TInt KTelephonyVolumeDefaultValue = 4;
-const TInt KTelephonyVolumeMaxValue = 1;
-
-// Values originally introduced in telephonyinternalcrkeys.h
-
-const TUid KCRUidCallHandling = {0x101F8784};
-const TUint32 KTelephonyIncallEarVolume = 0x00000001;
-const TUint32 KTelephonyIncallLoudspeakerVolume = 0x00000002;
-
-
-// Helper macros
-
-#define MUS_TEST_FORWARD_ALLOC_FAILURE( error )\
- if ( error == KErrNoMemory )\
- {\
- User::Leave( error );\
- }
-
-#define ESTABLISH_OUT_SESSION( outSession )\
- outSession->InviteL( KTestRecipientSipUri );\
- outSession->iSession->iState = CMceSession::EEstablished;\
- if ( outSession->iSession->iManager &&\
- outSession->iSession->iManager->iSessionObserver )\
- {\
- outSession->iSession->iManager->iSessionObserver->SessionStateChanged(\
- *(outSession->iSession),\
- outSession->iSession->iManager->iContainer );\
- }
-
-
-#endif // MUSENGTESTDEFS_H
-
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/musuicallbackobserveradapter.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
-* Copyright (c) 2006 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 UT_MUSUIOBSERVERSSTUB_H
-#define UT_MUSUIOBSERVERSSTUB_H
-
-
-#include "musuiclipsharingobserver.h"
-#include "musuipropertyobserver.h"
-#include "musuicallbackobserver.h"
-
-
-#include <e32base.h>
-#include <aknappui.h>
-
-
-/**
-*
-* @lib musengine.lib
-* @since S60 v3.2
-*/
-class CMusUiCallbackObserverAdapter : public CBase,
- public MMusUiCallbackObserver
- {
-
-
-
- public:
-
- CMusUiCallbackObserverAdapter();
-
- ~CMusUiCallbackObserverAdapter();
-
-
-
-
- //virtual void HandleError( const TInt aReason ) = 0;
-
- public: // MMusUiCallbackObserver
-
- void HandleAsyncEventL( TMusUiAsyncEvent aEventId );
-
-
- public: // data
-
- enum TMusUiCallbackObserverFunction
- {
- ENone, // default value
- EHandleAsyncEventL
- };
-
-
-
- TMusUiCallbackObserverFunction iCalledObserver;
- TInt iErrorCode;
-
- TMusUiAsyncEvent iHandleAsyncEventId;
-
- };
-
-
-
-
-#endif // UT_MUSSTUBS_H
-
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/musuiclipsharingobserveradapter.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
-* Copyright (c) 2009 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 __MUSUICLIPSHARINGOBSERVER_H__
-#define __MUSUICLIPSHARINGOBSERVER_H__
-
-#include "musuiclipsharingobserver.h"
-
-#include <e32base.h>
-
-
-
-class CMusUiClipSharingObserverAdapter : public CBase,
- public MMusUiClipSharingObserver
- {
-
-
-
- public:
-
- CMusUiClipSharingObserverAdapter();
-
- ~CMusUiClipSharingObserverAdapter();
-
-
- public:
-
- // MMusUiClipSharingObserver
- void RunFetchDialogL();
-
- TBool SelectAddressDialogL( CDesCArray* aAddressArray,
- TDes& aSelectedAddress );
-
- void ManualAddressEntryL( const TDesC& aAddress );
-
- void ShowWaitDialogL( const TDesC& aPrompt );
-
- void DismissWaitDialogL( );
-
- void DismissWaitDialogL( const TDesC& aReason );
-
- void ShowErrorDialogL( const TDesC& aMessage );
-
- void ShowInformationDialogL( TInt aResourceId );
-
- void ShowClipSharingPanesL();
-
- void ChangeOrientationL(
- CAknAppUiBase::TAppUiOrientation aOrientation );
-
- void ShowNaviPaneIconL( TMusUiNaviMediaDecorator aIcon,
- TBool aVisible );
-
- void UpdateSessionTime( const TDesC& aSessionTime );
-
- void SetVolume( TBool aUp );
-
- void HandleError( TInt aError );
-
- void HandleExitL();
-
- void EndOfClip();
-
-
- enum TMusUiClipSharingObserverFunction
- {
- ENone, // default value
- ERunFetchDialogL,
- ESelectAddressDialogL,
- EManualAddressEntryL,
- EShowWaitDialogL,
- EDismissWaitDialogL,
- EDismissWaitDialogL2,
- EShowErrorDialogL,
- EShowInformationDialogL,
- EShowClipSharingPanesL,
- EChangeOrientationL,
- EShowNaviPaneIconL,
- EUpdateSessionTime,
- ESetVolume,
- EHandleError,
- EHandleExitL,
- EEndOfClip
-
- };
-
-
- TMusUiClipSharingObserverFunction iCalledObserver;
- TInt iErrorCode;
- TInt iError;
- TInt iShowErrorDialogErrorCode ;
-
- HBufC* iAddress;
-
- };
-
-#endif
\ No newline at end of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/musuieventobserveradapter.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/*
-* Copyright (c) 2006 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 UT_MUSUIOBSERVERSSTUB_H
-#define UT_MUSUIOBSERVERSSTUB_H
-
-
-#include "musuieventobserver.h"
-
-
-#include <e32base.h>
-#include <aknappui.h>
-
-/**
-*
-* @lib musengine.lib
-* @since S60 v3.2
-*/
-class CMusUiEventObserverAdapter : public CBase,
- public MMusUiEventObserver
- {
-
-
-
- public:
-
- CMusUiEventObserverAdapter();
-
- ~CMusUiEventObserverAdapter();
-
-
- public: // MMusUiEventObserver
-
- void ActivateLocalMusViewL( TUid aViewId );
- void ActivateLocalMusViewL( TUid aViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage );
- TBool ShowConfirmationQueryDialogL( const TDesC& aPrompt );
- void ShowInformationDialogL( const TDesC& aPrompt );
- void ActivateContactViewL( TContactItemId aId );
- void HandleError( const TInt aReason ); // All ready defined
- void HandleExitL();
-
-
- public: // Helper
-
- /**
- * ETrue if all boolean member variables are set to EFalse and all the
- * pointers are NULL
- */
- TBool IsReseted();
-
- /**
- * Resets all the boolean member variable values to EFalse and deletes
- * and nullifies all the pointer variables.
- */
- void Reset();
-
- public: // Data
-
- enum TMusUiEventObserverFunction
- {
- ENone, // default value
-
- // MMusUiEventObserver
- EActivateLocalMusViewL,
- EActivateLocalMusViewL2,
- EShowConfirmationQueryDialogL,
- EShowInformationDialogL,
- EActivateContactViewL,
- EHandleError,
- EHandleExitL,
-
- };
-
-
- TInt iHandleErrorReason;
- TContactItemId iActivatedContactId;
-
- TMusUiEventObserverFunction iCalledObserver;
-
- TBool iBoolReturn;
- TInt iErrorCode;
-
- TUid iViewId;
-
- HBufC* iPrompt;
-
-
- };
-
-
-
-
-#endif // UT_MUSSTUBS_H
-
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/musuilivesharingobserveradapter.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
-* Copyright (c) 2009 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 MUSUILIVESHARINGOBSERVERADAPTER_H
-#define MUSUILIVESHARINGOBSERVERADAPTER_H
-
-#include "musuidefinitions.h"
-#include "musuilivesharingobserver.h"
-
-#include <e32base.h>
-#include <aknappui.h>
-#include <badesca.h>
-
-class CMusUiLiveSharingObserverAdapter : public MMusUiLiveSharingObserver
- {
-
- public:
-
- CMusUiLiveSharingObserverAdapter();
- ~CMusUiLiveSharingObserverAdapter();
-
-
- TBool SelectAddressDialogL( CDesCArray* aAddressArray,
- TDes& aSelectedAddress );
- void ManualAddressEntryL( const TDesC& aAddress );
-
- void ShowWaitDialogL( const TDesC& aPrompt );
-
- void DismissWaitDialogL( );
-
- void ShowErrorDialogL( const TDesC& aMessage );
-
- void ShowInformationDialogL( TInt aResourceId );
-
- void ShowLiveSharingPanesL();
-
- void ChangeOrientationL(
- CAknAppUiBase::TAppUiOrientation aOrientation );
-
- void ShowNaviPaneIconL(
- TMusUiNaviMediaDecorator aIcon,
- TBool aVisible );
-
- void UpdateSessionTime( const TDesC& aSessionTime );
-
- void SetVolume( TBool aUp );
-
- void SetZoom( TBool aIn );
-
- void HandleError( TInt aError );
-
- void HandleExitL();
-
- void CancelInvitationTimer();
-
-
- enum TMusUiLiveSharingObserverFuncion
- {
- ENone, // default value
- ESelectAddressDialogL,
- EManualAddressEntryL,
- EShowWaitDialogL,
- EDismissWaitDialogL,
- EShowErrorDialogL,
- EShowInformationDialogL,
- EShowLiveSharingPanesL,
- EChangeOrientationL,
- EShowNaviPaneIconL,
- EUpdateSessionTime,
- ESetVolume,
- ESetZoom,
- EHandleError,
- EHandleExitL,
- ECancelInvitationTimer
- };
-
-
-
- TMusUiLiveSharingObserverFuncion iCalledObserver;
-
- // Return values
- TBool iBoolReturn;
-
- // Error code
- TInt iErrorCode;
-
- TMusUiNaviMediaDecorator iIcon;
-
- CAknAppUiBase::TAppUiOrientation iOrientation;
-
- HBufC* iAddress;
-
- TInt iError;
- TInt iShowErrorDialogErrorCode;
-
-
- };
-
-#endif
-
-// end of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/musuipropertyobserveradapter.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
-* Copyright (c) 2009 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 __MUSUIPROPERTYOBSERVERADAPTER_H__
-#define __MUSUIPROPERTYOBSERVERADAPTER_H__
-
-#include "musuipropertyobserver.h"
-
-class CMusUiPropertyObserverAdapter : public CBase,
- public MMusUiPropertyObserver
-
- {
-
- public: // MMusUiPropertyObserver
-
- CMusUiPropertyObserverAdapter();
- ~CMusUiPropertyObserverAdapter();
-
- void ResourcePropertyChanged( const TUint aKey, const TInt aValue );
- void SessionPropertyChanged( const TUint aKey, const TInt aValue );
- void HandleError( const TInt aReason );
-
-
- enum TMusUiPropertyObserverFunction
- {
- ENone, // default value
- EResourcePropertyChanged,
- ESessionPropertyChanged,
- EHandleError
- };
-
-
- TMusUiPropertyObserverFunction iCalledObserver;
- TInt iErrorCode;
-
-
- };
-
-#endif
\ No newline at end of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/musuireceiveobserveradapter.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
-* 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: Mus Applications Event Observer Interface
-*
-*/
-
-
-
-#ifndef __MUSUIRECEIVEOBSERVERADAPTER_H__
-#define __MUSUIRECEIVEOBSERVERADAPTER_H__
-
-#include "musuidefinitions.h"
-#include "musuireceiveobserver.h"
-
-#include <e32base.h>
-#include <aknappui.h>
-//#include <badesca.h>
-
-class CMusUiReceiveObserverAdapter : public MMusUiReceiveObserver
- {
-
- public:
-
- CMusUiReceiveObserverAdapter();
- ~CMusUiReceiveObserverAdapter();
-
- void ShowErrorDialog( const TDesC& aPrompt );
-
- void ShowErrorDialogL( const TDesC& aMessage );
-
- void ShowInvitationQueryL( const TDesC& aQuery );
-
- void DismissInvitationQuery( TBool aDelete );
-
- void ShowWaitDialogL( const TDesC& aPrompt );
-
- void DismissWaitDialogL( );
-
- void ShowInformationDialogL( TInt aResourceId );
-
- void ShowNaviPaneIconL( TMusUiNaviMediaDecorator aIcon,
- TBool aVisible );
-
- void ShowStatusPaneL( TBool aVisible );
-
- void ChangeOrientationL(
- CAknAppUiBase::TAppUiOrientation aOrientation );
-
- void UpdateSessionTime( const TDesC& aSessionTime );
-
- void SetVolume( TBool aUp );
-
- void HandleError( TInt aError );
-
- void HandleExitL();
-
-
- enum TMusUiReceiveObserverFuncion
- {
- ENone, // default value
- EShowErrorDialog,
- EShowErrorDialogL,
- EShowInvitationQueryL,
- EDismissInvitationQuery,
- EShowWaitDialogL,
- EDismissWaitDialogL,
- EShowInformationDialogL,
- EShowNaviPaneIconL,
- EShowStatusPaneL,
- EChangeOrientationL,
- EUpdateSessionTime,
- ESetVolume,
- EHandleError,
- EHandleExitL
- };
-
-
-
- TMusUiReceiveObserverFuncion iCalledObserver;
-
- // Return values
- TBool iBoolReturn;
-
- // Error code
- TInt iErrorCode;
-
- TMusUiNaviMediaDecorator iIcon;
-
- CAknAppUiBase::TAppUiOrientation iOrientation;
-
- HBufC* iAddress;
-
- TInt iError;
- TInt iShowErrorDialogErrorCode;
- TBool iVisible;
- TInt iResourceId;
-
- };
-
-#endif
-
-// end of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/musuitestdefines.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2009 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 __MUSUITESTDEFINES_H__
-#define __MUSUITESTDEFINES_H__
-
-#include <e32base.h>
-
-
-// MusUiPropertyWatch
-const TInt KMusUiTestPropertyReadInteger = 0xCCCC;
-
-const TInt KMusUiTestKey = 1;
-
-_LIT(KMusUiTestPropertyReadDesc, "Test property value");
-
-
-
-
-
-
-
-#endif
\ No newline at end of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/ut_musuiclipsharingcontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
-* Copyright (c) 2009 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 __UT_MUSUICLIPSHARINGCONTROLLER_H__
-#define __UT_MUSUICLIPSHARINGCONTROLLER_H__
-
-
-// EXTERNAL INCLUDES
-#include <digia/eunit/ceunittestsuiteclass.h>
-#include <digia/eunit/eunitmacros.h>
-
-// FORWARD DECLARATIONS
-class CMusUiClipSharingObserverAdapter;
-class CMusUiClipSharingController;
-class CMusUiEventObserverAdapter;
-class CMusUiEventController;
-
-// CLASS DEFINITION
-/**
- * Tester class for CMusEngSession.
- * Since CMusEngSession is abstract, it is tested via object of its'
- * concrete descendant class CMusEngLiveSession. Only concrete
- * implementations are tested in this tester class.
- *
- */
-NONSHARABLE_CLASS( UT_CMusUiClipSharingController ): public CEUnitTestSuiteClass
- {
- public: // Constructors and destructors
-
- /**
- * Two phase construction
- */
- static UT_CMusUiClipSharingController* NewL();
- static UT_CMusUiClipSharingController* NewLC();
-
- /**
- * Destructor
- */
- ~UT_CMusUiClipSharingController();
-
- private: // Constructors and destructors
-
- UT_CMusUiClipSharingController();
- void ConstructL();
-
- private: // Test case setup and teardown
-
- void SetupL();
-
- void Teardown();
-
- private: // Test methods
-
-
- void UT_CMusUiClipSharingController_StartInvitationLL();
- void UT_CMusUiClipSharingController_AddressFoundLL();
- void UT_CMusUiClipSharingController_InviteLL();
- void UT_CMusUiClipSharingController_InviteL2L();
- void UT_CMusUiClipSharingController_SetRectL();
- void UT_CMusUiClipSharingController_CancelInvitationLL();
- void UT_CMusUiClipSharingController_HandleCommandLL();
- void UT_CMusUiClipSharingController_PlayingL();
- void UT_CMusUiClipSharingController_SetFileNameLL();
- void UT_CMusUiClipSharingController_ClipEndedL();
- void UT_CMusUiClipSharingController_ZoomInLL();
- void UT_CMusUiClipSharingController_ZoomOutLL();
- void UT_CMusUiClipSharingController_SplitLL();
- void UT_CMusUiClipSharingController_ShowErrorDialogL();
- void UT_CMusUiClipSharingController_DismissWaitDialogL();
- void UT_CMusUiClipSharingController_EndOfClipL();
- void UT_CMusUiClipSharingController_SessionRejectedL();
- void UT_CMusUiClipSharingController_SessionBadRequestL();
- void UT_CMusUiClipSharingController_SessionUnauthorizedL();
- void UT_CMusUiClipSharingController_SessionPaymentRequiredL();
- void UT_CMusUiClipSharingController_SessionRecipientNotFoundL();
- void UT_CMusUiClipSharingController_SessionProxyAuthenticationRequiredL();
- void UT_CMusUiClipSharingController_SessionRequestTimeOutL();
- void UT_CMusUiClipSharingController_SessionUnsupportedMediaTypeL();
- void UT_CMusUiClipSharingController_SessionRequestCancelledL();
- void UT_CMusUiClipSharingController_SessionEstablishedL();
- void UT_CMusUiClipSharingController_SessionTerminatedL();
- void UT_CMusUiClipSharingController_SessionConnectionLostL();
- void UT_CMusUiClipSharingController_SessionFailedL();
- void UT_CMusUiClipSharingController_StreamIdleL();
- void UT_CMusUiClipSharingController_StreamStreamingL();
- void UT_CMusUiClipSharingController_SessionTimeChangedL();
- void UT_CMusUiClipSharingController_InactivityTimeoutL();
-
-
- private: // Data
-
- CMusUiClipSharingObserverAdapter* iClipSharingObserverAdapter;
- CMusUiEventObserverAdapter* iEventObserver;
-
- CMusUiClipSharingController* iClipSharingController;
- CMusUiEventController* iEventController;
-
-
- EUNIT_DECLARE_TEST_TABLE;
-
- };
-
-#endif // __UT_MUSENGSESSION_H__
-
-// End of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/ut_musuieventcontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-/*
-* Copyright (c) 2009 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 __UT_MUSUIEVENTCONTROLLER_H__
-#define __UT_MUSUIEVENTCONTROLLER_H__
-
-
-// EXTERNAL INCLUDES
-#include <digia/eunit/ceunittestsuiteclass.h>
-#include <digia/eunit/eunitmacros.h>
-
-
-// FORWARD DECLARATIONS
-//class CMusEngLiveSession;
-//class CMusEngObserverStub;
-class CMusUiEventController;
-class CMusUiLiveSharingController;
-class CMusUiEventObserverAdapter;
-class CMusUiLiveSharingObserverAdapter;
-
-// CLASS DEFINITION
-/**
- * Tester class for CMusEngSession.
- * Since CMusEngSession is abstract, it is tested via object of its'
- * concrete descendant class CMusEngLiveSession. Only concrete
- * implementations are tested in this tester class.
- *
- */
-NONSHARABLE_CLASS( UT_CMusUiEventController ): public CEUnitTestSuiteClass
- {
- public: // Constructors and destructors
-
- /**
- * Two phase construction
- */
- static UT_CMusUiEventController* NewL();
- static UT_CMusUiEventController* NewLC();
-
- /**
- * Destructor
- */
- ~UT_CMusUiEventController();
-
- private: // Constructors and destructors
-
- UT_CMusUiEventController();
- void ConstructL();
-
- private: // Test case setup and teardown
-
- void SetupL();
-
- void Teardown();
-
- private: // Test methods
-
-
- public: // From MMusUiPropertyObserver
-
- void UT_CMusUiEventController_ResourcePropertyChangedL();
-
- void UT_CMusUiEventController_SessionPropertyChangedL();
-
- void UT_CMusUiEventController_SessionPropertyChanged2L();
-
- void UT_CMusUiEventController_HandleErrorL();
-
-
- public: // From MMusUiBitmapDecoderObserver
-
- void UT_CMusUiEventController_UpdateBitmapL();
-
-
- public: // New functions
-
- void UT_CMusUiEventController_SetEventObserverL();
-
- void UT_CMusUiEventController_HandleForegroundEventLL();
-
- void UT_CMusUiEventController_SetCameraStatusL();
-
- void UT_CMusUiEventController_SetKeypadStatusL();
-
- void UT_CMusUiEventController_SetVideoPlayerStatusL();
-
- void UT_CMusUiEventController_SetCameraAvailabilityInProgressL();
-
- void UT_CMusUiEventController_CameraAvailableL();
-
- void UT_CMusUiEventController_KeypadAvailableL();
-
- void UT_CMusUiEventController_VideoPlayerAvailableL();
-
- void UT_CMusUiEventController_CameraAvailibilityInProgressL();
-
- void UT_CMusUiEventController_MusRemoteSipAddressValueL();
-
- void UT_CMusUiEventController_MusProposalAddressValueL();
-
- void UT_CMusUiEventController_MusContactNameL();
-
- void UT_CMusUiEventController_MusContactBitmapL();
-
- void UT_CMusUiEventController_MusVideoCodecValueL();
-
- void UT_CMusUiEventController_MusTelNumberValueL();
-
- void UT_CMusUiEventController_SipProfileIdL();
-
- void UT_CMusUiEventController_SipRegistrationPendingL();
-
- void UT_CMusUiEventController_SessionTimeFormattedL();
-
- void UT_CMusUiEventController_SaveContactL();
-
- void UT_CMusUiEventController_HandleExitLL();
-
- void UT_CMusUiEventController_InspectKeypadLL();
-
- void UT_CMusUiEventController_UpdateContactLL();
-
- void UT_CMusUiEventController_UpdateContactNameL();
-
- void UT_CMusUiEventController_UpdateContactPictureLL();
-
- void UT_CMusUiEventController_HandleChangedStatusLL();
-
-
- private: // Data
-
-
- CMusUiLiveSharingObserverAdapter* iLiveSharingObserverAdapter;
- CMusUiEventObserverAdapter* iEventObserver;
-
- CMusUiLiveSharingController* iLiveSharingController;
- CMusUiEventController* iEventController;
-
-
- HBufC* _iReturnValue;
- HBufC* iVideoFolder;
-
- EUNIT_DECLARE_TEST_TABLE;
-
- };
-
-#endif // __UT_MUSENGSESSION_H__
-
-// End of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/ut_musuilivesharingcontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
-* Copyright (c) 2009 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 __UT_MUSUILIVESHARINGCONTROLLER_H__
-#define __UT_MUSUILIVESHARINGCONTROLLER_H__
-
-
-// EXTERNAL INCLUDES
-#include <digia/eunit/ceunittestsuiteclass.h>
-#include <digia/eunit/eunitmacros.h>
-
-// FORWARD DECLARATIONS
-class CMusUiLiveSharingObserverAdapter;
-class CMusUiLiveSharingController;
-class CMusUiEventObserverAdapter;
-class CMusUiEventController;
-
-
-// CLASS DEFINITION
-/**
- * Tester class for CMusEngSession.
- * Since CMusEngSession is abstract, it is tested via object of its'
- * concrete descendant class CMusEngLiveSession. Only concrete
- * implementations are tested in this tester class.
- *
- */
-NONSHARABLE_CLASS( UT_CMusUiLiveSharingController ): public CEUnitTestSuiteClass
- {
- public: // Constructors and destructors
-
- /**
- * Two phase construction
- */
- static UT_CMusUiLiveSharingController* NewL();
- static UT_CMusUiLiveSharingController* NewLC();
-
- /**
- * Destructor
- */
- ~UT_CMusUiLiveSharingController();
-
- private: // Constructors and destructors
-
- UT_CMusUiLiveSharingController();
- void ConstructL();
-
- private: // Test case setup and teardown
-
- void SetupL();
-
- void Teardown();
-
- private: // Test methods
-
- //public: // new functions:
-
- void UT_CMusUiLiveSharingController_StartInvitationLL();
- void UT_CMusUiLiveSharingController_AddressFoundLL();
- void UT_CMusUiLiveSharingController_InviteLL();
- void UT_CMusUiLiveSharingController_InviteL2L();
- void UT_CMusUiLiveSharingController_SetRectL();
- void UT_CMusUiLiveSharingController_CancelInvitationLL();
- void UT_CMusUiLiveSharingController_HandleCommandLL();
- void UT_CMusUiLiveSharingController_PlayingL();
- void UT_CMusUiLiveSharingController_CurrentZoomLL();
- void UT_CMusUiLiveSharingController_MinZoomLL();
- void UT_CMusUiLiveSharingController_MaxZoomLL();
-
- //private: // new functions:
-
- void UT_CMusUiLiveSharingController_CenteredRectL();
- void UT_CMusUiLiveSharingController_ZoomInLL();
- void UT_CMusUiLiveSharingController_ZoomOutLL();
- void UT_CMusUiLiveSharingController_SplitLL();
- void UT_CMusUiLiveSharingController_ShowErrorDialogL();
- void UT_CMusUiLiveSharingController_DismissWaitDialogL();
-
-
- //public: // From MMusEngLiveSessionObserver
-
- // Empty so far
-
- //public: // from MMusEngOutSessionObserver
-
- void UT_CMusUiLiveSharingController_SessionRejectedL(); // e.g. 603 DECLINE
- void UT_CMusUiLiveSharingController_SessionBadRequestL(); // 400
- void UT_CMusUiLiveSharingController_SessionUnauthorizedL(); // 401
- void UT_CMusUiLiveSharingController_SessionPaymentRequiredL(); // 402
- void UT_CMusUiLiveSharingController_SessionRecipientNotFoundL(); // 404
- void UT_CMusUiLiveSharingController_SessionProxyAuthenticationRequiredL(); // 407
- void UT_CMusUiLiveSharingController_SessionRequestTimeOutL(); // 408
- void UT_CMusUiLiveSharingController_SessionUnsupportedMediaTypeL(); // 415
- void UT_CMusUiLiveSharingController_SessionRequestCancelledL(); // 487
-
- //public: // from MMusEngSessionObserver
-
- void UT_CMusUiLiveSharingController_SessionEstablishedL();
- void UT_CMusUiLiveSharingController_SessionTerminatedL();
- void UT_CMusUiLiveSharingController_SessionConnectionLostL();
- void UT_CMusUiLiveSharingController_SessionFailedL();
- void UT_CMusUiLiveSharingController_StreamIdleL();
- void UT_CMusUiLiveSharingController_StreamStreamingL();
- void UT_CMusUiLiveSharingController_SessionTimeChangedL();
- void UT_CMusUiLiveSharingController_InactivityTimeoutL();
-
- private: // Data
-
- CMusUiLiveSharingObserverAdapter* iLiveSharingObserverAdapter;
- CMusUiEventObserverAdapter* iEventObserver;
-
- CMusUiLiveSharingController* iLiveSharingController;
- CMusUiEventController* iEventController;
-
-
-
-
- EUNIT_DECLARE_TEST_TABLE;
-
- };
-
-#endif // __UT_MUSENGSESSION_H__
-
-// End of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/ut_musuipropertywatch.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
-* Copyright (c) 2009 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 __UT_MUSUIPROPERYWATCH_H__
-#define __UT_MUSUIPROPERYWATCH_H__
-
-
-// EXTERNAL INCLUDES
-#include <digia/eunit/ceunittestsuiteclass.h>
-#include <digia/eunit/eunitmacros.h>
-
-// FORWARD DECLARATIONS
-//class CMusEngLiveSession;
-//class CMusEngObserverStub;
-class CMusUiPropertyWatch;
-class CMusUiPropertyObserverAdapter;
-
-// CLASS DEFINITION
-/**
- * Tester class for CMusEngSession.
- * Since CMusEngSession is abstract, it is tested via object of its'
- * concrete descendant class CMusEngLiveSession. Only concrete
- * implementations are tested in this tester class.
- *
- */
-NONSHARABLE_CLASS( UT_CMusUiPropertyWatch ): public CEUnitTestSuiteClass
- {
- public: // Constructors and destructors
-
- /**
- * Two phase construction
- */
- static UT_CMusUiPropertyWatch* NewL();
- static UT_CMusUiPropertyWatch* NewLC();
-
- /**
- * Destructor
- */
- ~UT_CMusUiPropertyWatch();
-
- private: // Constructors and destructors
-
- UT_CMusUiPropertyWatch();
- void ConstructL();
-
- private: // Test case setup and teardown
-
- void SetupL();
-
- void Teardown();
-
- private: // Test methods
-
- void UT_CMusUiPropertyWatch_ReadIntPropertyLL();
- void UT_CMusUiPropertyWatch_ReadDescPropertyLL();
- void UT_CMusUiPropertyWatch_DoCancelL();
- void UT_CMusUiPropertyWatch_RunLL();
- void UT_CMusUiPropertyWatch_RunErrorL();
-
-
- private: // Data
-
- /*
- CMusEngLiveSession* iLiveSession;
- CMusEngObserverStub* iObserver;
- */
- CMusUiPropertyObserverAdapter* iPropertyObserver;
- CMusUiPropertyWatch* iPropertyWatch;
-
- EUNIT_DECLARE_TEST_TABLE;
-
- };
-
-#endif // __UT_MUSENGSESSION_H__
-
-// End of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/ut_musuireceivecontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
-* Copyright (c) 2009 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 __UT_MUSUIRECEIVECONTROLLER_H__
-#define __UT_MUSUIRECEIVECONTROLLER_H__
-
-
-// EXTERNAL INCLUDES
-#include <digia/eunit/ceunittestsuiteclass.h>
-#include <digia/eunit/eunitmacros.h>
-
-// FORWARD DECLARATIONS
-class CMusUiReceiveObserverAdapter;
-class CMusUiReceiveController;
-class CMusUiEventObserverAdapter;
-class CMusUiEventController;
-
-
-
-// CLASS DEFINITION
-/**
- * Tester class for CMusEngSession.
- * Since CMusEngSession is abstract, it is tested via object of its'
- * concrete descendant class CMusEngLiveSession. Only concrete
- * implementations are tested in this tester class.
- *
- */
-NONSHARABLE_CLASS( UT_CMusUiReceiveController ): public CEUnitTestSuiteClass
- {
- public: // Constructors and destructors
-
- /**
- * Two phase construction
- */
- static UT_CMusUiReceiveController* NewL();
- static UT_CMusUiReceiveController* NewLC();
-
- /**
- * Destructor
- */
- ~UT_CMusUiReceiveController();
-
- private: // Constructors and destructors
-
- UT_CMusUiReceiveController();
- void ConstructL();
-
- private: // Test case setup and teardown
-
- void SetupL();
-
- void Teardown();
-
- private: // Test methods
-
- void UT_CMusUiReceiveController_HandleCommandLL();
- void UT_CMusUiReceiveController_SizeChangedL();
- void UT_CMusUiReceiveController_ShowErrorDialogLL();
- void UT_CMusUiReceiveController_HandleIncomingSessionLL();
- void UT_CMusUiReceiveController_CancelInvitationLL();
-
- public: // from CMusUiEventController
-
- void UT_CMusUiReceiveController_ContinueInvitationLL();
- void UT_CMusUiReceiveController_HandleAsyncEventLL();
- void UT_CMusUiReceiveController_ConnectionEstablishedL();
- void UT_CMusUiReceiveController_PlayLL();
- void UT_CMusUiReceiveController_PauseLL();
- void UT_CMusUiReceiveController_EnableDisplayLL();
- void UT_CMusUiReceiveController_ShowNaviPaneIconLL();
- void UT_CMusUiReceiveController_ChangeOrientationLL();
- void UT_CMusUiReceiveController_CenteredRectL();
- void UT_CMusUiReceiveController_ManualAddressTypedL();
- void UT_CMusUiReceiveController_ShowInformationDialogLL();
- void UT_CMusUiReceiveController_ShutdownLL();
-
- public: // from MMusEngReceiveSessionObserver
-
- void UT_CMusUiReceiveController_IncomingSessionL();
- void UT_CMusUiReceiveController_StreamBufferingL();
-
- public: // from MMusEngSessionObserver
-
- void UT_CMusUiReceiveController_SessionEstablishedL();
- void UT_CMusUiReceiveController_SessionTerminatedL();
- void UT_CMusUiReceiveController_SessionConnectionLostL();
- void UT_CMusUiReceiveController_SessionFailedL();
- void UT_CMusUiReceiveController_StreamIdleL();
- void UT_CMusUiReceiveController_StreamStreamingL();
- void UT_CMusUiReceiveController_SessionTimeChangedL();
- void UT_CMusUiReceiveController_InactivityTimeoutL();
-
- public: // from MMusUiInvitationQueryObserver
-
- void UT_CMusUiReceiveController_InvitationAcceptedLL();
- void UT_CMusUiReceiveController_InvitationRejectedLL();
-
- private: // new functions:
-
- void UT_CMusUiReceiveController_UpdateStatusPaneLL();
- void UT_CMusUiReceiveController_InspectVideoPlayerLL();
- void UT_CMusUiReceiveController_ShowWaitDialogLL();
-
-
-
-
-
- private: // Data
-
- CMusUiReceiveObserverAdapter* iReceiveObserverAdapter;
- CMusUiEventObserverAdapter* iEventObserver;
-
- CMusUiReceiveController* iReceiveController;
- CMusUiEventController* iEventController;
-
-
- EUNIT_DECLARE_TEST_TABLE;
-
- };
-
-#endif // __UT_MUSENGSESSION_H__
-
-// End of file
--- a/mmsharing/mmshui/tsrc/ut_ui/inc/ut_musuistartcontroller.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
-* Copyright (c) 2009 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 __UT_MUSUISTARTCONTROLLER_H__
-#define __UT_MUSUISTARTCONTROLLER_H__
-
-
-// EXTERNAL INCLUDES
-#include <digia/eunit/ceunittestsuiteclass.h>
-#include <digia/eunit/eunitmacros.h>
-
-// FORWARD DECLARATIONS
-//class CMusEngLiveSession;
-//class CMusEngObserverStub;
-class CMusUiEventObserverAdapter;
-
-// CLASS DEFINITION
-/**
- * Tester class for CMusEngSession.
- * Since CMusEngSession is abstract, it is tested via object of its'
- * concrete descendant class CMusEngLiveSession. Only concrete
- * implementations are tested in this tester class.
- *
- */
-NONSHARABLE_CLASS( UT_CMusUiStartController ): public CEUnitTestSuiteClass
- {
- public: // Constructors and destructors
-
- /**
- * Two phase construction
- */
- static UT_CMusUiStartController* NewL();
- static UT_CMusUiStartController* NewLC();
-
- /**
- * Destructor
- */
- ~UT_CMusUiStartController();
-
- private: // Constructors and destructors
-
- UT_CMusUiStartController();
- void ConstructL();
-
- private: // Test case setup and teardown
-
- void SetupL();
-
- void Teardown();
-
- private: // Test methods
-
- void UT_CMusUiStartController_UseCasePropertyLL();
- void UT_CMusUiStartController_SetStartViewLL();
-
-
-
- private: // Data
-
-
- CMusUiEventObserverAdapter* iEventObserver;
-
- /*
- CMusEngLiveSession* iLiveSession;
- CMusEngObserverStub* iEventObserver;
- */
-
- EUNIT_DECLARE_TEST_TABLE;
-
- };
-
-#endif // __UT_MUSENGSESSION_H__
-
-// End of file
--- a/mmsharing/mmshui/tsrc/ut_ui/src/musuicallbackobserveradapter.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-#include "musuicallbackobserveradapter.h"
-
-
-CMusUiCallbackObserverAdapter::CMusUiCallbackObserverAdapter()
- {
- iCalledObserver = ENone;
- }
-
-
-CMusUiCallbackObserverAdapter::~CMusUiCallbackObserverAdapter()
- {
- }
-
-
-void CMusUiCallbackObserverAdapter::HandleAsyncEventL( TMusUiAsyncEvent aEventId )
- {
- iHandleAsyncEventId = aEventId;
- iCalledObserver = EHandleAsyncEventL;
- User::LeaveIfError( iErrorCode );
- }
\ No newline at end of file
--- a/mmsharing/mmshui/tsrc/ut_ui/src/musuiclipsharingobserveradapter.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-#include "musuiclipsharingobserveradapter.h"
-
-
-CMusUiClipSharingObserverAdapter::CMusUiClipSharingObserverAdapter()
- {
- iAddress = NULL;
- iCalledObserver = ENone;
- iErrorCode = KErrNone;
- iShowErrorDialogErrorCode = KErrNone;
- }
-
-
-CMusUiClipSharingObserverAdapter::~CMusUiClipSharingObserverAdapter()
- {
- delete iAddress;
- }
-
-
-void CMusUiClipSharingObserverAdapter::RunFetchDialogL()
- {
- iCalledObserver = ERunFetchDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-TBool CMusUiClipSharingObserverAdapter::SelectAddressDialogL( CDesCArray* aAddressArray,
- TDes& aSelectedAddress )
- {
-
- TInt selectedIndex( 0 );
- aSelectedAddress = (*aAddressArray)[ selectedIndex ];
- delete aAddressArray;
- aAddressArray = NULL;
-
- iCalledObserver = ESelectAddressDialogL;
- User::LeaveIfError( iErrorCode );
- return ETrue;
- }
-
-
-void CMusUiClipSharingObserverAdapter::ManualAddressEntryL( const TDesC& aAddress )
- {
- delete iAddress;
- iAddress = aAddress.AllocL();
- iCalledObserver = EManualAddressEntryL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::ShowWaitDialogL( const TDesC& aPrompt )
- {
- iCalledObserver = EShowWaitDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::DismissWaitDialogL( )
- {
- iCalledObserver = EDismissWaitDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::DismissWaitDialogL( const TDesC& aReason )
- {
- iCalledObserver = EDismissWaitDialogL2;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::ShowErrorDialogL( const TDesC& aMessage )
- {
-
- iCalledObserver = EShowErrorDialogL;
- User::LeaveIfError( iShowErrorDialogErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::ShowInformationDialogL( TInt aResourceId )
- {
- iCalledObserver = EShowInformationDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::ShowClipSharingPanesL()
- {
- iCalledObserver = EShowClipSharingPanesL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::ChangeOrientationL(
- CAknAppUiBase::TAppUiOrientation aOrientation )
- {
- iCalledObserver = EChangeOrientationL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::ShowNaviPaneIconL( TMusUiNaviMediaDecorator aIcon,
- TBool aVisible )
- {
- iCalledObserver = EShowNaviPaneIconL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::UpdateSessionTime( const TDesC& aSessionTime )
- {
- iCalledObserver = EUpdateSessionTime;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::SetVolume( TBool aUp )
- {
- iCalledObserver = ESetVolume;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::HandleError( TInt aError )
- {
- iError = aError;
- iCalledObserver = EHandleError;
- //User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::HandleExitL()
- {
- iCalledObserver = EHandleExitL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiClipSharingObserverAdapter::EndOfClip()
- {
- iCalledObserver = EEndOfClip;
- User::LeaveIfError( iErrorCode );
- }
-
--- a/mmsharing/mmshui/tsrc/ut_ui/src/musuieventobserveradapter.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-#include "musuieventobserveradapter.h"
-
-
-// ---- MEMBER FUNCTIONS OF CMusUiObserversStub --------------------------------
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiEventObserverAdapter::CMusUiEventObserverAdapter()
- {
- // NOP
- // Initialize...
- iCalledObserver = ENone;
- iBoolReturn = EFalse;
- iErrorCode = KErrUnknown;
- iPrompt = NULL;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiEventObserverAdapter::~CMusUiEventObserverAdapter()
- {
- delete iPrompt;
- }
-
-
-// -------- Functions from MMusUiEventObserver -----------------
-
-void CMusUiEventObserverAdapter::ActivateLocalMusViewL( TUid aViewId )
- {
- iCalledObserver = EActivateLocalMusViewL;
- iViewId = aViewId;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiEventObserverAdapter::ActivateLocalMusViewL( TUid aViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage )
- {
- iCalledObserver = EActivateLocalMusViewL2;
- iViewId = aViewId;
- User::LeaveIfError( iErrorCode );
- }
-
-
-TBool CMusUiEventObserverAdapter::ShowConfirmationQueryDialogL( const TDesC& aPrompt )
- {
- iPrompt = aPrompt.AllocL();
- iCalledObserver = EShowConfirmationQueryDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-void CMusUiEventObserverAdapter::ShowInformationDialogL( const TDesC& aPrompt )
- {
- iCalledObserver = EShowInformationDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiEventObserverAdapter::ActivateContactViewL( TContactItemId aId )
- {
- iCalledObserver = EActivateContactViewL;
- iActivatedContactId = aId;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiEventObserverAdapter::HandleError( const TInt aReason )
- {
- iHandleErrorReason = aReason;
- iCalledObserver = EHandleError;
- }
-
-
-void CMusUiEventObserverAdapter::HandleExitL()
- {
- iCalledObserver = EHandleExitL;
- User::LeaveIfError( iErrorCode );
- }
-
--- a/mmsharing/mmshui/tsrc/ut_ui/src/musuilivesharingobserveradapter.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-#include "musuilivesharingobserveradapter.h"
-
-
-CMusUiLiveSharingObserverAdapter::CMusUiLiveSharingObserverAdapter()
- {
- iAddress = NULL;
- iErrorCode = KErrNone;
- iShowErrorDialogErrorCode = KErrNone;
- }
-
-CMusUiLiveSharingObserverAdapter::~CMusUiLiveSharingObserverAdapter()
- {
- delete iAddress;
- }
-
-
-TBool CMusUiLiveSharingObserverAdapter::SelectAddressDialogL( CDesCArray* aAddressArray,
- TDes& aSelectedAddress )
- {
-
-
- TInt selectedIndex( 0 );
- aSelectedAddress = (*aAddressArray)[ selectedIndex ];
- delete aAddressArray;
- aAddressArray = NULL;
-
- iCalledObserver = ESelectAddressDialogL;
- User::LeaveIfError( iErrorCode );
- return ETrue;
- }
-
-
-void CMusUiLiveSharingObserverAdapter::ManualAddressEntryL( const TDesC& aAddress )
- {
- delete iAddress;
- iAddress = aAddress.AllocL();
- iCalledObserver = EManualAddressEntryL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::ShowWaitDialogL( const TDesC& aPrompt )
- {
- iCalledObserver = EShowWaitDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::DismissWaitDialogL( )
- {
- iCalledObserver = EDismissWaitDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::ShowErrorDialogL( const TDesC& aMessage )
- {
- iCalledObserver = EShowErrorDialogL;
- User::LeaveIfError( iShowErrorDialogErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::ShowInformationDialogL( TInt aResourceId )
- {
- iCalledObserver = EShowInformationDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::ShowLiveSharingPanesL()
- {
- iCalledObserver = EShowLiveSharingPanesL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::ChangeOrientationL(
- CAknAppUiBase::TAppUiOrientation aOrientation )
- {
- iOrientation = aOrientation;
- iCalledObserver = EChangeOrientationL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::ShowNaviPaneIconL(
- TMusUiNaviMediaDecorator aIcon,
- TBool aVisible )
- {
- iIcon = aIcon;
- iCalledObserver = EShowNaviPaneIconL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::UpdateSessionTime( const TDesC& aSessionTime )
- {
- iCalledObserver = EUpdateSessionTime;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::SetVolume( TBool aUp )
- {
- iCalledObserver = ESetVolume;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::SetZoom( TBool aIn )
- {
- iCalledObserver = ESetZoom;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::HandleError( TInt aError )
- {
- iError = aError;
- iCalledObserver = EHandleError;
- //User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::HandleExitL()
- {
- iCalledObserver = EHandleExitL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-
-void CMusUiLiveSharingObserverAdapter::CancelInvitationTimer()
- {
- iCalledObserver = ECancelInvitationTimer;
- User::LeaveIfError( iErrorCode );
- }
-
-
--- a/mmsharing/mmshui/tsrc/ut_ui/src/musuipropertyobserveradapter.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-#include "musuipropertyobserveradapter.h"
-
-
-
-CMusUiPropertyObserverAdapter::CMusUiPropertyObserverAdapter()
- {
- //iCalledObserver = ENone;
- }
-
-
-CMusUiPropertyObserverAdapter::~CMusUiPropertyObserverAdapter()
- {
- }
-
-
-void CMusUiPropertyObserverAdapter::ResourcePropertyChanged( const TUint aKey, const TInt aValue )
- {
- iCalledObserver = EResourcePropertyChanged;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiPropertyObserverAdapter::SessionPropertyChanged( const TUint aKey, const TInt aValue )
- {
- iCalledObserver = ESessionPropertyChanged;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiPropertyObserverAdapter::HandleError( const TInt aReason )
- {
- iCalledObserver = EHandleError;
- User::LeaveIfError( iErrorCode );
- }
--- a/mmsharing/mmshui/tsrc/ut_ui/src/musuireceiveobserveradapter.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-#include "musuireceiveobserveradapter.h"
-
-
-CMusUiReceiveObserverAdapter::CMusUiReceiveObserverAdapter()
- {
- iAddress = NULL;
- iErrorCode = KErrNone;
- iShowErrorDialogErrorCode = KErrNone;
- }
-
-CMusUiReceiveObserverAdapter::~CMusUiReceiveObserverAdapter()
- {
- delete iAddress;
- }
-
-
-
-void CMusUiReceiveObserverAdapter::ShowErrorDialog( const TDesC& aPrompt )
- {
- iCalledObserver = EShowErrorDialog;
- }
-
-
-
-void CMusUiReceiveObserverAdapter::ShowErrorDialogL( const TDesC& aMessage )
- {
- iCalledObserver = EShowErrorDialogL;
- User::LeaveIfError( iShowErrorDialogErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::ShowInvitationQueryL( const TDesC& aQuery )
- {
- iCalledObserver = EShowInvitationQueryL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::DismissInvitationQuery( TBool aDelete )
- {
- iCalledObserver = EDismissInvitationQuery;
- }
-
-
-
-void CMusUiReceiveObserverAdapter::ShowWaitDialogL( const TDesC& aPrompt )
- {
- iCalledObserver = EShowWaitDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::DismissWaitDialogL( )
- {
- iCalledObserver = EDismissWaitDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::ShowInformationDialogL( TInt aResourceId )
- {
- iResourceId = aResourceId;
- iCalledObserver = EShowInformationDialogL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::ShowNaviPaneIconL(
- TMusUiNaviMediaDecorator aIcon,
- TBool aVisible )
- {
- iIcon = aIcon;
- iVisible = aVisible;
- iCalledObserver = EShowNaviPaneIconL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::ShowStatusPaneL( TBool aVisible )
- {
- iCalledObserver = EShowStatusPaneL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::ChangeOrientationL(
- CAknAppUiBase::TAppUiOrientation aOrientation )
- {
- iOrientation = aOrientation;
- iCalledObserver = EChangeOrientationL;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::UpdateSessionTime( const TDesC& aSessionTime )
- {
- iCalledObserver = EUpdateSessionTime;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::SetVolume( TBool aUp )
- {
- iCalledObserver = ESetVolume;
- User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::HandleError( TInt aError )
- {
- iError = aError;
- iCalledObserver = EHandleError;
- //User::LeaveIfError( iErrorCode );
- }
-
-
-void CMusUiReceiveObserverAdapter::HandleExitL()
- {
- iCalledObserver = EHandleExitL;
- User::LeaveIfError( iErrorCode );
- }
--- a/mmsharing/mmshui/tsrc/ut_ui/src/ut_musuiclipsharingcontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,730 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-
-// INTERNAL INCLUDES
-#include "ut_musuiclipsharingcontroller.h"
-#include "musuiclipsharingcontroller.h"
-#include "musuiclipsharingobserveradapter.h"
-#include "musuieventobserveradapter.h"
-#include "musuidefinitions.h"
-#include "musengclipsession.h"
-#include <e32property.h>
-//#include "musestubs.h"
-//#include "musengtestdefs.h"
-
-// SYSTEM INCLUDES
-#include <digia/eunit/eunitmacros.h>
-//#include <centralrepository.h>
-//#include <mcedisplaysink.h>
-
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiClipSharingController* UT_CMusUiClipSharingController::NewL()
- {
- UT_CMusUiClipSharingController* self = UT_CMusUiClipSharingController::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiClipSharingController* UT_CMusUiClipSharingController::NewLC()
- {
- UT_CMusUiClipSharingController* self = new( ELeave ) UT_CMusUiClipSharingController();
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiClipSharingController::~UT_CMusUiClipSharingController()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Default constructor
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiClipSharingController::UT_CMusUiClipSharingController()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Second phase construct
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiClipSharingController::ConstructL()
- {
- // The ConstructL from the base class CEUnitTestSuiteClass must be called.
- // It generates the test case table.
- CEUnitTestSuiteClass::ConstructL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiClipSharingController::SetupL()
- {
- iEventObserver = new (ELeave) CMusUiEventObserverAdapter();
- EUNIT_ASSERT( iEventObserver );
-
- iClipSharingObserverAdapter = new (ELeave) CMusUiClipSharingObserverAdapter();
- EUNIT_ASSERT( iClipSharingObserverAdapter );
-
-
- RProperty::iIntProperty = 0;
- RProperty::iErrorCode = KErrNone;
-
-
- iClipSharingController = CMusUiClipSharingController::NewL( iClipSharingObserverAdapter, TRect( 0,0,100,100));
- iEventController = static_cast<CMusUiEventController*>
- ( iClipSharingController );
-
- EUNIT_ASSERT( iEventController );
- iEventController->SetEventObserver( iEventObserver );
- EUNIT_ASSERT( iEventController->iObserver == iEventObserver );
-
- // Need fake active object event...
- _LIT( KFileName , "clip.3gp" );
- iClipSharingController->iFileName = KFileName().AllocL();
- iClipSharingController->HandleAsyncEventL( EMusUiAsyncStartMediaGallery );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiClipSharingController::Teardown()
- {
- delete iClipSharingController;
- iEventController = NULL;
- delete iEventObserver;
- delete iClipSharingObserverAdapter;
- }
-
-
-
-// TEST CASES
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_StartInvitationLL()
- {
- // TODO:
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_AddressFoundLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_InviteLL()
- {
- // Precondititions
- iClipSharingObserverAdapter->iErrorCode = KErrNone;
- iEventController->iCameraAvailable = EAvailable;
- iEventController->iSipRegistrationPending = EFalse;
-
- // sip address length > 0 and no separator
- _LIT( KRes, "address" );
- delete iEventController->iRemoteSipAddress;
- iEventController->iRemoteSipAddress = KRes().AllocL();
- iClipSharingController->InviteL();
-
- EUNIT_ASSERT( iClipSharingController->iSession->iInvited );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EShowWaitDialogL );
-
-
- // sip address length > 0 and separator
- _LIT( KRes2, "Address1, Address2, Address3" );
- delete iEventController->iRemoteSipAddress;
- iEventController->iRemoteSipAddress = KRes2().AllocL();
- iClipSharingController->iSession->iInvited = EFalse;
- iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::ENone;
-
- iClipSharingController->InviteL();
- EUNIT_ASSERT( iClipSharingController->iSession->iInvited );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EShowWaitDialogL );
-
-
- // sip addres length = 0
- _LIT( KRes3, "" );
- delete iEventController->iRemoteSipAddress;
- iEventController->iRemoteSipAddress = KRes3().AllocL();
- iClipSharingController->iSession->iInvited = EFalse;
- iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::ENone;
-
- iClipSharingController->InviteL();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EManualAddressEntryL );
-
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_InviteL2L()
- {
- // Precondititions
- iClipSharingObserverAdapter->iErrorCode = KErrNone;
-
- // registration not pending and triedinvitations > 1
- iEventController->iSipRegistrationPending = EFalse;
- iClipSharingController->iSession->iInvited = EFalse;
- iClipSharingController->iManualAddressTyped = EFalse;
- iClipSharingController->iTriedInvitations = 2;
-
- _LIT( KRes, "address" );
- iClipSharingController->InviteL( KRes );
- EUNIT_ASSERT( iClipSharingController->iSession->iInvited );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EShowWaitDialogL );
-
-
- // registration not pending and triedinvitations > 1
- iClipSharingController->iSession->iErrorCode = KErrArgument;
-
- iEventController->iSipRegistrationPending = EFalse;
- iClipSharingController->iSession->iInvited = EFalse;
- iClipSharingController->iManualAddressTyped = EFalse;
- iClipSharingController->iTriedInvitations = 2;
-
- iClipSharingController->InviteL( KRes );
- EUNIT_ASSERT( iClipSharingController->iSession->iInvited );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleExitL );
-
-
- // registration not pending and triedinvitations = 0
- iClipSharingController->iSession->iErrorCode = KErrArgument;
-
- iEventController->iSipRegistrationPending = EFalse;
- iClipSharingController->iSession->iInvited = EFalse;
- iClipSharingController->iManualAddressTyped = EFalse;
- iClipSharingController->iTriedInvitations = 0;
-
- _LIT( KProposal, "proposal_address" );
- delete iEventController->iRemoteSipAddressProposal;
- iEventController->iRemoteSipAddressProposal = KProposal().AllocL();
-
- // Manual address entry
- iClipSharingController->InviteL( KRes );
- EUNIT_ASSERT( iClipSharingController->iSession->iInvited );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EShowWaitDialogL );
- EUNIT_ASSERT( iClipSharingController->iTriedInvitations == 1 );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iAddress->Des().Compare( KProposal ) == 0 );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SetRectL()
- {
- TRect rect = TRect( 0,0, 100,100 );
-
- iClipSharingController->iSession->iErrorCode = KErrArgument;
- iClipSharingController->SetRect( rect );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleError );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iError == KErrArgument );
-
- iClipSharingController->iSession->iErrorCode = KErrNone;
- iClipSharingController->SetRect( rect );
- EUNIT_ASSERT( iClipSharingController->iSession->iRect == rect );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_CancelInvitationLL()
- {
- // Connection established cancel
- iClipSharingController->iSession->iInvited = ETrue;
- iClipSharingController->iConnectionEstablished = ETrue;
- iClipSharingController->iManualAddressTyped = EFalse;
-
- iClipSharingController->CancelInvitationL();
- EUNIT_ASSERT( iClipSharingController->iSession->iInvited );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleExitL );
-
-
- // No connection cancel
- iClipSharingController->iSession->iInvited = ETrue;
- iClipSharingController->iConnectionEstablished = EFalse;
- iClipSharingController->iManualAddressTyped = EFalse;
-
- iClipSharingController->CancelInvitationL();
- EUNIT_ASSERT( !iClipSharingController->iSession->iInvited );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleExitL );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_HandleCommandLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_PlayingL()
- {
- iClipSharingController->iPlaying = ETrue;
- EUNIT_ASSERT( iClipSharingController->Playing() );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SetFileNameLL()
- {
- _LIT( KRes, "filename" );
- delete iClipSharingController->iFileName;
- iClipSharingController->SetFileNameL( KRes );
- EUNIT_ASSERT( iClipSharingController->iFileName->Des().Compare( KRes ) == 0 );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_ClipEndedL()
- {
- iClipSharingController->iClipEnded = ETrue;
- EUNIT_ASSERT( iClipSharingController->ClipEnded() );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_ZoomInLL()
- {
- iClipSharingController->ZoomInL();
- EUNIT_ASSERT( ETrue );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_ZoomOutLL()
- {
- iClipSharingController->ZoomOutL();
- EUNIT_ASSERT( ETrue );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SplitLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_ShowErrorDialogL()
- {
- iClipSharingObserverAdapter->iErrorCode = KErrNone;
- iClipSharingController->ShowErrorDialog( 1 );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EShowErrorDialogL );
-
- iClipSharingObserverAdapter->iErrorCode = KErrNone;
- iClipSharingObserverAdapter->iShowErrorDialogErrorCode = KErrArgument;
- iClipSharingController->ShowErrorDialog( 1 );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleError );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_DismissWaitDialogL()
- {
- iClipSharingObserverAdapter->iErrorCode = KErrNone;
- iClipSharingController->DismissWaitDialog();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EDismissWaitDialogL );
-
- iClipSharingObserverAdapter->iErrorCode = KErrArgument;
- iClipSharingController->DismissWaitDialog();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleError );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iError == KErrArgument );
- }
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_EndOfClipL()
- {
- iClipSharingController->iClipEnded = EFalse;
- iClipSharingController->EndOfClip();
- EUNIT_ASSERT( iClipSharingController->iClipEnded );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionRejectedL()
- {
- iClipSharingController->SessionRejected();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleExitL );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionBadRequestL()
- {
- iClipSharingController->SessionBadRequest();
- EUNIT_ASSERT( ETrue );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionUnauthorizedL()
- {
- iClipSharingController->SessionUnauthorized();
- EUNIT_ASSERT( ETrue );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionPaymentRequiredL()
- {
- iClipSharingController->SessionPaymentRequired();
- EUNIT_ASSERT( ETrue );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionRecipientNotFoundL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionProxyAuthenticationRequiredL()
- {
- iClipSharingController->SessionProxyAuthenticationRequired();
- EUNIT_ASSERT( ETrue );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionRequestTimeOutL()
- {
- iClipSharingController->SessionRequestTimeOut();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleExitL );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionUnsupportedMediaTypeL()
- {
- iClipSharingController->SessionUnsupportedMediaType();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleExitL );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionRequestCancelledL()
- {
- iClipSharingController->SessionRequestCancelled();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleExitL );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionEstablishedL()
- {
- iClipSharingController->SessionEstablished();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EShowClipSharingPanesL );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionTerminatedL()
- {
- iClipSharingController->SessionTerminated();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleExitL );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionConnectionLostL()
- {
- iClipSharingController->SessionConnectionLost();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleExitL );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionFailedL()
- {
- iClipSharingController->SessionFailed();
- EUNIT_ASSERT( ETrue );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_StreamIdleL()
- {
- iClipSharingController->StreamIdle();
- EUNIT_ASSERT( ETrue );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_StreamStreamingL()
- {
- iClipSharingController->StreamStreaming();
- EUNIT_ASSERT( ETrue );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_SessionTimeChangedL()
- {
- iClipSharingController->SessionTimeChanged( TTimeIntervalSeconds( 1 ) );
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EUpdateSessionTime );
- }
-
-
-void UT_CMusUiClipSharingController::UT_CMusUiClipSharingController_InactivityTimeoutL()
- {
- iClipSharingController->InactivityTimeout();
- EUNIT_ASSERT( iClipSharingObserverAdapter->iCalledObserver == CMusUiClipSharingObserverAdapter::EHandleExitL );
- }
-
-
-
-
-// TEST TABLE
-
-EUNIT_BEGIN_TEST_TABLE(
- UT_CMusUiClipSharingController,
- "UT_CMusUiClipSharingController",
- "UNIT" )
-
-EUNIT_TEST(
- "StartInvitationL - test ",
- "CMusUiClipSharingController",
- "StartInvitationL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_StartInvitationLL, Teardown)
-
-EUNIT_TEST(
- "AddressFoundL - test ",
- "CMusUiClipSharingController",
- "AddressFoundL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_AddressFoundLL, Teardown)
-
-EUNIT_TEST(
- "InviteL - test ",
- "CMusUiClipSharingController",
- "InviteL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_InviteLL, Teardown)
-
-EUNIT_TEST(
- "InviteL2 - test ",
- "CMusUiClipSharingController",
- "InviteL2",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_InviteL2L, Teardown)
-
-EUNIT_TEST(
- "SetRect - test ",
- "CMusUiClipSharingController",
- "SetRect",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SetRectL, Teardown)
-
-EUNIT_TEST(
- "CancelInvitationL - test ",
- "CMusUiClipSharingController",
- "CancelInvitationL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_CancelInvitationLL, Teardown)
-
-EUNIT_TEST(
- "HandleCommandL - test ",
- "CMusUiClipSharingController",
- "HandleCommandL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_HandleCommandLL, Teardown)
-
-EUNIT_TEST(
- "Playing - test ",
- "CMusUiClipSharingController",
- "Playing",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_PlayingL, Teardown)
-
-EUNIT_TEST(
- "SetFileNameL - test ",
- "CMusUiClipSharingController",
- "SetFileNameL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SetFileNameLL, Teardown)
-
-EUNIT_TEST(
- "ClipEnded - test ",
- "CMusUiClipSharingController",
- "ClipEnded",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_ClipEndedL, Teardown)
-
-EUNIT_TEST(
- "ZoomInL - test ",
- "CMusUiClipSharingController",
- "ZoomInL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_ZoomInLL, Teardown)
-
-EUNIT_TEST(
- "ZoomOutL - test ",
- "CMusUiClipSharingController",
- "ZoomOutL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_ZoomOutLL, Teardown)
-
-EUNIT_TEST(
- "SplitL - test ",
- "CMusUiClipSharingController",
- "SplitL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SplitLL, Teardown)
-
-EUNIT_TEST(
- "ShowErrorDialog - test ",
- "CMusUiClipSharingController",
- "ShowErrorDialog",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_ShowErrorDialogL, Teardown)
-
-EUNIT_TEST(
- "DismissWaitDialog - test ",
- "CMusUiClipSharingController",
- "DismissWaitDialog",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_DismissWaitDialogL, Teardown)
-
-EUNIT_TEST(
- "EndOfClip - test ",
- "CMusUiClipSharingController",
- "EndOfClip",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_EndOfClipL, Teardown)
-
-EUNIT_TEST(
- "SessionRejected - test ",
- "CMusUiClipSharingController",
- "SessionRejected",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionRejectedL, Teardown)
-
-EUNIT_TEST(
- "SessionBadRequest - test ",
- "CMusUiClipSharingController",
- "SessionBadRequest",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionBadRequestL, Teardown)
-
-EUNIT_TEST(
- "SessionUnauthorized - test ",
- "CMusUiClipSharingController",
- "SessionUnauthorized",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionUnauthorizedL, Teardown)
-
-EUNIT_TEST(
- "SessionPaymentRequired - test ",
- "CMusUiClipSharingController",
- "SessionPaymentRequired",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionPaymentRequiredL, Teardown)
-
-EUNIT_TEST(
- "SessionRecipientNotFound - test ",
- "CMusUiClipSharingController",
- "SessionRecipientNotFound",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionRecipientNotFoundL, Teardown)
-
-EUNIT_TEST(
- "SessionProxyAuthenticationRequired - test ",
- "CMusUiClipSharingController",
- "SessionProxyAuthenticationRequired",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionProxyAuthenticationRequiredL, Teardown)
-
-EUNIT_TEST(
- "SessionRequestTimeOut - test ",
- "CMusUiClipSharingController",
- "SessionRequestTimeOut",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionRequestTimeOutL, Teardown)
-
-EUNIT_TEST(
- "SessionUnsupportedMediaType - test ",
- "CMusUiClipSharingController",
- "SessionUnsupportedMediaType",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionUnsupportedMediaTypeL, Teardown)
-
-EUNIT_TEST(
- "SessionRequestCancelled - test ",
- "CMusUiClipSharingController",
- "SessionRequestCancelled",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionRequestCancelledL, Teardown)
-
-EUNIT_TEST(
- "SessionEstablished - test ",
- "CMusUiClipSharingController",
- "SessionEstablished",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionEstablishedL, Teardown)
-
-EUNIT_TEST(
- "SessionTerminated - test ",
- "CMusUiClipSharingController",
- "SessionTerminated",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionTerminatedL, Teardown)
-
-EUNIT_TEST(
- "SessionConnectionLost - test ",
- "CMusUiClipSharingController",
- "SessionConnectionLost",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionConnectionLostL, Teardown)
-
-EUNIT_TEST(
- "SessionFailed - test ",
- "CMusUiClipSharingController",
- "SessionFailed",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionFailedL, Teardown)
-
-EUNIT_TEST(
- "StreamIdle - test ",
- "CMusUiClipSharingController",
- "StreamIdle",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_StreamIdleL, Teardown)
-
-EUNIT_TEST(
- "StreamStreaming - test ",
- "CMusUiClipSharingController",
- "StreamStreaming",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_StreamStreamingL, Teardown)
-
-EUNIT_TEST(
- "SessionTimeChanged - test ",
- "CMusUiClipSharingController",
- "SessionTimeChanged",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_SessionTimeChangedL, Teardown)
-
-EUNIT_TEST(
- "InactivityTimeout - test ",
- "CMusUiClipSharingController",
- "InactivityTimeout",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiClipSharingController_InactivityTimeoutL, Teardown)
-
-EUNIT_END_TEST_TABLE
-
-// END OF FILE
--- a/mmsharing/mmshui/tsrc/ut_ui/src/ut_musuidllmain.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-// USER INCLUDES
-#include "ut_musuiclipsharingcontroller.h"
-#include "ut_musuieventcontroller.h"
-#include "ut_musuilivesharingcontroller.h"
-#include "ut_musuipropertywatch.h"
-#include "ut_musuireceivecontroller.h"
-#include "ut_musuistartcontroller.h"
-
-// SYSTEM INCLUDES
-#include <digia/eunit/ceunittestsuite.h>
-
-
-// -----------------------------------------------------------------------------
-// Test suite factory function.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C MEUnitTest* CreateTestSuiteL()
- {
-
- CEUnitTestSuite* rootSuite = CEUnitTestSuite::NewLC( _L( "Main suite" ) );
-
- //rootSuite->AddL( UT_MusEngMceUtils::NewLC() );
- //CleanupStack::Pop();
-
- rootSuite->AddL( UT_CMusUiClipSharingController::NewLC() );
- CleanupStack::Pop();
-
- rootSuite->AddL( UT_CMusUiEventController::NewLC() );
- CleanupStack::Pop();
-
- rootSuite->AddL( UT_CMusUiLiveSharingController::NewLC() );
- CleanupStack::Pop();
-
- rootSuite->AddL( UT_CMusUiPropertyWatch::NewLC() );
- CleanupStack::Pop();
-
- rootSuite->AddL( UT_CMusUiReceiveController::NewLC() );
- CleanupStack::Pop();
-
- rootSuite->AddL( UT_CMusUiStartController::NewLC() );
- CleanupStack::Pop();
-
- CleanupStack::Pop( rootSuite );
-
- return rootSuite;
- }
--- a/mmsharing/mmshui/tsrc/ut_ui/src/ut_musuieventcontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,761 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-
-// INTERNAL INCLUDES
-#include "ut_musuieventcontroller.h"
-#include "musuieventcontroller.h"
-#include "musuilivesharingcontroller.h"
-
-#include "musuilivesharingobserveradapter.h"
-#include "musuieventobserveradapter.h"
-
-#include "musresourceproperties.h"
-#include "mussessionproperties.h"
-#include "musuidefinitions.h"
-#include "musenglivesession.h"
-#include "mussettings.h"
-
-
-#include <e32property.h>
-#include <fbs.h>
-#include <stringloader.h>
-
-//#include "musestubs.h"
-//#include "musengtestdefs.h"
-
-// SYSTEM INCLUDES
-#include <digia/eunit/eunitmacros.h>
-//#include <centralrepository.h>
-//#include <mcedisplaysink.h>
-
-using namespace NMusSessionApi;
-
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiEventController* UT_CMusUiEventController::NewL()
- {
- UT_CMusUiEventController* self = UT_CMusUiEventController::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiEventController* UT_CMusUiEventController::NewLC()
- {
- UT_CMusUiEventController* self = new( ELeave ) UT_CMusUiEventController();
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiEventController::~UT_CMusUiEventController()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Default constructor
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiEventController::UT_CMusUiEventController()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Second phase construct
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiEventController::ConstructL()
- {
- // The ConstructL from the base class CEUnitTestSuiteClass must be called.
- // It generates the test case table.
- CEUnitTestSuiteClass::ConstructL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiEventController::SetupL()
- {
- _LIT( KPath, "\\private\\1000af5a\\" );
- iVideoFolder = KPath().AllocL();
-
- //MultimediaSharingSettings::iVideoFolder = iVideoFolder;
- MultimediaSharingSettings::iAutoRecord = MusSettingsKeys::EAutoRecordOff;
- MultimediaSharingSettings::iVideoLocation = 2;
-
- _LIT( KReturn, "savedfilename" );
- _iReturnValue = KReturn().AllocL();
- StringLoader::iReturnValue = _iReturnValue;
-
-
- iEventObserver = new (ELeave) CMusUiEventObserverAdapter();
- EUNIT_ASSERT( iEventObserver );
-
- iLiveSharingObserverAdapter = new (ELeave) CMusUiLiveSharingObserverAdapter();
- EUNIT_ASSERT( iLiveSharingObserverAdapter );
-
-
- RProperty::iIntProperty = 0;
- RProperty::iErrorCode = KErrNone;
-
-
- iLiveSharingController = CMusUiLiveSharingController::NewL( iLiveSharingObserverAdapter, TRect( 0,0,100,100));
- iEventController = static_cast<CMusUiEventController*>
- ( iLiveSharingController );
-
- EUNIT_ASSERT( iEventController );
- iEventController->SetEventObserver( iEventObserver );
- EUNIT_ASSERT( iEventController->iObserver == iEventObserver );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiEventController::Teardown()
- {
- delete iLiveSharingController;
- iEventController = NULL;
- delete iEventObserver;
- delete iLiveSharingObserverAdapter;
-
- delete iVideoFolder;
- iVideoFolder = NULL;
- //MultimediaSharingSettings::iVideoFolder = NULL;
-
- delete _iReturnValue ;
- _iReturnValue = NULL;
- // StringLoader::iReturnValue = NULL;
- //StringLoader::Cleanup();
- //MultimediaSharingSettings::Cleanup();
-
- }
-
-
-// TEST CASES
-
-void UT_CMusUiEventController::UT_CMusUiEventController_ResourcePropertyChangedL()
- {
- // test for setting status
-
- // Camera availability
- iEventController->iCameraAvailibilityInProgress = EFalse;
- iEventController->iCameraAvailable = TAvailability(1);
- iEventController->ResourcePropertyChanged( KCameraAvailability, 0 );
- EUNIT_ASSERT( iEventController->iCameraAvailable == 0 );
- EUNIT_ASSERT( iEventController->iCameraAvailibilityInProgress == EFalse );
-
- _LIT( KRes, "address" ); // Needed for fake, MUS_LOG leaves if null
- iLiveSharingController->iAddress = KRes().AllocL();
- iEventController->iCameraAvailibilityInProgress = ETrue;
- iEventController->iCameraAvailable = TAvailability(0);
- iEventController->ResourcePropertyChanged( KCameraAvailability, 1 );
- EUNIT_ASSERT( iEventController->iCameraAvailable == 1 );
- EUNIT_ASSERT( iEventController->iCameraAvailibilityInProgress == EFalse );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EShowWaitDialogL );
-
-
- // Keypad availablity
- iEventController->iKeypadAvailable = TAvailability(0);
- iEventController->ResourcePropertyChanged( KKeypadAvailability, 2 );
- EUNIT_ASSERT( iEventController->iKeypadAvailable == 2 );
-
- // Videoplayer availability
- iEventController->iVideoPlayerAvailable = TAvailability(0);
- iEventController->ResourcePropertyChanged( KVideoPlayerAvailability, 3 );
- EUNIT_ASSERT( iEventController->iVideoPlayerAvailable == 3 );
-
- //Other case
- iEventController->ResourcePropertyChanged( -99, 0 );
- EUNIT_ASSERT( iEventController->iCameraAvailable == 1 );
- EUNIT_ASSERT( iEventController->iKeypadAvailable == 2 );
- EUNIT_ASSERT( iEventController->iVideoPlayerAvailable == 3 );
-
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SessionPropertyChangedL()
- {
-
- iEventController->SessionPropertyChanged( KStatus, ESipRegistrationPending );
- EUNIT_ASSERT( iEventController->iSipRegistrationPending );
-
- // TODO: Cannot test UpdateContactL it leaves CleanupStack::PopAndDestroy function
- // Need to do changes on code
- iEventController->SessionPropertyChanged( KContactId, 0 );
-
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SessionPropertyChanged2L()
- {
- // TODO: Is this functions alive?
- // EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_HandleErrorL()
- {
-
- iEventController->HandleError( KErrUnknown );
- EUNIT_ASSERT( iEventObserver->iCalledObserver == CMusUiEventObserverAdapter::EHandleError );
- EUNIT_ASSERT( iEventObserver->iHandleErrorReason == KErrUnknown );
-
- }
-
-void UT_CMusUiEventController::UT_CMusUiEventController_UpdateBitmapL()
- {
- delete iEventController->iContactBitmap;
- iEventController->iContactBitmap = NULL;
- CFbsBitmap* bitmap = new (ELeave) CFbsBitmap();
- iEventController->UpdateBitmap( bitmap );
- EUNIT_ASSERT( iEventController->iContactBitmap == bitmap );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SetEventObserverL()
- {
- // Tested in SetupL();
- EUNIT_ASSERT( ETrue );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_HandleForegroundEventLL()
- {
- // Initalization
- iLiveSharingController->iConnectionEstablished = ETrue; // Need for testing
- iLiveSharingObserverAdapter->iErrorCode = KErrNone;
-
- // Enable display
- iEventController->HandleForegroundEventL( ETrue );
- EUNIT_ASSERT( iLiveSharingController->iSession->iDisplayEnabled );
- EUNIT_ASSERT( iLiveSharingController->iSession->iPlaying );
- EUNIT_ASSERT( iEventController->iPlaying );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EShowNaviPaneIconL );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iIcon == EMusUiNaviIconPlay );
-
- // Disable display
- iEventController->HandleForegroundEventL( EFalse );
- EUNIT_ASSERT( !iLiveSharingController->iSession->iDisplayEnabled );
- EUNIT_ASSERT( !iLiveSharingController->iSession->iPlaying );
- EUNIT_ASSERT( !iEventController->iPlaying );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EShowNaviPaneIconL );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iIcon == EMusUiNaviIconPause );
-
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SetCameraStatusL()
- {
- iEventController->iCameraAvailable = TAvailability( 0 );
- iEventController->SetCameraStatus( TAvailability( 2 ) );
- EUNIT_ASSERT( iEventController->iCameraAvailable == 2 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SetKeypadStatusL()
- {
- iEventController->iKeypadAvailable = TAvailability(0);
- iEventController->SetKeypadStatus( TAvailability( 2 ) );
- EUNIT_ASSERT( iEventController->iKeypadAvailable == 2 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SetVideoPlayerStatusL()
- {
- iEventController->iVideoPlayerAvailable = TAvailability(0);
- iEventController->SetVideoPlayerStatus( TAvailability( 3 ) );
- EUNIT_ASSERT( iEventController->iVideoPlayerAvailable == 3 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SetCameraAvailabilityInProgressL()
- {
- iEventController->iCameraAvailibilityInProgress = 0;
- iEventController->SetCameraAvailabilityInProgress( 1 );
- EUNIT_ASSERT( iEventController->iCameraAvailibilityInProgress == 1 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_CameraAvailableL()
- {
- iEventController->iCameraAvailable = TAvailability( 2 );
- EUNIT_ASSERT( iEventController->CameraAvailable() == 2 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_KeypadAvailableL()
- {
- iEventController->iKeypadAvailable = TAvailability( 2 );
- EUNIT_ASSERT( iEventController->KeypadAvailable() == 2 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_VideoPlayerAvailableL()
- {
- iEventController->iVideoPlayerAvailable = TAvailability( 2 );
- EUNIT_ASSERT( iEventController->VideoPlayerAvailable() == 2 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_CameraAvailibilityInProgressL()
- {
- iEventController->iCameraAvailibilityInProgress = 1;
- EUNIT_ASSERT( iEventController->CameraAvailibilityInProgress() == 1 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_MusRemoteSipAddressValueL()
- {
- _LIT( KRes, "remote_address");
- delete iEventController->iRemoteSipAddress;
- iEventController->iRemoteSipAddress = KRes().AllocL();
- EUNIT_ASSERT( iEventController->MusRemoteSipAddressValue().Compare( KRes ) == 0 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_MusProposalAddressValueL()
- {
- _LIT( KRes, "remote_address");
- delete iEventController->iRemoteSipAddressProposal;
- iEventController->iRemoteSipAddressProposal = KRes().AllocL();
- EUNIT_ASSERT( iEventController->MusProposalAddressValue().Compare( KRes ) == 0 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_MusContactNameL()
- {
- _LIT( KRes, "remote_address");
- delete iEventController->iContactName;
- iEventController->iContactName = KRes().AllocL();
- EUNIT_ASSERT( iEventController->MusContactName().Compare( KRes ) == 0 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_MusContactBitmapL()
- {
- delete iEventController->iContactBitmap;
- iEventController->iContactBitmap = new (ELeave) CFbsBitmap();
- EUNIT_ASSERT( iEventController->MusContactBitmap() == iEventController->iContactBitmap );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_MusVideoCodecValueL()
- {
- _LIT( KRes, "codec_value");
- delete iEventController->iVideoCodec;
- iEventController->iVideoCodec = KRes().AllocL();
- EUNIT_ASSERT( iEventController->MusVideoCodecValue().Compare( KRes ) == 0 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_MusTelNumberValueL()
- {
- _LIT( KRes, "telnumber");
- delete iEventController->iTelNumber;
- iEventController->iTelNumber = KRes().AllocL();
- EUNIT_ASSERT( iEventController->MusTelNumberValue().Compare( KRes ) == 0 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SipProfileIdL()
- {
- iEventController->iSipProfileId = 99;
- EUNIT_ASSERT( iEventController->SipProfileId() == 99 );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SipRegistrationPendingL()
- {
-
- iEventController->iSipRegistrationPending = ETrue;
- EUNIT_ASSERT( iEventController->SipRegistrationPending() );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SessionTimeFormattedL()
- {
-
- // Localized time format like "00:00:00"
-
- //TLocale locale;
- //locale.TimeSeparator( 2 )
-
- //EUNIT_ASSERT( iEventController->MusTelNumberValue().Compare( iEventController->iTelNumber->Des() ) );
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_SaveContactL()
- {
-
- //iEventController->iContactId = TContactItemId( 1 );
-
- //iEventController->SaveContact();
- //EUNIT_ASSERT( iEventObserver->iActivatedContactId == TContactItemId( 1 ) );
-
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_HandleExitLL()
- {
-
-
-
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_InspectKeypadLL()
- {
-
- // Initalize
- iLiveSharingObserverAdapter->iErrorCode = KErrNone;
- iEventObserver->iErrorCode = KErrNone;
-
-
- // Basic case cannot test, nothing changes
- // iEventController->iKeypadAvailable = EAvailable;
- // iEventController->InspectKeypadL();
-
-
- // case EAvailableInLandscapeOrientation
- iEventController->iKeypadAvailable = EAvailableInLandscapeOrientation;
- iEventController->InspectKeypadL();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EChangeOrientationL );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iOrientation == CAknAppUiBase::EAppUiOrientationLandscape );
-
-
- // case EAvailableInPortraitOrientation
- iEventController->iKeypadAvailable = EAvailableInPortraitOrientation;
- iEventController->InspectKeypadL();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EChangeOrientationL );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iOrientation == CAknAppUiBase::EAppUiOrientationPortrait );
-
- // case ENotDefined
- iEventController->iKeypadAvailable = ENotDefined;
- iEventController->InspectKeypadL();
- EUNIT_ASSERT( iEventObserver->iCalledObserver == CMusUiEventObserverAdapter::EHandleExitL );
-
- // case ENotAvailable
- iEventController->iKeypadAvailable = ENotAvailable;
- iEventController->InspectKeypadL();
- EUNIT_ASSERT( iEventObserver->iCalledObserver == CMusUiEventObserverAdapter::EHandleExitL );
-
-
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_UpdateContactLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_UpdateContactNameL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_UpdateContactPictureLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-void UT_CMusUiEventController::UT_CMusUiEventController_HandleChangedStatusLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-
-// TEST TABLE
-
-EUNIT_BEGIN_TEST_TABLE(
- UT_CMusUiEventController,
- "UT_CMusUiEventController",
- "UNIT" )
-
-EUNIT_TEST(
- "ResourcePropertyChangedL - test ",
- "CMusUiEventController",
- "ResourcePropertyChangedL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_ResourcePropertyChangedL, Teardown)
-
-EUNIT_TEST(
- "SessionPropertyChangedL - test ",
- "CMusUiEventController",
- "SessionPropertyChangedL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SessionPropertyChangedL, Teardown)
-
-EUNIT_TEST(
- "HandleError - test ",
- "CMusUiEventController",
- "HandleError",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_HandleErrorL, Teardown)
-
-EUNIT_TEST(
- "UpdateBitmap - test ",
- "CMusUiEventController",
- "UpdateBitmap",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_UpdateBitmapL, Teardown)
-
-EUNIT_TEST(
- "SetEventObserver - test ",
- "CMusUiEventController",
- "SetEventObserver",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SetEventObserverL, Teardown)
-
-EUNIT_TEST(
- "HandleForegroundEventL - test ",
- "CMusUiEventController",
- "HandleForegroundEventL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_HandleForegroundEventLL, Teardown)
-
-EUNIT_TEST(
- "SetCameraStatus - test ",
- "CMusUiEventController",
- "SetCameraStatus",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SetCameraStatusL, Teardown)
-
-EUNIT_TEST(
- "SetKeypadStatus - test ",
- "CMusUiEventController",
- "SetKeypadStatus",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SetKeypadStatusL, Teardown)
-
-EUNIT_TEST(
- "SetVideoPlayerStatus - test ",
- "CMusUiEventController",
- "SetVideoPlayerStatus",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SetVideoPlayerStatusL, Teardown)
-
-EUNIT_TEST(
- "SetCameraAvailabilityInProgress - test ",
- "CMusUiEventController",
- "SetCameraAvailabilityInProgress",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SetCameraAvailabilityInProgressL, Teardown)
-
-EUNIT_TEST(
- "EnableLoudspeaker - test ",
- "CMusUiEventController",
- "EnableLoudspeaker",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SetCameraStatusL, Teardown)
-
-EUNIT_TEST(
- "CameraAvailable - test ",
- "CMusUiEventController",
- "CameraAvailable",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_CameraAvailableL, Teardown)
-
-EUNIT_TEST(
- "KeypadAvailable - test ",
- "CMusUiEventController",
- "KeypadAvailable",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_KeypadAvailableL, Teardown)
-
-EUNIT_TEST(
- "VideoPlayerAvailable - test ",
- "CMusUiEventController",
- "VideoPlayerAvailable",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_VideoPlayerAvailableL, Teardown)
-
-EUNIT_TEST(
- "CameraAvailibilityInProgress - test ",
- "CMusUiEventController",
- "CameraAvailibilityInProgress",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_CameraAvailibilityInProgressL, Teardown)
-
-EUNIT_TEST(
- "MusRemoteSipAddressValue - test ",
- "CMusUiEventController",
- "MusRemoteSipAddressValue",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_MusRemoteSipAddressValueL, Teardown)
-
-EUNIT_TEST(
- "MusProposalAddressValue - test ",
- "CMusUiEventController",
- "MusProposalAddressValue",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_MusProposalAddressValueL, Teardown)
-
-EUNIT_TEST(
- "MusContactName - test ",
- "CMusUiEventController",
- "MusContactName",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_MusContactNameL, Teardown)
-
-EUNIT_TEST(
- "EnableLoudspeakerL - test ",
- "CMusUiEventController",
- "EnableLoudspeakerL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SetCameraStatusL, Teardown)
-
-EUNIT_TEST(
- "MusContactBitmap - test ",
- "CMusUiEventController",
- "MusContactBitmap",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_MusContactBitmapL, Teardown)
-
-EUNIT_TEST(
- "MusVideoCodecValue - test ",
- "CMusUiEventController",
- "MusVideoCodecValue",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_MusVideoCodecValueL, Teardown)
-
-EUNIT_TEST(
- "MusTelNumberValue - test ",
- "CMusUiEventController",
- "MusTelNumberValue",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_MusTelNumberValueL, Teardown)
-
-EUNIT_TEST(
- "SipProfileId - test ",
- "CMusUiEventController",
- "SipProfileId",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SipProfileIdL, Teardown)
-
-EUNIT_TEST(
- "SipRegistrationPending - test ",
- "CMusUiEventController",
- "SipRegistrationPending",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SipRegistrationPendingL, Teardown)
-
-EUNIT_TEST(
- "SessionTimeFormatted - test ",
- "CMusUiEventController",
- "SessionTimeFormatted",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SessionTimeFormattedL, Teardown)
-
-EUNIT_TEST(
- "EnableLoudspeakerL - test ",
- "CMusUiEventController",
- "EnableLoudspeakerL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SetCameraStatusL, Teardown)
-
-EUNIT_TEST(
- "SaveContact - test ",
- "CMusUiEventController",
- "SaveContact",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SaveContactL, Teardown)
-
-EUNIT_TEST(
- "SetCameraStatus - test ",
- "CMusUiEventController",
- "SetCameraStatus",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_SetCameraStatusL, Teardown)
-
-EUNIT_TEST(
- "HandleExitL - test ",
- "CMusUiEventController",
- "HandleExitL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_HandleExitLL, Teardown)
-
-
-EUNIT_TEST(
- "InspectKeypadL - test ",
- "CMusUiEventController",
- "InspectKeypadL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_InspectKeypadLL, Teardown)
-
-EUNIT_TEST(
- "UpdateContactL - test ",
- "CMusUiEventController",
- "UpdateContactL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_UpdateContactLL, Teardown)
-
-EUNIT_TEST(
- "UpdateContactName - test ",
- "CMusUiEventController",
- "UpdateContactName",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_UpdateContactNameL, Teardown)
-
-EUNIT_TEST(
- "UpdateContactPictureL - test ",
- "CMusUiEventController",
- "UpdateContactPictureL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_UpdateContactPictureLL, Teardown)
-
-EUNIT_TEST(
- "HandleChangedStatusL - test ",
- "CMusUiEventController",
- "HandleChangedStatusL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiEventController_HandleChangedStatusLL, Teardown)
-
-EUNIT_END_TEST_TABLE
-
-
-// END OF FILE
--- a/mmsharing/mmshui/tsrc/ut_ui/src/ut_musuilivesharingcontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,888 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-
-// INTERNAL INCLUDES
-#include "ut_musuilivesharingcontroller.h"
-#include "musuilivesharingcontroller.h"
-#include "musuilivesharingobserveradapter.h"
-//#include "musestubs.h"
-//#include "musengtestdefs.h"
-#include "musuieventobserveradapter.h"
-#include "musuidefinitions.h"
-#include <musenglivesession.h>
-
-// SYSTEM INCLUDES
-#include <digia/eunit/eunitmacros.h>
-#include <e32property.h>
-
-//#include <centralrepository.h>
-//#include <mcedisplaysink.h>
-
-using namespace NMusResourceApi;
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiLiveSharingController* UT_CMusUiLiveSharingController::NewL()
- {
- UT_CMusUiLiveSharingController* self = UT_CMusUiLiveSharingController::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiLiveSharingController* UT_CMusUiLiveSharingController::NewLC()
- {
- UT_CMusUiLiveSharingController* self = new( ELeave ) UT_CMusUiLiveSharingController();
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiLiveSharingController::~UT_CMusUiLiveSharingController()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Default constructor
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Second phase construct
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::ConstructL()
- {
- // The ConstructL from the base class CEUnitTestSuiteClass must be called.
- // It generates the test case table.
- CEUnitTestSuiteClass::ConstructL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::SetupL()
- {
-
- iEventObserver = new (ELeave) CMusUiEventObserverAdapter();
- EUNIT_ASSERT( iEventObserver );
-
- iLiveSharingObserverAdapter = new (ELeave) CMusUiLiveSharingObserverAdapter();
- EUNIT_ASSERT( iLiveSharingObserverAdapter );
-
-
- RProperty::iIntProperty = 0;
- RProperty::iErrorCode = KErrNone;
-
-
- iLiveSharingController = CMusUiLiveSharingController::NewL( iLiveSharingObserverAdapter, TRect( 0,0,100,100));
- iEventController = static_cast<CMusUiEventController*>
- ( iLiveSharingController );
-
- EUNIT_ASSERT( iEventController );
- iEventController->SetEventObserver( iEventObserver );
- EUNIT_ASSERT( iEventController->iObserver == iEventObserver );
-
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::Teardown()
- {
- delete iLiveSharingController;
- iEventController = NULL;
- delete iEventObserver;
- delete iLiveSharingObserverAdapter;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_StartInvitationLL()
- {
-
- //iLiveSharingController->StartInvitationL();
- //EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleAsyncEventL );
- //EUNIT_ASSERT( iLiveSharingObserverAdapter->iHandleAsyncEventId == EMusUiAsyncStartInvitation );
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_AddressFoundLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_InviteLL()
- {
-
- // Precondititions
- iLiveSharingObserverAdapter->iErrorCode = KErrNone;
- iEventController->iCameraAvailable = EAvailable;
- iEventController->iSipRegistrationPending = EFalse;
-
- // sip address length > 0 and no separator
- _LIT( KRes, "address" );
- delete iEventController->iRemoteSipAddress;
- iEventController->iRemoteSipAddress = KRes().AllocL();
- iLiveSharingController->InviteL();
-
- EUNIT_ASSERT( iLiveSharingController->iSession->iInvited );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EShowWaitDialogL );
-
-
- // sip address length > 0 and separator
- _LIT( KRes2, "Address1, Address2, Address3" );
- delete iEventController->iRemoteSipAddress;
- iEventController->iRemoteSipAddress = KRes2().AllocL();
- iLiveSharingController->iSession->iInvited = EFalse;
- iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::ENone;
-
- iLiveSharingController->InviteL();
- EUNIT_ASSERT( iLiveSharingController->iSession->iInvited );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EShowWaitDialogL );
-
-
- // sip addres length = 0
- _LIT( KRes3, "" );
- delete iEventController->iRemoteSipAddress;
- iEventController->iRemoteSipAddress = KRes3().AllocL();
- iLiveSharingController->iSession->iInvited = EFalse;
- iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::ENone;
-
- iLiveSharingController->InviteL();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EManualAddressEntryL );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_InviteL2L()
- {
- // Precondititions
- iLiveSharingObserverAdapter->iErrorCode = KErrNone;
-
- // registration not pending and triedinvitations > 1
- iEventController->iSipRegistrationPending = EFalse;
- iLiveSharingController->iSession->iInvited = EFalse;
- iLiveSharingController->iManualAddressTyped = EFalse;
- iLiveSharingController->iTriedInvitations = 2;
-
- _LIT( KRes, "address" );
- iLiveSharingController->InviteL( KRes );
- EUNIT_ASSERT( iLiveSharingController->iSession->iInvited );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EShowWaitDialogL );
-
-
- // registration not pending and triedinvitations > 1
- iLiveSharingController->iSession->iErrorCode = KErrArgument;
-
- iEventController->iSipRegistrationPending = EFalse;
- iLiveSharingController->iSession->iInvited = EFalse;
- iLiveSharingController->iManualAddressTyped = EFalse;
- iLiveSharingController->iTriedInvitations = 2;
-
- iLiveSharingController->InviteL( KRes );
- EUNIT_ASSERT( iLiveSharingController->iSession->iInvited );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
-
-
- // registration not pending and triedinvitations = 0
- iLiveSharingController->iSession->iErrorCode = KErrArgument;
-
- iEventController->iSipRegistrationPending = EFalse;
- iLiveSharingController->iSession->iInvited = EFalse;
- iLiveSharingController->iManualAddressTyped = EFalse;
- iLiveSharingController->iTriedInvitations = 0;
-
- _LIT( KProposal, "proposal_address" );
- delete iEventController->iRemoteSipAddressProposal;
- iEventController->iRemoteSipAddressProposal = KProposal().AllocL();
-
- // Manual address entry
- iLiveSharingController->InviteL( KRes );
- EUNIT_ASSERT( iLiveSharingController->iSession->iInvited );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EShowWaitDialogL );
- EUNIT_ASSERT( iLiveSharingController->iTriedInvitations == 1 );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iAddress->Des().Compare( KProposal ) == 0 );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SetRectL()
- {
-
- TRect rect = TRect( 0,0, 100,100 );
-
- iLiveSharingController->iSession->iErrorCode = KErrArgument;
- iLiveSharingController->SetRect( rect );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleError );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iError == KErrArgument );
-
- iLiveSharingController->iSession->iErrorCode = KErrNone;
- iLiveSharingController->SetRect( rect );
- EUNIT_ASSERT( iLiveSharingController->iSession->iRect == iLiveSharingController->CenteredRect( rect ) );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_CancelInvitationLL()
- {
-
- // Connection established cancel
- iLiveSharingController->iSession->iInvited = ETrue;
- iLiveSharingController->iConnectionEstablished = ETrue;
- iLiveSharingController->iManualAddressTyped = EFalse;
-
- iLiveSharingController->CancelInvitationL();
- EUNIT_ASSERT( iLiveSharingController->iSession->iInvited );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
-
-
- // No connection cancel
- iLiveSharingController->iSession->iInvited = ETrue;
- iLiveSharingController->iConnectionEstablished = EFalse;
- iLiveSharingController->iManualAddressTyped = EFalse;
-
- iLiveSharingController->CancelInvitationL();
- EUNIT_ASSERT( !iLiveSharingController->iSession->iInvited );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_HandleCommandLL()
- {
- // TODO:
-
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_PlayingL()
- {
- iLiveSharingController->iPlaying = ETrue;
- EUNIT_ASSERT( iLiveSharingController->Playing() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_CurrentZoomLL()
- {
- iLiveSharingController->iSession->iCurrentZoom = 14;
- EUNIT_ASSERT( iLiveSharingController->CurrentZoomL() == 14 );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_MinZoomLL()
- {
- iLiveSharingController->iSession->iCurrentZoom = 13;
- EUNIT_ASSERT( iLiveSharingController->CurrentZoomL() == 13 );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_MaxZoomLL()
- {
- iLiveSharingController->iSession->iCurrentZoom = 12;
- EUNIT_ASSERT( iLiveSharingController->CurrentZoomL() == 12 );
- }
-
-//private: // new functions:
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_CenteredRectL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_ZoomInLL()
- {
- iLiveSharingController->iSession->iCurrentZoom = 12;
- EUNIT_ASSERT( iLiveSharingController->CurrentZoomL() == 13 );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_ZoomOutLL()
- {
- iLiveSharingController->iSession->iCurrentZoom = 12;
- EUNIT_ASSERT( iLiveSharingController->CurrentZoomL() == 11 );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SplitLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_ShowErrorDialogL()
- {
- iLiveSharingObserverAdapter->iErrorCode = KErrNone;
- iLiveSharingController->ShowErrorDialog( 1 );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EShowErrorDialogL );
-
- iLiveSharingObserverAdapter->iErrorCode = KErrNone;
- iLiveSharingObserverAdapter->iShowErrorDialogErrorCode = KErrArgument;
- iLiveSharingController->ShowErrorDialog( 1 );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleError );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_DismissWaitDialogL()
- {
- iLiveSharingObserverAdapter->iErrorCode = KErrNone;
- iLiveSharingController->DismissWaitDialog();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EDismissWaitDialogL );
-
- iLiveSharingObserverAdapter->iErrorCode = KErrArgument;
- iLiveSharingController->DismissWaitDialog();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleError );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iError == KErrArgument );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionRejectedL()
- {
- iLiveSharingController->SessionRejected();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
- } // e.g. 603 DECLINE
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionBadRequestL()
- {
- iLiveSharingController->SessionBadRequest();
- EUNIT_ASSERT( ETrue );
- } // 400
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionUnauthorizedL()
- {
- iLiveSharingController->SessionUnauthorized();
- EUNIT_ASSERT( ETrue );
- } // 401
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionPaymentRequiredL()
- {
- iLiveSharingController->SessionPaymentRequired();
- EUNIT_ASSERT( ETrue );
- } // 402
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionRecipientNotFoundL()
- {
- EUNIT_ASSERT( EFalse );
- } // 404
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionProxyAuthenticationRequiredL()
- {
- iLiveSharingController->SessionProxyAuthenticationRequired();
- EUNIT_ASSERT( ETrue );
- } // 407
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionRequestTimeOutL()
- {
- iLiveSharingController->SessionRequestTimeOut();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
- } // 408
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionUnsupportedMediaTypeL()
- {
- iLiveSharingController->SessionUnsupportedMediaType();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
- } // 415
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionRequestCancelledL()
- {
- iLiveSharingController->SessionRequestCancelled();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
- } // 487
-
-//public: // from MMusEngSessionObserver
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionEstablishedL()
- {
-
- iLiveSharingController->SessionEstablished();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
-
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionTerminatedL()
- {
- iLiveSharingController->SessionTerminated();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionConnectionLostL()
- {
- iLiveSharingController->SessionConnectionLost();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionFailedL()
- {
- iLiveSharingController->SessionFailed();
- EUNIT_ASSERT( ETrue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_StreamIdleL()
- {
- iLiveSharingController->StreamIdle();
- EUNIT_ASSERT( ETrue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_StreamStreamingL()
- {
- iLiveSharingController->StreamStreaming();
- EUNIT_ASSERT( ETrue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_SessionTimeChangedL()
- {
- iLiveSharingController->SessionTimeChanged( TTimeIntervalSeconds( 1 ) );
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EUpdateSessionTime );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiLiveSharingController::UT_CMusUiLiveSharingController_InactivityTimeoutL()
- {
- iLiveSharingController->InactivityTimeout();
- EUNIT_ASSERT( iLiveSharingObserverAdapter->iCalledObserver == CMusUiLiveSharingObserverAdapter::EHandleExitL );
- }
-
-
-
-// TEST CASES
-
-
-// TEST TABLE
-
-EUNIT_BEGIN_TEST_TABLE(
- UT_CMusUiLiveSharingController,
- "UT_CMusUiLiveSharingController",
- "UNIT" )
-
-EUNIT_TEST(
- "StartInvitationL - test ",
- "UT_CMusUiLiveSharingController",
- "StartInvitationL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_StartInvitationLL, Teardown)
-
-EUNIT_TEST(
- "AddressFoundL - test ",
- "UT_CMusUiLiveSharingController",
- "AddressFoundL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_AddressFoundLL, Teardown)
-
-EUNIT_TEST(
- "InviteL - test ",
- "UT_CMusUiLiveSharingController",
- "InviteL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_InviteLL, Teardown)
-
-EUNIT_TEST(
- "InviteL2 - test ",
- "UT_CMusUiLiveSharingController",
- "InviteL2",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_InviteL2L, Teardown)
-
-EUNIT_TEST(
- "SetRect - test ",
- "UT_CMusUiLiveSharingController",
- "SetRect",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SetRectL, Teardown)
-
-EUNIT_TEST(
- "CancelInvitationL - test ",
- "UT_CMusUiLiveSharingController",
- "CancelInvitationL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_CancelInvitationLL, Teardown)
-
-EUNIT_TEST(
- "HandleCommandL - test ",
- "UT_CMusUiLiveSharingController",
- "HandleCommandL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_HandleCommandLL, Teardown)
-
-EUNIT_TEST(
- "PlayingL - test ",
- "UT_CMusUiLiveSharingController",
- "PlayingL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_PlayingL, Teardown)
-
-EUNIT_TEST(
- "CurrentZoomL - test ",
- "UT_CMusUiLiveSharingController",
- "CurrentZoomL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_CurrentZoomLL, Teardown)
-
-EUNIT_TEST(
- "MinZoomL - test ",
- "UT_CMusUiLiveSharingController",
- "MinZoomL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_MinZoomLL, Teardown)
-
-EUNIT_TEST(
- "MaxZoomL - test ",
- "UT_CMusUiLiveSharingController",
- "MaxZoomL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_MaxZoomLL, Teardown)
-
-EUNIT_TEST(
- "CenteredRect - test ",
- "UT_CMusUiLiveSharingController",
- "CenteredRect",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_CenteredRectL, Teardown)
-
-EUNIT_TEST(
- "ZoomInL - test ",
- "UT_CMusUiLiveSharingController",
- "ZoomInL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_ZoomInLL, Teardown)
-
-EUNIT_TEST(
- "ZoomOutL - test ",
- "UT_CMusUiLiveSharingController",
- "ZoomOutL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_ZoomOutLL, Teardown)
-
-EUNIT_TEST(
- "SplitL - test ",
- "UT_CMusUiLiveSharingController",
- "SplitL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SplitLL, Teardown)
-
-EUNIT_TEST(
- "ShowErrorDialog - test ",
- "UT_CMusUiLiveSharingController",
- "ShowErrorDialog",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_ShowErrorDialogL, Teardown)
-
-EUNIT_TEST(
- "DismissWaitDialog - test ",
- "UT_CMusUiLiveSharingController",
- "DismissWaitDialog",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_DismissWaitDialogL, Teardown)
-
-EUNIT_TEST(
- "SessionRejected - test ",
- "UT_CMusUiLiveSharingController",
- "SessionRejected",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionRejectedL, Teardown)
-
-EUNIT_TEST(
- "SessionUnauthorized - test ",
- "UT_CMusUiLiveSharingController",
- "SessionUnauthorized",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionUnauthorizedL, Teardown)
-
-EUNIT_TEST(
- "SessionPaymentRequired - test ",
- "UT_CMusUiLiveSharingController",
- "SessionPaymentRequired",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionPaymentRequiredL, Teardown)
-
-EUNIT_TEST(
- "SessionRecipientNotFound - test ",
- "UT_CMusUiLiveSharingController",
- "SessionRecipientNotFound",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionRecipientNotFoundL, Teardown)
-
-EUNIT_TEST(
- "SessionProxyAuthenticationRequired - test ",
- "UT_CMusUiLiveSharingController",
- "SessionProxyAuthenticationRequired",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionProxyAuthenticationRequiredL, Teardown)
-
-EUNIT_TEST(
- "SessionRequestTimeOut - test ",
- "UT_CMusUiLiveSharingController",
- "SessionRequestTimeOut",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionRequestTimeOutL, Teardown)
-
-EUNIT_TEST(
- "SessionUnsupportedMediaType - test ",
- "UT_CMusUiLiveSharingController",
- "SessionUnsupportedMediaType",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionUnsupportedMediaTypeL, Teardown)
-
-EUNIT_TEST(
- "SessionRequestCancelled - test ",
- "UT_CMusUiLiveSharingController",
- "SessionRequestCancelled",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionRequestCancelledL, Teardown)
-
-EUNIT_TEST(
- "SessionEstablished - test ",
- "UT_CMusUiLiveSharingController",
- "SessionEstablished",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionEstablishedL, Teardown)
-
-EUNIT_TEST(
- "SessionTerminated - test ",
- "UT_CMusUiLiveSharingController",
- "SessionTerminated",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionTerminatedL, Teardown)
-
-EUNIT_TEST(
- "SessionConnectionLost - test ",
- "UT_CMusUiLiveSharingController",
- "SessionConnectionLost",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionConnectionLostL, Teardown)
-
-EUNIT_TEST(
- "SessionFailed - test ",
- "UT_CMusUiLiveSharingController",
- "SessionFailed",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionFailedL, Teardown)
-
-EUNIT_TEST(
- "StreamIdle - test ",
- "UT_CMusUiLiveSharingController",
- "StreamIdle",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_StreamIdleL, Teardown)
-
-EUNIT_TEST(
- "StreamStreaming - test ",
- "UT_CMusUiLiveSharingController",
- "StreamStreaming",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_StreamStreamingL, Teardown)
-
-EUNIT_TEST(
- "SessionTimeChanged - test ",
- "UT_CMusUiLiveSharingController",
- "SessionTimeChanged",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_SessionTimeChangedL, Teardown)
-
-EUNIT_TEST(
- "InactivityTimeout - test ",
- "UT_CMusUiLiveSharingController",
- "InactivityTimeout",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiLiveSharingController_InactivityTimeoutL, Teardown)
-
-EUNIT_END_TEST_TABLE
-
-// END OF FILE
--- a/mmsharing/mmshui/tsrc/ut_ui/src/ut_musuipropertywatch.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,277 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-
-// INTERNAL INCLUDES
-#include "ut_musuipropertywatch.h"
-#include "musuipropertywatch.h"
-//#include "musestubs.h"
-//#include "musengtestdefs.h"
-#include "musuitestdefines.h"
-
-#include "musuipropertyobserveradapter.h"
-#include "mussessionproperties.h"
-
-// SYSTEM INCLUDES
-#include <digia/eunit/eunitmacros.h>
-//#include <centralrepository.h>
-//#include <mcedisplaysink.h>
-
-
-using namespace NMusSessionApi;
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiPropertyWatch* UT_CMusUiPropertyWatch::NewL()
- {
- UT_CMusUiPropertyWatch* self = UT_CMusUiPropertyWatch::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiPropertyWatch* UT_CMusUiPropertyWatch::NewLC()
- {
- UT_CMusUiPropertyWatch* self = new( ELeave ) UT_CMusUiPropertyWatch();
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiPropertyWatch::~UT_CMusUiPropertyWatch()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Default constructor
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiPropertyWatch::UT_CMusUiPropertyWatch()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Second phase construct
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiPropertyWatch::ConstructL()
- {
- // The ConstructL from the base class CEUnitTestSuiteClass must be called.
- // It generates the test case table.
- CEUnitTestSuiteClass::ConstructL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiPropertyWatch::SetupL()
- {
- // Iniatalize
- iPropertyObserver = new (ELeave) CMusUiPropertyObserverAdapter();
-
- TUid tmp = { 0 }; // Unit testing dummy
- iPropertyWatch = CMusUiPropertyWatch::NewL( *iPropertyObserver,
- tmp,
- 0 ); // Unit testing dummy
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiPropertyWatch::Teardown()
- {
- delete iPropertyWatch;
- delete iPropertyObserver;
- }
-
-
-
-// TEST CASES
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiPropertyWatch::UT_CMusUiPropertyWatch_ReadIntPropertyLL()
- {
-
- // Teesting leave
- RProperty::iErrorCode = KErrNotFound;
- RProperty::iIntProperty = KMusUiTestPropertyReadInteger;
- TInt value;
- TRAPD( err, value = CMusUiPropertyWatch::ReadIntPropertyL( KMusUiTestKey ) );
- EUNIT_ASSERT( err == KErrNotFound );
-
- // Testing return value
- RProperty::iErrorCode = KErrNone;
- RProperty::iIntProperty = KMusUiTestPropertyReadInteger;
- EUNIT_ASSERT( CMusUiPropertyWatch::ReadIntPropertyL( KMusUiTestKey ) ==
- KMusUiTestPropertyReadInteger );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiPropertyWatch::UT_CMusUiPropertyWatch_ReadDescPropertyLL()
- {
- // Teesting leave
- RProperty::iErrorCode = KErrNotFound;
- TRAPD( err, CMusUiPropertyWatch::ReadDescPropertyL( KMusUiTestKey ) );
- EUNIT_ASSERT( err == KErrNotFound );
-
- // Testing return value
- RProperty::iErrorCode = KErrNone;
- HBufC* result = CMusUiPropertyWatch::ReadDescPropertyL( KMusUiTestKey );
- EUNIT_ASSERT( KMusUiTestPropertyReadDesc().Compare( result->Des() ) );
- delete result;
-
- //EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiPropertyWatch::UT_CMusUiPropertyWatch_DoCancelL()
- {
- RProperty::iErrorCode = KErrNone;
- iPropertyWatch->Cancel();
- EUNIT_ASSERT( RProperty::iCalledFunction == RProperty::ECancel );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiPropertyWatch::UT_CMusUiPropertyWatch_RunLL()
- {
-
- // Leave test
- RProperty::iErrorCode = KErrNotFound;
- iPropertyWatch->Cancel();
- TRAPD( err, iPropertyWatch->RunL() );
- EUNIT_ASSERT( err == KErrNotFound );
-
-
- // SessionPropertyChanged
- RProperty::iErrorCode = KErrNone;
- iPropertyWatch->iPropertyKey = KStatus;
- iPropertyWatch->Cancel();
- iPropertyWatch->RunL();
- EUNIT_ASSERT( iPropertyObserver->iCalledObserver ==
- CMusUiPropertyObserverAdapter::ESessionPropertyChanged );
-
-
- RProperty::iErrorCode = KErrNone;
- iPropertyWatch->iPropertyKey = KTelNumber;
- iPropertyWatch->Cancel();
- iPropertyWatch->RunL();
- EUNIT_ASSERT( iPropertyObserver->iCalledObserver ==
- CMusUiPropertyObserverAdapter::EResourcePropertyChanged );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiPropertyWatch::UT_CMusUiPropertyWatch_RunErrorL()
- {
-
- // Allways returns KErrNone
- RProperty::iErrorCode = KErrNone;
- EUNIT_ASSERT( iPropertyWatch->RunError( KErrNotFound ) == KErrNone );
-
- // is right observer called
- RProperty::iErrorCode = KErrNone;
- EUNIT_ASSERT( iPropertyObserver->iCalledObserver ==
- CMusUiPropertyObserverAdapter::EHandleError );
- }
-
-
-
-// TEST TABLE
-
-EUNIT_BEGIN_TEST_TABLE(
- UT_CMusUiPropertyWatch,
- "UT_CMusUiPropertyWatch",
- "UNIT" )
-
-EUNIT_TEST(
- "ReadIntPropertyLL - test ",
- "CMusUiPropertyWatch",
- "ReadIntPropertyLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiPropertyWatch_ReadIntPropertyLL, Teardown)
-
-EUNIT_TEST(
- "ReadDescPropertyLL - test ",
- "CMusUiPropertyWatch",
- "ReadDescPropertyLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiPropertyWatch_ReadDescPropertyLL, Teardown)
-
-EUNIT_TEST(
- "DoCancelL - test ",
- "CMusUiPropertyWatch",
- "DoCancelL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiPropertyWatch_DoCancelL, Teardown)
-
-EUNIT_TEST(
- "RunLL - test ",
- "CMusUiPropertyWatch",
- "RunLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiPropertyWatch_RunLL, Teardown)
-
-EUNIT_TEST(
- "RunErrorL - test ",
- "CMusUiPropertyWatch",
- "RunErrorL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiPropertyWatch_RunErrorL, Teardown)
-
-
-EUNIT_END_TEST_TABLE
-
-// END OF FILE
--- a/mmsharing/mmshui/tsrc/ut_ui/src/ut_musuireceivecontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,758 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-
-// INTERNAL INCLUDES
-#include "ut_musuireceivecontroller.h"
-#include "musuireceivecontroller.h"
-#include "musuireceiveobserveradapter.h"
-//#include "musestubs.h"
-//#include "musengtestdefs.h"
-#include "musuieventobserveradapter.h"
-#include "musuidefinitions.h"
-#include <musengreceivesession.h>
-#include <stringloader.h>
-
-// SYSTEM INCLUDES
-#include <digia/eunit/eunitmacros.h>
-#include <e32property.h>
-#include <aknappui.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiReceiveController* UT_CMusUiReceiveController::NewL()
- {
- UT_CMusUiReceiveController* self = UT_CMusUiReceiveController::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiReceiveController* UT_CMusUiReceiveController::NewLC()
- {
- UT_CMusUiReceiveController* self = new( ELeave ) UT_CMusUiReceiveController();
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiReceiveController::~UT_CMusUiReceiveController()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Default constructor
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiReceiveController::UT_CMusUiReceiveController()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Second phase construct
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::ConstructL()
- {
- // The ConstructL from the base class CEUnitTestSuiteClass must be called.
- // It generates the test case table.
- CEUnitTestSuiteClass::ConstructL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::SetupL()
- {
-
- iEventObserver = new (ELeave) CMusUiEventObserverAdapter();
- EUNIT_ASSERT( iEventObserver );
-
- iReceiveObserverAdapter = new (ELeave) CMusUiReceiveObserverAdapter();
- EUNIT_ASSERT( iReceiveObserverAdapter );
-
-
- RProperty::iIntProperty = 0;
- RProperty::iErrorCode = KErrNone;
-
-
- iReceiveController = CMusUiReceiveController::NewL( *iReceiveObserverAdapter, TRect( 0,0,100,100));
- iEventController = static_cast<CMusUiEventController*>
- ( iReceiveController );
-
- EUNIT_ASSERT( iEventController );
- iEventController->SetEventObserver( iEventObserver );
- EUNIT_ASSERT( iEventController->iObserver == iEventObserver );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::Teardown()
- {
- delete iReceiveController;
- iEventController = NULL;
- delete iEventObserver;
- delete iReceiveObserverAdapter;
- }
-
-
-
-// TEST CASES
-
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_HandleCommandLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_SizeChangedL()
- {
-
- TRect rect = TRect( 0,0, 100, 100 );
-
- iReceiveController->iSession->iRect = rect;
- iReceiveController->SizeChanged( rect );
- EUNIT_ASSERT( iReceiveController->iSession->iRect == iReceiveController->CenteredRect( rect ) );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_ShowErrorDialogLL()
- {
- _LIT( KRes, "res" );
- //StringLoader::iReturnValue = KRes().AllocLC();
- iReceiveController->ShowErrorDialogL( 1 );
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EShowErrorDialog );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_HandleIncomingSessionLL()
- {
- _LIT( KRes, "originator" );
-
- // Not initalized
- delete iReceiveController->iOriginator;
- iReceiveController->iOriginator = NULL;
- iReceiveController->HandleIncomingSessionL( KRes );
- EUNIT_ASSERT( iReceiveController->iOriginator->Des().Compare( KRes ) == 0 );
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EShowInvitationQueryL );
-
-
- _LIT( KEmpty, "" );
- // Initalized
- delete iReceiveController->iOriginator;
- iReceiveController->iOriginator = KEmpty().AllocL();
- iReceiveController->HandleIncomingSessionL( KRes );
- EUNIT_ASSERT( iReceiveController->iOriginator->Des().Compare( KRes ) == 0 );
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EShowInvitationQueryL );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_CancelInvitationLL()
- {
- iReceiveController->CancelInvitationL();
- EUNIT_ASSERT( !iReceiveController->iSession->iAccepInvitation );
- }
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_ContinueInvitationLL()
- {
- iReceiveController->ContinueInvitationL();
- EUNIT_ASSERT( ETrue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_HandleAsyncEventLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_ConnectionEstablishedL()
- {
- iReceiveController->iConnectionEstablished = ETrue;
- EUNIT_ASSERT( iReceiveController->ConnectionEstablished() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_PlayLL()
- {
- iReceiveController->PlayL();
- EUNIT_ASSERT( ETrue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_PauseLL()
- {
- iReceiveController->PauseL();
- EUNIT_ASSERT( ETrue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_EnableDisplayLL()
- {
- iReceiveController->iSession->iDisplayEnabled = EFalse;
- iReceiveController->EnableDisplayL( ETrue );
- EUNIT_ASSERT( iReceiveController->iSession->iDisplayEnabled );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_ShowNaviPaneIconLL()
- {
- iReceiveController->ShowNaviPaneIconL( EMusUiNaviIconPlay );
- EUNIT_ASSERT( iReceiveObserverAdapter->iIcon == EMusUiNaviIconPlay );
- EUNIT_ASSERT( iReceiveObserverAdapter->iVisible );
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EShowNaviPaneIconL );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_ChangeOrientationLL()
- {
-
- iReceiveController->ChangeOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
- EUNIT_ASSERT( iReceiveObserverAdapter->iOrientation == CAknAppUiBase::EAppUiOrientationPortrait );
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EChangeOrientationL );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_CenteredRectL()
- {
-
-
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_ManualAddressTypedL()
- {
- EUNIT_ASSERT( !iReceiveController->ManualAddressTyped() );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_ShowInformationDialogLL()
- {
- iReceiveController->ShowInformationDialogL( 12 );
- EUNIT_ASSERT( iReceiveObserverAdapter->iResourceId == 12 );
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EShowInformationDialogL );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_ShutdownLL()
- {
- iReceiveController->HandleExitL();
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EHandleExitL );
- }
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_IncomingSessionL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_StreamBufferingL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_SessionEstablishedL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_SessionTerminatedL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_SessionConnectionLostL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_SessionFailedL()
- {
- iReceiveController->SessionFailed();
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EDismissWaitDialogL );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_StreamIdleL()
- {
- iReceiveController->StreamIdle();
- EUNIT_ASSERT( ETrue );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_StreamStreamingL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_SessionTimeChangedL()
- {
- iReceiveController->SessionTimeChanged( TTimeIntervalSeconds( 13 ) );
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EUpdateSessionTime );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_InactivityTimeoutL()
- {
- iReceiveController->HandleExitL();
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EHandleExitL );
- }
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_InvitationAcceptedLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_InvitationRejectedLL()
- {
- iReceiveController->InvitationRejectedL();
- EUNIT_ASSERT( !iReceiveController->iSession->iAccepInvitation );
- EUNIT_ASSERT( iReceiveObserverAdapter->iCalledObserver == CMusUiReceiveObserverAdapter::EHandleExitL );
- }
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_UpdateStatusPaneLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_InspectVideoPlayerLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiReceiveController::UT_CMusUiReceiveController_ShowWaitDialogLL()
- {
- EUNIT_ASSERT( EFalse );
- }
-
-
-
-
-// TEST TABLE
-
-EUNIT_BEGIN_TEST_TABLE(
- UT_CMusUiReceiveController,
- "UT_CMusUiReceiveController",
- "UNIT" )
-
-EUNIT_TEST(
- "HandleCommandLL - test ",
- "CMusUiReceiveController",
- "HandleCommandLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_HandleCommandLL, Teardown)
-
-EUNIT_TEST(
- "SizeChangedL - test ",
- "CMusUiReceiveController",
- "SizeChangedL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_SizeChangedL, Teardown)
-
-EUNIT_TEST(
- "ShowErrorDialogLL - test ",
- "CMusUiReceiveController",
- "ShowErrorDialogLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_ShowErrorDialogLL, Teardown)
-
-EUNIT_TEST(
- "HandleIncomingSessionLL - test ",
- "CMusUiReceiveController",
- "HandleIncomingSessionLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_HandleIncomingSessionLL, Teardown)
-
-EUNIT_TEST(
- "CancelInvitationLL - test ",
- "CMusUiReceiveController",
- "CancelInvitationLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_CancelInvitationLL, Teardown)
-
-EUNIT_TEST(
- "ContinueInvitationLL - test ",
- "CMusUiReceiveController",
- "ContinueInvitationLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_ContinueInvitationLL, Teardown)
-
-EUNIT_TEST(
- "HandleAsyncEventLL - test ",
- "CMusUiReceiveController",
- "HandleAsyncEventLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_HandleAsyncEventLL, Teardown)
-
-EUNIT_TEST(
- "ConnectionEstablishedL - test ",
- "CMusUiReceiveController",
- "ConnectionEstablishedL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_ConnectionEstablishedL, Teardown)
-
-EUNIT_TEST(
- "PlayLL - test ",
- "CMusUiReceiveController",
- "PlayLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_PlayLL, Teardown)
-
-EUNIT_TEST(
- "PauseLL - test ",
- "CMusUiReceiveController",
- "PauseLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_PauseLL, Teardown)
-
-EUNIT_TEST(
- "EnableDisplayLL - test ",
- "CMusUiReceiveController",
- "EnableDisplayLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_EnableDisplayLL, Teardown)
-
-EUNIT_TEST(
- "ShowNaviPaneIconLL - test ",
- "CMusUiReceiveController",
- "ShowNaviPaneIconLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_ShowNaviPaneIconLL, Teardown)
-
-EUNIT_TEST(
- "ChangeOrientationLL - test ",
- "CMusUiReceiveController",
- "ChangeOrientationLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_ChangeOrientationLL, Teardown)
-
-EUNIT_TEST(
- "CenteredRectL - test ",
- "CMusUiReceiveController",
- "CenteredRectL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_CenteredRectL, Teardown)
-
-EUNIT_TEST(
- "ManualAddressTypedL - test ",
- "CMusUiReceiveController",
- "ManualAddressTypedL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_ManualAddressTypedL, Teardown)
-
-EUNIT_TEST(
- "ShowInformationDialogLL - test ",
- "CMusUiReceiveController",
- "ShowInformationDialogLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_ShowInformationDialogLL, Teardown)
-
-EUNIT_TEST(
- "ShowInformationDialogLL - test ",
- "CMusUiReceiveController",
- "ShowInformationDialogLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_ShowInformationDialogLL, Teardown)
-
-EUNIT_TEST(
- "ShutdownLL - test ",
- "CMusUiReceiveController",
- "ShutdownLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_ShutdownLL, Teardown)
-
-EUNIT_TEST(
- "IncomingSessionL - test ",
- "CMusUiReceiveController",
- "IncomingSessionL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_IncomingSessionL, Teardown)
-
-EUNIT_TEST(
- "StreamBufferingL - test ",
- "CMusUiReceiveController",
- "StreamBufferingL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_StreamBufferingL, Teardown)
-
-EUNIT_TEST(
- "SessionEstablishedL - test ",
- "CMusUiReceiveController",
- "SessionEstablishedL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_SessionEstablishedL, Teardown)
-
-EUNIT_TEST(
- "SessionTerminatedL - test ",
- "CMusUiReceiveController",
- "SessionTerminatedL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_SessionTerminatedL, Teardown)
-
-EUNIT_TEST(
- "SessionConnectionLostL - test ",
- "CMusUiReceiveController",
- "SessionConnectionLostL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_SessionConnectionLostL, Teardown)
-
-EUNIT_TEST(
- "SessionFailedL - test ",
- "CMusUiReceiveController",
- "SessionFailedL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_SessionFailedL, Teardown)
-
-EUNIT_TEST(
- "StreamIdleL - test ",
- "CMusUiReceiveController",
- "StreamIdleL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_StreamIdleL, Teardown)
-
-EUNIT_TEST(
- "StreamStreamingL - test ",
- "CMusUiReceiveController",
- "StreamStreamingL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_StreamStreamingL, Teardown)
-
-EUNIT_TEST(
- "SessionTimeChangedL - test ",
- "CMusUiReceiveController",
- "SessionTimeChangedL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_SessionTimeChangedL, Teardown)
-
-EUNIT_TEST(
- "InactivityTimeoutL - test ",
- "CMusUiReceiveController",
- "InactivityTimeoutL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_InactivityTimeoutL, Teardown)
-
-EUNIT_TEST(
- "InvitationAcceptedLL - test ",
- "CMusUiReceiveController",
- "InvitationAcceptedLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_InvitationAcceptedLL, Teardown)
-
-EUNIT_TEST(
- "InvitationRejectedLL - test ",
- "CMusUiReceiveController",
- "InvitationRejectedLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_InvitationRejectedLL, Teardown)
-
-EUNIT_TEST(
- "UpdateStatusPaneLL - test ",
- "CMusUiReceiveController",
- "UpdateStatusPaneLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_UpdateStatusPaneLL, Teardown)
-
-EUNIT_TEST(
- "InspectVideoPlayerLL - test ",
- "CMusUiReceiveController",
- "InspectVideoPlayerLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_InspectVideoPlayerLL, Teardown)
-
-EUNIT_TEST(
- "ShowWaitDialogLL - test ",
- "CMusUiReceiveController",
- "ShowWaitDialogLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiReceiveController_ShowWaitDialogLL, Teardown)
-
-
-EUNIT_END_TEST_TABLE
-
-// END OF FILE
--- a/mmsharing/mmshui/tsrc/ut_ui/src/ut_musuistartcontroller.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,231 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-
-// INTERNAL INCLUDES
-#include "ut_musuistartcontroller.h"
-#include "musuistartcontroller.h"
-
-#include "musuidefinitions.h"
-#include "musmanagercommon.h"
-
-#include "musuieventobserveradapter.h"
-
-#include <e32Property.h>
-
-
-// SYSTEM INCLUDES
-#include <digia/eunit/eunitmacros.h>
-//#include <centralrepository.h>
-//#include <mcedisplaysink.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiStartController* UT_CMusUiStartController::NewL()
- {
- UT_CMusUiStartController* self = UT_CMusUiStartController::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiStartController* UT_CMusUiStartController::NewLC()
- {
- UT_CMusUiStartController* self = new( ELeave ) UT_CMusUiStartController();
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiStartController::~UT_CMusUiStartController()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Default constructor
-// -----------------------------------------------------------------------------
-//
-UT_CMusUiStartController::UT_CMusUiStartController()
- {
- // NOP
- }
-
-
-// -----------------------------------------------------------------------------
-// Second phase construct
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiStartController::ConstructL()
- {
- // The ConstructL from the base class CEUnitTestSuiteClass must be called.
- // It generates the test case table.
- CEUnitTestSuiteClass::ConstructL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiStartController::SetupL()
- {
- iEventObserver = new (ELeave) CMusUiEventObserverAdapter();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiStartController::Teardown()
- {
-
- delete iEventObserver;
-
- // Tests are made in construction phase
- // Because class implementation is constructor based
-
- }
-
-
-
-// TEST CASES
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiStartController::UT_CMusUiStartController_UseCasePropertyLL()
- {
- EUNIT_ASSERT( iEventObserver );
-
- // Testing leave
- RProperty::iErrorCode = KErrNotFound;
- TRAPD( err, CMusUiStartController::NewL( *iEventObserver ) );
- EUNIT_ASSERT( err == KErrNotFound );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusUiStartController::UT_CMusUiStartController_SetStartViewLL()
- {
- EUNIT_ASSERT( iEventObserver );
-
- // Testing leave
- RProperty::iErrorCode = KErrNotFound;
- RProperty::iIntProperty = -9999;
- iEventObserver->iErrorCode = KErrNone;
- TRAPD( err, CMusUiStartController::NewL( *iEventObserver ) );
- EUNIT_ASSERT( err == KErrNotFound );
-
- // Testing leave
- RProperty::iErrorCode = KErrNone;
- RProperty::iIntProperty = -9999;
- iEventObserver->iErrorCode = KErrCancel;
- TRAP( err, CMusUiStartController::NewL( *iEventObserver ) );
- EUNIT_ASSERT( err == KErrCancel );
-
- // case default
-
- RProperty::iErrorCode = KErrNone;
- RProperty::iIntProperty = -9999;
- iEventObserver->iErrorCode = KErrNone;
- CMusUiStartController* scdefault = CMusUiStartController::NewL( *iEventObserver );
- EUNIT_ASSERT( iEventObserver->iCalledObserver == CMusUiEventObserverAdapter::EHandleExitL );
-
- delete scdefault;
-
- // case EMusLiveVideo
-
- RProperty::iErrorCode = KErrNone;
- RProperty::iIntProperty = EMusLiveVideo;
- iEventObserver->iErrorCode = KErrNone;
- CMusUiStartController* sclive = CMusUiStartController::NewL( *iEventObserver );
- EUNIT_ASSERT( iEventObserver->iCalledObserver == CMusUiEventObserverAdapter::EActivateLocalMusViewL );
- EUNIT_ASSERT( iEventObserver->iViewId == KMusUidLiveSharingView );
-
- delete sclive;
-
- // case EMusClipVideo
-
- RProperty::iErrorCode = KErrNone;
- RProperty::iIntProperty = EMusClipVideo;
- iEventObserver->iErrorCode = KErrNone;
- CMusUiStartController* scclip = CMusUiStartController::NewL( *iEventObserver );
- EUNIT_ASSERT( iEventObserver->iCalledObserver == CMusUiEventObserverAdapter::EActivateLocalMusViewL );
- EUNIT_ASSERT( iEventObserver->iViewId == KMusUidClipSharingView );
-
- delete scclip;
-
- // case EMusReceive
-
- RProperty::iErrorCode = KErrNone;
- RProperty::iIntProperty = EMusReceive;
- iEventObserver->iErrorCode = KErrNone;
- CMusUiStartController* screceive = CMusUiStartController::NewL( *iEventObserver );
- EUNIT_ASSERT( iEventObserver->iCalledObserver == CMusUiEventObserverAdapter::EActivateLocalMusViewL );
- EUNIT_ASSERT( iEventObserver->iViewId == KMusUidReceivingView );
-
- delete screceive;
-
- }
-
-
-
-
-// TEST TABLE
-
-EUNIT_BEGIN_TEST_TABLE(
- UT_CMusUiStartController,
- "UT_CMusUiStartController",
- "UNIT" )
-
-EUNIT_TEST(
- "UseCasePropertyLL - test ",
- "CMusUiStartController",
- "UseCasePropertyLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiStartController_UseCasePropertyLL, Teardown)
-
-EUNIT_TEST(
- "SetStartViewLL - test ",
- "CMusUiStartController",
- "SetStartViewLL",
- "FUNCTIONALITY",
- SetupL, UT_CMusUiStartController_SetStartViewLL, Teardown)
-
-EUNIT_END_TEST_TABLE
-
-// END OF FILE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis.pro Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2009 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:
+#
+#
+
+TEMPLATE = subdirs
+CONFIG += ordered
+
+symbian: {
+ :BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+ :BLD_INF_RULES.prj_exports += "rom/multimediasharing.iby CORE_APP_LAYER_IBY_EXPORT_PATH(multimediasharing.iby)"
+ :BLD_INF_RULES.prj_exports += "rom/multimediasharingresources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(multimediasharingresources.iby)"
+ :BLD_INF_RULES.prj_exports += "rom/multimediasharing_stub.SIS /epoc32/data/z/system/install/multimediasharing_stub.SIS"
+
+ :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"mmsharinguis_plat/group/bld.inf\""
+ :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"mmshplugins/group/bld.inf\""
+ :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"mmsharing/mmshapp/help/group/bld.inf\""
+}
+
+SUBDIRS += mmsharing/group
--- a/mmsharinguis_plat/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharinguis_plat/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -17,7 +17,7 @@
*/
-
+#include "../live_comms_plugin_api/group/bld.inf"
#include "../multimedia_sharing_settings_api/group/bld.inf"
#include "../multimedia_sharing_resource_api/group/bld.inf"
#include "../multimedia_sharing_manager_api/group/bld.inf"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2006 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: The exported files for Live Comms plug-in API
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+../inc/lcaudiocontrol.h APP_LAYER_PLATFORM_EXPORT_PATH(lcaudiocontrol.h)
+../inc/lcbrightnesscontrol.h APP_LAYER_PLATFORM_EXPORT_PATH(lcbrightnesscontrol.h)
+../inc/lccameracontrol.h APP_LAYER_PLATFORM_EXPORT_PATH(lccameracontrol.h)
+../inc/lcdestinationfilecontrol.h APP_LAYER_PLATFORM_EXPORT_PATH(lcdestinationfilecontrol.h)
+../inc/lcengine.h APP_LAYER_PLATFORM_EXPORT_PATH(lcengine.h)
+../inc/lcengine.inl APP_LAYER_PLATFORM_EXPORT_PATH(lcengine.inl)
+../inc/lcsession.h APP_LAYER_PLATFORM_EXPORT_PATH(lcsession.h)
+../inc/lcsessionobserver.h APP_LAYER_PLATFORM_EXPORT_PATH(lcsessionobserver.h)
+../inc/lcsourcefilecontrol.h APP_LAYER_PLATFORM_EXPORT_PATH(lcsourcefilecontrol.h)
+../inc/lcuiprovider.h APP_LAYER_PLATFORM_EXPORT_PATH(lcuiprovider.h)
+../inc/lcvideoplayer.h APP_LAYER_PLATFORM_EXPORT_PATH(lcvideoplayer.h)
+../inc/lcwindow.h APP_LAYER_PLATFORM_EXPORT_PATH(lcwindow.h)
+../inc/lczoomcontrol.h APP_LAYER_PLATFORM_EXPORT_PATH(lczoomcontrol.h)
+
+PRJ_TESTMMPFILES
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcaudiocontrol.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* Copyright (c) 2009 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 MLCAUDIOCONTROL_H
+#define MLCAUDIOCONTROL_H
+
+// INCLUDES
+#include <e32std.h>
+
+// CLASS DECLARATION
+/**
+* Class for adjusting the audio related settings
+* such as muting and unmuting the audio and changing its volume level.
+*/
+class MLcAudioControl
+ {
+ public:
+
+ /**
+ * Checks whether the local audio has been muted.
+ * @return ETrue if the local audio has been muted, otherwise EFalse.
+ */
+ virtual TBool IsLcAudioMutedL() = 0;
+
+ /**
+ * Mutes / unmutes the local audio.
+ * @param aMute ETrue mutes the audio, EFalse unmutes it.
+ */
+ virtual void MuteLcAudioL( TBool aMute ) = 0;
+
+ /**
+ * Checks whether the microphone has been muted,
+ * @return ETrue if the microphone has been muted, otherwise EFalse.
+ */
+ virtual TBool IsLcMicMutedL() = 0;
+
+ /**
+ * Mutes / unmutes the microphone.
+ * @param aMute ETrue mutes the microphone, EFalse unmutes it.
+ */
+ virtual void MuteLcMicL( TBool aMute ) = 0;
+
+ /**
+ * Checks whether it is allowed
+ * to enable the loudspeaker by calling EnableLcLoudspeakerL.
+ * @return ETrue if enabling the loudspeaker is allowed, otherwise EFalse.
+ */
+ virtual TBool IsEnablingLcLoudspeakerAllowed() = 0;
+
+ /**
+ * Enables / disables the loudspeaker.
+ * @pre IsEnablingLcLoudspeakerAllowed() == ETrue
+ * @param aEnabled ETrue enables the loudspeaker, EFalse disables it.
+ */
+ virtual void EnableLcLoudspeakerL( TBool aEnabled ) = 0;
+
+ /**
+ * Checks whether the loudspeaker has been enabled.
+ * @return ETrue if the loudspeaker has been enabled, otherwise EFalse.
+ */
+ virtual TBool IsLcLoudspeakerEnabled() = 0;
+
+ /**
+ * Returns the current volume level.
+ * @return the current volume level
+ */
+ virtual TInt LcVolumeL() = 0;
+
+ /**
+ * Sets the volume level.
+ * @param aValue the volume level
+ */
+ virtual void SetLcVolumeL( TInt aValue ) = 0;
+
+ /**
+ * Increases the volume level by one step.
+ */
+ virtual void IncreaseLcVolumeL() = 0;
+
+ /**
+ * Decreases the volume level by one step.
+ */
+ virtual void DecreaseLcVolumeL() = 0;
+ };
+
+#endif // MLCAUDIOCONTROL_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcbrightnesscontrol.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2009 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 MLCBRIGHTNESSCONTROL_H
+#define MLCBRIGHTNESSCONTROL_H
+
+// INCLUDES
+#include <e32std.h>
+
+// CLASS DECLARATION
+/**
+* Class for adjusting the brightness of a video.
+*/
+class MLcBrightnessControl
+ {
+ public:
+
+ /**
+ * Returns the minimum brightness level.
+ * @return the minimum brightness level
+ */
+ virtual TInt MinLcBrightnessL() = 0;
+
+ /**
+ * Returns the maximum brightness level.
+ * @return the maximum brightness level
+ */
+ virtual TInt MaxLcBrightnessL() = 0;
+
+ /**
+ * Returns the current brightness level.
+ * @return the current brightness level
+ */
+ virtual TInt LcBrightnessL() = 0;
+
+ /**
+ * Sets the brightness level.
+ * @pre aValue >= MinLcBrightnessL && aValue <= MaxLcBrightnessL
+ * @param aValue the new brightness level
+ */
+ virtual void SetLcBrightnessL( TInt aValue ) = 0;
+
+ /**
+ * Increments the brightness level by one step.
+ */
+ virtual void IncreaseLcBrightnessL() = 0;
+
+ /**
+ * Decrements the brightness level by one step.
+ */
+ virtual void DecreaseLcBrightnessL() = 0;
+ };
+
+#endif // MLCBRIGHTNESSCONTROL_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lccameracontrol.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2009 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 MLCCAMERACONTROL_H
+#define MLCCAMERACONTROL_H
+
+// INCLUDES
+#include <e32std.h>
+
+// CLASS DECLARATION
+/**
+* Class for querying the device's camera capabilities
+* and switching between the device's cameras.
+*/
+class MLcCameraControl
+ {
+ public:
+
+ /**
+ * Returns the count of cameras available in the device.
+ * @return the count of cameras in the device
+ */
+ virtual TInt LcCameraCountL() = 0;
+
+ /**
+ * Return the index of the currently used camera.
+ * @return the camera index
+ */
+ virtual TInt CurrentLcCameraIndex() = 0;
+
+ /**
+ * Switches to the next camera available in the device.
+ * For example, if there are three cameras in the device,
+ * the first call switches from camera 1 to camera 2,
+ * the second call switches from camera 2 to camera 3 and
+ * the third call switches from camera 3 to camera 1.
+ */
+ virtual void ToggleLcCameraL() = 0;
+ };
+
+#endif // MLCCAMERACONTROL_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcdestinationfilecontrol.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2009 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 MLCDESTINATIONFILECONTROL_H
+#define MLCDESTINATIONFILECONTROL_H
+
+// INCLUDES
+#include <e32std.h>
+
+// CLASS DECLARATION
+/**
+* Class for controlling the usage of a destination file for a player.
+*/
+class MLcDestinationFileControl
+ {
+ public:
+
+ /**
+ * Sets the name of the destination file.
+ * @param aFileName the file name
+ */
+ virtual void SetLcFileNameL( const TFileName& aFileName ) = 0;
+
+ /**
+ * Returns the name of the destination file.
+ * @return the file name
+ */
+ virtual TFileName& LcFileName() = 0;
+
+ /**
+ * Starts or pauses recording
+ */
+ virtual void LcRecordL( TBool aRecord ) = 0;
+
+ /**
+ * Checks whether recording is paused or not
+ */
+ virtual TBool LcIsRecording() = 0;
+ };
+
+#endif // MLCDESTINATIONFILECONTROL_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcengine.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2009 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 CLCENGINE_H
+#define CLCENGINE_H
+
+// INCLUDES
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class MLcSession;
+
+// CONSTANTS
+/** Interface UID of this ECOM interface */
+const TUid KLcEngineInterfaceUid = { 0x20021340 };
+
+// CLASS DECLARATION
+/**
+* A base class for ECom plug-ins implementing
+* the Live Comms engine plug-in API.
+*/
+class CLcEngine : public CBase
+ {
+ public: // Enumerations
+
+ /**
+ * The list of plug-in configurable features.
+ */
+ enum TLcFeature
+ {
+ ELcShowInvitingNote,
+ ELcShowWaitingNote,
+ ELcShowAcceptQuery,
+ ELcSendVideoQuery
+ };
+
+ public: // Constructors and destructor
+
+ /**
+ * Loads and creats an instance of the plug-in.
+ * @param aEngineName used in finding the correct implementation.
+ * Matched to the IMPLEMENTATION_INFO / default_data of the plug-in.
+ * @return a new instance of CLcEngine, the ownership is transferred
+ */
+ inline static CLcEngine* NewL( const TDesC8& aEngineName );
+
+ /**
+ * Destructor
+ */
+ inline ~CLcEngine();
+
+ public: // New pure virtual functions
+
+ /**
+ * Returns a reference to the session created by the plug-in.
+ * @return the session
+ */
+ virtual MLcSession& Session() = 0;
+
+ public: // New virtual functions
+
+ /**
+ * Checks if a feature should be used with the particular engine.
+ * @param aLcFeature the identifier of the feature
+ * @return ETrue if the feature is supported, otherwise EFalse.
+ */
+ inline virtual TBool IsFeatureSupported( TLcFeature aLcFeature );
+
+ protected: // Constructors
+
+ inline CLcEngine();
+
+ public: // Data
+
+ TUid iInstanceKey;
+ };
+
+#include "lcengine.inl"
+
+#endif // CLCENGINE_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcengine.inl Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2009 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 CLCENGINE_INL
+#define CLCENGINE_INL
+
+// INCLUDES
+#include <ecom/ecom.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcEngine* CLcEngine::NewL( const TDesC8& aEngineName )
+ {
+ TEComResolverParams resolverParams;
+ resolverParams.SetDataType( aEngineName );
+ return reinterpret_cast< CLcEngine* >(
+ REComSession::CreateImplementationL(
+ KLcEngineInterfaceUid,
+ _FOFF( CLcEngine, iInstanceKey ),
+ resolverParams ) );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcEngine::CLcEngine()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CLcEngine::~CLcEngine()
+ {
+ REComSession::DestroyedImplementation( iInstanceKey );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CLcEngine::IsFeatureSupported( TLcFeature /*aLcFeature*/ )
+ {
+ return EFalse;
+ }
+
+#endif // CLCENGINE_INL
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 2009 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 MLCSESSION_H
+#define MLCSESSION_H
+
+// INCLUDES
+#include <e32std.h>
+
+// FORWARD DECLARATIONS
+class MLcSessionObserver;
+class MLcUiProvider;
+class MLcVideoPlayer;
+
+// CLASS DECLARATION
+/**
+* A class representing a Live Comms session.
+*/
+class MLcSession
+ {
+ public:
+
+ /**
+ * The list of possible session states.
+ */
+ enum TLcSessionState
+ {
+ EUninitialized,
+ EInitialized,
+ EReceived,
+ EOpening,
+ EOpen,
+ EClosing,
+ EClosed
+ };
+
+ /**
+ * The possible failure reasons for a session.
+ */
+ enum TLcSessionFailure
+ {
+ ENoAnswer = 1,
+ ERecipientNotFound,
+ ESessionCancelled,
+ ESessionRejected,
+ ERecipientBusy,
+ ERecipientTemporarilyNotAvailable,
+ EDiskFull,
+ EConnectionLost,
+ EMediaInactivityTimeout,
+ };
+
+ /**
+ * Returns the current session state.
+ * @return the session state
+ */
+ virtual TLcSessionState LcSessionState() const = 0;
+
+ /**
+ * Sets the observer for the session related events.
+ * @param aObserver the observer
+ */
+ virtual void SetLcSessionObserver( MLcSessionObserver* aObserver ) = 0;
+
+ /**
+ * Sets the callback for the UI prompts.
+ * @param aUiProvider callback for UI prompts
+ */
+ virtual void SetLcUiProvider( MLcUiProvider* aUiProvider ) = 0;
+
+ /**
+ * Establishes the session.
+ * In case of a MO session initiates the session negotiation.
+ * In case of a MT session accepts the incoming session.
+ */
+ virtual void EstablishLcSessionL() = 0;
+
+ /**
+ * Terminates the session.
+ * Can be used for terminating an existing session as well as
+ * cancelling a MO session that has not yet been established.
+ * Can also be used for rejecting an incoming session.
+ */
+ virtual void TerminateLcSessionL() = 0;
+
+ /**
+ * Returns the video player for the received media.
+ * Is present if the session contains video
+ * received from the remote participant.
+ * @return the remote video player or NULL if not present
+ */
+ virtual MLcVideoPlayer* RemoteVideoPlayer() = 0;
+
+ /**
+ * Returns the video player for the media that is being sent.
+ * Is present if the session contains outgoing video.
+ * @return the local video player or NULL if not present
+ */
+ virtual MLcVideoPlayer* LocalVideoPlayer() = 0;
+
+ /**
+ * Returns the own display name for the session.
+ * @return the local display name or KNullDesC if local
+ * display name is not known
+ */
+ virtual const TDesC& LocalDisplayName() = 0;
+
+ /**
+ * Returns the remote party's display name for the session.
+ * @return the remote display name or KNullDesC if remote
+ * display name is not known
+ */
+ virtual const TDesC& RemoteDisplayName() = 0;
+
+ /**
+ * Sets a parameter for the session.
+ * The parameters can be plug-in specific.
+ * @param aId the identifier for the parameter
+ * @param aValue the value for the parameter
+ */
+ virtual TInt SetParameter( TInt aId, TInt aValue ) = 0;
+
+ /**
+ * Returns a value for a session parameter.
+ * @param aId the identifier for the parameter
+ * @return the value for the parameter or an error if not present
+ */
+ virtual TInt ParameterValue( TInt aId ) = 0;
+
+ /**
+ * Checks whether application should be started in background mode.
+ * In background mode session will be pre-set up without user
+ * interaction and will be in paused state.
+ * @return ETrue if background mode should be used
+ */
+ virtual TBool IsBackgroundStartup() = 0;
+
+ /**
+ * Engine can be informed about application foreground status via
+ * this method.
+ * @param aIsForeground ETrue if application is at foreground, EFalse
+ * if at background
+ * @return KErrNone if succesfully handled
+ */
+ virtual TInt SetForegroundStatus( TBool aIsForeground ) = 0;
+
+ /**
+ * Returns remote party details for the session
+ * @return remote party details or KNullDesC if those are not known
+ */
+ virtual const TDesC& RemoteDetails() = 0;
+
+ /**
+ * Updates established session.
+ * All the changes, if they are not yet delivered, to players, windows
+ * and session parameters has been commited after the call.
+ */
+ virtual void UpdateLcSessionL() = 0;
+
+ /**
+ * Send DTMF signals.
+ * @param aKey Key pressed from dialpad. Key can be [0-9],*,#,A,B,C,D.
+ * which is 16 key combination of DTMF.
+ * Send DTMF signals to remote party.
+ * @return ETrue upon success else EFalse.
+ */
+ virtual TBool SendDialTone( TChar aKey) = 0;
+ };
+
+#endif // MLCSESSION_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcsessionobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,95 @@
+/*
+* Copyright (c) 2009 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 MLCSESSIONOBSERVER_H
+#define MLCSESSIONOBSERVER_H
+
+// INCLUDES
+#include <e32std.h>
+
+// FORWARD DECLARATIONS
+class MLcSession;
+class MLcVideoPlayer;
+
+// CLASS DECLARATION
+/**
+* A callback for a Live Comms session related events.
+*/
+class MLcSessionObserver
+ {
+ public:
+
+ /**
+ * The state of the session has changed.
+ * The new state can be obtained from the session.
+ * @param aSession the session
+ */
+ virtual void StateChanged( MLcSession& aSession ) = 0;
+
+ /**
+ * The state of the player has changed.
+ * The new state can be obtained from the player.
+ * @param aPlayer the player
+ */
+ virtual void StateChanged( MLcVideoPlayer& aPlayer ) = 0;
+
+ /**
+ * The session has been updated.
+ * For example a new player has been added.
+ * @param aSession the updated session
+ */
+ virtual void Updated( MLcSession& aSession ) = 0;
+
+ /**
+ * The session has been updated.
+ * For example a new control has been added or
+ * an existing control has been updated.
+ * @param aPlayer the updated player
+ */
+ virtual void Updated( MLcVideoPlayer& aPlayer ) = 0;
+
+ /**
+ * The session has failed.
+ * @param aSession the failed session
+ * @param aError the reason for the failure
+ */
+ virtual void Failed(
+ MLcSession& aSession,
+ TInt aError ) = 0;
+
+ /**
+ * The player has failed.
+ * @param aPlayer the failed player
+ * @param aError the reason for the failure
+ */
+ virtual void Failed(
+ MLcVideoPlayer& aPlayer,
+ TInt aError ) = 0;
+
+ /**
+ * The session duration time has changed.
+ * @param aSession the session
+ * @param aSeconds the current session duration.
+ */
+ virtual void SessionTimeChanged(
+ MLcSession& aSession,
+ const TTimeIntervalSeconds& aSeconds ) = 0;
+ };
+
+#endif // MLCSESSIONOBSERVER_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcsourcefilecontrol.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2009 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 MLCSOURCEFILECONTROL_H
+#define MLCSOURCEFILECONTROL_H
+
+// INCLUDES
+#include <e32std.h>
+
+// CLASS DECLARATION
+/**
+* Class for controlling the usage of a source file for a player.
+*/
+class MLcSourceFileControl
+ {
+ public:
+
+ /**
+ * Sets the name of the source file.
+ * @param aFileName the file name
+ */
+ virtual void SetLcFileNameL( const TFileName& aFileName ) = 0;
+
+ /**
+ * Returns the name of the source file.
+ * @return the file name
+ */
+ virtual TFileName& LcFileName() = 0;
+
+ /**
+ * Starts or stops fast forwarding the file.
+ * The file is left paused after stopping the fast forwarding.
+ * @param aUseFFWD ETrue to start FFWD, EFalse to stop it.
+ */
+ virtual void LcFastForwardL( TBool aUseFFWD ) = 0;
+
+ /**
+ * Starts or stops fast rewinding the file.
+ * The file is left paused after stopping the fast rewinding.
+ * @param aUseFRWD ETrue to start FRWD, EFalse to stop it.
+ */
+ virtual void LcFastRewindL( TBool aUseFRWD ) = 0;
+
+ /**
+ * Returns duration of the file as time interval.
+ * @return the duration of the file
+ */
+ virtual TTimeIntervalSeconds LcFileDurationL() = 0;
+
+ /**
+ * Returns current file position as time interval.
+ * @return the current position
+ */
+ virtual TTimeIntervalSeconds LcFilePositionL() = 0;
+
+ /**
+ * Sets the file position as time interval.
+ * @param aPosition the new position
+ */
+ virtual void SetLcFilePositionL(
+ const TTimeIntervalSeconds& aPosition ) = 0;
+ };
+
+#endif // MLCSOURCEFILECONTROL_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcuiprovider.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2009 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 MLCUIPROVIDER_H
+#define MLCUIPROVIDER_H
+
+// INCLUDES
+#include <e32std.h>
+#include <bamdesca.h>
+
+// CLASS DECLARATION
+/**
+* A callback for fetching session related information from the end user.
+*/
+class MLcUiProvider
+ {
+ public:
+
+ /**
+ * Asks to select the recipient for the session from
+ * a predefined list of recipients.
+ * @param aRecipientAddresses the list of possible recipients
+ * @param aSelectedRecipientAddress on return contains
+ * the selected recipient
+ * @return ETrue if the recipient was selected, otherwise EFalse
+ */
+ virtual TBool SelectRecipient(
+ MDesCArray& aRecipientAddresses,
+ TDes& aSelectedRecipientAddress ) = 0;
+
+ /**
+ * Asks to input the recipient for the session.
+ * @param aRecipientAddress on return contains the recipient address
+ * @return ETrue if the recipient was inserted, otherwise EFalse
+ */
+ virtual TBool InputRecipient( TDes& aRecipientAddress ) = 0;
+
+ /**
+ * The application foreground status has to be changed.
+ * @param aForeground ETrue if application should be brought to
+ * foreground.
+ */
+ virtual void HandleForegroundStatus( TBool aForeground ) = 0;
+
+ /**
+ * UI needs to be blocked/unblocked. If engine is processing
+ * asynchronous operation and cannot handle other actions meanwhile,
+ * it can ask UI to block user controls until asynchronous operation
+ * completes. NOTE: session termination is allowed even if blocking
+ * is active.
+ * @param aBlocked, ETrue is UI should be blocked, EFalse
+ * if UI can be unblocked.
+ */
+ virtual void BlockUi( TBool aBlocked ) = 0;
+ };
+
+
+#endif // MLCUIPROVIDER_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcvideoplayer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2009 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 MLCVIDEOPLAYER_H
+#define MLCVIDEOPLAYER_H
+
+// INCLUDES
+#include <e32std.h>
+
+// FORWARD DECLARATIONS
+class MLcWindow;
+class MLcCameraControl;
+class MLcCamera;
+class MLcSourceFileControl;
+class MLcDestinationFileControl;
+class MLcAudioControl;
+class MLcZoomControl;
+class MLcBrightnessControl;
+
+// CLASS DECLARATION
+/**
+* A class representing a video player and its controls.
+*/
+class MLcVideoPlayer
+ {
+ public:
+
+
+ /**
+ * The list of possible video player sources.
+ */
+ enum TLcVideoPlayerSource
+ {
+ ECameraSource,
+ EFileSource
+ };
+
+ /**
+ * The list of possible video player states.
+ */
+ enum TLcVideoPlayerState
+ {
+ EInit,
+ EPreparing,
+ EBuffering,
+ EPlaying,
+ EPaused,
+ EUnavailable
+ };
+
+ /**
+ * Returns the current video player state.
+ * @return the video player state
+ */
+ virtual TLcVideoPlayerState LcVideoPlayerState() const = 0;
+
+ /**
+ * Checks whether the video is currently being played.
+ * @return ETrue if the video is being played, otherwise EFalse.
+ */
+ virtual TBool LcIsPlayingL() = 0;
+
+ /**
+ * Returns the current video player source.
+ * @return the video player source.
+ */
+ virtual TLcVideoPlayerSource LcVideoPlayerSourceL() { return ECameraSource; };
+
+ /**
+ * Starts to play the source mentioned in the argument
+ * @aSource : One of the sources in TLcVideoPlayerSource enum.
+ * default : Play from camera.
+ */
+ virtual void LcPlayL( TLcVideoPlayerSource aSource=ECameraSource ) = 0;
+
+ /**
+ * Pauses the playing of the video.
+ */
+ virtual void LcPauseL() = 0;
+
+ /**
+ * Returns the window for the player, if present.
+ * @return the window for the player or NULL if not present
+ */
+ virtual MLcWindow* LcWindow() = 0;
+
+ /**
+ * Returns the camera control,
+ * if the video player uses the device's camera
+ * as the source of the played video.
+ * @return the camera control or NULL if not present
+ */
+ virtual MLcCameraControl* LcCameraControl() = 0;
+
+ /**
+ * Returns the source file control for the video player,
+ * if the video is played from a local video file.
+ * @return the source file control or NULL if not present
+ */
+ virtual MLcSourceFileControl* LcSourceFileControl() = 0;
+
+ /**
+ * Returns the destination file control for the video player,
+ * if the video is being recorded to a local video file.
+ * @return the destination file control or NULL if not present
+ */
+ virtual MLcDestinationFileControl* LcDestinationFileControl() = 0;
+
+ /**
+ * Returns the audio control for the player, if present.
+ * @return the audio control for the player or NULL if not present
+ */
+ virtual MLcAudioControl* LcAudioControl() = 0;
+
+ /**
+ * Returns the zoom control for the player, if present.
+ * @return the zoom control for the player or NULL if not present
+ */
+ virtual MLcZoomControl* LcZoomControl() = 0;
+
+ /**
+ * Returns the brightness control for the player, if present.
+ * @return the brightness control for the player or NULL if not present
+ */
+ virtual MLcBrightnessControl* LcBrightnessControl() = 0;
+ };
+
+#endif // MLCVIDEOPLAYER_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lcwindow.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2009 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 MLCWINDOW_H
+#define MLCWINDOW_H
+
+// INCLUDES
+#include <e32std.h>
+
+// CLASS DECLARATION
+/**
+* Class representing a window for a video player.
+*/
+class MLcWindow
+ {
+ public:
+
+ /**
+ * The possible window orientations.
+ */
+ enum TLcWindowOrientation
+ {
+ EPortrait, // Normal
+ ELandscape // 90 degree's clockwise rotation
+ };
+
+ /**
+ * Enables / disables the window into use
+ * and start / stops to show the video in it.
+ * @param aEnabled ETrue enables the window, EFalse disables it.
+ */
+ virtual void EnableLcWindowL( TBool aEnable ) = 0;
+
+ /**
+ * Checks whether the window has been enabled.
+ * @return ETrue if the window has been enabled, otherwise EFalse.
+ */
+ virtual TBool IsLcWindowEnabled() = 0;
+
+ /**
+ * Sets the rectangle for the window.
+ * @param aRect the rectangle for the window
+ */
+ virtual void SetLcWindowRectL( TRect aRect ) = 0;
+
+ /**
+ * Returns the current rectangle for the window.
+ * @return the current rectangle for the window
+ */
+ virtual TRect LcWindowRect() = 0;
+
+ /**
+ * Sets the window orientation.
+ * @param aOrientation the current window orientation
+ */
+ virtual void SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation ) = 0;
+
+ /**
+ * Returns the current window orientation.
+ * @return the current window orientation
+ */
+ virtual TLcWindowOrientation LcWindowOrientationL() = 0;
+ };
+
+#endif // MLCWINDOW_H
+
+// end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharinguis_plat/live_comms_plugin_api/inc/lczoomcontrol.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2009 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 MLCZOOMCONTROL_H
+#define MLCZOOMCONTROL_H
+
+// INCLUDES
+#include <e32std.h>
+
+// CLASS DECLARATION
+/**
+* Class for controlling the zoom level of a video player.
+*/
+class MLcZoomControl
+ {
+ public:
+
+ /**
+ * Returns the minimum zoom value.
+ * @return the minimum zoom value
+ */
+ virtual TInt MinLcZoomL() = 0;
+
+ /**
+ * Returns the maximum zoom value.
+ * @return the maximum zoom value
+ */
+ virtual TInt MaxLcZoomL() = 0;
+
+ /**
+ * Returns the current value for the zoom.
+ * @return the current zoom value
+ */
+ virtual TInt LcZoomValueL() = 0;
+
+ /**
+ * Sets the current zoom level.
+ * @pre aValue >= MinLcZoomL && aValue <= MaxLcZoomL
+ * @param aValue the new zoom level
+ */
+ virtual void SetLcZoomValueL( TInt aValue ) = 0;
+
+ /**
+ * Zooms in by one step.
+ */
+ virtual void LcZoomInL() = 0;
+
+ /**
+ * Zooms out by one step.
+ */
+ virtual void LcZoomOutL() = 0;
+ };
+
+#endif // MLCZOOMCONTROL_H
+
+// end of file
--- a/mmsharinguis_plat/multimedia_sharing_manager_api/inc/musmanager.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharinguis_plat/multimedia_sharing_manager_api/inc/musmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -52,6 +52,7 @@
{
ESipOptions = 0x1028238D,
ESipInviteDesired = 0x10282391,
+ ESipInviteDesired2WayVideo = 0x10282392,
ESipInviteNotDesired = 0x1028238D
};
--- a/mmsharinguis_plat/multimedia_sharing_manager_api/inc/musmanagercommon.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharinguis_plat/multimedia_sharing_manager_api/inc/musmanagercommon.h Tue Aug 31 15:12:07 2010 +0300
@@ -61,7 +61,9 @@
EMusClipVideo, // video clip sharing
EMusStillImage, // still image sharing
EMusReceive, // receive video
- EMusContinue // continue running the existing application
+ EMusContinue, // continue running the existing application
+ EMusTwoWayVideo, // two-way sharing
+ EMusReceiveTwoWayVideo // two-way receive video
};
/** Contains the possible commands of MultimediaSharing. */
enum TCommandType
--- a/mmsharinguis_plat/multimedia_sharing_settings_api/inc/mussettingskeys.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmsharinguis_plat/multimedia_sharing_settings_api/inc/mussettingskeys.h Tue Aug 31 15:12:07 2010 +0300
@@ -202,19 +202,84 @@
* Contains UID of the encoding device meant to be used. Read by MuS Engine
*/
const TInt KEncodingDevice( 0x0F );
+
+ /**
+ * Defines whether multimediasharing is restricted to CS call type only.
+ * Default value will be 0 ( EFalse ) means it is allowed in all call types
+ * for example VOIP and Skype calls.
+ */
+ const TInt KAllowOnlyWithActiveCSCall( 0x10 );
+ /** Contains the possible values of KAllowedCSOnly key. */
+ enum TAllowedCSOnly
+ {
+ EAllowedAllCalls,
+ EAllowedCSOnly
+ };
+
+ /**
+ * Defines whether multimediasharing is restricted to 3G bearer only.
+ * Default value will be 0 ( EFalse ) means it is allowed in all bearer types
+ * for example 3G,WLAN etc.
+ */
+ const TInt KAllowOnlyIn3GNetwork( 0x11 );
+ /** Contains the possible values of KAllowed3GOnly key. */
+ enum TAllowed3GOnly
+ {
+ EAllowedAllBearers,
+ EAllowed3GOnly
+ };
+
+ /**
+ * Defines which and how cameras are used. The default value
+ * is EUseCameraSwapping. To disable camera swapping and roll back
+ * old behaviuor, value must be set to EUseOnlyMainCamera.
+ * to the menu or to the toolbar.
+ */
+ const TInt KCameraUsage( 0x12 );
+
+ /** Contains the possible values of KCameraUsage key. */
+ enum TUseCamera
+ {
+ EUseOnlyMainCamera,
+ EUseOnlySecondaryCamera,
+ EUseCameraSwapping
+ };
+
+ /**
+ * Defines whether multimediasharing is supporting 2-way video. The
+ * default value is EOneWayVideo.
+ */
+ const TInt KVideoDirection( 0x13 );
- /** Defines the type of privcy exchange.
- Defines that how are SIP PRIVACY id handled */
- const TInt KPrivacyExchange( 0x10 );
-
- enum TPrivacyExchange
+ /** Contains the possible values of KVideoDirection key. */
+ enum TVideoDirection
{
- EPrivacy = 1,
- ENoPrivacy
+ EOneWayVideo,
+ ETwoWayVideo
};
-
+
+ /**
+ * Defines whether b=AS and b=TIAS SDP attributes are used. Zero value
+ * means that usage of TIAS is disabled, only AS will be used (hard coded
+ * value). Positive value means AS in KBits per second. TIAS value will
+ * be set to AS multiplied by 1000.
+ */
+ const TInt KVideoBandwidth( 0x14 );
+
+ /**
+ * Defines whether multimediasharing is supporting fast startup mode
+ */
+ const TInt KFastStartupMode( 0x15 );
+
+ /** Contains the possible values of KFastStartupMode key. */
+ enum TFastMode
+ {
+ EFastModeOn,
+ EFastModeOff,
+ EFastModeDisabled
+ };
}
-
+
#endif // MUSSETTINGSKEYS_H
--- a/mmshplugins/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -23,6 +23,6 @@
#include "../mmshaoplugin/group/bld.inf"
#include "../mmshaiwplugin/group/bld.inf"
#include "../mmshsipcrplugin/group/bld.inf"
-#include "../mmshsettingsuiplugin/group/bld.inf"
+//#include "../mmshsettingsuiplugin/group/bld.inf"
#include "../mmshwpadapterplugin/group/bld.inf"
//#include "../mmcctranscoder/group/bld.inf"
--- a/mmshplugins/mmcctranscoder/tsrc/stubs/group/ABLD.BAT Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-@ECHO OFF
-
-REM Bldmake-generated batch file - ABLD.BAT
-REM ** DO NOT EDIT **
-
-perl -S ABLD.PL "\IPAS_Domain\IPAS_Domain\ipappsrv\multimediacommscontroller\mmcctranscoder\tsrc\stubs\group\\" %1 %2 %3 %4 %5 %6 %7 %8 %9
-if errorlevel==1 goto CheckPerl
-goto End
-
-:CheckPerl
-perl -v >NUL
-if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
-goto End
-
-:End
--- a/mmshplugins/mmcctranscoder/tsrc/ut_transcoder/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmcctranscoder/tsrc/ut_transcoder/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -24,5 +24,5 @@
PRJ_EXPORTS
-PRJ_TESTMMPFILES
+PRJ_MMPFILES
ut_transcoder.mmp
--- a/mmshplugins/mmcctranscoder/tsrc/ut_transcoder/group/ut_transcoder.pkg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-;
-; Copyright (c) 2009 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:
-;
-
-;Languages
-&EN
-
-;Header
-#{"EUnit: MMSHMTRANSC"},(0x01700000),1,0,0
-
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique vendor name
-:"Nokia"
-
-;DLL files
-"\epoc32\release\armv5\urel\ut_transcoder.dll"-"c:\sys\bin\ut_transcoder.dll"
--- a/mmshplugins/mmshaiwplugin/data/10282389.rss Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/data/10282389.rss Tue Aug 31 15:12:07 2010 +0300
@@ -57,3 +57,8 @@
}
};
}
+
+// end of file
+
+
+
--- a/mmshplugins/mmshaiwplugin/group/musaiwprovider.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/group/musaiwprovider.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -52,6 +52,7 @@
// MultimediaSharing libraries
LIBRARY musmanagerclient.lib
+LIBRARY musindicator.lib
// SymbianOS/Series60 libraries
LIBRARY aknnotify.lib
--- a/mmshplugins/mmshaiwplugin/inc/musaiwprovider.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/inc/musaiwprovider.h Tue Aug 31 15:12:07 2010 +0300
@@ -144,6 +144,9 @@
void OperatorVariantStartUpL( TFileName& aFileName,
CAiwMenuPane& aMenuPane,
TInt aIndex );
+
+ void FastModeStartUpL(
+ TFileName& aFileName, CAiwMenuPane& aMenuPane, TInt aIndex );
void ShowErrorNoteL( TInt aError );
@@ -152,9 +155,16 @@
HBufC8* ErrorNoteText8L( TInt aError, RResourceFile& aResourceFile );
void DoInitialiseL();
-
- void DoInitializeMenuPaneL( CAiwMenuPane& aMenuPane, TInt aIndex );
+ TBool AvailabilityOk(
+ MultimediaSharing::TMusAvailabilityStatus aAvailability ) const;
+
+ TBool HiddenFromFastSwapL();
+
+ TBool IsFastStartupModeL();
+
+ void StartApplicationL(
+ CMusManager& aManager, MultimediaSharing::TMusUseCase aUseCase );
private: // data
@@ -166,6 +176,8 @@
/** To Differentiate Error and Warning Notes */
TBool iIsWarning ;
+
+ CMusIndicatorApi* iIndicator;
};
--- a/mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -27,6 +27,8 @@
#include "musresourcefinderutil.h"
#include "mussettings.h"
#include "mussesseioninformationapi.h"
+#include "musindicatorapi.h"
+#include "mussessionproperties.h"
#include <musresourceproperties.h>
@@ -48,6 +50,7 @@
#include <utf.h>
#include <features.hrh>
#include <aknenv.h>
+#include <UikonInternalPSKeys.h>
//////// public -- constructor and destructor ////////
@@ -77,8 +80,9 @@
{
MUS_LOG( "mus: [AIWPRO] -> CMusAiwProvider::~CMusAiwProvider" )
delete iResourceFileName ;
- iResourceFileName = NULL ;
-
+ iResourceFileName = NULL ;
+ delete iIndicator;
+ iIndicator = NULL ;
MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::~CMusAiwProvider" )
}
@@ -143,25 +147,7 @@
TInt /* aCascadeId */,
const CAiwGenericParamList& /* aInParamList */ )
{
- FeatureManager::InitializeLibL();
- TBool support = FeatureManager::FeatureSupported( KFeatureIdMultimediaSharing );
- FeatureManager::UnInitializeLib();
- if( support )
- {
- DoInitializeMenuPaneL( aMenuPane, aIndex );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// Initializes menu pane by adding provider-specific menu items.
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::DoInitializeMenuPaneL(
- CAiwMenuPane& aMenuPane,
- TInt aIndex)
- {
- MUS_LOG1( "mus: [AIWPRO] -> CMusAiwProvider::DoInitializeMenuPaneL( %d )",
+ MUS_LOG1( "mus: [AIWPRO] -> CMusAiwProvider::InitializeMenuPaneL( %d )",
aIndex )
if( iResourceFileName == NULL )
@@ -172,7 +158,10 @@
TFileName filename ( *iResourceFileName );
MUS_LOG_TDESC( "mus: [AIWPRO] Resource filename: ", filename )
- if( ApplicationRunningL() )
+ // If app running but hidden from fast swap it means that application
+ // is hidden from user and options menu should look same as
+ // when application is not yet started
+ if( ApplicationRunningL() && !HiddenFromFastSwapL() )
{
MUS_LOG( "mus: [AIWPRO] Application already running:\
giving _continue sharing_ menu command" )
@@ -191,6 +180,10 @@
{
OperatorVariantStartUpL( filename, aMenuPane, aIndex );
}
+ else if ( IsFastStartupModeL() )
+ {
+ FastModeStartUpL( filename, aMenuPane, aIndex );
+ }
else
{
NoVariationStartUpL( filename, aMenuPane, aIndex );
@@ -198,7 +191,7 @@
}
- MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::DoInitializeMenuPaneL" )
+ MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::InitializeMenuPaneL" )
}
// -----------------------------------------------------------------------------
@@ -209,7 +202,12 @@
void CMusAiwProvider::DoInitialiseL()
{
MUS_LOG( "mus: [AIWPRO] -> CMusAiwProvider::DoInitialiseL")
-
+
+ if ( !iIndicator )
+ {
+ MUS_LOG( "mus: [AIWPRO] : creating indicator")
+ iIndicator = CMusIndicatorApi::NewL();
+ }
MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::DoInitialiseL")
}
@@ -252,19 +250,10 @@
3.When iAvailability plugin says OK ( Based on call,network,settingui item)
4.Also in confrence and hold cases
*/
- if ( iAvailability == MultimediaSharing::ESipRegistrationPending ||
- iAvailability == MultimediaSharing::ESipOptionsSent ||
- iAvailability == MultimediaSharing::EMultimediaSharingAvailable ||
- iAvailability == MultimediaSharing::EErrCallOnHold ||
- iAvailability == MultimediaSharing::EErrConferenceCall ||
- iAvailability == MultimediaSharing::ESipOptionsNotCapable ||
- iAvailability == MultimediaSharing::ESipOptionsNotSent ||
- iAvailability == MultimediaSharing::EErrNetwork ||
- iAvailability == MultimediaSharing::EManualActivation ||
- iAvailability == MultimediaSharing::EErrConnection ||
- iAvailability == MultimediaSharing::EErrSipRegistration )
+ if ( AvailabilityOk( iAvailability ) )
{
- MUS_LOG1( "mus: [AIWPRO] Showing AIW Menu -> iAvailability = %d ",iAvailability )
+ MUS_LOG1( "mus: [AIWPRO] Showing AIW Menu -> iAvailability = %d ",
+ iAvailability )
TInt resourceID = R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ;
if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) )
{
@@ -278,7 +267,8 @@
}
else
{
- MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",iAvailability )
+ MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",
+ iAvailability )
}
CleanupStack::PopAndDestroy( manager );
MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::NoVariationStartUpL" )
@@ -300,7 +290,8 @@
// should be shown in call menu only if iAvailability plugin returns OK
if ( iAvailability == MultimediaSharing::EMultimediaSharingAvailable )
{
- MUS_LOG1( "mus: [AIWPRO] Showing AIW Menu -> iAvailability = %d ", iAvailability )
+ MUS_LOG1( "mus: [AIWPRO] Showing AIW Menu -> iAvailability = %d ",
+ iAvailability )
TInt resourceID = R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ;
if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) )
{
@@ -314,7 +305,8 @@
}
else
{
- MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",iAvailability )
+ MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",
+ iAvailability )
}
CleanupStack::PopAndDestroy( manager );
@@ -323,6 +315,60 @@
}
// -----------------------------------------------------------------------------
+// In fast mode, Multimediasharing Menu items
+// should not be shown before options queries have completed. Outcome
+// of queries does not matter.
+// -----------------------------------------------------------------------------
+//
+void CMusAiwProvider::FastModeStartUpL(
+ TFileName& aFileName, CAiwMenuPane& aMenuPane, TInt aIndex )
+ {
+ MUS_LOG( "mus: [AIWPRO] -> CMusAiwProvider::FastModeStartUpL" )
+
+ if ( MultimediaSharingSettings::CapabilityQuerySettingL() !=
+ MusSettingsKeys::EParallel )
+ {
+ // If parallel capability query is not enabled, use normal startup as
+ // capability query is essential for fast session setup
+ NoVariationStartUpL( aFileName, aMenuPane, aIndex );
+ }
+ else
+ {
+ CMusManager* manager = CMusManager::NewLC();
+ iAvailability = manager->AvailabilityL();
+
+ if ( iAvailability == MultimediaSharing::ESipRegistrationPending ||
+ iAvailability == MultimediaSharing::ESipOptionsSent ||
+ !AvailabilityOk( iAvailability ) )
+ {
+ // Need to wait for options to complete
+ MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",
+ iAvailability )
+ }
+ else
+ {
+ // It does not matter what was result of query
+ MUS_LOG1( "mus: [AIWPRO] Showing AIW Menu -> iAvailability = %d ",
+ iAvailability )
+ TInt resourceID = R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ;
+ if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) )
+ {
+ MUS_LOG( "mus: [AIWPRO] Camera Not Available" )
+ resourceID = R_MUSAIWPROVIDER_NOCAMERA_CASCADED_SUBMENU ;
+ }
+ aMenuPane.AddMenuItemsL( aFileName,
+ resourceID,
+ KMusAiwProviderUid,
+ aIndex );
+ }
+
+ CleanupStack::PopAndDestroy( manager );
+ }
+
+ MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::FastModeStartUpL" )
+ }
+
+// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
@@ -501,32 +547,29 @@
{
MUS_LOG( "mus: [AIWPRO] \
EMusCommandLiveShare: Will now attempt to start Mus." )
- TRAP( error, manager->StartApplicationL(
- MultimediaSharing::EMusLiveVideo ) );
+ TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusLiveVideo ) );
break;
}
case EMusCommandClipShare:
{
MUS_LOG( "mus: [AIWPRO] \
- EMusCommandClipShare: Will now attempt to start Mus." )
- TRAP( error, manager->StartApplicationL(
- MultimediaSharing::EMusClipVideo ) );
+ EMusCommandClipShare: Will now attempt to start Mus." )
+ TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusClipVideo ) );
+
break;
}
case EMusCommandImageShare:
{
MUS_LOG( "mus: [AIWPRO] \
EMusCommandImageShare: Will now attempt to start Mus." )
- TRAP( error, manager->StartApplicationL(
- MultimediaSharing::EMusStillImage ) );
+ TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusStillImage ) );
break;
}
case EMusCommandContinue:
{
MUS_LOG( "mus: [AIWPRO] \
EMusCommandContinue: Will now attempt to start/continue Mus." )
- TRAP( error, manager->StartApplicationL(
- MultimediaSharing::EMusContinue ) );
+ TRAP( error, StartApplicationL( *manager, MultimediaSharing::EMusContinue ) );
break;
}
default:
@@ -548,4 +591,129 @@
MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::HandleMenuCmdL" )
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusAiwProvider::AvailabilityOk(
+ MultimediaSharing::TMusAvailabilityStatus aAvailability ) const
+ {
+ return (
+ aAvailability == MultimediaSharing::ESipRegistrationPending ||
+ aAvailability == MultimediaSharing::ESipOptionsSent ||
+ aAvailability == MultimediaSharing::EMultimediaSharingAvailable ||
+ aAvailability == MultimediaSharing::EErrCallOnHold ||
+ aAvailability == MultimediaSharing::EErrConferenceCall ||
+ aAvailability == MultimediaSharing::ESipOptionsNotCapable ||
+ aAvailability == MultimediaSharing::ESipOptionsNotSent ||
+ aAvailability == MultimediaSharing::EErrNetwork ||
+ aAvailability == MultimediaSharing::EManualActivation ||
+ aAvailability == MultimediaSharing::EErrConnection ||
+ aAvailability == MultimediaSharing::EErrSipRegistration );
+ }
+
+// -----------------------------------------------------------------------------
+// App's fastswap visibility status is interesting only in fast mode.
+// -----------------------------------------------------------------------------
+//
+TBool CMusAiwProvider::HiddenFromFastSwapL()
+ {
+ MUS_LOG( "mus: [AIWPRO] -> CMusAiwProvider::HiddenFromFastSwapL" )
+
+ TBool hidden( EFalse );
+ if ( !IsFastStartupModeL() )
+ {
+ MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::HiddenFromFastSwapL" )
+ return hidden;
+ }
+
+ const TInt KMusAiwMaxHiddenAppSizeMod = 4;
+ TBuf16 <KMusAiwMaxHiddenAppSizeMod*KMaxHiddenApps> hiddenList;
+ TInt err = RProperty::Get( KPSUidUikon, KUikAppHiddenList, hiddenList );
+ MUS_LOG1( "mus: [AIWPRO] Hidden list read:%d", err )
+
+ if ( err == KErrNone )
+ {
+ TBool continueFinding( ETrue );
+ MUS_LOG1( "mus: [AIWPRO] Hidden list len:%d", hiddenList.Length() )
+ for ( TInt i = 0; i < KMaxHiddenApps && continueFinding; i++ )
+ {
+ // 32-bit uid values are retrieved in two 16-bit parts
+ __ASSERT_ALWAYS( hiddenList.Length() > i + 1, User::Leave( KErrEof ) );
+ TUint32 listValue = hiddenList[ i ] << 16;
+ listValue += hiddenList[ ++i ];
+ // the value NULL marks the end of array -> leave the loop
+ if ( listValue )
+ {
+ MUS_LOG1( "mus: [AIWPRO] Hidden uid:%d", listValue )
+ if ( listValue == KMusUiUid )
+ {
+ hidden = ETrue;
+ continueFinding = EFalse;
+ }
+ }
+ else
+ {
+ // Zero value means ending of list
+ continueFinding = EFalse;
+ }
+ }
+ }
+
+ MUS_LOG1( "mus: [AIWPRO] <- CMusAiwProvider::HiddenFromFastSwapL:%d", hidden )
+
+ return hidden;
+ }
+
+// -----------------------------------------------------------------------------
+// Check whether fast mode is enabled, take in count that key
+// might not be present.
+// -----------------------------------------------------------------------------
+//
+TBool CMusAiwProvider::IsFastStartupModeL()
+ {
+ TBool fastModeEnabled( EFalse );
+ MusSettingsKeys::TFastMode fastMode( MusSettingsKeys::EFastModeOff );
+ TRAPD( err, fastMode = MultimediaSharingSettings::FastStartupModeL() );
+ if ( err == KErrNoMemory )
+ {
+ User::Leave( err );
+ }
+ if ( err == KErrNone )
+ {
+ fastModeEnabled = ( fastMode == MusSettingsKeys::EFastModeOn );
+ }
+ return fastModeEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+// If fast mode is enabled and app is running and hidden, it has been started
+// with live use-case but user does not know that. If user tries to do
+// clip usecase in such situation, use case is just updated and engine
+// takes case of bringing hidden application to foreground.
+// -----------------------------------------------------------------------------
+//
+void CMusAiwProvider::StartApplicationL(
+ CMusManager& aManager, MultimediaSharing::TMusUseCase aUseCase )
+ {
+ MUS_LOG( "mus: [AIWPRO] -> CMusAiwProvider::StartApplicationL" )
+
+ TBool startApp( ETrue );
+ if ( IsFastStartupModeL() && aUseCase == MultimediaSharing::EMusClipVideo &&
+ ApplicationRunningL() && HiddenFromFastSwapL() )
+ {
+ MUS_LOG( "mus: [AIWPRO] App already running hidden, change only usecase!" )
+ User::LeaveIfError( RProperty::Set(
+ NMusSessionApi::KCategoryUid, NMusSessionApi::KUseCase, aUseCase ) );
+ startApp = EFalse;
+ }
+
+ if ( startApp )
+ {
+ aManager.StartApplicationL( aUseCase );
+ }
+
+ MUS_LOG( "mus: [AIWPRO] <- CMusAiwProvider::StartApplicationL" )
+ }
+
// end of file
--- a/mmshplugins/mmshaiwplugin/tsrc/ut_aiwplugin/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/tsrc/ut_aiwplugin/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -15,6 +15,6 @@
*
*/
-PRJ_TESTMMPFILES
+PRJ_MMPFILES
ut_musaiwprovider.mmp
--- a/mmshplugins/mmshaiwplugin/tsrc/ut_aiwplugin/group/ut_aiwprovider.pkg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-;
-; Copyright (c) 2009 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:
-;
-
-;Languages
-&EN
-
-;Header
-#{"EUnit: MMSHAIWPr"},(0x01700000),1,0,0
-
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique vendor name
-:"Nokia"
-
-;DLL files
-"\epoc32\release\armv5\urel\ut_musaiwprovider.dll"-"c:\sys\bin\ut_musaiwprovider.dll"
--- a/mmshplugins/mmshaiwplugin/tsrc/ut_aiwplugin/group/ut_musaiwprovider.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/tsrc/ut_aiwplugin/group/ut_musaiwprovider.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -17,7 +17,7 @@
// To get the APP_LAYER_SYSTEMINCLUDE-definition
#include <platform_paths.hrh>
-#include<eunitcaps.h>
+#include <eunitcaps.h>
TARGET ut_musaiwprovider.dll
TARGETTYPE dll
@@ -25,7 +25,7 @@
TARGETPATH /z/sys/bin
UID 0x1000af5a 0x01700a22
-CAPABILITY EUNIT_CAPS
+CAPABILITY EUNIT_CAPS
VENDORID VID_DEFAULT
MACRO UNIT_TESTING
@@ -47,8 +47,11 @@
SOURCEPATH ../../../../../tsrc/featmgrstub/src
SOURCE FeatMgr.cpp
+SOURCEPATH ../../../../../tsrc/propertystub/src
+SOURCE e32property.cpp
+
SOURCEPATH ../../../../../tsrc/musmanagerstub/src
-SOURCE musmanagerstub.cpp
+SOURCE musmanagerstub.cpp
// Test classes
SOURCEPATH ../src
SOURCE ut_musaiwproviderdllmain.cpp
@@ -60,13 +63,27 @@
SOURCE musaiwprovider.cpp
+// Centrep Stub
+SOURCEPATH ../../../../../tsrc/centralrepositorystub/src
+SOURCE centralrepositorystub.cpp
+
+
+// Stup User Includes
+USERINCLUDE ../../../../../tsrc/resourcefilestub/inc
+USERINCLUDE ../../../../../tsrc/propertystub/inc
+USERINCLUDE ../../../../../tsrc/centralrepositorystub/inc
+
+// Actual User Includes
USERINCLUDE ../inc
-USERINCLUDE ../../../inc
+USERINCLUDE ../../../inc
+
+// Test Includes.
USERINCLUDE ../../../../../tsrc/musmanagerstub/inc
USERINCLUDE ../../../../../tsrc/ututils/inc
USERINCLUDE ../../../../../inc
USERINCLUDE ../../../../../tsrc/Apastub/inc
-USERINCLUDE ../../../../../tsrc/resourcefilestub/inc
+USERINCLUDE ../../../../../tsrc/featmgrstub/inc
+
// to replace FeatMgr.h with a stub
@@ -78,6 +95,12 @@
// to replace barsc.h with a stub
SYSTEMINCLUDE ../../../../../tsrc/resourcefilestub/inc
+// to replace RProperty with a stub
+SYSTEMINCLUDE ../../../../../tsrc/propertystub/inc
+
+// Centrep stub
+SYSTEMINCLUDE ../../../../../tsrc/centralrepositorystub/inc
+
// Default system include paths for application layer modules.
APP_LAYER_SYSTEMINCLUDE
@@ -93,8 +116,7 @@
LIBRARY eikcore.lib
LIBRARY eunit.lib
LIBRARY charconv.lib
-LIBRARY centralrepository.lib
-
+//LIBRARY centralrepository.lib
LIBRARY flogger.lib
LIBRARY servicehandler.lib // AIW Consumer API
--- a/mmshplugins/mmshaiwplugin/tsrc/ut_aiwplugin/inc/ut_musaiwprovider.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/tsrc/ut_aiwplugin/inc/ut_musaiwprovider.h Tue Aug 31 15:12:07 2010 +0300
@@ -25,6 +25,8 @@
#include <eikmobs.h>
class CMusAiwProvider;
+class CAiwMenuPane;
+class CEikMenuPane;
/**
* Main plugin class
@@ -96,17 +98,23 @@
void UT_CMusAiwProvider_InitializeMenuPaneL4L();
void UT_CMusAiwProvider_InitializeMenuPaneL5L();
void UT_CMusAiwProvider_InitializeMenuPaneL6L();
- void UT_CMusAiwProvider_InitializeMenuPaneL7L();
+ void UT_CMusAiwProvider_InitializeMenuPaneLFastModeL();
+ void UT_CMusAiwProvider_InitializeMenuPaneLFastMode2L();
-
void UT_CMusAiwProvider_HandleMenuCmdLL();
+ void UT_CMusAiwProvider_HandleMenuCmdLFastModeL();
void UT_CMusAiwProvider_ApplicationRunningLL();
void UT_CMusAiwProvider_ShowErrorNoteLL();
void UT_CMusAiwProvider_ErrorNoteTextLCL();
void UT_CMusAiwProvider_ErrorNoteText8LL();
- void UT_ImplementationGroupProxyL();
+ void UT_ImplementationGroupProxyL();
+ void UT_HiddenFromFastSwapL();
+ public: // Helpers
+
+ CAiwMenuPane* CreateAiwMenuPaneLC( CEikMenuPane** aEikPane );
+
private: // data
CMusAiwProvider* iProvider;
--- a/mmshplugins/mmshaiwplugin/tsrc/ut_aiwplugin/src/ut_musaiwprovider.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/tsrc/ut_aiwplugin/src/ut_musaiwprovider.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-#include <eikmenup.h>
+
#include "ut_musaiwprovider.h"
#include "musaiwprovider.h"
#include "musaiwprovider.hrh"
@@ -27,6 +27,7 @@
#include "mussesseioninformationapi.h"
#include "mussettings.h"
#include "mustesthelp.h"
+#include "mussessionproperties.h"
#define MUS_MEMORY_LEAVE_CHECKING_ON
#include <e32property.h>
@@ -38,6 +39,8 @@
#include <digia/eunit/eunitmacros.h>
#include <aknglobalnote.h>
#include <apgtask.h>
+#include <eikmenup.h>
+#include <uikoninternalpskeys.h>
// Next row is to disable warning emerging from EUnit code.
@@ -49,6 +52,8 @@
_LIT( KMusAiwProviderResource, "c:\\sys\\bin\\musaiwproviderui.rsc" );
_LIT( KResourceFilenameRom,"z:\\sys\\bin\\musaiwproviderui.rsc" );
+_LIT( KMusOnHold, "On hold" );
+
_LIT8( KMusOnHold8, "On hold" );
_LIT8( KMusNetworkIncompatible8, "Network incompatible" );
_LIT8( KMusConferenceCall8, "Conference call" );
@@ -159,6 +164,8 @@
CMusManager::SetUseCase( MultimediaSharing::EMusContinue );
CMusManager::SetStartError( KErrNone );
CMusManager::SetAvailability( KErrNone );
+ MultimediaSharingSettings::SetPropertyValueL(
+ MusSettingsKeys::KFastStartupMode, MusSettingsKeys::EFastModeOff );
}
@@ -170,6 +177,7 @@
void UT_CMusAiwProvider::Teardown( )
{
delete iProvider;
+ PropertyHelper::Close();
}
@@ -273,28 +281,17 @@
//
void UT_CMusAiwProvider::UT_CMusAiwProvider_InitializeMenuPaneLL()
{
-
-
RFs fs;
User::LeaveIfError( fs.Connect() );
-
CleanupClosePushL( fs );
-
+
BaflUtils::CopyFile( fs, KMusAiwProviderResource(),
KResourceFilenameRom() );
CAiwGenericParamList* list = CAiwGenericParamList::NewLC();
- CEikMenuPane* eikPane = new( ELeave ) CEikMenuPane( this );
- CleanupStack::PushL( eikPane );
-
- // Constructing eikPane is not compulsory for testing and leads to a memory
- // leak.
- //eikPane->ConstructL( NULL, this );
-
- CAiwMenuPane* aiwPane = new( ELeave ) CAiwMenuPane( *eikPane, 0 ); //Takes ownership
- CleanupStack::Pop( eikPane );
- CleanupStack::PushL( aiwPane );
+ CEikMenuPane* eikPane = NULL;
+ CAiwMenuPane* aiwPane = CreateAiwMenuPaneLC( &eikPane );
// ResourceFile is empty
delete iProvider->iResourceFileName;
@@ -372,28 +369,18 @@
void UT_CMusAiwProvider::UT_CMusAiwProvider_InitializeMenuPaneL2L()
{
-
RFs fs;
User::LeaveIfError( fs.Connect() );
-
CleanupClosePushL( fs );
-
+
BaflUtils::CopyFile( fs, KMusAiwProviderResource(),
KResourceFilenameRom() );
CAiwGenericParamList* list = CAiwGenericParamList::NewLC();
- CEikMenuPane* eikPane = new( ELeave ) CEikMenuPane( this );
- CleanupStack::PushL( eikPane );
-
- // Constructing eikPane is not compulsory for testing and leads to a memory
- // leak.
- //eikPane->ConstructL( NULL, this );
-
- CAiwMenuPane* aiwPane = new( ELeave ) CAiwMenuPane( *eikPane, 0 ); //Takes ownership
- CleanupStack::Pop( eikPane );
- CleanupStack::PushL( aiwPane );
-
+ CEikMenuPane* eikPane = NULL;
+ CAiwMenuPane* aiwPane = CreateAiwMenuPaneLC( &eikPane );
+
// ResourceFile is empty
delete iProvider->iResourceFileName;
@@ -441,27 +428,17 @@
void UT_CMusAiwProvider::UT_CMusAiwProvider_InitializeMenuPaneL3L()
{
-
RFs fs;
User::LeaveIfError( fs.Connect() );
-
CleanupClosePushL( fs );
-
+
BaflUtils::CopyFile( fs, KMusAiwProviderResource(),
KResourceFilenameRom() );
CAiwGenericParamList* list = CAiwGenericParamList::NewLC();
- CEikMenuPane* eikPane = new( ELeave ) CEikMenuPane( this );
- CleanupStack::PushL( eikPane );
-
- // Constructing eikPane is not compulsory for testing and leads to a memory
- // leak.
- //eikPane->ConstructL( NULL, this );
-
- CAiwMenuPane* aiwPane = new( ELeave ) CAiwMenuPane( *eikPane, 0 ); //Takes ownership
- CleanupStack::Pop( eikPane );
- CleanupStack::PushL( aiwPane );
+ CEikMenuPane* eikPane = NULL;
+ CAiwMenuPane* aiwPane = CreateAiwMenuPaneLC( &eikPane );
// ResourceFile is empty
delete iProvider->iResourceFileName;
@@ -508,27 +485,17 @@
void UT_CMusAiwProvider::UT_CMusAiwProvider_InitializeMenuPaneL4L()
{
-
RFs fs;
User::LeaveIfError( fs.Connect() );
-
CleanupClosePushL( fs );
-
+
BaflUtils::CopyFile( fs, KMusAiwProviderResource(),
KResourceFilenameRom() );
CAiwGenericParamList* list = CAiwGenericParamList::NewLC();
- CEikMenuPane* eikPane = new( ELeave ) CEikMenuPane( this );
- CleanupStack::PushL( eikPane );
-
- // Constructing eikPane is not compulsory for testing and leads to a memory
- // leak.
- //eikPane->ConstructL( NULL, this );
-
- CAiwMenuPane* aiwPane = new( ELeave ) CAiwMenuPane( *eikPane, 0 ); //Takes ownership
- CleanupStack::Pop( eikPane );
- CleanupStack::PushL( aiwPane );
+ CEikMenuPane* eikPane = NULL;
+ CAiwMenuPane* aiwPane = CreateAiwMenuPaneLC( &eikPane );
// ResourceFile is empty
delete iProvider->iResourceFileName;
@@ -575,27 +542,17 @@
void UT_CMusAiwProvider::UT_CMusAiwProvider_InitializeMenuPaneL5L()
{
-
RFs fs;
User::LeaveIfError( fs.Connect() );
-
CleanupClosePushL( fs );
-
+
BaflUtils::CopyFile( fs, KMusAiwProviderResource(),
KResourceFilenameRom() );
CAiwGenericParamList* list = CAiwGenericParamList::NewLC();
- CEikMenuPane* eikPane = new( ELeave ) CEikMenuPane( this );
- CleanupStack::PushL( eikPane );
-
- // Constructing eikPane is not compulsory for testing and leads to a memory
- // leak.
- //eikPane->ConstructL( NULL, this );
-
- CAiwMenuPane* aiwPane = new( ELeave ) CAiwMenuPane( *eikPane, 0 ); //Takes ownership
- CleanupStack::Pop( eikPane );
- CleanupStack::PushL( aiwPane );
+ CEikMenuPane* eikPane = NULL;
+ CAiwMenuPane* aiwPane = CreateAiwMenuPaneLC( &eikPane );
// ResourceFile is empty
delete iProvider->iResourceFileName;
@@ -644,27 +601,17 @@
void UT_CMusAiwProvider::UT_CMusAiwProvider_InitializeMenuPaneL6L()
{
-
RFs fs;
User::LeaveIfError( fs.Connect() );
-
CleanupClosePushL( fs );
-
+
BaflUtils::CopyFile( fs, KMusAiwProviderResource(),
KResourceFilenameRom() );
CAiwGenericParamList* list = CAiwGenericParamList::NewLC();
- CEikMenuPane* eikPane = new( ELeave ) CEikMenuPane( this );
- CleanupStack::PushL( eikPane );
-
- // Constructing eikPane is not compulsory for testing and leads to a memory
- // leak.
- //eikPane->ConstructL( NULL, this );
-
- CAiwMenuPane* aiwPane = new( ELeave ) CAiwMenuPane( *eikPane, 0 ); //Takes ownership
- CleanupStack::Pop( eikPane );
- CleanupStack::PushL( aiwPane );
+ CEikMenuPane* eikPane = NULL;
+ CAiwMenuPane* aiwPane = CreateAiwMenuPaneLC( &eikPane );
// ResourceFile is empty
delete iProvider->iResourceFileName;
@@ -710,30 +657,19 @@
}
-
-void UT_CMusAiwProvider::UT_CMusAiwProvider_InitializeMenuPaneL7L()
+void UT_CMusAiwProvider::UT_CMusAiwProvider_InitializeMenuPaneLFastModeL()
{
-
RFs fs;
User::LeaveIfError( fs.Connect() );
-
CleanupClosePushL( fs );
-
+
BaflUtils::CopyFile( fs, KMusAiwProviderResource(),
KResourceFilenameRom() );
CAiwGenericParamList* list = CAiwGenericParamList::NewLC();
- CEikMenuPane* eikPane = new( ELeave ) CEikMenuPane( this );
- CleanupStack::PushL( eikPane );
-
- // Constructing eikPane is not compulsory for testing and leads to a memory
- // leak.
- //eikPane->ConstructL( NULL, this );
-
- CAiwMenuPane* aiwPane = new( ELeave ) CAiwMenuPane( *eikPane, 0 ); //Takes ownership
- CleanupStack::Pop( eikPane );
- CleanupStack::PushL( aiwPane );
+ CEikMenuPane* eikPane = NULL;
+ CAiwMenuPane* aiwPane = CreateAiwMenuPaneLC( &eikPane );
// ResourceFile is empty
delete iProvider->iResourceFileName;
@@ -744,31 +680,35 @@
// Menu item counter
TInt menuPaneCount = eikPane->NumberOfItemsInPane();
- // test "forbidden" feature: mus NOT allowed, operator variant set to operator
- MultimediaSharingSettings::SetOperatorVariantSettingL(
- MusSettingsKeys::EOperatorSpecific );
- RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSForbidden,
- NMusSessionInformationApi::EMUSForbidden );
- EUNIT_ASSERT( eikPane->NumberOfItemsInPane() == menuPaneCount )
-
// set operator back to standard and allow mus
RProperty::Set( NMusSessionInformationApi::KCategoryUid ,
NMusSessionInformationApi::KMUSForbidden ,
NMusSessionInformationApi::EMUSAllowed );
MultimediaSharingSettings::SetOperatorVariantSettingL(
MusSettingsKeys::EStandard );
-
- // Cases for "Mush not supported"
- FeatureManager::MultimediaSharingNotSupported();
- CMusManager::SetAvailability( MultimediaSharing::EMultimediaSharingAvailable );
+ MultimediaSharingSettings::SetPropertyValueL(
+ MusSettingsKeys::KFastStartupMode, MusSettingsKeys::EFastModeOn );
+
+ // Options not enabled, mus shown in menu
+ //
+ MultimediaSharingSettings::SetCapabilityQuerySettingL(
+ MusSettingsKeys::ENoOptions );
+ CMusManager::SetAvailability(MultimediaSharing::EMultimediaSharingAvailable);
menuPaneCount = eikPane->NumberOfItemsInPane();
iProvider->InitializeMenuPaneL( *aiwPane, 0, 0, *list );
- MUS_CHECK_MEMORY_LEAVE( eikPane->NumberOfItemsInPane() == menuPaneCount )
- FeatureManager::MultimediaSharingSupported();
+
+ MUS_CHECK_MEMORY_LEAVE( eikPane->NumberOfItemsInPane() == menuPaneCount + 3 )
- // set camera support on
- FeatureManager::CameraSupported();
+ // Options supported, not yet available, mus not shown in menu
+ //
+ MultimediaSharingSettings::SetCapabilityQuerySettingL(
+ MusSettingsKeys::EParallel );
+ CMusManager::SetAvailability(MultimediaSharing::ESipOptionsSent);
+ menuPaneCount = eikPane->NumberOfItemsInPane();
+ iProvider->InitializeMenuPaneL( *aiwPane, 0, 0, *list );
+
+ MUS_CHECK_MEMORY_LEAVE( eikPane->NumberOfItemsInPane() == menuPaneCount )
+
CleanupStack::PopAndDestroy( aiwPane );
CleanupStack::PopAndDestroy( list );
BaflUtils::DeleteFile( fs, KResourceFilenameRom() );
@@ -776,8 +716,53 @@
CleanupStack::PopAndDestroy(); // fs
}
-
-
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusAiwProvider::UT_CMusAiwProvider_InitializeMenuPaneLFastMode2L()
+ {
+ RFs fs;
+ User::LeaveIfError( fs.Connect() );
+ CleanupClosePushL( fs );
+
+ BaflUtils::CopyFile( fs, KMusAiwProviderResource(),
+ KResourceFilenameRom() );
+
+ CAiwGenericParamList* list = CAiwGenericParamList::NewLC();
+
+ CEikMenuPane* eikPane = NULL;
+ CAiwMenuPane* aiwPane = CreateAiwMenuPaneLC( &eikPane );
+
+ // ResourceFile is empty
+ delete iProvider->iResourceFileName;
+
+ iProvider->iResourceFileName = NULL ;
+ iProvider->InitializeMenuPaneL( *aiwPane, 0, 0, *list );
+ EUNIT_ASSERT( iProvider->iResourceFileName != NULL )
+
+ // Options supported, available, mus shown in menu
+ //
+ MultimediaSharingSettings::SetPropertyValueL(
+ MusSettingsKeys::KFastStartupMode, MusSettingsKeys::EFastModeOn );
+
+ MultimediaSharingSettings::SetCapabilityQuerySettingL(
+ MusSettingsKeys::EParallel );
+
+ CMusManager::SetAvailability(MultimediaSharing::EMultimediaSharingAvailable);
+ TInt menuPaneCount = eikPane->NumberOfItemsInPane();
+ iProvider->InitializeMenuPaneL( *aiwPane, 0, 0, *list );
+
+ MUS_CHECK_MEMORY_LEAVE( eikPane->NumberOfItemsInPane() == menuPaneCount + 3 )
+
+ CleanupStack::PopAndDestroy( aiwPane );
+ CleanupStack::PopAndDestroy( list );
+ BaflUtils::DeleteFile( fs, KResourceFilenameRom() );
+
+ CleanupStack::PopAndDestroy(); // fs
+ }
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -792,12 +777,15 @@
EUNIT_ASSERT( CMusManager::UseCase() == MultimediaSharing::EMusLiveVideo )
iProvider->HandleMenuCmdL( EMusCommandClipShare, *pl, *pl, 0, this );
+ MUS_CHECK_MEMORY_LEAVE( CMusManager::UseCase() == MultimediaSharing::EMusClipVideo )
EUNIT_ASSERT( CMusManager::UseCase() == MultimediaSharing::EMusClipVideo )
iProvider->HandleMenuCmdL( EMusCommandImageShare, *pl, *pl, 0, this );
+ MUS_CHECK_MEMORY_LEAVE( CMusManager::UseCase() == MultimediaSharing::EMusStillImage )
EUNIT_ASSERT( CMusManager::UseCase() == MultimediaSharing::EMusStillImage )
iProvider->HandleMenuCmdL( EMusCommandContinue, *pl, *pl, 0, this );
+ MUS_CHECK_MEMORY_LEAVE( CMusManager::UseCase() == MultimediaSharing::EMusContinue )
EUNIT_ASSERT( CMusManager::UseCase() == MultimediaSharing::EMusContinue )
CMusManager::SetStartError(
@@ -838,9 +826,59 @@
//
// -----------------------------------------------------------------------------
//
+void UT_CMusAiwProvider::UT_CMusAiwProvider_HandleMenuCmdLFastModeL()
+ {
+ CAiwGenericParamList* pl = CAiwGenericParamList::NewLC();
+
+ MultimediaSharingSettings::SetPropertyValueL(
+ MusSettingsKeys::KFastStartupMode, MusSettingsKeys::EFastModeOn );
+
+ // Fast mode, start live sharing (handle normally)
+ CMusManager::SetUseCase( MultimediaSharing::EMusContinue );
+ iProvider->HandleMenuCmdL( EMusCommandLiveShare, *pl, *pl, 0, this );
+ MUS_CHECK_MEMORY_LEAVE( CMusManager::UseCase() == MultimediaSharing::EMusLiveVideo )
+ EUNIT_ASSERT( CMusManager::UseCase() == MultimediaSharing::EMusLiveVideo )
+
+ // Fast mode, start clip sharing, app not running nor hidden (handle normally)
+ CMusManager::SetUseCase( MultimediaSharing::EMusContinue );
+ iProvider->HandleMenuCmdL( EMusCommandClipShare, *pl, *pl, 0, this );
+ MUS_CHECK_MEMORY_LEAVE( CMusManager::UseCase() == MultimediaSharing::EMusClipVideo )
+ EUNIT_ASSERT( CMusManager::UseCase() == MultimediaSharing::EMusClipVideo )
+
+ // Fast mode, start clip sharing, app running and hidden (mus mgr is not
+ // used for starting application, only usecase P&S value is changed)
+ CMusManager::SetUseCase( MultimediaSharing::EMusContinue );
+
+ TApaTask::iApplicationExist = ETrue;
+
+ TBuf16< 10 > listOkMus;
+ TUint16 upperBits = KMusUiUid >> 16;
+ listOkMus.Append( upperBits );
+ listOkMus.Append( KMusUiUid );
+ listOkMus.Append( 0 );
+ listOkMus.Append( 0 );
+ RProperty::Set( KPSUidUikon, KUikAppHiddenList, listOkMus );
+
+ RProperty::Set( NMusSessionApi::KCategoryUid, NMusSessionApi::KUseCase, MultimediaSharing::EMusContinue );
+
+ iProvider->HandleMenuCmdL( EMusCommandClipShare, *pl, *pl, 0, this );
+ EUNIT_ASSERT( CMusManager::UseCase() == MultimediaSharing::EMusContinue )
+
+ TInt usecaseAfterFakeStart( 0 );
+ RProperty::Get( NMusSessionApi::KCategoryUid, NMusSessionApi::KUseCase, usecaseAfterFakeStart );
+ EUNIT_ASSERT( usecaseAfterFakeStart == MultimediaSharing::EMusClipVideo );
+
+ CleanupStack::PopAndDestroy( pl );
+
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
void UT_CMusAiwProvider::UT_CMusAiwProvider_ApplicationRunningLL()
{
- // Stub returns EFalse as default
+ TApaTask::iApplicationExist = EFalse;
EUNIT_ASSERT( !iProvider->ApplicationRunningL() )
// Use stub to mimic the existence of application
@@ -971,8 +1009,90 @@
ImplementationGroupProxy( tableCount );
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusAiwProvider::UT_HiddenFromFastSwapL()
+ {
+ // Normal mode
+ MultimediaSharingSettings::SetPropertyValueL(
+ MusSettingsKeys::KFastStartupMode, MusSettingsKeys::EFastModeOff );
+ EUNIT_ASSERT( !iProvider->HiddenFromFastSwapL() )
+
+ // Fast mode
+ //
+ MultimediaSharingSettings::SetPropertyValueL(
+ MusSettingsKeys::KFastStartupMode, MusSettingsKeys::EFastModeOn );
+
+ // Key not found
+ PropertyHelper::SetErrorCode( KErrNotFound );
+ EUNIT_ASSERT( !iProvider->HiddenFromFastSwapL() )
+
+ // Malformed key value
+ PropertyHelper::SetErrorCode( KErrNone );
+ TBuf16< 5 > listMalformed;
+ listMalformed.Copy( _L("05645") );
+ RProperty::Set( KPSUidUikon, KUikAppHiddenList, listMalformed );
+ MUS_EUNIT_ASSERT_SPECIFIC_LEAVE( iProvider->HiddenFromFastSwapL(), KErrEof );
+
+ // No musuid in value list
+ TBuf16< 6 > listOkNoMus;
+ TUint32 uid1 = 10002000;
+ TUint32 uid2 = 20003000;
+ // avkoncapserver publishes values in following manner
+ TUint16 upperBits = uid1 >> 16;
+ listOkNoMus.Append( upperBits );
+ listOkNoMus.Append( uid1 );
+ upperBits = uid2 >> 16;
+ listOkNoMus.Append( upperBits );
+ listOkNoMus.Append( uid2 );
+ listOkNoMus.Append( 0 );
+ listOkNoMus.Append( 0 );
+ RProperty::Set( KPSUidUikon, KUikAppHiddenList, listOkNoMus );
+ EUNIT_ASSERT( !iProvider->HiddenFromFastSwapL() )
+
+ // Musuid in value list
+ TBuf16< 10 > listOkMus;
+ TUint32 uid3 = 30005000;
+ upperBits = uid1 >> 16;
+ listOkMus.Append( upperBits );
+ listOkMus.Append( uid1 );
+ upperBits = uid2 >> 16;
+ listOkMus.Append( upperBits );
+ listOkMus.Append( uid2 );
+
+ upperBits = KMusUiUid >> 16;
+ listOkMus.Append( upperBits );
+ listOkMus.Append( KMusUiUid );
+
+ upperBits = uid3 >> 16;
+ listOkMus.Append( upperBits );
+ listOkMus.Append( uid3 );
+
+ listOkMus.Append( 0 );
+ listOkMus.Append( 0 );
+ RProperty::Set( KPSUidUikon, KUikAppHiddenList, listOkMus );
+ EUNIT_ASSERT( iProvider->HiddenFromFastSwapL() )
+ }
+// HELPERS
+CAiwMenuPane* UT_CMusAiwProvider::CreateAiwMenuPaneLC( CEikMenuPane** aEikPane )
+ {
+ CEikMenuPane* eikPane = new( ELeave ) CEikMenuPane( this );
+ CleanupStack::PushL( eikPane );
+
+ // Constructing eikPane is not compulsory for testing and leads to a memory
+ // leak.
+ //eikPane->ConstructL( NULL, this );
+
+ CAiwMenuPane* aiwPane = new( ELeave ) CAiwMenuPane( *eikPane, 0 ); //Takes ownership
+ CleanupStack::Pop( eikPane );
+ CleanupStack::PushL( aiwPane );
+ *aEikPane = eikPane;
+ return aiwPane;
+ }
// TEST TABLE
@@ -1033,14 +1153,21 @@
"InitializeMenuPaneL",
"FUNCTIONALITY",
SetupL, UT_CMusAiwProvider_InitializeMenuPaneL6L, Teardown)
-
+
EUNIT_TEST(
- "InitializeMenuPaneL - test7",
+ "InitializeMenuPaneL - fast mode",
"CMusAiwProvider",
"InitializeMenuPaneL",
"FUNCTIONALITY",
- SetupL, UT_CMusAiwProvider_InitializeMenuPaneL7L, Teardown)
-
+ SetupL, UT_CMusAiwProvider_InitializeMenuPaneLFastModeL, Teardown)
+
+EUNIT_TEST(
+ "InitializeMenuPaneL - fast mode 2",
+ "CMusAiwProvider",
+ "InitializeMenuPaneL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAiwProvider_InitializeMenuPaneLFastMode2L, Teardown)
+
EUNIT_TEST(
"HandleMenuCmdL - test",
"CMusAiwProvider",
@@ -1049,6 +1176,13 @@
SetupL, UT_CMusAiwProvider_HandleMenuCmdLL, Teardown)
EUNIT_TEST(
+ "HandleMenuCmdL - fastmode test",
+ "CMusAiwProvider",
+ "HandleMenuCmdL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAiwProvider_HandleMenuCmdLFastModeL, Teardown)
+
+EUNIT_TEST(
"ApplicationRunningL - test",
"CMusAiwProvider",
"ApplicationRunningL",
@@ -1082,6 +1216,13 @@
"ImplementationGroupProxy",
"FUNCTIONALITY",
SetupL, UT_ImplementationGroupProxyL, Teardown)
+
+EUNIT_TEST(
+ "HiddenFromFastSwapL",
+ "CMusAiwProvider",
+ "HiddenFromFastSwapL",
+ "FUNCTIONALITY",
+ SetupL, UT_HiddenFromFastSwapL, Teardown)
EUNIT_END_TEST_TABLE
--- a/mmshplugins/mmshaoplugin/group/musaoplugin.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/group/musaoplugin.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -42,7 +42,8 @@
SOURCE muscallstatusmonitor.cpp
SOURCE muscallconferencemonitor.cpp
SOURCE muscallconferenceeventmonitor.cpp
-SOURCE musclirmonitor.cpp
+SOURCE musvoipcallmonitor.cpp
+
USERINCLUDE ../inc
USERINCLUDE ../../../inc
@@ -55,8 +56,8 @@
LIBRARY etel.lib
LIBRARY etelmm.lib
LIBRARY centralrepository.lib
-LIBRARY etel3rdparty.lib
-
+LIBRARY telephonyservice.lib
+LIBRARY serviceprovidersettings.lib
// MultimediaSharing libraries:
LIBRARY musmanagerclient.lib
LIBRARY featmgr.lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/inc/mmuscallstateobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 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: The observer class to monitor MuSh call state change
+*
+*/
+
+
+#ifndef MMUSCALLSTATEOBSERVER_H_
+#define MMUSCALLSTATEOBSERVER_H_
+
+
+/**
+ * The observer class for call state monitor
+ */
+
+class MMusCallStateObserver
+ {
+public:
+ /**
+ * Notify Mush call state changed
+ */
+ virtual void MusCallStateChanged() = 0;
+ };
+
+#endif /*MMUSCALLSTATEOBSERVER_H_*/
+
+
+// End of File.
--- a/mmshplugins/mmshaoplugin/inc/musaoplugin.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/inc/musaoplugin.h Tue Aug 31 15:12:07 2010 +0300
@@ -28,6 +28,8 @@
#include <e32property.h>
#include "musunittesting.h"
+#include "mmuscallstateobserver.h"
+#include "musmanager.h"
// Enable the below line if Kodiak Ptt has to be monitered
//class CMusPttCallMonitor;
@@ -41,7 +43,8 @@
*
* @lib musaoplugin.dll
*/
-class CMusAoPlugin : public CAlwaysOnlineEComInterface
+class CMusAoPlugin : public CAlwaysOnlineEComInterface,
+ public MMusCallStateObserver
{
public:
@@ -75,6 +78,12 @@
*/
void DeleteProperties();
+
+
+public: // from MMusCallStateObserver
+
+ void MusCallStateChanged();
+
private: // constructors
@@ -98,10 +107,22 @@
*/
void DefinePropertyL(TInt aKey,RProperty::TType aType,const TDesC& aVal);
- /**
+ /**
* Utility function to delete keys.
*/
void DeleteProperty(TInt aKey);
+
+ /**
+ * Starts Mus Manager Client.In turn it will start Mus Manager
+ * Server and Availability Plugin.
+ */
+ void StartMusClientL();
+
+ /*
+ * Stops Mus Manager Client.
+ */
+ void StopMusClient();
+
public: // from base class CAlwaysOnlineEComInterface
@@ -118,6 +139,12 @@
private: // data
+ /**
+ * Instance of MusManager Client. Owned.
+ */
+ CMusManager* iManager;
+
+
/* Property Monitor */
CMusPropertyMonitor* iPropertyMonitor;
@@ -147,7 +174,6 @@
TInt iError;
MUS_UNITTEST( UT_CMusAoPlugin )
-
};
#endif // MUSAOPLUGIN_H
--- a/mmshplugins/mmshaoplugin/inc/muscallconferencemonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/inc/muscallconferencemonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -58,6 +58,12 @@
*/
void SetStateL();
+ /**
+ * Get Conference Call Status
+ */
+
+ RMobileConferenceCall::TMobileConferenceStatus GetConfStatus();
+
private:
/**
@@ -134,8 +140,8 @@
*/
CMusCallConferenceEventMonitor* iConfCallEvent;
- MUS_UNITTEST( UT_CMusCallConferenceMonitor )
-
+ MUS_UNITTEST( UT_CMusCallConferenceMonitor )
+ MUS_UNITTEST( UT_CMusTsyPropertyMonitor )
};
#endif // MUSCALLCONFERENCEMONITOR_H
--- a/mmshplugins/mmshaoplugin/inc/muscalleventmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/inc/muscalleventmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -22,6 +22,7 @@
#include "musunittesting.h"
#include "muscallmonitorbase.h"
+#include "mmuscallstateobserver.h"
#include <etelmm.h>
#include <e32base.h>
@@ -40,7 +41,9 @@
* aCall is not owned.
* @return CMusCallEventMonitor object.
*/
- static CMusCallEventMonitor* NewL(const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver );
+ static CMusCallEventMonitor* NewL(const RMobileCall& aCall,
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver );
/**
* Destructor.
@@ -52,7 +55,8 @@
/**
* C++ constructor.
*/
- CMusCallEventMonitor( const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver );
+ CMusCallEventMonitor( const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver );
/**
* Symbian 2nd-phase constructor.
--- a/mmshplugins/mmshaoplugin/inc/muscallmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/inc/muscallmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -22,6 +22,7 @@
#include "musunittesting.h"
#include "mustsypropertymonitor.h"
+#include "mmuscallstateobserver.h"
#include <etelmm.h>
#include <e32base.h>
@@ -54,7 +55,8 @@
/**
* Starts to monitor call status,event and conference.
*/
- void StartMonitorL( RMobileLine& aLine, MMusTsyPropertyObserver& aObserver );
+ void StartMonitorL( RMobileLine& aLine, MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver );
/**
* Stops monitoring call status,event and conference.
@@ -88,6 +90,11 @@
*/
void SetStateL(NMusSessionInformationApi::TMusCallEvent aVal);
+ /**
+ * Checks from CS call f required data is ready.
+ */
+ TBool IsDataReadyL();
+
private:
@@ -106,6 +113,7 @@
* ETrue to increase. EFalse to decrease.
*/
void SetCallCountL(TBool aIncrease);
+
private:
--- a/mmshplugins/mmshaoplugin/inc/muscallmonitorbase.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/inc/muscallmonitorbase.h Tue Aug 31 15:12:07 2010 +0300
@@ -23,6 +23,7 @@
#include "musunittesting.h"
#include "mussesseioninformationapi.h"
#include "mmustsypropertyobserver.h"
+#include "mmuscallstateobserver.h"
#include <etelmm.h>
#include <e32base.h>
@@ -57,6 +58,11 @@
* CActive Implentation
*/
TInt RunError( TInt aError );
+
+ /**
+ * Checks if it the data is ready for the CS Call
+ */
+ TBool IsDataReadyL();
protected:
@@ -64,30 +70,15 @@
/**
* C++ constructor.
*/
- CMusCallMonitorBase( const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver );
+ CMusCallMonitorBase( const RMobileCall& aCall,
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver );
/**
* Notify observer that our state changed
*/
virtual void NotifyCallStateChanged( NMusSessionInformationApi::TMusCallEvent aVal );
- /**
- * Inspect the dialled number and set the PS key controlling whether
- * to add Privacy-header accordingly.
- */
- void SetClirSetting( const TDesC& aDialledNumber ) const;
-
- /**
- * Should set the privacy ps key to on off based on incoming cs call privacy settings.
- * aCallInfo : Callinfo package read from current cs call.
- */
- void SetTerminatingPrivacy( const RMobileCall& aCall ) const;
-
- /**
- * Removes privacy prefix away from phone number
- * @return returns dialed number witout prefix.
- */
- HBufC* RemovePrefix( const TDesC& aOriginator ) const;
protected:
@@ -112,11 +103,17 @@
* Observer to get nofitied when RCall status changed
*/
MMusTsyPropertyObserver& iTsyObserver;
+
+
+ /*
+ * Reference of callstate observer not owned
+ */
+ MMusCallStateObserver& iCallStateObserver;
+
MUS_UNITTEST( UT_CMusCallMonitor )
- MUS_UNITTEST( UT_CMusCallEventMonitor )
- MUS_UNITTEST( UT_CMusCallStatusMonitor )
- MUS_UNITTEST( UT_CMusCallMonitorBase )
+ MUS_UNITTEST( UT_CMusCallEventMonitor )
+ MUS_UNITTEST( UT_CMusCallStatusMonitor )
};
#endif // MUSAOCALLMONITORBASE_H
--- a/mmshplugins/mmshaoplugin/inc/muscallstatusmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/inc/muscallstatusmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -23,6 +23,7 @@
#include "mussesseioninformationapi.h"
#include "muscallmonitorbase.h"
#include "musunittesting.h"
+#include "mmuscallstateobserver.h"
#include <etelmm.h>
#include <e32base.h>
@@ -42,7 +43,9 @@
* aCall is not owned.
* @return CMusCallStatusMonitor object.
*/
- static CMusCallStatusMonitor* NewL( const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver );
+ static CMusCallStatusMonitor* NewL( const RMobileCall& aCall,
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver );
/**
* Destructor.
@@ -54,7 +57,8 @@
/**
* C++ constructor.
*/
- CMusCallStatusMonitor(const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver );
+ CMusCallStatusMonitor(const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver );
/**
* Symbian 2nd-phase constructor.
--- a/mmshplugins/mmshaoplugin/inc/musclirmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
-* Copyright (c) 2009 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: Monitor that observes the calling line identity restriction
-* setting
-*
-*/
-
-
-
-#ifndef MUSCLIRMONITOR_H
-#define MUSCLIRMONITOR_H
-
-#include "musunittesting.h"
-
-#include <etelmm.h>
-#include <e32base.h>
-#include <etel3rdparty.h>
-
-
-/**
- * Monitor, which observes status of CLIR setting that controls whether the
- * caller's phone number/id is shown to the called party.
- *
- * @lib musaoplugin.dll
- */
-class CMusClirMonitor : public CActive
- {
-
- public: // constructors and destructor
-
- /**
- * Two-phased constructor. Leaves on failure.
- */
- static CMusClirMonitor* NewL();
-
- /**
- * Destructor.
- */
- ~CMusClirMonitor();
-
-
- public: // API
-
- /**
- * Starts the asynchronous reading of CLIR setting. When reading
- * completes, the PS key is updated.
- */
- void ReadClir();
-
- private:
-
- /**
- * C++ constructor.
- */
- CMusClirMonitor();
-
- private: // functions from base class CActive
-
- void ConstructL();
-
- void RunL();
-
- void DoCancel();
-
- TInt RunError( TInt aError );
-
- void TranslateResult( CTelephony::TIdentityServiceStatus aResult );
-
- private: // Data
-
- CTelephony* iTelephony; //owned
- CTelephony::TIdentityServiceV1 iTIdentityServiceV1;
- CTelephony::TIdentityServiceV1Pckg iTIdentityServiceV1Pckg;
-
- // Tells if phone's number/id is allowed to be sent to the remove party
- TBool iAllowed;
-
- // How many times RunL has been completed with an error in a row
- TInt iErrorCount;
-
- MUS_UNITTEST( UT_CMusClirMonitor )
-
- };
-
-#endif // MUSCLIRMONITOR_H
--- a/mmshplugins/mmshaoplugin/inc/muspropertymonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/inc/muspropertymonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -21,6 +21,7 @@
#define MUSPROPERTYMONITOR_H
#include "musunittesting.h"
+#include "mmuscallstateobserver.h"
#include <etelmm.h>
#include <e32base.h>
#include <e32property.h>
@@ -40,36 +41,35 @@
/**
* Two-phased constructor. Leaves on failure.
*/
- static CMusPropertyMonitor* NewL();
+ static CMusPropertyMonitor* NewL( MMusCallStateObserver& aCallStateObserver );
/**
* Destructor.
*/
~CMusPropertyMonitor();
+
+
+ public: // other public functions
+
+ /*
+ * Checks from P/S Keys about call state
+ * @return EFalse if call state is ENoCall otherwise ETrue
+ */
+ TBool IsCallConnected();
+
private:
/**
* C++ constructor.
*/
- CMusPropertyMonitor();
+ CMusPropertyMonitor( MMusCallStateObserver& aCallStateObserve );
/**
* Symbian 2nd-phase constructor.
*/
void ConstructL();
- /**
- * Starts Mus Manager Client.In turn it will start Mus Manager
- * Server and Availability Plugin.
- */
- void StartMusClientL();
-
- /*
- * Stops Mus Manager Client.
- */
- void StopMusClient();
-
private:
@@ -98,12 +98,12 @@
/**
* Instance of RProperty.
*/
- RProperty iPropertyEvent;
-
- /**
- * Instance of MusManager Client. Owned.
+ RProperty iPropertyEvent;
+
+ /*
+ * Reference of callstate observer not owned
*/
- CMusManager* iManager;
+ MMusCallStateObserver& iCallStateObserver;
MUS_UNITTEST( UT_CMusPropertyMonitor )
--- a/mmshplugins/mmshaoplugin/inc/mustsypropertymonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/inc/mustsypropertymonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -16,23 +16,26 @@
*/
-
#ifndef MUSTSYPROPERTYMONITOR_H
#define MUSTSYPROPERTYMONITOR_H
+// Enable the below line if Kodiak Ptt has to be monitered
+// #include "mmusptteventobserver.h"
+#include <etel.h>
+#include <etelmm.h>
+#include <e32base.h>
+#include <e32property.h>
+#include <ctsydomainpskeys.h>
+
#include "musunittesting.h"
#include "mussesseioninformationapi.h"
#include "mmustsypropertyobserver.h"
-// Enable the below line if Kodiak Ptt has to be monitered
-// #include "mmusptteventobserver.h"
-#include <etelmm.h>
-#include <e32base.h>
-#include <e32property.h>
+#include "mmuscallstateobserver.h"
class CMusCallMonitor;
+class CMusVoipCallMonitor;
class CMusPTTCallMonitor;
class CMusCallConferenceMonitor;
-class CMusClirMonitor;
/**
* This class monitors the line event,if call is connected
@@ -53,7 +56,8 @@
/**
* Two-phased constructor.
*/
- static CMusTsyPropertyMonitor* NewL( RMobilePhone& aPhone );
+ static CMusTsyPropertyMonitor* NewL( RMobilePhone& aPhone,
+ MMusCallStateObserver& aCallStateObserver );
/**
* Destructor.
@@ -70,19 +74,24 @@
* Function from MMusTsyPropertyObserver
*/
void NotifyCallStateChanged(NMusSessionInformationApi::TMusCallEvent aVal, TName& aCallName);
+
+ /**
+ * Checks from the corresponding monitors if the data is ready.
+ */
+ TBool IsDataReadyL();
private:
/**
* C++ constructor.
*/
- CMusTsyPropertyMonitor( RMobilePhone& aPhone );
+ CMusTsyPropertyMonitor( RMobilePhone& aPhone, MMusCallStateObserver& aCallStateObserve );
/**
* Symbian 2nd-phase constructor.
*/
void ConstructL();
-
+
private: // functions from base class CActive
@@ -135,7 +144,44 @@
/**
* Add / Remove Call Monitors based on Mus criteria
*/
- void MonitorCallL();
+ void MonitorCallL(const TPSCTsyCallState& aCallState,
+ const TPSCTsyCallType& aCallType);
+
+ /**
+ * Add / Remove Call Monitors based on Mus criteria
+ */
+ void MonitorCSCallL();
+
+ private: // Voip related
+ /*
+ * If the call Monitor doesnt exist then it creats one new
+ * CMusCallMonitor class and add into array.
+ * Leavs if objects creation fails.
+ */
+ void AddVoipCallMonitorL( TName& aCallName );
+
+ /*
+ * It removs the CMusCallMonitor object from array
+ * based on the call name.
+ */
+
+ void RemoveVoipCallMonitor( TName& aCallName );
+
+ /**
+ * Add / Remove Call Monitors based on Mus criteria
+ */
+ void MonitorVoipCallL(const TPSCTsyCallState& aCallState);
+
+ /**
+ * Removes and reset the voip call monitor array
+ */
+ void RemoveAllVoipCallMonitors( );
+
+ /**
+ * Checks multimediasharing call criteria's
+ */
+ void CheckCallCriteriaL();
+
/**
* Delete all call monitor
@@ -184,6 +230,11 @@
RPointerArray<CMusCallMonitor> iCallMonitorArray;
/**
+ * Array of voip Call Monitors.
+ */
+ RPointerArray<CMusVoipCallMonitor> iVoipCallMonitorArray;
+
+ /**
* Conference call monitor, owned.
*/
CMusCallConferenceMonitor* iConferenceMonitor;
@@ -191,13 +242,16 @@
/**
* Instance of RProperty.
*/
- RProperty iPropertyEvent;
+ RProperty iPropertyEvent;
- CMusClirMonitor* iClirMonitor;
-
+ /*
+ * Reference of callstate observer not owned
+ */
+ MMusCallStateObserver& iCallStateObserver;
MUS_UNITTEST( UT_CMusTsyPropertyMonitor )
-
+ MUS_UNITTEST( UT_CMusAoPlugin )
+
};
#endif // MUSTSYPROPERTYMONITOR_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/inc/musvoipcallmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,155 @@
+/*
+* Copyright (c) 2005-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: Monitors the VOIP calls.
+*
+*/
+
+
+#ifndef MUSVOIPCALLMONITOR_H_
+#define MUSVOIPCALLMONITOR_H_
+
+#include <e32base.h>
+
+#include <ccallinformation.h>
+#include <mcall.h>
+#include <ccallinfoiter.h>
+
+#include "mussesseioninformationapi.h"
+#include "musunittesting.h"
+#include "mmuscallstateobserver.h"
+
+/**
+ * Monitors the Internet telephony calls ( VOIP )
+ * Same condition of CS call criteria applies here to
+ * for Mush.
+ * @lib musaoplugin.dll
+ */
+class CMusVoipCallMonitor : public CActive
+ {
+
+ public: // constructors and destructor
+ /**
+ * Symbian two-phased constructor.
+ */
+ static CMusVoipCallMonitor* NewL( TName& aCallName,
+ MMusCallStateObserver& aCallStateObserver );
+
+ /**
+ * Symbian two-phased constructor.
+ */
+ static CMusVoipCallMonitor* NewLC( TName& aCallName );
+
+ /**
+ * Destructor.
+ */
+ ~CMusVoipCallMonitor();
+
+ private: // functions from base class CActive
+
+ void RunL();
+
+ void DoCancel();
+
+ TInt RunError( TInt aError );
+
+ private:
+
+ /**
+ * C++ constructor.
+ */
+ CMusVoipCallMonitor( TName& aCallName, MMusCallStateObserver& aCallStateObserver );
+
+ /**
+ * Symbian 2nd-phase constructor.
+ */
+ void ConstructL( );
+
+ public:
+
+ /**
+ * Compares the call names (aName == iCallName)
+ *
+ * @return ETrue if matches else EFalse
+ */
+ TBool IsEqual(TName& aName);
+
+ /**
+ * Sets the call state PS Key value.
+ *
+ * @aVal one of the call event types
+ */
+ void SetStateL(NMusSessionInformationApi::TMusCallEvent aVal);
+
+ /**
+ * Checks from voip call monitor if required data is ready.
+ */
+ TBool IsDataReadyL();
+
+ private:
+
+ /**
+ * Sets the call Information like call direction and remote address
+ */
+ void SetCallInfoL();
+
+ /**
+ * Sets the call Provider Information (CallProvider Name is PS Key)
+ */
+ void SetCallProviderInfoL( TUint32 aServiceId );
+
+ TBool RemoteInfoExistsL();
+
+ void MonitorForRemoteInfoL();
+
+ void StopRemoteInfoMonitoring();
+
+ void ReportStateChangeL( NMusSessionInformationApi::TMusCallEvent aVal );
+
+ static TInt GuardTimerExpired( TAny* aPtr );
+
+ /**
+ * Returns current connected call Service ID.
+ * @return Current connected call service ID, if there is at least one
+ * call in connected state, otherwise KErrNotFound
+ */
+ TUint32 CallServiceIdL();
+
+ void AddDomainFromOwnUsernameL( TUint32 aServiceId, TDes16& aUri );
+
+ // Resets the Call Provider Information.
+ void ResetCallProviderName();
+
+
+ private:
+ /*
+ * Name of the call.
+ */
+ TName& iCallName ;
+
+ RProperty iPropertyEvent;
+
+ /*
+ * Reference of callstate observer not owned
+ */
+ MMusCallStateObserver& iCallStateObserver;
+
+ CDeltaTimer* iGuardTimer;
+ TCallBack iGuardTimerCallBack;
+ TDeltaTimerEntry iGuardTimerEntry;
+
+ MUS_UNITTEST( UT_CMusVoipCallMonitor )
+
+ };
+
+#endif /* MUSVOIPCALLMONITOR_H_ */
--- a/mmshplugins/mmshaoplugin/src/musaoplugin.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/src/musaoplugin.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -16,6 +16,7 @@
*/
+#include "musmanager.h"
#include "musresourceproperties.h"
#include "mussesseioninformationapi.h"
#include "mussettingskeys.h"
@@ -32,9 +33,6 @@
#include <AlwaysOnlineManagerCommon.h>
#include <AlwaysOnlineManagerClient.h>
#include <mmtsy_names.h>
-#include <featmgr.h>
-
-using namespace NMusSessionInformationApi;
// -----------------------------------------------------------------------------
// Symbian two-phase constructor.
@@ -67,19 +65,14 @@
void CMusAoPlugin::ConstructL()
{
MUS_LOG( "mus: [MUSAO] -> CMusAoPlugin::ConstructL" )
- FeatureManager::InitializeLibL();
- TBool support = FeatureManager::FeatureSupported( KFeatureIdMultimediaSharing );
- FeatureManager::UnInitializeLib();
- if ( support )
- {
- DefinePropertiesL();
- User::LeaveIfError( iServer.Connect() );
- User::LeaveIfError( iPhone.Open( iServer, KMmTsyPhoneName() ) );
- iTsyPropertyMonitor = CMusTsyPropertyMonitor::NewL(iPhone);
- iPropertyMonitor = CMusPropertyMonitor::NewL();
- // Enable the below line if Kodiak Ptt has to be monitered
- // iPttCallMonitor = CMusPttCallMonitor::NewL(*iLineMonitor);
- }
+ DefinePropertiesL();
+ User::LeaveIfError( iServer.Connect() );
+ User::LeaveIfError( iPhone.Open( iServer, KMmTsyPhoneName() ) );
+ iTsyPropertyMonitor = CMusTsyPropertyMonitor::NewL(iPhone, *this );
+ iPropertyMonitor = CMusPropertyMonitor::NewL(*this);
+ // Enable the below line if Kodiak Ptt has to be monitered
+ // iPttCallMonitor = CMusPttCallMonitor::NewL(*iLineMonitor);
+
MUS_LOG( "mus: [MUSAO] <- CMusAoPlugin::ConstructL" )
}
@@ -91,6 +84,7 @@
{
MUS_LOG( "-> CMusAoPlugin::~CMusAoPlugin" )
// should never come here, because service should always be on
+ delete iManager;
delete iPropertyMonitor;
delete iTsyPropertyMonitor;
// Enable the below line if Kodiak Ptt has to be monitered
@@ -142,12 +136,10 @@
RProperty::EInt,( TInt ) NMusSessionInformationApi::EMUSAllowed);
DefinePropertyL(NMusSessionInformationApi::KMusCallDirection,
RProperty::EInt,( TInt ) NMusSessionInformationApi::ENoDirection);
- DefinePropertyL(NMusSessionInformationApi::KMUSPrivacy,
- RProperty::EInt,( TInt ) NMusSessionInformationApi::EPrivacyOff);
- DefinePropertyL(KMusClirSetting,
- RProperty::EInt,( TInt ) ESendOwnNumber);
-
-
+ _LIT( KEmptyCallProvider,"" );
+ DefinePropertyL(NMusSessionInformationApi::KMUSCallProvider,
+ RProperty::EText,KEmptyCallProvider);
+
MUS_LOG( "mus: [MUSAO] <- CMusAoPlugin::DefineResourceProperties" )
}
@@ -228,10 +220,9 @@
DeleteProperty(NMusSessionInformationApi::KMusCallEvent);
DeleteProperty(NMusSessionInformationApi::KMusCallCount);
DeleteProperty(NMusSessionInformationApi::KMusTelNumber);
+ DeleteProperty(NMusSessionInformationApi::KMUSCallProvider);
DeleteProperty(NMusSessionInformationApi::KMUSForbidden);
DeleteProperty(NMusSessionInformationApi::KMusCallDirection);
- DeleteProperty(NMusSessionInformationApi::KMUSPrivacy);
- DeleteProperty(KMusClirSetting);
MUS_LOG( "mus: [MUSAO] <- CMusAoPlugin::DeleteResourcePropertiesL" )
}
@@ -259,5 +250,72 @@
return &iError;;
}
+// -----------------------------------------------------------------------------
+// CMusAoPlugin::StartMusClient()
+// This will start the MusManager Client which inturn should start
+// MusManager Server and Availability Plugin.
+// -----------------------------------------------------------------------------
+//
+void CMusAoPlugin::StartMusClientL()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusAoPlugin::StartMusClient" )
+ if( !iManager )
+ {
+ iManager = CMusManager::NewL();
+ }
+ iManager->ExamineAvailabilityL();
+ MUS_LOG( "mus: [MUSAO] <- CMusAoPlugin::StartMusClient" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMusAoPlugin::StopMusClient()
+// This will stop the MusManager Client which inturn should stop
+// MusManager Server and Availability Plugin.
+// -----------------------------------------------------------------------------
+//
+void CMusAoPlugin::StopMusClient()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusAoPlugin::StopMusClient" )
+ if( iManager )
+ {
+ delete iManager;
+ iManager = NULL;
+ }
+ MUS_LOG( "mus: [MUSAO] <- CMusAoPlugin::StopMusClient" )
+ }
+
+// -----------------------------------------------------------------------------
+// From MMusCallStateObserver
+// CMusAoPlugin::MusCallStateChanged()
+// -----------------------------------------------------------------------------
+//
+void CMusAoPlugin::MusCallStateChanged( )
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusAoPlugin::MusCallStateChanged" )
+
+ TBool dataReady = EFalse;
+ TRAPD( error, dataReady = iTsyPropertyMonitor->IsDataReadyL() )
+
+ if ( error == KErrNone &&
+ dataReady &&
+ iPropertyMonitor->IsCallConnected() )
+ {
+ MUS_LOG( "mus: [MUSAO] Starting Mush Client" )
+ TRAP( error, StartMusClientL() )
+
+ MUS_LOG1("mus: [MUSAO] Error Ocurred = %d",error )
+
+ if ( error != KErrNone )
+ {
+ StopMusClient();
+ }
+ }
+ else
+ {
+ MUS_LOG( "mus: [MUSAO] Stopping Mush Client" )
+ StopMusClient();
+ }
+ MUS_LOG( "mus: [MUSAO] <- CMusAoPlugin::MusCallStateChanged" )
+ }
// End of file
--- a/mmshplugins/mmshaoplugin/src/muscallconferenceeventmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/src/muscallconferenceeventmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -113,7 +113,6 @@
SetStateL( NMusSessionInformationApi::EConferenceCall );
break;
case RMobileConferenceCall::EConferenceTerminated:
- SetStateL( NMusSessionInformationApi::EConferenceTerminated );
MonitorCallL();
break;
case RMobileConferenceCall::EConferenceSwapped:
@@ -180,14 +179,6 @@
else
{
// No point of reporting it .
- //EConferenceTerminated must be set every time to notify avaeventmonitor
- if ( aVal == NMusSessionInformationApi::EConferenceTerminated )
- {
- User::LeaveIfError(RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallEvent,
- aVal ));
- }
-
}
MUS_LOG( "mus: [MUSAO] <- CMusCallConferenceEventMonitor::SetStateL" )
}
--- a/mmshplugins/mmshaoplugin/src/muscallconferencemonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/src/muscallconferencemonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -245,6 +245,19 @@
MUS_LOG( "mus: [MUSAO] -> CMusCallConferenceMonitor::CheckCallStatus")
}
+
+// --------------------------------------------------------------------------------
+// TMobileConferenceStatus GetCconfStatus()
+// Get the Conference Call Status
+// --------------------------------------------------------------------------------
+//
+RMobileConferenceCall::TMobileConferenceStatus CMusCallConferenceMonitor::GetConfStatus()
+ {
+ return iConfStatus;
+ }
+
+
+
// End of file
--- a/mmshplugins/mmshaoplugin/src/muscalleventmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/src/muscalleventmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -30,10 +30,12 @@
// Symbian two-phase constructor.
// ------------------------------------------------------------------------------
//
-CMusCallEventMonitor* CMusCallEventMonitor::NewL( const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver )
+CMusCallEventMonitor* CMusCallEventMonitor::NewL( const RMobileCall& aCall,
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver )
{
MUS_LOG( "mus: [MUSAO] -> CMusCallEventMonitor::NewL" )
- CMusCallEventMonitor* self = new (ELeave) CMusCallEventMonitor(aCall, aObserver);
+ CMusCallEventMonitor* self = new (ELeave) CMusCallEventMonitor(aCall, aObserver, aCallStateObserver );
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -71,11 +73,13 @@
// C++ constructor.
// ------------------------------------------------------------------------------
//
-CMusCallEventMonitor::CMusCallEventMonitor( const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver )
- : CMusCallMonitorBase(aCall, aObserver)
+CMusCallEventMonitor::CMusCallEventMonitor( const RMobileCall& aCall,
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver )
+ : CMusCallMonitorBase(aCall, aObserver, aCallStateObserver)
{
-
+
}
--- a/mmshplugins/mmshaoplugin/src/muscallmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/src/muscallmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -89,14 +89,15 @@
//
// -----------------------------------------------------------------------------
//
-void CMusCallMonitor::StartMonitorL(RMobileLine& aLine, MMusTsyPropertyObserver& aObserver)
+void CMusCallMonitor::StartMonitorL(RMobileLine& aLine,
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver)
{
MUS_LOG( "mus: [MUSAO] -> CMusCallMonitor::StartMonitorL" )
if(IsMonitored())User::Leave(KErrAlreadyExists);
User::LeaveIfError( iCall.OpenExistingCall( aLine, iCallName ) );
- iCallStatusMonitor = CMusCallStatusMonitor::NewL( iCall, aObserver );
- iCallEventMonitor = CMusCallEventMonitor::NewL( iCall, aObserver );
-
+ iCallStatusMonitor = CMusCallStatusMonitor::NewL( iCall, aObserver, aCallStateObserver );
+ iCallEventMonitor = CMusCallEventMonitor::NewL( iCall, aObserver, aCallStateObserver );
MUS_LOG( "mus: [MUSAO] <- CMusCallMonitor::StartMonitorL" )
}
@@ -187,4 +188,16 @@
}
+// --------------------------------------------------------------------------------
+// CMusCallMonitor::IsDataReadyL()
+// Checks if Data is ready CS Call.
+// --------------------------------------------------------------------------------
+
+TBool CMusCallMonitor::IsDataReadyL()
+ {
+ // Wrapper Function for Monitoring CS Call Data
+ return iCallStatusMonitor->IsDataReadyL();
+ }
+
// End of file
+
--- a/mmshplugins/mmshaoplugin/src/muscallmonitorbase.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/src/muscallmonitorbase.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -19,7 +19,6 @@
#include "mussesseioninformationapi.h"
#include "muscallmonitorbase.h"
#include "muslogger.h"
-#include "mussettings.h"
#include <etel.h>
#include <etelmm.h>
@@ -27,9 +26,6 @@
#include <mmtsy_names.h>
#include <e32property.h>
-_LIT( KDoNotSendOwnNumber, "#31#" );
-_LIT( KDoSendOwnNumber, "*31#" );
-
// -----------------------------------------------------------------------------
// C++ destructor.
@@ -45,8 +41,12 @@
// C++ constructor.
// -----------------------------------------------------------------------------
//
-CMusCallMonitorBase::CMusCallMonitorBase(const RMobileCall& aCall, MMusTsyPropertyObserver& aObserver )
- : CActive( EPriorityNormal ),iCall(aCall),iTsyObserver( aObserver )
+CMusCallMonitorBase::CMusCallMonitorBase(const RMobileCall& aCall,
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver )
+ : CActive( EPriorityNormal ),iCall(aCall),iTsyObserver( aObserver ),
+ iCallStateObserver( aCallStateObserver )
+
{
// Intialize the remote call event state to Resume , means connected.
@@ -67,6 +67,16 @@
User::LeaveIfError(RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallCount,callCount));
MUS_LOG1( "mus: [MUSAO] - CallCount = %d",callCount )
+
+ RMobileCall::TMobileCallInfoV3 callInfo;
+ RMobileCall::TMobileCallInfoV3Pckg pckg( callInfo );
+ iCall.GetMobileCallInfo( pckg );
+ if( callInfo.iEmergency )
+ {
+ User::LeaveIfError(RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ ( TInt ) NMusSessionInformationApi::ENoCall ));
+ }
/*
* CountOfCallMonitors is number of CallMonitor Objects.Static Reference Count.
* = No of active calls .
@@ -74,22 +84,12 @@
* if call count is more than one , should be taken care by conference call or
* multicall criteria.
*/
- if( callCount == 1)
+ else if( callCount == 1 )
{
TInt currentVal;
User::LeaveIfError(RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,currentVal));
MUS_LOG1( "mus: [MUSAO] - Remote State = %d",iRemoteCallEvent )
-
-
- /*
- If Call is Connected then set the Call info.
- */
- if( aVal==NMusSessionInformationApi::ECallConnected )
- {
- SetCallInfoL();
- }
-
/* If current event is callconnected and remote is not in hold set the
property value to CallConnected.Else set it to CallHold.
Note : We can be sure about Local is connected when it goes to
@@ -109,33 +109,37 @@
NMusSessionInformationApi::KMusCallEvent,
aVal ));
}
- }
- else if( aVal==NMusSessionInformationApi::EConferenceCall)
- {
- User::LeaveIfError(RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallEvent,
- NMusSessionInformationApi::EConferenceCall ));
- }
+ }
else if( aVal==NMusSessionInformationApi::ECallHold || iRemoteCallEvent==RMobileCall::ERemoteHold )
{
User::LeaveIfError(RProperty::Set( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
NMusSessionInformationApi::ECallHold ));
}
- if( aVal != NMusSessionInformationApi::ENoCall)
+ else if( aVal==NMusSessionInformationApi::ENoCall )
+ {
+ User::LeaveIfError(RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ NMusSessionInformationApi::ENoCall ));
+ }
+ else if( aVal==NMusSessionInformationApi::EConferenceCall )
+ {
+ User::LeaveIfError(RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ NMusSessionInformationApi::EConferenceCall ));
+ }
+
+ /*
+ If Call is Connected then set the Call info.
+ */
+ if( aVal==NMusSessionInformationApi::ECallConnected )
{
- RMobileCall::TMobileCallInfoV3 callInfo;
- RMobileCall::TMobileCallInfoV3Pckg pckg( callInfo );
-
- User::LeaveIfError(iCall.GetMobileCallInfo( pckg ));
- if( callInfo.iEmergency )
- {
- User::LeaveIfError(RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallEvent,
- ( TInt ) NMusSessionInformationApi::ENoCall ));
- }
+ SetCallInfoL();
}
+ // All P/S Keys are Set
+ //Check if preconditions are met to start or stop the MushClient.
+ iCallStateObserver.MusCallStateChanged();
}
MUS_LOG( "mus: [MUSAO] <- CMusCallMonitorBase::SetStateL" )
@@ -155,7 +159,6 @@
callInfo.iRemoteParty.iRemoteNumber;
// Set telephone number
HBufC* telNo( NULL );
- HBufC* cleanTelNo( NULL );
if( remoteNumber.iTelNumber.Length() > 0 )
{
MUS_LOG( "mus: [MUSAO] remoteNumber.iTelNumber.Lenght > 0" )
@@ -163,27 +166,18 @@
}
else
{
- MUS_LOG( "mus: [MUSAO] remoteNumber.iTelNumber.Lenght =< 0" )
+ MUS_LOG( "mus: [CALLMN] remoteNumber.iTelNumber.Lenght =< 0" )
RMobilePhone::TMobileAddress dialledParty = callInfo.iDialledParty;
telNo = dialledParty.iTelNumber.AllocLC();
-
}
- if ( MultimediaSharingSettings::PrivacySetting() )
- {
- SetClirSetting( *telNo );
- }
- cleanTelNo = RemovePrefix( *telNo );
- CleanupStack::PushL( cleanTelNo );
-
User::LeaveIfError(RProperty::Set(
NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusTelNumber,
- *cleanTelNo ));
- MUS_LOG_TDESC("mus: [MUSAO] telNo = ", (*cleanTelNo))
- CleanupStack::PopAndDestroy(cleanTelNo);
+ *telNo ));
+ MUS_LOG_TDESC("mus: [MUSAO] telNo = ", (*telNo))
CleanupStack::PopAndDestroy(telNo);
- // Set call direction.
+ // Set call direction.
RMobileCall::TMobileCallDirection direction =
callInfo.iRemoteParty.iDirection;
MUS_LOG1( "mus: [MUSAO] Call Direction = %d",direction )
@@ -196,7 +190,6 @@
}
else if ( direction == RMobileCall::EMobileTerminated )
{
- SetTerminatingPrivacy( iCall );
User::LeaveIfError(RProperty::Set(
NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallDirection,
@@ -208,8 +201,14 @@
NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallDirection,
( TInt ) NMusSessionInformationApi::ENoDirection ));
- }
+ }
+
+ /* Set the call provider information to some dummy Value */
+ User::LeaveIfError(RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ KNullDesC));
MUS_LOG( "mus: [MUSAO] <- CMusCallMonitorBase::SetCallInfoL" )
}
@@ -242,90 +241,42 @@
iTsyObserver.NotifyCallStateChanged( aVal, callInfo.iCallName );
}
-// --------------------------------------------------------------------------
-// void CMusCallMonitorBase::SetClirSetting()
-// Determine CLIR setting from dialled digits
-// --------------------------------------------------------------------------
-//
-void CMusCallMonitorBase::SetClirSetting( const TDesC& aDialledNumber ) const
- {
- MUS_LOG( "mus: [MUSAO] -> CMusCallMonitorBase::SetClirSetting" );
- NMusSessionInformationApi::TMusClirSetting
- sendNumber( NMusSessionInformationApi::ESendOwnNumber );
+// --------------------------------------------------------------------------------
+// CMusCallConferenceMonitor::IsDataReadyL()
+// Checks if Data is ready CS Call.
+// --------------------------------------------------------------------------------
- TPtrC prefix = aDialledNumber.Left( KDoNotSendOwnNumber().Length() );
- if ( prefix == KDoNotSendOwnNumber() )
- {
- sendNumber = NMusSessionInformationApi::EDoNotSendOwnNumber;
- }
- RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusClirSetting, sendNumber );
- MUS_LOG1( "mus: [MUSAO] <- CMusCallMonitorBase::SetClirSetting send nbr=%d",
- sendNumber == NMusSessionInformationApi::ESendOwnNumber );
- }
+TBool CMusCallMonitorBase::IsDataReadyL()
+ {
+ // This function need to be updated when new
+ // P/S key is published in Call monitor
-
-// --------------------------------------------------------------------------
-// void CMusCallMonitorBase::RemovePrefix()
-// --------------------------------------------------------------------------
-//
-HBufC* CMusCallMonitorBase::RemovePrefix( const TDesC& aOriginator ) const
- {
- MUS_LOG( "mus: [MUSAO] -> CMusCallMonitorBase::removePrefix" );
-
- HBufC * withoutPrefix(NULL);
+ MUS_LOG( "mus: [MUSAO] -> CMusCallMonitorBase::IsDataReadyL" )
- TPtrC prefix = aOriginator.Left( KDoNotSendOwnNumber().Length() );
- if ( prefix == KDoNotSendOwnNumber()|| prefix == KDoSendOwnNumber() )
- {
- MUS_LOG( "Number have a prefix" );
- withoutPrefix = aOriginator.AllocL();
- *withoutPrefix = aOriginator;
- TPtr ptr = withoutPrefix->Des();
- ptr.Delete(0,KDoNotSendOwnNumber().Length());
- }
- else
- {
- withoutPrefix = aOriginator.AllocL();
- }
-
- MUS_LOG( "mus: [MUSAO] <- CMusCallMonitorBase::RemovePrefix" );
- return withoutPrefix;
- }
-
+ // Ensure there is tel Number.
+ HBufC* telNumInfo = HBufC::NewLC( RProperty::KMaxPropertySize );
+ TPtr ptelInfo = telNumInfo->Des();
+ TInt err = KErrNone;
+
+ err = RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ ptelInfo );
-// --------------------------------------------------------------------------
-// void CMusCallMonitorBase::SetTerminatingPrivacy()
-// --------------------------------------------------------------------------
-//
-void CMusCallMonitorBase::SetTerminatingPrivacy( const RMobileCall& aCall ) const
- {
- MUS_LOG( "mus: [MUSAO] -> CMusCallMonitorBase::SetTerminatingPrivacy" )
- RMobileCall::TMobileCallInfoV3 callInfo;
- RMobileCall::TMobileCallInfoV3Pckg callInfoPckg( callInfo );
- if( aCall.GetMobileCallInfo( callInfoPckg ) != KErrNone )
- {
- return; // error cannot do
- }
- MUS_LOG( "mus: [MUSAO] Get remote status" )
- RMobileCall::TMobileCallRemoteIdentityStatus remoteStatus =
- callInfo.iRemoteParty.iRemoteIdStatus;
-
- if( remoteStatus == RMobileCall::ERemoteIdentitySuppressed )
- {
- RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSPrivacy,
- ( TInt ) NMusSessionInformationApi::EPrivacyOn );
- }
- else
- {
- RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSPrivacy,
- ( TInt ) NMusSessionInformationApi::EPrivacyOff );
- }
- MUS_LOG1( "mus: [MUSAO] Remote status = %d",remoteStatus )
- MUS_LOG( "mus: [MUSAO] <- CMusCallMonitorBase::SetTerminatingPrivacy" )
+ TBool telInfoExisit ( err == KErrNone && telNumInfo->Des().Length() > 0 );
+ CleanupStack::PopAndDestroy( telNumInfo );
+
+ // Ensure Call direction info is there
+ TInt callDirection = NMusSessionInformationApi::ENoDirection;
+ err = RProperty::Get(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallDirection,
+ callDirection );
+
+ TBool callInfoExisit ( err == KErrNone && callDirection != NMusSessionInformationApi::ENoDirection );
+
+ MUS_LOG( "mus: [MUSAO] <- CMusCallMonitorBase::IsDataReadyL" )
+ return telInfoExisit && callInfoExisit;
}
// End of file
--- a/mmshplugins/mmshaoplugin/src/muscallstatusmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/src/muscallstatusmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -30,11 +30,12 @@
//
CMusCallStatusMonitor* CMusCallStatusMonitor::NewL(
const RMobileCall& aCall,
- MMusTsyPropertyObserver& aObserver )
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver )
{
MUS_LOG( "mus: [MUSAO] -> CMusCallStatusMonitor::NewL" )
CMusCallStatusMonitor* self =
- new( ELeave )CMusCallStatusMonitor( aCall, aObserver );
+ new( ELeave )CMusCallStatusMonitor( aCall, aObserver, aCallStateObserver );
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -75,8 +76,9 @@
//
CMusCallStatusMonitor::CMusCallStatusMonitor(
const RMobileCall& aCall,
- MMusTsyPropertyObserver& aObserver )
- : CMusCallMonitorBase( aCall, aObserver )
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver )
+ : CMusCallMonitorBase( aCall, aObserver, aCallStateObserver )
{
}
--- a/mmshplugins/mmshaoplugin/src/musclirmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/*
-* Copyright (c) 2009 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: Monitor that observes the calling line identity restriction
-* setting
-*
-*/
-
-
-#include "musclirmonitor.h"
-#include "muslogger.h"
-#include "mussesseioninformationapi.h"
-#include <mmtsy_names.h>
-#include <e32property.h>
-
-const TInt KMaxErrorsBeforeStop = 5;
-
-using namespace NMusSessionInformationApi;
-
-// -----------------------------------------------------------------------------
-// CMusClirMonitor::NewL
-// -----------------------------------------------------------------------------
-//
-CMusClirMonitor* CMusClirMonitor::NewL()
- {
- MUS_LOG( "mus: [CALLMN] -> CMusClirMonitor::NewL" )
-
- CMusClirMonitor* self = new (ELeave) CMusClirMonitor;
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- MUS_LOG( "mus: [CALLMN] <- CMusClirMonitor::NewL" )
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusClirMonitor::~CMusClirMonitor
-// -----------------------------------------------------------------------------
-//
-CMusClirMonitor::~CMusClirMonitor()
- {
- MUS_LOG( "mus: [CALLMN] -> CMusClirMonitor::~CMusClirMonitor" )
-
- Cancel();
- delete iTelephony;
-
- MUS_LOG( "mus: [CALLMN] <- CMusClirMonitor::~CMusClirMonitor" )
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusClirMonitor::CMusClirMonitor
-// Read the parameter's current value
-// -----------------------------------------------------------------------------
-//
-CMusClirMonitor::CMusClirMonitor() :
- CActive( EPriorityNormal ),
- iTIdentityServiceV1Pckg( iTIdentityServiceV1 ),
- iAllowed( ETrue ),
- iErrorCount( 0 )
- {
- MUS_LOG( "mus: [CALLMN] -> CMusClirMonitor::CMusClirMonitor" )
-
- CActiveScheduler::Add( this );
-
- MUS_LOG( "mus: [CALLMN] <- CMusClirMonitor::CMusClirMonitor" )
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusClirMonitor::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CMusClirMonitor::ConstructL()
- {
- iTelephony = CTelephony::NewL();
- ReadClir(); // Read the initial value
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusClirMonitor::RunL
-// -----------------------------------------------------------------------------
-//
-void CMusClirMonitor::RunL()
- {
- MUS_LOG1( "mus: [CALLMN] -> CMusClirMonitor::RunL iStatus=%d",
- iStatus.Int() )
-
- if ( iStatus == KErrNone )
- {
- TranslateResult( iTIdentityServiceV1.iIdentityStatus );
- iErrorCount = 0;
- }
- else
- {
- ++iErrorCount;
- MUS_LOG1( "mus: [CALLMN] Failed, error count(%d)", iErrorCount )
-
- // If reading fails, retry few times
- if ( iErrorCount <= KMaxErrorsBeforeStop )
- {
- ReadClir();
- }
- }
-
- MUS_LOG( "mus: [CALLMN] <- CMusClirMonitor::RunL" )
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusClirMonitor::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CMusClirMonitor::DoCancel()
- {
- MUS_LOG( "mus: [CALLMN] -> CMusClirMonitor::DoCancel" )
-
- iTelephony->CancelAsync( CTelephony::EGetIdentityServiceStatusCancel );
-
- MUS_LOG( "mus: [CALLMN] <- CMusClirMonitor::DoCancel" )
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusClirMonitor::RunError
-// Ignore errors and continue
-// -----------------------------------------------------------------------------
-//
-TInt CMusClirMonitor::RunError( TInt aError )
- {
- MUS_LOG1( "mus: [CALLMN] <-> CMusClirMonitor::RunError aError %d", aError )
- aError = KErrNone; // Get rid of "aError is not used" warning in UREL
- return aError;
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusClirMonitor::ReadClir
-// -----------------------------------------------------------------------------
-//
-void CMusClirMonitor::ReadClir()
- {
- MUS_LOG( "mus: [CALLMN] -> CMusClirMonitor::ReadClir" )
-
- if ( !IsActive( ))
- {
- CTelephony::TIdentityService condition =
- CTelephony::EIdServiceCallerRestriction;
- iTelephony->GetIdentityServiceStatus( iStatus,
- condition,
- iTIdentityServiceV1Pckg );
- SetActive();
- }
-
- MUS_LOG( "mus: [CALLMN] <- CMusClirMonitor::ReadClir" )
- }
-
-
-// -----------------------------------------------------------------------------
-// CMusClirMonitor::TranslateResult
-// -----------------------------------------------------------------------------
-//
-void
-CMusClirMonitor::TranslateResult( CTelephony::TIdentityServiceStatus aResult )
- {
- MUS_LOG1( "mus: [CALLMN] -> CMusClirMonitor::TranslateResult aResult=%d",
- aResult )
-
- switch ( aResult )
- {
- case CTelephony::EIdServiceActivePermanent:
- case CTelephony::EIdServiceActiveDefaultRestricted:
- iAllowed = EFalse;
- break;
-
- case CTelephony::EIdServiceActiveDefaultAllowed:
- case CTelephony::EIdServiceNotProvisioned:
- iAllowed = ETrue;
- break;
-
- case CTelephony::EIdServiceUnknown:
- default:
- ; // retain current value
- }
-
- TMusClirSetting sendNumber( EDoNotSendOwnNumber );
- if ( iAllowed )
- {
- sendNumber = ESendOwnNumber;
- }
- RProperty::Set( KCategoryUid, KMusClirSetting, sendNumber );
-
- MUS_LOG1( "mus: [CALLMN] <- CMusClirMonitor::TranslateResult allowed=%d",
- iAllowed )
- }
-
-// end of file
--- a/mmshplugins/mmshaoplugin/src/muspropertymonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/src/muspropertymonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -17,7 +17,6 @@
#include "muspropertymonitor.h"
-#include "musmanager.h"
#include "mussesseioninformationapi.h"
#include "muslogger.h"
@@ -26,10 +25,10 @@
// Symbian two-phase constructor.
// -----------------------------------------------------------------------------
//
-CMusPropertyMonitor* CMusPropertyMonitor::NewL()
+CMusPropertyMonitor* CMusPropertyMonitor::NewL( MMusCallStateObserver& aCallStateObserver )
{
MUS_LOG( "mus: [MUSAO] -> CMusPropertyMonitor::NewL" )
- CMusPropertyMonitor* self = new (ELeave) CMusPropertyMonitor();
+ CMusPropertyMonitor* self = new (ELeave) CMusPropertyMonitor( aCallStateObserver );
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -41,8 +40,8 @@
// C++ constructor.
// -----------------------------------------------------------------------------
//
-CMusPropertyMonitor::CMusPropertyMonitor()
- :CActive( EPriorityNormal )
+CMusPropertyMonitor::CMusPropertyMonitor( MMusCallStateObserver& aCallStateObserver )
+ :CActive( EPriorityNormal ), iCallStateObserver ( aCallStateObserver )
{
}
@@ -73,7 +72,6 @@
MUS_LOG( "mus: [MUSAO] -> CMusPropertyMonitor::~CMusPropertyMonitor" )
Cancel();
iPropertyEvent.Close();
- delete iManager;
MUS_LOG( "mus: [MUSAO] -> <- CMusPropertyMonitor::~CMusPropertyMonitor" )
}
@@ -86,40 +84,14 @@
void CMusPropertyMonitor::RunL()
{
MUS_LOG( "mus: [MUSAO] -> CMusPropertyMonitor::RunL" )
+
// resubscribe before processing new value to prevent missing updates
iPropertyEvent.Subscribe( iStatus );
SetActive();
- TInt value = NMusSessionInformationApi::ENoCall;
- User::LeaveIfError(iPropertyEvent.Get( value ));
- switch(value)
- {
- /* CallHold and ConferenceCall are Error Cases.Will be handled by
- Availability Plugin and Inform to AIW.
- */
- case NMusSessionInformationApi::ECallHold:
- MUS_LOG( "mus: [MUSAO] CallEvent = ECallHold" )
- break;
- case NMusSessionInformationApi::EConferenceCall:
- MUS_LOG( "mus: [MUSAO] CallEvent = EConferenceCall" )
- break;
- /* When Call is connected , start the MusClient */
- case NMusSessionInformationApi::ECallConnected:
- MUS_LOG( "mus: [MUSAO] CallEvent = ECallConnected" )
- StartMusClientL();
- break;
- /* When Call is disconnected , stop the MusClient */
- case NMusSessionInformationApi::ENoCall:
- MUS_LOG( "mus: [MUSAO] CallEvent = ENoCall" )
- StopMusClient();
- break;
- case NMusSessionInformationApi::EConferenceTerminated:
- MUS_LOG( "mus: [MUSAO] CallEvent = EConferenceTerminated" )
- break;
-
- default:
- MUS_LOG( "mus: [MUSAO] CallEvent = default. Treated ENoCall" )
- StopMusClient();
- }
+
+ //Check if preconditions are met to start or stop the MushClient.
+ iCallStateObserver.MusCallStateChanged();
+
MUS_LOG( "mus: [MUSAO] <- CMusPropertyMonitor::RunL" )
}
@@ -137,41 +109,6 @@
}
// -----------------------------------------------------------------------------
-// CMusPropertyMonitor::StartMusClient()
-// This will start the MusManager Client which inturn should start
-// MusManager Server and Availability Plugin.
-// -----------------------------------------------------------------------------
-//
-void CMusPropertyMonitor::StartMusClientL()
- {
- MUS_LOG( "mus: [MUSAO] -> CMusPropertyMonitor::StartMusClient" )
- if( !iManager )
- {
- iManager = CMusManager::NewL();
- }
- iManager->ExamineAvailabilityL();
- MUS_LOG( "mus: [MUSAO] <- CMusPropertyMonitor::StartMusClient" )
- }
-
-// -----------------------------------------------------------------------------
-// CMusPropertyMonitor::StopMusClient()
-// This will stop the MusManager Client which inturn should stop
-// MusManager Server and Availability Plugin.
-// -----------------------------------------------------------------------------
-//
-void CMusPropertyMonitor::StopMusClient()
- {
- MUS_LOG( "mus: [MUSAO] -> CMusPropertyMonitor::StopMusClient" )
- if( iManager )
- {
- delete iManager;
- iManager = NULL;
- }
- MUS_LOG( "mus: [MUSAO] <- CMusPropertyMonitor::StopMusClient" )
-
- }
-
-// -----------------------------------------------------------------------------
// CMusPropertyMonitor::RunError()
// Implemented for CActive.It will be called automatically
// when a leave occurs in RunL()
@@ -180,14 +117,37 @@
TInt CMusPropertyMonitor::RunError(TInt aError)
{
MUS_LOG1( "mus: [MUSAO] -> CMusPropertyMonitor::RunError = %d",aError )
- if( iManager )
- {
- delete iManager;
- iManager = NULL;
- }
+
+ // Monitoring Error Occurred, Terminate the MushSession.
+ TInt err = RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ NMusSessionInformationApi::ENoCall);
+
+ iCallStateObserver.MusCallStateChanged();
+
aError = KErrNone; // We handled this error already. So return KErrNone.
MUS_LOG( "mus: [MUSAO] <- CMusPropertyMonitor::RunError " )
return aError;
}
+// -----------------------------------------------------------------------------
+// CMusPropertyMonitor::IsCallConnected()
+// Checks if the call is connected:
+// -----------------------------------------------------------------------------
+//
+TBool CMusPropertyMonitor::IsCallConnected()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusPropertyMonitor::IsCallConnected" )
+ TInt callState = ( TInt ) NMusSessionInformationApi::ENoCall;
+ TInt err = KErrNone;
+
+ err = RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ callState );
+
+ MUS_LOG( "mus: [MUSAO] <- CMusPropertyMonitor::IsCallConnected" )
+
+ return ( err == KErrNone && callState != NMusSessionInformationApi::ENoCall );
+ }
+
// End of file
--- a/mmshplugins/mmshaoplugin/src/mustsypropertymonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/src/mustsypropertymonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -19,11 +19,11 @@
#include "mustsypropertymonitor.h"
#include "muscallconferencemonitor.h"
#include "muscallmonitor.h"
+#include "musvoipcallmonitor.h"
#include "muslogger.h"
-#include "mussettings.h"
-#include "musclirmonitor.h"
+#include "musfactorysettings.h"
-#include <etel.h>
+
#include <e32property.h>
#include <mmtsy_names.h>
#include <ctsydomainpskeys.h>
@@ -33,10 +33,11 @@
// Symbian two-phase constructor.
// -----------------------------------------------------------------------------
//
-CMusTsyPropertyMonitor* CMusTsyPropertyMonitor::NewL( RMobilePhone& aPhone )
+CMusTsyPropertyMonitor* CMusTsyPropertyMonitor::NewL( RMobilePhone& aPhone,
+ MMusCallStateObserver& aCallStateObserver )
{
MUS_LOG( "mus: [MUSAO] -> CMusTsyPropertyMonitor::NewL" )
- CMusTsyPropertyMonitor* self = new (ELeave) CMusTsyPropertyMonitor(aPhone);
+ CMusTsyPropertyMonitor* self = new (ELeave) CMusTsyPropertyMonitor( aPhone, aCallStateObserver );
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -53,9 +54,10 @@
{
MUS_LOG( "mus: [MUSAO] -> CMusTsyPropertyMonitor::~CMusTsyPropertyMonitor" )
Cancel();
- delete iConferenceMonitor;
- delete iClirMonitor;
- iCallMonitorArray.ResetAndDestroy();
+ delete iConferenceMonitor;
+ iCallMonitorArray.ResetAndDestroy();
+ iCallMonitorArray.Close();
+ RemoveAllVoipCallMonitors();
iLine.Close();
MUS_LOG( "mus: [MUSAO] <- CMusTsyPropertyMonitor::~CMusTsyPropertyMonitor" )
}
@@ -70,13 +72,7 @@
CActiveScheduler::Add(this);
User::LeaveIfError( iLine.Open( iPhone, KMmTsyVoice1LineName() ) );
iConferenceMonitor = CMusCallConferenceMonitor::NewL(
- iPhone,iLine,iCallMonitorArray);
-
- if (MultimediaSharingSettings::PrivacySetting())
- {
- iClirMonitor = CMusClirMonitor::NewL();
- }
-
+ iPhone,iLine,iCallMonitorArray);
User::LeaveIfError( iPropertyEvent.Attach(
KPSUidCtsyCallInformation,
KCTsyCallState ) );
@@ -89,8 +85,8 @@
// C++ constructor.
// -----------------------------------------------------------------------------
//
-CMusTsyPropertyMonitor::CMusTsyPropertyMonitor(RMobilePhone& aPhone)
- : CActive( EPriorityNormal ),iPhone(aPhone)
+CMusTsyPropertyMonitor::CMusTsyPropertyMonitor(RMobilePhone& aPhone, MMusCallStateObserver& aCallStateObserver )
+ : CActive( EPriorityNormal ),iPhone(aPhone), iCallStateObserver ( aCallStateObserver )
{
}
@@ -106,24 +102,36 @@
// subscribe , so that we dont miss any events.
iPropertyEvent.Subscribe( iStatus );
SetActive();
- TInt value = EPSCTsyCallStateUninitialized;
- User::LeaveIfError(iPropertyEvent.Get( value ));
- MUS_LOG1( "mus: [MUSAO] iTsyCallMonitor->CallState = %d",value )
- switch(value)
+ TPSCTsyCallState callState = EPSCTsyCallStateUninitialized;
+ User::LeaveIfError(iPropertyEvent.Get( (TInt&)callState ));
+ TPSCTsyCallType callType = EPSCTsyCallTypeUninitialized;
+ User::LeaveIfError(RProperty::Get(KPSUidCtsyCallInformation,KCTsyCallType,
+ (TInt&)callType));
+ MUS_LOG1( "mus: [MUSAO] iTsyCallMonitor->CallState = %d",callState )
+ switch(callState)
{
- case EPSCTsyCallStateNone:
+ case EPSCTsyCallStateNone:
+ MUS_LOG( "mus: [MUSAO] EPSCTsyCallStateNone" )
SetStateL(NMusSessionInformationApi::ENoCall);
// Sometimes disconnected call goes stright to this state
// so we have to call this function to remove call monitors.
- RemoveAllCallMonitor();
- break;
- case EPSCTsyCallStateDisconnecting:
- case EPSCTsyCallStateAnswering:
- case EPSCTsyCallStateConnected:
- case EPSCTsyCallStateHold:
- // in all above states if multible call exist then
- // we have to find all the calls state and do accordingly.
- MonitorCallL();
+ MonitorCallL( callState,callType);
+ break;
+ case EPSCTsyCallStateDisconnecting:
+ MUS_LOG( "mus: [MUSAO] EPSCTsyCallStateDisconnecting" )
+ MonitorCallL( callState,callType);
+ break;
+ case EPSCTsyCallStateAnswering:
+ MUS_LOG( "mus: [MUSAO] EPSCTsyCallStateAnswering" )
+ MonitorCallL( callState,callType);
+ break;
+ case EPSCTsyCallStateConnected:
+ MUS_LOG( "mus: [MUSAO] EPSCTsyCallStateConnected" )
+ MonitorCallL( callState,callType);
+ break;
+ case EPSCTsyCallStateHold:
+ MUS_LOG( "mus: [MUSAO] EPSCTsyCallStateHold" )
+ SetStateL(NMusSessionInformationApi::ECallHold);
break;
default:
MUS_LOG( "mus: [MUSAO] Undesired CallState " )
@@ -179,19 +187,13 @@
}
MUS_LOG1( "mus: [MUSAO] Call Exist = %d ",isCallExist )
if( !isCallExist )
- {
- if ( iClirMonitor )
- {
- //Start async reading of CLIR from phone settings
- iClirMonitor->ReadClir();
- }
-
+ {
CMusCallMonitor* callMonitor = CMusCallMonitor::NewL( aCallName,
IsPttCallExist() );
CleanupStack::PushL( callMonitor );
iCallMonitorArray.AppendL( callMonitor );
CleanupStack::Pop( callMonitor );
- callMonitor->StartMonitorL(iLine, *this);
+ callMonitor->StartMonitorL(iLine, *this, iCallStateObserver );
}
MUS_LOG( "mus: [MUSAO] <- CMusTsyPropertyMonitor::AddCallMonitorL" )
}
@@ -320,13 +322,52 @@
MUS_LOG( "mus: [MUSAO] <- CMusTsyPropertyMonitor::SetStateL" )
}
-
// -----------------------------------------------------------------------------
// CMusTsyPropertyMonitor::MonitorCallL()
-// Monitors the call and if needed adds/removes call monitor.
+// Decides which call monitor (CS,VOIP etc ) has to be called.
// -----------------------------------------------------------------------------
//
-void CMusTsyPropertyMonitor::MonitorCallL()
+void CMusTsyPropertyMonitor::MonitorCallL( const TPSCTsyCallState& aCallState,
+ const TPSCTsyCallType& aCallType)
+ {
+ MUS_LOG( "mus: [MUSAO] -> CCMusTsyPropertyMonitor::MonitorCallL" )
+ switch( aCallType )
+ {
+ case EPSCTsyCallTypeUninitialized:
+ case EPSCTsyCallTypeNone:
+ case EPSCTsyCallTypeFax:
+ case EPSCTsyCallTypeData:
+ case EPSCTsyCallTypeHSCSD:
+ case EPSCTsyCallTypeH324Multimedia:
+ break;// dont care
+ case EPSCTsyCallTypeCSVoice:
+ MonitorCSCallL();
+ break;
+ case EPSCTsyCallTypeVoIP:
+ {
+ // if error occured when reading factory setting key
+ // behave default ie all calls supported.
+ TBool supported = ETrue;
+ TRAP_IGNORE( supported = MusFactorySettings::IsSupportedL( aCallType ) )
+ if( supported)
+ {
+ MonitorVoipCallL( aCallState );
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ // Check now for multimediasharing call criteria.
+ CheckCallCriteriaL();
+ MUS_LOG( "mus: [MUSAO] <- CCMusTsyPropertyMonitor::MonitorCallL" )
+ }
+// -----------------------------------------------------------------------------
+// CMusTsyPropertyMonitor::MonitorCSCallL()
+// Monitors the CS call and if needed adds/removes call monitor.
+// -----------------------------------------------------------------------------
+//
+void CMusTsyPropertyMonitor::MonitorCSCallL()
{
MUS_LOG( "mus: [MUSAO] -> CMusTsyPropertyMonitor::MonitorCallL")
TInt callCount;
@@ -349,22 +390,173 @@
{
AddCallMonitorL(callInfo.iCallName);
}
- }
- // Sometimes when call get disconnected then call object disappears.So
- // check the call state or open the call , if there is an error or undesired
- // call state , remove that callmonitor from array.
- RemoveUnUsedCallMonitors();
+ }
+ MUS_LOG( "mus: [MUSAO] <- CMusTsyPropertyMonitor::MonitorCallL")
+ }
- if(iCallMonitorArray.Count() > 1)
+// -----------------------------------------------------------------------------
+// CMusTsyPropertyMonitor::MonitorVoipCallL()
+// Monitors the voip call and if needed adds/removes call monitor.
+// -----------------------------------------------------------------------------
+//
+void CMusTsyPropertyMonitor::MonitorVoipCallL( const TPSCTsyCallState& aCallState)
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusTsyPropertyMonitor::MonitorVoipCallL")
+ // TODO : Call Name should be read from covergence api [CCE/CCH]
+ // which is not available as of now 22-Dec-2008
+ TName callName(_L("Voip 1"));
+ switch(aCallState)
+ {
+ case EPSCTsyCallStateDisconnecting:
+ MUS_LOG( "mus: [MUSAO] EPSCTsyCallStateDisconnecting" )
+ RemoveVoipCallMonitor(callName);
+ break;
+ case EPSCTsyCallStateAnswering:
+ case EPSCTsyCallStateConnected:
+ MUS_LOG( "mus: [MUSAO] EPSCTsyCallStateAnswering/EPSCTsyCallStateConnected" )
+ AddVoipCallMonitorL(callName);
+ break;
+ default:
+ break;
+ }
+ MUS_LOG( "mus: [MUSAO] <- CMusTsyPropertyMonitor::MonitorVoipCallL")
+ }
+
+// -----------------------------------------------------------------------------
+// CMusTsyPropertyMonitor::AddVoipCallMonitorL( TName aCallName )
+// Adds new voip call monitor if the call is not monitored already.
+// -----------------------------------------------------------------------------
+//
+void CMusTsyPropertyMonitor::AddVoipCallMonitorL(TName& aCallName)
+ {
+ MUS_LOG_TDESC( "mus: [MUSAO] -> CMusTsyPropertyMonitor::AddCallMonitorL"\
+ ,aCallName )
+ TBool isCallExist = EFalse;
+ for ( TInt i = 0; i < iVoipCallMonitorArray.Count() && !isCallExist; i++ )
+ {
+ if( iVoipCallMonitorArray[i]->IsEqual( aCallName ) )
+ {
+ isCallExist = ETrue;
+ }
+ }
+ MUS_LOG1( "mus: [MUSAO] Call Exist = %d ",isCallExist )
+ if( !isCallExist )
{
- // it is already multicall so atleast one should be hold.
- // so set the state first to hold
- SetStateL(NMusSessionInformationApi::ECallHold);
- // still we dont know here about conference state so
- // let the conference call monitor decide .
- iConferenceMonitor->SetStateL();
+ CMusVoipCallMonitor* callMonitor =
+ CMusVoipCallMonitor::NewL( aCallName, iCallStateObserver );
+ CleanupStack::PushL( callMonitor );
+ iVoipCallMonitorArray.AppendL( callMonitor );
+ CleanupStack::Pop( callMonitor );
+ }
+ MUS_LOG( "mus: [MUSAO] <- CMusTsyPropertyMonitor::AddCallMonitorL" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMusTsyPropertyMonitor::RemoveCallEventMonitorL( TName aCallName )
+// Remove the Call Monitor if it exist in array.
+// -----------------------------------------------------------------------------
+//
+void CMusTsyPropertyMonitor::RemoveVoipCallMonitor( TName& aCallName )
+ {
+ MUS_LOG_TDESC( "mus: [MUSAO] -> CMusTsyPropertyMonitor::RemoveCallMonitor "
+ ,aCallName )
+ for ( TInt i = 0; i < iVoipCallMonitorArray.Count(); i++ )
+ {
+ if( iVoipCallMonitorArray[i]->IsEqual( aCallName ) )
+ {
+ delete iVoipCallMonitorArray[i];
+ iVoipCallMonitorArray.Remove(i);
+ break;
+ }
}
- MUS_LOG( "mus: [MUSAO] <- CMusTsyPropertyMonitor::MonitorCallL")
+ MUS_LOG( "mus: [MUSAO] <- CMusTsyPropertyMonitor::RemoveCallMonitor" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMusTsyPropertyMonitor::RemoveAllVoipCallMonitors
+// Remove all voip call monitors
+// -----------------------------------------------------------------------------
+//
+void CMusTsyPropertyMonitor::RemoveAllVoipCallMonitors( )
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusTsyPropertyMonitor::RemoveAllVoipCallMonitors ")
+ iVoipCallMonitorArray.ResetAndDestroy();
+ iVoipCallMonitorArray.Close();
+ MUS_LOG( "mus: [MUSAO] <- CMusTsyPropertyMonitor::RemoveAllVoipCallMonitors" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMusTsyPropertyMonitor::CheckCallCriteria
+// Checks the Multimediasharing call criterias
+// -----------------------------------------------------------------------------
+//
+void CMusTsyPropertyMonitor::CheckCallCriteriaL()
+ {
+ TInt csCall = iCallMonitorArray.Count();
+ TInt voipCall = iVoipCallMonitorArray.Count();
+ switch( csCall )
+ {
+ case 0 :
+ {
+ switch( voipCall )
+ {
+ /* No cs call or voip call */
+ case 0 :
+ {
+ User::LeaveIfError(
+ RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ 0 ));
+ SetStateL(NMusSessionInformationApi::ENoCall);
+ break;
+ }
+ /* No cs call but one voip call */
+ case 1 :
+ {
+ iVoipCallMonitorArray[0]->
+ SetStateL(NMusSessionInformationApi::ECallConnected);
+ break;
+ }
+ /* No cs call but more than one voip call */
+ default: SetStateL(NMusSessionInformationApi::ECallHold);
+ break;
+ }
+ break;
+ }
+ case 1 :
+ {
+ switch( voipCall )
+ {
+ /* One cs call but no voip call */
+ case 0 : break;// Will be handled by cs call monitors.
+ /* One cs call and one or more voip calls */
+ default : SetStateL(NMusSessionInformationApi::ECallHold);
+ break;
+ }
+ break;
+ }
+ default: // 2 or more CS calls
+ {
+ /* Sometimes when call get disconnected then call object disappears.So
+ * check the call state or open the call , if there is an error or undesired
+ * call state , remove that callmonitor from array.
+ */
+ RemoveUnUsedCallMonitors();
+
+ /* It is already multicall so atleast one should be under hold.
+ * so set the state first to hold and then let the conference
+ * monitor decide the conference state.
+ */
+ SetStateL(NMusSessionInformationApi::ECallHold);
+
+ /* Still we dont know here about conference state so
+ * let the conference call monitor decide .
+ */
+ iConferenceMonitor->SetStateL();
+ break;
+ }
+ }
}
@@ -449,4 +641,41 @@
MUS_LOG( "mus: [MUSAO] <- CMusTsyPropertyMonitor::NotifyCallStateChanged" )
}
+
+
+
+// -----------------------------------------------------------------------------
+// CMusTsyPropertyMonitor::IsDataReadyL
+// -----------------------------------------------------------------------------
+//
+TBool CMusTsyPropertyMonitor::IsDataReadyL()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusTsyPropertyMonitor::IsDataReadyL" )
+
+ TBool dataReady = EFalse;
+ TInt csCall = iCallMonitorArray.Count();
+ TInt voipCall = iVoipCallMonitorArray.Count();
+
+ // In case of Conference Notify that data is ready.
+ if ( iConferenceMonitor->GetConfStatus() != RMobileConferenceCall::EConferenceIdle )
+ {
+ MUS_LOG( "mus: [MUSAO] Conference CASE" )
+ dataReady = ETrue;
+ }
+ else if ( csCall == 1 && !voipCall )
+ {
+ MUS_LOG( "mus: [MUSAO] CS CALL" )
+ dataReady = iCallMonitorArray[0]->IsDataReadyL();
+ }
+ else if ( voipCall == 1 && !csCall )
+ {
+ MUS_LOG( "mus: [MUSAO] VOIP CALL" )
+ dataReady = iVoipCallMonitorArray[0]->IsDataReadyL();
+ }
+
+ MUS_LOG1( "mus: [MUSAO] <- CMusTsyPropertyMonitor::IsDataReadyL = %d",dataReady)
+ return dataReady;
+ }
+
// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/src/musvoipcallmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,502 @@
+/*
+* Copyright (c) 2005-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: Monitors the VOIP calls.
+*
+*/
+
+
+#include <e32property.h>
+#include <telephonydomainpskeys.h>
+
+// Call Information API
+#include <ccallinformation.h>
+
+// SP Settings
+#include <spdefinitions.h>
+#include <spentry.h>
+#include <spproperty.h>
+#include <spsettings.h>
+
+#include "musvoipcallmonitor.h"
+#include "mussesseioninformationapi.h"
+#include "muslogger.h"
+
+const TUint KMusAoRemoteInfoMonitoringTimeout = 2000000; // 2 seconds
+_LIT( KSipAt, "@" );
+
+// -----------------------------------------------------------------------------
+// Symbian two-phase constructor.
+// -----------------------------------------------------------------------------
+//
+CMusVoipCallMonitor* CMusVoipCallMonitor::NewL( TName& aCallName,
+ MMusCallStateObserver& aCallStateObserver )
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::NewL" )
+ CMusVoipCallMonitor* self =
+ new (ELeave) CMusVoipCallMonitor( aCallName, aCallStateObserver );
+ CleanupStack::PushL( self );
+ self->ConstructL( );
+ CleanupStack::Pop( self );
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::NewL" )
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// C++ destructor.
+// -----------------------------------------------------------------------------
+//
+CMusVoipCallMonitor::~CMusVoipCallMonitor()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::~CMusVoipCallMonitor" )
+
+ ResetCallProviderName();
+
+ StopRemoteInfoMonitoring();
+
+ iPropertyEvent.Close();
+
+ delete iGuardTimer;
+
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::~CMusVoipCallMonitor" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// C++ constructor.
+// -----------------------------------------------------------------------------
+//
+CMusVoipCallMonitor::CMusVoipCallMonitor( TName& aCallName,
+ MMusCallStateObserver& aCallStateObserver ):
+ CActive( CActive::EPriorityStandard ),
+ iCallName ( aCallName ),
+ iCallStateObserver ( aCallStateObserver ),
+ iGuardTimerCallBack( GuardTimerExpired, this )
+ {
+ CActiveScheduler::Add( this );
+
+ iGuardTimerEntry.Set( iGuardTimerCallBack );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Symbian second-phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CMusVoipCallMonitor::ConstructL( )
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::ConstructL" )
+
+ User::LeaveIfError( iPropertyEvent.Attach(
+ KPSUidTelRemotePartyInformation,
+ KTelCLINumber ) );
+
+ iGuardTimer = CDeltaTimer::NewL( CActive::EPriorityStandard );
+
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::ConstructL" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMusVoipCallMonitor::SetStateL( )
+// Sets the call state property key.See mussesseioninformationapi.h
+// Also sets the call information if call state is Connected.
+// If call is connected but remote info cannot be found, information
+// publishing is delayed until remote info comes available or monitoring
+// for the info timeouts. In voip case, remote info should be basically
+// always available, but in some cases it is not immediately available
+// when call status changes to connected.
+// -----------------------------------------------------------------------------
+//
+void CMusVoipCallMonitor::SetStateL(NMusSessionInformationApi::TMusCallEvent aVal)
+ {
+ MUS_LOG1( "mus: [MUSAO] -> CMusVoipCallMonitor::SetStateL, aVal %d", aVal )
+ // set the call state only if the call count is one else it should be decided
+ // by conference monitor or line/tsy monitor.
+
+ TBool delayStateChange( EFalse );
+ if ( aVal == NMusSessionInformationApi::ECallConnected )
+ {
+ if ( !RemoteInfoExistsL() )
+ {
+ MonitorForRemoteInfoL();
+ delayStateChange = ETrue;
+ }
+ }
+ else
+ {
+ StopRemoteInfoMonitoring();
+ }
+
+ if ( delayStateChange )
+ {
+ MUS_LOG( "mus: [MUSAO] state change delayed!" )
+ }
+ else
+ {
+ ReportStateChangeL( aVal );
+ }
+
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::SetStateL" )
+ }
+
+///-----------------------------------------------------------------------------
+// CMusVoipCallMonitor::SetCallInfoL( )
+// -----------------------------------------------------------------------------
+//
+void CMusVoipCallMonitor::SetCallInfoL()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::SetCallInfoL")
+
+ // Set Call Provider Information
+ TUint32 serviceId = CallServiceIdL();
+ SetCallProviderInfoL( serviceId );
+
+ HBufC* remoteUri = HBufC::NewLC( RProperty::KMaxPropertySize );
+ TPtr rUri = remoteUri->Des();
+ TInt err = RProperty::Get( KPSUidTelRemotePartyInformation,
+ KTelCLINumber,
+ rUri );
+
+ if ( err == KErrNone && remoteUri->Des().Length() > 0 )
+ {
+ MUS_LOG_TDESC( "mus: [MUSAO] voip remote name: ", remoteUri->Des());
+
+ // Add "sip:" prefix to remoteUri unless it already exists
+ _LIT( KSipPrefix, "sip:" );
+ TPtr prefix = remoteUri->Des().LeftTPtr( KSipPrefix().Length() );
+ if ( prefix.Compare( KSipPrefix ) != 0 )
+ {
+ if ( remoteUri->Des().Length() + KSipPrefix().Length() >
+ remoteUri->Des().MaxLength() )
+ {
+ User::Leave( KErrOverflow );
+ }
+ remoteUri->Des().Insert( 0, KSipPrefix );
+ }
+ //if domain not present, add domain from voip profile (username)
+ if ( remoteUri->Find( KSipAt ) == KErrNotFound )
+ {
+ rUri.Set( remoteUri->Des() );
+ AddDomainFromOwnUsernameL( serviceId, rUri );
+ MUS_LOG_TDESC ( "mus: [MUSAO] full voip remote name:", (*remoteUri) )
+ }
+ }
+ else
+ {
+ remoteUri->Des().Zero();
+ }
+
+ User::LeaveIfError( RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber, remoteUri->Des() ) );
+
+ CleanupStack::PopAndDestroy(remoteUri);
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::SetCallInfoL" )
+ }
+
+///-----------------------------------------------------------------------------
+// CMusVoipCallMonitor::AddDomainFromOwnUsernameL( )
+// -----------------------------------------------------------------------------
+//
+void CMusVoipCallMonitor::AddDomainFromOwnUsernameL(
+ TUint32 /*aServiceId*/,
+ TDes16& /*aUri*/ )
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::AddDomainFromOwnUsernameL")
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::AddDomainFromOwnUsernameL, NOT SUPPORTED")
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::AddDomainFromOwnUsernameL")
+ }
+
+///-----------------------------------------------------------------------------
+// CMusVoipCallMonitor::CallServiceIdL( )
+// -----------------------------------------------------------------------------
+//
+TUint32 CMusVoipCallMonitor::CallServiceIdL()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::CallServiceIdL")
+ TUint32 serviceId( 0 );
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::CallServiceIdL, NOT SUPPORTED")
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::CallServiceIdL")
+ return serviceId;
+ }
+
+///-----------------------------------------------------------------------------
+// CMusVoipCallMonitor::SetCallProviderInfoL( )
+// -----------------------------------------------------------------------------
+//
+void CMusVoipCallMonitor::SetCallProviderInfoL( TUint32 aServiceId )
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::SetCallProviderInfoL")
+ CSPSettings* settings = CSPSettings::NewLC();
+ CSPEntry* entry = CSPEntry::NewLC();
+
+ TInt errorCode = settings->FindEntryL( aServiceId, *entry );
+
+ if ( errorCode == KErrNone && entry != NULL )
+ {
+ const TDesC& name = entry->GetServiceName();
+
+ MUS_LOG_TDESC ( "mus: [MUSAO]] CallProviderName IS -->", name )
+ User::LeaveIfError(RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ name));
+ }
+
+ CleanupStack::PopAndDestroy( entry );
+ CleanupStack::PopAndDestroy( settings );
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::SetCallProviderInfoL" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Checks the aName is equal to this monitors name.
+// @return ETrue if matches else EFalse
+// -----------------------------------------------------------------------------
+//
+TBool CMusVoipCallMonitor::IsEqual(TName& aName)
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::IsEqual" )
+ MUS_LOG_TDESC( "mus: [MUSAO] -> aName : ", aName );
+ MUS_LOG_TDESC( "mus: [MUSAO] -> iCallName : ", iCallName );
+ TBool val = EFalse ;
+ val = ( aName == iCallName );
+ MUS_LOG1( "mus: [MUSAO] <- CMusCallMonitor::IsEqual = %d",val )
+ return val;
+ }
+
+// -----------------------------------------------------------------------------
+// CMusVoipCallMonitor::RunL
+// -----------------------------------------------------------------------------
+//
+void CMusVoipCallMonitor::RunL()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::RunL" )
+
+ if ( RemoteInfoExistsL() )
+ {
+ // Connected state reporting was delayed because not having
+ // remote info, now it can be reported and monitoring is not needed anymore
+ StopRemoteInfoMonitoring();
+ ReportStateChangeL( NMusSessionInformationApi::ECallConnected );
+ }
+ else
+ {
+ // resubscribe
+ iPropertyEvent.Subscribe( iStatus );
+ SetActive();
+ }
+
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::RunL" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMusVoipCallMonitor::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CMusVoipCallMonitor::DoCancel()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::DoCancel" )
+
+ iPropertyEvent.Cancel();
+
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::DoCancel" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMusVoipCallMonitor::RunError
+// -----------------------------------------------------------------------------
+//
+TInt CMusVoipCallMonitor::RunError( TInt aError )
+ {
+ MUS_LOG1( "mus: [MUSAO] -> CMusVoipCallMonitor::RunError = %d", aError )
+ if ( aError != KErrNoMemory )
+ {
+ aError = KErrNone;
+ }
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::RunError" )
+ return aError;
+ }
+
+// -----------------------------------------------------------------------------
+// CMusVoipCallMonitor::RemoteInfoExistsL
+// -----------------------------------------------------------------------------
+//
+TBool CMusVoipCallMonitor::RemoteInfoExistsL()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::RemoteInfoExistsL" )
+
+ HBufC* remoteUri = HBufC::NewLC(RProperty::KMaxPropertySize);
+ TPtr rUri = remoteUri->Des();
+
+ TInt err = RProperty::Get( KPSUidTelRemotePartyInformation,
+ KTelCLINumber,
+ rUri );
+
+ TBool remoteInfoExists( err == KErrNone && remoteUri->Des().Length() > 0 );
+ CleanupStack::PopAndDestroy(remoteUri);
+
+ MUS_LOG1( "mus: [MUSAO] <- CMusVoipCallMonitor::RemoteInfoExistsL = %d",
+ remoteInfoExists )
+
+ return remoteInfoExists;
+ }
+
+// -----------------------------------------------------------------------------
+// CMusVoipCallMonitor::MonitorForRemoteInfoL
+// Start monitoring remote info P&S key. Guard timer is started
+// to prevent waiting for the infomation forever.
+// -----------------------------------------------------------------------------
+//
+void CMusVoipCallMonitor::MonitorForRemoteInfoL()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::MonitorForRemoteInfoL" )
+
+ if ( !IsActive() )
+ {
+ MUS_LOG( "mus: [MUSAO] activate" )
+
+ iGuardTimer->Remove( iGuardTimerEntry );
+ TTimeIntervalMicroSeconds32 interval( KMusAoRemoteInfoMonitoringTimeout );
+ iGuardTimer->Queue( interval, iGuardTimerEntry );
+
+ iPropertyEvent.Subscribe( iStatus );
+ SetActive();
+ }
+
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::MonitorForRemoteInfoL" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMusVoipCallMonitor::MonitorForRemoteInfoL
+// -----------------------------------------------------------------------------
+//
+void CMusVoipCallMonitor::StopRemoteInfoMonitoring()
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::StopRemoteInfoMonitoring" )
+
+ if ( iGuardTimer )
+ {
+ iGuardTimer->Remove( iGuardTimerEntry );
+ }
+
+ Cancel();
+
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::StopRemoteInfoMonitoring" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMusVoipCallMonitor::ReportStateChangeL
+// -----------------------------------------------------------------------------
+//
+void CMusVoipCallMonitor::ReportStateChangeL(
+ NMusSessionInformationApi::TMusCallEvent aVal )
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::ReportStateChangeL" )
+
+ TInt currentVal = 0;
+ User::LeaveIfError(RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ currentVal));
+
+
+ // Report only if the value changed else do not publish.
+ if(currentVal != (TInt)aVal)
+ {
+ User::LeaveIfError(RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ aVal ));
+ }
+ // When call is connected and the callcount is one,
+ // set the call informations.
+ if( aVal==NMusSessionInformationApi::ECallConnected )
+ {
+ SetCallInfoL();
+ }
+
+ iCallStateObserver.MusCallStateChanged();
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::ReportStateChangeL" )
+ }
+
+// -----------------------------------------------------------------------------
+// CMusVoipCallMonitor::GuardTimerExpired
+// If timer expired, it took too long to get remote party information via
+// P&S monitoring. Because of monitoring, call connected was not yet informed,
+// inform it now.
+// -----------------------------------------------------------------------------
+//
+TInt CMusVoipCallMonitor::GuardTimerExpired( TAny* aPtr )
+ {
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::GuardTimerExpired" )
+ if ( aPtr )
+ {
+ CMusVoipCallMonitor* self = reinterpret_cast<CMusVoipCallMonitor*>( aPtr );
+ self->StopRemoteInfoMonitoring();
+ TRAP_IGNORE(
+ self->ReportStateChangeL( NMusSessionInformationApi::ECallConnected ) )
+ }
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::GuardTimerExpired" )
+
+ return KErrNone;
+ }
+
+// --------------------------------------------------------------------------------
+// CMusCallConferenceMonitor::IsDataReadyL()
+// Checks if Data is ready VoIP Call.
+// --------------------------------------------------------------------------------
+
+TBool CMusVoipCallMonitor::IsDataReadyL()
+ {
+ //This function need to updated if some other P/S Key is published
+ //to ensure correct behaviour.
+
+ MUS_LOG( "mus: [MUSAO] -> CMusVoipCallMonitor::IsDataReadyL" )
+
+ // Ensure Provider Information is Availble.
+ HBufC* providerInfo = HBufC::NewLC( RProperty::KMaxPropertySize );
+ TPtr pInfo = providerInfo->Des();
+ TInt err = KErrNone;
+
+ err = RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ pInfo );
+
+ TBool providerInfoExisit ( err == KErrNone && providerInfo->Des().Length() > 0 );
+ CleanupStack::PopAndDestroy( providerInfo );
+
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::IsDataReadyL" )
+ return !IsActive() && providerInfoExisit;
+ }
+
+
+// --------------------------------------------------------------------------------
+// Reset the Call Provider Information.
+// --------------------------------------------------------------------------------
+
+void CMusVoipCallMonitor::ResetCallProviderName( )
+ {
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::ResetCallProviderName" )
+ TInt errorCode = RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ KNullDesC );
+
+ // Error Code is just for debug only
+ MUS_LOG1( "mus: [MUSAO] ErrorCode = %d", errorCode )
+ MUS_LOG( "mus: [MUSAO] <- CMusVoipCallMonitor::ResetCallProviderName" )
+ }
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/inc/callinformation.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2008-2008 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: Call state information
+*
+*/
+
+
+#ifndef CALLINFORMATION_H
+#define CALLINFORMATION_H
+
+#include <e32base.h>
+#include <mcall.h>
+
+/** The category UID for the messages in this header file. */
+const TUid KCatCallInformation = { 0x102078FD };
+
+/** Version number of this API */
+const TInt KCallInformationVersionMajor( 1 );
+const TInt KCallInformationVersionMinor( 0 );
+const TInt KCallInformationVersionBuild( 0 );
+
+#include <e32cmn.h>
+
+/**
+ * Holds single calls information.
+ *
+ * @since S60 v5.1
+ */
+NONSHARABLE_CLASS( TCallInfo ) : public MCall
+ {
+public:
+
+ TInt CallIndex() const { return iIndex; }
+
+ CCPCall::TCallType CallType() const { return iType; }
+
+ CCPCall::TCallState CallState() const { return iState; }
+
+ TUint32 ServiceId() const { return iServiceId; }
+
+ CCPCall::TCallDirection CallDirection() const { return iDirection; }
+
+ CCPCall::TCallState iState;
+ CCPCall::TCallType iType;
+ CCPCall::TCallDirection iDirection;
+ TInt iIndex;
+ TInt iIdentifier;
+ TUint32 iServiceId;
+ };
+
+
+/**
+ * Class holding information about calls.
+ * Can be packed for IPC purposes.
+ *
+ * @since S60 v5.1
+ */
+NONSHARABLE_CLASS( CCallInfos ) : public CBase
+ {
+public:
+
+ /**
+ * Two-phased constructor.
+ */
+ static CCallInfos* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ static CCallInfos* NewLC();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCallInfos();
+
+ /**
+ * Adds information about a call.
+ *
+ * @since S60 v5.1
+ * @param aCallInfo Call information to be added.
+ */
+ inline void AddL( TCallInfo& aCallInfo );
+
+ /**
+ * Returns information about all calls.
+ *
+ * @since S60 v5.1
+ * @return Reference to call info array
+ */
+ inline const RArray<TCallInfo>& CallInfos() const;
+
+ /**
+ * Packages this class for IPC transfer.
+ *
+ * @since S60 v5.1
+ * @return Pointer to descriptor holding the class.
+ */
+ inline HBufC8* ExternalizeL() const;
+
+ /**
+ * Intializes the class from descriptor
+ *
+ * @since S60 v5.1
+ * @param aCallInfos Reference to descriptor containg the class data.
+ */
+ inline void InternalizeL( const TDesC8& aCallInfos );
+
+
+ // Helper function for the STUB ONLY:
+ inline void AddCallInfosL();
+
+private:
+
+ inline CCallInfos();
+
+
+private:
+ RArray<TCallInfo> iCallInfos;
+ };
+
+/**
+ * Commands
+ */
+enum TCallInformationCommands
+ {
+ EGetAllCallStates = 0
+ };
+
+/**
+ * Events
+ */
+enum TCallInformationEvents
+ {
+ EChangesInCallStates = 0
+ };
+
+
+// Implementation is stubed.
+#include "ccallinfos_stub.inl"
+
+#endif // CALLINFORMATION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/inc/ccallinfoiter.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2007-2008 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: Iterator class for going through ongoing calls.
+*
+*/
+
+
+#ifndef C_CALLINFOITER_H
+#define C_CALLINFOITER_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+// forward declarations
+class CCallInfos;
+class MCall;
+
+// CLASS DECLARATION
+
+/**
+ * Class to be used for going through ongoing calls.
+ *
+ * @code
+ * 1) Go trough all calls, no need to call Count() first.
+ * CCallInfoIter& iter = iCallInfo->GetCallsL();
+ *
+ * for( iter.First(); !iter.IsDone(); iter.Next() )
+ * {
+ * const MCall& call( iter.Current() );
+ * DoSomethingWhenCallDetected( call );
+ * }
+ *
+ * 2) Check if there are any calls
+ * CCallInfoIter& iter = iCallInfo->GetCallsL();
+ * TInt amountOfCalls = iter.Count();
+ *
+ * if ( amountOfCalls == 0)
+ * {
+ * DoSomethingBecauseAllCallsHaveEnded();
+ * }
+ *
+ * @endcode
+ *
+ * @lib telephonyservice.lib
+ * @since S60 v5.1
+ */
+NONSHARABLE_CLASS( CCallInfoIter ) : public CBase
+ {
+public:
+
+ /**
+ * Two-phased constructor.
+ * @param aCallInfos Container for call information.
+ */
+ static CCallInfoIter* NewL( CCallInfos& aCallInfos );
+
+ /**
+ * Two-phased constructor.
+ * @param aCallInfos Container for call information.
+ */
+ static CCallInfoIter* NewLC( CCallInfos& aCallInfos );
+
+ /**
+ * Destructor.
+ */
+ ~CCallInfoIter();
+
+ /**
+ * Intializes the current call to the first call
+ *
+ * @since S60 v5.1
+ */
+ IMPORT_C void First();
+
+ /**
+ * Tests whether all calls are went through
+ *
+ * @since S60 v5.1
+ */
+ IMPORT_C TBool IsDone() const;
+
+ /**
+ * Advances the current call to the next call
+ *
+ * @since S60 v5.1
+ */
+ IMPORT_C void Next();
+
+ /**
+ * Returns the count of calls
+ *
+ * @since S60 v5.1
+ * @return Amount of calls
+ */
+ IMPORT_C TInt Count() const;
+
+ /**
+ * Returns the current call. Panic happens if there are no calls.
+ *
+ * @since S60 v5.1
+ * @return Reference to the call.
+ */
+ IMPORT_C const MCall& Current() const;
+
+private:
+
+ /**
+ * Constructor for performing 1st stage construction
+ */
+ CCallInfoIter( CCallInfos& aCallInfos );
+
+ /**
+ * EPOC default constructor for performing 2nd stage construction
+ */
+ void ConstructL();
+
+private: // data
+
+ CCallInfos& iCallInfos;
+
+ TInt iCurrentIndex;
+
+ };
+
+#endif // C_CALLINFOITER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/inc/ccallinformation.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,116 @@
+/*
+* Copyright (c) 2007-2008 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: Provides information about ongoing calls.
+*
+*/
+
+
+#ifndef C_CALLINFORMATION_H
+#define C_CALLINFORMATION_H
+
+#include <e32base.h>
+#include "callinformation.h"
+#include "mcall.h"
+
+
+// forward declarations
+class MCallInformationObserver;
+class CCallInformationImpl;
+class CCallInfoIter;
+
+
+/**
+ * Class to be used for receiving information about ongoing calls.
+ *
+ * @code
+ * // create the CCallInformation instance e.g. when the client component is created
+ * iCallInfo = CCallInformation::NewL();
+ * iCallInfo->NotifyCallInformationChanges(*iObserver);
+ *
+ * // and use it when needed
+ * CCallInfoIter& iter = iCallInfo->GetCallsL();
+ * @endcode
+ *
+ * @lib telephonyservice.lib
+ * @since S60 v5.1
+ */
+NONSHARABLE_CLASS( CCallInformation ) : public CBase
+ {
+
+public:
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CCallInformation* NewL();
+
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCallInformation();
+
+ /**
+ * Allows a client to be notified when there are changes in current calls.
+ * There can be only one observer per CCallInformation instance.
+ *
+ * @since S60 v5.1
+ * @param aObserver Observer for notifications.
+ */
+ IMPORT_C void NotifyCallInformationChanges( MCallInformationObserver& aObserver );
+
+ /**
+ * Used to cancel previously placed NotifyCallInformationChanges call.
+ *
+ * @since S60 v5.1
+ */
+ IMPORT_C void CancelNotification();
+
+ /**
+ * Gets the snapshot of ongoing calls.
+ *
+ * @since S60 v5.1
+ * @return Ongoing calls.
+ */
+ IMPORT_C CCallInfoIter& GetCallsL( );
+
+ /**
+ * Get calls by given state.
+ *
+ * @since S60 v5.1
+ * @param aState Specifies a call state that is used as a search key.
+ * @return Calls in state aSate, e.g. in case of conference call several
+ * calls have the same state.
+ */
+ IMPORT_C CCallInfoIter& GetCallsL( CCPCall::TCallState aState );
+
+
+private:
+
+ CCallInformation();
+
+ void ConstructL();
+
+
+private: // data
+
+ CCallInformationImpl* iImpl;
+
+ // Helper Data Needed by STUB Implemenation.
+ CCallInfoIter* iInfoIter;
+ CCallInfos* iInfos;
+ };
+
+
+#endif // C_CALLINFORMATION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/inc/ccallinfos_stub.inl Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,89 @@
+/*
+* Copyright (c) 2007-2008 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: ?Description
+*
+*/
+
+
+#include <s32mem.h>
+
+const TInt KCallServiceId = 5;
+
+// ---------------------------------------------------------------------------
+// C++ constructor
+// ---------------------------------------------------------------------------
+//
+CCallInfos::CCallInfos()
+ {
+ //Nothing to be done Here.
+ }
+
+// -----------------------------------------------------------------------------
+// Constructor.
+// -----------------------------------------------------------------------------
+//
+inline CCallInfos* CCallInfos::NewL()
+ {
+ return new( ELeave )CCallInfos();
+ }
+
+// -----------------------------------------------------------------------------
+// Constructor.
+// -----------------------------------------------------------------------------
+//
+inline CCallInfos* CCallInfos::NewLC()
+ {
+ CCallInfos* self = new( ELeave )CCallInfos();
+ CleanupStack::PushL( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Desctructor.
+// -----------------------------------------------------------------------------
+//
+inline CCallInfos::~CCallInfos()
+ {
+ if ( iCallInfos.Count())
+ {
+ iCallInfos.Reset();
+ }
+ iCallInfos.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// Returns information about all calls.
+// -----------------------------------------------------------------------------
+//
+inline const RArray<TCallInfo>& CCallInfos::CallInfos( ) const
+ {
+ return iCallInfos;
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// Add Dummy Call Info.
+// -----------------------------------------------------------------------------
+//
+inline void CCallInfos::AddCallInfosL( )
+ {
+ }
+
+
+// End of File.
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/inc/cch.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,142 @@
+/*
+* 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: The new cch client api class
+*
+*/
+
+
+
+#ifndef C_CCH_H
+#define C_CCH_H
+
+#include <e32base.h>
+
+//class CCchImpl;
+class CCchServiceStub;
+
+const TInt KServiceId = 5;
+
+/**
+ * Class for cch service management
+ *
+ * CCchService is used for launching various kinds of service functions
+ * @code
+ * ?good_class_usage_example(s)
+ * @endcode
+ *
+ * @lib ?library
+ */
+class CCchService : public CBase
+ {
+
+public:
+
+
+protected:
+
+ virtual ~CCchService() { };
+ };
+
+/**
+ * Class for basic cch functionality, getting services
+ *
+ * @code
+ * ?good_class_usage_example(s)
+ * @endcode
+ *
+ * @lib cch
+ */
+class CCch : public CBase
+ {
+
+public:
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CCch* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CCch* NewLC();
+
+ /**
+ * Destructor.
+ */
+ ~CCch();
+
+ /**
+ * Returns one service
+ *
+ * @param aId Service id
+ * @return Service or NULL if not found. Ownership is not transferred.
+ */
+ IMPORT_C CCchService* GetService( TInt aId );
+
+ /**
+ * Returns service ids of all configured services
+ *
+ * @param aIds Array of TInt to be filled with ids
+ * @return Symbian error code
+ */
+ IMPORT_C TInt GetServiceIds( RArray<TInt>& aIds ) const;
+
+ /**
+ * Returns ETrue if connectivity dialogs are allowed in service enabling.
+ *
+ * @return ETrue if connectivity dialogs are allowed in service enabling
+ */
+ IMPORT_C TBool ConnectivityDialogsAllowed() const;
+
+ /**
+ * For allowing/disallowing connectivity dialogs showing in
+ * service enabling.
+ *
+ * @param aConnectivityDialogsAllowed Boolean to set connectivity dialogs
+ * allowed/disallowed
+ */
+ IMPORT_C void SetConnectivityDialogsAllowed(
+ TBool aConnectivityDialogsAllowed );
+
+
+
+protected:
+
+ /**
+ * The constructor
+ */
+ CCch();
+
+private:
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+private: // data
+
+ CCchServiceStub* iServiceStub;
+ };
+
+
+class HelpData
+ {
+public:
+ static HBufC* iUserName;
+ static TInt iGetConnectionParamError;
+ };
+
+#endif // C_CCH_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/inc/spentry.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,238 @@
+/*
+* Copyright (c) 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: Service Provider Settings entry
+*
+*/
+
+
+#ifndef C_SPENTRY_H
+#define C_SPENTRY_H
+
+#include <e32base.h>
+
+#include "spdefinitions.h"
+
+class CSPProperty;
+
+
+/**
+ * Service Provider Settings entry.
+ * Container class for service attributes and settings properties
+ *
+ * @lib serviceprovidersettings.lib
+ * @since S60 V3.2
+ */
+NONSHARABLE_CLASS( CSPEntry ): public CBase
+ {
+
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CSPEntry* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CSPEntry* NewLC();
+
+ /**
+ * Destructors.
+ */
+ IMPORT_C virtual ~CSPEntry();
+
+ public: // Member functions
+ /**
+ * Returns service Id of this entry.
+ *
+ * @since S60 V3.2
+ * @return Service ID
+ */
+ IMPORT_C TServiceId GetServiceId() const;
+
+ /**
+ * Sets unique service provider ID for this entry.
+ * This ID is generated automatically when new entry is added.
+ * Service ID is also required when user updates entry in service table
+ *
+ * @since S60 V3.2
+ * @param aServiceId service ID
+ */
+ void SetServiceId( TServiceId aServiceId );
+
+ /**
+ * Returns service name of this entry.
+ *
+ * @since S60 V3.2
+ * @return Service name
+ */
+ IMPORT_C const TDesC& GetServiceName() const;
+
+ /**
+ * Sets service name for this entry.
+ *
+ * @since S60 V3.2
+ * @param aServiceName service name
+ */
+ IMPORT_C TInt SetServiceName( const TDesC& aServiceName );
+
+ /**
+ * Adds new property to this entry.
+ *
+ * @since S60 V3.2
+ * @param aProperty new property pointer
+ * @return KErrNone if addition succeeded,
+ * system wide error code otherwise.
+ */
+ IMPORT_C TInt AddPropertyL( const CSPProperty& aProperty );
+
+ /**
+ * Updates content of property in this entry.
+ *
+ * @since S60 V3.2
+ * @param aPropertyName property name
+ * @param aValue new TInt value
+ * @return KErrNone if update succeeded.
+ */
+ IMPORT_C TInt UpdateProperty( TServicePropertyName aPropertyName, TInt aValue );
+
+ /**
+ * Updates content of property in this entry.
+ *
+ * @since S60 V3.2
+ * @param aPropertyName property name
+ * @param aValue new TDesC value
+ * @return KErrNone if update succeeded.
+ */
+ IMPORT_C TInt UpdateProperty( TServicePropertyName aPropertyName, const TDesC& aValue );
+
+ /**
+ * Updates content of property in this entry.
+ *
+ * @since S60 V3.2
+ * @param aPropertyName property name
+ * @param aValue new TOnOff value
+ * @return KErrNone if update succeeded.
+ */
+ IMPORT_C TInt UpdateProperty( TServicePropertyName aPropertyName, TOnOff aValue );
+
+ /**
+ * Returns property of this entry by property name.
+ *
+ * @since S60 V3.2
+ * @param aProperty On return, reference to requested property
+ * @param aPropertyName Name of requested property
+ * @return error code
+ */
+ IMPORT_C TInt GetProperty( const CSPProperty*& aProperty,
+ TServicePropertyName aPropertyName ) const;
+
+ /**
+ * Returns property of this entry by property index.
+ *
+ * @since S60 V3.2
+ * @param aProperty On return, reference to requested property
+ * @param aIndex index of requested property
+ * @return error code
+ */
+ IMPORT_C TInt GetProperty( const CSPProperty*& aProperty,
+ TInt aIndex ) const;
+
+ /**
+ * Deletes property from this entry by index.
+ *
+ * @since S60 V3.2
+ * @param aIndex index of requested property
+ * @return error code
+ */
+ IMPORT_C TInt DeleteProperty( TInt aIndex );
+
+ /**
+ * Deletes property from this entry by property name.
+ *
+ * @since S60 V3.2
+ * @param aProperty property name
+ * @return error code
+ */
+ IMPORT_C TInt DeleteProperty( TServicePropertyName aProperty );
+
+ /**
+ * Returns all properties of this entry.
+ *
+ * @since S60 V3.2
+ * @return Reference to array of properties
+ */
+ IMPORT_C const RPropertyArray& GetAllProperties() const;
+
+ /**
+ * Returns count of properties in this entry
+ *
+ * @since S60 V3.2
+ * @return Count of properties
+ */
+ IMPORT_C TInt PropertyCount() const;
+
+ /**
+ * reset service entry
+ *
+ * @since S60 V3.2
+ * @return Count of properties
+ */
+ IMPORT_C void Reset();
+
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CSPEntry();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Search index of requested property in iPropertyArray
+ *
+ * @since S60 ?S60_version
+ * @param aProperty
+ * @return Index of property or KErrNotFound
+ */
+ TInt SearchProperty( TServicePropertyName aProperty ) const;
+
+ private: // data
+
+ /**
+ * Id of service settings entry ( unique )
+ */
+ TServiceId iServiceId;
+
+ /**
+ * Name of settings entry ( unique )
+ * Own.
+ */
+ RBuf iServiceName;
+
+ /**
+ * Service settings properties owned by this entry
+ * Own.
+ */
+ RPropertyArray iPropertyArray;
+
+ };
+
+
+#endif // C_SPENTRY_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/inc/spsettings.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,313 @@
+/*
+* Copyright (c) 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: Service Provider Settings API
+*
+*/
+
+
+#ifndef C_SPSETTINGS_H
+#define C_SPSETTINGS_H
+
+#include <e32base.h>
+#include <badesca.h>
+
+#include "spdefinitions.h"
+
+class CSPSettingsEngine;
+class CSPEntry;
+class CSPProperty;
+
+/**
+ * Service provider settings API class
+ *
+ * Main class of managing service provider settings
+ *
+ * @code example code of how to add a new service entry to service table
+ * CSPEntry* entry = CSPEntry::NewL();
+ * TInt err = entry->SetServiceName( _L("somename" ) );
+ * CSPProperty* property = CSPProperty::NewL();
+ * err = property->SetName( EPropertyServiceAttributeMask );
+ * property->SetValue( 100 );
+ * err = entry->AddProperty( property );
+ * // iSettings is instance of CSPSettings
+ * TInt err = iSettings->AddEntryL( *entry );
+ * @endcode
+ *
+ * @lib serviceprovidersettings.lib
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CSPSettings ): public CBase
+ {
+
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CSPSettings* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CSPSettings* NewLC();
+
+ /**
+ * Destructors.
+ */
+ IMPORT_C virtual ~CSPSettings();
+
+ public:
+
+ /**
+ * Stores new service provider settings entry,
+ * service Id is returned inside aEntry object
+ *
+ * @since S60 v3.2
+ * @param aEntry New service provider settings entry, on return service Id is filled in
+ * @return error code
+ */
+ IMPORT_C TInt AddEntryL( CSPEntry& aEntry );
+
+ /**
+ * Search service provider settings entry by service ID.
+ *
+ * @since S60 v3.2
+ * @param aServiceId Id of requested xSP settings entry
+ * @param aEntry on return, SP settings entry corresponding to aServiceId.
+ * @return error code, KErrNone if succeeded, otherwise system wide error code
+ */
+ IMPORT_C TInt FindEntryL( TServiceId aServiceId, CSPEntry& aEntry );
+
+
+ /**
+ * Updates service provider settings entry to settings storage.
+ * Service ID must be set to entry before update.
+ *
+ * @since S60 v3.2
+ * @param aEntry Updated service provider settings entry
+ * @return error code, KErrNone if update succeeded, otherwise system wide error code
+ */
+ IMPORT_C TInt UpdateEntryL( const CSPEntry& aEntry );
+
+ /**
+ * Deletes service provider settings entry from storage by service ID.
+ *
+ * @since S60 v3.2
+ * @param aEntryId Id of settings entry which is going to be deleted
+ * @return error code, KErrNone if delete succeeded, otherwise system wide error code
+ */
+ IMPORT_C TInt DeleteEntryL( TServiceId aServiceId );
+
+ /**
+ * Search property of service provider settings entry from storage.
+ *
+ * @since S60 v3.2
+ * @param aServiceId The service ID of requested service entry
+ * @param aPropertyName property name to be found
+ * @param aProperty on return, requested property
+ * @return error code, KErrNone if succeeded, otherwise system wide error code
+ */
+ IMPORT_C TInt FindPropertyL( TServiceId aServiceId,
+ TServicePropertyName aPropertyName,
+ CSPProperty& aProperty );
+
+ /**
+ * Add or update properties of service provider settings entry to storage.
+ * If property name exists, update property. If property doesn't exist,
+ * add property
+ *
+ * @since S60 v3.2
+ * @param aServiceId The ID of updated service entry
+ * @param aPropertyArray new properties to be added or updated
+ * @return error code, KErrNone if update succeeded, otherwise system wide error code
+ */
+ IMPORT_C TInt AddOrUpdatePropertiesL( TServiceId aServiceId,
+ const RPropertyArray& aPropertyArray );
+
+
+ /**
+ * Add or update one property of service provider settings entry to storage.
+ * If property name exists, update property. If property doesn't exist,
+ * add property
+ *
+ * @since S60 v3.2
+ * @param aServiceId The ID of updated service entry
+ * @param aProperty new property to be added or updated
+ * @return error code, KErrNone if update succeeded, otherwise system wide error code
+ */
+ IMPORT_C TInt AddOrUpdatePropertyL( TServiceId aServiceId,
+ const CSPProperty& aProperty );
+
+ /**
+ * Return count of service provider settings entries in storage.
+ *
+ * @since S60 v3.2
+ * @return Count of stored service provider settings.
+ */
+ IMPORT_C TInt SettingsCountL();
+
+ /**
+ * Search all service provider IDs from storage
+ *
+ * @since S60 v3.2
+ * @param aServiceIds An array containing returned service IDs
+ * @return error code
+ */
+ IMPORT_C TInt FindServiceIdsL( RIdArray& aServiceIds );
+
+
+ /**
+ * Search all service names from settings storage by given service IDs.
+ * Removes ID from array if it is not found from settings storage.
+ *
+ * @since S60 v3.2
+ * @param aServiceIds An array of service IDs
+ * @param aServiceNames on return, array which saves found service names
+ * @return error code
+ */
+ IMPORT_C TInt FindServiceNamesL( RIdArray& aServiceIds,
+ CDesCArray& aServiceNames );
+
+
+ /**
+ * Search subservice properties of requested service provider settings entry by ID
+ * and subservice type
+ *
+ * @since S60 v3.2
+ * @param aServiceId The ID of requested service entry
+ * @param aPropertyType property type of sub service
+ * @param aPropertyArray on return, array which saves found subservice properties
+ * @return error code
+ */
+ IMPORT_C TInt FindSubServicePropertiesL( TServiceId aServiceId,
+ TSPItemType aPropertyType,
+ RPropertyArray& aPropertyArray );
+
+ /**
+ * Deletes service properties by service ID and property name.
+ *
+ * @since S60 v3.2
+ * @param aServiceId The service ID of requested service entry
+ * @param aNameArray name of properties to be deleted
+ * @return error code
+ */
+ IMPORT_C TInt DeleteServicePropertiesL( TServiceId aServiceId,
+ const RPropertyNameArray& aNameArray );
+
+ /**
+ * Find service IDs with same properties
+ *
+ * @since S60 v3.2
+ * @param aPropertyArray property array
+ * @param on return, service Ids with same properties
+ * @return error code
+ */
+ IMPORT_C TInt FindServiceIdsFromPropertiesL( const RPropertyArray& aPropertyArray,
+ RIdArray& aServiceIds );
+
+ /**
+ * Get SIP VoIP software version.
+ *
+ * @since S60 v3.2
+ * @return SIP VoIP software version
+ */
+ IMPORT_C static const TDesC& GetSIPVoIPSWVersion();
+
+ /**
+ * Check feature is supported or not
+ *
+ * @since S60 v3.2
+ * @return SIP VoIP software version
+ */
+ IMPORT_C TBool IsFeatureSupported( TSPServiceFeature aFeature );
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CSPSettings();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Commit or rollback transaction
+ * @since S60 v3.2
+ * @param aError error code of CenRep operation
+ * @param aServiceId changed service Id
+ * @return error code
+ */
+ TInt CommitOrRollbackL( TInt aError, TServiceId aServiceId );
+
+ /**
+ * Check is VoIP Service Id and then are Properties VoIP related
+ *
+ * @since S60 v3.2.3
+ * @return KErrNotSupported if VoIP not supported and checking
+ * of Service Id and Properties gives true
+ */
+ TInt CheckSupportedL( TServiceId aServiceId, const RPropertyNameArray& aNameArray );
+
+ /**
+ * Check is VoIP Service Id
+ *
+ * @since S60 v3.2.3
+ * @return KErrNotSupported if VoIP not supported and checking
+ * of Service Id gives true
+ */
+ TInt CheckSupportedL( TServiceId aServiceId );
+
+ /**
+ * Check is SP item type VoIP related
+ *
+ * @since S60 v3.2.3
+ * @return KErrNotSupported if VoIP not supported and checking
+ * of SP item type gives true
+ */
+ TInt CheckSupportedL( TSPItemType aPropertyType );
+
+ /**
+ * Check does an array have Properties VoIP related
+ *
+ * @since S60 v3.2.3
+ * @return KErrNotSupported if VoIP not supported and checking
+ * of the array gives true
+ */
+ TInt CheckSupportedL( const RPropertyArray& aPropertyArray );
+
+ private: // data
+
+ /**
+ * Settings engine
+ * Own.
+ */
+ CSPSettingsEngine* iSettingsEngine;
+
+
+ /**
+ * Feature manager support VoIP
+ * Own.
+ */
+ TBool iFeatureManagerSupportVoIP;
+ /**
+ * Writing settings allowed
+ */
+ TBool iSettingsWriteAllowed;
+
+ };
+
+#endif // C_SPSETTINGS_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/src/ccallinfoiter_stub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 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: Iterator class for going through ongoing calls.
+*
+*/
+
+
+#include <callinformation.h> //Call Information Mediator API
+#include "ccallinfoiter.h"
+#include "mcall.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+
+// ---------------------------------------------------------------------------
+// C++ constructor.
+// ---------------------------------------------------------------------------
+//
+CCallInfoIter::CCallInfoIter( CCallInfos& aCallInfos ): iCallInfos( aCallInfos )
+ {
+ First();
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CCallInfoIter::~CCallInfoIter()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CCallInfoIter* CCallInfoIter::NewLC( CCallInfos& aCallInfos )
+ {
+ CCallInfoIter* self = new (ELeave)CCallInfoIter( aCallInfos );
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CCallInfoIter* CCallInfoIter::NewL( CCallInfos& aCallInfos )
+ {
+ CCallInfoIter* self = CCallInfoIter::NewLC( aCallInfos );
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Symbian second-phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCallInfoIter::ConstructL()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Returns the amount of calls
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CCallInfoIter::Count() const
+ {
+ TUint count = 1;
+ return count;
+ }
+
+// ---------------------------------------------------------------------------
+// Returns the current call.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const MCall& CCallInfoIter::Current() const
+ {
+ return iCallInfos.CallInfos()[iCurrentIndex];
+ }
+
+// ---------------------------------------------------------------------------
+// Intializes the current call to the first call.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CCallInfoIter::First()
+ {
+ iCurrentIndex = 0;
+ }
+
+
+// End of File.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/src/ccallinformation_stub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* Copyright (c) 2007-2008 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: Provides information about ongoing calls.
+*
+*/
+
+#include "ccallinformation.h"
+#include "callinformation.h"
+#include "ccallinfoiter.h"
+
+// ---------------------------------------------------------------------------
+// C++ constructor.
+// ---------------------------------------------------------------------------
+//
+CCallInformation::CCallInformation()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Symbian second-phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCallInformation::ConstructL()
+ {
+ //iImpl = CCallInformationImpl::NewL();
+
+ iInfos = CCallInfos::NewL();
+ iInfoIter = CCallInfoIter::NewL( *iInfos );
+ }
+
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CCallInformation* CCallInformation::NewL()
+ {
+ CCallInformation* self = new (ELeave) CCallInformation( );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CCallInformation::~CCallInformation()
+ {
+ //delete iImpl;
+ if ( iInfos )
+ {
+ delete iInfos;
+ iInfos = NULL;
+ }
+ if ( iInfoIter )
+ {
+ delete iInfoIter;
+ iInfoIter = NULL;
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// Get calls by given state.
+// ---------------------------------------------------------------------------
+//
+
+EXPORT_C CCallInfoIter& CCallInformation::GetCallsL( CCPCall::TCallState aState )
+ {
+ //return iImpl->GetCallsL( aState );
+ // Add dummy data to call infos
+ iInfos->AddCallInfosL();
+ return *iInfoIter;
+ }
+
+// End of File.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/src/spentry_stub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 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: Service Provider Settings entry.
+*
+*/
+
+#include "spentry.h"
+#include "spproperty.h"
+//#include "spdefaultvalues.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CSPEntry::CSPEntry()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+void CSPEntry::ConstructL()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CSPEntry* CSPEntry::NewL()
+ {
+ CSPEntry* self = CSPEntry::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CSPEntry* CSPEntry::NewLC()
+ {
+ CSPEntry* self = new( ELeave ) CSPEntry;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CSPEntry::~CSPEntry()
+ {
+ iServiceName.Close();
+ iPropertyArray.ResetAndDestroy();
+ iPropertyArray.Close();
+ }
+
+// ---------------------------------------------------------------------------
+// Returns service name of this entry
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CSPEntry::GetServiceName() const
+ {
+ _LIT( KTestProvideName, "VoIP" );
+ return KTestProvideName;
+ }
+
+
+// End of File.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/Stubs/src/spsettings_stub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2007-2008 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: STUB implementation for SP Settings.
+*
+*/
+
+#include "spsettings.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Default Constructor
+// ---------------------------------------------------------------------------
+//
+CSPSettings::CSPSettings()
+ {
+ // Nothing to be done
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CSPSettings::~CSPSettings()
+ {
+ // Nothing to be done
+ }
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CSPSettings* CSPSettings::NewL()
+ {
+ CSPSettings* self = CSPSettings::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CSPSettings* CSPSettings::NewLC()
+ {
+ CSPSettings* self = new( ELeave ) CSPSettings;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+void CSPSettings::ConstructL()
+ {
+ //Nothing to be done
+ }
+
+// ---------------------------------------------------------------------------
+// Find service provider settings entry by service ID
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CSPSettings::FindEntryL( TServiceId aServiceId, CSPEntry& /*aEntry*/ )
+ {
+ TInt serviceID = 5;
+ aServiceId = serviceID;
+ return KErrNone;
+ }
+
+
+// End of File
+
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -15,5 +15,5 @@
*
*/
-PRJ_TESTMMPFILES
+PRJ_MMPFILES
ut_aoplugin.mmp
\ No newline at end of file
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/group/ut_aoplugin.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/group/ut_aoplugin.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -42,7 +42,15 @@
SOURCE ut_musresourcefinderutil.cpp
SOURCE ut_muscallconferenceeventmonitor.cpp
SOURCE ut_muscallmonitorbase.cpp
-SOURCE ut_musclirmonitor.cpp
+SOURCE ut_musfactorysettings.cpp
+
+// STUBs for telephonyservice and serviceprovidersettings
+SOURCEPATH ../Stubs/src
+SOURCE ccallinfoiter_stub.cpp
+SOURCE ccallinformation_stub.cpp
+SOURCE spentry_stub.cpp
+SOURCE spsettings_stub.cpp
+
SOURCEPATH ../../../src
SOURCE musaopluginmain.cpp
@@ -56,7 +64,7 @@
SOURCE muscallstatusmonitor.cpp
SOURCE muscallconferencemonitor.cpp
SOURCE muscallconferenceeventmonitor.cpp
-SOURCE musclirmonitor.cpp
+SOURCE musvoipcallmonitor.cpp
SOURCEPATH ../../../../../tsrc/etelstub/src
SOURCE etelstub.cpp
@@ -65,22 +73,23 @@
SOURCEPATH ../../../../../tsrc/centralrepositorystub/src
SOURCE centralrepositorystub.cpp
SOURCEPATH ../../../../../tsrc/musmanagerstub/src
-SOURCE musmanagerstub.cpp
-SOURCEPATH ../../../../../tsrc/featmgrstub/src
-SOURCE FeatMgr.cpp
+SOURCE musmanagerstub.cpp
-USERINCLUDE ../../../../../tsrc/featmgrstub/inc
USERINCLUDE ../inc
+USERINCLUDE ../../../inc
+USERINCLUDE ../Stubs/inc
USERINCLUDE ../../../../../tsrc/propertystub/inc
USERINCLUDE ../../../../../tsrc/etelstub/inc
USERINCLUDE ../../../../../tsrc/centralrepositorystub/inc
+USERINCLUDE ../../../../../tsrc/musmanagerstub/inc
SYSTEMINCLUDE ../../../inc
SYSTEMINCLUDE ../../../../../inc
SYSTEMINCLUDE ../../../../../tsrc/etelstub/inc
SYSTEMINCLUDE ../../../../../tsrc/propertystub/inc
SYSTEMINCLUDE ../../../../../tsrc/centralrepositorystub/inc
-SYSTEMINCLUDE ../../../../../tsrc/musmanagerstub/inc
+SYSTEMINCLUDE ../../../../../tsrc/musmanagerstub/inc
+SYSTEMINCLUDE /epoc32/include/platform/digia/eunit
APP_LAYER_SYSTEMINCLUDE
@@ -90,6 +99,6 @@
LIBRARY euser.lib
LIBRARY bafl.lib
LIBRARY efsrv.lib
-LIBRARY etel3rdparty.lib
+LIBRARY charconv.lib
// End of file
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/group/ut_aoplugin.pkg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-;
-; Copyright (c) 2009 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:
-;
-
-;Languages
-&EN
-
-;Header
-#{"EUnit: MMSHAOPlg"},(0x01700000),1,0,0
-
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique vendor name
-:"Nokia"
-
-;DLL files
-"\epoc32\release\armv5\urel\ut_aoplugin.dll"-"c:\sys\bin\ut_aoplugin.dll"
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/muscommonstubs.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/muscommonstubs.h Tue Aug 31 15:12:07 2010 +0300
@@ -16,7 +16,6 @@
*/
-
#ifndef UT_MUSCOMMONSTUBS_H
#define UT_MUSCOMMONSTUBS_H
@@ -44,8 +43,8 @@
// From MMusCallMonitorObserver
- void CallConnectedL( const TDesC& aTelNumber );
- void CallHoldL( const TDesC& aTelNumber );
+ void CallConnectedL( const TDesC& aTelNumber, TBool aIsSipUri );
+ void CallHoldL( const TDesC& aTelNumber, TBool aIsSipUri );
void ConferenceCallL();
void NoActiveCallL();
@@ -70,6 +69,7 @@
TBool iCallHoldCalled;
TBool iConferenceCallCalled;
TBool iNoActiveCallCalled;
+ TBool iIsSipUri;
HBufC* iTelNumber;
RMobileCall::TMobileCallEvent iCallEvent;
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_musaocalleventmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_musaocalleventmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -16,7 +16,6 @@
*/
-
#ifndef UT_MUSAOCALLEVENTMONITOR_H
#define UT_MUSAOCALLEVENTMONITOR_H
@@ -67,9 +66,9 @@
private: // test MMusCallMonitorObserver
- virtual void CallConnectedL( const TDesC& aTelNumber );
+ virtual void CallConnectedL( const TDesC& aTelNumber, TBool aIsSipUri );
- virtual void CallHoldL( const TDesC& aTelNumber );
+ virtual void CallHoldL( const TDesC& aTelNumber, TBool aIsSipUri );
virtual void ConferenceCallL();
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_musaoplugin.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_musaoplugin.h Tue Aug 31 15:12:07 2010 +0300
@@ -67,13 +67,15 @@
public: // test functions
- void NewLL();
void DefinePropertiesLL();
void DefinePropertyL_IntPropertyL();
void DefinePropertyL_DesCPropertyL();
void DeletePropertiesL();
void UT_HandleServerCommandLL();
+ void UT_StartMusClientL();
+ void UT_StopMusClientL();
+ void UT_MusCallStateChangedL();
private: // data
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muscallconferencemonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muscallconferencemonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -72,6 +72,7 @@
void UT_CMusCallConferenceMonitor_DoCancelL();
void UT_CMusCallConferenceMonitor_RunErrorL();
void UT_CMusCallConferenceMonitor_MonitorCallLL();
+ void UT_CMusCallConferenceMonitor_GetConfStatus();
private: // Data
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muscalleventmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muscalleventmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -26,6 +26,7 @@
#include "etelmm.h"
#include "mussesseioninformationapi.h"
#include "mmustsypropertyobserver.h"
+#include "mmuscallstateobserver.h"
// FORWARD DECLARATIONS
class CMusCallEventMonitor;
@@ -42,7 +43,9 @@
*
*/
NONSHARABLE_CLASS( UT_CMusCallEventMonitor ): public CEUnitTestSuiteClass,
- MMusTsyPropertyObserver
+ MMusTsyPropertyObserver,
+ MMusCallStateObserver
+
{
public: // Constructors and destructors
@@ -67,6 +70,10 @@
virtual void NotifyCallStateChanged( NMusSessionInformationApi::TMusCallEvent aVal,
TName& aCallName );
+ public: // from MMusCallStateObserver.
+
+ virtual void MusCallStateChanged();
+
private: // Constructors and destructors
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muscallmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muscallmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -26,6 +26,8 @@
#include "etelmm.h"
#include "mussesseioninformationapi.h"
#include "mmustsypropertyobserver.h"
+#include "mmuscallstateobserver.h"
+
// Forward declaration
class CMusCallMonitor;
@@ -42,7 +44,8 @@
*
*/
NONSHARABLE_CLASS( UT_CMusCallMonitor ): public CEUnitTestSuiteClass,
- MMusTsyPropertyObserver
+ MMusTsyPropertyObserver,
+ MMusCallStateObserver
{
public:
//Two phase construction
@@ -61,6 +64,11 @@
virtual void NotifyCallStateChanged( NMusSessionInformationApi::TMusCallEvent aVal,
TName& aCallName );
+ public: // from MMusCallStateObserver.
+
+ virtual void MusCallStateChanged();
+
+
private: // Constructor
UT_CMusCallMonitor();
void ConstructL();
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muscallmonitorbase.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muscallmonitorbase.h Tue Aug 31 15:12:07 2010 +0300
@@ -27,6 +27,8 @@
#include "muscallmonitorbase.h"
#include "mussesseioninformationapi.h"
#include "mmustsypropertyobserver.h"
+#include "mmuscallstateobserver.h"
+
// Forward declaration
@@ -42,7 +44,8 @@
public:
CMusCallMonitorMock( const RMobileCall& aCall,
- MMusTsyPropertyObserver& aObserver );
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver );
~CMusCallMonitorMock();
private:
@@ -59,7 +62,8 @@
*
*/
NONSHARABLE_CLASS( UT_CMusCallMonitorBase ): public CEUnitTestSuiteClass,
- MMusTsyPropertyObserver
+ MMusTsyPropertyObserver,
+ MMusCallStateObserver
{
public:
//Two phase construction
@@ -78,6 +82,9 @@
virtual void NotifyCallStateChanged( NMusSessionInformationApi::TMusCallEvent aVal,
TName& aCallName );
+ public: // from MMusCallStateObserver.
+ virtual void MusCallStateChanged();
+
private: // Constructor
UT_CMusCallMonitorBase();
@@ -92,16 +99,14 @@
private: // Test methdods
void UT_SetStateLL();
void UT_SetCallInfoLL();
- void UT_RunErrorL();
-
- void UT_SetClirSettingL();
- void UT_SetTerminatingPrivacyL();
- void UT_RemovePrefixL();
+ void UT_RunErrorL();
+ void UT_CMusCallMonitorBase_IsDataReadyLL();
private: // Data
CMusCallMonitorBase* iCallMonitorBase;
RMobileCall iCall;
+ TBool iCallStateObserverInvoked;
EUNIT_DECLARE_TEST_TABLE;
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muscallstatusmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muscallstatusmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -26,6 +26,7 @@
#include "etelmm.h"
#include "mussesseioninformationapi.h"
#include "mmustsypropertyobserver.h"
+#include "mmuscallstateobserver.h"
// FORWARD DECLARATIONS
class CMusCommonObserverStub;
@@ -43,7 +44,9 @@
*
*/
NONSHARABLE_CLASS( UT_CMusCallStatusMonitor ): public CEUnitTestSuiteClass,
- MMusTsyPropertyObserver
+ MMusTsyPropertyObserver,
+ MMusCallStateObserver
+
{
public: // Constructors and destructors
@@ -67,6 +70,10 @@
*/
virtual void NotifyCallStateChanged( NMusSessionInformationApi::TMusCallEvent aVal,
TName& aCallName );
+
+ public: // from MMusCallStateObserver.
+
+ virtual void MusCallStateChanged();
private: // Constructors and destructors
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_musfactorysettings.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2009 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 __UT_CMusFactorySettings_H__
+#define __UT_CMusFactorySettings_H__
+
+
+// EXTERNAL INCLUDES
+#include <ceunittestsuiteclass.h>
+#include <eunitmacros.h>
+
+
+// Forward declaration
+class MusFactorySettings;
+class CRepository;
+
+// Next row is to disable warning emerging from EUnit code.
+// Placement is due to a fact that most test case files
+// include this file. Directive can be removed when
+// EUnit is fixed.
+#pragma warn_illtokenpasting off
+
+// CLASS DEFINITION
+/**
+ * Tester class for CMusCallMonitorBase.
+ *
+ */
+NONSHARABLE_CLASS( UT_CMusFactorySettings ): public CEUnitTestSuiteClass
+ {
+ public:
+ //Two phase construction
+ static UT_CMusFactorySettings* NewL();
+ static UT_CMusFactorySettings* NewLC();
+ // Destructor
+ ~UT_CMusFactorySettings();
+
+ private: // Constructor
+ UT_CMusFactorySettings();
+ void ConstructL();
+
+ private: // Test case setup and teardown
+ void SetupL();
+ void Teardown();
+
+ private: // Test methdods
+ void UT_CMusFactorySettings_IsSupportedLL();
+
+ private: // Data
+ CRepository* iMusCentralRepository ;
+ EUNIT_DECLARE_TEST_TABLE;
+
+ };
+
+#endif // __UT_CMusFactorySettings_H__
+
+// End of file
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muslineeventmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muslineeventmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -21,7 +21,7 @@
#define MUSLINEEVENTMONITORTEST_H
//#include <etelmm.h>
-#include <digia/eunit/ceunittestsuiteclass.h>
+#include <CEUnitTestSuiteClass.h>
//#include "ut_musaocallmonitor.h"
#include "muscallstatusmonitorobserver.h"
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muspropertymonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_muspropertymonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -20,6 +20,10 @@
#define __UT_CMusPropertyMonitor_H__
+// USER INCLUDES
+
+#include "mmuscallstateobserver.h"
+
// EXTERNAL INCLUDES
#include <digia/eunit/ceunittestsuiteclass.h>
#include <digia/eunit/eunitmacros.h>
@@ -38,7 +42,8 @@
* Tester class for CMusTsyPropertyMonitor.
*
*/
-NONSHARABLE_CLASS( UT_CMusPropertyMonitor ): public CEUnitTestSuiteClass
+NONSHARABLE_CLASS( UT_CMusPropertyMonitor ): public CEUnitTestSuiteClass,
+ MMusCallStateObserver
{
public: // Constructors and destructors
@@ -52,6 +57,12 @@
* Destructor
*/
~UT_CMusPropertyMonitor();
+
+
+ public: // MMusCallStateObserver
+
+ virtual void MusCallStateChanged();
+
private: // Constructors and destructors
@@ -68,10 +79,13 @@
void UT_CMusPropertyMonitor_RunLL();
void UT_CMusPropertyMonitor_DoCancelL();
- void UT_CMusPropertyMonitor_RunErrorL();
+ void UT_CMusPropertyMonitor_RunErrorL();
+ void UT_CMusPropertyMonitor_IsCallConnected();
private: // Data
CMusPropertyMonitor* iMusPropertyMonitor;
+ TBool iMusCallStateObserverInovked;
+
EUNIT_DECLARE_TEST_TABLE;
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_mustsypropertymonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_mustsypropertymonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -20,6 +20,9 @@
#define __UT_CMusTsyPropertyMonitor_H__
+// USER INCLUDE
+#include "mmuscallstateobserver.h"
+
// EXTERNAL INCLUDES
#include <digia/eunit/ceunittestsuiteclass.h>
#include <digia/eunit/eunitmacros.h>
@@ -27,6 +30,7 @@
// FORWARD DECLARATIONS
class CMusCommonObserverStub;
class CMusTsyPropertyMonitor;
+class CRepository;
// Next row is to disable warning emerging from EUnit code.
// Placement is due to a fact that most test case files
@@ -39,7 +43,8 @@
* Tester class for CMusTsyPropertyMonitor.
*
*/
-NONSHARABLE_CLASS( UT_CMusTsyPropertyMonitor ): public CEUnitTestSuiteClass
+NONSHARABLE_CLASS( UT_CMusTsyPropertyMonitor ): public CEUnitTestSuiteClass,
+ MMusCallStateObserver
{
public: // Constructors and destructors
@@ -48,11 +53,17 @@
*/
static UT_CMusTsyPropertyMonitor* NewL();
static UT_CMusTsyPropertyMonitor* NewLC();
-
+
/**
* Destructor
*/
~UT_CMusTsyPropertyMonitor();
+
+
+ public: // MMusCallStateObserver
+
+ virtual void MusCallStateChanged();
+
private: // Constructors and destructors
@@ -62,7 +73,6 @@
private: // Test case setup and teardown
void SetupL();
- void Setup2L();
void Teardown();
private: // Test methdods
@@ -73,14 +83,17 @@
void UT_CMusTsyPropertyMonitor_RunErrorL();
void UT_CMusTsyPropertyMonitor_AddCallMonitorLL();
void UT_CMusTsyPropertyMonitor_RemoveCallMonitorL();
+ void UT_CMusTsyPropertyMonitor_MonitorCSCallLL();
+ void UT_CMusTsyPropertyMonitor_MonitorVoipCallLL();
void UT_CMusTsyPropertyMonitor_MonitorCallLL();
- void UT_CMusTsyPropertyMonitor_MonitorCallL_2L();
void UT_CMusTsyPropertyMonitor_RemoveUnUsedCallMonitorsL();
+ void UT_CMusTsyPropertyMonitor_CheckCallCriteriaLL();
+ void UT_CMusTsyPropertyMonitor_IsDataReadyLL();
private: // Data
CMusTsyPropertyMonitor* iMusTsyPropertyMonitor;
RMobilePhone iPhone;
-
+ CRepository* iMusCentralRepository ;
EUNIT_DECLARE_TEST_TABLE;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/inc/ut_musvoipcallmonitor.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2009 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 __UT_CMusVoipCallMonitor_H__
+#define __UT_CMusVoipCallMonitor_H__
+
+// USER INCLUDE
+#include "mmuscallstateobserver.h"
+
+// EXTERNAL INCLUDES
+#include <ceunittestsuiteclass.h>
+#include <eunitmacros.h>
+#include <etel.h>
+
+// INTERNAL INCLUDES
+
+// Forward declaration
+class CMusVoipCallMonitor;
+
+
+// Next row is to disable warning emerging from EUnit code.
+// Placement is due to a fact that most test case files
+// include this file. Directive can be removed when
+// EUnit is fixed.
+#pragma warn_illtokenpasting off
+
+// CLASS DEFINITION
+/**
+ * Tester class for CMusCallMonitorBase.
+ *
+ */
+NONSHARABLE_CLASS( UT_CMusVoipCallMonitor ): public CEUnitTestSuiteClass,
+ MMusCallStateObserver
+ {
+ public:
+ //Two phase construction
+ static UT_CMusVoipCallMonitor* NewL();
+ static UT_CMusVoipCallMonitor* NewLC();
+ // Destructor
+ ~UT_CMusVoipCallMonitor();
+
+ public: // From MMusCallStateObserver
+
+ virtual void MusCallStateChanged();
+
+ private: // Constructor
+ UT_CMusVoipCallMonitor();
+ void ConstructL();
+
+ private: // Test case setup and teardown
+ void SetupL();
+ void Teardown();
+
+ private: // Test methdods
+ void UT_CMusVoipCallMonitor_IsEqualL();
+ void UT_CMusVoipCallMonitor_SetStateLL();
+ void UT_CMusVoipCallMonitor_SetCallInfoLL();
+ void UT_CMusVoipCallMonitor_SetCallInfoLOverflowL();
+
+ void TestSetCallInfoLL( const TDesC& aSipUriFromTelephony,
+ const TDesC& aSipUriPassedToMus );
+ void UT_CMusVoipCallMonitor_SetCallProviderInfoLL();
+ void UT_CMusVoipCallMonitor_AddDomainFromOwnUsernameLL();
+
+ void UT_CMusVoipCallMonitor_IsDataReadyLL();
+ void UT_CMusVoipCallMonitor_ResetCallProviderNameL();
+
+ private: // Data
+ CMusVoipCallMonitor* iVoipCallMonitor;
+ RTelServer iTelServer;
+
+ EUNIT_DECLARE_TEST_TABLE;
+
+ };
+
+#endif // __UT_CMusVoipCallMonitor_H__
+
+// End of file
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/muscommonstubs.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/muscommonstubs.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -16,7 +16,6 @@
*/
-
#include "muscommonstubs.h"
@@ -52,11 +51,14 @@
//
// -----------------------------------------------------------------------------
//
-void CMusCommonObserverStub::CallConnectedL( const TDesC& aTelNumber )
+void CMusCommonObserverStub::CallConnectedL( const TDesC& aTelNumber,
+ TBool aIsSipUri )
{
delete iTelNumber;
+ iTelNumber = NULL;
iTelNumber = aTelNumber.AllocL();
iCallConnectedCalled = ETrue;
+ iIsSipUri = aIsSipUri;
}
@@ -64,11 +66,14 @@
//
// -----------------------------------------------------------------------------
//
-void CMusCommonObserverStub::CallHoldL( const TDesC& aTelNumber )
+void CMusCommonObserverStub::CallHoldL( const TDesC& aTelNumber,
+ TBool aIsSipUri )
{
delete iTelNumber;
+ iTelNumber = NULL;
iTelNumber = aTelNumber.AllocL();
iCallHoldCalled = ETrue;
+ iIsSipUri = aIsSipUri;
}
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_aopluginDllMain.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_aopluginDllMain.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -15,7 +15,6 @@
*
*/
-
// EXTERNAL INCLUDES
#include <digia/eunit/ceunittestsuite.h>
@@ -30,7 +29,8 @@
#include "ut_muscallmonitorbase.h"
#include "ut_musresourcefinderutil.h"
#include "ut_mustsypropertymonitor.h"
-#include "ut_musclirmonitor.h"
+#include "ut_musvoipcallmonitor.h"
+#include "ut_musfactorysettings.h"
/**
* Test suite factory function.
@@ -71,9 +71,9 @@
rootSuite->AddL( UT_CMusCallMonitorBase::NewLC() );
CleanupStack::Pop();
-
- rootSuite->AddL( UT_CMusClirMonitor::NewLC() );
- CleanupStack::Pop();
+
+ rootSuite->AddL( UT_CMusFactorySettings::NewLC() );
+ CleanupStack::Pop();
CleanupStack::Pop( rootSuite );
return rootSuite;
@@ -86,3 +86,5 @@
+
+
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musaocalleventmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musaocalleventmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -15,7 +15,6 @@
*
*/
-
#include "ut_musaocalleventmonitor.h"
#include "musaocalleventmonitor.h"
#include "mussesseioninformationapi.h"
@@ -66,7 +65,8 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusAoCallEventMonitor::CallConnectedL( const TDesC& /*aTelNumber*/ )
+void UT_CMusAoCallEventMonitor::CallConnectedL( const TDesC& /*aTelNumber*/,
+ TBool /*aIsSipUri*/ )
{
iCallConnected = ETrue;
}
@@ -76,7 +76,8 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusAoCallEventMonitor::CallHoldL( const TDesC& /*aTelNumber*/ )
+void UT_CMusAoCallEventMonitor::CallHoldL( const TDesC& /*aTelNumber*/,
+ TBool /*aIsSipUri*/ )
{
iCallHold = ETrue;
}
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musaoplugin.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musaoplugin.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -28,13 +28,14 @@
#include <alwaysonlinemanagercommon.h>
#include <alwaysonlinemanagerclient.h>
#include <digia/eunit/eunitmacros.h>
-#include "FeatMgr.h"
-
-
+#include <digia/eunit/eunitdecorators.h>
#pragma warn_illtokenpasting off
_LIT( KEmptyTelNumber, "");
+_LIT( KEmptyProviderName, "");
+
+_LIT(KTestTelNumber,"+3585050");
// -----------------------------------------------------------------------------
@@ -101,63 +102,8 @@
delete iPlugin;
iPlugin = NULL ;
PropertyHelper::Close();
-
}
-
-
-//// -----------------------------------------------------------------------------
-////
-//// -----------------------------------------------------------------------------
-////
-void UT_CMusAoPlugin::NewLL()
- {
-
- TInt res = KErrNone;
- TInt ret = KErrNone;
- FeatureManager::MultimediaSharingNotSupported();
- iPlugin->DeleteProperties();
- delete iPlugin;
- iPlugin = NULL ;
- iPlugin = CMusAoPlugin::NewL();
- EUNIT_ASSERT( iPlugin );
- EUNIT_ASSERT( iPlugin->iTsyPropertyMonitor == NULL);
- EUNIT_ASSERT( iPlugin->iPropertyMonitor == NULL);
- // camera information property
- ret = RProperty::Get( NMusResourceApi::KCategoryUid,
- NMusResourceApi::KCameraInformation,
- res );
- EUNIT_ASSERT_EQUALS( ret, KErrNotFound )
- ret = KErrNone;
- // call event
- ret = RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallEvent,
- res );
- EUNIT_ASSERT_EQUALS( ret, KErrNotFound )
- ret = KErrNone;
-
- // phone number
- TBuf<15> telnumber; // TODO change to des
- User::LeaveIfError( RProperty::Get(
- NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusTelNumber,
- telnumber ) );
- EUNIT_ASSERT_EQUALS( telnumber.Compare( KEmptyTelNumber ), KErrNone )
-
- // Mus allowed
- ret = RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSForbidden,
- res );
- EUNIT_ASSERT_EQUALS( ret, KErrNotFound )
- ret = KErrNone;
-
- // Call direction
- ret = RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallDirection,
- res );
- EUNIT_ASSERT_EQUALS( ret, KErrNotFound )
- FeatureManager::MultimediaSharingSupported();
- }
// -----------------------------------------------------------------------------
//
@@ -165,7 +111,9 @@
//
void UT_CMusAoPlugin::DefinePropertiesLL()
{
-/* Test 1 */
+/* Test 1 */
+ TInt res = KErrNone;
+ TInt err = KErrNone;
/* Set Product Mode variation key value to
00 - VideoPlayer always available
0-Keypad available dynamic
@@ -180,7 +128,7 @@
iPlugin->DefinePropertiesL();
// It should not configure any PS keys for camera
// Check the stub whether define is called.
- TInt err = RProperty::Get( NMusResourceApi::KCategoryUid,
+ err = RProperty::Get( NMusResourceApi::KCategoryUid,
NMusResourceApi::KCameraAvailability,
keyValue );
EUNIT_ASSERT(keyValue == KErrNotFound );
@@ -230,8 +178,9 @@
iPlugin->DefinePropertiesL();
+ res = KErrNone;
// camera information property
- TInt res = RProperty::Get( NMusResourceApi::KCategoryUid,
+ res = RProperty::Get( NMusResourceApi::KCategoryUid,
NMusResourceApi::KCameraInformation,
keyValue );
EUNIT_ASSERT_EQUALS( keyValue, NMusResourceApi::EUsePrimaryCamera )
@@ -250,6 +199,17 @@
telnumber ) );
EUNIT_ASSERT_EQUALS( telnumber.Compare( KEmptyTelNumber ), KErrNone )
+ // callprovider
+ TBuf<15> callprovider;
+ User::LeaveIfError( RProperty::Get(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ callprovider ) );
+ EUNIT_ASSERT_EQUALS( callprovider.Compare( KEmptyProviderName ), KErrNone )
+
+
+
+
// Mus allowed
RProperty::Get(NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMUSForbidden,
@@ -402,13 +362,6 @@
NMusSessionInformationApi::KMusCallDirection,
res );
EUNIT_ASSERT_EQUALS( ret, KErrNotFound )
-
- // Call privacy
- ret = RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSPrivacy,
- res );
- EUNIT_ASSERT_EQUALS( ret, KErrNotFound )
-
}
@@ -424,6 +377,103 @@
}
+
+// -----------------------------------------------------------------------------
+// Test Starting MushClient
+// -----------------------------------------------------------------------------
+//
+
+void UT_CMusAoPlugin::UT_StartMusClientL()
+ {
+ // Ensure MushAO Plugin Exisit
+ EUNIT_ASSERT( iPlugin);
+ // Mush Manager Client process is not Created
+ EUNIT_ASSERT( !iPlugin->iManager );
+
+ // Test1: Ensure Start really creates the MushClient process
+ iPlugin->StartMusClientL();
+ EUNIT_ASSERT( iPlugin->iManager );
+
+ // Test2: Trying to Create Client process again if it already exisit.
+ iPlugin->StartMusClientL();
+ EUNIT_ASSERT( iPlugin->iManager );
+
+ //Reset Plugin Data.
+ iPlugin->StopMusClient();
+ }
+
+
+// -----------------------------------------------------------------------------
+// Test Starting MushClient
+// -----------------------------------------------------------------------------
+//
+
+void UT_CMusAoPlugin::UT_StopMusClientL()
+ {
+ EUNIT_ASSERT( iPlugin);
+ EUNIT_ASSERT( !iPlugin->iManager );
+
+ // Test1: Deleteing Mush Cient when it does not exisit
+ iPlugin->StopMusClient();
+ EUNIT_ASSERT( !iPlugin->iManager );
+
+ // Create Mush Client process
+ iPlugin->StartMusClientL();
+ EUNIT_ASSERT( iPlugin->iManager );
+
+ // Test2: Deleting Mush Client when it Exisit.
+ iPlugin->StopMusClient();
+ EUNIT_ASSERT( !iPlugin->iManager );
+ }
+
+
+// -----------------------------------------------------------------------------
+// From MMusCallStateObserver
+// Test MushCall State Changed
+// -----------------------------------------------------------------------------
+//
+
+void UT_CMusAoPlugin::UT_MusCallStateChangedL()
+ {
+ TName cs_call_1(_L("cs_call_1"));
+
+ // Test 1: Data Ready: Call Connected: -> Start Mush
+
+ // Add Some dummy CS Call
+ // Set Call Connected:
+ // Set the Required Data.
+ iPlugin->iTsyPropertyMonitor->AddCallMonitorL( cs_call_1);
+
+ User::LeaveIfError(RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ NMusSessionInformationApi::ECallConnected ));
+
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KTestTelNumber ));
+
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallDirection,
+ NMusSessionInformationApi::ECallOrginated ));
+
+ // This can not be tested easily wit M-ALLOC
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ iPlugin->MusCallStateChanged();
+
+ EUNIT_ASSERT( iPlugin->iManager )
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ // Test 2: Data Not Ready: Call Connected: -> Stop Mush
+ User::LeaveIfError(RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ NMusSessionInformationApi::ENoCall ));
+
+ iPlugin->MusCallStateChanged();
+ EUNIT_ASSERT( !iPlugin->iManager )
+ }
+
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -432,13 +482,6 @@
"UNIT")
EUNIT_TEST(
- "UT_NewLL",
- "CMusAoPlugin",
- "NewL",
- "FUNCTIONALITY",
- SetupL, NewLL, Teardown)
-
-EUNIT_TEST(
"DefinePropertiesLL",
"CMusAoPlugin",
"DefinePropertiesL",
@@ -466,8 +509,6 @@
"FUNCTIONALITY",
SetupL, DeletePropertiesL, Teardown)
-
-
EUNIT_TEST(
"HandleServerCommandL",
"CMusAoPlugin",
@@ -475,12 +516,26 @@
"FUNCTIONALITY",
SetupL, UT_HandleServerCommandLL, Teardown)
-
-EUNIT_END_TEST_TABLE
-
-
+EUNIT_TEST(
+ "StartMusClient",
+ "CMusAoPlugin",
+ "StartMusClient",
+ "FUNCTIONALITY",
+ SetupL, UT_StartMusClientL, Teardown)
-
-
-
-
+EUNIT_TEST(
+ "StopMusClient",
+ "CMusAoPlugin",
+ "StopMusClient",
+ "FUNCTIONALITY",
+ SetupL, UT_StopMusClientL, Teardown)
+
+EUNIT_TEST(
+ "MusCallStateChanged",
+ "CMusAoPlugin",
+ "MusCallStateChanged",
+ "FUNCTIONALITY",
+ SetupL, UT_MusCallStateChangedL, Teardown)
+
+
+EUNIT_END_TEST_TABLE
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallconferenceeventmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallconferenceeventmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -164,13 +164,14 @@
val );
EUNIT_ASSERT( val==NMusSessionInformationApi::EConferenceCall);
- RTelHelper::SetConfEvent( RMobileConferenceCall::EConferenceTerminated );
+ RTelHelper::SetConfEvent( RMobileConferenceCall::EConferenceTerminated );
+ iConferenceCallEventMonitor->SetStateL( NMusSessionInformationApi::ENoCall );
iConferenceCallEventMonitor->Cancel(); // Cancel the active object
iConferenceCallEventMonitor->RunL();
RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
val );
- EUNIT_ASSERT( val==NMusSessionInformationApi::EConferenceTerminated);
+ EUNIT_ASSERT( val==NMusSessionInformationApi::ENoCall);
RTelHelper::SetConfEvent( RMobileConferenceCall::EConferenceSwapped );
iConferenceCallEventMonitor->SetStateL( NMusSessionInformationApi::ENoCall );
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallconferencemonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallconferencemonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -96,6 +96,9 @@
NMusSessionInformationApi::KMusCallCount,
1 );
*/
+
+ RTelHelper::SetConfStatus( RMobileConferenceCall::EConferenceIdle );
+
RProperty::Set( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
0 );
@@ -104,7 +107,6 @@
CMusCallConferenceMonitor::NewL( iMobilePhone,
iLine ,
iCallMonitorArray );
-
}
@@ -218,6 +220,14 @@
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusCallConferenceMonitor::UT_CMusCallConferenceMonitor_GetConfStatus()
+ {
+ EUNIT_ASSERT( iConferenceCallMonitor->GetConfStatus() == RMobileConferenceCall::EConferenceIdle );
+ }
// TEST TABLE
@@ -261,6 +271,13 @@
"FUNCTIONALITY",
SetupL, UT_CMusCallConferenceMonitor_MonitorCallLL, Teardown)
+EUNIT_TEST(
+ "GetCconfStatusL - test ",
+ "CMusConferenceCallMonitor",
+ "GetCconfStatus",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusCallConferenceMonitor_GetConfStatus, Teardown)
+
EUNIT_END_TEST_TABLE
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscalleventmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscalleventmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -111,7 +111,7 @@
NMusSessionInformationApi::KMusCallEvent,
0 );
- iCallEventMonitor = CMusCallEventMonitor::NewL( iCall, *this );
+ iCallEventMonitor = CMusCallEventMonitor::NewL( iCall, *this, *this );
}
@@ -170,17 +170,13 @@
// Test : Local Transfered. Means no call.
iCallEventMonitor->Cancel();
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallEvent,
- val );
- TInt callEnt = val;
RTelHelper::SetCallEvent( RMobileCall::ELocalTransfer );
iCallEventMonitor->RunL();
RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
val );
- EUNIT_ASSERT( callEnt==val );
+ EUNIT_ASSERT( val==NMusSessionInformationApi::ENoCall);
// Test : Remote is on hold
iCallEventMonitor->Cancel();
@@ -216,16 +212,12 @@
// Test : Remote is on conference
iCallEventMonitor->Cancel();
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallEvent,
- val );
- callEnt = val;
RTelHelper::SetCallEvent( RMobileCall::ERemoteConferenceCreate );
iCallEventMonitor->RunL();
RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
val );
- EUNIT_ASSERT( callEnt==val );
+ EUNIT_ASSERT( val==NMusSessionInformationApi::EConferenceCall);
// Test : Remote conference transfer
iCallEventMonitor->Cancel();
@@ -234,7 +226,7 @@
RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
val );
- EUNIT_ASSERT( val==callEnt );
+ EUNIT_ASSERT( val==NMusSessionInformationApi::EConferenceCall);//Previous state.
// remote is connected state and local resume
iCallEventMonitor->Cancel();
@@ -300,12 +292,18 @@
{
EUNIT_ASSERT( iCallEventMonitor );
TInt error = KErrNotFound;
- EUNIT_ASSERT_EQUALS(iCallEventMonitor->RunError(error), KErrNone);
- EUNIT_ASSERT_EQUALS(iCallEventMonitor->RunError(KErrNone), KErrNone);
+ iCallEventMonitor->RunError(error);
}
-
+// -----------------------------------------------------------------------------
+// MusCallStateChanged from the MusCallStateObserver
+// -----------------------------------------------------------------------------
+//
+void UT_CMusCallEventMonitor::MusCallStateChanged()
+ {
+ //NOP:
+ }
// TEST TABLE
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -135,12 +135,12 @@
EUNIT_ASSERT( !iCallMonitor->iCallStatusMonitor );
EUNIT_ASSERT( !iCallMonitor->iCallEventMonitor );
- iCallMonitor->StartMonitorL( iLine, *this );
+ iCallMonitor->StartMonitorL( iLine, *this, *this );
EUNIT_ASSERT( iCallMonitor->iCallStatusMonitor );
EUNIT_ASSERT( iCallMonitor->iCallEventMonitor );
- EUNIT_ASSERT_LEAVE( iCallMonitor->StartMonitorL( iLine, *this ) );
+ EUNIT_ASSERT_LEAVE( iCallMonitor->StartMonitorL( iLine, *this , *this) );
}
@@ -158,7 +158,7 @@
EUNIT_ASSERT( !iCallMonitor->iCallStatusMonitor );
EUNIT_ASSERT( !iCallMonitor->iCallEventMonitor );
- iCallMonitor->StartMonitorL( iLine, *this );
+ iCallMonitor->StartMonitorL( iLine, *this, *this );
EUNIT_ASSERT( iCallMonitor->iCallStatusMonitor );
EUNIT_ASSERT( iCallMonitor->iCallEventMonitor );
@@ -193,13 +193,21 @@
EUNIT_ASSERT( !iCallMonitor->IsMonitored() );
- iCallMonitor->StartMonitorL( iLine, *this );
+ iCallMonitor->StartMonitorL( iLine, *this, *this );
EUNIT_ASSERT( iCallMonitor->IsMonitored() );
}
+// -----------------------------------------------------------------------------
+// MusCallStateChanged from the MusCallStateObserver
+// -----------------------------------------------------------------------------
+//
+void UT_CMusCallMonitor::MusCallStateChanged()
+ {
+ // NOP
+ }
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallmonitorbase.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallmonitorbase.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -24,10 +24,16 @@
// SYSTEM INCLUDES
#include <digia/eunit/eunitmacros.h>
+// Test configurations
+_LIT(KEmptyProvider,"");
+_LIT(KTestTelNumber,"+3585050");
+
+
CMusCallMonitorMock::CMusCallMonitorMock( const RMobileCall& aCall,
- MMusTsyPropertyObserver& aObserver )
- : CMusCallMonitorBase( aCall, aObserver )
+ MMusTsyPropertyObserver& aObserver,
+ MMusCallStateObserver& aCallStateObserver )
+ : CMusCallMonitorBase( aCall, aObserver, aCallStateObserver )
{
}
@@ -107,12 +113,25 @@
// UT_CMusCallMonitorBase::NotifyCallStateChanged()
// -----------------------------------------------------------------------------
//
-void
-UT_CMusCallMonitorBase::NotifyCallStateChanged( NMusSessionInformationApi::TMusCallEvent /*aVal*/,
- TName& /*aCallName*/ )
+void UT_CMusCallMonitorBase::NotifyCallStateChanged(
+ NMusSessionInformationApi::TMusCallEvent /*aVal*/,
+ TName& /*aCallName*/ )
{
}
+
+
+// -----------------------------------------------------------------------------
+// MusCallStateChanged from the MusCallStateObserver
+// -----------------------------------------------------------------------------
+//
+void UT_CMusCallMonitorBase::MusCallStateChanged()
+ {
+ iCallStateObserverInvoked = ETrue;
+ }
+
+
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -123,13 +142,15 @@
NMusSessionInformationApi::KMusCallEvent,
0 );
RTelHelper::SetCallDirection( RMobileCall::EDirectionUnknown );
- iCallMonitorBase = new CMusCallMonitorMock( iCall, *this );
+ iCallMonitorBase = new CMusCallMonitorMock( iCall, *this, *this );
+ iCallStateObserverInvoked = EFalse;
}
void UT_CMusCallMonitorBase::Setup2L()
{
- iCallMonitorBase = new CMusCallMonitorMock( iCall, *this );
+ iCallStateObserverInvoked = EFalse;
+ iCallMonitorBase = new CMusCallMonitorMock( iCall, *this, *this );
}
// -----------------------------------------------------------------------------
@@ -155,7 +176,6 @@
void UT_CMusCallMonitorBase::UT_SetStateLL()
{
TInt tmp;
-
EUNIT_ASSERT ( RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent, tmp ) != KErrNone );
@@ -173,9 +193,13 @@
{
User::Leave( KErrNoMemory );
}
-
+
+ EUNIT_ASSERT (!iCallStateObserverInvoked )
iCallMonitorBase->SetStateL( NMusSessionInformationApi::ECallHold );
+
+ EUNIT_ASSERT ( iCallStateObserverInvoked )
+
RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
tmp );
@@ -213,7 +237,7 @@
telnro );
EUNIT_ASSERT( telnro == KTelnro );
-
+
RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallDirection,
direction );
@@ -251,7 +275,16 @@
EUNIT_ASSERT( direction == NMusSessionInformationApi::ECallTerminated );
-
+ /* Test for call provider */
+ // Call Provider info is only Set for VoIP Calls
+ iCallMonitorBase->SetCallInfoL();
+ TBuf<RProperty::KMaxPropertySize> provider;
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ provider );
+
+
+ EUNIT_ASSERT( provider == KEmptyProvider );
}
@@ -266,81 +299,41 @@
// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusCallMonitorBase::UT_SetClirSettingL()
- {
- TInt tmp;
- _LIT( KTestNumber1, "11111" );
- _LIT( KTestNumber2, "#31#11111" );
-
- iCallMonitorBase->SetClirSetting( KTestNumber1() );
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusClirSetting,
- tmp );
- EUNIT_ASSERT( tmp==NMusSessionInformationApi::ESendOwnNumber);
-
- iCallMonitorBase->SetClirSetting( KTestNumber2() );
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusClirSetting,
- tmp );
- EUNIT_ASSERT( tmp==NMusSessionInformationApi::EDoNotSendOwnNumber);
-
- }
-
-// -----------------------------------------------------------------------------
-//
+// UT_CMusCallMonitorBase::UT_CMusCallMonitorBase_IsDataReadyLL()
+// Test if required Data is ready for CS calls
// -----------------------------------------------------------------------------
//
-void UT_CMusCallMonitorBase::UT_SetTerminatingPrivacyL()
+void UT_CMusCallMonitorBase::UT_CMusCallMonitorBase_IsDataReadyLL()
{
- TInt tmp;
-
- iCallMonitorBase->SetTerminatingPrivacy( iCallMonitorBase->iCall );
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSPrivacy,
- tmp );
- EUNIT_ASSERT( tmp==NMusSessionInformationApi::EPrivacyOff);
-
- RTelHelper::SetRemoteIdStatus( RMobileCall::ERemoteIdentitySuppressed );
- iCallMonitorBase->SetTerminatingPrivacy( iCallMonitorBase->iCall );
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMUSPrivacy,
- tmp );
- EUNIT_ASSERT( tmp==NMusSessionInformationApi::EPrivacyOn);
+ TBool dataReady = EFalse;
-
- }
+ //Test-1: Date Ready:
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KTestTelNumber ));
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusCallMonitorBase::UT_RemovePrefixL()
- {
- _LIT( KTestNumber1, "11111" );
- _LIT( KTestNumber2, "#31#11111" );
- _LIT( KTestNumber3, "*31#11111" );
-
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallDirection,
+ NMusSessionInformationApi::ECallOrginated ));
+
+ dataReady = iCallMonitorBase->IsDataReadyL();
+ EUNIT_ASSERT_EQUALS( dataReady, ETrue )
- HBufC* test1 = iCallMonitorBase->RemovePrefix( KTestNumber1 );
- CleanupStack::PushL( test1 );
- EUNIT_ASSERT( *test1 == KTestNumber1 );
- CleanupStack::PopAndDestroy( test1 );
-
- HBufC* test2 = iCallMonitorBase->RemovePrefix( KTestNumber3 );
- CleanupStack::PushL( test2 );
- EUNIT_ASSERT( *test2 == KTestNumber1 );
- CleanupStack::PopAndDestroy( test2 );
-
- HBufC* test3 = iCallMonitorBase->RemovePrefix( KTestNumber2 );
- CleanupStack::PushL( test3 );
- EUNIT_ASSERT( *test3 == KTestNumber1 );
- CleanupStack::PopAndDestroy( test3 );
-
-
-
+ //Test-2: Partial Data is Ready
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KNullDesC ));
+ dataReady = iCallMonitorBase->IsDataReadyL();
+ EUNIT_ASSERT_EQUALS( dataReady, EFalse )
+
+
+ //Test-3: Data Not Ready.
+ User::LeaveIfError(RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ ( TInt ) NMusSessionInformationApi::ENoCall ));
+
+ dataReady = iCallMonitorBase->IsDataReadyL();
+ EUNIT_ASSERT_EQUALS( dataReady, EFalse )
}
@@ -372,30 +365,15 @@
"FUNCTIONALITY",
SetupL, UT_RunErrorL, Teardown)
+
EUNIT_TEST(
- "SetClirSetting - test",
- "CMusCallMonitorBase",
- "SetClirSetting",
- "FUNCTIONALITY",
- SetupL, UT_SetClirSettingL, Teardown)
-
-EUNIT_TEST(
- "SetTerminatingPrivacy - test",
+ "IsDataReadyL - test",
"CMusCallMonitorBase",
- "SetTerminatingPrivacy",
+ "IsDataReadyL",
"FUNCTIONALITY",
- SetupL, UT_SetTerminatingPrivacyL, Teardown)
-
-EUNIT_TEST(
- "RemovePrefix - test",
- "CMusCallMonitorBase",
- "RemovePrefix",
- "FUNCTIONALITY",
- SetupL, UT_RemovePrefixL, Teardown)
+ SetupL, UT_CMusCallMonitorBase_IsDataReadyLL, Teardown)
EUNIT_END_TEST_TABLE
// END OF FILE
-
-
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallstatusmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallstatusmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -111,7 +111,7 @@
NMusSessionInformationApi::KMusCallEvent,
NMusSessionInformationApi::ENoCall );
- iCallStatusMonitor = CMusCallStatusMonitor::NewL( iCall, *this );
+ iCallStatusMonitor = CMusCallStatusMonitor::NewL( iCall, *this, *this );
}
@@ -173,40 +173,34 @@
callEvent )
// RMobileCall::EStatusDisconnecting
- User::LeaveIfError(
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallEvent,
- callEvent ) );
- TInt callEnt = callEvent;
iCallStatusMonitor->iCallStatus = RMobileCall::EStatusDisconnecting;
iCallStatusMonitor->CheckStateL();
User::LeaveIfError(
RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
callEvent ) );
- EUNIT_ASSERT( callEnt==callEvent );
+ EUNIT_ASSERT_EQUALS(
+ static_cast< TInt >( NMusSessionInformationApi::ENoCall ),
+ callEvent )
EUNIT_ASSERT( iCallStatusMonitor == NULL )
// RMobileCall::EStatusDisconnectingWithInband
// iCallStatusMonitor was deleted by the previous call
- iCallStatusMonitor = CMusCallStatusMonitor::NewL( iCall, *this );
- User::LeaveIfError(
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallEvent,
- callEvent ) );
- callEnt = callEvent;
+ iCallStatusMonitor = CMusCallStatusMonitor::NewL( iCall, *this, *this );
iCallStatusMonitor->iCallStatus = RMobileCall::EStatusDisconnectingWithInband;
iCallStatusMonitor->CheckStateL();
User::LeaveIfError(
RProperty::Get( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
callEvent ) );
- EUNIT_ASSERT( callEnt == callEvent );
+ EUNIT_ASSERT_EQUALS(
+ static_cast< TInt >( NMusSessionInformationApi::ENoCall ),
+ callEvent )
EUNIT_ASSERT( iCallStatusMonitor == NULL )
// RMobileCall::EStatusHold
// iCallStatusMonitor was deleted by the previous call
- iCallStatusMonitor = CMusCallStatusMonitor::NewL( iCall, *this );
+ iCallStatusMonitor = CMusCallStatusMonitor::NewL( iCall, *this, *this );
iCallStatusMonitor->iCallStatus = RMobileCall::EStatusHold;
iCallStatusMonitor->CheckStateL();
User::LeaveIfError(
@@ -300,7 +294,14 @@
}
-
+// -----------------------------------------------------------------------------
+// MusCallStateChanged from the MusCallStateObserver
+// -----------------------------------------------------------------------------
+//
+void UT_CMusCallStatusMonitor::MusCallStateChanged()
+ {
+ // NOP
+ }
// TEST TABLE
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musclirmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,291 +0,0 @@
-/*
-* Copyright (c) 2009 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: Monitor that observes the calling line identity restriction
-* setting
-*
-*/
-
-#include "musclirmonitor.h"
-#include "ut_musclirmonitor.h"
-#include "e32property.h"
-
-#include <etelmm.h>
-#include <etel.h>
-#include <mmtsy_names.h>
-#include <digia/eunit/eunitmacros.h>
-
-
-#pragma warn_illtokenpasting off
-
-// Constants
-
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::NewLC
-// -----------------------------------------------------------------------------
-//
-UT_CMusClirMonitor* UT_CMusClirMonitor::NewLC()
- {
- UT_CMusClirMonitor* self = new (ELeave) UT_CMusClirMonitor();
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::ConstructL
-// -----------------------------------------------------------------------------
-//
-void UT_CMusClirMonitor::ConstructL()
- {
- CEUnitTestSuiteClass::ConstructL();
- }
-
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::UT_CMusClirMonitor
-// -----------------------------------------------------------------------------
-//
-UT_CMusClirMonitor::UT_CMusClirMonitor() :
- CEUnitTestSuiteClass()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::~UT_CMusClirMonitor
-// -----------------------------------------------------------------------------
-//
-UT_CMusClirMonitor::~UT_CMusClirMonitor()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::UT_ReadClir
-// -----------------------------------------------------------------------------
-//
-void UT_CMusClirMonitor::UT_ReadClir()
- {
- // Cancel initial request
- iMonitor->Cancel();
-
- iMonitor->ReadClir();
- EUNIT_ASSERT( iMonitor->IsActive() );
-
- // Monitor is already reading, new attempts do nothing
- iMonitor->ReadClir();
- iMonitor->ReadClir();
-
- EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, 0 );
- }
-
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::UT_RunL
-// -----------------------------------------------------------------------------
-//
-void UT_CMusClirMonitor::UT_RunL()
- {
- CTelephony::TIdentityServiceStatus value1 =
- CTelephony::EIdServiceActivePermanent;
- CTelephony::TIdentityServiceStatus value2 =
- CTelephony::EIdServiceNotProvisioned;
-
- EUNIT_ASSERT( iMonitor->iAllowed );
- iMonitor->Cancel();
- iMonitor->iTIdentityServiceV1.iIdentityStatus = value1;
- iMonitor->iStatus = KErrNone;
- iMonitor->RunL();
- EUNIT_ASSERT( !iMonitor->iAllowed );
- EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, 0 );
-
-
- iMonitor->Cancel();
- iMonitor->iTIdentityServiceV1.iIdentityStatus = value2;
- iMonitor->iStatus = KErrGeneral;
- iMonitor->RunL();
- // iAllowed value does not change because request completed with error
- EUNIT_ASSERT( !iMonitor->iAllowed );
- EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, 1 );
-
-
- iMonitor->Cancel();
- iMonitor->iTIdentityServiceV1.iIdentityStatus = value2;
- iMonitor->iStatus = KErrNone;
- iMonitor->RunL();
- EUNIT_ASSERT( iMonitor->iAllowed );
- // After successful read, error count is reset
- EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, 0 );
- }
-
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::UT_RunLErrorsL
-// Test that if reading fails, it is retried few times.
-// -----------------------------------------------------------------------------
-//
-void UT_CMusClirMonitor::UT_RunLErrorsL()
- {
- // Must have same value as in musclirmonitor.cpp
- const TInt KMaxErrorsBeforeStop = 5;
-
- EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, 0 );
-
- for ( TInt i = 1; i <= KMaxErrorsBeforeStop; ++i )
- {
- // Reading fails
- iMonitor->Cancel();
- iMonitor->iStatus = KErrNotSupported;
- iMonitor->RunL();
- EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, i );
- // Retry started
- EUNIT_ASSERT( iMonitor->IsActive() );
- }
-
- // Reading fails
- iMonitor->Cancel();
- iMonitor->iStatus = KErrNotSupported;
- iMonitor->RunL();
- EUNIT_ASSERT_EQUALS( iMonitor->iErrorCount, KMaxErrorsBeforeStop + 1 );
-
- // No more retries
- EUNIT_ASSERT( !iMonitor->IsActive() );
- }
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::UT_DoCancel
-// -----------------------------------------------------------------------------
-//
-void UT_CMusClirMonitor::UT_DoCancel()
- {
- EUNIT_ASSERT( iMonitor->IsActive() );
-
- // Can't call DoCancel directly, must call it via the CActive::Cancel
- iMonitor->Cancel();
-
- EUNIT_ASSERT( !iMonitor->IsActive() );
- }
-
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::UT_RunError
-// -----------------------------------------------------------------------------
-//
-void UT_CMusClirMonitor::UT_RunError()
- {
- EUNIT_ASSERT( iMonitor->RunError( KErrNone ) == KErrNone );
- EUNIT_ASSERT( iMonitor->RunError( KErrGeneral ) == KErrNone );
- EUNIT_ASSERT( iMonitor->RunError( 48 ) == KErrNone );
- EUNIT_ASSERT( iMonitor->RunError( -2092 ) == KErrNone );
- }
-
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::UT_TranslateResult
-// -----------------------------------------------------------------------------
-//
-void UT_CMusClirMonitor::UT_TranslateResult()
- {
- iMonitor->iAllowed = EFalse;
-
- iMonitor->TranslateResult( CTelephony::EIdServiceActiveDefaultAllowed );
- EUNIT_ASSERT( iMonitor->iAllowed );
-
- iMonitor->TranslateResult( CTelephony::EIdServiceActivePermanent );
- EUNIT_ASSERT( !iMonitor->iAllowed );
-
- iMonitor->TranslateResult( CTelephony::EIdServiceNotProvisioned );
- EUNIT_ASSERT( iMonitor->iAllowed );
-
- iMonitor->TranslateResult( CTelephony::EIdServiceActiveDefaultRestricted );
- EUNIT_ASSERT( !iMonitor->iAllowed );
-
- iMonitor->TranslateResult( CTelephony::EIdServiceUnknown );
- EUNIT_ASSERT( !iMonitor->iAllowed );
- }
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::SetupL
-// -----------------------------------------------------------------------------
-//
-void UT_CMusClirMonitor::SetupL()
- {
- iMonitor = CMusClirMonitor::NewL();
- }
-
-
-// -----------------------------------------------------------------------------
-// UT_CMusClirMonitor::Teardown
-// -----------------------------------------------------------------------------
-//
-void UT_CMusClirMonitor::Teardown()
- {
- delete iMonitor;
- iMonitor = NULL;
- PropertyHelper::Close();
-
- }
-
-// test table
-
-EUNIT_BEGIN_TEST_TABLE(
- UT_CMusClirMonitor,
- "UT_CMusClirMonitor",
- "UNIT" )
-
-EUNIT_TEST(
- "UT_ReadClir",
- "CMusClirMonitor",
- "ReadClir",
- "FUNCTIONALITY",
- SetupL, UT_ReadClir, Teardown)
-
-EUNIT_TEST(
- "UT_RunL",
- "CMusClirMonitor",
- "RunL",
- "FUNCTIONALITY",
- SetupL, UT_RunL, Teardown)
-
-EUNIT_TEST(
- "UT_RunLErrorsL",
- "CMusClirMonitor",
- "RunL",
- "FUNCTIONALITY",
- SetupL, UT_RunLErrorsL, Teardown)
-
-EUNIT_TEST(
- "UT_DoCancel",
- "CMusClirMonitor",
- "DoCancel",
- "FUNCTIONALITY",
- SetupL, UT_DoCancel, Teardown)
-
-EUNIT_TEST(
- "UT_RunError",
- "CMusClirMonitor",
- "RunError",
- "FUNCTIONALITY",
- SetupL, UT_RunError, Teardown)
-
-EUNIT_TEST(
- "UT_TranslateResult",
- "CMusClirMonitor",
- "TranslateResult",
- "FUNCTIONALITY",
- SetupL, UT_TranslateResult, Teardown)
-
-EUNIT_END_TEST_TABLE
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musclirmonitor.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
-* Copyright (c) 2009 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: Monitor that observes the calling line identity restriction
-* setting
-*
-*/
-
-
-
-#ifndef UT_MUSCLIRMONITORTEST_H
-#define UT_MUSCLIRMONITORTEST_H
-
-#include <etelmm.h>
-#include <digia/eunit/ceunittestsuiteclass.h>
-
-
-class CMusClirMonitor;
-class CMusAoPlugin;
-
-
-NONSHARABLE_CLASS( UT_CMusClirMonitor )
- : public CEUnitTestSuiteClass
- {
-
-public: // constructors and destructor
-
- /**
- * Destructor.
- */
- ~UT_CMusClirMonitor();
-
- /**
- * Two-phased constructor. Leaves on failure.
- * @return The constructed UT_CMusClirMonitor object.
- */
- static UT_CMusClirMonitor* NewLC();
-
-private:
-
- /**
- * C++ constructor.
- */
- UT_CMusClirMonitor();
-
- /**
- * Symbian 2nd-phase constructor.
- */
- void ConstructL();
-
-public:
-
- void UT_ReadClir();
-
- void UT_RunL();
-
- void UT_RunLErrorsL();
-
- void UT_DoCancel();
-
- void UT_RunError();
-
- void UT_TranslateResult();
-
-private:
-
- void SetupL();
-
- void Teardown();
-
-private: // data
-
- // Owned
- CMusClirMonitor* iMonitor;
-
- EUNIT_DECLARE_TEST_TABLE;
-
- };
-
-#endif // UT_MUSCLIRMONITORTEST_H
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscommondllmain.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscommondllmain.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -17,6 +17,7 @@
// USER INCLUDES
#include "ut_muscallmonitor.h"
+#include "ut_musvoipcallmonitor.h"
#include "ut_muscallstatusmonitor.h"
#include "ut_muscalleventmonitor.h"
#include "ut_muscallconferenceeventmonitor.h"
@@ -24,6 +25,7 @@
#include "ut_muscallmonitorbase.h"
#include "ut_musresourcefinderutil.h"
#include "ut_mustsypropertymonitor.h"
+#include "ut_musfactorysettings.h"
// SYSTEM INCLUDES
#include <digia/eunit/ceunittestsuite.h>
@@ -52,7 +54,6 @@
rootSuite->AddL( UT_CMusTsyPropertyMonitor::NewLC() );
CleanupStack::Pop();
-
rootSuite->AddL( UT_MusResourceFinderUtil::NewLC() );
CleanupStack::Pop();
@@ -63,6 +64,12 @@
rootSuite->AddL( UT_CMusCallMonitorBase::NewLC() );
CleanupStack::Pop();
+ rootSuite->AddL( UT_CMusVoipCallMonitor::NewLC() );
+ CleanupStack::Pop();
+
+ rootSuite->AddL( UT_CMusFactorySettings::NewLC() );
+ CleanupStack::Pop();
+
CleanupStack::Pop( rootSuite );
return rootSuite;
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musconferencecallmonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musconferencecallmonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -126,9 +126,6 @@
{
EUNIT_ASSERT_EQUALS( iMonitor->RunError( KErrNone ),
KErrNone )
- // Make sure RunError handles the error compleatly and returns
- // KErrNone
- EUNIT_ASSERT( iMonitor->RunError( KErrGeneral ) == KErrNone );
}
// -----------------------------------------------------------------------------
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musfactorysettings.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,194 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+
+// INTERNAL INCLUDES
+#include <CTSYDomainPSKeys.h>
+#include "etelmm.h"
+#include "ut_musfactorysettings.h"
+#include "musfactorysettings.h"
+#include "centralrepository.h"
+#include "e32property.h"
+
+
+// SYSTEM INCLUDES
+#include <eunitmacros.h>
+
+// -----------------------------------------------------------------------------
+// Two phase symbian constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusFactorySettings* UT_CMusFactorySettings::NewL()
+ {
+ UT_CMusFactorySettings* self = UT_CMusFactorySettings::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Two phase symbian constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusFactorySettings* UT_CMusFactorySettings::NewLC()
+ {
+ UT_CMusFactorySettings* self = new( ELeave ) UT_CMusFactorySettings();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusFactorySettings::~UT_CMusFactorySettings()
+ {
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusFactorySettings::UT_CMusFactorySettings()
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void UT_CMusFactorySettings::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusFactorySettings::SetupL()
+ {
+ iMusCentralRepository = CRepository::NewL( MusSettingsKeys::KRepositoryUid );
+ CRepository::ResetStubGlobal();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusFactorySettings::Teardown()
+ {
+ delete iMusCentralRepository;
+ iMusCentralRepository = NULL;
+ CRepository::ResetStubGlobal();
+ PropertyHelper::Close(); // CRepository puts stuff to RProperty static
+ }
+
+// TEST CASES
+
+// -----------------------------------------------------------------------------
+// SetCallInfo test function
+// -----------------------------------------------------------------------------
+//
+void UT_CMusFactorySettings::UT_CMusFactorySettings_IsSupportedLL()
+ {
+ // call cases
+ // all call types allowed
+ TPSCTsyCallType callType = EPSCTsyCallTypeCSVoice;
+ User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyWithActiveCSCall,
+ MusSettingsKeys::EAllowedAllCalls) );
+ EUNIT_ASSERT( MusFactorySettings::IsSupportedL( callType ));
+
+ // allowed csonly and call type is voip
+ callType = EPSCTsyCallTypeVoIP;
+ User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyWithActiveCSCall,
+ MusSettingsKeys::EAllowedCSOnly) );
+ EUNIT_ASSERT( !MusFactorySettings::IsSupportedL( callType ));
+
+ // allowed csonly and call type is cs
+ callType = EPSCTsyCallTypeCSVoice;
+ User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyWithActiveCSCall,
+ MusSettingsKeys::EAllowedCSOnly) );
+ EUNIT_ASSERT( MusFactorySettings::IsSupportedL( callType ));
+
+ // allowed csonly and call type is EPSCTsyCallTypeNone
+ callType = EPSCTsyCallTypeNone;
+ User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyWithActiveCSCall,
+ MusSettingsKeys::EAllowedCSOnly) );
+ EUNIT_ASSERT( !MusFactorySettings::IsSupportedL( callType ));
+
+ // network cases
+ // all bearer types allowed
+ RMobilePhone::TMobilePhoneNetworkMode networkType = RMobilePhone::ENetworkModeGsm;
+ User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowedAllBearers) );
+ EUNIT_ASSERT( MusFactorySettings::IsSupportedL( networkType ));
+
+ // 3g only and network type is gsm
+ networkType = RMobilePhone::ENetworkModeGsm;
+ User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowed3GOnly) );
+ EUNIT_ASSERT( !MusFactorySettings::IsSupportedL( networkType ));
+
+ // 3g only and network type is 3g
+ networkType = RMobilePhone::ENetworkModeWcdma;
+ User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowed3GOnly) );
+ EUNIT_ASSERT( MusFactorySettings::IsSupportedL( networkType ));
+
+ // if allowed3gonly setting cenrep key not found
+ // then function should not leave and should behave like in default
+ // case ie all bearer supported. so it should return ETrue
+ networkType = RMobilePhone::ENetworkModeGsm;
+ User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyIn3GNetwork,
+ MusSettingsKeys::EAllowed3GOnly) );
+ CRepository::iForceFailWithCode = KErrNotFound;
+ TBool supported = EFalse;
+ EUNIT_ASSERT_NO_LEAVE( supported = MusFactorySettings::IsSupportedL( networkType ))
+ EUNIT_ASSERT( supported );
+ }
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusFactorySettings,
+ "UT_CMusFactorySettings",
+ "UNIT" )
+
+EUNIT_TEST(
+ "IsSupportedL - test",
+ "CMusFactorySettings",
+ "IsSupportedL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusFactorySettings_IsSupportedLL, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE
+
+
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muspropertymonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muspropertymonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -92,8 +92,9 @@
//
void UT_CMusPropertyMonitor::SetupL()
{
- iMusPropertyMonitor = CMusPropertyMonitor::NewL();
+ iMusPropertyMonitor = CMusPropertyMonitor::NewL(*this);
iMusPropertyMonitor->iPropertyEvent.iPValue = NMusSessionInformationApi::ENoCall;
+ iMusCallStateObserverInovked = EFalse;
}
@@ -108,10 +109,6 @@
}
-
-
-
-
// TEST CASES
// -----------------------------------------------------------------------------
@@ -121,43 +118,11 @@
void UT_CMusPropertyMonitor::UT_CMusPropertyMonitor_RunLL()
{
EUNIT_ASSERT( iMusPropertyMonitor);
- EUNIT_ASSERT( !iMusPropertyMonitor->iManager );
-
+ EUNIT_ASSERT( !iMusCallStateObserverInovked );
iMusPropertyMonitor->iPropertyEvent.iPValue = NMusSessionInformationApi::ENoCall;
iMusPropertyMonitor->Cancel();
iMusPropertyMonitor->RunL();
- EUNIT_ASSERT( !iMusPropertyMonitor->iManager );
-
- iMusPropertyMonitor->iPropertyEvent.iPValue = NMusSessionInformationApi::ECallConnected;
- iMusPropertyMonitor->Cancel();
- iMusPropertyMonitor->RunL();
- EUNIT_ASSERT( iMusPropertyMonitor->iManager );
-
- iMusPropertyMonitor->iPropertyEvent.iPValue = NMusSessionInformationApi::EConferenceTerminated;
- iMusPropertyMonitor->Cancel();
- iMusPropertyMonitor->RunL();
- EUNIT_ASSERT( iMusPropertyMonitor->iManager );
-
- iMusPropertyMonitor->iPropertyEvent.iPValue = NMusSessionInformationApi::ECallHold;
- iMusPropertyMonitor->Cancel();
- iMusPropertyMonitor->RunL();
- EUNIT_ASSERT( iMusPropertyMonitor->iManager );
-
- iMusPropertyMonitor->iPropertyEvent.iPValue = NMusSessionInformationApi::EConferenceCall;
- iMusPropertyMonitor->Cancel();
- iMusPropertyMonitor->RunL();
- EUNIT_ASSERT( iMusPropertyMonitor->iManager );
-
- iMusPropertyMonitor->iPropertyEvent.iPValue = NMusSessionInformationApi::ENoCall;
- iMusPropertyMonitor->Cancel();
- iMusPropertyMonitor->RunL();
- EUNIT_ASSERT( !iMusPropertyMonitor->iManager );
-
- iMusPropertyMonitor->iPropertyEvent.iPValue = 555;
- iMusPropertyMonitor->Cancel();
- iMusPropertyMonitor->RunL();
- EUNIT_ASSERT( !iMusPropertyMonitor->iManager );
-
+ EUNIT_ASSERT( iMusCallStateObserverInovked );
}
@@ -181,14 +146,70 @@
//
void UT_CMusPropertyMonitor::UT_CMusPropertyMonitor_RunErrorL()
{
+ EUNIT_ASSERT( !iMusCallStateObserverInovked );
EUNIT_ASSERT( iMusPropertyMonitor );
+ TInt CallState;
TInt error = KErrNotFound;
- iMusPropertyMonitor->RunError(error);
+
+ // Call is Established:
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ NMusSessionInformationApi::ECallConnected ) );
+
+ // Test1: Invoking Error Situation, Ensure Calll is disconected.
+ User::LeaveIfError( iMusPropertyMonitor->RunError(error));
+ User::LeaveIfError( RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ CallState ) );
+ EUNIT_ASSERT( CallState == NMusSessionInformationApi::ENoCall );
+ EUNIT_ASSERT( iMusCallStateObserverInovked );
}
+// -----------------------------------------------------------------------------
+// UT_CMusPropertyMonitor::UT_CMusPropertyMonitor_IsCallConnected()
+// Checks from the P/S keys if the Call is connected.
+// -----------------------------------------------------------------------------
+//
+void UT_CMusPropertyMonitor::UT_CMusPropertyMonitor_IsCallConnected()
+ {
+ // Test1: Call Not Connected:
+ TBool callConnected = EFalse;
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ NMusSessionInformationApi::ENoCall ) );
+
+ callConnected = iMusPropertyMonitor->IsCallConnected();
+ EUNIT_ASSERT( callConnected == EFalse );
+
+ // Test2: Call Connected:
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ NMusSessionInformationApi::ECallConnected ) );
-
+ callConnected = iMusPropertyMonitor->IsCallConnected();
+ EUNIT_ASSERT( callConnected == ETrue );
+
+
+ // Test3: Hold and Conference are concidered as call connected
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ NMusSessionInformationApi::ECallHold ) );
+
+ callConnected = iMusPropertyMonitor->IsCallConnected();
+ EUNIT_ASSERT( callConnected == ETrue );
+ }
+
+
+// -----------------------------------------------------------------------------
+// MusCallStateChanged from the MusCallStateObserver
+// -----------------------------------------------------------------------------
+//
+void UT_CMusPropertyMonitor::MusCallStateChanged()
+ {
+ iMusCallStateObserverInovked = ETrue;
+ }
+
// TEST TABLE
@@ -219,6 +240,13 @@
"FUNCTIONALITY",
SetupL, UT_CMusPropertyMonitor_RunErrorL, Teardown)
+EUNIT_TEST(
+ "IsCallConnected - test",
+ "CMusCallStatusMonitor",
+ "IsCallConnected",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusPropertyMonitor_IsCallConnected, Teardown)
+
EUNIT_END_TEST_TABLE
// END OF FILE
--- a/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_mustsypropertymonitor.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_mustsypropertymonitor.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -19,17 +19,27 @@
// INTERNAL INCLUDES
#include "etelmm.h"
#include "e32property.h"
+#include "centralrepository.h"
#include "ut_mustsypropertymonitor.h"
#include "mustsypropertymonitor.h"
-#include "mussettings.h"
-
+#include "muscallmonitor.h"
+#include "musvoipcallmonitor.h"
+#include "muscallconferencemonitor.h"
// SYSTEM INCLUDES
#include <digia/eunit/eunitmacros.h>
#include <CTSYDomainPSKeys.h>
+#include <telremotepartyinformationpskeys.h>
+
_LIT(KTelNo,"1234");
+_LIT( KTestProvideName, "VoIP" );
+_LIT( KDefaultSipUri, "sip:default@uri" );
+TName cs_call_1(_L("cs_call_1"));
+TName cs_call_2(_L("cs_call_2"));
+TName voip_call_1(_L("voip_call_1"));
+TName voip_call_2(_L("voip_call_2"));
// -----------------------------------------------------------------------------
//
@@ -93,34 +103,13 @@
//
void UT_CMusTsyPropertyMonitor::SetupL()
{
+ iMusCentralRepository = CRepository::NewL( MusSettingsKeys::KRepositoryUid );
RProperty::Set( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallEvent,
0 );
- MultimediaSharingSettings::SetPropertyValueL(
- MusSettingsKeys::KPrivacyExchange,
- MusSettingsKeys::EPrivacy );
- iMusTsyPropertyMonitor = CMusTsyPropertyMonitor::NewL( iPhone );
+ iMusTsyPropertyMonitor = CMusTsyPropertyMonitor::NewL( iPhone, *this );
iMusTsyPropertyMonitor->iPropertyEvent.iPValue = EPSCTsyCallStateUninitialized;
-
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void UT_CMusTsyPropertyMonitor::Setup2L()
- {
- RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallEvent,
- 0 );
- MultimediaSharingSettings::SetPropertyValueL(
- MusSettingsKeys::KPrivacyExchange,
- MusSettingsKeys::ENoPrivacy );
-
- iMusTsyPropertyMonitor = CMusTsyPropertyMonitor::NewL( iPhone );
- iMusTsyPropertyMonitor->iPropertyEvent.iPValue = EPSCTsyCallStateUninitialized;
-
}
@@ -130,6 +119,8 @@
//
void UT_CMusTsyPropertyMonitor::Teardown()
{
+ delete iMusCentralRepository;
+ iMusCentralRepository = NULL;
delete iMusTsyPropertyMonitor;
PropertyHelper::Close();
iPhone.Close();
@@ -144,30 +135,23 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_NewLL()
- {
- EUNIT_ASSERT( iMusTsyPropertyMonitor);
- EUNIT_ASSERT( MultimediaSharingSettings::PrivacySetting() );//feature is on by default
- EUNIT_ASSERT( iMusTsyPropertyMonitor->iClirMonitor );
-
- MultimediaSharingSettings::SetPropertyValueL( MusSettingsKeys::KPrivacyExchange,
- MusSettingsKeys::ENoPrivacy );
- delete iMusTsyPropertyMonitor;
- iMusTsyPropertyMonitor = NULL;
-
- iMusTsyPropertyMonitor = CMusTsyPropertyMonitor::NewL( iPhone );
- EUNIT_ASSERT( !MultimediaSharingSettings::PrivacySetting() );//feature is on by default
- EUNIT_ASSERT( !iMusTsyPropertyMonitor->iClirMonitor );
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_RunLL()
{
+
+ // Set intial call type too unintialiazed.
+ if ( RProperty::Set( KPSUidCtsyCallInformation,KCTsyCallType,
+ EPSCTsyCallTypeUninitialized ))
+ {
+ User::Leave( KErrNoMemory );
+ }
+ // Set intial call count
+ if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallCount,
+ 0 ) != KErrNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
+
EUNIT_ASSERT( iMusTsyPropertyMonitor);
TInt val = KErrNone;
@@ -225,13 +209,12 @@
iMusTsyPropertyMonitor->iPropertyEvent.iPValue = EPSCTsyCallStateHold;
iMusTsyPropertyMonitor->SetStateL( NMusSessionInformationApi::ENoCall );
- if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallCount,
- 1 ) != KErrNone )
- {
- User::Leave( KErrNoMemory );
- }
-
+ if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallCount,
+ 1 ) != KErrNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
//simulate multicall scenario
TName callName(_L("Voice1"));
iMusTsyPropertyMonitor->AddCallMonitorL( callName );
@@ -306,65 +289,155 @@
//
// -----------------------------------------------------------------------------
//
-void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_MonitorCallLL()
+void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_MonitorCSCallLL()
{
+ if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallCount,
+ 0 ) != KErrNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusIdle );
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+ iMusTsyPropertyMonitor->MonitorCSCallL();
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+
+ RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusHangingUp );
+ iMusTsyPropertyMonitor->MonitorCSCallL();
EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
- iMusTsyPropertyMonitor->MonitorCallL();
+ RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusConnected );
+ iMusTsyPropertyMonitor->MonitorCSCallL();
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
+
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusAnswering );
+ iMusTsyPropertyMonitor->MonitorCSCallL();
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
+
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusIdle );
+ iMusTsyPropertyMonitor->MonitorCSCallL();
EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
- RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusHangingUp );
-
- iMusTsyPropertyMonitor->MonitorCallL();
- EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
-
- RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusConnected );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_MonitorVoipCallLL()
+ {
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
NMusSessionInformationApi::KMusCallCount,
0 ) != KErrNone )
{
User::Leave( KErrNoMemory );
}
- iMusTsyPropertyMonitor->MonitorCallL();
- EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
+
+ // State connected
+ TPSCTsyCallState callState = EPSCTsyCallStateConnected;
+ iMusTsyPropertyMonitor->MonitorVoipCallL( callState );
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 1 );
- RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusAnswering );
- //already exist
- iMusTsyPropertyMonitor->MonitorCallL();
- EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
+ // State answering
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
+ callState = EPSCTsyCallStateAnswering ;
+ iMusTsyPropertyMonitor->MonitorVoipCallL( callState );
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 1 );
+ // State disconnecting ( Atleast one previous voip call is present )
+ callState = EPSCTsyCallStateDisconnecting;
+ iMusTsyPropertyMonitor->MonitorVoipCallL( callState );
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
+ }
- RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusUnknown );
-
- iMusTsyPropertyMonitor->MonitorCallL();
- EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
-
- RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusIdle );
- iMusTsyPropertyMonitor->MonitorCallL();
-
- EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
- }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_MonitorCallL_2L()
+void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_MonitorCallLL()
{
- EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
- EUNIT_ASSERT( !iMusTsyPropertyMonitor->iClirMonitor );
-
- RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusConnected );
+ TInt tmp = 0;
if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallCount,
- 0 ) != KErrNone )
+ NMusSessionInformationApi::KMusCallCount,
+ 0 ) != KErrNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+ // Test : Cs call and call state is connected
+ TPSCTsyCallState callState = EPSCTsyCallStateConnected;
+ RTelHelper::SetCallStatus( (RMobileCall::TMobileCallStatus)RCall::EStatusConnected );
+ TPSCTsyCallType callType = EPSCTsyCallTypeCSVoice;
+ iMusTsyPropertyMonitor->MonitorCallL(callState,callType);
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected);
+
+ // Test : unknown call type
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ callType = EPSCTsyCallTypeNone;
+ iMusTsyPropertyMonitor->MonitorCallL(callState,callType);
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ENoCall);
+
+ // Test : Voip call and call state is connected and factory settings not found
+ // if key not found then it should behave default = AllowedAllCalls.
+ callState = EPSCTsyCallStateConnected;
+ callType = EPSCTsyCallTypeVoIP;
+ iMusTsyPropertyMonitor->MonitorCallL(callState,callType);
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 1 );
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected);
+
+
+ // Test : Voip call and call state is connected and factory settings set to
+ // all call supported.
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+ iMusCentralRepository->Set(MusSettingsKeys::KAllowOnlyWithActiveCSCall,
+ MusSettingsKeys::EAllowedAllCalls);
+ callState = EPSCTsyCallStateConnected;
+ callType = EPSCTsyCallTypeVoIP;
+ iMusTsyPropertyMonitor->MonitorCallL(callState,callType);
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 1 );
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected);
+
+ // Test : Voip call and call state is connected but factory settings are cs only
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+ iMusCentralRepository->Set(MusSettingsKeys::KAllowOnlyWithActiveCSCall,MusSettingsKeys::EAllowedCSOnly);
+ callState = EPSCTsyCallStateConnected;
+ callType = EPSCTsyCallTypeVoIP;
+ iMusTsyPropertyMonitor->MonitorCallL(callState,callType);
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 0 );
+ if ( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() != 0 )
{
- User::Leave( KErrNoMemory );
+ User::Leave( KErrNoMemory ); // Call was not removed because of memory running out was "silenty" handled.
}
- iMusTsyPropertyMonitor->MonitorCallL();
- EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count() == 1 );
-
+ EUNIT_ASSERT( iMusTsyPropertyMonitor->iVoipCallMonitorArray.Count() == 0 );
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ENoCall);
}
// -----------------------------------------------------------------------------
@@ -387,9 +460,191 @@
iMusTsyPropertyMonitor->RemoveUnUsedCallMonitors();
EUNIT_ASSERT( iMusTsyPropertyMonitor->iCallMonitorArray.Count()==0 );
}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_CheckCallCriteriaLL()
+ {
+ if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallCount,
+ 0 ) != KErrNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
+ TInt tmp = 0;
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+
+ User::LeaveIfError( RProperty::Set( KPSUidTelRemotePartyInformation,
+ KTelCLINumber,
+ _L( "sip:somebody@somewhere" ) ) );
+ // Test : no cs call , one voip call
+ iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+ iMusTsyPropertyMonitor->CheckCallCriteriaL();
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected);
+ // Test : one cs call , multiple voip calls
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );
+ iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+ iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_2 );
+ iMusTsyPropertyMonitor->CheckCallCriteriaL();
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallHold);
+ // Test: multiple cs call, one voip call
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );
+ iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_2 );
+ iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+ iMusTsyPropertyMonitor->CheckCallCriteriaL();
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallHold);
+
+ // Test : multiple cs call , multiple voip calls
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );
+ iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_2 );
+ iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+ iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_2 );
+ iMusTsyPropertyMonitor->CheckCallCriteriaL();
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallHold);
+ // Test : one cs call , one voip call
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );
+ iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+ iMusTsyPropertyMonitor->CheckCallCriteriaL();
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallHold);
+ // Test: one cs call , no voip call
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+ RTelHelper::SetCallStatus( RMobileCall::EStatusConnected );
+ iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );
+ iMusTsyPropertyMonitor->CheckCallCriteriaL();
+ RProperty::Get( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallEvent,
+ tmp );
+ EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected);
+ }
+
+// -----------------------------------------------------------------------------
+// UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_IsDataReadyLL()
+// Test to query from corresponding monitors if they are ready.
+// -----------------------------------------------------------------------------
+//
+
+
+void UT_CMusTsyPropertyMonitor::UT_CMusTsyPropertyMonitor_IsDataReadyLL()
+ {
+ TBool dataReady = EFalse;
+
+ // Test-1: CS Call Ready:
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+
+ if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallCount,
+ 0 ) != KErrNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
+
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KTelNo ));
+
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusCallDirection,
+ NMusSessionInformationApi::ECallOrginated ));
+
+ iMusTsyPropertyMonitor->AddCallMonitorL( cs_call_1 );
+ dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+ EUNIT_ASSERT_EQUALS( dataReady, ETrue )
+
+ // Test-2: CS Call NotReady:
+ User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KNullDesC ));
+
+ dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+ EUNIT_ASSERT_EQUALS( dataReady, EFalse )
+
+ // Test-3 VoIP Call Ready
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+
+ User::LeaveIfError( RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMusTelNumber,
+ KDefaultSipUri ));
+
+ User::LeaveIfError(RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ KTestProvideName ));
+
+ dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+ EUNIT_ASSERT_EQUALS( dataReady, ETrue )
+
+
+ // Test-4 VoIP Call Not Ready
+ User::LeaveIfError( RProperty::Set(
+ NMusSessionInformationApi::KCategoryUid,
+ NMusSessionInformationApi::KMUSCallProvider,
+ KNullDesC ));
+
+ dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+
+ EUNIT_ASSERT_EQUALS( dataReady, EFalse )
+
+ // Test-5: Conference Case
+ iMusTsyPropertyMonitor->iCallMonitorArray.ResetAndDestroy();
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+
+ iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_1 );
+ iMusTsyPropertyMonitor->AddVoipCallMonitorL( voip_call_2 );
+
+ dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+ EUNIT_ASSERT_EQUALS( dataReady, EFalse )
+ iMusTsyPropertyMonitor->iVoipCallMonitorArray.ResetAndDestroy();
+
+ // Test-3 Handling conference case.
+ iMusTsyPropertyMonitor->iConferenceMonitor->iConfStatus = RMobileConferenceCall::EConferenceActive;
+ dataReady = iMusTsyPropertyMonitor->IsDataReadyL();
+ EUNIT_ASSERT_EQUALS( dataReady, ETrue )
+ iMusTsyPropertyMonitor->iConferenceMonitor->iConfStatus = RMobileConferenceCall::EConferenceIdle;
+ }
+
+
+// -----------------------------------------------------------------------------
+// MusCallStateChanged from the MusCallStateObserver
+// -----------------------------------------------------------------------------
+//
+void UT_CMusTsyPropertyMonitor::MusCallStateChanged()
+ {
+ // NOP
+ }
+
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -397,14 +652,6 @@
"UT_CMusTsyPropertyMonitor",
"UNIT" )
-
-EUNIT_TEST(
- "NewL - test",
- "CMusTsyPropertyMonitor",
- "NewL",
- "FUNCTIONALITY",
- SetupL, UT_CMusTsyPropertyMonitor_NewLL, Teardown)
-
EUNIT_TEST(
"RunL - test",
"CMusTsyPropertyMonitor",
@@ -427,7 +674,7 @@
SetupL, UT_CMusTsyPropertyMonitor_RunErrorL, Teardown)
EUNIT_TEST(
- "RemoveUnUsedCallMonitorsL",
+ "UT_CMusTsyPropertyMonitor_RemoveUnUsedCallMonitorsL",
"CMusCallStatusMonitor",
"RemoveUnUsedCallMonitors",
"FUNCTIONALITY",
@@ -453,14 +700,35 @@
"MonitorCallL",
"FUNCTIONALITY",
SetupL, UT_CMusTsyPropertyMonitor_MonitorCallLL, Teardown)
+
+EUNIT_TEST(
+ "MonitorCsCallL - test",
+ "CMusTsyPropertyMonitor",
+ "MonitorCsCallL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusTsyPropertyMonitor_MonitorCSCallLL, Teardown)
+
+EUNIT_TEST(
+ "MonitorVoipCallL - test",
+ "CMusTsyPropertyMonitor",
+ "MonitorVoipCallL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusTsyPropertyMonitor_MonitorVoipCallLL, Teardown)
EUNIT_TEST(
- "MonitorCallL no clir - test",
+ "CheckCallCriteriaL - test",
"CMusTsyPropertyMonitor",
- "MonitorCallL",
+ "CheckCallCriteriaL",
"FUNCTIONALITY",
- Setup2L, UT_CMusTsyPropertyMonitor_MonitorCallL_2L, Teardown)
-
+ SetupL, UT_CMusTsyPropertyMonitor_CheckCallCriteriaLL, Teardown)
+
+EUNIT_TEST(
+ "IsDataReadyL - test",
+ "CMusTsyPropertyMonitor",
+ "IsDataReadyL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusTsyPropertyMonitor_IsDataReadyLL, Teardown)
+
EUNIT_END_TEST_TABLE
// END OF FILE
--- a/mmshplugins/mmshsettingsuiplugin/data/mussettingsuirsc.rss Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/data/mussettingsuirsc.rss Tue Aug 31 15:12:07 2010 +0300
@@ -12,7 +12,7 @@
* Contributors:
*
* Description: Resource file for MUSSettingsPlugin.
-* Version : %version: be1sipx1#19 % << Don't touch! Updated by Synergy at check-out.
+* Version : %version: 19 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -229,6 +229,20 @@
}
// ---------------------------------------------------------------------------
+// r_vs_video_saving_setting_page
+// Video saving setting page.
+// ---------------------------------------------------------------------------
+//
+RESOURCE AVKON_SETTING_PAGE r_vs_video_saving_setting_page
+ {
+ number = EAknSettingPageNoOrdinalDisplayed;
+ label = qtn_msh_set_saving_title;
+ softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
+ type = EAknSetListBox;
+ editor_resource_id = r_setting_listbox;
+ }
+
+// ---------------------------------------------------------------------------
// r_vs_recorded_video_saving_setting_page
// Recorded video saving setting page.
// ---------------------------------------------------------------------------
@@ -285,7 +299,7 @@
{
LBUF
{
- txt = qtn_msh_set_activation_on;
+ txt = qtn_msh_set_activation_always;
},
LBUF
{
@@ -294,7 +308,6 @@
};
}
-
// ---------------------------------------------------------------------------
// r_activation_setting_page_lbx
// Activation setting page's listbox.
@@ -415,11 +428,11 @@
MENU_TITLE
{
menu_pane = r_vs_menu_item_exit;
- }/*,
+ },
MENU_TITLE
{
menu_pane = r_vs_menu_item_change;
- }*/
+ }
};
}
@@ -448,7 +461,7 @@
}
};
}
-/*
+
// ---------------------------------------------------------------------------
// r_vs_settings_menu_item_change
// Options menu item 'Change'.
@@ -465,7 +478,7 @@
}
};
}
-*/
+
// ---------------------------------------------------------------------------
// r_setting_listbox
// Common listbox editor resource for setting pages.
--- a/mmshplugins/mmshsettingsuiplugin/inc/mmussipprofilehandler.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/inc/mmussipprofilehandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -13,7 +13,6 @@
*
* Description: Mixin-class that provides functionality for manipulating
* MuS specific settings.
-* Version : %version: 6 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -21,15 +20,13 @@
#ifndef M_MMUSSIPPROFILEHANDLER_H
#define M_MMUSSIPPROFILEHANDLER_H
-#include <e32def.h>
-#include <e32cmn.h>
-
-class CSIPProfile;
+#include <sipmanagedprofile.h>
/**
* MMusSIPProfileHandler class
* Mixin class for SIP profile manipulation.
* Handles SIP profile manipulations.
+* @since S60 v3.2
*/
class MMusSIPProfileHandler
{
@@ -41,17 +38,17 @@
* default SIP profile.
*/
virtual TInt DefaultProfileIndex() = 0;
-
+
/**
- * Returns a reference to the SIP profile array.
+ * Returns pointer to the SIP profile array, does not change ownership.
* Note that previously returned value goes out of scope after a new
* call to ProfileArrayL. So it is not advised to store return value
* in long persistent variable, but rather to be used like stack
* variables for safety.
*
- * @return Reference to internally cached SIP profile array.
+ * @return Pointer to internally cached SIP profile array.
*/
- virtual RPointerArray<CSIPProfile>& ProfileArrayL() = 0;
+ virtual CArrayPtr<CSIPManagedProfile>* ProfileArrayL() = 0;
/**
* Returns the id of the default SIP profile.
@@ -59,12 +56,6 @@
* default SIP profile.
*/
virtual TUint32 DefaultProfileId() = 0;
-
- /*
- *
- *
- */
- virtual void DisableProfileL() = 0;
/**
* Returns profile id based on index.
--- a/mmshplugins/mmshsettingsuiplugin/inc/mussettingscontainer.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/inc/mussettingscontainer.h Tue Aug 31 15:12:07 2010 +0300
@@ -185,6 +185,11 @@
MusSettingsKeys::TOperatorVariant iOperatorVariant;
/**
+ * VS activation current value.
+ */
+ MusSettingsKeys::TActivation iVSActication;
+
+ /**
* Listbox items.
*/
CGSListBoxItemTextArray* iListboxItemArray;
--- a/mmshplugins/mmshsettingsuiplugin/inc/mussettingsmodel.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/inc/mussettingsmodel.h Tue Aug 31 15:12:07 2010 +0300
@@ -12,7 +12,6 @@
* Contributors:
*
* Description: MUSSettingsPlugin model class.
-* Version : %version: 11 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -21,17 +20,20 @@
#ifndef C_MUSSETTINGSMODEL_H
#define C_MUSSETTINGSMODEL_H
-#include <e32base.h>
-#include <badesca.h>
+#include "mussettings.h"
class MMusSIPProfileHandler;
class CMusSIPProfileModel;
+class MultimediaSharingSettings;
+
class CAknMemorySelectionDialogMultiDrive;
/**
* CMusSettingsModel is the model class of GS application.
* It provides functions to get and set setting values.
+ *
+ * @since S60 v3.2
*/
class CMusSettingsModel : public CBase
{
@@ -50,52 +52,111 @@
~CMusSettingsModel();
/**
+ * Returns operator variant mode.
+ * @return 0: Standard (MusSettingsKeys::EStandard)
+ * 1: Operator Specific (MusSettingsKeys::EOperatorSpecific)
+ */
+ MusSettingsKeys::TOperatorVariant VSSettingsOperatorVariantL();
+
+ /**
+ * Returns VS activation mode.
+ * @return 0: Always (MusSettingsKeys::EAlwaysActive)
+ * 1: Automatic (MusSettingsKeys::EActiveInHomeNetworks)
+ * 2: Off (MusSettingsKeys::ENever)
+ */
+ MusSettingsKeys::TActivation VSSettingsActivationL();
+
+ /**
+ * Returns SIP profile mode.
+ * @return 0: Use default SIP profile.
+ * 1: Use user selected SIP profile.
+ */
+ TInt VSSettingsProfileL();
+
+ /**
+ * Returns video autorecord mode.
+ * @return 0: on (MusSettingsKeys::EAutoRecordOn)
+ * 1: off (MusSettingsKeys::EAutoRecordOff)
+ */
+ MusSettingsKeys::TAutoRecord VSSettingsAutoRecordL();
+
+ /**
* Returns recorded video saving mode.
* @return 2: phone memory
* 4: memory card
*/
TInt VSSettingsRecordedVideoSavingL();
-
+
/**
- * operator specific variant
- * Sets activation item
- * @param aActive (enabled/disabled).
+ * Returns state of note (on/off). This setting is called "Capability
+ * auditory note" in standard variant and "Alerts" in operator specific
+ * variant.
+ * @return 0: enabled (MusSettingsKeys::EAuditoryNotificationOn)
+ * 1: disabled (MusSettingsKeys::EAuditoryNotificationOff)
*/
- void SetActivationItem( TBool aActive );
+ MusSettingsKeys::TAuditoryNotification VSSettingsNoteL();
+
+ /**
+ * Sets packet data VS activation mode.
+ * @param aActivation Activation mode.
+ */
+ void SetVSSettingsActivationL(
+ const MusSettingsKeys::TActivation aActivation );
/**
- * operator specific variant
- * @return activation item
+ * Sets SIP profile mode.
+ * @param aProfile Profile id.
+ */
+ void SetVSSettingsProfileL( const TInt aProfile );
+
+ /**
+ * Sets video autorecord mode.
+ * @param aAutoRecord save mode of video.
*/
- TBool ActivationItem();
-
+ void SetVSSettingsAutoRecordL(
+ const MusSettingsKeys::TAutoRecord aAutoRecord );
+
+ /**
+ * Sets location of video saving.
+ * @param aVideoLocation location of video
+ */
+ void SetVSSettingsRecordedVideoSavingL( const TInt aVideoLocation );
+
+ /**
+ * Sets mode of note ("Capability auditory note" in standard variant and
+ * "Alerts" in operator specific variant).
+ * @param aValue New state for note (enabled/disabled).
+ */
+ void SetVSSettingsNoteL(
+ const MusSettingsKeys::TAuditoryNotification aValue );
+
/**
* Returns the array containing the profile names.
* NOTE! The ownership of the array is transferred to the caller.
* @return Array consisting of the names of the SIP profiles.
*/
- CDesCArray* ListOfProfileNamesL();
+ CDesCArray* ListOfProfileNamesL();
/**
* Gets a SIP profile name by ID.
* Ownership is transferred to caller.
* @return SIP profile name.
*/
- HBufC* ProfileNameL( TInt aId );
+ HBufC* ProfileNameL( TInt aId );
/**
* Gets the index of the default SIP profile.
* @return KErrNotFound, if one does not exist, otherwise index of the
* default SIP profile.
*/
- TInt DefaultProfileIndex();
+ TInt DefaultProfileIndex();
/**
* Gets the id of the default SIP profile.
* @return KErrNotFound, if one does not exist, otherwise id of the
* default SIP profile.
*/
- TUint32 DefaultProfileId();
+ TUint32 DefaultProfileId();
/**
* Returns SIP profile index on locally cached array based on id.
@@ -118,27 +179,23 @@
*/
CAknMemorySelectionDialogMultiDrive* MemorySelectionDialogLC();
- /**
- * Initialize SIP profile enabler data.
- */
- void InitializeProfileEnablerL();
public: // constants
/**
* Default SIP profile.
*/
- static const TInt KVsSipProfileDefault;
-
+ static const TInt KVsSipProfileDefault;
+
/**
* SIP profile select.
*/
- static const TInt KVsSipProfileSelect;
+ static const TInt KVsSipProfileSelect;
/**
* Null selection SIP profile.
*/
- static const TInt KVsSipProfileSelectNone;
+ static const TInt KVsSipProfileSelectNone;
private:
@@ -147,7 +204,7 @@
* @param aHandler Reference to SIP profile manipulator.
*/
CMusSettingsModel( MMusSIPProfileHandler& aHandler );
-
+
void ConstructL();
private: // data
@@ -156,11 +213,12 @@
* SIP profile handler.
*/
MMusSIPProfileHandler& iHandler;
-
+
/**
- * Operator variant. If SIP profile disabled
+ * Central repository keys of video sharing.
+ * Own.
*/
- TBool iProfileDisabled;
+ MultimediaSharingSettings* iMSSettingsKeys;
};
--- a/mmshplugins/mmshsettingsuiplugin/inc/mussettingsplugin.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/inc/mussettingsplugin.h Tue Aug 31 15:12:07 2010 +0300
@@ -12,7 +12,6 @@
* Contributors:
*
* Description: MUSSettingsPlugin implementation.
-* Version : %version: 21 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -128,7 +127,7 @@
* TGSPluginProviderCategory.
*/
virtual TInt PluginProviderCategory() const;
-
+
public: // From MEikMenuObserver
@@ -142,9 +141,6 @@
CMusSettingsPlugin();
void ConstructL();
-
- void OpenResourceFileL();
- void CloseResourceFile();
/**
* Hides non-virtual member from base class CGSBaseView.
@@ -185,6 +181,16 @@
private:
/**
+ * Shows VS activation Setting dialog.
+ */
+ void ShowVSSettingsActivationSettingDialogL();
+
+ /**
+ * Shows Operator specific VS activation Setting dialog.
+ */
+ void ShowOperatorSpecificActivationSettingDialogL();
+
+ /**
* Shows Profile Setting dialog.
*/
void ShowVSSettingsProfileSettingDialogL();
@@ -232,15 +238,16 @@
protected: // data
- HBufC* iCaption;
- bool iResourceFileOpen;
-
/**
* Instance of SIP profile handler to manage SIP profiles.
* Own.
*/
CMusSIPProfileModel* iHandler;
+ /**
+ * Instance of SIP profile handler to manage SIP profiles.
+ * Own.
+ */
/**
* Pointer of model class of this application.
--- a/mmshplugins/mmshsettingsuiplugin/inc/mussipprofilemodel.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/inc/mussipprofilemodel.h Tue Aug 31 15:12:07 2010 +0300
@@ -12,7 +12,6 @@
* Contributors:
*
* Description: Class implementing SIP profile model.
-* Version : %version: 9 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -24,21 +23,25 @@
#include "mmussipprofilehandler.h"
#include <e32base.h>
+#include <sipmanagedprofile.h>
+#include <gsplugininterface.h>
#include <sipprofileregistryobserver.h>
-#include <sipobserver.h>
-#include <sipconnectionobserver.h>
+
class CSIPManagedProfileRegistry;
-class CMusSettingsModel;
+
/**
* CMusSIPProfileModel model class.
* Model class implementing SIP profile model.
+ *
+ * @since S60 v3.2
*/
-class CMusSIPProfileModel : public CBase,
- public MSIPProfileRegistryObserver,
- public MMusSIPProfileHandler
-{
+class CMusSIPProfileModel
+ :public CBase,
+ public MSIPProfileRegistryObserver,
+ public MMusSIPProfileHandler
+ {
public:
static CMusSIPProfileModel* NewL();
@@ -54,32 +57,17 @@
* From MMusSIPProfileHandler.
* Returns the index of the default SIP profile.
* @return KErrNotFound, if one does not exist, otherwise index of the
- * default SIP profile.
+ * default SIP profile.
*/
- TInt DefaultProfileIndex();
+ virtual TInt DefaultProfileIndex();
/**
* From MMusSIPProfileHandler.
* Returns the id of the default SIP profile.
* @return KErrNotFound, if one does not exist, otherwise id of the
- * default SIP profile.
- */
- TUint32 DefaultProfileId();
-
- /*
- * Disables MUS profile
+ * default SIP profile.
*/
- void DisableProfileL();
-
- /*
- * Enables MUS profile
- */
- void EnableProfileL();
-
- /*
- * Checks, if MUS profile is enabled
- */
- TBool ProfileEnabledL();
+ virtual TUint32 DefaultProfileId();
/**
* From MMusSIPProfileHandler.
@@ -87,7 +75,7 @@
* @param aId Profile id
* @return Profile index or KErrNotFound if no matching profile is found.
*/
- TInt ProfileIndexByIdL( TUint32 aId );
+ virtual TInt ProfileIndexByIdL( TUint32 aId );
/**
* From MMusSIPProfileHandler.
@@ -95,19 +83,19 @@
* @param aIndex Profile index
* @return Profile id or KUnknownProfileId if no matching profile is found.
*/
- TUint32 ProfileIdByIndex( TUint aIndex );
+ virtual TUint32 ProfileIdByIndex( TUint aIndex );
/**
* From MMusSIPProfileHandler.
- * Returns a reference to the SIP profile array.
+ * Returns pointer to the SIP profile array, does not change ownership.
* Note that previously returned value goes out of scope after a new
* call to ProfileArrayL. So it is not advised to store return value
* in long persistent variable, but rather to be used like stack
* variables for safety.
*
- * @return Reference to internally cached SIP profile array.
+ * @return Pointer to internally cached SIP profile array.
*/
- RPointerArray<CSIPProfile>& ProfileArrayL();
+ virtual CArrayPtr<CSIPManagedProfile>* ProfileArrayL();
public: // From base class MSIPProfileRegistryObserver.
@@ -116,65 +104,68 @@
* SIP profile information event.
* @param aProfileId Id of SIP profile in question.
* @param aEvent Type of information event.
- */
- void ProfileRegistryEventOccurred(
+ */
+ virtual void ProfileRegistryEventOccurred(
TUint32 aSIPProfileId,
TEvent aEvent );
- /**
- * From MSIPProfileRegistryObserver.
- * An asynchronous error has occurred related to SIP profile.
- * @param aSIPProfileId Id of the failed profile.
- * @param aError An error code.
- */
- void ProfileRegistryErrorOccurred(
- TUint32 aSIPProfileId,
- TInt aError );
-
-
-public:
-
- /**
- * Set CMusSettingsModel to handle ProfileRegistry Event.
- * @param aCMusSettingsModel the CMusSettingsModel to handle ProfileRegistry Event
- */
- void SetCMusSettingsModel(CMusSettingsModel* aCMusSettingsModel);
+ /**
+ * From MSIPProfileRegistryObserver.
+ * An asynchronous error has occurred related to SIP profile.
+ * @param aSIPProfileId Id of the failed profile.
+ * @param aError An error code.
+ */
+ virtual void ProfileRegistryErrorOccurred(
+ TUint32 aSIPProfileId,
+ TInt aError );
protected:
/**
+ * Reads the profile array from SIP Profile Client.
+ */
+ void ReadArrayFromEngineL();
+
+ /**
* Sorts internal array of SIP profiles by id.
*/
void SortProfilesL();
+ /**
+ * Deletes internally cached profiles.
+ */
+ void DeleteProfiles();
+
+ /**
+ * Reads profile list from the engine; if reading fails,
+ * keeps the old list safe.
+ */
+ void ReadProfileListFromEngineSafeL();
private:
CMusSIPProfileModel();
void ConstructL();
-
+
+ /**
+ * For deleting RPointerArray in case of leave.
+ */
+ static void ResetAndDestroy( TAny* aPointerArray );
private: // data
/**
- * Instance of the SIP profile registry engine for managing SIP profiles.
- * Own.
- */
+ * Instance of the SIP profile registry engine for managing SIP profiles.
+ * Own.
+ */
CSIPManagedProfileRegistry* iEngine;
/**
- * Locally cached array of SIP profiles.
- */
- RPointerArray<CSIPProfile> iProfiles;
-
- /**
- * CMusSettingsModel to handle ProfileRegistry
- * Event
- */
- CMusSettingsModel* iCMusSettingsModel;
-
-
+ * Locally cached array of SIP profiles.
+ * Own.
+ */
+ CArrayPtrFlat<CSIPManagedProfile>* iProfiles;
};
--- a/mmshplugins/mmshsettingsuiplugin/src/mussettingscontainer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/src/mussettingscontainer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -12,34 +12,31 @@
* Contributors:
*
* Description: Container for MUSSettingsPlugin.
-* Version : %version: be1sipx1#22 % << Don't touch! Updated by Synergy at check-out.
*
*/
-#include "mussettingscontainer.h"
-#include "mussettingsplugin.h"
-#include "mussettingsmodel.h"
-#include "gslistbox.h"
-#include "mussettingsplugin.hrh"
-#include <mussettingsuirsc.rsg>
-#include <aknlists.h>
-#include <akntitle.h>
-#include <aknnotewrappers.h>
-#include <csxhelp/msh.hlp.hrh>
-#include <gsfwviewuids.h>
-#include <StringLoader.h>
-#include <sipmanagedprofile.h>
-#include <ctsydomainpskeys.h>
-#include <e32property.h>
-#include <pathinfo.h>
+#include "mussettingscontainer.h"
+#include "mussettingsplugin.h"
+#include "mussettingsmodel.h"
+#include "gslistbox.h"
+#include "mussettingsplugin.hrh"
+#include <mussettingsuirsc.rsg>
+#include <aknlists.h>
+#include <akntitle.h>
+#include <aknnotewrappers.h>
+#include <csxhelp/msh.hlp.hrh>
+#include <gsfwviewuids.h>
+#include <StringLoader.h>
+#include <sipmanagedprofile.h>
+#include <ctsydomainpskeys.h>
+#include <e32property.h>
+#include <pathinfo.h>
-#ifdef RD_MULTIPLE_DRIVE
#include <CAknMemorySelectionDialogMultiDrive.h>
-#endif
/** default SIP profile is selected */
const TInt KDefaultSipProfile = 0;
@@ -65,7 +62,7 @@
{
MUS_LOG( "[MUSSET] -> CMusSettingsContainer::ConstructL()" )
- iOperatorVariant = MultimediaSharingSettings::OperatorVariantSettingL();
+ iOperatorVariant = iModel.VSSettingsOperatorVariantL();
iListBox = new( ELeave ) CAknSettingStyleListBox;
@@ -86,17 +83,17 @@
{
MUS_LOG( "[MUSSET] -> CMusSettingsContainer::~CMusSettingsContainer()" )
delete iActivationItems;
- delete iProfileItems;
- delete iAutoRecordItems;
- delete iNoteItems;
- delete iListboxItemArray;
+ delete iProfileItems;
+ delete iAutoRecordItems;
+ delete iListboxItemArray;
+ delete iNoteItems;
MUS_LOG( "[MUSSET] <- CMusSettingsContainer::~CMusSettingsContainer()" )
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Constructs a listbox from a specified resource id.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::ConstructListBoxL( TInt aResLbxId )
{
@@ -107,10 +104,17 @@
iListBox->Model()->SetItemTextArray( iListboxItemArray );
iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
- // OCC: removed "Automatic in home network" choice
- iActivationItems =
- iCoeEnv->ReadDesC16ArrayResourceL(
- R_OPERATOR_ACTIVATION_SETTING_PAGE_LBX );
+ if ( iOperatorVariant == MusSettingsKeys::EStandard )
+ {
+ iActivationItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_ACTIVATION_SETTING_PAGE_LBX );
+ }
+ else
+ {
+ iActivationItems =
+ iCoeEnv->ReadDesC16ArrayResourceL(
+ R_OPERATOR_ACTIVATION_SETTING_PAGE_LBX );
+ }
iAutoRecordItems = iCoeEnv->ReadDesC16ArrayResourceL(
R_VS_VIDEO_SAVING_SETTING_PAGE_LBX );
@@ -118,9 +122,17 @@
iProfileItems = iCoeEnv->ReadDesC16ArrayResourceL(
R_SIP_PROFILE_SETTING_PAGE_LBX );
- iNoteItems = iCoeEnv->ReadDesC16ArrayResourceL(
- R_VS_AUDIO_SETTING_PAGE_LBX );
-
+ if ( iOperatorVariant == MusSettingsKeys::EStandard )
+ {
+ iNoteItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_VS_AUDIO_SETTING_PAGE_LBX );
+ }
+ else
+ {
+ iNoteItems = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_VS_NOTE_SETTING_PAGE_LBX );
+ }
+
CreateListBoxItemsL();
// Operator variant mode needs some item should not be visible to user.
@@ -129,8 +141,7 @@
{
// Hide VS Activation Settings. If needed in future it can be made
// visible.
- //
- //HideItemsL( KGSSettIdVSActivation );
+ HideItemsL( KGSSettIdVSActivation );
// Hide SIP Profile choosing option.If needed in future it can be made
// visible.
HideItemsL( KGSSettIdSIPProfile );
@@ -139,9 +150,9 @@
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Populates listbox items.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::CreateListBoxItemsL()
{
@@ -162,9 +173,9 @@
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Updates a specified feature (item in listbox).
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::UpdateListBoxL( TInt aFeatureId )
{
@@ -181,19 +192,19 @@
{
MakeOperatorActivationItemL();
}
- break;
+ break;
case KGSSettIdSIPProfile:
MakeSIPProfileItemL();
break;
case KGSSettIdAutoRecord:
MakeAutoRecordItemL();
- break;
+ break;
case KGSSettIdRecordedVideoSaving:
- MakeRecordedVideoSavingItemL();
- break;
+ MakeRecordedVideoSavingItemL();
+ break;
case KGSSettIdNote:
- MakeNoteItemL();
- break;
+ MakeNoteItemL();
+ break;
default:
break;
}
@@ -203,116 +214,109 @@
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Generic method to add an item to listbox and make it visible.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::AddItemL( TInt aId, const TPtrC aText )
- {
- MUS_LOG( "[MUSSET] -> CMusSettingsContainer::AddItemL()" )
+ {
+ MUS_LOG( "[MUSSET] -> CMusSettingsContainer::AddItemL()" )
iListboxItemArray->SetDynamicTextL( aId, aText );
iListboxItemArray->SetItemVisibilityL( aId,
- CGSListBoxItemTextArray::EVisible );
- MUS_LOG( "[MUSSET] <- CMusSettingsContainer::AddItemL()" )
- }
+ CGSListBoxItemTextArray::EVisible );
+ MUS_LOG( "[MUSSET] <- CMusSettingsContainer::AddItemL()" )
+ }
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Adds activation setting item to listbox.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::MakeActivationItemL()
{
MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeActivationItemL()" )
- MusSettingsKeys::TActivation activation =
- MultimediaSharingSettings::ActivationSettingL();
-
- if ( activation != MusSettingsKeys::EAlwaysActive )
- {
- // We make sure that if someone has written to CenRep value bigger
- // than 1 (which after OCC changes means 'Off') we treat it as 'Off'.
- activation = MusSettingsKeys::EActiveInHomeNetworks;
- }
-
- AddItemL( KGSSettIdVSActivation, ( *iActivationItems )[ activation ] );
+ iVSActication = iModel.VSSettingsActivationL();
+ AddItemL( KGSSettIdVSActivation, ( *iActivationItems )[ iVSActication ] );
MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeActivationItemL()" )
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Adds operator specific activation setting item to listbox.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::MakeOperatorActivationItemL()
{
MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeOperatorActivationItemL()" )
-
- //sync with real value, if op specifig
- iModel.InitializeProfileEnablerL();
-
- MUS_LOG1( "Activation item=%d (0=VS enabled, 1=VS disabled)", iModel.ActivationItem() )
- AddItemL( KGSSettIdVSActivation, ( *iActivationItems )[ iModel.ActivationItem() ] );
+
+ iVSActication = iModel.VSSettingsActivationL();
+ if ( iVSActication == MusSettingsKeys::ENever ) // ==2
+ { // operator specific one is different from usual one
+ iVSActication = MusSettingsKeys::EActiveInHomeNetworks; //==1
+ }
+
+ AddItemL( KGSSettIdVSActivation, ( *iActivationItems )[ iVSActication ] );
MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeOperatorActivationItemL()" )
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Adds SIP profile setting item to settings listbox. Item will contain
// indication of [no SIP profile selected], [using default SIP profile] or
// [name of SIP profile specified to be used]
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::MakeSIPProfileItemL()
{
MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeSIPProfileItemL()" )
- TInt profile = MultimediaSharingSettings::SipProfileSettingL();
+ TInt profile = iModel.VSSettingsProfileL();
if ( profile != KDefaultSipProfile && profile != KNoSipProfileSelected )
{
- // profile id defined, get profile name
- HBufC* name = iModel.ProfileNameL( profile );
+ // profile id defined, get profile name
+ HBufC* name = iModel.ProfileNameL( profile );
- if ( name )
- {
- CleanupStack::PushL( name );
- AddItemL( KGSSettIdSIPProfile, *name );
- CleanupStack::PopAndDestroy( name );
- }
+ if ( name )
+ {
+ CleanupStack::PushL( name );
+ AddItemL( KGSSettIdSIPProfile, *name );
+ CleanupStack::PopAndDestroy( name );
+ }
else
- {
- // show profile value not selected
- AddItemL( KGSSettIdSIPProfile,
- ( *iProfileItems )[ CMusSettingsModel::KVsSipProfileSelectNone ] );
- }
- }
+ {
+ // show profile value not selected
+ AddItemL( KGSSettIdSIPProfile,
+ ( *iProfileItems )[ CMusSettingsModel::KVsSipProfileSelectNone ] );
+ }
+ }
else if ( profile == KNoSipProfileSelected )
{
AddItemL( KGSSettIdSIPProfile,
( *iProfileItems )[ CMusSettingsModel::KVsSipProfileSelectNone ] );
- }
+ }
else
{
- AddItemL(
- KGSSettIdSIPProfile,
- ( *iProfileItems )[ CMusSettingsModel::KVsSipProfileDefault ] );
- }
+ AddItemL(
+ KGSSettIdSIPProfile,
+ ( *iProfileItems )[ CMusSettingsModel::KVsSipProfileDefault ] );
+ }
MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeSIPProfileItemL()" )
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Adds autorecord item to listbox.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::MakeAutoRecordItemL()
{
MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeAutoRecordItemL()" )
- TInt autoRecordMode = MultimediaSharingSettings::AutoRecordSettingL();
+ TInt autoRecordMode = iModel.VSSettingsAutoRecordL();
MUS_LOG1( "[MUSSET] autoRecordMode: %d", autoRecordMode )
MUS_LOG1( "[MUSSET] iAutoRecordItems.Count: %d", iAutoRecordItems->Count() )
@@ -330,9 +334,9 @@
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Adds recorded video saving item to listbox.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::MakeRecordedVideoSavingItemL()
{
@@ -348,12 +352,12 @@
if ( index == KErrNotFound )
{
- MUS_LOG( "[MUSSET] Preferred drive doesn't exist anymore, " )
- MUS_LOG( "[MUSSET] e.g. remote drive deleted, using system drive" )
+ MUS_LOG( "[MUSSET] -> preferred drive doesn't exist anymore \
+(e.g. remote drive deleted), taking system drive..." )
driveNumber = RFs::GetSystemDrive();
index = dlg->FindIndexByDrive( driveNumber );
- MultimediaSharingSettings::SetVideoLocationSettingL( driveNumber );
+ iModel.SetVSSettingsRecordedVideoSavingL( driveNumber );
}
TFileName item( KNullDesC );
@@ -369,38 +373,38 @@
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Adds note item to listbox. (Alerts setting). Present only with operator
// variant set.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::MakeNoteItemL()
{
- MUS_LOG( "[MUSSET] -> CMusSettingsContainer::MakeNoteItemL()" )
+ MUS_LOG(
+ "[MUSSET] -> CMusSettingsContainer::MakeNoteItemL()" )
- MusSettingsKeys::TAuditoryNotification auditoryNotification =
- MultimediaSharingSettings::AuditoryNotificationSettingL();
+ TInt savingMode = iModel.VSSettingsNoteL();
- MUS_LOG1( "[MUSSET] -> CMusSettingsContainer::Mode:%d()",
- auditoryNotification )
+ MUS_LOG1( "[MUSSET] -> CMusSettingsContainer::Mode:%d()", savingMode );
// If unset, use and set default value
- if ( auditoryNotification < 0 || auditoryNotification > 1 )
- {
- auditoryNotification = MusSettingsKeys::EAuditoryNotificationOff;
- MultimediaSharingSettings::SetAuditoryNotificationSettingL(
- MusSettingsKeys::EAuditoryNotificationOff );
- }
+ if ( savingMode < 0 || savingMode > 1 )
+ {
+ savingMode = 0;
+ iModel.SetVSSettingsNoteL(
+ MusSettingsKeys::EAuditoryNotificationOff );
+ }
- AddItemL( KGSSettIdNote, ( *iNoteItems )[ auditoryNotification ] );
-
- MUS_LOG( "[MUSSET] <- CMusSettingsContainer::MakeNoteItemL()" )
+ AddItemL( KGSSettIdNote, ( *iNoteItems )[ savingMode ] );
+
+ MUS_LOG(
+ "[MUSSET] <- CMusSettingsContainer::MakeNoteItemL()" )
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Gets help context.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsContainer::GetHelpContext( TCoeHelpContext& aContext ) const
{
@@ -411,9 +415,9 @@
}
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
// Returns currently selected feature (listbox item).
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
TInt CMusSettingsContainer::CurrentFeatureId() const
{
@@ -422,48 +426,45 @@
}
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// If call is on, informs user with note that new profile is going to be active
// after current call.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsContainer::ShowNewProfileActiveAfterCallL()
{
MUS_LOG(
"[MUSSET] -> CMusSettingsContainer::ShowNewProfileActiveAfterCallL()" )
- TPSCTsyCallState callState;
- User::LeaveIfError( RProperty::Get( KPSUidCtsyCallInformation,
- KCTsyCallState,
- (TInt&)callState) );
-
- if ( callState == EPSCTsyCallStateAlerting ||
- callState == EPSCTsyCallStateRinging ||
- callState == EPSCTsyCallStateDialling ||
- callState == EPSCTsyCallStateAnswering ||
- callState == EPSCTsyCallStateDisconnecting ||
- callState == EPSCTsyCallStateConnected ||
- callState == EPSCTsyCallStateHold)
- {
- HBufC* infoTxt = StringLoader::LoadLC( R_QTN_MSH_SET_PROFILE_NOTE );
- CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue );
- note->ExecuteLD( infoTxt->Des() );
- CleanupStack::PopAndDestroy( infoTxt );
- }
-
- MUS_LOG(
- "[MUSSET] <- CMusSettingsContainer::ShowNewProfileActiveAfterCallL()" )
+ TPSCTsyCallState callState;
+ User::LeaveIfError( RProperty::Get( KPSUidCtsyCallInformation,
+ KCTsyCallState,
+ (TInt&)callState) );
+ if ( callState == EPSCTsyCallStateAlerting ||
+ callState == EPSCTsyCallStateRinging ||
+ callState == EPSCTsyCallStateDialling ||
+ callState == EPSCTsyCallStateAnswering ||
+ callState == EPSCTsyCallStateDisconnecting ||
+ callState == EPSCTsyCallStateConnected ||
+ callState == EPSCTsyCallStateHold)
+ {
+ HBufC* infoTxt = StringLoader::LoadLC( R_QTN_MSH_SET_PROFILE_NOTE );
+ CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue );
+ note->ExecuteLD( infoTxt->Des() );
+ CleanupStack::PopAndDestroy( infoTxt );
+ MUS_LOG(
+ "[MUSSET] <- CMusSettingsContainer::ShowNewProfileActiveAfterCallL()" )
+ }
}
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// void CMusSettingsContainer::HideItemsL(TInt aItemIndex)
// Some items are unwanted by operators.Hide those items from listbox item
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsContainer::HideItemsL(TInt aItemIndex)
{
MUS_LOG1("[MUSSET] -> CMusSettingsContainer::HideItemsL() %d",aItemIndex )
iListboxItemArray->SetItemVisibilityL( aItemIndex,
CGSListBoxItemTextArray::EInvisible );
- MUS_LOG("[MUSSET] <- CMusSettingsContainer::HideItemsL()" )
+ MUS_LOG("[MUSSET] <- CMusSettingsContainer::HideItemsL()" )
}
-
--- a/mmshplugins/mmshsettingsuiplugin/src/mussettingsmodel.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/src/mussettingsmodel.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -12,19 +12,18 @@
* Contributors:
*
* Description: Document model class for MUSSettingsPlugin.
-* Version : %version: 18 % << Don't touch! Updated by Synergy at check-out.
*
*/
+
+#include "mmussipprofilehandler.h"
#include "mussettingsmodel.h"
-#include "muslogger.h"
#include "mussipprofilemodel.h"
-#include "mussettings.h"
-#include "mmussipprofilehandler.h"
+#include "muslogger.h"
+#include <centralrepository.h>
+#include <escapeutils.h>
-#include <escapeutils.h>
-#include <centralrepository.h>
#include <CAknMemorySelectionDialogMultiDrive.h>
#include <AknCommonDialogsDynMem.h>
#include <mussettingsuirsc.rsg> // GUI Resource
@@ -40,10 +39,6 @@
// ======== MEMBER FUNCTIONS ========
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
CMusSettingsModel* CMusSettingsModel::NewL( MMusSIPProfileHandler& aHandler )
{
MUS_LOG( "[MUSSET] -> CMusSettingsModel::NewL()" )
@@ -57,10 +52,6 @@
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
CMusSettingsModel::CMusSettingsModel( MMusSIPProfileHandler& aHandler )
: iHandler( aHandler )
{
@@ -68,82 +59,224 @@
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
void CMusSettingsModel::ConstructL()
{
MUS_LOG( "[MUSSET] -> CMusSettingsModel::ConstructL()" )
- InitializeProfileEnablerL();
- static_cast<CMusSIPProfileModel*> (&iHandler)->SetCMusSettingsModel(this);
+ iMSSettingsKeys = new (ELeave) MultimediaSharingSettings;
MUS_LOG( "[MUSSET] <- CMusSettingsModel::ConstructL()" )
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
CMusSettingsModel::~CMusSettingsModel()
{
MUS_LOG( "[MUSSET] -> CMusSettingsModel::~CMusSettingsModel()" )
+ delete iMSSettingsKeys;
+ iMSSettingsKeys = NULL;
MUS_LOG( "[MUSSET] <- CMusSettingsModel::~CMusSettingsModel()" )
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// Returns operator variant mode (normal or operator specific. This is used for
+// runtime variation of Settings UI.
+// ----------------------------------------------------------------------------
+//
+MusSettingsKeys::TOperatorVariant CMusSettingsModel::VSSettingsOperatorVariantL()
+ {
+ MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsOperatorVariantL()" )
+
+ MusSettingsKeys::TOperatorVariant operatorVariant =
+ iMSSettingsKeys->OperatorVariantSettingL();
+
+ MUS_LOG1(
+ "[MUSSET] <- CMusSettingsContainer::VSSettingsOperatorVariantL()( %d )",
+ operatorVariant )
+ return operatorVariant;
+ }
+
+
+// ----------------------------------------------------------------------------
+// Returns VS activation mode.
+// ----------------------------------------------------------------------------
+//
+MusSettingsKeys::TActivation CMusSettingsModel::VSSettingsActivationL()
+ {
+ MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsActivationL()" )
+ MusSettingsKeys::TActivation activationMode =
+ iMSSettingsKeys->ActivationSettingL();
+ MUS_LOG1(
+ "[MUSSET] <- CMusSettingsContainer::VSSettingsActivationL()( %d )",
+ activationMode )
+ return activationMode;
+ }
+
+
+// ----------------------------------------------------------------------------
+// Returns SIP profile mode.
+// ----------------------------------------------------------------------------
+//
+TInt CMusSettingsModel::VSSettingsProfileL()
+ {
+ MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsProfileL()" )
+ TInt vsProfileMode = iMSSettingsKeys->SipProfileSettingL();
+ MUS_LOG1(
+ "[MUSSET] <- CMusSettingsContainer::VSSettingsProfileL()( %d )",
+ vsProfileMode )
+ return vsProfileMode;
+ }
+
+
+// ----------------------------------------------------------------------------
+// Returns video autorecord mode.
+// ----------------------------------------------------------------------------
+//
+MusSettingsKeys::TAutoRecord CMusSettingsModel::VSSettingsAutoRecordL()
+ {
+ MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsAutoRecordL()" )
+ MusSettingsKeys::TAutoRecord vsAutoRecordMode =
+ iMSSettingsKeys->AutoRecordSettingL();
+ MUS_LOG1(
+ "[MUSSET] <- CMusSettingsContainer::VSSettingsAutoRecordL()( %d )",
+ vsAutoRecordMode )
+ return vsAutoRecordMode;
+ }
+
+
+// ----------------------------------------------------------------------------
// Returns recorded video saving mode.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
TInt CMusSettingsModel::VSSettingsRecordedVideoSavingL()
{
MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsRecordedVideoSavingL()" )
- TInt vsVideoLocationMode = MultimediaSharingSettings::VideoLocationSettingL();
+ TInt vsVideoLocationMode = iMSSettingsKeys->VideoLocationSettingL();
MUS_LOG1(
- "[MUSSET] <- CMusSettingsModel::VSSettingsRecordedVideoSavingL()( %d )",
+ "[MUSSET] <- CMusSettingsContainer::VSSettingsRecordedVideoSavingL()( %d )",
vsVideoLocationMode )
return vsVideoLocationMode;
}
+
// ----------------------------------------------------------------------------
-// Change Activation.
+// Returns mode of audible note.
+// ----------------------------------------------------------------------------
+//
+MusSettingsKeys::TAuditoryNotification CMusSettingsModel::VSSettingsNoteL()
+ {
+ MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsNoteL()" )
+ MusSettingsKeys::TAuditoryNotification vsNoteMode =
+ iMSSettingsKeys->AuditoryNotificationSettingL();
+ MUS_LOG1(
+ "[MUSSET] <- CMusSettingsContainer::VSSettingsNoteL()( %d )",
+ vsNoteMode )
+ return vsNoteMode;
+ }
+
+
+// ----------------------------------------------------------------------------
+// Sets VS activation mode.
+// ----------------------------------------------------------------------------
+//
+void CMusSettingsModel::SetVSSettingsActivationL(
+ const MusSettingsKeys::TActivation aActivation)
+ {
+ MUS_LOG1(
+ "[MUSSET] -> CMusSettingsContainer::SetVSSettingsActivationL()( %d )",
+ aActivation )
+ iMSSettingsKeys->SetActivationSettingL( aActivation );
+ MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsActivationL()" )
+ }
+
+
+// ----------------------------------------------------------------------------
+// Sets SIP Profile mode.
+// ----------------------------------------------------------------------------
+//
+void CMusSettingsModel::SetVSSettingsProfileL( const TInt aProfile )
+ {
+ MUS_LOG1(
+ "[MUSSET] -> CMusSettingsContainer::SetVSSettingsProfileL()( %d )",
+ aProfile )
+ iMSSettingsKeys->SetSipProfileSettingL( aProfile );
+ MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsProfileL()" )
+ }
+
+
+// ----------------------------------------------------------------------------
+// Sets video autorecord mode.
// ----------------------------------------------------------------------------
//
-void CMusSettingsModel::SetActivationItem( TBool aActive )
+void CMusSettingsModel::SetVSSettingsAutoRecordL(
+ const MusSettingsKeys::TAutoRecord aAutoRecord )
{
- MUS_LOG( "[MUSSET] -> CMusSettingsModel::SetActivationItem()" )
- MUS_LOG1( " Profile disabled? ( %d )", aActive )
- iProfileDisabled = aActive;
- MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetActivationItem()" )
+ MUS_LOG1(
+ "[MUSSET] -> CMusSettingsContainer::SetVSSettingsAutoRecordL()( %d )",
+ aAutoRecord )
+ iMSSettingsKeys->SetAutoRecordSettingL( aAutoRecord );
+ MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsAutoRecordL()" )
}
+
// ----------------------------------------------------------------------------
-// Get Activation item.
+// Sets video location.
+// ----------------------------------------------------------------------------
+//
+void CMusSettingsModel::SetVSSettingsRecordedVideoSavingL(
+ const TInt aVideoLocation )
+ {
+ MUS_LOG1(
+ "[MUSSET] -> CMusSettingsContainer::SetVSSettingsRecordedVideoSavingL()( %d )",
+ aVideoLocation )
+ iMSSettingsKeys->SetVideoLocationSettingL( aVideoLocation );
+ MUS_LOG(
+ "[MUSSET] <- CMusSettingsModel::SetVSSettingsRecordedVideoSavingL()" )
+ }
+
+
+// ----------------------------------------------------------------------------
+// Sets mode of auditory note. In operator specific variants auditory note also
+// sets mode of popup notification setting.
// ----------------------------------------------------------------------------
//
-TBool CMusSettingsModel::ActivationItem()
+void CMusSettingsModel::SetVSSettingsNoteL(
+ const MusSettingsKeys::TAuditoryNotification aValue )
{
- MUS_LOG( "[MUSSET] -> CMusSettingsModel::ActivationItem()" )
- MUS_LOG( "[MUSSET] <- CMusSettingsModel::ActivationItem()" )
- return iProfileDisabled;
+ MUS_LOG1(
+ "[MUSSET] -> CMusSettingsContainer::SetVSSettingsNoteL()( %d )", aValue )
+ iMSSettingsKeys->SetAuditoryNotificationSettingL( aValue );
+
+ if ( VSSettingsOperatorVariantL() == MusSettingsKeys::EOperatorSpecific )
+ {
+ if ( MusSettingsKeys::EAuditoryNotificationOn == aValue )
+ {
+ iMSSettingsKeys->SetPopupNotificationSettingL(
+ MusSettingsKeys::EPopupNotificationOn );
+ }
+ else
+ {
+ iMSSettingsKeys->SetPopupNotificationSettingL(
+ MusSettingsKeys::EPopupNotificationOff );
+ }
+ }
}
+
// -----------------------------------------------------------------------------
// Returns the list of profile names
// -----------------------------------------------------------------------------
CDesCArray* CMusSettingsModel::ListOfProfileNamesL()
{
MUS_LOG( "[MUSSET] -> CMusSettingsModel::ListOfProfileNamesL()" )
- RPointerArray<CSIPProfile>& list = iHandler.ProfileArrayL();
+ CArrayPtr<CSIPManagedProfile>* list = iHandler.ProfileArrayL();
CDesCArray* array = new ( ELeave ) CDesCArrayFlat( KSIPGranularity );
CleanupStack::PushL( array );
- for ( TInt i = 0; i < list.Count(); i++ )
+ for ( TInt i = 0; i < list->Count(); i++ )
{
const TDesC8* providerName = 0;
User::LeaveIfError(
- list[i]->GetParameter( KSIPProviderName, providerName ) );
+ list->At(i)->GetParameter( KSIPProviderName, providerName ) );
HBufC8* decodedProvider =
EscapeUtils::EscapeDecodeL( *providerName );
@@ -171,7 +304,7 @@
HBufC* CMusSettingsModel::ProfileNameL( TInt aId )
{
MUS_LOG1(
- "[MUSSET] -> CMusSettingsModel::ProfileNameL()( %d )",
+ "[MUSSET] -> CMusSettingsContainer::ProfileNameL()( %d )",
aId )
const TDesC8* providerName = 0;
TInt index = ProfileIndexByIdL( aId );
@@ -179,7 +312,7 @@
if ( index >= 0 )
{
- if ( KErrNone == iHandler.ProfileArrayL()[index]->
+ if ( KErrNone == iHandler.ProfileArrayL()->At( index )->
GetParameter( KSIPProviderName, providerName ) )
{
HBufC8* decodedProvider =
@@ -202,9 +335,9 @@
}
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// Returns default SIP profile index.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
TInt CMusSettingsModel::DefaultProfileIndex()
{
MUS_LOG( "[MUSSET] <- CMusSettingsModel::DefaultProfileIndex()" )
@@ -212,9 +345,9 @@
}
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// Returns id of default SIP profile.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
TUint32 CMusSettingsModel::DefaultProfileId()
{
MUS_LOG( "[MUSSET] <- CMusSettingsModel::DefaultProfileId()" )
@@ -222,9 +355,9 @@
}
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// Returns SIP profile index based on the Id of SIP profile.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
TInt CMusSettingsModel::ProfileIndexByIdL( TUint32 aId )
{
MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileIndexByIdL()" )
@@ -232,41 +365,19 @@
}
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// Returns SIP profile Id based on the index of SIP profile.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
TUint32 CMusSettingsModel::ProfileIdByIndex( TUint aIndex )
{
MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileIdByIndex()" )
return iHandler.ProfileIdByIndex( aIndex );
}
-// -----------------------------------------------------------------------------
-// Initialize SIP profile enabler data.
-// -----------------------------------------------------------------------------
-void CMusSettingsModel::InitializeProfileEnablerL()
- {
- MUS_LOG( "[MUSSET] -> CMusSettingsModel::InitializeProfileEnabler()" )
- if ( MultimediaSharingSettings::OperatorVariantSettingL() ==
- MusSettingsKeys::EOperatorSpecific )
- {
- TBool enabled(EFalse);
-
- CMusSIPProfileModel& handler =
- static_cast<CMusSIPProfileModel&>( iHandler );
- TRAPD( error, enabled = handler.ProfileEnabledL());
- enabled = error != KErrNone ? EFalse : enabled;
- MUS_LOG2("SIP registration service( %d ), error( %d )", enabled, error )
- //profile enabled - activation disabled = false
- //profile disabled - activation disabled = true
- SetActivationItem( !enabled );
- }
- MUS_LOG( "[MUSSET] <- CMusSettingsModel::InitializeProfileEnabler()" )
- }
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// Returns memory selction dialog pointer.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
CAknMemorySelectionDialogMultiDrive* CMusSettingsModel::MemorySelectionDialogLC()
{
MUS_LOG( "[MUSSET] -> CMusSettingsModel::MemorySelectionDialogLC()" )
--- a/mmshplugins/mmshsettingsuiplugin/src/mussettingsplugin.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/src/mussettingsplugin.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -12,7 +12,6 @@
* Contributors:
*
* Description: MUSSettingsPlugin implementation.
-* Version : %version: be1sipx1#38 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -55,20 +54,13 @@
// ======== MEMBER FUNCTIONS ========
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
CMusSettingsPlugin::CMusSettingsPlugin()
: iResources( *iCoeEnv )
{
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::CMusSettingsPlugin()" )
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
+
CMusSettingsPlugin::~CMusSettingsPlugin()
{
MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::~CMusSettingsPlugin()" )
@@ -79,31 +71,29 @@
delete iContainer;
iContainer = NULL;
}
-
- CloseResourceFile();
+
+ iResources.Close();
delete iModel;
iModel = NULL;
delete iHandler;
iHandler = NULL;
delete iDiskNotifyHandler;
- delete iCaption;
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::~CMusSettingsPlugin()" )
}
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
+
void CMusSettingsPlugin::ConstructL()
{
MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::ConstructL()" )
FeatureManager::InitializeLibL();
-
- iResourceFileOpen = false;
- OpenResourceFileL();
+ HBufC* fileName = MusResourceFinderUtil::ResourcePathL(
+ KVSSettingsResourceFileName );
+ TFileName fName(*fileName);
+ delete fileName;
+ MUS_LOG_TDESC( "[MUSSET] Resource FileName ",fName )
+ iResources.OpenL(fName);
MUS_LOG( "[MUSSET] Constructing the Base " )
BaseConstructL( R_GS_VS_VIEW );
iHandler = CMusSIPProfileModel::NewL();
@@ -111,20 +101,11 @@
iModel = CMusSettingsModel::NewL( *iHandler );
iDiskNotifyHandler = CDiskNotifyHandler::NewL( *this,
iEikonEnv->FsSession() );
- // Subscribe disk notifications
- User::LeaveIfError( iDiskNotifyHandler->NotifyDisk() );
-
- iCaption = StringLoader::LoadL( R_GS_VS_PLUGIN_CAPTION );
- CloseResourceFile();
-
+ User::LeaveIfError( iDiskNotifyHandler->NotifyDisk() ); // Subscribe disk notifications
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::ConstructL()" )
}
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
+
CMusSettingsPlugin* CMusSettingsPlugin::NewL( TAny* /*aInitParams*/ )
{
MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::NewL()" )
@@ -136,10 +117,11 @@
return self;
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// From class CAknView.
// Returns UID of *this* settings plugin.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
TUid CMusSettingsPlugin::Id() const
{
@@ -148,10 +130,11 @@
return KGSVSSettingsPluginUID;
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// Hides non-virtual member from base class CGSBaseView.
// Handles a change in client rectangle size.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::HandleClientRectChange()
{
@@ -163,10 +146,11 @@
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::HandleClientRectChange()" )
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// From class CAknView.
// Called by framework when *this* control is to be activated/focused.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::DoActivateL(
const TVwsViewId& aPrevViewId,
@@ -174,39 +158,69 @@
const TDesC8& aCustomMessage )
{
MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::DoActivateL()" )
- OpenResourceFileL();
CGSBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::DoActivateL()" )
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// From class CAknView.
// Called by framework when *this* control is to be deactivated.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::DoDeactivate()
{
MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::DoDeactivate()" )
CGSBaseView::DoDeactivate();
- CloseResourceFile();
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::DoDeactivate()" )
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// From class CAknView.
// Handles a user selected menu command.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::HandleCommandL( TInt aCommand )
{
MUS_LOG1( "[MUSSET] -> CMusSettingsPlugin::HandleCommandL()( %d )",
aCommand )
+ CMusSettingsContainer& container =
+ *static_cast<CMusSettingsContainer*>( iContainer );
+ const TInt currentItem = container.CurrentFeatureId();
+
switch ( aCommand )
{
case EGSMSKCmdAppChange:
-// case EGSCmdAppChange:
+ case EGSCmdAppChange:
{
- HandleListBoxSelectionL();
+ if ( currentItem == KGSSettIdVSActivation
+ && aCommand == EGSCmdAppChange )
+ {
+ if ( iModel->VSSettingsOperatorVariantL() ==
+ MusSettingsKeys::EOperatorSpecific )
+ {
+ ShowOperatorSpecificActivationSettingDialogL();
+ }
+ else
+ {
+ ShowVSSettingsActivationSettingDialogL();
+ }
+ }
+ else if ( currentItem == KGSSettIdRecordedVideoSaving
+ && aCommand == EGSCmdAppChange )
+ {
+ ShowVSSettingsRecordedVideoSavingSettingDialogL();
+ }
+ else if ( KGSSettIdNote == currentItem
+ && EGSCmdAppChange == aCommand )
+ {
+ ShowVSSettingsNoteSettingDialogL();
+ }
+ else
+ {
+ HandleListBoxSelectionL();
+ }
break;
}
@@ -235,26 +249,26 @@
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::HandleCommandL()" )
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// From class CGSPluginInterface.
// Gets caption text of *this* plugin.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::GetCaptionL( TDes& aCaption ) const
{
MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::GetCaptionL()" )
- if ( iCaption && iCaption->Length() <= aCaption.MaxLength() )
- {
- aCaption.Copy( *iCaption );
- }
-
+ HBufC* result = StringLoader::LoadL( R_GS_VS_PLUGIN_CAPTION );
+ aCaption.Copy( *result );
+ delete result;
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::GetCaptionL()" )
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// From class CGSPluginInterface.
// Returns provider category of *this* plugin.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
TInt CMusSettingsPlugin::PluginProviderCategory() const
{
@@ -262,10 +276,11 @@
return KGSPluginProviderInternal;
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// From class MEikMenuObserver.
// Called by framework before creating menus
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::DynInitMenuPaneL( TInt aResourceId,
CEikMenuPane* aMenuPane )
@@ -279,11 +294,12 @@
}
}
}
+
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// From MDiskNotifyHandlerCallback
// Called by framework When disk status changed
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::HandleNotifyDisk( TInt /*aError*/,
const TDiskEvent& /*aEvent*/ )
@@ -303,10 +319,11 @@
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::HandleNotifyDisk()" )
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// From class CGSBaseView.
// Called by GS framework to create a GS container for *this* plugin.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::NewContainerL()
{
@@ -314,10 +331,11 @@
iContainer = new( ELeave ) CMusSettingsContainer( *iModel );
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// From class CGSBaseView.
// Handles users "middle click" aka MSK on selected feature.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::HandleListBoxSelectionL()
{
@@ -325,35 +343,61 @@
CMusSettingsContainer& container =
*static_cast<CMusSettingsContainer*>( iContainer );
const TInt currentItem = container.CurrentFeatureId();
- MUS_LOG1( "[MUSSET] Item selected: ", currentItem )
+
+ RDebug::Print( _L(
+ "[CMusSettingsPlugin] Item selected: %d" ),
+ currentItem );
+
+ MusSettingsKeys::TOperatorVariant operatorVarValue =
+ iModel->VSSettingsOperatorVariantL();
switch ( currentItem )
{
case KGSSettIdVSActivation:
{
- SwitchOnOffValueL( KGSSettIdVSActivation );
- break;
+ if ( operatorVarValue == MusSettingsKeys::EOperatorSpecific )
+ {
+ SwitchOnOffValueL( KGSSettIdVSActivation );
+ container.UpdateListBoxL( KGSSettIdVSActivation );
+ }
+ else
+ {
+ ShowVSSettingsActivationSettingDialogL();
+ }
+ break;
}
+
case KGSSettIdSIPProfile:
{
ShowVSSettingsProfileSettingDialogL();
break;
}
+
case KGSSettIdAutoRecord:
{
SwitchOnOffValueL( KGSSettIdAutoRecord );
- break;
+ container.UpdateListBoxL( KGSSettIdAutoRecord );
+ break;
}
+
case KGSSettIdRecordedVideoSaving:
{
- ShowVSSettingsRecordedVideoSavingSettingDialogL();
- break;
+
+ ShowVSSettingsRecordedVideoSavingSettingDialogL();
+
+// SwitchOnOffValueL( KGSSettIdRecordedVideoSaving );
+// container.UpdateListBoxL( KGSSettIdRecordedVideoSaving );
+
+ break;
}
+
case KGSSettIdNote:
{
- SwitchOnOffValueL( KGSSettIdNote );
- break;
+ SwitchOnOffValueL( KGSSettIdNote );
+ container.UpdateListBoxL( KGSSettIdNote );
+ break;
}
+
default:
{
break;
@@ -362,11 +406,12 @@
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::HandleListBoxSelectionL()" )
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// From class CGSBaseView.
// Returns container class of *this* plugin. iContainer is always garanteed to
// be of type CMusSettingsContainer*.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
CMusSettingsContainer* CMusSettingsPlugin::Container()
{
@@ -374,17 +419,115 @@
return static_cast<CMusSettingsContainer*>( iContainer );
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// Shows a dialog for user to modify VS activation setting. Note that this
+// method has an alternative method for operator specific variant.
+// ----------------------------------------------------------------------------
+//
+void CMusSettingsPlugin::ShowVSSettingsActivationSettingDialogL()
+ {
+ MUS_LOG(
+ "[MUSSET] -> CMusSettingsPlugin::ShowVSSettingsActivationSettingDialogL()"
+ )
+
+ MusSettingsKeys::TActivation currentValue =
+ iModel->VSSettingsActivationL();
+
+ CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_ACTIVATION_SETTING_PAGE_LBX );
+
+ CleanupStack::PushL( items );
+ TInt intCurrentValue = static_cast<TInt>( currentValue );
+
+ CAknRadioButtonSettingPage* dlg =
+ new ( ELeave ) CAknRadioButtonSettingPage(
+ R_ACTIVATION_SETTING_PAGE,
+ intCurrentValue,
+ items);
+
+ if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+ {
+ currentValue =
+ static_cast<MusSettingsKeys::TActivation>( intCurrentValue );
+
+ iModel->SetVSSettingsActivationL( currentValue );
+ Container()->UpdateListBoxL( KGSSettIdVSActivation );
+ }
+
+ CleanupStack::PopAndDestroy( items );
+ MUS_LOG(
+ "[MUSSET] <- CMusSettingsPlugin::ShowVSSettingsActivationSettingDialogL()" )
+ }
+
+
+// ----------------------------------------------------------------------------
+// Shows a dialog for user to modify VS activation setting. Note that this
+// method is used only for operator specific variant. Alternative method for
+// "standard" variant exists. Note that because standard variant contains 3
+// different values and operator variant contains only 2 values (0,2) the value
+// 2 (MusSettingsKeys::ENever) is converted to value 1
+// (MusSettingsKeys::EActiveInHomeNetworks) in operator variant just before
+// showing the dialog. After showing the dialog the conversion mentioned above
+// is reversed. This temporarily conversion is done solely to use values 0 and
+// 1 for direct mapping to items array.
+// ----------------------------------------------------------------------------
+//
+void CMusSettingsPlugin::ShowOperatorSpecificActivationSettingDialogL()
+ {
+ MUS_LOG(
+ "[MUSSET] -> CMusSettingsPlugin::ShowOperatorSpecificActivationSettingDialogL()"
+ )
+
+ MusSettingsKeys::TActivation currentValue =
+ iModel->VSSettingsActivationL();
+
+ if ( currentValue == MusSettingsKeys::ENever )
+ {
+ currentValue = MusSettingsKeys::EActiveInHomeNetworks;
+ }
+
+ CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
+ R_OPERATOR_ACTIVATION_SETTING_PAGE_LBX);
+
+ CleanupStack::PushL( items );
+ TInt intCurrentValue = static_cast<TInt>(currentValue);
+
+ CAknRadioButtonSettingPage* dlg =
+ new ( ELeave ) CAknRadioButtonSettingPage(
+ R_ACTIVATION_SETTING_PAGE,
+ intCurrentValue,
+ items );
+
+ if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+ {
+ currentValue =
+ static_cast<MusSettingsKeys::TActivation>( intCurrentValue );
+ if ( currentValue == MusSettingsKeys::EActiveInHomeNetworks )
+ {
+ currentValue = MusSettingsKeys::ENever;
+ }
+ iModel->SetVSSettingsActivationL( currentValue );
+ Container()->UpdateListBoxL( KGSSettIdVSActivation );
+ }
+
+ CleanupStack::PopAndDestroy( items );
+ MUS_LOG(
+ "[MUSSET] <- CMusSettingsPlugin::ShowOperatorSpecificActivationSettingDialogL()" )
+ }
+
+
+// ----------------------------------------------------------------------------
// Shows SIP profile setting dialog (i.e. "use default profile" or "select
// profile from list"). If select profile from list is selected, a list of
// SIP profiles is provided for user to choose wanted SIP profile.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::ShowVSSettingsProfileSettingDialogL()
{
MUS_LOG(
"[MUSSET] -> CMusSettingsPlugin::ShowVSSettingsProfileSettingDialogL()" )
- TInt cenRepValue = MultimediaSharingSettings::SipProfileSettingL();
+ TInt cenRepValue = iModel->VSSettingsProfileL();
TInt profileMode = CMusSettingsModel::KVsSipProfileDefault;
if ( cenRepValue != CMusSettingsModel::KVsSipProfileDefault )
{
@@ -405,29 +548,29 @@
if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
{
if ( profileMode == CMusSettingsModel::KVsSipProfileDefault )
- {
- if ( oldProfileMode != profileMode )
- {
- MultimediaSharingSettings::SetSipProfileSettingL(
- CMusSettingsModel::KVsSipProfileDefault );
- Container()->ShowNewProfileActiveAfterCallL();
- Container()->UpdateListBoxL( KGSSettIdSIPProfile );
- }
- }
+ {
+ if ( oldProfileMode != profileMode )
+ {
+ iModel->SetVSSettingsProfileL(
+ CMusSettingsModel::KVsSipProfileDefault );
+ Container()->ShowNewProfileActiveAfterCallL();
+ Container()->UpdateListBoxL( KGSSettIdSIPProfile );
+ }
+ }
else
- {
+ {
ShowVSSettingsSelectSipProfileDialogL();
- }
+ }
}
CleanupStack::PopAndDestroy( items );
MUS_LOG(
"[MUSSET] <- CMusSettingsPlugin::ShowVSSettingsProfileSettingDialogL()" )
}
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// Provides user a list of SIP profiles to select from. If no SIP profiles
// exist an error note is displayed.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::ShowVSSettingsSelectSipProfileDialogL()
{
@@ -436,48 +579,50 @@
CleanupStack::PushL( array );
if ( array->Count() < 1 )
- {
- ShowNoProfilesNotificationL();
- }
+ {
+ ShowNoProfilesNotificationL();
+ }
else
- {
- TInt selectedIndex = iModel->ProfileIndexByIdL(
- MultimediaSharingSettings::SipProfileSettingL() );
- TInt currentIndex ( selectedIndex );
+ {
+ TInt selectedIndex = iModel->ProfileIndexByIdL(
+ iModel->VSSettingsProfileL() );
+ TInt currentIndex ( selectedIndex );
- if ( selectedIndex == KErrNotFound )
- {
- // first profile in the list
- selectedIndex = CMusSettingsModel::KVsSipProfileDefault;
- }
+ if ( selectedIndex == KErrNotFound )
+ {
+ // first profile in the list
+ selectedIndex = CMusSettingsModel::KVsSipProfileDefault;
+ }
- // Create and display the pop-up list
- CAknRadioButtonSettingPage* defaultPopUp =
- new ( ELeave ) CAknRadioButtonSettingPage(
- R_VS_SIP_PROFILE_LIST_VIEW_SELECT_SETTING_PAGE,
- selectedIndex,
- array );
- if ( defaultPopUp->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
- {
- if ( selectedIndex != currentIndex )
- {
- // User has changed the selected profile, set new
- // setting to persistent storage
- TUint newValue = iModel->ProfileIdByIndex( selectedIndex );
- MultimediaSharingSettings::SetSipProfileSettingL( newValue );
- Container()->ShowNewProfileActiveAfterCallL();
- Container()->UpdateListBoxL( KGSSettIdSIPProfile );
- }
- }
- }
+ // Create and display the pop-up list
+ CAknRadioButtonSettingPage* defaultPopUp =
+ new ( ELeave ) CAknRadioButtonSettingPage(
+ R_VS_SIP_PROFILE_LIST_VIEW_SELECT_SETTING_PAGE,
+ selectedIndex,
+ array );
+ if ( defaultPopUp->ExecuteLD(
+ CAknSettingPage::EUpdateWhenChanged ) )
+ {
+ if ( selectedIndex != currentIndex )
+ {
+ // User has changed the selected profile, set new
+ // setting to persistent storage
+ TUint newValue = iModel->ProfileIdByIndex( selectedIndex );
+ iModel->SetVSSettingsProfileL( newValue );
+ Container()->ShowNewProfileActiveAfterCallL();
+ Container()->UpdateListBoxL( KGSSettIdSIPProfile );
+ }
+ }
+ }
CleanupStack::PopAndDestroy( array ); // array
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// Provides a dialog for user to choose saving location for recorderded video.
// (locations are naturally phone memory or memory card).
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::ShowVSSettingsRecordedVideoSavingSettingDialogL()
{
@@ -487,9 +632,20 @@
TParsePtrC( PathInfo::PhoneMemoryRootPath() ).Drive() );
TDriveUnit mmcUnit( TParsePtrC( PathInfo::MemoryCardRootPath() ).Drive() );
TInt currentValue = iModel->VSSettingsRecordedVideoSavingL();
+
+
+ CAknMemorySelectionDialogMultiDrive* dlg =
+ iModel->MemorySelectionDialogLC();
+
+ // Use ECFDDialogTypeSave to have double list box in the query
+/* CAknMemorySelectionDialog* dlg = CAknMemorySelectionDialog::NewL(
+ ECFDDialogTypeSave,
+ R_VS_RECORDED_VIDEO_SAVING_SETTING_PAGE,
+ EFalse );
+ CleanupStack::PushL( dlg );
+*/
+
- CAknMemorySelectionDialogMultiDrive* dlg =
- iModel->MemorySelectionDialogLC();
TBool result( EFalse );
TDriveNumber driveNumber((TDriveNumber)currentValue);
@@ -498,37 +654,67 @@
if ( result != CAknCommonDialogsBase::TReturnKey(
CAknCommonDialogsBase::ERightSoftkey) )
{
- if ( /*( TInt )*/ driveNumber != currentValue )
+ if ( ( TInt ) driveNumber != currentValue )
{
- MultimediaSharingSettings::SetVideoLocationSettingL( ( TInt ) driveNumber );
+ iModel->SetVSSettingsRecordedVideoSavingL( ( TInt ) driveNumber );
}
Container()->UpdateListBoxL( KGSSettIdRecordedVideoSaving );
}
+/* CAknMemorySelectionDialog::TMemory mem;
+ if ( currentValue == ( TInt )mmcUnit )
+ {
+ mem = CAknMemorySelectionDialog::EMemoryCard;
+ }
+ else
+ {
+ mem = CAknMemorySelectionDialog::EPhoneMemory;
+ }
+
+ TFileName ignore;
+ TFileName path;
+
+ if ( dlg->ExecuteL( mem, &path, &ignore ) )
+ {
+ if ( mem == CAknMemorySelectionDialog::EPhoneMemory
+ && currentValue != ( TInt ) phoneMemUnit )
+ {
+ iModel->SetVSSettingsRecordedVideoSavingL( ( TInt )phoneMemUnit );
+ Container()->UpdateListBoxL( KGSSettIdRecordedVideoSaving );
+ }
+ else if ( mem == CAknMemorySelectionDialog::EMemoryCard
+ && currentValue != ( TInt )mmcUnit )
+ {
+ iModel->SetVSSettingsRecordedVideoSavingL( ( TInt )mmcUnit );
+ Container()->UpdateListBoxL( KGSSettIdRecordedVideoSaving );
+ }
+ }
+*/
+
CleanupStack::PopAndDestroy(dlg);
MUS_LOG(
"[MUSSET] <- CMusSettingsPlugin::ShowVSSettingsRecordedVideoSavingSettingDialogL()" )
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// In standard variant provides user a "Capability auditory note" setting
// dialog, and in operator variant provides user an "Alerts" setting dialog.
// Note that in both variants the different dialogs toggle the same setting.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::ShowVSSettingsNoteSettingDialogL()
{
MUS_LOG(
"[MUSSET] -> CMusSettingsPlugin::ShowVSSettingsNoteSettingDialogL()" )
MusSettingsKeys::TAuditoryNotification currentValue =
- MultimediaSharingSettings::AuditoryNotificationSettingL();
+ iModel->VSSettingsNoteL();
TInt intCurrentValue = static_cast<TInt>( currentValue );
CAknRadioButtonSettingPage* dlg;
CDesCArrayFlat* items;
- if ( MultimediaSharingSettings::OperatorVariantSettingL() ==
- MusSettingsKeys::EStandard )
+ if ( iModel->VSSettingsOperatorVariantL() == MusSettingsKeys::EStandard )
{
items = iCoeEnv->ReadDesC16ArrayResourceL(
R_VS_AUDIO_SETTING_PAGE_LBX );
@@ -552,9 +738,9 @@
if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
{
currentValue =
- static_cast<MusSettingsKeys::TAuditoryNotification>( intCurrentValue );
- MultimediaSharingSettings::SetAuditoryNotificationSettingL(
- currentValue );
+ static_cast<MusSettingsKeys::TAuditoryNotification>
+ ( intCurrentValue );
+ iModel->SetVSSettingsNoteL( currentValue );
Container()->UpdateListBoxL( KGSSettIdNote );
}
@@ -563,9 +749,10 @@
"[MUSSET] <- CMusSettingsPlugin::ShowVSSettingsNoteSettingDialogL()" )
}
-// -----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
// Shows a notifications that no SIP profiles exists.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMusSettingsPlugin::ShowNoProfilesNotificationL()
{
@@ -577,133 +764,84 @@
MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::ShowNoProfilesNotificationL()" )
}
-// -----------------------------------------------------------------------------
+
+// ---------------------------------------------------------------------------
// Switches between two possible values from one to another (i.e. toggles a
// setting on/off). Toggled setting is passed in aValue parameter.
-// -----------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
//
void CMusSettingsPlugin::SwitchOnOffValueL( TInt aValue )
{
- MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::SwitchOnOffValueL()" )
-
switch( aValue )
- {
- case KGSSettIdVSActivation:
- {
- MusSettingsKeys::TOperatorVariant operatorVarValue =
- MultimediaSharingSettings::OperatorVariantSettingL();
-
- if ( operatorVarValue == MusSettingsKeys::EOperatorSpecific )
- {
-
- TInt aCallCount = 0;
- RProperty::Get( NMusSessionInformationApi::KCategoryUid,
- NMusSessionInformationApi::KMusCallCount,
- aCallCount );
- MUS_LOG1( "[MUSSET] CallCount ( %d )", aCallCount)
- if ( aCallCount == 0 )
- {
- MUS_LOG( "[MUSSET] no calls. Set VS on/off" )
- TBool enabled = EFalse;
- TRAPD( error, enabled = iHandler->ProfileEnabledL( ));
- MUS_LOG2( "[MUSSET] VS now %d (err=%d)", enabled, error )
- if ( !error )
- {
- if( enabled ) //currently enabled => disable
- {
- TRAPD( error, iHandler->DisableProfileL() );
- MUS_LOG1( "[MUSSET] VS is off (err=%d)", error )
- //activation disabled = true
- iModel->SetActivationItem( enabled );
-
- if ( error == KErrNone )
- {
- MUS_LOG( "[MUSSET] Activation setting set off" )
- //MusSettingsKeys::ENever = 2 can not be used anymore
- //EActiveInHomeNetworks = 1 is used instead -> off
- MultimediaSharingSettings::SetActivationSettingL(
- MusSettingsKeys::EActiveInHomeNetworks );
- }
- }
- else//currently disabled => enable
- {
- TRAPD( error, iHandler->EnableProfileL() );
- MUS_LOG1( "[MUSSET] VS is on (err=%d)", error )
- //if failed activation disabled = true
- enabled = error != KErrNone;
- //activation disabled = false/true(if failed)
- iModel->SetActivationItem( enabled );
-
- if ( error == KErrNone )
- {
- MUS_LOG( "[MUSSET] Activation setting set on" )
- MultimediaSharingSettings::SetActivationSettingL(
- MusSettingsKeys::EAlwaysActive );
- }
- }
- }
- }
- }
- else
- {
- if ( MusSettingsKeys::EAlwaysActive ==
- MultimediaSharingSettings::ActivationSettingL() )
- {
- MUS_LOG( "[MUSSET] Activation setting set off" )
- //MusSettingsKeys::ENever = 2 can not be used anymore
- //EActiveInHomeNetworks = 1 is used instead -> off
- MultimediaSharingSettings::SetActivationSettingL(
- MusSettingsKeys::EActiveInHomeNetworks );
- }
- else
- {
- MUS_LOG( "[MUSSET] Activation setting set on" )
- MultimediaSharingSettings::SetActivationSettingL(
- MusSettingsKeys::EAlwaysActive );
- }
- }
- break;
- }
- case KGSSettIdAutoRecord:
- {
- if ( MusSettingsKeys::EAutoRecordOff ==
- MultimediaSharingSettings::AutoRecordSettingL() )
- {
- MultimediaSharingSettings::SetAutoRecordSettingL(
- MusSettingsKeys::EAutoRecordOn );
- }
- else
- {
- MultimediaSharingSettings::SetAutoRecordSettingL(
- MusSettingsKeys::EAutoRecordOff );
- }
- break;
- }
- case KGSSettIdNote:
- {
- if ( MusSettingsKeys::EAuditoryNotificationOn ==
- MultimediaSharingSettings::AuditoryNotificationSettingL() )
- {
- MultimediaSharingSettings::SetAuditoryNotificationSettingL(
- MusSettingsKeys::EAuditoryNotificationOff );
- }
- else
- {
- MultimediaSharingSettings::SetAuditoryNotificationSettingL(
- MusSettingsKeys::EAuditoryNotificationOn );
- }
- break;
- }
- default:
- {
- MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::SwitchOnOffValueL() - error unknown setting" )
- User::Leave( KErrArgument );
- }
- }
-
- Container()->UpdateListBoxL( aValue );
-
- MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::SwitchOnOffValueL()" )
+ {
+ case KGSSettIdVSActivation:
+ {
+ if ( MusSettingsKeys::EAlwaysActive
+ == iModel->VSSettingsActivationL() )
+ {
+ iModel->SetVSSettingsActivationL( MusSettingsKeys::ENever );
+ }
+ else
+ {
+ iModel->SetVSSettingsActivationL(
+ MusSettingsKeys::EAlwaysActive );
+ }
+ break;
+ }
+ case KGSSettIdAutoRecord:
+ {
+ if ( MusSettingsKeys::EAutoRecordOff ==
+ iModel->VSSettingsAutoRecordL() )
+ {
+ iModel->SetVSSettingsAutoRecordL(
+ MusSettingsKeys::EAutoRecordOn );
+ }
+ else
+ {
+ iModel->SetVSSettingsAutoRecordL(
+ MusSettingsKeys::EAutoRecordOff );
+ }
+ break;
+ }
+ case KGSSettIdRecordedVideoSaving:
+ {
+ TDriveUnit phoneMemUnit(
+ TParsePtrC( PathInfo::PhoneMemoryRootPath() ).Drive() );
+ TDriveUnit mmcUnit(
+ TParsePtrC( PathInfo::MemoryCardRootPath() ).Drive() );
+
+ if ( ( TInt )phoneMemUnit
+ == iModel->VSSettingsRecordedVideoSavingL() )
+ {
+ iModel->SetVSSettingsRecordedVideoSavingL( ( TInt )mmcUnit );
+ }
+ else
+ {
+ iModel->SetVSSettingsRecordedVideoSavingL( ( TInt )phoneMemUnit );
+ }
+ break;
+ }
+ case KGSSettIdNote:
+ {
+ if ( MusSettingsKeys::EAuditoryNotificationOn
+ == iModel->VSSettingsNoteL() )
+ {
+ iModel->SetVSSettingsNoteL(
+ MusSettingsKeys::EAuditoryNotificationOff );
+ }
+ else
+ {
+ iModel->SetVSSettingsNoteL(
+ MusSettingsKeys::EAuditoryNotificationOn );
+ }
+ break;
+ }
+ default:
+ {
+ MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::SwitchOnOffValueL() - error unknown setting" )
+ User::Leave( KErrArgument );
+ }
+ }
}
// -----------------------------------------------------------------------------
@@ -721,18 +859,16 @@
CleanupStack::PopAndDestroy( dlg );
}
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// From class CGSPluginInterface.
// Creates a new icon of desired type. Overrided to provide custom icons.
// Ownership of the created icon is transferred to the caller.
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
CGulIcon* CMusSettingsPlugin::CreateIconL( const TUid aIconType )
{
MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::CreateIconL()" )
- OpenResourceFileL();
-
CGulIcon* icon;
if( aIconType == KGSIconTypeLbxItem )
@@ -766,37 +902,3 @@
return icon;
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusSettingsPlugin::OpenResourceFileL()
- {
- MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::OpenResourceFileL()" )
-
- if (!iResourceFileOpen)
- {
- HBufC* fileName = MusResourceFinderUtil::ResourcePathL(
- KVSSettingsResourceFileName );
- TFileName fName(*fileName);
- delete fileName;
- MUS_LOG_TDESC( "[MUSSET] Resource FileName ",fName )
- iResources.OpenL(fName);
- iResourceFileOpen = true;
- }
-
- MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::OpenResourceFileL()" )
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusSettingsPlugin::CloseResourceFile()
- {
- MUS_LOG( "[MUSSET] -> CMusSettingsPlugin::CloseResourceFile()" )
- iResources.Close();
- iResourceFileOpen = false;
- MUS_LOG( "[MUSSET] <- CMusSettingsPlugin::CloseResourceFile()" )
- }
-
--- a/mmshplugins/mmshsettingsuiplugin/src/mussettingspluginimplementationtable.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/src/mussettingspluginimplementationtable.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -20,7 +20,7 @@
#include "mussettingsplugin.h"
#include <ecom/implementationproxy.h>
#include <e32std.h>
-#include "muslogger.h"
+
// ======== LOCAL FUNCTIONS ========
@@ -41,7 +41,7 @@
EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
TInt& aTableCount )
{
- MUS_LOG( "[GSLog] ImplementationGroupProxy()" );
+ RDebug::Print(_L("[GSLog] ImplementationGroupProxy()" ));
aTableCount = sizeof(KGSVSSettingsPluginImplementationTable)
/ sizeof(TImplementationProxy);
return KGSVSSettingsPluginImplementationTable;
--- a/mmshplugins/mmshsettingsuiplugin/src/mussipprofilemodel.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/src/mussipprofilemodel.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -12,56 +12,40 @@
* Contributors:
*
* Description: Model for managing SIP profiles.
-* Version : %version: 19 % << Don't touch! Updated by Synergy at check-out.
*
*/
-#include <sipmanagedprofileregistry.h>
-#include <sipmanagedprofile.h>
#include "mussipprofilemodel.h"
#include "muslogger.h"
-#include "mussettings.inl"
-#include "mussettingsmodel.h"
+#include <aknnotewrappers.h>
+#include <StringLoader.h>
+#include <aknview.h>
+#include <sipmanagedprofileregistry.h>
+const TInt KSIPGranularity = 5;
const TInt KUnknownProfileId = 0;
// ======== MEMBER FUNCTIONS ========
-// ----------------------------------------------------------------------------
-//
-// ----------------------------------------------------------------------------
-//
CMusSIPProfileModel::CMusSIPProfileModel()
{
+ MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::CMusSIPProfileModel()" )
}
-// ----------------------------------------------------------------------------
-//
-// ----------------------------------------------------------------------------
-//
+
void CMusSIPProfileModel::ConstructL()
{
MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ConstructL()" )
-
- MUS_LOG( "[MUSSET] Creating CSIPManagedProfileRegistry " )
iEngine = CSIPManagedProfileRegistry::NewL( *this );
- MUS_LOG( "[MUSSET] Done " )
- MUS_LOG( "[MUSSET] Getting profiles " )
- iEngine->ProfilesL( iProfiles );
- MUS_LOG( "[MUSSET] Done " )
- SortProfilesL();
- MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::ConstructL()" )
+ ReadArrayFromEngineL();
}
-// ----------------------------------------------------------------------------
-//
-// ----------------------------------------------------------------------------
-//
+
CMusSIPProfileModel* CMusSIPProfileModel::NewL()
{
MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::NewL()" )
@@ -75,28 +59,30 @@
return self;
}
-// ----------------------------------------------------------------------------
-//
-// ----------------------------------------------------------------------------
-//
+
CMusSIPProfileModel::~CMusSIPProfileModel()
{
MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::~CMusSIPProfileModel()" )
- iProfiles.ResetAndDestroy();
+ DeleteProfiles();
delete iEngine;
+ iEngine = NULL;
MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::~CMusSIPProfileModel()" )
}
+
// ----------------------------------------------------------------------------
-// Returns reference to the locally cached SIP profile array.
+// Returns pointer to the locally cached SIP profile array.
// ----------------------------------------------------------------------------
//
-RPointerArray<CSIPProfile>& CMusSIPProfileModel::ProfileArrayL()
+CArrayPtr<CSIPManagedProfile>* CMusSIPProfileModel::ProfileArrayL()
{
- MUS_LOG( "[MUSSET] <-> CMusSIPProfileModel::ProfileArrayL()" )
+ MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::ProfileArrayL()" )
+ ReadProfileListFromEngineSafeL();
+ MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ProfileArrayL()" )
return iProfiles;
}
+
// ----------------------------------------------------------------------------
// Returns index to the default SIP profile in locally cached array.
// ----------------------------------------------------------------------------
@@ -106,12 +92,12 @@
MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::DefaultProfileIndex()" )
TInt index( KErrNotFound );
- for ( TInt i = 0; i < iProfiles.Count(); i++ )
+ for ( TInt i = 0; i < iProfiles->Count(); i++ )
{
TBool defProfile( EFalse );
if (
KErrNone ==
- iProfiles[i]->GetParameter( KSIPDefaultProfile, defProfile )
+ iProfiles->At( i )->GetParameter( KSIPDefaultProfile, defProfile )
&& defProfile )
{
index = i;
@@ -124,6 +110,7 @@
return index;
}
+
// ----------------------------------------------------------------------------
// Returns id of the default SIP profile. If default SIP profile is not found
// KUnknownProfileId is returned.
@@ -134,14 +121,16 @@
MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::DefaultProfileId()" )
TUint32 id( KUnknownProfileId );
- for ( TInt i = 0; i < iProfiles.Count(); i++ )
+ for ( TInt i = 0; i < iProfiles->Count(); i++ )
{
TBool defProfile( EFalse );
- TInt error = iProfiles[i]->GetParameter( KSIPDefaultProfile, defProfile );
- if ( error == KErrNone && defProfile )
+ if (
+ KErrNone ==
+ iProfiles->At( i )->GetParameter( KSIPDefaultProfile, defProfile )
+ && defProfile )
{
- iProfiles[i]->GetParameter( KSIPProfileId, id );
- break;
+ iProfiles->At( i )->GetParameter( KSIPProfileId, id );
+ break;
}
}
@@ -150,66 +139,6 @@
return id;
}
-// -----------------------------------------------------------------------------
-// Disable SIP Registration.
-// -----------------------------------------------------------------------------
-//
-void CMusSIPProfileModel::DisableProfileL()
- {
- MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::DisableProfileL " )
- CSIPManagedProfile* managedProfile = static_cast<CSIPManagedProfile*>(
- iEngine->ProfileL( DefaultProfileId()) );
- CleanupStack::PushL( managedProfile );
- MUS_LOG( "[MUSSET] Add registration parameter to profile.dat file " )
- //set autoregistration off (i.e. when needed) => disable profile
- User::LeaveIfError( managedProfile->SetParameter( KSIPAutoRegistration, EFalse ) );
- MUS_LOG( "[MUSSET] Saving profile " )
- iEngine->SaveL( *managedProfile );
- MUS_LOG( "[MUSSET] Saved" )
- CleanupStack::PopAndDestroy( managedProfile );
- MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::DisableProfileL " )
- }
-
-// -----------------------------------------------------------------------------
-// Enable SIP Registration.
-// -----------------------------------------------------------------------------
-//
-void CMusSIPProfileModel::EnableProfileL()
- {
- MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::EnableProfileL " )
- CSIPManagedProfile* managedProfile = static_cast<CSIPManagedProfile*>(
- iEngine->ProfileL( DefaultProfileId() ) );
- CleanupStack::PushL( managedProfile );
- MUS_LOG( "[MUSSET] Add registration parameters to profile.dat file " )
- //set autoregistration on (i.e. always on) => enable profile
- User::LeaveIfError( managedProfile->SetParameter( KSIPAutoRegistration, ETrue ) );
- MUS_LOG( "[MUSSET] Saving profile " )
- iEngine->SaveL( *managedProfile );
- MUS_LOG( "[MUSSET] Saved" )
- CleanupStack::PopAndDestroy( managedProfile );
- MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::EnableRegisterL " )
- }
-
-// -----------------------------------------------------------------------------
-// if SIP Registration enabled.
-// -----------------------------------------------------------------------------
-//
-TBool CMusSIPProfileModel::ProfileEnabledL()
- {
- MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::ProfileEnabledL " )
- CSIPManagedProfile* managedProfile = static_cast<CSIPManagedProfile*>(
- iEngine->ProfileL( DefaultProfileId() ) );
- CleanupStack::PushL( managedProfile );
- TBool enabled;
- MUS_LOG( "[MUSSET] Getting KSIPAutoRegistration" )
- User::LeaveIfError(
- managedProfile->GetParameter( KSIPAutoRegistration, enabled ) );
- MUS_LOG( "[MUSSET] Done" )
- MUS_LOG1( "[MUSSET] KSIPAutoRegistration=%d", enabled )
- CleanupStack::PopAndDestroy( managedProfile );
- MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ProfileEnabledL " )
- return enabled;
- }
// ----------------------------------------------------------------------------
// Returns index of the default SIP profile on locally cached array. If default
@@ -220,12 +149,14 @@
{
MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::ProfileIndexByIdL()" )
TInt index( KErrNotFound );
-
- for ( TInt i = 0; i < iProfiles.Count(); i++ )
+
+ ReadProfileListFromEngineSafeL();
+ for ( TInt i = 0; i < iProfiles->Count(); i++ )
{
TUint32 id( KUnknownProfileId );
- TInt error = iProfiles[i]->GetParameter( KSIPProfileId, id );
- if ( error == KErrNone && id == aId )
+
+ if ( KErrNone == iProfiles->At( i )->GetParameter( KSIPProfileId, id )
+ && id == aId )
{
index = i;
break;
@@ -247,9 +178,10 @@
MUS_LOG1( "[MUSSET] -> CMusSIPProfileModel::ProfileIdByIndex()( %d )",
aIndex )
TUint32 profileId( KUnknownProfileId );
- if ( aIndex < iProfiles.Count() )
+ if ( iProfiles->Count() > aIndex )
{
- if ( iProfiles[aIndex]->GetParameter( KSIPProfileId, profileId ) )
+ if ( iProfiles->At( aIndex )->GetParameter(
+ KSIPProfileId, profileId ) )
{
profileId = KUnknownProfileId;
}
@@ -259,6 +191,41 @@
return profileId;
}
+
+// ----------------------------------------------------------------------------
+// Reads SIP profiles from SIP Profile Client array to locally cached array.
+// ----------------------------------------------------------------------------
+//
+void CMusSIPProfileModel::ReadArrayFromEngineL()
+ {
+ MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::ReadArrayFromEngineL()" )
+
+ DeleteProfiles();
+
+ // Create the profile pointer array
+ iProfiles =
+ new ( ELeave ) CArrayPtrFlat<CSIPManagedProfile>( KSIPGranularity );
+
+ RPointerArray<CSIPProfile> profilePointerArray;
+ TCleanupItem clItem( ResetAndDestroy, &profilePointerArray );
+ CleanupStack::PushL( clItem );
+
+ iEngine->ProfilesL( profilePointerArray );
+ for ( TInt i = 0; i < profilePointerArray.Count(); i++ )
+ {
+ iProfiles->AppendL(
+ static_cast<CSIPManagedProfile*>( profilePointerArray[i] ) );
+ }
+
+ profilePointerArray.Reset();
+ CleanupStack::PopAndDestroy(); // clItem (profilePointerArray)
+
+ SortProfilesL();
+
+ MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ReadArrayFromEngineL()" )
+ }
+
+
// ----------------------------------------------------------------------------
// Sorts internal array of SIP profiles by id. Used algorithm is generally
// slower than quicksort and selectionsort but very feasible for expected
@@ -269,69 +236,52 @@
{
TUint32 profileIdFirst( 0 );
TUint32 profileIdSecond( 0 );
- for ( TInt a = 0; a < iProfiles.Count() - 1; a++ )
+ for ( TInt a = 0; a < iProfiles->Count() - 1; a++ )
{
- for ( TInt b = a + 1; b < iProfiles.Count(); b++ )
+ for ( TInt b = a + 1; b < iProfiles->Count(); b++ )
{
- User::LeaveIfError( iProfiles[a]->GetParameter(
+ User::LeaveIfError( iProfiles->At( a )->GetParameter(
KSIPProfileId, profileIdFirst ) );
- User::LeaveIfError( iProfiles[b]->GetParameter(
+ User::LeaveIfError( iProfiles->At( b )->GetParameter(
KSIPProfileId, profileIdSecond ) );
if ( profileIdFirst > profileIdSecond )
{
- CSIPProfile* tmp = iProfiles[b];
- iProfiles[b] = iProfiles[a];
- iProfiles[a] = tmp;
+ CSIPManagedProfile* tmp = iProfiles->At( b );
+ iProfiles->At( b ) = iProfiles->At( a );
+ iProfiles->At( a ) = tmp;
}
}
}
}
+
+// ----------------------------------------------------------------------------
+// Deletes internally cached SIP profiles.
+// ----------------------------------------------------------------------------
+//
+void CMusSIPProfileModel::DeleteProfiles()
+ {
+ if ( iProfiles )
+ {
+ iProfiles->ResetAndDestroy();
+ delete iProfiles;
+ iProfiles = NULL;
+ }
+ }
+
+
// ----------------------------------------------------------------------------
// From class MSIPProfileRegistryObserver.
// Notifies of an event in SIP profile registry.
// ----------------------------------------------------------------------------
//
void CMusSIPProfileModel::ProfileRegistryEventOccurred(
- TUint32 aSIPProfileId, TEvent aEvent )
- {
- MUS_LOG("[MUSSET] -> CMusSIPProfileModel::ProfileRegistryEventOccurred()" )
- MUS_LOG2(" SIPProfileId is %d,Event is %d",aSIPProfileId,aEvent)
-
- // We revert back to default settings if the profile used by MuS is deleted
- if ( aEvent == EProfileDestroyed )
- {
- TRAP_IGNORE(
- //if the profile is the profile used by mush
- if ( MultimediaSharingSettings::SipProfileSettingL() ==
- aSIPProfileId )
- {
- //set the profile to default
- MultimediaSharingSettings::SetSipProfileSettingL(
- CMusSettingsModel::KVsSipProfileDefault );
- //set mush off
- MultimediaSharingSettings::SetActivationSettingL(
- MusSettingsKeys::EActiveInHomeNetworks );
- }
- );
- }
-
- if ( aEvent == EProfileCreated ||
- aEvent == EProfileUpdated ||
- aEvent == EProfileDestroyed )
- {
- // Profiles have been manipulated in SIP side, we must delete client
- // side profile objects and retrieve them again. If fetching fails,
- // we have empty array which is better than showing wrong values to
- // user.
- iProfiles.ResetAndDestroy();
- TRAP_IGNORE( iEngine->ProfilesL( iProfiles ) );
- TRAP_IGNORE( SortProfilesL() );
- }
-
+ TUint32 /*aSIPProfileId*/, TEvent /*aEvent*/ )
+ {
MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ProfileRegistryEventOccurred()" )
}
+
// ----------------------------------------------------------------------------
// From class MSIPProfileRegistryObserver.
// An asynchronous error has occurred related to SIP profile
@@ -344,11 +294,50 @@
MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ProfileRegistryErrorOccurred()" )
}
+
// ----------------------------------------------------------------------------
-//Set CMusSettingsModel to handle ProfileRegistry Event.
+// Reads SIP profile list from engine; if reading fails, old cached list is
+// kept and returned.
// ----------------------------------------------------------------------------
//
-void CMusSIPProfileModel::SetCMusSettingsModel(CMusSettingsModel* aCMusSettingsModel)
- {
- iCMusSettingsModel = aCMusSettingsModel;
- }
+void CMusSIPProfileModel::ReadProfileListFromEngineSafeL()
+ {
+ MUS_LOG(
+ "[MUSSET] -> CMusSIPProfileModel::ReadProfileListFromEngineSafeL()" )
+ // To prevent complete disaster it we'll save the pointer of the old array
+ CArrayPtrFlat<CSIPManagedProfile>* profiles = iProfiles;
+ iProfiles = 0;
+ TRAPD( error, ReadArrayFromEngineL() );
+
+ if ( error )
+ {
+ // Problems with re-reading profiles; use existing array
+ DeleteProfiles();
+ iProfiles = profiles;
+ User::Leave( error );
+ }
+ else
+ {
+ // No problems; delete backup array
+ profiles->ResetAndDestroy();
+ delete profiles;
+ }
+ MUS_LOG(
+ "[MUSSET] <- CMusSIPProfileModel::ReadProfileListFromEngineSafeL()" )
+ }
+
+
+// ----------------------------------------------------------------------------
+// For deleting RPointerArray in case of leave (used in association with
+// TCleanupItem).
+// ----------------------------------------------------------------------------
+//
+void CMusSIPProfileModel::ResetAndDestroy( TAny* aPointerArray )
+ {
+ MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::ResetAndDestroy()" )
+ RPointerArray<CSIPProfile>* array =
+ static_cast<RPointerArray<CSIPProfile>*>( aPointerArray );
+ array->ResetAndDestroy();
+ array->Close();
+ MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ResetAndDestroy()" )
+ }
--- a/mmshplugins/mmshsipcrplugin/group/mussipcrplugin.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsipcrplugin/group/mussipcrplugin.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -51,8 +51,9 @@
LIBRARY sipclient.lib // SIP Client API
LIBRARY sipprofilecli.lib // SIP Profile Agent Client API
LIBRARY sipcodec.lib // SIP Codec
-LIBRARY featmgr.lib
+LIBRARY sdpcodec.lib // SDP Codec
+LIBRARY centralrepository.lib // for MultimediaSharingSettings
+
DEBUGLIBRARY flogger.lib // file logger
PAGED
-
--- a/mmshplugins/mmshsipcrplugin/inc/mussipcrplugin.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsipcrplugin/inc/mussipcrplugin.h Tue Aug 31 15:12:07 2010 +0300
@@ -26,6 +26,7 @@
#include <ecom/implementationproxy.h>
class CMusManager;
+class CSdpMediaField;
IMPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount );
@@ -86,14 +87,20 @@
*/
const TDesC8& Capabilities();
-private: // data
-
- TUid DoChannelL( RStringF aMethod );
-
+private: // New functions
+
+ /**
+ * Check whether video field has sendrecv attribute
+ * @return ETrue if video has sendrecv attribute, EFalse otherwise
+ */
+ TBool CheckForSendRecvAttributeL(
+ RPointerArray<CSdpMediaField>& aFields ) const;
+
private: // data
CMusManager* iManager;
-
+ TBool iCloseStringPool;
+
};
--- a/mmshplugins/mmshsipcrplugin/src/mussipcrplugin.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsipcrplugin/src/mussipcrplugin.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -24,10 +24,20 @@
#include "musmanager.h"
#include "musuid.hrh"
#include "musunittesting.h"
+#include "mussettings.h"
+#include <mussettingskeys.h>
#include <sipstrings.h>
#include <sipstrconsts.h>
-#include <featmgr.h>
+#include <sdpdocument.h>
+#include <sdpmediafield.h>
+#include <sdpcodecstringpool.h>
+#include <sdpcodecstringconstants.h>
+#include <sdpattributefield.h>
+
+_LIT8( KSendRecv, "sendrecv"); // For attribute checks
+_LIT8( KRecvOnly, "recvonly"); // For attribute checks
+_LIT8( KSendOnly, "sendonly" ); // For attribute checks
_LIT8(KCapabilities,
"<SIP_CLIENT ALLOW_STARTING=\"YES\">\
@@ -45,6 +55,7 @@
</SDP_LINES>\
</SIP_CLIENT>");
+
// -------------------------------------------------------------------------
// Two-phased constructor.
// -------------------------------------------------------------------------
@@ -69,6 +80,10 @@
{
MUS_LOG( "mus: [MUSSCR] -> CMusSipCrPlugin::~CMusSipCrPlugin()" );
delete iManager;
+ if ( iCloseStringPool )
+ {
+ SdpCodecStringPool::Close();
+ }
MUS_LOG( "mus: [MUSSCR] <- CMusSipCrPlugin::~CMusSipCrPlugin()" );
}
@@ -90,6 +105,31 @@
{
MUS_LOG( "mus: [MUSSCR] -> CMusSipCrPlugin::ConstructL()" );
iManager = CMusManager::NewL();
+
+ TRAPD( err, SdpCodecStringPool::OpenL() );
+
+ switch ( err )
+ {
+ case KErrNone:
+ {
+ //close pool at destructor, not opened by others
+ iCloseStringPool = ETrue;
+ break;
+ }
+
+ case KErrAlreadyExists:
+ {
+ //already opened, do not try to close at destructor
+ iCloseStringPool = EFalse;
+ break;
+ }
+
+ default:
+ {
+ User::Leave( err );
+ }
+ }
+
MUS_LOG( "mus: [MUSSCR] <- CMusSipCrPlugin::ConstructL()" );
}
@@ -101,34 +141,16 @@
TUid CMusSipCrPlugin::ChannelL( RStringF aMethod,
const TDesC8& /*aRequestUri*/,
const RPointerArray<CSIPHeaderBase>& /*aHeaders*/,
- const TDesC8& /*aContent*/,
- const CSIPContentTypeHeader* /*aContentType*/)
+ const TDesC8& aContent,
+ const CSIPContentTypeHeader* /*aContentType*/ )
{
- FeatureManager::InitializeLibL();
- TBool support = FeatureManager::FeatureSupported( KFeatureIdMultimediaSharing );
- FeatureManager::UnInitializeLib();
- TUid uid;
- uid.iUid = ( TInt ) CMusManager::ESipInviteNotDesired;
- if ( support )
- {
- uid = DoChannelL( aMethod );
- }
- return uid;
- }
-
-
-// -------------------------------------------------------------------------
-// CMusSipCrPlugin::DoChannelL
-// -------------------------------------------------------------------------
-TUid CMusSipCrPlugin::DoChannelL( RStringF aMethod )
- {
- MUS_LOG( "mus: [MUSSCR] -> CMusSipCrPlugin::DoChannelL()" );
-
+ MUS_LOG( "mus: [MUSSCR] -> CMusSipCrPlugin::ChannelL()" );
+
if ( aMethod == SIPStrings::StringF( SipStrConsts::EOptions ) )
{
TUid uid;
uid.iUid = ( TInt ) CMusManager::ESipOptions;
- MUS_LOG1( "mus: [MUSSCR] <- CMusSipCrPlugin::DoChannelL(): KSipOptions %d",
+ MUS_LOG1( "mus: [MUSSCR] <- CMusSipCrPlugin::ChannelL(): KSipOptions %d",
uid.iUid );
return uid;
}
@@ -142,7 +164,7 @@
{
TUid uid;
uid.iUid = ( TInt ) CMusManager::ESipInviteNotDesired;
- MUS_LOG1( "mus: [MUSSCR] <- CMusSipCrPlugin::DoChannelL(): \
+ MUS_LOG1( "mus: [MUSSCR] <- CMusSipCrPlugin::ChannelL(): \
KNotAllowedSipInvite %d", uid.iUid );
return uid;
}
@@ -150,14 +172,90 @@
{
TUid uid;
uid.iUid = ( TInt ) CMusManager::ESipInviteDesired;
- MUS_LOG1( "mus: [MUSSCR] <- CMusSipCrPlugin::DoChannelL(): \
+ TBool twoWaySupported = MultimediaSharingSettings::VideoDirectionL() ==
+ MusSettingsKeys::ETwoWayVideo;
+
+ if ( ( aContent.Length() > 0 ) && twoWaySupported )
+ {
+ MUS_LOG( "mus: [MUSSCR] 2 way supported, parsing SDP..." );
+ CSdpDocument* sdpDocument = CSdpDocument::DecodeLC( aContent );
+ TBool sendRecv = CheckForSendRecvAttributeL( sdpDocument->MediaFields() );
+ if ( sendRecv )
+ {
+ uid.iUid = ( TInt ) CMusManager::ESipInviteDesired2WayVideo;
+ }
+
+ CleanupStack::PopAndDestroy( sdpDocument );
+ }
+
+ MUS_LOG1( "mus: [MUSSCR] <- CMusSipCrPlugin::ChannelL(): \
KAllowedSipInvite %d", uid.iUid );
return uid;
}
}
}
-
+// -------------------------------------------------------------------------
+// CMusSipCrPlugin::CheckForSendRecvAttribute
+// -------------------------------------------------------------------------
+//
+TBool CMusSipCrPlugin::CheckForSendRecvAttributeL(
+ RPointerArray<CSdpMediaField>& aFields ) const
+ {
+ MUS_LOG( "mus: [MUSSCR] -> CMusSipCrPlugin::CheckForSendRecvAttribute()" );
+
+ TBool sendRecv = EFalse;
+ TBool sendAttrFound = EFalse;
+ TBool videoFound = EFalse;
+ RStringF videoType = SdpCodecStringPool::StringPoolL().StringF(
+ SdpCodecStringConstants::EMediaVideo,
+ SdpCodecStringPool::StringTableL() );
+ const TInt fieldcount = aFields.Count();
+
+ for ( TInt i = 0; i < fieldcount && !videoFound; i++ )
+ {
+ CSdpMediaField* mField = aFields[i];
+
+ //only check video fields
+ videoFound = mField->Media() == videoType;
+
+ if ( videoFound )
+ {
+ RPointerArray< CSdpAttributeField > attrList =
+ mField->AttributeFields();
+
+ TInt attrCount = attrList.Count();
+ for (TInt j = 0; j < attrCount && !sendAttrFound; j++ )
+ {
+ CSdpAttributeField* attributeField = attrList[j];
+ RStringF attribute = attributeField->Attribute();
+
+ if ( KErrNotFound != attribute.DesC().FindF( KSendRecv ) )
+ {
+ sendRecv = ETrue;
+ sendAttrFound = ETrue;
+ MUS_LOG( "mus: [MUSSCR] <sendrecv> attribute found!" );
+ }
+ else if ( ( KErrNotFound != attribute.DesC().FindF( KSendOnly ) ) ||
+ ( KErrNotFound != attribute.DesC().FindF( KRecvOnly ) ) )
+ {
+ MUS_LOG( "mus: [MUSSCR] <sendonly>/<recvonly> attribute found!" );
+ sendAttrFound = ETrue;
+ }
+ }
+
+ if ( !sendAttrFound )
+ {
+ MUS_LOG( "mus: [MUSSCR] no send/recv related attributes found!" );
+ sendRecv = ETrue;
+ }
+ }
+ }
+ MUS_LOG1( "mus: [MUSSCR] <- CMusSipCrPlugin::CheckForSendRecvAttribute(), \
+ sendrecv: %d", sendRecv );
+
+ return sendRecv;
+ }
// -------------------------------------------------------------------------
// CMusSipCrPlugin::ConnectL
@@ -168,6 +266,7 @@
MUS_LOG1( "mus: [MUSSCR] -> CMusSipCrPlugin::ConnectL( %d )", aUid.iUid );
if ( aUid.iUid == CMusManager::ESipOptions ||
aUid.iUid == CMusManager::ESipInviteDesired ||
+ aUid.iUid == CMusManager::ESipInviteDesired2WayVideo ||
aUid.iUid == CMusManager::ESipInviteNotDesired )
{
iManager->HandleSipRequestL(( CMusManager::TRequestType ) aUid.iUid );
--- a/mmshplugins/mmshsipcrplugin/tsrc/ut_sipcrplugin/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsipcrplugin/tsrc/ut_sipcrplugin/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -15,5 +15,5 @@
*
*/
-PRJ_TESTMMPFILES
+PRJ_MMPFILES
ut_sipcrplugin.mmp
\ No newline at end of file
--- a/mmshplugins/mmshsipcrplugin/tsrc/ut_sipcrplugin/group/ut_sipcrplugin.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsipcrplugin/tsrc/ut_sipcrplugin/group/ut_sipcrplugin.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -17,7 +17,7 @@
#include <platform_paths.hrh>
-#include<eunitcaps.h>
+#include <eunitcaps.h>
TARGET ut_sipcrplugin.dll
TARGETTYPE dll
@@ -25,8 +25,7 @@
TARGETPATH /DigiaEUnit/Tests
UID 0x1000af5a 0x01700a21
-CAPABILITY EUNIT_CAPS
-
+CAPABILITY EUNIT_CAPS
VENDORID VID_DEFAULT
MACRO UNIT_TESTING
@@ -42,10 +41,10 @@
SOURCEPATH ../../../../../tsrc/musmanagerstub/src
SOURCE musmanagerstub.cpp
-SOURCEPATH ../../../../../tsrc/featmgrstub/src
-SOURCE FeatMgr.cpp
+SOURCEPATH ../../../../../tsrc/multimediasharingsettingsstub/src
+SOURCE mussettings.cpp
-USERINCLUDE ../../../../../tsrc/featmgrstub/inc
+USERINCLUDE ../../../../../tsrc/multimediasharingsettingsstub/inc
USERINCLUDE ../inc
USERINCLUDE ../../../inc
USERINCLUDE ../../../../../inc
@@ -61,6 +60,9 @@
LIBRARY sipclient.lib // SIP Client API
LIBRARY sipprofilecli.lib // SIP Profile Agent Client API
LIBRARY sipcodec.lib // SIP Codec
+LIBRARY sdpcodec.lib // SDP Codec
+LIBRARY bafl.lib // Basic Application Framework Library
+
EXPORTUNFROZEN
--- a/mmshplugins/mmshsipcrplugin/tsrc/ut_sipcrplugin/group/ut_sipcrplugin.pkg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-;
-; Copyright (c) 2009 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:
-;
-
-;Languages
-&EN
-
-;Header
-#{"EUnit: MMSHSIPCRPl"},(0x01700000),1,0,0
-
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique vendor name
-:"Nokia"
-
-;DLL files
-"\epoc32\release\armv5\urel\ut_sipcrplugin.dll"-"c:\sys\bin\ut_sipcrplugin.dll"
--- a/mmshplugins/mmshsipcrplugin/tsrc/ut_sipcrplugin/inc/mussipcrplugintest.h Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsipcrplugin/tsrc/ut_sipcrplugin/inc/mussipcrplugintest.h Tue Aug 31 15:12:07 2010 +0300
@@ -63,6 +63,8 @@
public: // Test functions
+ void UT_ConstructL();
+
void UT_ChannelL();
void UT_ConnectL();
@@ -71,6 +73,7 @@
void UT_ImplementationGroupProxy();
+ void UT_CheckForSendRecvAttributeL();
public:
void SetupL();
--- a/mmshplugins/mmshsipcrplugin/tsrc/ut_sipcrplugin/src/mussipcrplugintest.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshsipcrplugin/tsrc/ut_sipcrplugin/src/mussipcrplugintest.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -15,25 +15,76 @@
*
*/
-#include <sipstrings.h>
+
#include "musunittesting.h"
#include "musmanagerstub.h"
#include "mussipcrplugin.h"
#include "mussipcrplugintest.h"
#include "muslogger.h"
#include "musmanager.h"
+#include "mussettings.h"
#include <alwaysonlinemanagercommon.h>
#include <alwaysonlinemanagerclient.h>
#include <digia/eunit/eunitmacros.h>
#include <SipResolvedClient.h>
+#include <sipstrings.h>
#include <sipstrconsts.h>
-#include "FeatMgr.h"
-
+#include <SdpCodecStringPool.h>
+#include <sdpdocument.h>
// Next row is to disable warning emerging from EUnit code.
#pragma warn_illtokenpasting off
+_LIT8( KSdpSendOnly, "v=0\r\n\
+o=Inviter2008 63241204263093750 132223800 IN IP4 10.0.0.6\r\n\
+s=-\r\n\
+c=IN IP4 10.0.0.6\r\n\
+t=0 0\r\n\
+m=video 49152 RTP/AVP 98\r\n\
+a=sendonly\r\n\
+a=rtpmap:98 H264/90000\r\n" );
+
+_LIT8( KSdpSendRecv, "v=0\r\n\
+o=Inviter2008 63241204263093750 132223800 IN IP4 10.0.0.6\r\n\
+s=-\r\n\
+c=IN IP4 10.0.0.6\r\n\
+t=0 0\r\n\
+m=video 49152 RTP/AVP 98\r\n\
+a=sendrecv\r\n\
+a=rtpmap:98 H264/90000\r\n" );
+
+_LIT8( KSdpNoMedia, "v=0\r\n\
+o=Inviter2008 63241204263093750 132223800 IN IP4 10.0.0.6\r\n\
+s=-\r\n\
+c=IN IP4 10.0.0.6\r\n\
+t=0 0\r\n" );
+
+_LIT8( KSdpNoVideo, "v=0\r\n\
+o=Inviter2008 63241204263093750 132223800 IN IP4 10.0.0.6\r\n\
+s=-\r\n\
+c=IN IP4 10.0.0.6\r\n\
+t=0 0\r\n\
+m=audio 5000 RTP/AVP 106 8 0\r\n\
+a=sendrecv\r\n\
+a=rtpmap:106 AMR/8000\r\n" );
+
+_LIT8( KSdpVideoNoAttributes, "v=0\r\n\
+o=Inviter2008 63241204263093750 132223800 IN IP4 10.0.0.6\r\n\
+s=-\r\n\
+c=IN IP4 10.0.0.6\r\n\
+t=0 0\r\n\
+m=video 49152 RTP/AVP 98\r\n" );
+
+_LIT8( KSdpRecvOnly, "v=0\r\n\
+o=Inviter2008 63241204263093750 132223800 IN IP4 10.0.0.6\r\n\
+s=-\r\n\
+c=IN IP4 10.0.0.6\r\n\
+t=0 0\r\n\
+m=video 49152 RTP/AVP 98\r\n\
+a=recvonly\r\n\
+a=rtpmap:98 H264/90000\r\n" );
+
// --------------------------------------------------------------------------
// C++ constructor.
@@ -89,6 +140,7 @@
void CMusSipCrPluginTest::SetupL( )
{
iPlugin = CMusSipCrPlugin::NewL();
+ SIPStrings::OpenL();
}
@@ -98,6 +150,7 @@
//
void CMusSipCrPluginTest::Teardown( )
{
+ SIPStrings::Close();
delete iPlugin;
}
@@ -105,6 +158,29 @@
// ------------------------- Test functions begin ---------------------------
+// --------------------------------------------------------------------------
+//
+// --------------------------------------------------------------------------
+//
+void CMusSipCrPluginTest::UT_ConstructL()
+ {
+ // 1. String pool was opend by us
+ EUNIT_ASSERT( iPlugin->iCloseStringPool );
+
+ // 2. String pool was already opened by someone else, KErrAlreadyExists
+ delete iPlugin;
+ iPlugin = NULL;
+ SdpCodecStringPool::OpenL();
+ TRAPD( err, iPlugin = CMusSipCrPlugin::NewL() );
+ if ( err != KErrNone )
+ {
+ SdpCodecStringPool::Close();
+ User::Leave(err);
+ }
+ EUNIT_ASSERT( !iPlugin->iCloseStringPool );
+ SdpCodecStringPool::Close();
+ }
+
// --------------------------------------------------------------------------
//
@@ -112,8 +188,6 @@
//
void CMusSipCrPluginTest::UT_ChannelL()
{
- SIPStrings::OpenL();
-
RPointerArray<CSIPHeaderBase> array;
TUid response;
@@ -128,7 +202,7 @@
EUNIT_ASSERT( response.iUid == CMusManager::ESipOptions )
- // Everything is OK
+ // Everything is OK, 2-way video not supported
CMusManager::SetAvailability(
( MultimediaSharing::TMusAvailabilityStatus ) KErrNone );
@@ -162,53 +236,28 @@
NULL );
EUNIT_ASSERT( response.iUid == CMusManager::ESipInviteNotDesired )
- //Feature Manager testing
- FeatureManager::MultimediaSharingNotSupported();
- response = iPlugin->ChannelL(
- SIPStrings::StringF( SipStrConsts::EOptions ),
- KNullDesC8(),
- array,
- KNullDesC8(),
- NULL );
-
- EUNIT_ASSERT( response.iUid == CMusManager::ESipInviteNotDesired )
- // Everything is OK
+
+ // 2-way video is supported and sendrecv not present in SDP
+ MultimediaSharingSettings::iVideoDirection = MusSettingsKeys::ETwoWayVideo;
CMusManager::SetAvailability(
( MultimediaSharing::TMusAvailabilityStatus ) KErrNone );
-
+
response = iPlugin->ChannelL( SIPStrings::StringF( SipStrConsts::EMessage ),
KNullDesC8(),
array,
- KNullDesC8(),
+ KSdpSendOnly(),
NULL );
+
+ EUNIT_ASSERT( response.iUid == CMusManager::ESipInviteDesired )
- EUNIT_ASSERT( response.iUid == CMusManager::ESipInviteNotDesired )
-
- // Server is shut down
- CMusManager::SetAvailability( MultimediaSharing::EErrServerShutDown );
-
+ // 2-way video is supported and sendrecv is present in SDP
response = iPlugin->ChannelL( SIPStrings::StringF( SipStrConsts::EMessage ),
KNullDesC8(),
array,
- KNullDesC8(),
+ KSdpSendRecv(),
NULL );
-
- EUNIT_ASSERT( response.iUid == CMusManager::ESipInviteNotDesired )
-
- // Mus is not supported
- CMusManager::SetAvailability(
- ( MultimediaSharing::TMusAvailabilityStatus ) KErrNotSupported );
-
- response = iPlugin->ChannelL( SIPStrings::StringF( SipStrConsts::EMessage ),
- KNullDesC8(),
- array,
- KNullDesC8(),
- NULL );
-
- EUNIT_ASSERT( response.iUid == CMusManager::ESipInviteNotDesired )
- FeatureManager::MultimediaSharingSupported();
- SIPStrings::Close();
-
+
+ EUNIT_ASSERT( response.iUid == CMusManager::ESipInviteDesired2WayVideo )
}
@@ -269,6 +318,45 @@
}
+// --------------------------------------------------------------------------
+//
+// --------------------------------------------------------------------------
+//
+void CMusSipCrPluginTest::UT_CheckForSendRecvAttributeL()
+ {
+ CSdpDocument* sdpDocument;
+ TBool sendRecv;
+
+ // 1. SDP doesn't have a single media field
+ sdpDocument = CSdpDocument::DecodeLC( KSdpNoMedia() );
+ sendRecv = iPlugin->CheckForSendRecvAttributeL( sdpDocument->MediaFields() );
+ CleanupStack::PopAndDestroy( sdpDocument );
+ EUNIT_ASSERT( !sendRecv );
+
+ // 2. SDP has audio field, but no video
+ sdpDocument = CSdpDocument::DecodeLC( KSdpNoVideo() );
+ sendRecv = iPlugin->CheckForSendRecvAttributeL( sdpDocument->MediaFields() );
+ CleanupStack::PopAndDestroy( sdpDocument );
+ EUNIT_ASSERT( !sendRecv );
+
+ // 3. SDP has video field without any attributes
+ sdpDocument = CSdpDocument::DecodeLC( KSdpVideoNoAttributes() );
+ sendRecv = iPlugin->CheckForSendRecvAttributeL( sdpDocument->MediaFields() );
+ CleanupStack::PopAndDestroy( sdpDocument );
+ EUNIT_ASSERT( sendRecv );
+
+ // 4. SDP has video with "sendrecv" attribute
+ sdpDocument = CSdpDocument::DecodeLC( KSdpSendRecv() );
+ sendRecv = iPlugin->CheckForSendRecvAttributeL( sdpDocument->MediaFields() );
+ CleanupStack::PopAndDestroy( sdpDocument );
+ EUNIT_ASSERT( sendRecv );
+
+ // 5. SDP has video with "recvonly" attribute
+ sdpDocument = CSdpDocument::DecodeLC( KSdpRecvOnly() );
+ sendRecv = iPlugin->CheckForSendRecvAttributeL( sdpDocument->MediaFields() );
+ CleanupStack::PopAndDestroy( sdpDocument );
+ EUNIT_ASSERT( !sendRecv );
+ }
// TEST TABLE
@@ -277,6 +365,13 @@
CMusSipCrPluginTest,
"CMusSipCrPluginTest",
"CMusSipCrPluginTest" )
+
+EUNIT_TEST(
+ "ConstructL - test",
+ "CMusSipCrPluginTest",
+ "UT_ConstructL",
+ "FUNCTIONALITY",
+ SetupL, UT_ConstructL, Teardown)
EUNIT_TEST(
"CMusSipCrPluginTest",
@@ -306,5 +401,12 @@
"FUNCTIONALITY",
SetupL, UT_ImplementationGroupProxy, Teardown)
+EUNIT_TEST(
+ "CheckForSendRecvAttribute - stest",
+ "CMusSipCrPluginTest",
+ "UT_CheckForSendRecvAttribute",
+ "FUNCTIONALITY",
+ SetupL, UT_CheckForSendRecvAttributeL, Teardown)
+
EUNIT_END_TEST_TABLE
--- a/mmshplugins/mmshwpadapterplugin/src/muswpitem.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshwpadapterplugin/src/muswpitem.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -210,7 +210,7 @@
}
else if ( aValue == KMusWpActivationConditionInHome() )
{
- iActivationCondition = MusSettingsKeys::EAlwaysActive;
+ iActivationCondition = MusSettingsKeys::EActiveInHomeNetworks;
}
else if ( aValue == KMusWpActivationConditionNever )
{
--- a/mmshplugins/mmshwpadapterplugin/tsrc/ut_wpadapterplugin/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshwpadapterplugin/tsrc/ut_wpadapterplugin/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -15,6 +15,6 @@
*
*/
-PRJ_TESTMMPFILES
+PRJ_MMPFILES
ut_muswpadapter.mmp
--- a/mmshplugins/mmshwpadapterplugin/tsrc/ut_wpadapterplugin/group/ut_muswpadapter.pkg Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-;
-; Copyright (c) 2009 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:
-;
-
-;Languages
-&EN
-
-;Header
-#{"EUnit: MMSHWPAda"},(0x01700000),1,0,0
-
-(0x101F7961), 0, 0, 0, {"Series60ProductID"}
-
-;Localised Vendor name
-%{"Nokia"}
-
-;Unique vendor name
-:"Nokia"
-
-;DLL files
-"\epoc32\release\armv5\urel\ut_muswpadapter.dll"-"c:\sys\bin\ut_muswpadapter.dll"
--- a/mmshplugins/mmshwpadapterplugin/tsrc/ut_wpadapterplugin/src/ut_muswpitem.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/mmshplugins/mmshwpadapterplugin/tsrc/ut_wpadapterplugin/src/ut_muswpitem.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -277,7 +277,7 @@
MusSettingsKeys::EAlwaysActive )
iWpItem->SetActivationCondition( KMusWpParamValue2() ); // Home
EUNIT_ASSERT( iWpItem->iActivationCondition ==
- MusSettingsKeys::EAlwaysActive )
+ MusSettingsKeys::EActiveInHomeNetworks )
iWpItem->SetActivationCondition( KMusWpParamValue3() ); // Never
EUNIT_ASSERT( iWpItem->iActivationCondition ==
MusSettingsKeys::ENever )
--- a/rom/multimediasharing.iby Thu Aug 19 09:51:39 2010 +0300
+++ b/rom/multimediasharing.iby Tue Aug 31 15:12:07 2010 +0300
@@ -21,52 +21,62 @@
#define __MULTIMEDIASHARING_IBY__
+#if defined(__MULTIMEDIA_SHARING) || defined(__CS_VIDEO_TELEPHONY)
+
+/*========================================================================
+* Livecomms UI dll for both MUS and VT
+* ========================================================================
+*/
+file=ABI_DIR\UREL\livecommsui.dll SHARED_LIB_DIR\livecommsui.dll
+
+/*========================================================================
+* MUS SIS stub
+* ========================================================================
+*/
+data=DATAZ_\system\install\multimediasharing_stub.sis system\install\multimediasharing_stub.sis
+
+#endif
+
+
#ifdef __MULTIMEDIA_SHARING
-
/*========================================================================
* MUS UI
* ========================================================================
*/
-S60_APP_EXE(musui)
-S60_APP_AIF_ICONS(musui)
-data=DATAZ_\BITMAP_DIR\musuiicons.mif BITMAP_DIR\musuiicons.mif
-data=DATAZ_\BITMAP_DIR\musuitoolbaricons.mif BITMAP_DIR\musuitoolbaricons.mif
-data=ZPRIVATE\10003A3F\APPS\musui_reg.rsc PRIVATE\10003A3F\IMPORT\APPS\musui_reg.rsc
-#ifndef RD_APPS_TO_EXES
-SCALABLE_IMAGE(System\Apps\musui,System\Apps\musui,musui)
-#else
-SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,musui)
-#endif
+
+//file=ABI_DIR\UREL\musui.exe PROGRAMS_DIR\musui.exe
+//data=DATAZ_\resource\apps\musui.rsc \resource\apps\musui.rsc
+//data=DATAZ_\private\10003a3f\import\apps\musui_reg.rsc \private\10003a3f\import\apps\musui_reg.rsc
/*========================================================================
* MUS General
* ========================================================================
*/
-file=ABI_DIR\urel\musmanagerserver.exe PROGRAMS_DIR\musmanagerserver.exe
-file=ABI_DIR\urel\musmanagerclient.dll SHARED_LIB_DIR\musmanagerclient.dll
-file=ABI_DIR\urel\musengine.dll SHARED_LIB_DIR\musengine.dll
-file=ABI_DIR\urel\musindicator.dll SHARED_LIB_DIR\musindicator.dll
-data=DATAZ_\private\1028238D\tone.amr private\1028238D\tone.amr
-data=DATAZ_\BITMAP_DIR\musindicatoricons.mif BITMAP_DIR\musindicatoricons.mif
-data=DATAZ_\BITMAP_DIR\musindicatoricons.mbm BITMAP_DIR\musindicatoricons.mbm
+//file=ABI_DIR\UREL\musmanagerserver.exe PROGRAMS_DIR\musmanagerserver.exe
+//file=ABI_DIR\UREL\musmanagerclient.dll SHARED_LIB_DIR\musmanagerclient.dll
+//file=ABI_DIR\UREL\musindicator.dll SHARED_LIB_DIR\musindicator.dll
+//data=DATAZ_\private\1028238D\tone.amr private\1028238D\tone.amr
+//data=DATAZ_\BITMAP_DIR\musindicatoricons.mif BITMAP_DIR\musindicatoricons.mif
+//data=DATAZ_\BITMAP_DIR\musindicatoricons.mbm BITMAP_DIR\musindicatoricons.mbm
/*========================================================================
* MUS Ecom Plugins
* ========================================================================
*/
-ECOM_PLUGIN(musaoplugin.dll,musaoplugin.rsc)
+//ECOM_PLUGIN(musaoplugin.dll,musaoplugin.rsc)
-ECOM_PLUGIN(musaiwprovider.dll,musaiwprovider.rsc)
-ECOM_PLUGIN(musavailabilityplugin.dll,musavailabilityplugin.rsc)
-ECOM_PLUGIN(muswpadapter.dll,muswpadapter.rsc)
+//ECOM_PLUGIN(musaiwprovider.dll,musaiwprovider.rsc)
+//ECOM_PLUGIN(musavailabilityplugin.dll,musavailabilityplugin.rsc)
+//ECOM_PLUGIN(muswpadapter.dll,muswpadapter.rsc)
//ECOM_PLUGIN(mmcctranscoder.dll,10282896.rsc)
+//ECOM_PLUGIN(musengineplugin.dll,musengineplugin.rsc)
// In __VOIP terminals, MuS uses same client resolver plugin as VoIP.
// In all other terminals, a separate resolver plugin is needed
#ifndef __VOIP
-ECOM_PLUGIN(mussipcrplugin.dll,mussipcrplugin.rsc)
+//ECOM_PLUGIN(mussipcrplugin.dll,mussipcrplugin.rsc)
#endif
@@ -74,15 +84,8 @@
* MUS Settings UI
* ========================================================================
*/
-ECOM_PLUGIN( mussettingsui.dll,mussettingsui.rsc )
-data=DATAZ_\BITMAP_DIR\mussettingsplugin.mif BITMAP_DIR\mussettingsplugin.mif
-
-
-/*========================================================================
-* MUS SIS stub
-* ========================================================================
-*/
-data=DATAZ_\system\install\multimediasharing_stub.sis system\install\multimediasharing_stub.sis
+//ECOM_PLUGIN( mussettingsui.dll,mussettingsui.rsc )
+//data=DATAZ_\BITMAP_DIR\mussettingsplugin.mif BITMAP_DIR\mussettingsplugin.mif
/*========================================================================
@@ -92,7 +95,7 @@
* in centralrepository. Hence central repositary uid should be specified as proxy data owner.
* ========================================================================
*/
-data=DATAZ_\private\1028238D\backup_registration.xml private\1028238D\backup_registration.xml
+//data=DATAZ_\private\1028238D\backup_registration.xml private\1028238D\backup_registration.xml
#endif
Binary file rom/multimediasharing_stub.SIS has changed
--- a/rom/multimediasharingresources.iby Thu Aug 19 09:51:39 2010 +0300
+++ b/rom/multimediasharingresources.iby Tue Aug 31 15:12:07 2010 +0300
@@ -20,37 +20,46 @@
#ifndef __MULTIMEDIASHARINGRESOURCES_IBY__
#define __MULTIMEDIASHARINGRESOURCES_IBY__
+#if defined(__MULTIMEDIA_SHARING) || defined(__CS_VIDEO_TELEPHONY)
+data=DATAZ_\data\others\lcvtview.docml data\others\lcvtview.docml
+#endif
+
#ifdef __MULTIMEDIA_SHARING
/*========================================================================
-* MUS UI
+* MUS UI DOCML
* ========================================================================
*/
-S60_APP_RESOURCE( musui )
+data=DATAZ_\data\others\lcidleview.docml data\others\lcidleview.docml
+data=DATAZ_\data\others\lcreceiveview.docml data\others\lcreceiveview.docml
+data=DATAZ_\data\others\lcsendview.docml data\others\lcsendview.docml
+data=DATAZ_\data\others\lctwowayview.docml data\others\lctwowayview.docml
+data=DATAZ_\data\others\lcreceiveonlyview.docml data\others\lcreceiveonlyview.docml
+
/*========================================================================
* MUS Settings UI
* ========================================================================
*/
-data=DATAZ_\RESOURCE_FILES_DIR\mussettingsuirsc.rsc RESOURCE_FILES_DIR\mussettingsuirsc.rsc
+//data=DATAZ_\RESOURCE_FILES_DIR\mussettingsuirsc.rsc RESOURCE_FILES_DIR\mussettingsuirsc.rsc
/*========================================================================
* MUS wireless provisioning adapter
* ========================================================================
*/
-data=DATAZ_\RESOURCE_FILES_DIR\muswpadapterresource.rsc RESOURCE_FILES_DIR\muswpadapterresource.rsc
+//data=DATAZ_\RESOURCE_FILES_DIR\muswpadapterresource.rsc RESOURCE_FILES_DIR\muswpadapterresource.rsc
/*========================================================================
* MUS AIW Provider Ecom Plugin
* ========================================================================
*/
-data=DATAZ_\RESOURCE_FILES_DIR\musaiwproviderui.rsc RESOURCE_FILES_DIR\musaiwproviderui.rsc
+//data=DATAZ_\RESOURCE_FILES_DIR\musaiwproviderui.rsc RESOURCE_FILES_DIR\musaiwproviderui.rsc
/*========================================================================
* MUS Indicator dll
* ========================================================================
*/
-data=DATAZ_\RESOURCE_FILES_DIR\musindicator.rsc RESOURCE_FILES_DIR\musindicator.rsc
+//data=DATAZ_\RESOURCE_FILES_DIR\musindicator.rsc RESOURCE_FILES_DIR\musindicator.rsc
#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdef_1_5_1.dtd Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,88 @@
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+ name CDATA #REQUIRED
+ schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+ name CDATA #REQUIRED
+ levels CDATA #IMPLIED
+ span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset name CDATA #REQUIRED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+ name CDATA #REQUIRED
+ level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+ unitID ID #REQUIRED
+ name CDATA #REQUIRED
+ mrp CDATA #REQUIRED
+ filter CDATA #IMPLIED
+ bldFile CDATA #REQUIRED
+ priority CDATA #IMPLIED
+ contract CDATA #IMPLIED
+ proFile CDATA #IMPLIED
+ qmakeArgs CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+ name CDATA #REQUIRED
+ mrp CDATA #REQUIRED
+ filter CDATA #IMPLIED
+ contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+ name CDATA #REQUIRED
+ version CDATA #REQUIRED
+ late (Y|N) #IMPLIED
+ filter CDATA #IMPLIED
+ contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+ name ID #REQUIRED
+ description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+ name ID #REQUIRED
+ description CDATA #REQUIRED
+ target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+ name ID #REQUIRED
+ abldTarget CDATA #REQUIRED
+ description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+ name ID #REQUIRED
+ abldOption CDATA #REQUIRED
+ description CDATA #REQUIRED
+ enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+ name ID #REQUIRED
+ description CDATA #REQUIRED
+ filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+ command CDATA #REQUIRED
+ targetList IDREFS #IMPLIED
+ unitParallel (Y | N | y | n) #REQUIRED
+ targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+ name CDATA #REQUIRED
+ cwd CDATA #REQUIRED
+ command CDATA #REQUIRED>
--- a/tsrc/CenrepEditor/Src/cenrepeditorappui.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/CenrepEditor/Src/cenrepeditorappui.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -63,8 +63,7 @@
{
iTabGroup = (CAknTabGroup*) iDecoratedTabGroup->DecoratedControl();
}
- iPhoneResources = CPhoneResources::NewL();
- iPhoneResources->ReadL();
+ iPhoneResources = CPhoneResources::NewL();
CCenrepEditorView1* view1 = new (ELeave) CCenrepEditorView1;
CleanupStack::PushL( view1 );
@@ -72,8 +71,7 @@
AddViewL( view1 ); // transfer ownership to CAknViewAppUi
CleanupStack::Pop(); // view1
- iOtherResources = COtherResources::NewL();
- iOtherResources->ReadL();
+ iOtherResources = COtherResources::NewL();
CCenrepEditorView2* view2 = new (ELeave) CCenrepEditorView2;
CleanupStack::PushL( view2 );
--- a/tsrc/CenrepEditor/Src/cenrepeditorlistbox2.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/CenrepEditor/Src/cenrepeditorlistbox2.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -16,10 +16,9 @@
*/
#include <aknnotewrappers.h>
#include <akntextsettingpage.h>
+
#include "cenrepeditorListbox2.h"
-#include "cenrepeditorListbox2.h"
-#include <e32debug.h>
CAknSettingItem* COtherResourcesListbox::CreateSettingItemL( TInt aIdentifier )
{
@@ -49,9 +48,6 @@
case EOtherResourceSessionSetupMethod:
settingItem=ConstructByValueL( aIdentifier,iOtherResources->iSessionSetupMethod);
break;
- case EOtherRResourcePrivacyVariationMode:
- settingItem=ConstructByValueL( aIdentifier, iOtherResources->iPrivacyVariation );
- break;
case EOtherResourceAutoRecord:
settingItem=ConstructByValueL( aIdentifier,iOtherResources->iAutoRecord);
break;
@@ -81,8 +77,28 @@
break;
case EOtherResourceEncodingDevice:
settingItem = new (ELeave)
- CAknTextSettingItem( aIdentifier, iOtherResources->iEncodingDeviceStr );
- break;
+ CAknTextSettingItem( aIdentifier, iOtherResources->iEncodingDeviceStr );
+ settingItem->SetSettingPageFlags(CAknTextSettingPage::EZeroLengthAllowed);
+ break;
+ case EOtherResourceAllowOnlyWithActiveCSCall:
+ settingItem=ConstructByValueL( aIdentifier,iOtherResources->iOnlyWithActiveCSCall );
+ break;
+ case EOtherResourceAllowOnlyIn3GNetwork:
+ settingItem=ConstructByValueL( aIdentifier,iOtherResources->iOnlyIn3GNetwork );
+ break;
+ case EOtherResourceCameraUsage:
+ settingItem=ConstructByValueL( aIdentifier,iOtherResources->iCameraUsage );
+ break;
+ case EOtherResourceVideoDirection:
+ settingItem=ConstructByValueL( aIdentifier,iOtherResources->iVideoDirection );
+ break;
+ case EOtherResourceVideoBandwidth:
+ settingItem = new (ELeave)
+ CAknIntegerEdwinSettingItem( aIdentifier,iOtherResources->iVideoBandwidth );
+ break;
+ case EOtherResourceFastMode:
+ settingItem = ConstructByValueL( aIdentifier, iOtherResources->iFastMode );
+ break;
default:
break;
}
@@ -104,47 +120,9 @@
}
-// ------------------------------------------------------------------
-// CPhoneResourcesListbox::ConstructByValueL( aIdentifier, )
-// ------------------------------------------------------------------
-//
-
-CAknSettingItem* COtherResourcesListbox::ConstructByValueL( TInt aIdentifier,
- TInt& aVal )
+CAknSettingItem* COtherResourcesListbox::ConstructByValueL(
+ TInt aIdentifier,
+ TInt& aVal)
{
- CAknSettingItem* settingItem = NULL ;
- if(aVal<0 )
- {
- settingItem = new (ELeave) CAknSettingItem(aIdentifier);
- settingItem->SetProtectionState(CAknSettingItem::ESettingItemProtected);
- }
- else
- {
- settingItem = new (ELeave)
- CAknEnumeratedTextPopupSettingItem(aIdentifier,aVal);
- }
- return settingItem ;
+ return new (ELeave) CAknEnumeratedTextPopupSettingItem(aIdentifier,aVal);
}
-
-
-void COtherResourcesListbox::EditItemL(TInt aIndex, TBool aCalledFromMenu)
- {
- CAknSettingItemList::EditItemL(aIndex, aCalledFromMenu);
-
- CAknSettingItem* currentItem = SettingItemArray()->At(aIndex);
- if ( currentItem->Identifier() == EOtherResourceEncodingDevice )
- {
- TLex lex( currentItem->SettingTextL() );
- TUint uid;
- TInt err = lex.Val(uid, EHex);
-
- if ( (err != KErrNone) || !lex.Eos() )
- {
- currentItem->LoadL();
- currentItem->UpdateListBoxTextL();
-
- CAknWarningNote* warningNote = new (ELeave) CAknWarningNote;
- warningNote->ExecuteLD(_L("Invalid value"));
- }
- }
- }
--- a/tsrc/CenrepEditor/Src/cenrepeditormodel.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/CenrepEditor/Src/cenrepeditormodel.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -40,7 +40,6 @@
CPhoneResources* CPhoneResources::NewLC()
{
- // create a new expense object
CPhoneResources* self = new (ELeave) CPhoneResources();
CleanupStack::PushL(self);
self->ConstructL();
@@ -54,112 +53,79 @@
return self;
}
+CPhoneResources::~CPhoneResources()
+ {
+ }
+
void CPhoneResources::ConstructL()
{
- iCameraAvailability = -1;
- iKeypadAvailability = -1 ;
- iVideoPlayerAvailability = -1;
- iCameraInformation = -1;
- iKodiakPhoneCall = -1;
- iDummy = 1; // just a postive value , dirty idea but just works at this time
- }
+ // If a P&S key is not found, set it to KErrNotFound.
+ // This is why the RProperty::Get return values are not handled below.
+ iCameraAvailability = KErrNotFound;
+ RProperty::Get(NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KCameraAvailability,
+ iCameraAvailability);
+
+ iKeypadAvailability = KErrNotFound;
+ RProperty::Get(NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KKeypadAvailability,
+ iKeypadAvailability);
-void CPhoneResources::ReadL()
- {
- TInt err = KErrNone;
- // 1. camera property
- err = RProperty::Get( NMusResourceApi::KCategoryUid,
- NMusResourceApi::KCameraAvailability,
- iCameraAvailability);
- if(err)HandleError(ETrue,err,_L("CameraAvailability"));
- // 2. keypad property
- err = RProperty::Get( NMusResourceApi::KCategoryUid,
- NMusResourceApi::KKeypadAvailability,
- iKeypadAvailability );
- if(err)HandleError(ETrue , err,_L("KeypadAvailability"));
- // 3. video player property
- err = RProperty::Get( NMusResourceApi::KCategoryUid,
- NMusResourceApi::KVideoPlayerAvailability,
- iVideoPlayerAvailability );
- if(err)HandleError( ETrue, err ,_L("VideoPlayerAvailability"));
- // 3. video player property
- err = RProperty::Get( NMusResourceApi::KCategoryUid,
- NMusResourceApi::KCameraInformation,
- iCameraInformation );
- if(err)HandleError( ETrue, err ,_L("CameraInformation"));
- err = RProperty::Get( KPSUidCtsyCallInformation,
- KCTsyKodiakPtt,
- iKodiakPhoneCall );
- if(err)
+ iVideoPlayerAvailability = KErrNotFound;
+ RProperty::Get(NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KVideoPlayerAvailability,
+ iVideoPlayerAvailability );
+
+ iCameraInformation = KErrNotFound;
+ RProperty::Get(NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KCameraInformation,
+ iCameraInformation );
+
+ iKodiakPhoneCall = KErrNotFound;
+ TInt err = RProperty::Get(KPSUidCtsyCallInformation,
+ KCTsyKodiakPtt,
+ iKodiakPhoneCall );
+ if (err != KErrNone)
{
iKodiakPhoneCall = EPSCTsyKodiakPttNotActive;
RProperty::Define(KPSUidCtsyCallInformation,KCTsyKodiakPtt,EPSCTsyKodiakPttNotActive);
- }
- }
-
-
-CPhoneResources::~CPhoneResources()
- {
+ }
}
void CPhoneResources::SaveL()
{
- //TInt err = KErrNone;
+ SetValueL(NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KCameraAvailability,
+ iCameraAvailability);
+
+ SetValueL(NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KKeypadAvailability,
+ iKeypadAvailability);
- User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid,
- NMusResourceApi::KCameraAvailability,
- iCameraAvailability));
- //if(err)HandleError( EFalse, err ,_L("CameraAvailability"));
- // 2. keypad property
- User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid,
- NMusResourceApi::KKeypadAvailability,
- iKeypadAvailability ));
- //if(err)HandleError(EFalse, err,_L("KeypadAvailability"));
- // 3. video player property
- User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid,
- NMusResourceApi::KVideoPlayerAvailability,
- iVideoPlayerAvailability ));
- //if(err)HandleError(EFalse, err,_L("VideoPlayerAvailability"));
- // 3. video player property
- User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid,
- NMusResourceApi::KCameraInformation,
- iCameraInformation ));
- //if(err)HandleError(EFalse, err,_L("CameraInformation"));
- // 4. Kodiak PS Key
- User::LeaveIfError(SetValueL( KPSUidCtsyCallInformation,
- KCTsyKodiakPtt,
- iKodiakPhoneCall ));
- //if(err)HandleError( EFalse, err ,_L("KodiakPSKeyInformation"));
+ SetValueL(NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KVideoPlayerAvailability,
+ iVideoPlayerAvailability);
+
+ SetValueL(NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KCameraInformation,
+ iCameraInformation);
+
+ SetValueL(KPSUidCtsyCallInformation,
+ KCTsyKodiakPtt,
+ iKodiakPhoneCall);
}
-TInt CPhoneResources::SetValueL(TUid aCategory, TUint aKey, TInt aValue)
- {
- if(aValue<0)return KErrNone; // dont care if the key is not read intially
- return RProperty::Set( aCategory, aKey, aValue );
- }
-
-
-void CPhoneResources::HandleError(TBool aType ,TInt aError , TPtrC aKeyName )
+void CPhoneResources::SetValueL(TUid aCategory, TUint aKey, TInt aValue)
{
- CAknErrorNote *dlg = new CAknErrorNote(ETrue);
- TBuf<100> buf;
- if(aType)
+ // Don't care if the key is not found initially
+ if (aValue >= 0)
{
- buf.Append(_L("Unable to Read Key "));
+ User::LeaveIfError(RProperty::Set(aCategory, aKey, aValue));
}
- else
- {
- buf.Append(_L("Unable to Save "));
- }
- buf.Append(aKeyName);
- buf.Append(_L(" Error "));
- buf.AppendNum(aError);
- dlg->ExecuteLD(buf);
}
COtherResources* COtherResources::NewLC()
{
- // create a new expense object
COtherResources* self = new (ELeave) COtherResources();
CleanupStack::PushL(self);
self->ConstructL();
@@ -175,185 +141,157 @@
void COtherResources::ConstructL()
{
- iActivation = -1 ;
- iOperatorVariant = -1 ;
- iAuditoryNotification = -1;
- iPopupNotification = -1 ;
- iPopupNotificationType = -1 ;
- iEdgeDtmSupport = -1 ;
- iSessionSetupMethod = -1 ;
- iAutoRecord = -1 ;
- iVideoLocation = -1 ;
- iSipProfileId = -1 ;
- iUiOrientation = -1 ;
- iCapabilityQuery = -1;
- iProductModeVariation=-1;
- iEncodingDevice = -1;
- iPrivacyVariation = -1;
- iDummy = 1; // just a postive value
+ iRepository = CRepository::NewL(MusSettingsKeys::KRepositoryUid);
+
+ // If a CenRep key is not found, set it to KErrNotFound.
+ // This is why the CRepository::Get return values are not handled below.
+ iActivation = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KActivation, iActivation);
+
+ iOperatorVariant = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KOperatorVariant,iOperatorVariant);
+
+ iAuditoryNotification = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KAuditoryNotification, iAuditoryNotification);
+
+ iPopupNotification = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KPopupNotification, iPopupNotification);
+
+ iPopupNotificationType = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KPopupNotificationType, iPopupNotificationType);
+
+ iEdgeDtmSupport = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport);
+
+ iSessionSetupMethod = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod);
+
+ iAutoRecord = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KAutoRecord, iAutoRecord);
+
+ iVideoLocation = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KVideoLocation, iVideoLocation);
+
+ iSipProfileId = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KSipProfileId, iSipProfileId);
+
+ iUiOrientation = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KUiOrientation, iUiOrientation);
+
+ iCapabilityQuery = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KCapabilityQuery, iCapabilityQuery);
+
+ iProductModeVariation = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KProductModeVariation, iProductModeVariation);
+
+ iRepository->Get(MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo );
+
+ iEncodingDevice = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KEncodingDevice, iEncodingDevice );
+ iEncodingDeviceStr.Zero();
+ if ( iEncodingDevice >= 0 )
+ {
+ iEncodingDeviceStr.AppendNum(iEncodingDevice, EHex);
+ }
+
+ iOnlyWithActiveCSCall = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KAllowOnlyWithActiveCSCall, iOnlyWithActiveCSCall);
+
+ iOnlyIn3GNetwork = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KAllowOnlyIn3GNetwork, iOnlyIn3GNetwork);
+
+ iCameraUsage = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KCameraUsage, iCameraUsage);
+
+ iVideoDirection = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KVideoDirection, iVideoDirection);
+
+ iVideoBandwidth = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KVideoBandwidth, iVideoBandwidth);
+
+ iFastMode = KErrNotFound;
+ iRepository->Get(MusSettingsKeys::KFastStartupMode, iFastMode);
}
-void COtherResources::ReadL()
- {
-
- TRAPD(err,ReadCRKeyValuesL());
- if(err) HandleError (ETrue,err,_L("Read Error"));
-
- }
-
-void COtherResources::ReadCRKeyValuesL()
-{
-
- TInt err=KErrNone;
- CRepository* cr = NULL ;
- TRAP(err,cr = CRepository::NewL( MusSettingsKeys::KRepositoryUid ));
- cr->CleanupCancelTransactionPushL();
- if(err)
- {
- CAknErrorNote *dlg = new CAknErrorNote(ETrue);
- dlg->ExecuteLD(_L(\
- "Unable to Construct CRepository for UID 0x1028238B"));
- return ; // dont leave
- }
-
- ReadKeyValueL( cr, MusSettingsKeys::KActivation,iActivation );
- ReadKeyValueL( cr, MusSettingsKeys::KOperatorVariant,iOperatorVariant);
- ReadKeyValueL( cr, MusSettingsKeys::KAuditoryNotification, iAuditoryNotification);
- ReadKeyValueL( cr, MusSettingsKeys::KPopupNotification, iPopupNotification);
- ReadKeyValueL( cr, MusSettingsKeys::KPopupNotificationType, iPopupNotificationType);
- ReadKeyValueL( cr, MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport);
- ReadKeyValueL( cr, MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod);
- ReadKeyValueL( cr, MusSettingsKeys::KAutoRecord, iAutoRecord);
- ReadKeyValueL( cr, MusSettingsKeys::KVideoLocation, iVideoLocation);
- ReadKeyValueL( cr, MusSettingsKeys::KSipProfileId, iSipProfileId);
- ReadKeyValueL( cr, MusSettingsKeys::KUiOrientation, iUiOrientation);
- ReadKeyValueL( cr, MusSettingsKeys::KCapabilityQuery, iCapabilityQuery);
- ReadKeyValueL( cr, MusSettingsKeys::KProductModeVariation, iProductModeVariation);
- ReadKeyValueL( cr, MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo );
- ReadKeyValueL( cr, MusSettingsKeys::KEncodingDevice, iEncodingDevice );
- ReadKeyValueL( cr, MusSettingsKeys::KPrivacyExchange, iPrivacyVariation );
-
- iEncodingDeviceStr.Zero();
- iEncodingDeviceStr.AppendNum(iEncodingDevice, EHex);
-
- CleanupStack::PopAndDestroy(cr);
- delete cr;
-
-}
-
-
COtherResources::~COtherResources()
- {
- }
+ {
+ delete iRepository;
+ }
void COtherResources::SaveL()
{
-
- TRAPD(err,SaveCRKeyValuesL());
- if(err) HandleError (ETrue,err,_L("Save Error"));
+ User::LeaveIfError(
+ iRepository->StartTransaction(CRepository::EConcurrentReadWriteTransaction));
+ iRepository->CleanupCancelTransactionPushL();
- }
-
-void COtherResources::SaveCRKeyValuesL()
- {
- CRepository* cr = NULL ;
- TRAPD(err,cr = CRepository::NewL( MusSettingsKeys::KRepositoryUid ));
- cr->CleanupCancelTransactionPushL();
- if(err)
- {
- CAknErrorNote *dlg = new CAknErrorNote(ETrue);
- dlg->ExecuteLD(_L(\
- "Unable to Construct CRepository for UID 0x1028238B"));
- User::Leave(err);
- }
- SetKeyValueL( cr,MusSettingsKeys::KActivation, iActivation);
- SetKeyValueL( cr,MusSettingsKeys::KOperatorVariant, iOperatorVariant);
- SetKeyValueL( cr,MusSettingsKeys::KAuditoryNotification, iAuditoryNotification);
- SetKeyValueL( cr,MusSettingsKeys::KPopupNotification, iPopupNotification);
- SetKeyValueL( cr,MusSettingsKeys::KPopupNotificationType, iPopupNotificationType);
- SetKeyValueL( cr,MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport);
- SetKeyValueL( cr,MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod);
- SetKeyValueL( cr,MusSettingsKeys::KAutoRecord, iAutoRecord);
- SetKeyValueL( cr,MusSettingsKeys::KVideoLocation, iVideoLocation);
- SetKeyValueL( cr,MusSettingsKeys::KSipProfileId, iSipProfileId);
- SetKeyValueL( cr,MusSettingsKeys::KUiOrientation, iUiOrientation);
- SetKeyValueL( cr,MusSettingsKeys::KCapabilityQuery, iCapabilityQuery);
- SetKeyValueL( cr,MusSettingsKeys::KProductModeVariation, iProductModeVariation);
- SetKeyValueL( cr,MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo );
- SetKeyValueL( cr,MusSettingsKeys::KPrivacyExchange, iPrivacyVariation );
-
+ SetKeyValueL(MusSettingsKeys::KActivation, iActivation);
+ SetKeyValueL(MusSettingsKeys::KOperatorVariant, iOperatorVariant);
+ SetKeyValueL(MusSettingsKeys::KAuditoryNotification, iAuditoryNotification);
+ SetKeyValueL(MusSettingsKeys::KPopupNotification, iPopupNotification);
+ SetKeyValueL(MusSettingsKeys::KPopupNotificationType, iPopupNotificationType);
+ SetKeyValueL(MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport);
+ SetKeyValueL(MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod);
+ SetKeyValueL(MusSettingsKeys::KAutoRecord, iAutoRecord);
+ SetKeyValueL(MusSettingsKeys::KVideoLocation, iVideoLocation);
+ SetKeyValueL(MusSettingsKeys::KSipProfileId, iSipProfileId);
+ SetKeyValueL(MusSettingsKeys::KUiOrientation, iUiOrientation);
+ SetKeyValueL(MusSettingsKeys::KCapabilityQuery, iCapabilityQuery);
+ SetKeyValueL(MusSettingsKeys::KProductModeVariation, iProductModeVariation);
+ User::LeaveIfError(
+ iRepository->Set(MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo));
TLex lex( iEncodingDeviceStr );
- TUint uid;
- err = lex.Val(uid, EHex);
- if ( (err == KErrNone) && lex.Eos() )
+ TUint tmpUid;
+ lex.SkipSpace();
+ if ( lex.Val(tmpUid, EHex) == KErrNone )
{
- iEncodingDevice = uid;
- SetKeyValueL( cr, MusSettingsKeys::KEncodingDevice, iEncodingDevice );
- }
-
- CleanupStack::PopAndDestroy(cr);
- delete cr;
- }
-
-void COtherResources::SetKeyValueL(CRepository* repository, const TInt & aKey , TInt & aVal)
- {
- if(aVal<0) return; // dont care if key is not intially read
- TUint32 key(aKey);
- User::LeaveIfError(repository->StartTransaction(
- CRepository::EConcurrentReadWriteTransaction));
- User::LeaveIfError(repository->Set(key,aVal));
- User::LeaveIfError(repository->CommitTransaction(key));
- }
-
-void COtherResources::ReadKeyValueL(CRepository* repository, const TInt & aKey , TInt & aVal)
- {
- TUint32 key(aKey);
- User::LeaveIfError(repository->StartTransaction(
- CRepository::EConcurrentReadWriteTransaction));
- User::LeaveIfError(repository->Get(key,aVal));
- User::LeaveIfError(repository->CommitTransaction(key));
- }
-
-void COtherResources::SetKeyValueL(CRepository* repository, TInt aKey, const TDesC& aVal)
- {
- TUint32 key(aKey);
- User::LeaveIfError(repository->StartTransaction(
- CRepository::EConcurrentReadWriteTransaction));
- User::LeaveIfError(repository->Set(key,aVal));
- User::LeaveIfError(repository->CommitTransaction(key));
- }
-
-void COtherResources::ReadKeyValueL(CRepository* repository, TInt aKey, TDes& aVal)
- {
- TUint32 key(aKey);
- User::LeaveIfError(repository->StartTransaction(
- CRepository::EConcurrentReadWriteTransaction));
- User::LeaveIfError(repository->Get(key,aVal));
- User::LeaveIfError(repository->CommitTransaction(key));
- }
-
-void COtherResources::HandleError(TBool aType ,
- TInt aError , TPtrC aKeyName )
- {
- CAknErrorNote *dlg = new CAknErrorNote(ETrue);
- TBuf<100> buf;
- if(aType)
- {
- buf.Append(_L("Unable to Read Key "));
+ iEncodingDevice = tmpUid;
}
else
{
- buf.Append(_L("Unable to Save Key "));
+ iEncodingDevice = KErrNotFound;
}
- buf.Append(aKeyName);
- buf.Append(_L(" Error "));
- buf.AppendNum(aError);
- dlg->ExecuteLD(buf);
+ SetKeyValueL(MusSettingsKeys::KEncodingDevice, iEncodingDevice);
+ SetKeyValueL(MusSettingsKeys::KAllowOnlyWithActiveCSCall, iOnlyWithActiveCSCall);
+ SetKeyValueL(MusSettingsKeys::KAllowOnlyIn3GNetwork, iOnlyIn3GNetwork);
+ SetKeyValueL(MusSettingsKeys::KCameraUsage, iCameraUsage);
+ SetKeyValueL(MusSettingsKeys::KVideoDirection, iVideoDirection);
+ SetKeyValueL(MusSettingsKeys::KVideoBandwidth, iVideoBandwidth);
+ SetKeyValueL(MusSettingsKeys::KFastStartupMode, iFastMode);
+
+ TUint32 modifiedKeyCount(0);
+ User::LeaveIfError(iRepository->CommitTransaction(modifiedKeyCount));
+ CleanupStack::Pop(); // transaction
+ }
+
+void COtherResources::SetKeyValueL(
+ const TUint32& aKey,
+ TInt& aVal)
+ {
+ TBool keyExistsInRepository(EFalse);
+ TInt tmpVal(0);
+ keyExistsInRepository = (iRepository->Get(aKey,tmpVal) == KErrNone);
+ if (aVal < 0)
+ {
+ if (keyExistsInRepository)
+ {
+ User::LeaveIfError(iRepository->Delete(aKey));
+ }
+ }
+ else
+ {
+ if (keyExistsInRepository)
+ {
+ User::LeaveIfError(iRepository->Set(aKey,aVal));
+ }
+ else
+ {
+ User::LeaveIfError(iRepository->Create(aKey,aVal));
+ }
+ }
}
CMusApplication* CMusApplication::NewLC()
{
- // create a new expense object
CMusApplication* self = new (ELeave) CMusApplication();
CleanupStack::PushL(self);
self->ConstructL();
@@ -370,8 +308,8 @@
void CMusApplication::ConstructL()
{
iUseCase = MultimediaSharing::EMusLiveVideo;
- //iMultimediasharing=CMusManager::NewL();
- //iMultimediasharing->ExamineAvailabilityL();
+ iMultimediasharing=CMusManager::NewL();
+ iMultimediasharing->ExamineAvailabilityL();
}
CMusApplication::~CMusApplication()
@@ -392,10 +330,10 @@
TBool CMusApplication::Start(TInt aUseCase)
{
- /*TRAPD(err,iMultimediasharing->StartApplicationL(
+ TRAPD(err,iMultimediasharing->StartApplicationL(
MultimediaSharing::TMusUseCase(aUseCase)));
if(err)HandleError(err,_L("MusStart "));
- return (err)?EFalse :ETrue; */
+ return (err)?EFalse :ETrue;
}
TBool CMusApplication::Stop()
@@ -414,21 +352,9 @@
}
TInt CMusApplication::MonitorAvailability()
{
- TInt status = KErrGeneral;
- /*TRequestStatus requestStatus;
- TRAPD(err,iMultimediasharing->
- MonitorAvailabilityL(
- requestStatus,
- MultimediaSharing::TMusAvailabilityStatus(status))
- );
- if(err)HandleError(err,_L("MusAvailability "));
- User::WaitForRequest(requestStatus);
- */
- return status;
+ return KErrGeneral;
}
-
-
TBool CMusApplication::AvailabilityInfo()
{
TBuf<100> buf(_L("Availability Info: "));
@@ -516,8 +442,6 @@
(aStart) ? buf.Append(_L("Started")) : buf.Append(_L("Stoped"));
dlg->ExecuteLD(buf);
}
-
-
// End of File
--- a/tsrc/CenrepEditor/data/cenrepeditor.rss Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/CenrepEditor/data/cenrepeditor.rss Tue Aug 31 15:12:07 2010 +0300
@@ -137,27 +137,28 @@
{
type = ENaviDecoratorControlTabGroup;
control = TAB_GROUP
- {
- tab_width = EAknTabWidthWithThreeTabs; // three tabs
- active = 0;
- tabs = {
- TAB
- {
+ {
+ tab_width = EAknTabWidthWithThreeTabs; // three tabs
+ active = 0;
+ tabs =
+ {
+ TAB
+ {
id = EAvkonViewExampleView1Tab; // from application hrh
txt = qtn_view1_tab;
},
- TAB
- {
+ TAB
+ {
id = EAvkonViewExampleView2Tab;
txt = qtn_view2_tab;
- },
- TAB
- {
+ },
+ TAB
+ {
id = EAvkonViewExampleView3Tab;
txt = qtn_view3_tab;
- }
- };
- };
+ }
+ };
+ };
}
@@ -175,21 +176,22 @@
}
RESOURCE CBA r_cenrepeditor_softkeys_save_exit
- {
- buttons =
- {
- CBA_BUTTON
- {
- id = EAknSoftKeySave;
- txt = qtn_cenrepeditor_cba_text_save;
- },
- CBA_BUTTON
- {
- id = EAknSoftKeyExit;
- txt = qtn_cenrepeditor_cba_text_Exit;
- }
- };
- }
+ {
+ buttons =
+ {
+ CBA_BUTTON
+ {
+ id = EAknSoftKeySave;
+ txt = qtn_cenrepeditor_cba_text_save;
+ },
+ CBA_BUTTON
+ {
+ id = EAknSoftKeyExit;
+ txt = qtn_cenrepeditor_cba_text_Exit;
+ }
+ };
+ }
+
RESOURCE AVKON_SETTING_ITEM_LIST r_phone_resource_details_settings_list
{
flags= EAknSettingItemNumberedStyle;
@@ -200,85 +202,60 @@
AVKON_SETTING_ITEM
{
identifier = EPhoneResouceCamera;
- setting_page_resource = r_availability_settings_page;
+ setting_page_resource = r_popup_settings_page;
name = "CameraAvailability";
associated_resource = r_availability_settings_page_texts;
},
AVKON_SETTING_ITEM
{
identifier = EPhoneResouceKeypad;
- setting_page_resource = r_availability_settings_page;
+ setting_page_resource = r_popup_settings_page;
name = "KeypadAvailability";
associated_resource = r_availability_settings_page_texts;
},
- AVKON_SETTING_ITEM
- {
- identifier = EPhoneResouceVideoPlayer;
- setting_page_resource = r_availability_settings_page;
- name = "VideoPlayerAvailability";
+ AVKON_SETTING_ITEM
+ {
+ identifier = EPhoneResouceVideoPlayer;
+ setting_page_resource = r_popup_settings_page;
+ name = "VideoPlayerAvailability";
associated_resource = r_availability_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EPhoneResouceCameraInformation;
- setting_page_resource = r_CameraInformation_settings_page;
- name = "CameraInformation";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EPhoneResouceCameraInformation;
+ setting_page_resource = r_popup_settings_page;
+ name = "CameraInformation";
associated_resource = r_CameraInformation_settings_page_texts;
- },
+ },
AVKON_SETTING_ITEM
- {
- identifier = EKodiakPhoneCall;
- setting_page_resource = r_kodiak_call_settings_page;
- name = "KodiakPTT";
+ {
+ identifier = EKodiakPhoneCall;
+ setting_page_resource = r_popup_settings_page;
+ name = "KodiakPTT";
associated_resource = r_kodiak_call_settings_page_texts;
- }
+ }
};
}
//camera
-RESOURCE AVKON_SETTING_PAGE r_availability_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_availability_settings_page_texts
{
setting_texts_resource = r_availability_page_texts_array;
- popped_up_texts_resource = r_availability_settings_page_popedup;
}
RESOURCE ARRAY r_availability_page_texts_array
{
- items =
- {
+ items =
+ {
AVKON_ENUMERATED_TEXT { value=1; text = "1.EAvailable"; },
AVKON_ENUMERATED_TEXT { value=2; text = "2.ENotAvailable"; }
};
}
-RESOURCE ARRAY r_availability_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "1.EAvailable"; },
- LBUF { txt = "2.ENotAvailable"; }
- };
- }
//camera information
-RESOURCE AVKON_SETTING_PAGE r_CameraInformation_settings_page
- {
- number = 1;
- label = "Value";
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_CameraInformation_settings_page_texts
{
setting_texts_resource = r_CameraInformation_settings_page_texts_array;
@@ -287,7 +264,7 @@
RESOURCE ARRAY r_CameraInformation_settings_page_texts_array
{
- items =
+ items =
{
AVKON_ENUMERATED_TEXT { value=1; text = "1.EUsePrimaryCamera"; },
AVKON_ENUMERATED_TEXT { value=2; text = "2.EUseSecondaryCamera"; }
@@ -296,45 +273,28 @@
RESOURCE ARRAY r_CameraInformation_settings_page_popedup
{
- items =
- {
+ items =
+ {
LBUF { txt = "1.EUsePrimaryCamera"; },
LBUF { txt = "2.EUseSecondaryCamera"; }
};
}
//kodiak PTT
-RESOURCE AVKON_SETTING_PAGE r_kodiak_call_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_kodiak_call_settings_page_texts
{
setting_texts_resource = r_kodiak_call_settings_page_texts_array;
- popped_up_texts_resource = r_kodiak_call_settings_page_popedup;
}
RESOURCE ARRAY r_kodiak_call_settings_page_texts_array
{
- items =
+ items =
{
AVKON_ENUMERATED_TEXT { value=0; text = "0.EPSCTsyKodiakPttNotActive"; },
AVKON_ENUMERATED_TEXT { value=1; text = "1.EPSCTsyKodiakPttActive"; }
};
}
-RESOURCE ARRAY r_kodiak_call_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "0.EPSCTsyKodiakPttNotActive"; },
- LBUF { txt = "1.EPSCTsyKodiakPttActive"; }
- };
- }
-
RESOURCE POPUP_SETTING_LIST r_enumerated_text_setting_other_editor
{
// other="-1.Undefined";
@@ -361,477 +321,406 @@
RESOURCE AVKON_SETTING_ITEM_LIST r_other_resource_details_settings_list
- {
+ {
flags= EAknSettingItemNumberedStyle;
- title = qtn_otherresource_details;
- initial_number = 1;
- items =
- {
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceActivation;
- setting_page_resource = r_activation_editor_settings_page;
- name = "Activation";
+ title = qtn_otherresource_details;
+ initial_number = 1;
+ items =
+ {
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceActivation;
+ setting_page_resource = r_popup_settings_page;
+ name = "Activation";
associated_resource = r_activation_editor_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceOperatorVariant;
- setting_page_resource = r_operator_editor_settings_page;
- name = "OperatorVariant";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceOperatorVariant;
+ setting_page_resource = r_popup_settings_page;
+ name = "OperatorVariant";
associated_resource = r_operator_editor_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceAuditoryNotification;
- setting_page_resource = r_Auditory_editor_settings_page;
- name = "AuditoryNotification";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceAuditoryNotification;
+ setting_page_resource = r_popup_settings_page;
+ name = "AuditoryNotification";
associated_resource = r_Auditory_editor_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourcePopupNotification;
- setting_page_resource = r_Popup_editor_settings_page;
- name = "PopupNotification";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourcePopupNotification;
+ setting_page_resource = r_popup_settings_page;
+ name = "PopupNotification";
associated_resource = r_Popup_editor_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourcePopupNotificationType;
- setting_page_resource = r_PopupType_editor_settings_page;
- name = "PopupNotificationType";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourcePopupNotificationType;
+ setting_page_resource = r_popup_settings_page;
+ name = "PopupNotificationType";
associated_resource = r_PopupType_editor_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceEdgeDtmSupport;
- setting_page_resource = r_edgedtm_editor_settings_page;
- name = "EdgeDtmSupport";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceEdgeDtmSupport;
+ setting_page_resource = r_popup_settings_page;
+ name = "EdgeDtmSupport";
associated_resource = r_edgedtm_editor_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceSessionSetupMethod;
- setting_page_resource = r_signal_editor_settings_page;
- name = "ForceInternetSignaling";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceSessionSetupMethod;
+ setting_page_resource = r_popup_settings_page;
+ name = "ForceInternetSignaling";
associated_resource = r_signal_editor_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceAutoRecord;
- setting_page_resource = r_videosaving_editor_settings_page;
- name = "AutoRecord";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceAutoRecord;
+ setting_page_resource = r_popup_settings_page;
+ name = "AutoRecord";
associated_resource = r_videosaving_editor_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceVideoLocation;
- setting_page_resource = r_editor_settings_page;
- name = "VideoLocation";
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceSipProfileId;
- setting_page_resource = r_editor_settings_page;
- name = "SipProfileId";
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceUiOrientation;
- setting_page_resource = r_uiorientation_editor_settings_page;
- name = "UiOrientation";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceVideoLocation;
+ setting_page_resource = r_editor_settings_page;
+ name = "VideoLocation";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceSipProfileId;
+ setting_page_resource = r_editor_settings_page;
+ name = "SipProfileId";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceUiOrientation;
+ setting_page_resource = r_popup_settings_page;
+ name = "UiOrientation";
associated_resource = r_uiorientation_editor_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceCapabilityQuery;
- setting_page_resource = r_capquery_editor_settings_page;
- name = "CapabilityQuery";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceCapabilityQuery;
+ setting_page_resource = r_popup_settings_page;
+ name = "CapabilityQuery";
associated_resource = r_capquery_editor_settings_page_texts;
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceProductModeVariationKey;
- setting_page_resource = r_editor_settings_page;
- name = "ProductModeVariation";
- },
- AVKON_SETTING_ITEM
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceProductModeVariationKey;
+ setting_page_resource = r_editor_settings_page;
+ name = "ProductModeVariation";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceEncoderConfigurationInfo;
+ setting_page_resource = r_encoder_info_settings_page;
+ name = "EncoderConfigurationInfo";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceEncodingDevice;
+ setting_page_resource = r_encoding_device_settings_page;
+ name = "EncodingDevice";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceAllowOnlyWithActiveCSCall;
+ setting_page_resource = r_popup_settings_page;
+ name = "AllowWithCSCallOnly";
+ associated_resource = r_activecscall_editor_settings_page_texts;
+ },
+ AVKON_SETTING_ITEM
{
- identifier = EOtherRResourcePrivacyVariationMode;
- setting_page_resource = r_privacy_settings_page;
- name = "Privacy variation";
- associated_resource = r_privacy_editor_settings_page_texts;
+ identifier = EOtherResourceAllowOnlyIn3GNetwork;
+ setting_page_resource = r_popup_settings_page;
+ name = "AllowIn3GNetworkOnly";
+ associated_resource = r_3gnetwork_editor_settings_page_texts;
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceCameraUsage;
+ setting_page_resource = r_popup_settings_page;
+ name = "CameraUsage";
+ associated_resource = r_camera_usage_settings_page_texts;
},
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceEncoderConfigurationInfo;
- setting_page_resource = r_encoder_info_settings_page;
- name = "EncoderConfigurationInfo";
- },
- AVKON_SETTING_ITEM
- {
- identifier = EOtherResourceEncodingDevice;
- setting_page_resource = r_encoding_device_settings_page;
- name = "EncodingDevice";
- }
- };
- }
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceVideoDirection;
+ setting_page_resource = r_popup_settings_page;
+ name = "VideoDirection";
+ associated_resource = r_video_direction_settings_page_texts;
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceVideoBandwidth;
+ setting_page_resource = r_editor_settings_page;
+ name = "VideoBandwidth,KBits";
+ },
+ AVKON_SETTING_ITEM
+ {
+ identifier = EOtherResourceFastMode;
+ setting_page_resource = r_popup_settings_page;
+ name = "FastStartupMode";
+ associated_resource = r_fast_mode_settings_page_texts;
+ }
+ };
+ }
//activation
-RESOURCE AVKON_SETTING_PAGE r_activation_editor_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_activation_editor_settings_page_texts
{
setting_texts_resource = r_activation_editor_settings_page_texts_array;
- popped_up_texts_resource = r_activation_editor_settings_page_popedup;
}
RESOURCE ARRAY r_activation_editor_settings_page_texts_array
{
- items =
+ items =
{
- AVKON_ENUMERATED_TEXT { value=0; text = "0.EAlwaysActive"; },
- AVKON_ENUMERATED_TEXT { value=1; text = "1.ENever"; }
- };
- }
-
-RESOURCE ARRAY r_activation_editor_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "0.EAlwaysActive"; },
- LBUF { txt = "1.ENever"; }
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
+ AVKON_ENUMERATED_TEXT { value=0; text = "0.EAlwaysActive"; },
+ AVKON_ENUMERATED_TEXT { value=1; text = "1.EActiveInHomeNetworks"; },
+ AVKON_ENUMERATED_TEXT { value=2; text = "2.ENever"; }
};
}
//operator variant
-RESOURCE AVKON_SETTING_PAGE r_operator_editor_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_operator_editor_settings_page_texts
{
setting_texts_resource = r_operator_editor_settings_page_texts_array;
- popped_up_texts_resource = r_operator_editor_settings_page_popedup;
}
RESOURCE ARRAY r_operator_editor_settings_page_texts_array
{
- items =
+ items =
{
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
AVKON_ENUMERATED_TEXT { value=0; text = "0.EStandard"; },
AVKON_ENUMERATED_TEXT { value=1; text = "1.EOperatorSpecific"; }
};
}
-RESOURCE ARRAY r_operator_editor_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "0.EStandard"; },
- LBUF { txt = "1.EOperatorSpecific"; }
- };
- }
-
//Auditory Notification
-RESOURCE AVKON_SETTING_PAGE r_Auditory_editor_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_Auditory_editor_settings_page_texts
{
setting_texts_resource = r_Auditory_editor_settings_page_texts_array;
- popped_up_texts_resource = r_Auditory_editor_settings_page_popedup;
}
RESOURCE ARRAY r_Auditory_editor_settings_page_texts_array
{
- items =
+ items =
{
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
AVKON_ENUMERATED_TEXT { value=0; text = "0.EAuditoryNotificationOn"; },
AVKON_ENUMERATED_TEXT { value=1; text = "1.EAuditoryNotificationOff"; }
};
}
-RESOURCE ARRAY r_Auditory_editor_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "0.EAuditoryNotificationOn"; },
- LBUF { txt = "1.EAuditoryNotificationOff"; }
- };
- }
-
-
//Popup Notification
-RESOURCE AVKON_SETTING_PAGE r_Popup_editor_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_Popup_editor_settings_page_texts
{
setting_texts_resource = r_Popup_editor_settings_page_texts_array;
- popped_up_texts_resource = r_Popup_editor_settings_page_popedup;
}
RESOURCE ARRAY r_Popup_editor_settings_page_texts_array
{
- items =
+ items =
{
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
AVKON_ENUMERATED_TEXT { value=0; text = "0.EPopupNotificationOn"; },
AVKON_ENUMERATED_TEXT { value=1; text = "1.EPopupNotificationOff"; }
};
}
-RESOURCE ARRAY r_Popup_editor_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "0.EPopupNotificationOn"; },
- LBUF { txt = "1.EPopupNotificationOff"; }
- };
- }
-
//Popup Notification Type
-RESOURCE AVKON_SETTING_PAGE r_PopupType_editor_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_PopupType_editor_settings_page_texts
{
setting_texts_resource = r_PopupType_editor_settings_page_texts_array;
- popped_up_texts_resource = r_PopupType_editor_settings_page_popedup;
}
RESOURCE ARRAY r_PopupType_editor_settings_page_texts_array
{
- items =
+ items =
{
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
AVKON_ENUMERATED_TEXT { value=0; text = "0.ENotificationTypeQueryUser"; },
AVKON_ENUMERATED_TEXT { value=1; text = "1.ENotificationTypePopup"; }
};
}
-RESOURCE ARRAY r_PopupType_editor_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "0.ENotificationTypeQueryUser"; },
- LBUF { txt = "1.ENotificationTypePopup"; }
- };
- }
-
-
//EDGE/DTM
-RESOURCE AVKON_SETTING_PAGE r_edgedtm_editor_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_edgedtm_editor_settings_page_texts
{
setting_texts_resource = r_edgedtm_editor_settings_page_texts_array;
- popped_up_texts_resource = r_edgedtm_editor_settings_page_popedup;
}
RESOURCE ARRAY r_edgedtm_editor_settings_page_texts_array
{
- items =
+ items =
{
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
AVKON_ENUMERATED_TEXT { value=0; text = "0.EDtmModeAllowed"; },
AVKON_ENUMERATED_TEXT { value=1; text = "1.EDtmModeNotAllowed"; }
};
}
-RESOURCE ARRAY r_edgedtm_editor_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "0.EDtmModeAllowed"; },
- LBUF { txt = "1.EDtmModeNotAllowed"; }
- };
- }
-
//Internet Signalling
-RESOURCE AVKON_SETTING_PAGE r_signal_editor_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_signal_editor_settings_page_texts
{
setting_texts_resource = r_signal_editor_settings_page_texts_array;
- popped_up_texts_resource = r_signal_editor_settings_page_popedup;
}
RESOURCE ARRAY r_signal_editor_settings_page_texts_array
{
- items =
+ items =
{
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
AVKON_ENUMERATED_TEXT { value=0; text = "0.EForceInternetSignaling"; },
AVKON_ENUMERATED_TEXT { value=1; text = "1.EFollowProfileConfiguration"; }
};
}
-RESOURCE ARRAY r_signal_editor_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "0.EForceInternetSignaling"; },
- LBUF { txt = "1.EFollowProfileConfiguration"; }
- };
- }
-
//Video Saving
-RESOURCE AVKON_SETTING_PAGE r_videosaving_editor_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_videosaving_editor_settings_page_texts
{
setting_texts_resource = r_videosaving_editor_settings_page_texts_array;
- popped_up_texts_resource = r_videosaving_editor_settings_page_popedup;
}
RESOURCE ARRAY r_videosaving_editor_settings_page_texts_array
{
- items =
+ items =
{
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
AVKON_ENUMERATED_TEXT { value=0; text = "0.EAutoRecordOn"; },
AVKON_ENUMERATED_TEXT { value=1; text = "1.EAutoRecordOff"; }
};
}
-RESOURCE ARRAY r_videosaving_editor_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "0.EAutoRecordOn"; },
- LBUF { txt = "1.EAutoRecordOff"; }
- };
- }
-
//UI Orientation
-RESOURCE AVKON_SETTING_PAGE r_uiorientation_editor_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_uiorientation_editor_settings_page_texts
{
setting_texts_resource = r_uiorientation_editor_settings_page_texts_array;
- popped_up_texts_resource = r_uiorientation_editor_settings_page_popedup;
}
RESOURCE ARRAY r_uiorientation_editor_settings_page_texts_array
{
- items =
+ items =
{
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
AVKON_ENUMERATED_TEXT { value=0; text = "0.EPortrait"; },
AVKON_ENUMERATED_TEXT { value=1; text = "1.ELandscape"; }
};
}
-RESOURCE ARRAY r_uiorientation_editor_settings_page_popedup
- {
- items =
- {
- LBUF { txt = "0.EPortrait"; },
- LBUF { txt = "1.ELandscape"; }
- };
- }
//Capability Query
-RESOURCE AVKON_SETTING_PAGE r_capquery_editor_settings_page
- {
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
- }
-
RESOURCE AVKON_POPUP_SETTING_TEXTS r_capquery_editor_settings_page_texts
{
setting_texts_resource = r_capquery_editor_settings_page_texts_array;
- popped_up_texts_resource = r_capquery_editor_settings_page_popedup;
}
RESOURCE ARRAY r_capquery_editor_settings_page_texts_array
{
- items =
+ items =
{
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
AVKON_ENUMERATED_TEXT { value=0; text = "0.ESequential"; },
AVKON_ENUMERATED_TEXT { value=1; text = "1.EParallel"; },
AVKON_ENUMERATED_TEXT { value=2; text = "2.ENoOptions"; }
};
}
-RESOURCE ARRAY r_capquery_editor_settings_page_popedup
+
+//Allow multimedia sharing only with active CS call
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_activecscall_editor_settings_page_texts
{
- items =
+ setting_texts_resource = r_activecscall_editor_settings_page_texts_array;
+ }
+
+RESOURCE ARRAY r_activecscall_editor_settings_page_texts_array
+ {
+ items =
{
- LBUF { txt = "0.ESequential"; },
- LBUF { txt = "1.EParallel"; },
- LBUF { txt = "2.ENoOptions"; }
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
+ AVKON_ENUMERATED_TEXT { value=0; text = "0.EAllowedAllCalls"; },
+ AVKON_ENUMERATED_TEXT { value=1; text = "1.EAllowedCSOnly"; }
+ };
+ }
+
+
+//Allow multimedia sharing only in 3G network
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_3gnetwork_editor_settings_page_texts
+ {
+ setting_texts_resource = r_3gnetwork_editor_settings_page_texts_array;
+ }
+
+RESOURCE ARRAY r_3gnetwork_editor_settings_page_texts_array
+ {
+ items =
+ {
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
+ AVKON_ENUMERATED_TEXT { value=0; text = "0.EAllowedAllBearers"; },
+ AVKON_ENUMERATED_TEXT { value=1; text = "1.EAllowed3GOnly"; }
};
}
-//Privacy
-RESOURCE AVKON_SETTING_PAGE r_privacy_settings_page
+
+//Camera Usage
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_camera_usage_settings_page_texts
{
- number = 1;
- type = EAknCtPopupSettingList;
- editor_resource_id = r_enumerated_text_setting_other_editor;
+ setting_texts_resource = r_camera_usage_settings_page_texts_array;
}
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_privacy_editor_settings_page_texts
+RESOURCE ARRAY r_camera_usage_settings_page_texts_array
{
- setting_texts_resource = r_privacy_editor_settings_page_texts_array;
- popped_up_texts_resource = r_privacy_editor_settings_page_popedup;
+ items =
+ {
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
+ AVKON_ENUMERATED_TEXT { value=0; text = "0.EUseOnlyMainCamera"; },
+ AVKON_ENUMERATED_TEXT { value=1; text = "1.EUseOnlySecondaryCamera"; },
+ AVKON_ENUMERATED_TEXT { value=2; text = "2.EUseCameraSwapping"; }
+ };
+ }
+
+
+//Video direction
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_video_direction_settings_page_texts
+ {
+ setting_texts_resource = r_video_direction_settings_page_texts_array;
}
-RESOURCE ARRAY r_privacy_editor_settings_page_texts_array
+RESOURCE ARRAY r_video_direction_settings_page_texts_array
{
- items =
+ items =
{
- AVKON_ENUMERATED_TEXT { value=1; text = "0.EPrivacyOn"; },
- AVKON_ENUMERATED_TEXT { value=2; text = "1.ErivacyOff"; }
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
+ AVKON_ENUMERATED_TEXT { value=0; text = "0.EOneWayVideo"; },
+ AVKON_ENUMERATED_TEXT { value=1; text = "1.ETwoWayVideo"; }
};
}
-RESOURCE ARRAY r_privacy_editor_settings_page_popedup
+
+
+//Fast startup mode
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_fast_mode_settings_page_texts
{
- items =
- {
- LBUF { txt = "0.EPrivacyOn"; },
- LBUF { txt = "1.ErivacyOfff"; }
+ setting_texts_resource = r_fast_mode_settings_page_texts_array;
+ }
+
+RESOURCE ARRAY r_fast_mode_settings_page_texts_array
+ {
+ items =
+ {
+ AVKON_ENUMERATED_TEXT { value=-1; text = "Not defined"; },
+ AVKON_ENUMERATED_TEXT { value=0; text = "0.EFastModeOn"; },
+ AVKON_ENUMERATED_TEXT { value=1; text = "1.EFastModeOff"; }
};
}
-
+
+
// add setting page and editor resources for "details" field here
RESOURCE AVKON_SETTING_PAGE r_editor_settings_page
{
@@ -841,6 +730,13 @@
editor_resource_id = r_integer_edwin;
}
+RESOURCE AVKON_SETTING_PAGE r_popup_settings_page
+ {
+ number = 1;
+ type = EAknCtPopupSettingList;
+ editor_resource_id = r_enumerated_text_setting_other_editor;
+ }
+
RESOURCE AVKON_SETTING_PAGE r_encoder_info_settings_page
{
number = 14;
@@ -873,54 +769,54 @@
}
RESOURCE CBA r_cenrepeditor_softkeys_start_exit
- {
- buttons =
- {
- CBA_BUTTON
- {
- id = EAknSoftKeyStart;
- txt = qtn_cenrepeditor_cba_text_start;
- },
- CBA_BUTTON
- {
- id = EAknSoftKeyExit;
- txt = qtn_cenrepeditor_cba_text_Exit;
- }
- };
- }
+ {
+ buttons =
+ {
+ CBA_BUTTON
+ {
+ id = EAknSoftKeyStart;
+ txt = qtn_cenrepeditor_cba_text_start;
+ },
+ CBA_BUTTON
+ {
+ id = EAknSoftKeyExit;
+ txt = qtn_cenrepeditor_cba_text_Exit;
+ }
+ };
+ }
RESOURCE CBA r_cenrepeditor_softkeys_stop_exit
- {
- buttons =
- {
- CBA_BUTTON
- {
- id = EAknSoftKeyStop;
- txt = qtn_cenrepeditor_cba_text_stop;
- },
- CBA_BUTTON
- {
- id = EAknSoftKeyExit;
- txt = qtn_cenrepeditor_cba_text_Exit;
- }
- };
- }
+ {
+ buttons =
+ {
+ CBA_BUTTON
+ {
+ id = EAknSoftKeyStop;
+ txt = qtn_cenrepeditor_cba_text_stop;
+ },
+ CBA_BUTTON
+ {
+ id = EAknSoftKeyExit;
+ txt = qtn_cenrepeditor_cba_text_Exit;
+ }
+ };
+ }
RESOURCE AVKON_SETTING_ITEM_LIST r_cenrepeditor_start_stop_settings_list
{
- flags = EAknSettingItemNumberedStyle;
- items =
- {
- AVKON_SETTING_ITEM
- {
- name = "Usecase";
- identifier = EApplicationStartStop;
- setting_page_resource = r_cenrepeditor_start_stop_settings_list_page;
- associated_resource = r_cenrepeditor_start_stop_associated_settings_list_page;
-
- }
- };
+ flags = EAknSettingItemNumberedStyle;
+ items =
+ {
+ AVKON_SETTING_ITEM
+ {
+ name = "Usecase";
+ identifier = EApplicationStartStop;
+ setting_page_resource = r_cenrepeditor_start_stop_settings_list_page;
+ associated_resource = r_cenrepeditor_start_stop_associated_settings_list_page;
+ }
+ };
}
+
RESOURCE AVKON_SETTING_PAGE r_cenrepeditor_start_stop_settings_list_page
{
number = -16380;
@@ -936,66 +832,40 @@
RESOURCE AVKON_POPUP_SETTING_TEXTS r_cenrepeditor_start_stop_associated_settings_list_page
{
setting_texts_resource = r_usecase_array;
- popped_up_texts_resource = r_usecase_array_texts;
}
+
RESOURCE ARRAY r_usecase_array
{
items =
{
- AVKON_ENUMERATED_TEXT
- {
- text = "Live";
- value = 0;
- },
- AVKON_ENUMERATED_TEXT
- {
- text = "Clip";
- value = 1;
- },
- AVKON_ENUMERATED_TEXT
- {
- text = "StillImage";
- value = 2;
- },
- AVKON_ENUMERATED_TEXT
- {
- text = "Receive";
- value = 3;
- },
- AVKON_ENUMERATED_TEXT
- {
- text = "Continue";
- value = 4;
- }
+ AVKON_ENUMERATED_TEXT
+ {
+ text = "Live";
+ value = 0;
+ },
+ AVKON_ENUMERATED_TEXT
+ {
+ text = "Clip";
+ value = 1;
+ },
+ AVKON_ENUMERATED_TEXT
+ {
+ text = "StillImage";
+ value = 2;
+ },
+ AVKON_ENUMERATED_TEXT
+ {
+ text = "Receive";
+ value = 3;
+ },
+ AVKON_ENUMERATED_TEXT
+ {
+ text = "Continue";
+ value = 4;
+ }
};
}
-RESOURCE ARRAY r_usecase_array_texts
- {
- items = {
- LBUF
- {
- txt = "Live";
- },
- LBUF
- {
- txt = "Clip";
- },
- LBUF
- {
- txt = "StillImage";
- },
- LBUF
- {
- txt = "Receive";
- },
- LBUF
- {
- txt = "Continue";
- }
- };
- }
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
--- a/tsrc/CenrepEditor/group/CenrepEditor.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/CenrepEditor/group/CenrepEditor.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -18,15 +18,13 @@
#include <bldvariant.hrh>
#include <data_caging_paths.hrh>
#include <platform_paths.hrh>
-#include <eunitcaps.h>
TARGET CenrepEditor.exe
TARGETTYPE exe
UID 0x100039CE 0x10282398
VENDORID VID_DEFAULT
-CAPABILITY EUNIT_CAPS
-
+CAPABILITY CAP_APPLICATION
EPOCSTACKSIZE 0xF000
@@ -65,7 +63,6 @@
LANG SC
USERINCLUDE ../inc
-USERINCLUDE ../../../common/inc
APP_LAYER_SYSTEMINCLUDE
--- a/tsrc/CenrepEditor/inc/cenrepeditor.hrh Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/CenrepEditor/inc/cenrepeditor.hrh Tue Aug 31 15:12:07 2010 +0300
@@ -37,41 +37,43 @@
EAknSoftKeySave=1,
EAknSoftKeyExit,
EAknSoftKeyStart,
-
-
-
-
-
-
EAknSoftKeyStop
};
+
enum TAvkonSettingsItemCommand
- {
- EPhoneResouceCamera = 1,
- EPhoneResouceKeypad,
- EPhoneResouceVideoPlayer,
- EPhoneResouceCameraInformation,
- EKodiakPhoneCall
- };
+ {
+ EPhoneResouceCamera = 1,
+ EPhoneResouceKeypad,
+ EPhoneResouceVideoPlayer,
+ EPhoneResouceCameraInformation,
+ EKodiakPhoneCall
+ };
+
enum TAvkonSettingsItemCommandOther
- {
- EOtherResourceActivation=1,
- EOtherResourceOperatorVariant,
- EOtherResourceAuditoryNotification,
- EOtherResourcePopupNotification,
- EOtherResourcePopupNotificationType,
- EOtherResourceEdgeDtmSupport,
- EOtherResourceSessionSetupMethod,
- EOtherResourceAutoRecord,
- EOtherResourceVideoLocation,
- EOtherResourceSipProfileId,
- EOtherResourceUiOrientation,
- EOtherResourceCapabilityQuery,
- EOtherResourceProductModeVariationKey,
- EOtherResourceEncoderConfigurationInfo,
- EOtherResourceEncodingDevice,
- EOtherRResourcePrivacyVariationMode
- };
+ {
+ EOtherResourceActivation=1,
+ EOtherResourceOperatorVariant,
+ EOtherResourceAuditoryNotification,
+ EOtherResourcePopupNotification,
+ EOtherResourcePopupNotificationType,
+ EOtherResourceEdgeDtmSupport,
+ EOtherResourceSessionSetupMethod,
+ EOtherResourceAutoRecord,
+ EOtherResourceVideoLocation,
+ EOtherResourceSipProfileId,
+ EOtherResourceUiOrientation,
+ EOtherResourceCapabilityQuery,
+ EOtherResourceProductModeVariationKey,
+ EOtherResourceEncoderConfigurationInfo,
+ EOtherResourceEncodingDevice,
+ EOtherResourceAllowOnlyWithActiveCSCall,
+ EOtherResourceAllowOnlyIn3GNetwork,
+ EOtherResourceCameraUsage,
+ EOtherResourceVideoDirection,
+ EOtherResourceVideoBandwidth,
+ EOtherResourceFastMode
+ };
+
enum TAvkonViewApplicationStartStop
{
EApplicationStartStop=1
--- a/tsrc/CenrepEditor/inc/cenrepeditorlistbox2.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/CenrepEditor/inc/cenrepeditorlistbox2.h Tue Aug 31 15:12:07 2010 +0300
@@ -40,12 +40,6 @@
public:
CAknSettingItem* CreateSettingItemL( TInt identifier );
void SetData(COtherResources* iOtherResources);
-
- public: // Implementation from base class
- // void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
- // TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
-
- void EditItemL(TInt aIndex, TBool aCalledFromMenu);
private:
void SizeChanged();
--- a/tsrc/CenrepEditor/inc/cenrepeditormodel.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/CenrepEditor/inc/cenrepeditormodel.h Tue Aug 31 15:12:07 2010 +0300
@@ -40,22 +40,13 @@
static COtherResources* NewL();
static COtherResources* NewLC();
~COtherResources();
- public :
+
+ public:
void SaveL();
- void SaveCRKeyValuesL();
- void ReadL();
- void ReadCRKeyValuesL();
- void ReadKeyValueL(CRepository* repository, const TInt & aKey , TInt & aVal);
- void SetKeyValueL(CRepository* repository, const TInt & aKey , TInt & aVal);
-
- void ReadKeyValueL(CRepository* repository, TInt aKey, TDes& aVal);
- void SetKeyValueL(CRepository* repository, TInt aKey, const TDesC& aVal);
-
- private :
- void HandleError(TBool aType ,TInt aError , TPtrC aKeyName );
public:
+
TInt iActivation;
TInt iOperatorVariant;
TInt iAuditoryNotification;
@@ -69,15 +60,22 @@
TInt iUiOrientation;
TInt iCapabilityQuery;
TInt iProductModeVariation;
- TInt iEncodingDevice;
- TInt iPrivacyVariation;
- TInt iDummy;
-
+ TInt iEncodingDevice;
+ TInt iOnlyWithActiveCSCall;
+ TInt iOnlyIn3GNetwork;
TBuf<NCentralRepositoryConstants::KMaxBinaryLength> iEncoderInfo;
TBuf<KMaxUidStringLength> iEncodingDeviceStr;
+ TInt iCameraUsage;
+ TInt iVideoDirection;
+ TInt iVideoBandwidth;
+ TInt iFastMode;
- private :
+ private:
void ConstructL();
+ void SetKeyValueL(const TUint32& aKey , TInt& aVal);
+
+ private:
+ CRepository* iRepository;
};
class CPhoneResources : public CBase
@@ -86,22 +84,20 @@
static CPhoneResources* NewL();
static CPhoneResources* NewLC();
~CPhoneResources();
- public :
+
+ public :
void SaveL();
- void ReadL();
- private :
- void HandleError(TBool aType ,TInt aError , TPtrC aKeyName );
+
public:
TInt iCameraAvailability;
TInt iKeypadAvailability;
TInt iVideoPlayerAvailability;
TInt iCameraInformation;
TInt iKodiakPhoneCall;
- TInt iDummy;
private :
void ConstructL();
- TInt SetValueL(TUid aCategory, TUint aKey, TInt aValue);
+ void SetValueL(TUid aCategory, TUint aKey, TInt aValue);
};
class CMusApplication : public CBase
Binary file tsrc/CenrepEditor/install/cenrepeditor.sis has changed
Binary file tsrc/CenrepEditor/install/cenrepeditor.sisx has changed
Binary file tsrc/CenrepEditor/install/cenrepeditor_.sis has changed
--- a/tsrc/CenrepEditor/install/sis_update_udeb.bat Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-@rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-@rem All rights reserved.
-@rem This component and the accompanying materials are made available
-@rem under the terms of "Eclipse Public License v1.0"
-@rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-@rem
-@rem Initial Contributors:
-@rem Nokia Corporation - initial contribution.
-@rem
-@rem Contributors:
-@rem
-@rem Description:
-@rem
-
-makesis cenrepeditor.pkg cenrepeditor-tmp.sis
-signsis -cr -s "cenrepeditor-tmp.SIS" "cenrepeditor.sisx" "RDTest_02.der" "RDTest_02.key"
-REM del cenrepeditor-tmp.sis
--- a/tsrc/centralrepositorystub/inc/cenrepnotifyhandler.h Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
-* Copyright (c) 2010 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 CENREPNOTIFYHANDLER_H
-#define CENREPNOTIFYHANDLER_H
-
-// INCLUDES
-#include <e32std.h>
-#include <e32base.h>
-
-// FORWARD DECLARATIONS
-class MCenRepNotifyHandlerCallback;
-class CRepository;
-
-
-
-class CCenRepNotifyHandler : public CBase//CActive
- {
- public:
- /**
- * Defines different key types. Enumeration is used to indicate the
- * key type that is listened to.
- */
- enum TCenRepKeyType
- {
- EIntKey, ///< Key holds a TInt value.
- ERealKey, ///< Key holds a TReal value.
- EStringKey, ///< Key holds a TDesC16 value.
- EBinaryKey ///< Key holds a TDesC8 value.
- };
-
- IMPORT_C static CCenRepNotifyHandler* NewL( MCenRepNotifyHandlerCallback& aCallback,
- CRepository& aSession );
-
- IMPORT_C static CCenRepNotifyHandler* NewLC( MCenRepNotifyHandlerCallback& aCallback,
- CRepository& aSession );
- IMPORT_C void StartListeningL();
-
- IMPORT_C void StopListening();
-
-
- /**
- * Destructor.
- */
- IMPORT_C virtual ~CCenRepNotifyHandler();
-/*
- protected:
-
- void RunL();
-
- TInt RunError( TInt aError );
-
- void DoCancel();
-*/
- private:
-
- CCenRepNotifyHandler( MCenRepNotifyHandlerCallback& aCallback,
- CRepository& aSession );
-
- private:
-
- CRepository& iSession; // not owned by this class
- MCenRepNotifyHandlerCallback& iCallback; // not owned by this class
-// TCenRepKeyType iKeyType;
-// TUint32 iId;
-// TBool iWholeRepository; // The flag to indicate if listening is for whole repository
- };
-
-
-/**
-* Class provides a callback interface for handling the notifification
-* events from the Central Repository. The Client derives a class
-* from this interface and implements the HandleNotify-methods that
-* interest it.
-* An empty default implementation is provided for all of the methods.
-* In debug build the default implementations print out a debug trace.
-*
-* @publishedPartner
-* @released
-*/
-class MCenRepNotifyHandlerCallback
- {
-
- public:
-
- /**
- * This callback method is used to notify the client about
- * changes in keys when the whole repository is listened for.
- *
- * Note: It is not guaranteed that a notification will be received
- * for all keys, if multiple keys are changed in rapid succession
- * by multiple threads or when the whole repository is reset,
- * therefore only listen for whole repository if this is not an issue.
- *
- * @param aId Id of the key that has changed. If multiple keys were changed by
- * whole repository reset, value will be KInvalidNotificationId.
- * @capability Dependent Capability required depends on implementation of override.
- */
- IMPORT_C virtual void HandleNotifyGeneric( TUint32 aId );
-
- };
-
-#endif // CENREPNOTIFYHANDLER_H
-
-// End of File
--- a/tsrc/centralrepositorystub/inc/centralrepository.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/centralrepositorystub/inc/centralrepository.h Tue Aug 31 15:12:07 2010 +0300
@@ -26,6 +26,7 @@
#include <e32base.h>
+const TInt KCenRepStubGlobalKeyValueMaxLen = 20; // stub stuff
namespace NCentralRepositoryConstants
/** Namespace encapsulating the CentralRepository constants.
@@ -256,6 +257,10 @@
// Deletes heap reserved by previous function.
static void DeleteStubAvcConfigKeys();
+ // Setter for static cenrep val, note amount of globals is limited
+ static TInt SetStubGlobal(TUint32 aKey, TInt aValue);
+ static void ResetStubGlobal();
+
public: // Stub data
@@ -278,6 +283,16 @@
static TInt iStaticEncoderUid;
+ class TCenRepStubKeyValueEntry
+ {
+ public:
+ TUint iKey;
+ TInt iVal;
+ };
+
+ static TCenRepStubKeyValueEntry iGlobalKeyVals[ KCenRepStubGlobalKeyValueMaxLen ];
+ static TInt iGlobalKeyValsTop;
+
TUid iRepositoryUid;
--- a/tsrc/centralrepositorystub/src/cenrepnotifyhandlerstub.cpp Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-#include "cenrepnotifyhandler.h"
-#include "centralrepository.h"
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CCenRepNotifyHandler::CCenRepNotifyHandler(
- MCenRepNotifyHandlerCallback& aCallback,
- CRepository& aSession)
- : iSession(aSession), iCallback(aCallback)
- {
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CCenRepNotifyHandler* CCenRepNotifyHandler::NewL(
- MCenRepNotifyHandlerCallback& aCallback,
- CRepository& aSession)
- {
- CCenRepNotifyHandler* newInstance = NewLC(aCallback, aSession);
- CleanupStack::Pop();
- return newInstance;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CCenRepNotifyHandler* CCenRepNotifyHandler::NewLC(
- MCenRepNotifyHandlerCallback& aCallback,
- CRepository& aSession)
- {
- CCenRepNotifyHandler* newInstance = new (ELeave) CCenRepNotifyHandler(aCallback, aSession);
- CleanupStack::PushL( newInstance );
-
- return newInstance;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CCenRepNotifyHandler::~CCenRepNotifyHandler()
- {
-
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CCenRepNotifyHandler::StartListeningL()
- {
-
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CCenRepNotifyHandler::StopListening()
- {
-
- }
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void MCenRepNotifyHandlerCallback::HandleNotifyGeneric(TUint32 /*aId*/)
- {
-
- }
--- a/tsrc/centralrepositorystub/src/centralrepositorystub.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/centralrepositorystub/src/centralrepositorystub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -37,6 +37,8 @@
TBool CRepository::iStaticWriteAvcKeysToStaticData = EFalse;
TInt CRepository::iForceFailWithCode = KErrNone;
TInt CRepository::iStaticEncoderUid = 0;
+CRepository::TCenRepStubKeyValueEntry CRepository::iGlobalKeyVals[ KCenRepStubGlobalKeyValueMaxLen ];
+TInt CRepository::iGlobalKeyValsTop = 0;
// -----------------------------------------------------------------------------
@@ -101,6 +103,7 @@
User::LeaveIfError(
self->Set ( MusSettingsKeys::KSipProfileId,
0 /*default profile*/ ) );
+
User::LeaveIfError(
self->Set ( MusSettingsKeys::KUiOrientation,
MusSettingsKeys::EPortrait ) );
@@ -123,9 +126,9 @@
//
EXPORT_C CRepository::~CRepository()
{
- iKeys.Reset();
- iValues.Reset();
- iDesC8Keys.Reset();
+ iKeys.Close();
+ iValues.Close();
+ iDesC8Keys.Close();
delete iDesC8Values;
}
@@ -203,7 +206,17 @@
}
}
}
-
+ if ( iGlobalKeyValsTop >= 0 && iGlobalKeyValsTop < KCenRepStubGlobalKeyValueMaxLen )
+ {
+ for ( TInt i = 0; i < iGlobalKeyValsTop; i++ )
+ {
+ if ( iGlobalKeyVals[ i ].iKey == aKey )
+ {
+ aValue = CRepository::iGlobalKeyVals[ i ].iVal;
+ return KErrNone;
+ }
+ }
+ }
return err;
}
@@ -478,8 +491,32 @@
delete iStaticAvcConfigKeys;
iStaticAvcConfigKeys = NULL;
}
-
+
+void CRepository::ResetStubGlobal()
+ {
+ iGlobalKeyValsTop = 0;
+ }
+
+TInt CRepository::SetStubGlobal(TUint32 aKey, TInt aValue)
+ {
+ for ( TInt i = 0; i < iGlobalKeyValsTop; i++ )
+ {
+ if ( iGlobalKeyVals[ i ].iKey == aKey )
+ {
+ iGlobalKeyVals[ i ].iVal = aValue;
+ return KErrNone;
+ }
+ }
+ if ( iGlobalKeyValsTop >= KCenRepStubGlobalKeyValueMaxLen )
+ {
+ return KErrNoMemory;
+ }
+ iGlobalKeyVals[ iGlobalKeyValsTop ].iKey = aKey;
+ iGlobalKeyVals[ iGlobalKeyValsTop ].iVal = aValue;
+ iGlobalKeyValsTop++;
+ return KErrNone;
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
@@ -487,6 +524,7 @@
CRepository::CRepository( TUid aRepositoryUid )
:iRepositoryUid( aRepositoryUid )
{
+
}
--- a/tsrc/cmusavainterfacestub/inc/cmusavainterfacestub.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/cmusavainterfacestub/inc/cmusavainterfacestub.h Tue Aug 31 15:12:07 2010 +0300
@@ -94,6 +94,7 @@
virtual TBool ExtensionAvailability();
virtual TBool Available( MMusAvaObserver::TAvailabilityName aAvailability );
virtual MMusAvaObserver::TAvailabilityStatus AvailabilityState( MMusAvaObserver::TAvailabilityName aAvailability );
+ virtual void PrepareForReceivedInviteL();
public: //From MMusAvaObserver
--- a/tsrc/cmusavainterfacestub/src/cmusavainterfacestub.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/cmusavainterfacestub/src/cmusavainterfacestub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -202,7 +202,19 @@
}
return MMusAvaObserver::EMusAvaStatusNotExecuted;
}
-
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusAvaInterface2::PrepareForReceivedInviteL()
+ {
+ for ( TInt i = 0; i < iAvailabilities.Count(); i++ )
+ {
+ iAvailabilities[i]->PrepareForReceivedInviteL();
+ }
+ }
+
void CMusAvaInterface2::AvailabilityChanged(
TAvailabilityName aName,
TAvailabilityStatus aStatus )
@@ -229,23 +241,36 @@
}
+
+// -----------------------------------------------------------------------------
+// CImplementationInformation::~CImplementationInformation
+// -----------------------------------------------------------------------------
+//
CImplementationInformation::~CImplementationInformation()
{
-
+ delete iData;
+ delete iDisplayName;
+ delete iOpaqueData;
}
-
CImplementationInformation* CImplementationInformation::NewL(
- TUid /*aUid*/,
- TInt /*aVersion*/,
- HBufC* /*aName*/,
- HBufC8* /*aDataType*/,
- HBufC8* /*aOpaqueData*/,
- TDriveUnit /*aDrive*/,
- TBool /*aRomOnly*/,
- TBool /*aRomBased*/)
+ TUid aUid,
+ TInt aVersion,
+ HBufC* aName,
+ HBufC8* aDataType,
+ HBufC8* aOpaqueData,
+ TDriveUnit aDrive,
+ TBool aRomOnly,
+ TBool aRomBased)
{
- return new (ELeave) CImplementationInformation();
+ CImplementationInformation* self = new(ELeave)CImplementationInformation();
+ CleanupStack::PushL(self);
+ self->iData = aDataType;
+ self->iDisplayName = aName;
+ self->iOpaqueData = aOpaqueData;
+ CleanupStack::Pop(self);
+ return self;
+ //return new (ELeave) CImplementationInformation();
}
void REComSession::DestroyedImplementation( TUid )
@@ -253,6 +278,7 @@
}
+
void REComSession::ListImplementationsL(
TUid /*aInterfaceUid*/,
RImplInfoPtrArray &aImplInfoArray )
@@ -288,6 +314,34 @@
}
-
+// -----------------------------------------------------------------------------
+// REComSession::ListImplementationsL
+// -----------------------------------------------------------------------------
+//
+void REComSession::ListImplementationsL(
+ TUid aInterfaceUid,
+ const TEComResolverParams& resolverParams,
+ RImplInfoPtrArray& aImplInfoArray)
+ {
+ _LIT8(KDefaultEngineName,"MultimediaSharing");
+
+ TUid uid(aInterfaceUid);
+ TInt version = 1;
+ HBufC* name = _L("dummy").AllocLC();
+ HBufC8* dataType = _L8("MultimediaSharing").AllocLC();
+ HBufC8* opaqueData = _L8("dummy").AllocLC();
+ TDriveUnit drive;
+ TBool romOnly(ETrue);
+ TBool romBased(ETrue);
+ CImplementationInformation* info =
+ CImplementationInformation::NewL(uid,version,name,dataType,
+ opaqueData,drive,romOnly,romBased);
+ CleanupStack::Pop(3);
+ CleanupStack::PushL(info);
+ aImplInfoArray.AppendL(info);
+ CleanupStack::Pop(info);
+ }
+// End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/contactenginestub/inc/contactenginestub.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2009 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 __CONTACTENGINESTUB_H__
+#define __CONTACTENGINESTUB_H__
+
+#include <e32base.h>
+
+enum TContactEngineCalledFunction
+ {
+ EContactEngineStubNone,
+ EContactEngineStubSetText
+ };
+
+class ContactEngineStubHelper
+ {
+public:
+
+ static void Reset();
+ static void SetErrorCode(TInt aVal);
+ static TContactEngineCalledFunction GetCalledFunction();
+ static void SetSIPFieldFound( TBool aFound );
+ static void SetSIPFieldInfoFound( TBool aFound );
+
+ };
+
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/contactenginestub/src/contactenginestub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+#include "contactenginestub.h"
+
+#include <cntitem.h>
+#include <cntfield.h>
+#include <cntdef.h>
+#include <cntfldst.h>
+
+static TInt iValue = KErrNone;
+static TContactEngineCalledFunction iFunc = EContactEngineStubNone;
+static TBool iFindField = EFalse;
+static TBool iFindFieldInfo = ETrue;
+static CContactTextField iTextField;
+
+// -----------------------------------------------------------------------------
+// CContactTextField
+// -----------------------------------------------------------------------------
+//
+void CContactTextField::SetTextL(const TDesC& /*aText*/)
+ {
+ iFunc = EContactEngineStubSetText;
+ }
+
+CContactTextField::~CContactTextField()
+ {
+
+ }
+
+void CContactTextField::InternalizeL(RReadStream& /*aStream*/)
+ {
+
+ }
+void CContactTextField::ExternalizeL(RWriteStream& /*aStream*/) const
+ {
+
+ }
+TStreamId CContactTextField::StoreL(CStreamStore& /*aStore*/) const
+ {
+ return TStreamId( 0 );
+ }
+
+void CContactTextField::RestoreL(CStreamStore& /*aStore*/,RReadStream& /*aStream*/)
+ {
+
+ }
+
+TBool CContactTextField::IsFull() const
+ {
+ return EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// ContactEngineStubHelper
+// -----------------------------------------------------------------------------
+//
+void ContactEngineStubHelper::Reset()
+ {
+ iValue = KErrNone;
+ iFunc = EContactEngineStubNone;
+ iFindField = EFalse;
+ iFindFieldInfo = ETrue;
+ }
+
+void ContactEngineStubHelper::SetErrorCode( TInt aVal )
+ {
+ iValue = aVal;
+ }
+
+TContactEngineCalledFunction ContactEngineStubHelper::GetCalledFunction()
+ {
+ return iFunc;
+ }
+
+void ContactEngineStubHelper::SetSIPFieldFound( TBool aFound )
+ {
+ iFindField = aFound;
+ }
+
+void ContactEngineStubHelper::SetSIPFieldInfoFound( TBool aFound )
+ {
+ iFindFieldInfo = aFound;
+ }
--- a/tsrc/etelstub/inc/etelmm.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/etelstub/inc/etelmm.h Tue Aug 31 15:12:07 2010 +0300
@@ -12665,7 +12665,6 @@
static void SetConfStatus( RMobileConferenceCall::TMobileConferenceStatus aConfStatus );
static void SetCallDirection( RMobileCall::TMobileCallDirection aDirection );
static void SetCallEmergency( TBool aVal );
- static void SetRemoteIdStatus( RMobileCall::TMobileCallRemoteIdentityStatus aStatus );
};
#endif // __ETELMM_H__
--- a/tsrc/etelstub/src/etelstub.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/etelstub/src/etelstub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -27,8 +27,7 @@
static RMobileCall::TMobileCallStatus iCallStatus = RMobileCall::EStatusIdle;
static RMobileCall::TMobileCallDirection iDirection = RMobileCall::EDirectionUnknown;
static TBool iReqToCancel = EFalse;
-static RTelSubSessionBase::TCalledFunction iCalledFunction = RTelSubSessionBase::ENone;
-static RMobileCall::TMobileCallRemoteIdentityStatus iRemoteIdStatus = RMobileCall::ERemoteIdentityUnknown;
+static RTelSubSessionBase::TCalledFunction iCalledFunction = RTelSubSessionBase::ENone;
EXPORT_C TInt RTelServer::Connect( int )
@@ -68,7 +67,9 @@
EXPORT_C void RCall::Close()
{
-
+ iCallEvent = RMobileCall::ELocalBarred;
+ iCallStatus = RMobileCall::EStatusUnknown;
+ iDirection = RMobileCall::EDirectionUnknown;
}
EXPORT_C void RLine::Close()
@@ -226,7 +227,6 @@
callInfo.iRemoteParty.iRemoteNumber.iTelNumber.Copy( KNumber() );
callInfo.iRemoteParty.iDirection = iDirection;
callInfo.iEmergency = iEmergency;
- callInfo.iRemoteParty.iRemoteIdStatus = iRemoteIdStatus;
RMobileCall::TMobileCallInfoV3Pckg pckg( callInfo );
aBuffer.Copy( pckg );
@@ -365,24 +365,3 @@
{
iEmergency = aVal;
}
-void RTelHelper::SetRemoteIdStatus( RMobileCall::TMobileCallRemoteIdentityStatus aStatus )
- {
- iRemoteIdStatus = aStatus;
- }
-
-EXPORT_C void
-RMobilePhone::GetIdentityServiceStatus(TRequestStatus& aReqStatus,
- TMobilePhoneIdService /*aService*/,
- TMobilePhoneIdServiceStatus& /*aStatus*/,
- TMobileInfoLocation /*aLocation*/) const
- {
- aReqStatus = KRequestPending;
- }
-
-EXPORT_C void
-RMobilePhone::NotifyIdentityServiceStatus(TRequestStatus& aReqStatus,
- const TMobilePhoneIdService /*aService*/,
- TMobilePhoneIdServiceStatus& /*aStatus*/) const
- {
- aReqStatus = KRequestPending;
- }
--- a/tsrc/fbsbitmapstub/inc/fbs.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/fbsbitmapstub/inc/fbs.h Tue Aug 31 15:12:07 2010 +0300
@@ -15,49 +15,15 @@
*
*/
-#ifndef __FBSBITMAP__
-#define __FBSBITMAP__
+#ifndef __FBS_H__
+#define __FBS_H__
#include <e32base.h>
-
-enum TDisplayMode
- {
- ///No display mode
- ENoneCopy,
- ///Monochrome display mode (1 bpp)
- EGray2Copy,
- ///Four grayscales display mode (2 bpp)
- EGray4Copy,
- ///16 grayscales display mode (4 bpp)
- EGray16Copy,
- ///256 grayscales display mode (8 bpp)
- EGray256Copy,
- ///Low colour EGA 16 colour display mode (4 bpp)
- EColor16Copy,
- ///256 colour display mode (8 bpp)
- EColor256Copy,
- ///64,000 colour display mode (16 bpp)
- EColor64KCopy,
- ///True colour display mode (24 bpp)
- EColor16MCopy,
- ///(Not an actual display mode used for moving buffers containing bitmaps)
- ERgbCopy,
- ///4096 colour display (12 bpp).
- EColor4KCopy,
- EColor16MUCopy,
- ///Display mode with alpha (24bpp colour plus 8bpp alpha)
- EColor16MACopy,
- //Any new display mode should be insterted here!
- //There might be up to 255 display modes, so value of the last
- //inserted EColorXXX enum item should be less than 256 -
- //BC reasons!
- EColorLastCopy,
- };
+#include <gdi.h>
+#include <bitmap.h>
class CFbsBitmap
{
-
-
public:
CFbsBitmap();
@@ -66,16 +32,30 @@
TInt Create( const TSize& aSizeInPixels, TDisplayMode aDispMode);
- TInt CFbsBitmap::Load(const TDesC& /*aFileName*/,
- TInt32 /*aId*/,TBool /*aShareIfLoaded*/);
-
+TInt Load(const TDesC& aFileName,TInt32 aId=0,TBool aShareIfLoaded=ETrue);
+ TInt Load(const TDesC& aFileName,TInt32 aId,TBool aShareIfLoaded,TUint aFileOffset);
+ TInt Load(RFile& aFile,TInt32 aId=0,TBool aShareIfLoaded=ETrue);
+ TInt Load(RFile& aFile,TInt32 aId,TBool aShareIfLoaded,TUint aFileOffset);
+
+ TInt Resize(const TSize& aSizeInPixels);
+ TSize SizeInPixels() const;
+ TSize value;
- TInt CFbsBitmap::Load(const TDesC& /*aFileName*/,
- TInt32 /*aId*/,TBool /*aShareIfLoaded*/,
- TUint /*aFileOffset*/);
};
-#endif
\ No newline at end of file
+class CFbsFont
+ {
+ };
+
+class RFbsSession
+ {
+ };
+
+class CFbsTypefaceStore
+ {
+ };
+
+#endif
--- a/tsrc/fbsbitmapstub/src/fbs.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/fbsbitmapstub/src/fbs.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -35,17 +35,38 @@
return KErrNone;
}
-TInt CFbsBitmap::Load(const TDesC& /*aFileName*/,
- TInt32 /*aId*/,TBool /*aShareIfLoaded*/)
+TInt CFbsBitmap::Load(const TDesC& aFileName,
+ TInt32 aId,TBool aShareIfLoaded)
{
return KErrNone;
}
-TInt CFbsBitmap::Load(const TDesC& /*aFileName*/,
- TInt32 /*aId*/,TBool /*aShareIfLoaded*/,
- TUint /*aFileOffset*/)
+TInt CFbsBitmap::Load(const TDesC& aFileName,
+ TInt32 aId,TBool aShareIfLoaded,
+ TUint aFileOffset)
+ {
+ return KErrNone;
+ }
+
+TInt CFbsBitmap::Load(RFile& aFile,TInt32 aId,TBool aShareIfLoaded)
{
return KErrNone;
}
+TInt CFbsBitmap::Load(RFile& aFile,TInt32 aId,TBool aShareIfLoaded,TUint aFileOffset)
+ {
+ return KErrNone;
+ }
+
+TInt CFbsBitmap::Resize(const TSize& aSizeInPixels)
+ {
+ value = aSizeInPixels ;
+ return KErrNone;
+ }
+
+TSize CFbsBitmap::SizeInPixels() const
+ {
+ return value;
+ }
+
--- a/tsrc/install/multimediasharing_udeb.pkg Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/install/multimediasharing_udeb.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -45,7 +45,6 @@
;MUS GENERAL
"\epoc32\release\armv5\udeb\musmanagerserver.exe"-"!:\sys\bin\musmanagerserver.exe"
"\epoc32\release\armv5\udeb\musmanagerclient.dll"-"!:\sys\bin\musmanagerclient.dll"
-"\epoc32\release\armv5\udeb\musengine.dll"-"!:\sys\bin\musengine.dll"
"\epoc32\release\armv5\udeb\musindicator.dll"-"!:\sys\bin\musindicator.dll"
"\epoc32\data\z\resource\musindicator.rsc"-"!:\resource\musindicator.rsc"
"\epoc32\data\z\private\1028238D\tone.amr"-"!:\private\1028238D\tone.amr"
@@ -83,5 +82,9 @@
"\EPOC32\DATA\Z\Resource\apps\mussettingsplugin.mif"-"!:\resource\apps\mussettingsplugin.mif"
;MCC Transcoder
-;"\epoc32\RELEASE\armv5\udeb\mmcctranscoder.dll"-"!:\Sys\Bin\mmcctranscoder.dll"
-;"\epoc32\data\Z\Resource\Plugins\mmcctranscoder.RSC"-"!:\resource\plugins\mmcctranscoder.RSC"
+"\epoc32\RELEASE\armv5\udeb\mmcctranscoder.dll"-"!:\Sys\Bin\mmcctranscoder.dll"
+"\epoc32\data\Z\Resource\Plugins\mmcctranscoder.RSC"-"!:\resource\plugins\mmcctranscoder.RSC"
+
+; Livecomms MusEngine
+"\epoc32\release\armv5\udeb\musengineplugin.dll"-"!:\sys\bin\musengineplugin.dll"
+"\epoc32\data\z\resource\plugins\musengineplugin.rsc"-"!:\resource\plugins\musengineplugin.rsc"
--- a/tsrc/install/multimediasharing_update_udeb.pkg Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/install/multimediasharing_update_udeb.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -28,62 +28,81 @@
; -----------------------------------------------------------------------------------
-;MUS FILES
-;for S60 3.2
+;Multimediasharing binaries
+
+; Central repository
+;"\epoc32\data\z\private\10202be9\1028238b.txt"-"!:\private\10202BE9\1028238b.txt"
-;MUS CENREP KEY
-;"\epoc32\DATA\Z\private\10202be9\1028238b.txt"-"!:\private\10202BE9\1028238b.txt"
+; Backup registration and restore
+;"\epoc32\data\z\private\1028238D\backup_registration.xml"-"!:\private\1028238D\backup_registration.xml"
+
+; User interface
+;"\epoc32\release\armv5\udeb\musui.exe"-"!:\sys\bin\musui.exe"
-;MUS UI
-"\epoc32\release\armv5\udeb\musui.exe"-"!:\sys\bin\musui.exe"
-"\epoc32\data\z\resource\apps\musui.mbm"-"!:\resource\apps\musui.mbm"
-"\epoc32\data\z\resource\apps\musui_aif.mif"-"!:\resource\apps\musui_aif.mif"
-"\epoc32\data\z\resource\apps\musuiicons.mif"-"!:\resource\apps\musuiicons.mif"
-"\epoc32\data\z\resource\apps\musuitoolbaricons.mif"-"!:\resource\apps\musuitoolbaricons.mif"
-"\epoc32\data\z\resource\apps\musui.rsc"-"!:\resource\apps\musui.rsc"
-"\epoc32\data\z\private\10003a3f\apps\musui_reg.rsc"-"!:\private\10003a3f\import\apps\musui_reg.rsc"
+"\epoc32\release\armv5\udeb\livecommsui.dll"-"!:\sys\bin\livecommsui.dll"
+
+;"\epoc32\data\z\resource\apps\musui.rsc"-"!:\resource\apps\musui.rsc"
+;"\epoc32\data\z\private\10003a3f\import\apps\musui_reg.rsc"-"!:\private\10003a3f\import\apps\musui_reg.rsc"
+
+; User interface DOCMLs
+;"\epoc32\data\z\data\others\lcidleview.docml"-"!:\data\others\lcidleview.docml"
+;"\epoc32\data\z\data\others\lcreceiveview.docml"-"!:\data\others\lcreceiveview.docml"
+;"\epoc32\data\z\data\others\lcsendview.docml"-"!:\data\others\lcsendview.docml"
+;"\epoc32\data\z\data\others\lctwowayview.docml"-"!:\data\others\lctwowayview.docml"
+;"\epoc32\data\z\data\others\lcvtview.docml"-"!:\data\others\lcvtview.docml"
+;"\epoc32\data\z\data\others\lcreceiveonlyview.docml"-"!:\data\others\lcreceiveonlyview.docml"
-;MUS GENERAL
-"\epoc32\release\armv5\udeb\musmanagerserver.exe"-"!:\sys\bin\musmanagerserver.exe"
-"\epoc32\release\armv5\udeb\musmanagerclient.dll"-"!:\sys\bin\musmanagerclient.dll"
-"\epoc32\release\armv5\udeb\musengine.dll"-"!:\sys\bin\musengine.dll"
-"\epoc32\release\armv5\udeb\musindicator.dll"-"!:\sys\bin\musindicator.dll"
-"\epoc32\data\z\resource\musindicator.rsc"-"!:\resource\musindicator.rsc"
-"\epoc32\data\z\private\1028238D\tone.amr"-"!:\private\1028238D\tone.amr"
-"\epoc32\data\z\resource\apps\musindicatoricons.mif"-"!:\resource\apps\musindicatoricons.mif"
-"\epoc32\data\z\resource\apps\musindicatoricons.mbm"-"!:\resource\apps\musindicatoricons.mbm"
-
-;MUS ECOM PLUGINS
+; General components
+;"\epoc32\release\armv5\udeb\musmanagerserver.exe"-"!:\sys\bin\musmanagerserver.exe"
+;"\epoc32\release\armv5\udeb\musmanagerclient.dll"-"!:\sys\bin\musmanagerclient.dll"
+;"\epoc32\release\armv5\udeb\musindicator.dll"-"!:\sys\bin\musindicator.dll"
+;"\epoc32\data\z\resource\musindicator.rsc"-"!:\resource\musindicator.rsc"
+;"\epoc32\data\z\private\1028238D\tone.amr"-"!:\private\1028238D\tone.amr"
+;"\epoc32\data\z\resource\apps\musindicatoricons.mif"-"!:\resource\apps\musindicatoricons.mif"
+;"\epoc32\data\z\resource\apps\musindicatoricons.mbm"-"!:\resource\apps\musindicatoricons.mbm"
-; Always Online Plugin
-"\epoc32\release\armv5\udeb\musaoplugin.dll"-"!:\sys\bin\musaoplugin.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\musaoplugin.RSC"-"!:\resource\plugins\musaoplugin.RSC"
+; AlwaysOnline Plugin.
+;"\epoc32\release\armv5\udeb\musaoplugin.dll"-"!:\sys\bin\musaoplugin.dll"
+;"\epoc32\data\z\Resource\Plugins\musaoplugin.RSC"-"!:\resource\plugins\musaoplugin.RSC"
-; SIP Client Resolver Plugin
-"\epoc32\release\armv5\udeb\mussipcrplugin.dll"-"!:\sys\bin\mussipcrplugin.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\mussipcrplugin.RSC"-"!:\resource\plugins\mussipcrplugin.RSC"
+; Sip client resolver Plugin
+; In VOIP terminals, MuS uses same client resolver plugin as VoIP.
+; In all other terminals, a separate resolver plugin is needed.
+; So uncomment the below lines if phone do not have VOIP.
+;"\epoc32\release\armv5\udeb\mussipcrplugin.dll"-"!:\sys\bin\mussipcrplugin.dll"
+;"\epoc32\data\z\Resource\Plugins\mussipcrplugin.RSC"-"!:\resource\plugins\mussipcrplugin.RSC"
-; AIW Provider Plugin
-"\epoc32\release\armv5\udeb\musaiwprovider.dll"-"!:\sys\bin\musaiwprovider.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\musaiwprovider.RSC"-"!:\resource\plugins\musaiwprovider.RSC"
-"\EPOC32\DATA\Z\Resource\musaiwproviderui.RSC"-"!:\resource\musaiwproviderui.RSC"
+; AIW provider Plugin
+;"\epoc32\release\armv5\udeb\musaiwprovider.dll"-"!:\sys\bin\musaiwprovider.dll"
+;"\epoc32\data\z\Resource\Plugins\musaiwprovider.RSC"-"!:\resource\plugins\musaiwprovider.RSC"
+;"\epoc32\data\z\Resource\musaiwproviderui.RSC"-"!:\resource\musaiwproviderui.RSC"
; Availability Plugin
-"\epoc32\release\armv5\udeb\musavailabilityplugin.dll"-"!:\sys\bin\musavailabilityplugin.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\musavailabilityplugin.RSC"-"!:\resource\plugins\musavailabilityplugin.RSC"
+;"\epoc32\release\armv5\udeb\musavailabilityplugin.dll"-"!:\sys\bin\musavailabilityplugin.dll"
+;"\epoc32\data\z\Resource\Plugins\musavailabilityplugin.RSC"-"!:\resource\plugins\musavailabilityplugin.RSC"
-; WirelessProvisioning Adapter
-"\epoc32\release\armv5\udeb\muswpadapter.dll"-"!:\sys\bin\muswpadapter.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\muswpadapter.RSC"-"!:\resource\plugins\muswpadapter.RSC"
-"\EPOC32\DATA\Z\Resource\muswpadapterresource.RSC"-"!:\resource\muswpadapterresource.RSC"
+; Wireless Provisioning Adapter
+;"\epoc32\release\armv5\udeb\muswpadapter.dll"-"!:\sys\bin\muswpadapter.dll"
+;"\epoc32\data\z\Resource\Plugins\muswpadapter.RSC"-"!:\resource\plugins\muswpadapter.RSC"
+;"\epoc32\data\z\Resource\muswpadapterresource.RSC"-"!:\resource\muswpadapterresource.RSC"
+
+; Settings UI
+;"\epoc32\release\armv5\udeb\mussettingsui.dll"-"!:\sys\bin\mussettingsui.dll"
+;"\epoc32\data\z\Resource\Plugins\mussettingsui.RSC"-"!:\resource\plugins\mussettingsui.RSC"
+;"\epoc32\data\z\Resource\mussettingsuirsc.RSC"-"!:\resource\mussettingsuirsc.RSC"
+;"\epoc32\data\z\Resource\apps\mussettingsplugin.mif"-"!:\resource\apps\mussettingsplugin.mif"
-;SETTINGS UI
-"\epoc32\release\armv5\udeb\mussettingsui.dll"-"!:\sys\bin\mussettingsui.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\mussettingsui.RSC"-"!:\resource\plugins\mussettingsui.RSC"
-"\EPOC32\DATA\Z\Resource\mussettingsuirsc.RSC"-"!:\resource\mussettingsuirsc.RSC"
-"\EPOC32\DATA\Z\Resource\apps\mussettingsplugin.mif"-"!:\resource\apps\mussettingsplugin.mif"
+; MCC Transcoder
+;"\epoc32\release\armv5\udeb\mmcctranscoder.dll"-"!:\Sys\Bin\mmcctranscoder.dll"
+;"\epoc32\data\z\Resource\Plugins\mmcctranscoder.RSC"-"!:\resource\plugins\mmcctranscoder.RSC"
-;MCC Transcoder
-;"\epoc32\RELEASE\armv5\udeb\mmcctranscoder.dll"-"!:\Sys\Bin\mmcctranscoder.dll"
-;"\epoc32\data\Z\Resource\Plugins\mmcctranscoder.RSC"-"!:\resource\plugins\mmcctranscoder.RSC"
+; Help files
+;"\epoc32\data\z\Resource\xhtml\01\0x10282491\contents.zip"-"!:\resource\xhtml\01\0x10282491\contents.zip"
+;"\epoc32\data\z\Resource\xhtml\01\0x10282491\keywords.xml"-"!:\resource\xhtml\01\0x10282491\keywords.xml"
+;"\epoc32\data\z\Resource\xhtml\01\0x10282491\index.xml"-"!:\resource\xhtml\01\0x10282491\index.xml"
+;"\epoc32\data\z\Resource\xhtml\01\0x10282491\meta.xml"-"!:\resource\xhtml\01\0x10282491\meta.xml"
+; Engine
+;"\epoc32\release\armv5\udeb\musengineplugin.dll"-"!:\sys\bin\musengineplugin.dll"
+;"\epoc32\data\z\resource\plugins\musengineplugin.rsc"-"!:\resource\plugins\musengineplugin.rsc"
+
--- a/tsrc/install/multimediasharing_update_urel.pkg Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/install/multimediasharing_update_urel.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -28,61 +28,80 @@
; -----------------------------------------------------------------------------------
-;MUS FILES
-;for S60 3.2
+;Multimediasharing binaries
+
+; Central repository
+;"\epoc32\data\z\private\10202be9\1028238b.txt"-"!:\private\10202BE9\1028238b.txt"
-;MUS CENREP KEY
-;"\epoc32\DATA\Z\private\10202be9\1028238b.txt"-"!:\private\10202BE9\1028238b.txt"
+; Backup registration and restore
+;"\epoc32\data\z\private\1028238D\backup_registration.xml"-"!:\private\1028238D\backup_registration.xml"
+
+; User interface
+;"\epoc32\release\armv5\urel\musui.exe"-"!:\sys\bin\musui.exe"
-;MUS UI
-"\epoc32\release\armv5\urel\musui.exe"-"!:\sys\bin\musui.exe"
-"\epoc32\data\z\resource\apps\musui.mbm"-"!:\resource\apps\musui.mbm"
-"\epoc32\data\z\resource\apps\musui_aif.mif"-"!:\resource\apps\musui_aif.mif"
-"\epoc32\data\z\resource\apps\musuiicons.mif"-"!:\resource\apps\musuiicons.mif"
-"\epoc32\data\z\resource\apps\musuitoolbaricons.mif"-"!:\resource\apps\musuitoolbaricons.mif"
-"\epoc32\data\z\resource\apps\musui.rsc"-"!:\resource\apps\musui.rsc"
-"\epoc32\data\z\private\10003a3f\apps\musui_reg.rsc"-"!:\private\10003a3f\import\apps\musui_reg.rsc"
+"\epoc32\release\armv5\urel\livecommsui.dll"-"!:\sys\bin\livecommsui.dll"
+
+;"\epoc32\data\z\resource\apps\musui.rsc"-"!:\resource\apps\musui.rsc"
+;"\epoc32\data\z\private\10003a3f\import\apps\musui_reg.rsc"-"!:\private\10003a3f\import\apps\musui_reg.rsc"
+
+; User interface DOCMLs
+;"\epoc32\data\z\data\others\lcidleview.docml"-"!:\data\others\lcidleview.docml"
+;"\epoc32\data\z\data\others\lcreceiveview.docml"-"!:\data\others\lcreceiveview.docml"
+;"\epoc32\data\z\data\others\lcsendview.docml"-"!:\data\others\lcsendview.docml"
+;"\epoc32\data\z\data\others\lctwowayview.docml"-"!:\data\others\lctwowayview.docml"
+;"\epoc32\data\z\data\others\lcvtview.docml"-"!:\data\others\lcvtview.docml"
+;"\epoc32\data\z\data\others\lcreceiveonlyview.docml"-"!:\data\others\lcreceiveonlyview.docml"
-;MUS GENERAL
-"\epoc32\release\armv5\urel\musmanagerserver.exe"-"!:\sys\bin\musmanagerserver.exe"
-"\epoc32\release\armv5\urel\musmanagerclient.dll"-"!:\sys\bin\musmanagerclient.dll"
-"\epoc32\release\armv5\urel\musengine.dll"-"!:\sys\bin\musengine.dll"
-"\epoc32\release\armv5\urel\musindicator.dll"-"!:\sys\bin\musindicator.dll"
-"\epoc32\data\z\resource\musindicator.rsc"-"!:\resource\musindicator.rsc"
-"\epoc32\data\z\private\1028238D\tone.amr"-"!:\private\1028238D\tone.amr"
-"\epoc32\data\z\resource\apps\musindicatoricons.mif"-"!:\resource\apps\musindicatoricons.mif"
-"\epoc32\data\z\resource\apps\musindicatoricons.mbm"-"!:\resource\apps\musindicatoricons.mbm"
-
-;MUS ECOM PLUGINS
+; General components
+;"\epoc32\release\armv5\urel\musmanagerserver.exe"-"!:\sys\bin\musmanagerserver.exe"
+;"\epoc32\release\armv5\urel\musmanagerclient.dll"-"!:\sys\bin\musmanagerclient.dll"
+;"\epoc32\release\armv5\urel\musindicator.dll"-"!:\sys\bin\musindicator.dll"
+;"\epoc32\data\z\resource\musindicator.rsc"-"!:\resource\musindicator.rsc"
+;"\epoc32\data\z\private\1028238D\tone.amr"-"!:\private\1028238D\tone.amr"
+;"\epoc32\data\z\resource\apps\musindicatoricons.mif"-"!:\resource\apps\musindicatoricons.mif"
+;"\epoc32\data\z\resource\apps\musindicatoricons.mbm"-"!:\resource\apps\musindicatoricons.mbm"
-; Always Online Plugin
-"\epoc32\release\armv5\urel\musaoplugin.dll"-"!:\sys\bin\musaoplugin.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\musaoplugin.RSC"-"!:\resource\plugins\musaoplugin.RSC"
+; AlwaysOnline Plugin.
+;"\epoc32\release\armv5\urel\musaoplugin.dll"-"!:\sys\bin\musaoplugin.dll"
+;"\epoc32\data\z\Resource\Plugins\musaoplugin.RSC"-"!:\resource\plugins\musaoplugin.RSC"
-; SIP Client Resolver Plugin
-"\epoc32\release\armv5\urel\mussipcrplugin.dll"-"!:\sys\bin\mussipcrplugin.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\mussipcrplugin.RSC"-"!:\resource\plugins\mussipcrplugin.RSC"
+; Sip client resolver Plugin
+; In VOIP terminals, MuS uses same client resolver plugin as VoIP.
+; In all other terminals, a separate resolver plugin is needed.
+; So uncomment the below lines if phone do not have VOIP.
+;"\epoc32\release\armv5\urel\mussipcrplugin.dll"-"!:\sys\bin\mussipcrplugin.dll"
+;"\epoc32\data\z\Resource\Plugins\mussipcrplugin.RSC"-"!:\resource\plugins\mussipcrplugin.RSC"
-; AIW Provider Plugin
-"\epoc32\release\armv5\urel\musaiwprovider.dll"-"!:\sys\bin\musaiwprovider.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\musaiwprovider.RSC"-"!:\resource\plugins\musaiwprovider.RSC"
-"\EPOC32\DATA\Z\Resource\musaiwproviderui.RSC"-"!:\resource\musaiwproviderui.RSC"
+; AIW provider Plugin
+;"\epoc32\release\armv5\urel\musaiwprovider.dll"-"!:\sys\bin\musaiwprovider.dll"
+;"\epoc32\data\z\Resource\Plugins\musaiwprovider.RSC"-"!:\resource\plugins\musaiwprovider.RSC"
+;"\epoc32\data\z\Resource\musaiwproviderui.RSC"-"!:\resource\musaiwproviderui.RSC"
; Availability Plugin
-"\epoc32\release\armv5\urel\musavailabilityplugin.dll"-"!:\sys\bin\musavailabilityplugin.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\musavailabilityplugin.RSC"-"!:\resource\plugins\musavailabilityplugin.RSC"
+;"\epoc32\release\armv5\urel\musavailabilityplugin.dll"-"!:\sys\bin\musavailabilityplugin.dll"
+;"\epoc32\data\z\Resource\Plugins\musavailabilityplugin.RSC"-"!:\resource\plugins\musavailabilityplugin.RSC"
-; WirelessProvisioning Adapter
-"\epoc32\release\armv5\urel\muswpadapter.dll"-"!:\sys\bin\muswpadapter.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\muswpadapter.RSC"-"!:\resource\plugins\muswpadapter.RSC"
-"\EPOC32\DATA\Z\Resource\muswpadapterresource.RSC"-"!:\resource\muswpadapterresource.RSC"
+; Wireless Provisioning Adapter
+;"\epoc32\release\armv5\urel\muswpadapter.dll"-"!:\sys\bin\muswpadapter.dll"
+;"\epoc32\data\z\Resource\Plugins\muswpadapter.RSC"-"!:\resource\plugins\muswpadapter.RSC"
+;"\epoc32\data\z\Resource\muswpadapterresource.RSC"-"!:\resource\muswpadapterresource.RSC"
+
+; Settings UI
+;"\epoc32\release\armv5\urel\mussettingsui.dll"-"!:\sys\bin\mussettingsui.dll"
+;"\epoc32\data\z\Resource\Plugins\mussettingsui.RSC"-"!:\resource\plugins\mussettingsui.RSC"
+;"\epoc32\data\z\Resource\mussettingsuirsc.RSC"-"!:\resource\mussettingsuirsc.RSC"
+;"\epoc32\data\z\Resource\apps\mussettingsplugin.mif"-"!:\resource\apps\mussettingsplugin.mif"
-;SETTINGS UI
-"\epoc32\release\armv5\urel\mussettingsui.dll"-"!:\sys\bin\mussettingsui.dll"
-"\EPOC32\DATA\Z\Resource\Plugins\mussettingsui.RSC"-"!:\resource\plugins\mussettingsui.RSC"
-"\EPOC32\DATA\Z\Resource\mussettingsuirsc.RSC"-"!:\resource\mussettingsuirsc.RSC"
-"\EPOC32\DATA\Z\Resource\apps\mussettingsplugin.mif"-"!:\resource\apps\mussettingsplugin.mif"
+; MCC Transcoder
+;"\epoc32\release\armv5\urel\mmcctranscoder.dll"-"!:\Sys\Bin\mmcctranscoder.dll"
+;"\epoc32\data\z\Resource\Plugins\mmcctranscoder.RSC"-"!:\resource\plugins\mmcctranscoder.RSC"
-;MCC Transcoder
-;"\epoc32\RELEASE\armv5\urel\mmcctranscoder.dll"-"!:\Sys\Bin\mmcctranscoder.dll"
-;"\epoc32\data\Z\Resource\Plugins\mmcctranscoder.RSC"-"!:\resource\plugins\mmcctranscoder.RSC"
+; Help files
+;"\epoc32\data\z\Resource\xhtml\01\0x10282491\contents.zip"-"!:\resource\xhtml\01\0x10282491\contents.zip"
+;"\epoc32\data\z\Resource\xhtml\01\0x10282491\keywords.xml"-"!:\resource\xhtml\01\0x10282491\keywords.xml"
+;"\epoc32\data\z\Resource\xhtml\01\0x10282491\index.xml"-"!:\resource\xhtml\01\0x10282491\index.xml"
+;"\epoc32\data\z\Resource\xhtml\01\0x10282491\meta.xml"-"!:\resource\xhtml\01\0x10282491\meta.xml"
+
+; Engine
+;"\epoc32\release\armv5\urel\musengineplugin.dll"-"!:\sys\bin\musengineplugin.dll"
+;"\epoc32\data\z\resource\plugins\musengineplugin.rsc"-"!:\resource\plugins\musengineplugin.rsc"
--- a/tsrc/install/multimediasharing_urel.pkg Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/install/multimediasharing_urel.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -45,7 +45,6 @@
;MUS GENERAL
"\epoc32\release\armv5\urel\musmanagerserver.exe"-"!:\sys\bin\musmanagerserver.exe"
"\epoc32\release\armv5\urel\musmanagerclient.dll"-"!:\sys\bin\musmanagerclient.dll"
-"\epoc32\release\armv5\urel\musengine.dll"-"!:\sys\bin\musengine.dll"
"\epoc32\release\armv5\urel\musindicator.dll"-"!:\sys\bin\musindicator.dll"
"\epoc32\data\z\resource\musindicator.rsc"-"!:\resource\musindicator.rsc"
"\epoc32\data\z\private\1028238D\tone.amr"-"!:\private\1028238D\tone.amr"
@@ -83,5 +82,9 @@
"\EPOC32\DATA\Z\Resource\apps\mussettingsplugin.mif"-"!:\resource\apps\mussettingsplugin.mif"
;MCC Transcoder
-;"\epoc32\RELEASE\armv5\urel\mmcctranscoder.dll"-"!:\Sys\Bin\mmcctranscoder.dll"
-;"\epoc32\data\Z\Resource\Plugins\mmcctranscoder.RSC"-"!:\resource\plugins\mmcctranscoder.RSC"
+"\epoc32\RELEASE\armv5\urel\mmcctranscoder.dll"-"!:\Sys\Bin\mmcctranscoder.dll"
+"\epoc32\data\Z\Resource\Plugins\mmcctranscoder.RSC"-"!:\resource\plugins\mmcctranscoder.RSC"
+
+; Livecomms MusEngine
+"\epoc32\release\armv5\urel\musengineplugin.dll"-"!:\sys\bin\musengineplugin.dll"
+"\epoc32\data\z\resource\plugins\musengineplugin.rsc"-"!:\resource\plugins\musengineplugin.rsc"
\ No newline at end of file
--- a/tsrc/mceclientstub/group/mceclientstub.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/group/mceclientstub.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -18,6 +18,7 @@
// To get the APP_LAYER_SYSTEMINCLUDE-definition
#include <platform_paths.hrh>
+
#include <data_caging_paths.hrh>
#include<eunitcaps.h>
@@ -55,7 +56,18 @@
SOURCE mcetransactiondatacontainer.cpp
SOURCE staticdllentry.cpp
+SOURCEPATH ../../sipprofilestub/src
+SOURCE sipprofileregistrybasestub.cpp
+SOURCE sipprofileregistrystub.cpp
+SOURCE sipprofilestub.cpp
+
+
USERINCLUDE ../inc
+USERINCLUDE ../../sipprofilestub/inc
+
+
+// to replace SIP profiles with a stub
+SYSTEMINCLUDE ../../sipprofilestub/inc
// Default system include paths for application layer modules.
APP_LAYER_SYSTEMINCLUDE
--- a/tsrc/mceclientstub/inc/mcecamerasource.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/inc/mcecamerasource.h Tue Aug 31 15:12:07 2010 +0300
@@ -49,6 +49,8 @@
class CMceCameraSource : public CMceMediaSource
{
friend class UT_CMusEngLiveSession;
+ friend class UT_CMusEngTwoWaySession;
+ friend class UT_TMusEngCameraHandler;
public: // Constructors and destructor
@@ -64,6 +66,12 @@
*/
IMPORT_C static CMceCameraSource* NewLC( CMceManager& aManager );
+ /// Not in the real implementation
+ IMPORT_C static CMceCameraSource* NewL();
+
+ /// Not in the real implementation
+ IMPORT_C static CMceCameraSource* NewLC();
+
/**
* Destructor.
*/
@@ -210,11 +218,6 @@
* C++ constructor.
*/
CMceCameraSource();
-
- /**
- * Second-phase constructor.
- */
- void ConstructL( CMceManager* aManager );
private: // Owned data
@@ -232,6 +235,7 @@
public: // stub data
TInt iCameraIndex;
+ TInt iCameraCount;
TInt iZoomFactor;
TInt iDigitalZoomFactor;
TInt iContrast;
--- a/tsrc/mceclientstub/inc/mcedisplaysink.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/inc/mcedisplaysink.h Tue Aug 31 15:12:07 2010 +0300
@@ -71,6 +71,12 @@
*/
IMPORT_C static CMceDisplaySink* NewLC( CMceManager& aManager );
+ /// Not in the real implementation
+ IMPORT_C static CMceDisplaySink* NewL();
+
+ /// Not in the real implementation
+ IMPORT_C static CMceDisplaySink* NewLC();
+
/**
* Destructor.
*/
@@ -169,11 +175,6 @@
*/
CMceDisplaySink();
- /**
- * second-phase constructor
- */
- void ConstructL( CMceManager* aManager );
-
private: // Reserved for future use
TAny* iReserved;
--- a/tsrc/mceclientstub/inc/mceinsession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/inc/mceinsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -160,7 +160,7 @@
* Two-phased constructor.
* For temporay use only.
*/
- static CMceInSession* NewL();
+ IMPORT_C static CMceInSession* NewL();
/**
* C++ default constructor.
@@ -196,4 +196,4 @@
};
- #endif
\ No newline at end of file
+ #endif
--- a/tsrc/mceclientstub/inc/mceoutsession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/inc/mceoutsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -86,6 +86,9 @@
*/
IMPORT_C static CMceOutSession* NewL(CMceRefer& aRefer);
+ /// Note: This function exists only in the stub
+ IMPORT_C static CMceOutSession* NewL();
+
/**
* Destructor.
*/
--- a/tsrc/mceclientstub/inc/mcesession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/inc/mcesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -275,14 +275,15 @@
*/
IMPORT_C void SetModifierL( TMceSessionModifier aModifier,
TUint aValue );
-
- /**
+
+ /**
* Returns the identifier of profile used by the sesison.
* @return TUint32 Identifier of the used profile. 0,
* if session is setup without profile.
*/
IMPORT_C TUint32 Profile() const;
-
+
+
public:
CMceManager& Manager() const;
--- a/tsrc/mceclientstub/src/mcecamerasource.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/src/mcecamerasource.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -56,14 +56,35 @@
//
// -----------------------------------------------------------------------------
//
-EXPORT_C CMceCameraSource* CMceCameraSource::NewLC( CMceManager& aManager )
+EXPORT_C CMceCameraSource* CMceCameraSource::NewLC( CMceManager& /*aManager*/ )
{
- CMceCameraSource* self = new (ELeave) CMceCameraSource();
+ CMceCameraSource* self = new( ELeave )CMceCameraSource();
CleanupStack::PushL( self );
- self->ConstructL( &aManager );
return self;
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceCameraSource* CMceCameraSource::NewL()
+ {
+ CMceCameraSource* self = CMceCameraSource::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceCameraSource* CMceCameraSource::NewLC()
+ {
+ CMceCameraSource* self = new( ELeave )CMceCameraSource();
+ CleanupStack::PushL( self );
+ return self;
+ }
// -----------------------------------------------------------------------------
//
@@ -100,7 +121,7 @@
//
EXPORT_C TInt CMceCameraSource::CamerasAvailable() const
{
- return 1;
+ return iCameraCount;
}
@@ -127,6 +148,9 @@
EXPORT_C void CMceCameraSource::GetCameraInfo( TCameraInfo& aInfo ) const
{
aInfo = iCameraInfo;
+
+ aInfo.iMaxZoom += iCameraIndex*5;
+ aInfo.iMaxDigitalZoom += iCameraIndex*5;
}
@@ -322,20 +346,11 @@
iContrast( 0 ),
iBrightness( 0 ),
iExposure( CCamera::EExposureAuto ),
- iWhiteBalance( CCamera::EWBAuto )
+ iWhiteBalance( CCamera::EWBAuto ),
+ iCameraCount ( 2 )
{
iType = KMceCameraSource;
iCameraInfo.iMinZoom = 1;
iCameraInfo.iMaxZoom = 3;
iCameraInfo.iMaxDigitalZoom = 10;
}
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMceCameraSource::ConstructL( CMceManager* /*aManager*/ )
- {
- }
-
--- a/tsrc/mceclientstub/src/mcedisplaysink.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/src/mcedisplaysink.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -46,14 +46,35 @@
//
// -----------------------------------------------------------------------------
//
-EXPORT_C CMceDisplaySink* CMceDisplaySink::NewLC( CMceManager& aManager )
+EXPORT_C CMceDisplaySink* CMceDisplaySink::NewLC( CMceManager& /*aManager*/ )
{
CMceDisplaySink* self = new (ELeave) CMceDisplaySink();
CleanupStack::PushL( self );
- self->ConstructL( &aManager );
return self;
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceDisplaySink* CMceDisplaySink::NewL()
+ {
+ CMceDisplaySink* self = CMceDisplaySink::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceDisplaySink* CMceDisplaySink::NewLC()
+ {
+ CMceDisplaySink* self = new( ELeave )CMceDisplaySink();
+ CleanupStack::PushL( self );
+ return self;
+ }
// -----------------------------------------------------------------------------
//
@@ -200,17 +221,3 @@
{
iType = KMceDisplaySink;
}
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMceDisplaySink::ConstructL( CMceManager* /*aManager*/ )
- {
- }
-
-
-
-
-
--- a/tsrc/mceclientstub/src/mcefilesource.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/src/mcefilesource.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -324,8 +324,6 @@
//
void CMceFileSource::InitializeL( CMceManager* aManager )
{
- __ASSERT_ALWAYS( aManager, User::Leave( KErrArgument ) );
-
iDuration = TTimeIntervalMicroSeconds( 100000000 );
iAudioElementCount = 1;
--- a/tsrc/mceclientstub/src/mceinsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/src/mceinsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -52,7 +52,7 @@
// -----------------------------------------------------------------------------
//
-CMceInSession* CMceInSession::NewL()
+EXPORT_C CMceInSession* CMceInSession::NewL()
{
CMceInSession* self = new (ELeave) CMceInSession( NULL, 0 );
CleanupStack::PushL( self );
--- a/tsrc/mceclientstub/src/mceoutsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mceclientstub/src/mceoutsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -31,10 +31,16 @@
//
EXPORT_C CMceOutSession* CMceOutSession::NewL(
CMceManager& aManager,
- CSIPProfile& /*aProfile*/,
+ CSIPProfile& aProfile,
const TDesC8& aRecipient,
HBufC8* aOriginator )
{
+ // Check that profile has been registered
+ TBool profileRegistered = EFalse;
+
+ aProfile.GetParameter( KSIPProfileRegistered, profileRegistered );
+ __ASSERT_ALWAYS( profileRegistered, User::Leave( KErrCouldNotConnect ) );
+
CMceOutSession* self = new (ELeave) CMceOutSession( &aManager, 0 );
CleanupStack::PushL( self );
self->ConstructL( aRecipient, aOriginator );
@@ -60,6 +66,14 @@
return NULL;
}
+// -----------------------------------------------------------------------------
+// CMceOutSession::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMceOutSession* CMceOutSession::NewL()
+ {
+ return new( ELeave )CMceOutSession( NULL, 0 );
+ }
// -----------------------------------------------------------------------------
// CMceOutSession::~CMceOutSession
@@ -104,10 +118,7 @@
delete aContent;
delete aContentHeaders;
- iState = CMceSession::EOffering;
-
-
-
+ iState = CMceSession::EOffering;
}
@@ -160,7 +171,6 @@
//
void CMceOutSession::ConstructL( const TDesC8& aRecipient, HBufC8* aOriginator )
{
-
delete iRecipient;
iRecipient = NULL;
iRecipient = aRecipient.AllocL();
@@ -174,6 +184,4 @@
}
CMceSession::ConstructL();
-
-
}
--- a/tsrc/mmusavasettingsstub/inc/mmusavasettingsstub.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mmusavasettingsstub/inc/mmusavasettingsstub.h Tue Aug 31 15:12:07 2010 +0300
@@ -107,17 +107,6 @@
* @return SIP profile Id.
*/
virtual TInt SipProfileId() const;
-
- /**
- * Returns the direction of the mobile call.
- *
- * @return 0, if the direction of the call is unknown.
- * 1, call is from public number.
- * 2, call is from private number
- */
- virtual TInt CallPrivacy();
-
-
private: // data
@@ -166,13 +155,6 @@
* Own.
*/
CDesCArrayFlat* iAudioCodecs;
-
- /**
- * Call privacy indicator
- *
- */
-
- TInt iCallPrivacy;
MUS_UNITTEST( UT_CMusAvailabilityPluginManager )
--- a/tsrc/mmusavasettingsstub/src/mmusavasettingsstub.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/mmusavasettingsstub/src/mmusavasettingsstub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -93,9 +93,3 @@
{
return iSipProfileId;
}
-
-TInt CMusAvaSettings2::CallPrivacy()
- {
- return iCallPrivacy;
- }
-
--- a/tsrc/multimediasharingsettingsstub/inc/mussettings.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/multimediasharingsettingsstub/inc/mussettings.h Tue Aug 31 15:12:07 2010 +0300
@@ -31,19 +31,26 @@
{
public:
+ static MusSettingsKeys::TOperatorVariant
+ MultimediaSharingSettings::OperatorVariantSettingL();
+
+ static MusSettingsKeys::TAuditoryNotification AuditoryNotificationSettingL();
+
+ static MusSettingsKeys::TPopupNotification PopupNotificationSettingL();
static MusSettingsKeys::TAutoRecord AutoRecordSettingL();
static TInt VideoLocationSettingL();
static HBufC* VideoFolderSettingLC();
+ static MusSettingsKeys::TVideoDirection VideoDirectionL();
static HBufC* iVideoFolder;
static MusSettingsKeys::TAutoRecord iAutoRecord;
static TInt iVideoLocation;
-
+ static MusSettingsKeys::TVideoDirection iVideoDirection;
};
-#endif // MUSSETTINGS_H
\ No newline at end of file
+#endif // MUSSETTINGS_H
--- a/tsrc/multimediasharingsettingsstub/src/mussettings.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/multimediasharingsettingsstub/src/mussettings.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -25,7 +25,7 @@
MusSettingsKeys::TAutoRecord MultimediaSharingSettings::iAutoRecord = MusSettingsKeys::TAutoRecord( 0 );
TInt MultimediaSharingSettings::iVideoLocation = 2; // phone memory C:
-
+MusSettingsKeys::TVideoDirection MultimediaSharingSettings::iVideoDirection = MusSettingsKeys::EOneWayVideo;
HBufC* MultimediaSharingSettings::VideoFolderSettingLC()
{
@@ -34,6 +34,23 @@
}
+MusSettingsKeys::TAuditoryNotification
+ MultimediaSharingSettings::AuditoryNotificationSettingL()
+ {
+ //EAuditoryNotificationOn,
+ //EAuditoryNotificationOff
+ TInt value(MusSettingsKeys::EAuditoryNotificationOn);
+ return ( MusSettingsKeys::TAuditoryNotification ) value;
+ }
+
+MusSettingsKeys::TPopupNotification
+ MultimediaSharingSettings::PopupNotificationSettingL()
+ {
+ //EPopupNotificationOn
+ //EPopupNotificationOff
+ TInt value(MusSettingsKeys::EPopupNotificationOn);
+ return ( MusSettingsKeys::TPopupNotification ) value;
+ }
MusSettingsKeys::TAutoRecord MultimediaSharingSettings::AutoRecordSettingL()
{
@@ -46,3 +63,8 @@
return iVideoLocation;
}
+MusSettingsKeys::TVideoDirection MultimediaSharingSettings::VideoDirectionL()
+ {
+ return iVideoDirection;
+ }
+
--- a/tsrc/musavaailabilitystub/inc/musavaavailabilitystub.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musavaailabilitystub/inc/musavaavailabilitystub.h Tue Aug 31 15:12:07 2010 +0300
@@ -96,6 +96,8 @@
* @return Name of *this* availability.
*/
virtual MMusAvaObserver::TAvailabilityName Name();
+
+ virtual void PrepareForReceivedInviteL();
public:
@@ -103,6 +105,7 @@
TBool iExecuteLeave;
MMusAvaObserver::TAvailabilityStatus iStatusStub;
MMusAvaObserver::TAvailabilityName iNameStub;
+ TBool iPrepareForInviteCalled;
private:
@@ -118,4 +121,4 @@
};
-#endif // __MUSAVANETWORKAVAILABILITY_H__
\ No newline at end of file
+#endif // __MUSAVANETWORKAVAILABILITY_H__
--- a/tsrc/musavaailabilitystub/src/musavaailabilitystub.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musavaailabilitystub/src/musavaailabilitystub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -102,6 +102,15 @@
}
// -------------------------------------------------------------------------
+//
+// -------------------------------------------------------------------------
+//
+void CMusAvaAvailabilityStub::PrepareForReceivedInviteL()
+ {
+ iPrepareForInviteCalled = ETrue;
+ }
+
+// -------------------------------------------------------------------------
// Constructor function.
// -------------------------------------------------------------------------
//
--- a/tsrc/musenginestub/group/ABLD.BAT Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-@ECHO OFF
-
-REM Bldmake-generated batch file - ABLD.BAT
-REM ** DO NOT EDIT **
-
-perl -S ABLD.PL "\work\src\internal\stubs\musenginestub\group\\" %1 %2 %3 %4 %5 %6 %7 %8 %9
-if errorlevel==1 goto CheckPerl
-goto End
-
-:CheckPerl
-perl -v >NUL
-if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
-goto End
-
-:End
--- a/tsrc/musenginestub/group/bld.inf Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -15,5 +15,9 @@
*
*/
+#include <platform_paths.hrh>
+
PRJ_MMPFILES
-musenginestub.mmp
\ No newline at end of file
+musenginepluginstub.mmp
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/group/musenginepluginstub.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET musenginepluginstub.dll
+TARGETTYPE dll
+UID 0x1000008d 0x00000112 // Experimental UID
+CAPABILITY CAP_GENERAL_DLL
+VENDORID VID_DEFAULT
+
+
+SOURCEPATH ../src
+SOURCE musengsessionmanager.cpp
+SOURCE musengsession.cpp
+SOURCE musengmcesession.cpp
+SOURCE musengmceoutsession.cpp
+SOURCE musenglivesession.cpp
+SOURCE musengreceivesession.cpp
+SOURCE musengclipsession.cpp
+
+
+USERINCLUDE ../inc
+USERINCLUDE ../../../mmsharing/inc
+USERINCLUDE ../../../inc
+
+APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/ecom
+
+LIBRARY euser.lib
+LIBRARY cntmodel.lib ecom.lib
+DEBUGLIBRARY flogger.lib
--- a/tsrc/musenginestub/group/musenginestub.mmp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/group/musenginestub.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006 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"
@@ -10,39 +10,74 @@
* Nokia Corporation - initial contribution.
*
* Contributors:
-*
-* Description: Definition of project MceClientStub
+*
+* Description:
*
*/
+// using relative paths for sourcepath and user includes
+// exports are unfrozen
-// To get the APP_LAYER_SYSTEMINCLUDE-definition
#include <platform_paths.hrh>
#include <data_caging_paths.hrh>
#include<eunitcaps.h>
+#include "../../../inc/musuid.hrh"
-TARGET musenginestub.dll
-TARGETTYPE dll
-UID 0x1000008d 0x00000112 // Experimental UID
+// Capability assignment.
+CAPABILITY EUNIT_CAPS
+
+// Vendor ID assignment.
+VENDORID VID_DEFAULT
-CAPABILITY EUNIT_CAPS
-VENDORID VID_DEFAULT
-SOURCEPATH ../src
+TARGET musengine.dll
+TARGETTYPE dll
+UID 0x1000008d KMusEngineUid // 0x10282392
+
+//DOCUMENT Generic_Symbian_DLL_ReadMe.txt
+
+SOURCEPATH ../src
SOURCE musengsession.cpp
SOURCE musengmcesession.cpp
SOURCE musengmceoutsession.cpp
SOURCE musenglivesession.cpp
+SOURCE musengtwowaysession.cpp
+SOURCE musengtwowayrecvsession.cpp
SOURCE musengreceivesession.cpp
+SOURCE musengtelephoneutils.cpp
SOURCE musengsessiondurationtimer.cpp
-SOURCE musengclipsession.cpp
+SOURCE musengclipsession.cpp
+SOURCE musenguriparser.cpp
+SOURCE musengmceutils.cpp
+SOURCE musengcamerahandler.cpp
+
+// SIP API
+SOURCE mussipprofilehandler.cpp
-USERINCLUDE ../inc
+USERINCLUDE ../inc
+USERINCLUDE ../../mmshshared/inc
+USERINCLUDE ../../inc
+USERINCLUDE ../../../inc
APP_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/ecom
-LIBRARY euser.lib
+LIBRARY euser.lib
+LIBRARY bafl.lib
+LIBRARY inetprotutil.lib
+LIBRARY phoneclient.lib
+LIBRARY centralrepository.lib
+LIBRARY sipprofilecli.lib
+LIBRARY sipclient.lib
+LIBRARY sipcodec.lib
+LIBRARY mceclient.lib
+LIBRARY drmcommon.lib
+LIBRARY charconv.lib
+LIBRARY telephonyaudiorouting.lib
+LIBRARY pbkeng.lib
+LIBRARY cntmodel.lib
-EXPORTUNFROZEN
\ No newline at end of file
+DEBUGLIBRARY flogger.lib
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/musengaudioroutingobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* 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 MUSENGAUDIOROUTINGOBSERVER_H
+#define MUSENGAUDIOROUTINGOBSERVER_H
+
+
+// CLASS DECLARATION
+
+/**
+* An interface to be implemented by users of Multimedia Sharing Engine if
+* they wish to be notified about changes in audio routing.
+*
+*/
+class MMusEngAudioRoutingObserver
+ {
+
+ public:
+
+ /**
+ * Indicates that some other application has changed audio routing.
+ * @param aShowNote ETrue if notification of current change should be
+ * shown.
+ *
+ */
+ virtual void AudioRoutingChanged( TBool aShowNote ) = 0;
+
+ /**
+ * Observer is required to give information whether audio route change
+ * is allowed currently.
+ * @param ETrue if change is allowed, otherwise EFalse
+ *
+ */
+ virtual TBool AudioRouteChangeAllowed() const = 0;
+
+ };
+
+#endif // INCLUDE GUARD
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/musengcamerahandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,255 @@
+/*
+* 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 MUSHENGCAMERAHANDLER_H
+#define MUSHENGCAMERAHANDLER_H
+
+// USER
+#include "musunittesting.h"
+#include "mussettings.h"
+
+// SYSTEM
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class CMceCameraSource;
+class CMceSession;
+
+// CLASS
+
+class TMusEngCameraHandler
+ {
+ MUS_UNITTEST( UT_CMusEngOutSession )
+ MUS_UNITTEST( UT_CMusEngLiveSession )
+ MUS_UNITTEST( UT_CMusEngTwoWaySession )
+ MUS_UNITTEST( UT_CMusEngTwoWayRecvSession )
+ MUS_UNITTEST( UT_TMusEngCameraHandler )
+
+ public:
+ /*
+ * Defines current camera to be used
+ */
+ enum TCurrentCamera
+ {
+ ENextCamera = -1,
+ EBackCamera = 0,
+ EFrontCamera = 1
+ };
+
+ public:
+
+ /**
+ * Determines the number of cameras on the device.
+ *
+ * @param aCurrentCamera returns current camera..
+ *
+ * @return Count of cameras present on the device.
+ */
+ IMPORT_C TInt CamerasAvailableL( TCurrentCamera& aCurrentCamera );
+
+ /**
+ * Change current camera to front to back
+ *
+ * @param aCurrentCamera Change camera to be used.
+ */
+ IMPORT_C void ChangeCameraL( TCurrentCamera aCurrentCamera );
+
+ /**
+ * Gets current zoom factor
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C TInt CurrentZoomL() const;
+
+ /**
+ * Sets new zoom factor
+ *
+ * @pre Session is established
+ * @pre MinZoomL <= aNewZoomFactor <= MaxZoomL
+ * @leave KErrNotReady if session is not established
+ */
+ IMPORT_C void SetZoomL( TInt aNewZoomFactor );
+
+ /**
+ * Gets minimum zoom factor
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C TInt MinZoomL() const;
+
+ /**
+ * Gets maximum zoom factor
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C TInt MaxZoomL() const;
+
+ /**
+ * Increases zoom factor by one.
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C void ZoomInL();
+
+ /**
+ * Decreases zoom factor by one.
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C void ZoomOutL();
+
+ /**
+ * Sets zoom factor to default.
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C void ZoomDefaultL();
+
+ /**
+ * Sets current brightness
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C void SetBrightnessL( TInt aBrightness ) const;
+
+
+ /**
+ * Gets current brightness
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C TInt CurrentBrightnessL() const;
+
+ /**
+ * Gets maximum brightness
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C TInt MaxBrightnessL() const;
+
+ /**
+ * Gets minimum brightness
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C TInt MinBrightnessL() const;
+
+ /**
+ * Increases brightness by one.
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C void IncreaseBrightnessL();
+
+ /**
+ * Decreases brightness by one.
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C void DecreaseBrightnessL();
+
+ /**
+ * Sets brightness factor to default.
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C void BrightnessDefaultL();
+
+ /**
+ * Sets brightness to automatic.
+ *
+ * @pre Session is established
+ * @leave KErrNotReady if precondition not fullfilled
+ */
+ IMPORT_C void BrightnessAutoL();
+
+ /**
+ * Resumes previously paused session.
+ * Continues using viewfinder and enables streaming video.
+ *
+ */
+ IMPORT_C void PlayL();
+
+ /**
+ * Pauses session.
+ * Holds display and disables streaming video to network.
+ *
+ */
+ IMPORT_C void PauseL();
+
+ /**
+ * Tells whether session is paused or not
+ */
+ IMPORT_C TBool IsPlayingL();
+
+
+ public:
+
+ TMusEngCameraHandler();
+
+ void SetSession( CMceSession* aSession );
+
+ void InitializeL( CMceCameraSource& aCamera );
+
+ void InitializeZoomStepSize();
+
+ void ReadCameraUsageKeyL();
+
+ TInt ZoomStepSize( TInt64& aTime );
+
+ void ChangeActiveCameraL( TCurrentCamera aNewCamera );
+
+ private:
+
+ CMceSession* iSession; // Not owned
+
+ TCameraInfo iCameraInfo;
+
+ TInt iDefaultZoomFactor;
+
+ TInt iDefaultBrightness;
+
+ TInt64 iZoomInTime;
+
+ TInt64 iZoomOutTime;
+
+ TInt iSmallZoomStep;
+
+ TInt iBigZoomStep;
+
+ TCurrentCamera iCurrentCamera;
+
+ MusSettingsKeys::TUseCamera iCameraUsage;
+
+ };
+
+#endif
+
--- a/tsrc/musenginestub/inc/musengclipsession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengclipsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -22,153 +22,37 @@
// USER
#include "musengmceoutsession.h"
-
-class MMusEngClipSessionObserver;
-class CMusEngLiveSession;
-class CMceFileSource;
-
class CMusEngClipSession : public CMusEngMceOutSession
{
-
+
public:
/**
*
- * @since S60 v3.2
*/
- IMPORT_C static CMusEngClipSession* NewL(
- const TDesC& aFileName,
- const TRect& aRect,
- MMusEngClipSessionObserver* aSessionObserver,
- TUint aSipProfileId = 0 );
-
- /**
- *
- * @since 3.2
- */
- ~CMusEngClipSession();
-
-
- public: // new API
-
- /**
- * Sets file to be shared during session.
- * @pre Session must be established
- * @pre New file cannot be DRM protected
- * @leave One of the system wide error codes
- * @param aFileName Name of the file to be shared
- * @since S60 v3.2
- */
- IMPORT_C void ChangeClipL( const TDesC& aFileName );
-
- /**
- *
- * @since S60 v3.2
- */
- IMPORT_C void FastForwardL( TBool aUseFFWD );
-
- /**
- *
- * @since S60 v3.2
- */
- IMPORT_C void FastRewindL( TBool aUseFRWD );
-
- /**
- *
- * @since S60 v3.2
- */
- IMPORT_C TTimeIntervalSeconds PositionL();
-
+ static CMusEngClipSession* NewL(
+ const TRect& aRect );
+
/**
*
- * @since S60 v3.2
*/
- IMPORT_C TTimeIntervalSeconds DurationL();
-
- /**
- *
- * @since S60 v3.2
- */
- IMPORT_C void SetPositionL (const TTimeIntervalSeconds &aPosition);
-
-
- public:
-
- /**
- *
- * @since S60 v3.2
- */
- IMPORT_C void SetSessionObserver(
- MMusEngClipSessionObserver* aSessionObserver );
-
-
- public: // implementation of virtual API from CMusEngMceOutSession
-
- /**
- * Resumes previously paused session.
- * Continues showing file on display, resumes clip's audio, continues
- * playing file and enables streaming to network.
- *
- * @since S60 v3.2
- */
- IMPORT_C void PlayL();
-
- /**
- * Pauses session.
- * Holds display, mutes clip's audio, pauses file and
- * disables all streaming to network.
- *
- * @since S60 v3.2
- */
- IMPORT_C void PauseL();
-
-
- protected: // implementation of virtual helper from CMusEngMceOutSession
-
- /**
- *
- * @since S60 v3.2
- */
- void CompleteSessionStructureL();
+ ~CMusEngClipSession();
private:
/**
*
- * @since S60 v3.2
*/
- CMusEngClipSession( MMusEngClipSessionObserver* aSessionObserver,
- const TRect& aRect,
- TUint aSipProfileId = 0 );
+ CMusEngClipSession( const TRect& aRect );
/**
* @leave KErrPermissionDenied if file is DRM protected
- * @since S60 v3.2
*/
- void ConstructL( const TDesC& aFileName );
+ void ConstructL();
- private: // HELPERS
-
- /**
- *
- * @since S60 v3.2
- */
- TBool IsProtectedFileL( const TDesC& aClipFile );
-
- /**
- * Constructs audio stream structure during session completion and adds
- * it to session.
- * @pre iSession != NULL
- * @pre iFileSource != NULL
- */
- void ConstructAudioStructureL();
-
- public: // Data
-
- CMceFileSource* iFileSource;
-
+
};
#endif
--- a/tsrc/musenginestub/inc/musengclipsessionobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengclipsessionobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -16,28 +16,58 @@
*/
-#ifndef MUSHENGCLIPSESSIONOBSERVER_H
-#define MUSHENGCLIPSESSIONOBSERVER_H
+#ifndef MUSENGCLIPSESSIONOBSERVER_H
+#define MUSENGCLIPSESSIONOBSERVER_H
// INCLUDES
-#include <e32std.h>
-#include "musengoutsessionobserver.h"
+#include <e32def.h>
// CLASS DECLARATION
/**
-* An interface to be implemented by users of Multimedia Sharing Engine if they wish to receive
-* events from session state changes.
+* An interface to be implemented by users of Multimedia Sharing Engine
+* if they wish to receive clip sharing specific events.
*
-* This observer is set using CMSSession::SetSessionObserver function.
+* This observer is set using CMusEngClipSession::SetSessionObserver function.
*
-* @lib ???.lib
*/
-class MMusEngClipSessionObserver : public MMusEngOutSessionObserver
+class MMusEngClipSessionObserver
{
public:
+ /**
+ * Indicates that shared clip has ended.
+ */
virtual void EndOfClip() = 0;
+
+ /**
+ * Indicates that chosen clip must be transcoded before sharing.
+ */
+ virtual void TranscodingNeeded() = 0;
+
+ /**
+ * Indicates that transcoding has progressed.
+ * @param aPercentage Percentage of completion
+ */
+ virtual void TranscodingProgressed( TInt aPercentage ) = 0;
+
+ /**
+ * Indicates that transcoding has successfully complited
+ * but session establishment is not yet proceeding.
+ */
+ virtual void TranscodingCompletedInit() = 0;
+
+ /**
+ * Indicates that transcoding has successfully complited
+ * and session establishment continues.
+ */
+ virtual void TranscodingCompletedFinalize() = 0;
+
+ /**
+ * Indicates that transcoding has failed.
+ */
+ virtual void TranscodingFailed() = 0;
+
};
#endif
\ No newline at end of file
--- a/tsrc/musenginestub/inc/musenglivesession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musenglivesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -21,182 +21,189 @@
// USER
#include "musengmceoutsession.h"
+#include "musunittesting.h"
+#include "mussettings.h"
+#include "musengcamerahandler.h"
+#include "lcvideoplayer.h"
+#include "lccameracontrol.h"
+#include "lcbrightnesscontrol.h"
+#include "lczoomcontrol.h"
+#include "lcfilecontrol.h"
// SYSTEM
#include <ecam.h>
// FORWARD DECLARATIONS
class MMusEngLiveSessionObserver;
+class MLcValueControl;
-class CMusEngLiveSession : public CMusEngMceOutSession
+class CMusEngLiveSession :
+ public CMusEngMceOutSession,
+ public MLcVideoPlayer,
+ public MLcCameraControl,
+ public MLcBrightnessControl,
+ public MLcZoomControl,
+ public MLcFileControl
{
-
+
public:
-
/**
* Creates new MultimediaSharing Live session.
*
- * @since S60 v3.2
* @param aFileName Media filename
* @param aRect UI drawing area. It is allowed handle from engine
- * @param aSessionObserver Session specific callbacks
- * @param aSipProfileId SIP profile to be used, 0 is default profile
+ * @param aSessionObserver Interface for session specific callbacks
+ * @param aOutSessionObserver Interface for outsession specific callbacks
+ * @param aLiveSessionObserver interface for live session specific
+ * callbacks
* @return CMusEngLiveSession* New instanse of specified class
*/
- IMPORT_C static CMusEngLiveSession* NewL(
- const TDesC& aFileName,
- const TRect& aRect,
- MMusEngLiveSessionObserver* aSessionObserver,
- TUint aSipProfileId = 0);
-
+ static CMusEngLiveSession* NewL(
+ const TDesC& aFileName,
+ const TRect& aRect );
+
/**
* Creates new MultimediaSharing Live session.
*
- * @since S60 v3.2
* @param aRect UI drawing area. It is allowed handle from engine
- * @param aSessionObserver Session specific callbacks
- * @param aSipProfileId SIP profile to be used, 0 is default profile
+ * @param aSessionObserver Interface for session specific callbacks
+ * @param aOutSessionObserver Interface for outsession specific callbacks
+ * @param aLiveSessionObserver interface for live session specific
+ * callbacks
* @return CMusEngLiveSession* New instanse of specified class
*/
- IMPORT_C static CMusEngLiveSession* NewL(
- const TRect& aRect,
- MMusEngLiveSessionObserver* aSessionObserver,
- TUint aSipProfileId = 0 );
+ static CMusEngLiveSession* NewL(
+ const TRect& aRect );
+
public:
/**
* Destructor
- *
- * @since S60 v3.2
*/
~CMusEngLiveSession();
-
- public: // NEW API FUNCTIONS live session specific
-
- /**
- * Sets callback interface pointer
- *
- * @since S60 v3.2
- * @param aSessionObserver Pointer to class which implements interface
- */
- IMPORT_C void SetSessionObserver(
- MMusEngLiveSessionObserver* aSessionObserver );
+ public: // from MLcSession
+
+ void EstablishLcSessionL();
+
+ MLcVideoPlayer* LocalVideoPlayer();
+
+ const TDesC& RemoteDisplayName();
+
+
+ public: // from MLcVideoPlayer
+
+ TLcVideoPlayerState LcVideoPlayerState() const;
+
+ TBool LcIsPlayingL();
+
+ void LcPlayL();
+
+ void LcPauseL();
+
+ MLcWindow* LcWindow();
- /**
- * Gets current zoom factor
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- * @since S60 v3.2
- */
- IMPORT_C TInt CurrentZoomL() const;
+ MLcCameraControl* LcCameraControl();
+
+ MLcFileControl* LcSourceFile();
+
+ MLcFileControl* LcDestinationFile();
+
+ MLcAudioControl* LcAudioControl();
+
+ MLcZoomControl* LcZoomControl();
+
+ MLcBrightnessControl* LcBrightnessControl();
- /**
- * Gets maximum zoom factor
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- * @since S60 v3.2
- */
- IMPORT_C TInt MaxZoomL() const;
+ RPointerArray< MLcValueControl >& LcExtensionControls();
- IMPORT_C TInt MinZoomL() const;
-
- /**
- * Increases zoom factor by one.
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- * @since S60 v3.2
- */
- IMPORT_C void ZoomInL();
+ public: // from MLcCameraControl
+
+ TInt LcCameraCountL();
- /**
- * Decreases zoom factor by one.
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- * @since S60 v3.2
- */
- IMPORT_C void ZoomOutL();
+ void ToggleLcCameraL();
+
+ public: // MLcBrightnessControl
+
+ TInt MinLcBrightnessL();
+
+ TInt MaxLcBrightnessL();
+
+ TInt LcBrightnessL();
- /**
- * Sets zoom factor to default.
- *
- * @pre Session is established
- * @leave KErrNotReady if precondition not fullfilled
- * @since S60 v3.2
- */
- IMPORT_C void ZoomDefaultL();
-
- public: // implementation of virtual API from CMusEngMceOutSession
+ void SetLcBrightnessL( TInt aValue );
+
+ void IncreaseLcBrightnessL();
+
+ void DecreaseLcBrightnessL();
+
+ public: // from MLcZoomControl
+
+ TInt MinLcZoomL();
- /**
- * Resumes previously paused session.
- * Continues using viewfinder and enables streaming video.
- *
- * @since S60 v3.2
- */
- IMPORT_C void PlayL();
+ TInt MaxLcZoomL();
+
+ TInt LcZoomValueL();
- /**
- * Pauses session.
- * Holds display and disables streaming video to network.
- *
- * @since S60 v3.2
- */
- IMPORT_C void PauseL();
-
+ void SetLcZoomValueL( TInt aValue );
+
+ void LcZoomInL();
+
+ void LcZoomOutL();
+
+ public: // from MLcFileControl
+
+ void EnableLcFileL( TBool aEnable );
+
+ TBool IsLcFileEnabled();
- protected: // inherited from CMusEngMceOutSession
-
- /**
- *
- * @since S60 v3.2
- */
- void CompleteSessionStructureL();
-
-
- private:
+ void SetLcFileNameL( const TFileName& aFileName );
+
+ TFileName& LcFileName();
+
+ protected:
/**
* Constructor
-
- * @since S60 v3.2
*/
- CMusEngLiveSession( MMusEngLiveSessionObserver* aSessionObserver,
- const TRect& aRect,
- TUint aSipProfileId = 0 );
+ CMusEngLiveSession( const TRect& aRect,
+ const TDesC& aRecordedFile = KNullDesC );
/**
* Second-phase constructor
- *
- * @since S60 v3.2
*/
void ConstructL();
+
- public:
+ protected:
/**
- *
- * @since S60 v3.2
+ * File name for recording. If KNullDesC no recording performed.
+ */
+ TFileName iRecordedFile;
+
+ /**
+ * Dummy member variable to implement MLcVideoPlayer::LcExtensionControls
*/
- //TCameraInfo iCameraInfo;
-
- /**
- *
- * @since S60 v3.2
- */
+ RPointerArray< MLcValueControl > iValueControls;
+
+ TMusEngCameraHandler iCameraHandler;
+
+ /*
+ * Remote Display Name
+ */
+ HBufC* iRemoteDisplayName;
+
+ TInt iCurrentZoom;
TInt iDefaultZoomFactor;
+ TInt iCurrentBrighness;
TInt iPlaying;
- TInt iCurrentZoom;
-
-
+ TBool iFileEnabled;
+
};
#endif
--- a/tsrc/musenginestub/inc/musenglivesessionobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musenglivesessionobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -19,23 +19,24 @@
#ifndef MUSHENGLIVESESSIONOBSERVER_H
#define MUSHENGLIVESESSIONOBSERVER_H
-// INCLUDES
-#include "musengoutsessionobserver.h"
+
// CLASS DECLARATION
/**
-* An interface to be implemented by users of Multimedia Sharing Engine if
-* they wish to receive
-* events from session state changes.
-*
-* This observer is set using CMSSession:: function.
-*
-* @lib musengine.lib
-* @since S60 v3.2
+* An interface to be implemented by clients of Multimedia Sharing Engine if
+* they wish to receive events about live sharing specific event.
*/
-class MMusEngLiveSessionObserver : public MMusEngOutSessionObserver
+class MMusEngLiveSessionObserver
{
+
+ public:
+
+ /**
+ * Indicates that disk has run out of space during recording.
+ */
+ virtual void DiskFull() = 0;
+
};
#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/musenglogger.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,301 @@
+/*
+* Copyright (c) 2006 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: ?Description
+*
+*/
+
+
+#ifndef MUSENGLOGGER_H
+#define MUSENGLOGGER_H
+
+
+#include "muslogger.h"
+
+#if ( !_DEBUG || UNIT_TESTING ) // release or unit test build; no logs
+
+#define MUS_ENG_LOG_SESSION_STATE( aSession )
+#define MUS_ENG_LOG_SESSION_STATE_AND_STATUS( aSession, aStatusCode, aReasonPhrase )
+#define MUS_ENG_LOG_STREAM_STATE( aStream )
+#define MUS_ENG_LOG_SINK_STATES( aStream )
+#define MUS_ENG_LOG_SOURCE_STATE( aSource )
+#define MUS_ENG_LOG_SINK_STATE( aSink )
+#define MUS_ENG_LOG_STATUS( aStatusCode, aReasonPhrase )
+
+#else // debug build; logs
+
+#include <mcesession.h>
+#include <mceaudiostream.h>
+#include <mcecamerasource.h>
+#include <mcefilesource.h>
+#include <mcertpsource.h>
+#include <mcedisplaysink.h>
+#include <mcespeakersink.h>
+#include <mcefilesink.h>
+#include <mcertpsink.h>
+
+#define MUS_ENG_LOG_SESSION_STATE( aSession )\
+ {\
+ TBuf<15> state;\
+ switch ( (aSession).State() )\
+ {\
+ case CMceSession::EIdle:\
+ {\
+ state = _L("EIdle");\
+ break;\
+ }\
+ case CMceSession::EOffering :\
+ {\
+ state = _L("EOffering");\
+ break;\
+ }\
+ case CMceSession::EIncoming:\
+ {\
+ state = _L("EIncoming");\
+ break;\
+ }\
+ case CMceSession::EReserving :\
+ {\
+ state = _L("EReserving");\
+ break;\
+ }\
+ case CMceSession::EAnswering :\
+ {\
+ state = _L("EAnswering");\
+ break;\
+ }\
+ case CMceSession::EProceeding :\
+ {\
+ state = _L("EProceeding");\
+ break;\
+ }\
+ case CMceSession::EEstablished:\
+ {\
+ state = _L("EEstablished");\
+ break;\
+ }\
+ case CMceSession::ECancelling:\
+ {\
+ state = _L("ECancelling");\
+ break;\
+ }\
+ case CMceSession::ETerminating:\
+ {\
+ state = _L("ETerminating");\
+ break;\
+ }\
+ case CMceSession::ETerminated:\
+ {\
+ state = _L("ETerminated");\
+ break;\
+ }\
+ default:\
+ {\
+ state = _L("Unknown");\
+ break;\
+ }\
+ }\
+ MUS_LOG_TDESC( "mus: [ENGINE] Session state is ", state )\
+ }
+
+
+#define MUS_ENG_LOG_SESSION_STATE_AND_STATUS( aSession, aStatusCode, aReasonPhrase )\
+ {\
+ MUS_ENG_LOG_SESSION_STATE( aSession )\
+ MUS_ENG_LOG_STATUS( aStatusCode, aReasonPhrase )\
+ }
+
+
+#define MUS_ENG_LOG_STREAM_STATE( aStream )\
+ {\
+ TBuf<20> streamState;\
+ switch ( (aStream).State() )\
+ {\
+ case CMceMediaStream::EUninitialized:\
+ {\
+ streamState = _L("EIdle");\
+ break;\
+ }\
+ case CMceMediaStream::EInitialized:\
+ {\
+ streamState = _L("EInitialized");\
+ break;\
+ }\
+ case CMceMediaStream::EBuffering:\
+ {\
+ streamState = _L("EBuffering");\
+ break;\
+ }\
+ case CMceMediaStream::EIdle:\
+ {\
+ streamState = _L("EIdle");\
+ break;\
+ }\
+ case CMceMediaStream::EStreaming:\
+ {\
+ streamState = _L("EStreaming");\
+ break;\
+ }\
+ case CMceMediaStream::EDisabled:\
+ {\
+ streamState = _L("EDisabled");\
+ break;\
+ }\
+ case CMceMediaStream::ENoResources:\
+ {\
+ streamState = _L("ENoResources");\
+ break;\
+ }\
+ case CMceMediaStream::ETranscodingRequired:\
+ {\
+ streamState = _L("ETranscodingRequired");\
+ break;\
+ }\
+ case CMceMediaStream::ETranscoding:\
+ {\
+ streamState = _L("ETranscoding");\
+ break;\
+ }\
+ default:\
+ {\
+ streamState = _L("Unknown");\
+ break;\
+ }\
+ }\
+ if ( (aStream).Type() == KMceAudio )\
+ {\
+ MUS_LOG_TDESC( "mus: [ENGINE] AudioStream state is ", streamState )\
+ }\
+ else\
+ {\
+ MUS_LOG_TDESC( "mus: [ENGINE] VideoStream state is ", streamState )\
+ }\
+ MUS_ENG_LOG_SOURCE_STATE( (aStream).Source() )\
+ MUS_ENG_LOG_SINK_STATES( (aStream) )\
+ }
+
+
+#define MUS_ENG_LOG_SINK_STATES( aStream )\
+ {\
+ for ( TInt sinkIndex = 0; sinkIndex < aStream.Sinks().Count(); ++sinkIndex )\
+ {\
+ MUS_ENG_LOG_SINK_STATE( aStream.Sinks()[ sinkIndex ] )\
+ }\
+ }
+
+
+#define MUS_ENG_LOG_SOURCE_STATE( aSource )\
+ {\
+ if ( aSource )\
+ {\
+ TBuf<10> sourceState;\
+ if ( aSource->IsEnabled() )\
+ {\
+ sourceState = _L("enabled");\
+ }\
+ else\
+ {\
+ sourceState = _L("disabled");\
+ }\
+ switch ( aSource->Type() )\
+ {\
+ case KMceCameraSource:\
+ {\
+ MUS_LOG_TDESC( " CameraSource is ", sourceState )\
+ break;\
+ }\
+ case KMceFileSource:\
+ {\
+ MUS_LOG_TDESC( " FileSource is ", sourceState )\
+ break;\
+ }\
+ case KMceRTPSource:\
+ {\
+ MUS_LOG_TDESC( " RtpSource is ", sourceState )\
+ break;\
+ }\
+ default:\
+ {\
+ MUS_LOG_TDESC( " UnknownSource is ", sourceState )\
+ break;\
+ }\
+ }\
+ }\
+ else\
+ {\
+ MUS_LOG( " No source in stream" )\
+ }\
+ }
+
+#define MUS_ENG_LOG_SINK_STATE( aSink )\
+ {\
+ if ( aSink )\
+ {\
+ TBuf<10> sinkState;\
+ if ( aSink->IsEnabled() )\
+ {\
+ sinkState = _L("enabled");\
+ }\
+ else\
+ {\
+ sinkState = _L("disabled");\
+ }\
+ switch ( aSink->Type() )\
+ {\
+ case KMceDisplaySink:\
+ {\
+ MUS_LOG_TDESC( " DisplaySink is ", sinkState )\
+ break;\
+ }\
+ case KMceSpeakerSink:\
+ {\
+ MUS_LOG_TDESC( " SpeakerSink is ", sinkState )\
+ break;\
+ }\
+ case KMceRTPSink:\
+ {\
+ MUS_LOG_TDESC( " RtpSink is ", sinkState )\
+ break;\
+ }\
+ case KMceFileSink:\
+ {\
+ MUS_LOG_TDESC( " FileSink is ", sinkState )\
+ break;\
+ }\
+ default:\
+ {\
+ MUS_LOG_TDESC( " UnknownSink is ", sinkState )\
+ break;\
+ }\
+ }\
+ }\
+ }
+
+
+#define MUS_ENG_LOG_STATUS( aStatusCode, aReasonPhrase )\
+ {\
+ MUS_LOG1( " StatusCode is %d", aStatusCode )\
+ HBufC16* reasonPhrase = HBufC16::NewLC( aReasonPhrase.Length() );\
+ reasonPhrase->Des().Copy( aReasonPhrase );\
+ MUS_LOG_TDESC( " ReasonPhrase is ",(*reasonPhrase) )\
+ CleanupStack::PopAndDestroy( reasonPhrase );\
+ }
+
+
+
+#endif // _DEBUG
+
+
+#endif // MUSENGLOGGER_H
+
+// End of File
--- a/tsrc/musenginestub/inc/musengmceoutsession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengmceoutsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -23,10 +23,6 @@
#include "musengmcesession.h"
-// FORWARD DECLARATIONS
-class CSIPProfile;
-class CMusSipProfileHandler;
-class MMusEngOutSessionObserver;
// CLASS DECLARATION
/**
@@ -34,160 +30,29 @@
* CMusEngLiveSession and CMusEngClipSession.
*
* @lib musengine.lib
-* @since S60 v3.2
*/
class CMusEngMceOutSession : public CMusEngMceSession
{
-
+
public:
/**
* Destructor
- *
- * @since S60 v3.2
*/
~CMusEngMceOutSession();
- public: // NEW API FUNCTIONS
-
- /**
- * Sends invite to specified address
- * @leave KErrAlreadyExists if session establishment is already
- * in progress
- *
- * @since S60 v3.2
- */
- IMPORT_C void InviteL( const TDesC& aRecipient );
-
- /**
- * Cancels Invite.
- * @pre Invite is sent.
- * @since S60 v3.2
- */
- IMPORT_C void CancelInviteL( );
-
-
- public: // VIRTUAL API
-
- /**
- * Resumes previously paused session. Exact behavior depends on
- * exact session type.
- *
- * @since S60 v3.2
- */
- IMPORT_C virtual void PlayL() = 0;
-
- /**
- * Pauses session. Exact behavior depends on exact session type.
- *
- * @since S60 v3.2
- */
- IMPORT_C virtual void PauseL() = 0;
-
-
- protected: // Must be implemented in derived class
-
- /**
- *
- * @since S60 v3.2
- */
- virtual void CompleteSessionStructureL() = 0;
-
-
- protected: // helper function inherited from CMusEngMceSession
-
- /**
- * Function handling MCE session termination.
- *
- * @since S60 v3.2
- */
- //void HandleTermination( TMceTransactionDataContainer* aContainer );
-
-
protected:
/**
* Constructor
- *
- * @since S60 v3.2
*/
- CMusEngMceOutSession( const TRect& aRect, TUint aSipProfileId = 0 );
+ CMusEngMceOutSession( const TRect& aRect );
/**
* Second-phase constructor
- *
- * @since S60 v3.2
*/
void ConstructL();
-
- protected: // HELPERS
-
- #if (defined (__WINS__) || defined(__WINSCW__))
- /**
- *
- * @since S60 v3.2
- */
- void SipProfileChanged();
- #endif
-
-
- private:
-
- /**
- *
- * @since S60 v3.2
- */
- void CreateMceSessionStructureL();
-
- /**
- *
- * @since S60 v3.2
- */
- MMusEngOutSessionObserver* OutSessionObserver();
-
- /**
- * Parses, validates and creates new recipient address
- * out of given address.
- * @return Parsed recipient URI. Ownership is transferred.
- * @since S60 v3.2
- */
- HBufC8* ParseRecipientUriL( const TDesC& aRecipient );
-
-
- protected: // DATA
-
- /**
- * Repository id of SipProfile
- *
- * @since S60 v3.2
- */
- TUint iSipProfileId;
-
- /**
- * Owned by iSipProfileHandler
- *
- * @since S60 v3.2
- */
- //CSIPProfile* iSipProfile;
-
- /**
- * Callback pointer to interface
- *
- * @since S60 v3.2
- */
- //CMusSipProfileHandler* iSipProfileHandler;
-
-
- public: // DATA
-
- /**
- *
- * @since S60 v3.2
- */
- HBufC8* iRecipient;
- TBool iInvited;
-
};
#endif //MUSHENGMCESESSION_H
--- a/tsrc/musenginestub/inc/musengmcesession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengmcesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -21,28 +21,10 @@
// USER
#include "musengsession.h"
-#include "musengsessiondurationtimerobserver.h"
-
-// SYSTEM
-/*
-#include <mcesessionobserver.h>
-#include <mcestreamobserver.h>
-#include <mcertpobserver.h>
-#include <mcetransactiondatacontainer.h>
-*/
+#include "lcsession.h"
+#include "lcwindow.h"
+#include "lcaudiocontrol.h"
-/*
-class CMceManager;
-class CMceSession;
-*/
-class CMusEngSessionDurationTimer;
-
-
-// CONSTANTS
-
-_LIT8( KMusEngAcceptContactHeader,
- "Accept-Contact: *;+g.3gpp.cs-voice; explicit" );
-_LIT8( KMusEngSessionSdpLineXApplication, "a=X-application:com.nokia.rtvs" );
// CLASS DECLARATION
@@ -52,252 +34,112 @@
*
* CMusEngMceSession encapsulates CMCESession and simplifies use of
* MCE Sessions to user interface. Also splits observers messy events
-* simplified commands like a SessionDisconnected.
+* to simplified function calls.
*
* @lib musengine.lib
-* @since S60 v3.2
*/
class CMusEngMceSession : public CMusEngSession,
- public MMusEngSessionDurationTimerObserver
+ public MLcSession,
+ public MLcWindow,
+ public MLcAudioControl
{
-
- public:
-
+
+ public:
+
/**
* Destructor
- *
- * @since S60 v3.2
*/
~CMusEngMceSession();
- public: // API FUNCTIONS
-
- /**
- * Terminates session.
- * @pre Session is established
- * @post Session is ready to be deleted
- * @leave KErrNotReady if precondition is not fullfilled
- * @since S60 v3.2
- */
- IMPORT_C void TerminateL();
-
- /**
- * Releases all this session internal observers. This function is needed
- * before we could get session store out of this session.
- * TODO: Is this function really needed? At least at the moment it is
- * not called from UI. -HR 21.8.
- *
- * @since S60 v3.2
- */
- IMPORT_C void ReleaseInternalObservers();
+ public: // from MLcSession
+
+ TLcSessionState LcSessionState() const;
+
+ virtual void EstablishLcSessionL();
+
+ void TerminateLcSessionL();
+
+ virtual MLcVideoPlayer* RemoteVideoPlayer();
+
+ virtual MLcVideoPlayer* LocalVideoPlayer();
+
+ virtual const TDesC& LocalDisplayName();
+
+ virtual const TDesC& RemoteDisplayName();
- /**
- * Get session time return estabilished session time
- *
- * @since S60 v3.2
- * @return TTime returns time if connection established else < 0
- */
- IMPORT_C TTimeIntervalSeconds GetSessionTime() const;
+ TInt SetParameter( TInt aId, TInt aValue );
- /**
- * Returns current connection state
- *
- * @since S60 v3.2
- * @return TBool returns current connection state
- */
- IMPORT_C TBool ConnectionActive() const;
-
-
- public: // VIRTUAL API
-
- // No virtual api
-
+ TInt ParameterValue( TInt aId );
+
+ void UpdateLcSessionL();
- public: // from CMusEngSession
-
- /**
- * Increases volume level by one
- *
- * @pre Session is ongoing
- * @since S60 v3.2
- */
- IMPORT_C void VolumeUpL();
-
- /**
- * Decreases volume level by one
- *
- * @pre Session is ongoing
- * @since S60 v3.2
- */
- IMPORT_C void VolumeDownL();
+
+ public: // from MLcWindow
+
+ void EnableLcWindowL( TBool aEnable );
+
+ TBool IsLcWindowEnabled();
+
+ void SetLcWindowRectL( TRect aRect );
+
+ TRect LcWindowRect();
+
+ void SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation );
+
+ TLcWindowOrientation LcWindowOrientationL();
+
+ public: // from MLcAudioControl
+
+ TBool IsLcAudioMutedL();
- /**
- * Permission to draw on screen device.
- *
- * @pre Session is ongoing
- * @since S60 v3.2
- */
- IMPORT_C void EnableDisplayL( TBool aEnable );
+ void MuteLcAudioL( TBool aMute );
+
+ TBool IsLcMicMutedL();
+
+ void MuteLcMicL( TBool aMute );
+
+ TBool IsLcLoudspeakerEnabled();
- /**
- * Implements virtual from CMusEngSession
- *
- * @pre Session is ongoing
- * @since S60 v3.2
- */
- IMPORT_C void MuteL();
-
- /**
- * Implements virtual from CMusEngSession
- *
- * @pre Session is ongoing
- * @since S60 v3.2
- */
- IMPORT_C void UnmuteL();
-
-
+ void EnableLcLoudspeakerL( TBool aEnabled );
+
+ TBool IsEnablingLcLoudspeakerAllowed();
+
+ TInt LcVolumeL();
+
+ void SetLcVolumeL( TInt aValue );
+
+ void IncreaseLcVolumeL();
+
+ void DecreaseLcVolumeL();
+
protected: // CONSTRUCTORS
/**
* Constructor
*
- * @since S60 v3.2
*/
CMusEngMceSession( const TRect& aRect );
/**
* Second-phase constructor
*
- * @since S60 v3.2
*/
void ConstructL();
-
-
- protected: // HELPER FUNCTIONS
-
- /**
- *
- * @since S60 v3.2
- */
- void RectChangedL();
-
- /**
- * Sets session specific SDP line to a session
- *
- * @since S60 v3.2
- */
- //void SetSessionSdpLinesL( CMceSession& aSession );
-
-
- protected: // internal API
-
- /**
- *
- * @since S60 v3.2
- */
- virtual TBool IsRtpcInactivityTimoutSupported();
-
-
- private: // HELPER FUNCTIONS
+
- /**
- * Start counting session time
- *
- * @since S60 v3.2
- */
- void InitializeSessionTimer();
-
- /**
- * Callback
- *
- * @since S60 v3.2
- */
- void UpdateTimerEvent();
-
- /**
- *
- *
- * @since S60 v3.2
- */
- void DoMuteL( TBool aMute );
-
- /**
- * Increases or decreases current volume of all speakers in session
- * structure by one.
- * @pre Current volume of all the speakers is less than MaxVolumeL()
- * and at least 1.
- */
- void ChangeVolumeByOneL( TBool aIncreaseVolume );
-
-
- private: // Helpers
+ private:
- /**
- * Helper function to avoid three different traps.
- * Should be replaced when MCE supports different kind of method
- * detecting end of clip.
- *
- * @since S60 v3.2
- */
- void CheckClipEndL();
-
-
- public: // MEMBERS
-
- /**
- * Class for connecting to MCE server.
- * This class provides the connection to the MCE server and
- * provides functions
- * for setting observers for asynchronous events.
- * The user should create only one instance of this class.
- *
- * @since S60 v3.2
- */
- //CMceManager* iManager;
-
- /**
- * Base class for MCE sessions, inherited by both CMCEInSession and
- * CMCEOutSession. * CMCESession represents peer-to-peer connection
- * made with remote terminal. This connection is also known as dialog
- * and it is set up using SIP INVITE method. The characteristics of the
- * session are defined by user of this class by attaching media streams
- * into the session. After the session has been succesfully established,
- * it can be later updated and must be finally terminated. If for any
- * reason instance of this class is deleted while in established state,
- * session is automatically terminated by MCE server.
- *
- * @since S60 v3.2
- */
- //CMceSession* iSession;
-
-
- public:
-
- /**
- * It is assumed, that user has only one instance of this class.
- * The same instance is passed between MCE and user, but the data
- * inside of this container is just updated for each event.
- *
- * @since S60 v3.2
- */
- //TMceTransactionDataContainer iTransactionDataContainer;
-
- /**
- * Session time. Acts simultaneously as RTCP inactivity timer.
- *
- * @since S60 v3.2
- */
- TTime iStartTime;
-
- CMusEngSessionDurationTimer* iUpdateTimer;
-
- /**
- * Value indicating seconds gone since last received RTCP sender or
- * receiver report. Value 20 indicates RTCP inactivity timeout.
- */
- TInt iSecondsFromLastRtcpReport;
- TInt iDisplayEnabled;
+ MLcWindow::TLcWindowOrientation iOrientation;
+ TBool iMuted;
+ TBool iMicMuted;
+ TBool iLoudspeakerEnabled;
+ TBool iEnablingLoudspeakerAllowed;
+ TInt iVolume;
+ TRect iRect;
+ TBool iWindowEnabled;
};
+
#endif //MUSHENGMCESESSION_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/musengmceutils.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,268 @@
+/*
+* Copyright (c) 2005-2006 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: Utilities to locate and manipulate MCE sessions, streams,
+* sources and sinks
+*
+*/
+
+
+
+#ifndef MUSENGMCEUTILS_H
+#define MUSENGMCEUTILS_H
+
+
+#include <mcemediastream.h>
+#include <mcemediasink.h>
+#include <mcemediasource.h>
+
+
+class CMceSession;
+class CMceDisplaySink;
+class CMceCameraSource;
+class CMceFileSource;
+class CMceVideoStream;
+class CMceSpeakerSink;
+
+const TUint KMusEngNoAssociatedSourceType = KMaxTUint;
+
+/**
+* Static class including utility methods to locate and manipulate MCE
+* sessions, streams, sources and sinks
+* @lib musengine.lib
+*/
+class MusEngMceUtils
+ {
+
+ public:
+
+ /**
+ * Tells if a stream is a video stream with rtp source.
+ *
+ * @param aStream Stream to be investigated
+ * @return ETrue if parameter is a video stream with a RTP source
+ */
+ static TBool IsVideoInStream( CMceMediaStream& aStream );
+
+ /**
+ * Tells if a stream is a video stream with rtp sink.
+ *
+ * @param aStream Stream to be investigated
+ * @return ETrue if parameter is a video stream with a RTP sink
+ */
+ static TBool IsVideoOutStream( CMceMediaStream& aStream );
+
+ /**
+ * Tells if a stream is an audio stream with rtp source.
+ *
+ * @param aStream Stream to be investigated
+ * @return ETrue if parameter is an audio stream with a RTP source
+ */
+ static TBool IsAudioInStream( CMceMediaStream& aStream );
+
+ /**
+ * Gets handle to video stream with RTP sink.
+ * Ownership is not transferred.
+ *
+ * @return Outgoing video stream
+ * @leave KErrNotFound if none exists
+ * @leave KErrOverflow if session contains more than one outgoing
+ * video stream
+ */
+ static CMceVideoStream* GetVideoOutStreamL( CMceSession& aSession );
+
+ /**
+ * Gets handle to video stream with RTP source.
+ * Ownership is not transferred.
+ *
+ * @return Incoming video stream
+ * @leave KErrNotFound if none exists
+ * @leave KErrOverflow if session contains more than one incoming
+ * video stream
+ */
+ static CMceVideoStream* GetVideoInStreamL( CMceSession& aSession );
+
+ /**
+ * Gets handle to video stream with file sink.
+ * Ownership is not transferred.
+ *
+ * @return Recording video stream, NULL if none exists
+ */
+ static CMceVideoStream* GetRecordingStream( CMceSession& aSession );
+
+ /**
+ * Gets handle to a media sink of spesified type contained by
+ * a mediastream. If there are several sink instances, first one is
+ * returned. If associated source type is defined, sink in stream having
+ * the source is tried to be searched. If no such match, first matching
+ * sink is returned. Ownership is not transferred.
+ *
+ * @return Media sink of the spesified type. NULL if none exists
+ */
+ static CMceMediaSink* GetMediaSink(
+ CMceMediaStream& aStream,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType = KMusEngNoAssociatedSourceType );
+
+ /**
+ * Gets handle to a media sink of spesified type contained by
+ * a mediastream. If there are several sink instances, first one is
+ * returned. If associated source type is defined, sink in stream having
+ * the source is tried to be searched. If no such match, first matching
+ * sink is returned. Ownership is not transferred.
+ *
+ * @return Media sink of the spesified type.
+ * @leave KErrNotFound if there is no sink of spesified type
+ */
+ static CMceMediaSink* GetMediaSinkL(
+ CMceMediaStream& aStream,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType = KMusEngNoAssociatedSourceType );
+
+ /**
+ * Gets handle to a media sink of spesified type contained by
+ * a session. If there are several sink instances, first one is
+ * returned. If associated source type is defined, sink in stream having
+ * the source is tried to be searched. If no such match, first matching
+ * sink is returned. Ownership is not transferred.
+ *
+ * @return Media sink of the spesified type. NULL if none exists
+ */
+ static CMceMediaSink* GetMediaSink(
+ CMceSession& aSession,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType = KMusEngNoAssociatedSourceType,
+ TBool aStrictMatch = EFalse );
+
+ /**
+ * Gets handle to a media sink of spesified type contained by
+ * a session. If there are several sink instances, first one is
+ * returned. If associated source type is defined, sink in stream having
+ * the source is tried to be searched. If no such match, first matching
+ * sink is returned. Ownership is not transferred.
+ *
+ * @return Media sink of the spesified type.
+ * @leave KErrNotFound if there is no sink of spesified type
+ */
+ static CMceMediaSink* GetMediaSinkL(
+ CMceSession& aSession,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType = KMusEngNoAssociatedSourceType,
+ TBool aStrictMatch = EFalse );
+
+ /**
+ * Gets handle to a speaker sink contained by specified stream
+ * or its' bound stream. Ownership is not transferred.
+ *
+ * @return Speaker sink, NULL if none exists
+ */
+ static CMceSpeakerSink* GetSpeaker( CMceMediaStream& aStream );
+
+ /**
+ * Gets handle to a camera source. Ownership is not transferred.
+ *
+ * @return Camera source
+ * @leave KErrNotFound if none exists
+ */
+ static CMceCameraSource* GetCameraL( CMceSession& aSession );
+
+ /**
+ * Gets handle to a file source. Ownership is not transferred.
+ *
+ * @return File source
+ * @leave KErrNotFound if none exists
+ */
+ static CMceFileSource* GetFileSourceL( CMceSession& aSession );
+
+ /**
+ * Gets handle to a display sink. Ownership is not transferred.
+ *
+ * @return Display sink, NULL if none exists
+ */
+ static CMceDisplaySink* GetDisplay( CMceSession& aSession,
+ TBool aPreferViewFinder = ETrue );
+
+ /**
+ * Gets handle to a display sink. If there are several display
+ * sink instances view finder is preferred with default arguments.
+ * Ownership is not transferred.
+ *
+ * @return Display sink
+ * @leave KErrNotFound if there is no display
+ */
+ static CMceDisplaySink* GetDisplayL( CMceSession& aSession,
+ TBool aPreferViewFinder = ETrue );
+
+ /**
+ * Gets handle to a display sink. Ownership is not transferred.
+ *
+ * @return Display sink, NULL if none exists
+ */
+ static CMceDisplaySink* GetReceivingDisplay( CMceSession& aSession );
+
+ /**
+ * Gets handle to a receiving display sink. Ownership is not transferred.
+ *
+ * @return Display sink
+ * @leave KErrNotFound if there is no display
+ */
+ static CMceDisplaySink* GetReceivingDisplayL( CMceSession& aSession );
+
+ /**
+ * Gets handle to a viewfinder display sink. Ownership is not transferred.
+ *
+ * @return Display sink
+ * @leave KErrNotFound if there is no display
+ */
+ static CMceDisplaySink* GetVfDisplay( CMceSession& aSession );
+
+ /**
+ * Adds display sink to specified stream if one does not exist already.
+ * Display rect is set in both cases to a specified one.
+ * Display is disabled by default.
+ *
+ * @param aStream is a stream where display is supposed to be added
+ * @param aManager reference to used MCE manager
+ * @param aDisplayRect is desired display area
+ * @leave KErrArgument if offered stream is not a video stream
+ */
+ static void AddDisplayL( CMceMediaStream& aStream,
+ CMceManager& aManager,
+ const TRect& aDisplayRect );
+
+ /**
+ * Adds speaker sink to specified stream if one does not exist already.
+ * Speaker is disabled by default.
+ *
+ * @param aStream is a stream where speaker is supposed to be added
+ * @leave KErrArgument if offered stream is not a video stream
+ */
+ static void AddSpeakerL( CMceMediaStream& aStream );
+
+ /**
+ * Disables a specified stream, its' source and all the sinks
+ *
+ * @param aStream is a stream to be disabled
+ */
+ static void DisableStreamL( CMceMediaStream& aStream );
+
+ /**
+ * Enables or disables display sink. If the state is already correct,
+ * nothing is done.
+ */
+ static void DoEnableDisplayL( CMceDisplaySink& aDisplay, TBool aEnable );
+
+ };
+
+
+#endif // MUSENGMCEUTILS_H
--- a/tsrc/musenginestub/inc/musengoutsessionobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengoutsessionobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -16,11 +16,14 @@
*/
-#ifndef MUSHENGOUTSESSIONOBSERVER_H
-#define MUSHENGOUTSESSIONOBSERVER_H
+#ifndef MUSENGOUTSESSIONOBSERVER_H
+#define MUSENGOUTSESSIONOBSERVER_H
// INCLUDES
-#include "musengsessionobserver.h"
+#include <badesca.h>
+
+// FORWARD DECLARATIONS
+class MMusEngAsyncRetryObserver;
// CLASS DECLARATION
@@ -28,26 +31,29 @@
* An interface to be implemented by users of Multimedia Sharing Engine if they
* wish to receive feedback from outsent INVITE. All the callback functions
* represent an answer from network to sent INVITE.
-*
-* This observer is set using CMusEngSession::SetSessionObserver function.
-*
-* @lib musengine.lib
-* @since S60 v3.2
*/
-class MMusEngOutSessionObserver : public MMusEngSessionObserver
+class MMusEngOutSessionObserver
{
public:
+ /**
+ * Indicates that preconditions for sending invitation cannot be met.
+ */
+ virtual void UnableToSendInvitation() = 0;
+
+ /**
+ * Indicates that no response received to invitation
+ */
+ virtual void NoResponseReceivedToInvitation() = 0;
+
/**
- * Indicates that MT has rejected session. ( e.g. 603 DECLINE )
- * @since S60 v3.2
+ * Indicates that MT has rejected session. ( e.g. 603 DECLINE ).
*/
virtual void SessionRejected() = 0;
/**
* The following functions represent a specific reason in answer
* to sent INVITE.
- * @since S60 v3.2
*/
virtual void SessionBadRequest() = 0; // 400
@@ -56,10 +62,35 @@
virtual void SessionRecipientNotFound() = 0; // 404
virtual void SessionProxyAuthenticationRequired() = 0; // 407
virtual void SessionRequestTimeOut() = 0; // 408
- virtual void SessionUnsupportedMediaType() = 0; // 415
+ virtual void SessionUnsupportedMediaType() = 0; // 415
+ virtual void SessionBusyHere() = 0; // 486
virtual void SessionRequestCancelled() = 0; // 487
-
-
+ virtual void SessionTemporarilyNotAvailable() = 0; // 480
+
+ /**
+ * Indicates possibility to retry session. Recipient proposal is given
+ * but implementation can query user for new recipient address.
+ * Retry address should be filled to aRetryAddress on return.
+ * @return ETrue if retry should be made
+ */
+ virtual TBool RetrySessionSync( const TDesC& aRecipientProposal,
+ TDes& aRetryAddress ) = 0;
+
+ /**
+ * Indicates that retry with given address is proceeding.
+ */
+ virtual void RetryProceeding() = 0;
+
+ /**
+ * Indicates that there's multiple suitable recipient addresses.
+ * Client can choose what to use.
+ * @param aAddressArray, list of suitable recipient addresses
+ * @param aRecipientAddress, on return should contain recipient
+ * address to be used
+ * @return ETrue if recipient was selected, otherwise EFalse
+ */
+ virtual TBool SelectRecipientL( CDesCArray& aAddressArray,
+ TDes& aRecipientAddress ) = 0;
};
-#endif
\ No newline at end of file
+#endif
--- a/tsrc/musenginestub/inc/musengreceivesession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengreceivesession.h Tue Aug 31 15:12:07 2010 +0300
@@ -19,17 +19,23 @@
#ifndef MUSHENGREVEIVESESSION_H
#define MUSHENGREVEIVESESSION_H
-
+// INCLUDES
+#include "musengmcesession.h"
+#include "musenguriparser.h"
+#include "musunittesting.h"
+#include "lcvideoplayer.h"
+#include <mcemediasink.h>
-#include "musengmcesession.h"
+// FORWARD DECLARATIONS
+class MMusEngReceiveSessionObserver;
+class CMceInSession;
-class MMusEngReceiveSessionObserver;
-
-class CMusEngReceiveSession : public CMusEngMceSession
-
+class CMusEngReceiveSession :
+ public CMusEngMceSession,
+ public MLcVideoPlayer
{
-
+
public: // Contructors and destructor
/**
@@ -40,70 +46,71 @@
* @param aSessionObserver Session specific callbacks
* @return CMusEngReceiveSession* New instanse of specified class
*/
- IMPORT_C static CMusEngReceiveSession* NewL(
- const TRect& aRect,
- MMusEngReceiveSessionObserver* aSessionObserver );
+ static CMusEngReceiveSession* NewL( const TRect& aRect );
/**
* Destructor
*
* @since S60 v3.2
*/
~CMusEngReceiveSession();
-
-
- public: // API
-
- /**
- * Accept or deny processed invitation
- *
- * @param aAccept ETrue if session is to be accepted and EFalse if
- * to be rejected.
- */
- IMPORT_C void AcceptInvitationL(const TBool& aAccept);
-
+
- public:
-
- /**
- * Sets callback interface pointer
- *
- * @param aSessionObserver Pointer to class which implements interface
- */
- IMPORT_C void SetSessionObserver(
- MMusEngReceiveSessionObserver* aSessionObserver );
-
-
-
- protected: // internal API
+ public: // from MLcSession
+
+ void EstablishLcSessionL();
+
+ MLcVideoPlayer* RemoteVideoPlayer();
+
+ const TDesC& RemoteDisplayName();
+
+
+ public: // from MLcVideoPlayer
+
+ TLcVideoPlayerState LcVideoPlayerState() const;
+
+ TBool LcIsPlayingL();
+
+ void LcPlayL();
+
+ void LcPauseL();
+
+ MLcWindow* LcWindow();
- /**
- *
- * @since S60 v3.2
- */
- TBool IsRtpcInactivityTimoutSupported();
-
+ MLcCameraControl* LcCameraControl();
+
+ MLcFileControl* LcSourceFile();
+
+ MLcFileControl* LcDestinationFile();
+
+ MLcAudioControl* LcAudioControl();
+
+ MLcZoomControl* LcZoomControl();
+
+ MLcBrightnessControl* LcBrightnessControl();
- private: // CONSTRUCTORS
-
- CMusEngReceiveSession( MMusEngReceiveSessionObserver* aSessionObserver,
- const TRect& aRect );
-
- void ConstructL();
+ RPointerArray< MLcValueControl >& LcExtensionControls();
+
- public: // HELPERS
-
- //CMceInSession* InSession();
-
- MMusEngReceiveSessionObserver* ReceiveSessionObserver();
+ protected: // CONSTRUCTORS
+
+ CMusEngReceiveSession( const TRect& aRect );
- // void CompleteSessionStructureL( CMceInSession& aInSession );
-
-
- public: // DATA
-
- // CMceInSession* iTemporaryInSession; // Owned
- TBool iAccepInvitation;
-
+ void ConstructL();
+
+
+ protected: // DATA
+
+ // identity of originator parsed form P-Asserted-Identity field
+ TBuf8<KMaxUriLength> iIdentity;
+
+ HBufC8* iOriginator;
+
+ HBufC* iRemoteDisplayName;
+
+ /**
+ * Dummy member variable to implement MLcVideoPlayer::LcExtensionControls
+ */
+ RPointerArray< MLcValueControl > iValueControls;
};
#endif
--- a/tsrc/musenginestub/inc/musengreceivesessionobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengreceivesessionobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -21,34 +21,38 @@
// INCLUDES
-#include "musengsessionobserver.h"
+#include <e32cmn.h>
// CLASS DECLARATION
/**
-*
-*
-* @lib ???.lib
+* Observer interface to be implemented by clients interested about notifications
+* of receiving (MT) side session specific events.
*/
-class MMusEngReceiveSessionObserver : public MMusEngSessionObserver
+class MMusEngReceiveSessionObserver
{
public:
/**
- *
- *
- * @since S60 v3.2
+ * There is new incoming session.
+ * Session is not yet handled in any way and cannot yet be accepted
+ * or rejected. User should not be notified at this stage.
*/
- virtual void IncomingSession( const TDesC& aOriginator ) = 0;
-
+ virtual void IncomingSessionPreNotification() = 0;
+
+ /**
+ * There is new incoming session ready to be accepted or rejected.
+ * User can be notified.
+ */
+ virtual void IncomingSession( const TDesC& aOriginator,
+ const TDesC& aOriginatorIdentity ) = 0;
/**
* Current receiving session is buffering received RTP.
- *
- * @since S60 v3.2
*/
virtual void StreamBuffering() = 0;
+
};
#endif
\ No newline at end of file
--- a/tsrc/musenginestub/inc/musengsession.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -16,17 +16,14 @@
*/
-#ifndef MUSHENGSESSION_H
-#define MUSHENGSESSION_H
+#ifndef MUSENGSESSION_H
+#define MUSENGSESSION_H
-// USER INCLUDES
//SYSTEM INCLUDES
#include <e32base.h>
-// FORWARD DECLARATIONS
-class MMusEngSessionObserver;
// CLASS DECLARATION
@@ -38,162 +35,38 @@
* resources.
*
* @lib musengine.lib
-* @since S60 v3.2
*/
class CMusEngSession : public CBase
{
-
+
public:
/**
* Desctructor, finalize session
*
- * @since S60 v3.2
*/
~CMusEngSession();
- public: // API FUNCTIONS
-
- /**
- * Returns currently assigned drawing area
- *
- * @since S60 v3.2
- * @return TRect This session drawing area recttangle
- */
- IMPORT_C TRect Rect() const;
-
- /**
- * Sets new drawing area
- *
- * @since S60 v3.2
- * @param TRect This session new drawing area rectangle
- */
- IMPORT_C void SetRectL( const TRect& aRect );
-
- /**
- * Activates/deactivates loadspeaker
- *
- * @since S60 v3.2
- * @param TBool Enable or disable loudspeaker
- * @param TBool Show activation dialog
- */
- IMPORT_C void EnableLoudspeakerL( TBool aEnable, TBool aShowDialog );
-
- /**
- * Checks is loudspeaker enabled or disabled.
- *
- * @since S60 v3.2
- * @return TBool true if enabled
- */
- IMPORT_C TBool IsLoudSpeakerEnabled() const;
-
- /**
- * Returns current volume level
- *
- * @since S60 v3.2
- */
- IMPORT_C TInt VolumeL() const;
-
-
- public: // VIRTUAL API FUNCTIONS
-
- /**
- * Increases volume level by one.
- *
- * @since S60 v3.2
- */
- IMPORT_C virtual void VolumeUpL();
-
- /**
- * Decreases volume level by one
- *
- * @since S60 v3.2
- */
- IMPORT_C virtual void VolumeDownL();
-
- /**
- * Enables or disables display. Call to this function is considered
- * as a permission or denial to draw to the display.
- *
- * @since S60 v3.2
- */
- IMPORT_C virtual void EnableDisplayL( TBool aEnable ) = 0;
-
- /**
- * Mutes current audio stream meaning that any audio is not played or
- * sent to network.
- *
- * @since S60 v3.2
- */
- IMPORT_C virtual void MuteL() = 0;
-
- /**
- * Unmute current audio stream meaning that all the audio is played
- * and if needed also sent to network.
- *
- * @since S60 v3.2
- */
- IMPORT_C virtual void UnmuteL() = 0;
-
-
- protected: // INTERNAL
-
- virtual void RectChangedL() = 0;
-
protected:
/**
* Constructor, private cannot be instantiate
*
- *
- * @since S60 v3.2
- * @param TRect reserved drawing area for this session
+ * @param aRect reserved drawing area for this session
*/
- CMusEngSession( const TRect& aRect );
+ CMusEngSession();
protected:
/**
- * second-phase constructor, called by those session specific
+ * second-phase constructor, called by those session specific
* constructors
- *
- * @since S60 v3.2
*/
void ConstructL();
-
- protected: // MEMBERS
-
- /**
- * Callback pointer to interface, not own
- *
- * @since S60 v3.2
- */
- MMusEngSessionObserver* iSessionObserver;
-
-
- public: // MEMBERS
-
- /**
- * Drawing area rect
- *
- * @since S60 v3.2
- */
- TRect iRect;
-
- /**
- * Telephone utilities
- *
- * @since S60 v3.2
- */
- //CMusEngTelephoneUtils* iTelephoneUtils;
-
- TInt iErrorCode;
-
-
};
-#endif //MUSHENGSESSION_H
\ No newline at end of file
+#endif //MUSENGSESSION_H
--- a/tsrc/musenginestub/inc/musengsessiondurationtimer.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengsessiondurationtimer.h Tue Aug 31 15:12:07 2010 +0300
@@ -21,71 +21,88 @@
// USER INCLUDES
+#include "musunittesting.h"
-// KERNEL INCLUDES
+// KERNEL INCLUDES
#include <e32base.h>
// FORWARD DECLERATIONS
class MMusEngSessionDurationTimerObserver;
-class CMusEngSessionDurationTimer
+class CMusEngSessionDurationTimer : public CActive
{
+ MUS_UNITTEST( UT_CMusEngSessionDurationTimer )
public:
- /**
- *
+ /**
+ *
* @since S60 v3.2
*/
- static CMusEngSessionDurationTimer* NewL(
- MMusEngSessionDurationTimerObserver& aObserver );
+ static CMusEngSessionDurationTimer* NewL(
+ MMusEngSessionDurationTimerObserver& aObserver );
- /**
- *
+ /**
+ *
* @since S60 v3.2
*/
~CMusEngSessionDurationTimer();
- public: // API
-
- /**
- *
+ public: // API
+
+ /**
+ *
* @since S60 v3.2
*/
+ void Start( TInt aDelay );
- private:
+ private:
- /**
- *
+ /**
+ *
* @since S60 v3.2
*/
- CMusEngSessionDurationTimer(
- MMusEngSessionDurationTimerObserver& aObserver );
+ CMusEngSessionDurationTimer(
+ MMusEngSessionDurationTimerObserver& aObserver );
- /**
- *
+ /**
+ *
* @since S60 v3.2
*/
void ConstructL();
+
+ private: // inherited from CActive
+
+ /**
+ *
+ * @since S60 v3.2
+ */
+ void RunL();
+
+ /**
+ *
+ * @since S60 v3.2
+ */
+ void DoCancel();
- public: // DATA
+ private: // DATA
- /**
- *
+ /**
+ *
* @since S60 v3.2
*/
- //RTimer iTimer;
+ RTimer iTimer;
- /**
- *
+ /**
+ *
* @since S60 v3.2
*/
MMusEngSessionDurationTimerObserver& iObserver;
-
+
};
#endif // _MUSENGSESSIONDURATIONTIMER_H_
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/musengsessionmanager.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 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 CMUSENGSESSIONMANAGER_H
+#define CMUSENGSESSIONMANAGER_H
+
+// INCLUDES
+#include "lcengine.h"
+#include "musmanagercommon.h"
+
+// FORWARD DECLARATIONS
+class MLcSession;
+class CMusEngMceSession;
+class MLcUiProvider;
+
+
+class CMusEngSessionManager :
+ public CLcEngine
+ {
+ public:
+
+ static CMusEngSessionManager* NewL( TAny* aInitParams );
+ ~CMusEngSessionManager();
+
+ public: // From CLcEngine
+
+ MLcSession& Session();
+
+ private: // Constructors
+
+ CMusEngSessionManager( TLcEngineParams& aInitParams );
+ void ConstructL();
+
+ private: // New functions
+
+ CMusEngMceSession* CreateMusSessionL(
+ MultimediaSharing::TMusUseCase aUseCase );
+
+ private: // Data
+
+ CMusEngMceSession* iSession;
+
+ };
+
+#endif // CMUSENGSESSIONMANAGER_H
+
+// end of file
--- a/tsrc/musenginestub/inc/musengsessionobserver.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengsessionobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -25,7 +25,7 @@
// CLASS DECLARATION
/**
-* An interface to be implemented by users of Multimedia Sharing Engine if
+* An interface to be implemented by users of Multimedia Sharing Engine if
* they wish to receive events from session and streaming state changes.
*
* @lib museng.lib
@@ -58,7 +58,7 @@
*
* @since S60 v3.2
*/
- virtual void SessionConnectionLost() = 0;
+ virtual void SessionConnectionLost() = 0;
/**
* Undefined exception has occurred. Session is useless and must be
@@ -82,7 +82,7 @@
*
* @since S60 v3.2
*/
- virtual void StreamStreaming() = 0;
+ virtual void StreamStreaming() = 0;
/**
* Update time information of this session
@@ -90,7 +90,7 @@
* @since S60 v3.2
*/
virtual void SessionTimeChanged( const TTimeIntervalSeconds& aSeconds ) = 0;
-
+
/**
* RTCP inactivity timeout has occurred.
*
--- a/tsrc/musenginestub/inc/musengtelephoneutils.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/inc/musengtelephoneutils.h Tue Aug 31 15:12:07 2010 +0300
@@ -20,111 +20,183 @@
#define MUSENGTELEPHONEUTILS_H
-//#include "musunittesting.h"
+#include "musunittesting.h"
// SYSTEM
#include <e32base.h>
-//#include <mtelephonyaudioroutingobserver.h>
-//#include <telephonyaudiorouting.h>
+#include <mtelephonyaudioroutingobserver.h>
+#include <telephonyaudiorouting.h>
+#include <rphcltserver.h>
// FORWARD DECLARATIONS
-//class CRepository;
-//class CTelephonyAudioRouting;
+class CRepository;
+class CTelephonyAudioRouting;
+class CPhCltCommandHandler;
+class MMusEngAudioRoutingObserver;
/**
-*
-* @lib musengine.lib
-* @since S60 v3.2
+* Utility class to handle all phone related requests:
+* Audio routing, volume control and microphone muting.
*/
-class CMusEngTelephoneUtils : public CBase
- //public MTelephonyAudioRoutingObserver
+class CMusEngTelephoneUtils : public CActive,
+ public MTelephonyAudioRoutingObserver
{
- public:
+ MUS_UNITTEST( UT_CMusEngTelephoneUtils )
+ MUS_UNITTEST( UT_CMusEngSession )
+
+ public:
+
+ /**
+ *
+ */
+ static CMusEngTelephoneUtils* NewL();
- /**
- *
- * @since S60 v3.2
+ /**
+ *
*/
- static CMusEngTelephoneUtils* NewL();
-
- /**
- *
- * @since S60 v3.2
- */
- ~CMusEngTelephoneUtils();
+ ~CMusEngTelephoneUtils();
- public: // API
+ public: // API
+
+ /**
+ * Checks if audio routing can be changed using LoudspeakerL
+ *
+ * @return ETrue if audio routing can be changed using LoudspeakerL
+ */
+ TBool AudioRoutingCanBeChanged();
- /**
- *
- * @since S60 v3.2
+ /**
+ * Changes the audio routing between loudspeaker and handset.
+ *
+ * @param aShowDialog if ETrue, user is notified about new audio routing
*/
void LoudspeakerL( TBool aEnable, TBool aShowDialog );
- /**
- *
- * @since S60 v3.2
+ /**
+ *
+ */
+ TBool IsLoudSpeakerEnabled() const;
+
+ /**
+ *
*/
- TBool IsLoudSpeakerEnabled() const;
+ TInt GetVolumeL() const;
+ /**
+ *
+ */
+ void SetVolumeL( TInt aVolume );
+
+ /**
+ * Mutes CS call microphone.
+ */
+ void MuteMicL( TBool aMute );
+
/**
- *
- * @since S60 v3.2
+ * Returns current CS call mic mute state.
*/
- TInt GetVolumeL() const;
-
+ TBool IsMicMutedL();
+
/**
- *
- * @since S60 v3.2
+ * Sets audio routing observer. Can be set to NULL in order to indicate
+ * ending of observing changes in audio routing.
*/
- void SetVolumeL( TInt aVolume );
-
+ void SetAudioRoutingObserver( MMusEngAudioRoutingObserver* aObserver );
+
+
+ private: // inherited from CActive
-
- private:
+ /**
+ *
+ */
+ void RunL();
+
+ /**
+ * Cancels outstanding request to phone client
+ */
+ void DoCancel();
+
+
+ private: // MTelephonyAudioRoutingObserver functions
/**
- *
- * @since S60 v3.2
+ * Available outputs have changed
+ */
+ void AvailableOutputsChanged(
+ CTelephonyAudioRouting& aTelephonyAudioRouting );
+
+ /**
+ * Some other application has changed audio output routing
+ */
+ void OutputChanged(
+ CTelephonyAudioRouting& aTelephonyAudioRouting );
+
+ /**
+ * Our request to change audio output routing has completed
+ */
+ void SetOutputComplete(
+ CTelephonyAudioRouting& aTelephonyAudioRouting,
+ TInt aError );
+
+ /**
+ * Set output if setting is currently allowed. Leaves with KErrAccessDenied
+ * if setting is not allowed.
*/
- CMusEngTelephoneUtils();
+ void DoSetOutputL( CTelephonyAudioRouting::TAudioOutput aAudioOutput );
+
+ private:
- /**
- *
- * @since S60 v3.2
+ /**
+ * Default C++ constructor
*/
- void ConstructL();
+ CMusEngTelephoneUtils();
+
+ /**
+ * 2nd phase constructor
+ */
+ void ConstructL();
- private: // HELPER
+ private: // HELPER
+
+ /**
+ * Checks that volume value is between 1 and 10.
+ *
+ * @return validated volume value
+ */
+ TInt ValidateVolume( const TInt aVolume ) const;
+
+
+ private: // DATA
/**
- *
- * @since S60 v3.2
+ * Stores the audio routing state at startup.
*/
- TInt ValidateVolume( const TInt aVolume ) const;
-
-
- public: // DATA
-
- /**
- * Stores the audio routing state at startup.
- */
- //CTelephonyAudioRouting::TAudioOutput iAudioOutputAtStartup;
-
+ CTelephonyAudioRouting::TAudioOutput iAudioOutputAtStartup;
+
/**
* Telephony audio routing instance. Owned.
*/
- //CTelephonyAudioRouting* iTelephonyAudioRouting;
+ CTelephonyAudioRouting* iTelephonyAudioRouting;
/**
* Central repository. Owned.
- *
- * @since S60 v3.2
*/
- //CRepository* iRepository;
+ CRepository* iRepository;
+ /**
+ * Command handler for muting the microphone
+ */
+ CPhCltCommandHandler* iPhoneCommandHandler;
+
+ /**
+ * Not owned.
+ */
+ MMusEngAudioRoutingObserver* iAudioRoutingObserver;
+
+ TBool iShowDialog;
+
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/musengtwowayrecvsession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,151 @@
+/*
+* 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 MUSHENGTWOWAYRECVSESSION_H
+#define MUSHENGTWOWAYRECVSESSION_H
+
+// USER
+#include "musengreceivesession.h"
+#include "musunittesting.h"
+#include "mussettings.h"
+#include "musengcamerahandler.h"
+
+// SYSTEM
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class MMusEngLiveSessionObserver;
+class CMceDisplaySink;
+class CMceStreamBundle;
+
+class CMusEngTwoWayRecvSession : public CMusEngReceiveSession
+ {
+ MUS_UNITTEST( UT_CMusEngTwoWayRecvSession )
+
+
+ public:
+ /**
+ * Creates new MultimediaSharing two-way receive session.
+ *
+ * @param aRemoteRect UI drawing area for received video.
+ * @param aLocalRect UI drawing area for camera viewfinder.
+ * @param aSessionObserver Interface for session specific callbacks
+ * @param aReceiveSessionObserver Interface for receivesession specific callbacks
+ * @return CMusEngTwoWayRecvSession* New instanse of specified class
+ */
+ IMPORT_C static CMusEngTwoWayRecvSession* NewL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect,
+ MMusEngSessionObserver& aSessionObserver,
+ MMusEngReceiveSessionObserver& aReceiveSessionObserver );
+
+
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngTwoWayRecvSession();
+
+ public:
+
+ void EnableDisplayL( TBool aEnable );
+
+ CMusEngMceSession::TDisplayOrientation OrientationL();
+
+ void SetOrientationL( TDisplayOrientation aOrientation );
+
+ public:
+
+ /**
+ * Sets both remote (receiving video) and local (viewfinder) rects.
+ *
+ */
+ IMPORT_C void SetRectsL( const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ /**
+ * Sets local rect (viewfinder).
+ *
+ */
+ IMPORT_C void SetLocalRectL( const TRect& aLocalRect );
+
+ /**
+ * Gets local rect (viewfinder).
+ *
+ */
+ IMPORT_C TRect LocalRect() const;
+
+ /**
+ * Gets camera handler (can be used for zooming etc.)
+ */
+ IMPORT_C TMusEngCameraHandler& Camera();
+
+ protected: // From CMusEngReceiveSession
+
+ void CompleteSessionStructureL();
+
+ void RectChangedL();
+
+
+ private: // from MMceStreamObserver,
+ // overrides the functions in ancestor classes
+
+
+ void StreamStateChanged( CMceMediaStream& aStream,
+ CMceMediaSink& aSink );
+
+ void StreamStateChanged( CMceMediaStream& aStream );
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMusEngTwoWayRecvSession( MMusEngSessionObserver& aSessionObserver,
+ MMusEngReceiveSessionObserver& aReceiveSessionObserver,
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ private:
+
+ void CompleteSessionStructureAudioPartL(
+ const RPointerArray<CMceMediaStream>& aStreams,
+ CMceStreamBundle& aLocalBundle,
+ CMceMediaStream* aVideoInStream,
+ CMceMediaStream* aVideoOutStream );
+
+ void CompleteSessionStructureInStreamL( CMceMediaStream& aVideoInStream,
+ CMceStreamBundle& aLocalBundle );
+
+ void CompleteSessionStructureOutStreamL( CMceMediaStream& aVideoOutStream );
+
+ private:
+
+ TRect iLocalRect;
+
+ TMusEngCameraHandler iCameraHandler;
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/musengtwowaysession.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,172 @@
+/*
+* 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 MUSHENGTWOWAYSESSION_H
+#define MUSHENGTWOWAYSESSION_H
+
+// USER
+#include "musenglivesession.h"
+#include "musunittesting.h"
+#include "mussettings.h"
+
+// SYSTEM
+#include <ecam.h>
+
+// FORWARD DECLARATIONS
+class MMusEngLiveSessionObserver;
+class CMceDisplaySink;
+class MMusEngTwoWaySessionObserver;
+
+class CMusEngTwoWaySession : public CMusEngLiveSession
+ {
+ MUS_UNITTEST( UT_CMusEngOutSession )
+ MUS_UNITTEST( UT_CMusEngTwoWaySession )
+
+
+ public:
+ /**
+ * Creates new MultimediaSharing Live session.
+ *
+ * @param aRect UI drawing area. It is allowed handle from engine
+ * @param aSessionObserver Interface for session specific callbacks
+ * @param aOutSessionObserver Interface for outsession specific callbacks
+ * @param aLiveSessionObserver interface for live session specific
+ * callbacks
+ * @return CMusEngTwoWaySession* New instanse of specified class
+ */
+ IMPORT_C static CMusEngTwoWaySession* NewL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect,
+ MMusEngSessionObserver& aSessionObserver,
+ MMusEngOutSessionObserver& aOutSessionObserver,
+ MMusEngLiveSessionObserver& aLiveSessionObserver,
+ MMusEngTwoWaySessionObserver& aTwoWayObserver );
+
+
+ public:
+
+ /**
+ * Destructor
+ */
+ ~CMusEngTwoWaySession();
+
+ public:
+
+ void EnableDisplayL( TBool aEnable );
+
+ void SetOrientationL( TDisplayOrientation aOrientation );
+
+ public:
+
+ /**
+ * Starts or pauses recording
+ */
+ void RecordL( TBool aRecord );
+
+ /**
+ * Tells whether recording is paused or not
+ */
+ TBool IsRecording();
+
+ /**
+ * Sets both remote (receiving video) and local (viewfinder) rects.
+ *
+ */
+ IMPORT_C void SetRectsL( const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ /**
+ * Sets local rect (viewfinder).
+ *
+ */
+ IMPORT_C void SetLocalRectL( const TRect& aLocalRect );
+
+ /**
+ * Gets local rect (viewfinder).
+ *
+ */
+ IMPORT_C TRect LocalRect() const;
+
+ protected: // inherited from CMusEngMceOutSession
+
+ void RectChangedL();
+
+ /**
+ * @param aLocalBundle All local streams are supposed to be added to
+ * this bundle
+ */
+ void CompleteSessionStructureL( CMceStreamBundle& aLocalBundle );
+
+ void AddDisplayL( CMceMediaStream& aStream );
+
+
+ protected: // overrides ancestor class versions
+
+ /**
+ * The state of the session has changed
+ * @param aSession, the session that has changed.
+ */
+ virtual void HandleSessionStateChanged( CMceSession& aSession,
+ TInt aStatusCode,
+ const TDesC8& aReasonPhrase );
+
+ private: // from MMceStreamObserver,
+ // overrides the function in CMusEngMceSession
+
+ void StreamStateChanged( CMceMediaStream& aStream );
+
+ void InactivityTimeout( CMceMediaStream& aStream,
+ CMceRtpSource& aSource );
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMusEngTwoWaySession( MMusEngSessionObserver& aSessionObserver,
+ MMusEngOutSessionObserver& aOutSessionObserver,
+ MMusEngLiveSessionObserver& aLiveSessionObserver,
+ MMusEngTwoWaySessionObserver& aTwoWayObserver,
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect );
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ private:
+
+ void ReceivingStarted();
+
+ void ReceivingStopped();
+
+ private:
+
+ MMusEngTwoWaySessionObserver& iTwoWayObserver;
+
+ TRect iLocalRect;
+
+ TBool iReceiving;
+
+ TBool iBuffered;
+
+ };
+
+#endif
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/musengtwowaysessionobserver.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* 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 MUSHENGTWOWAYSESSIONOBSERVER_H
+#define MUSHENGTWOWAYSESSIONOBSERVER_H
+
+
+
+// CLASS DECLARATION
+
+/**
+* An interface to be implemented by clients of Multimedia Sharing Engine if
+* they wish to receive two-way sharing specific events.
+*/
+class MMusEngTwoWaySessionObserver
+ {
+
+ public:
+
+ /**
+ * Indicates that video receiving state has changed
+ * @param aReceivingVideo, ETrue if receiving, EFalse if not receiving
+ */
+ virtual void ReceivingStateChanged( TBool aReceivingVideo ) = 0;
+
+ };
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/musenguriparser.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,101 @@
+/*
+* Copyright (c) 2005 - 2006 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: Parser for recipient's address
+*
+*/
+
+
+#ifndef MUSENGURIPARSER_H
+#define MUSENGURIPARSER_H
+
+// INCLUDES
+
+#include "musunittesting.h"
+#include <e32cmn.h>
+
+const TInt KMaxUriLength = 512;
+_LIT8( KMusEngAtSign, "@" );
+_LIT8( KMusEngPlusSign, "+" );
+_LIT8( KMusEngSipPrefix, "sip:" );
+_LIT8( KMusEngTelPrefix, "tel:" );
+
+// CLASS DECLARATION
+
+/**
+*
+*/
+class TMusEngUriParser
+ {
+ MUS_UNITTEST( UT_TMusEngUriParser )
+
+ public:
+
+ enum TMusEngUriType
+ {
+ ENotParsed = 0,
+ ESip,
+ ETel
+ };
+
+ public:
+
+ /**
+ * Default constructor
+ */
+ IMPORT_C TMusEngUriParser( const TDesC16& aUri );
+
+ /**
+ * @returns Uri type
+ */
+ IMPORT_C TMusEngUriType UriType();
+
+ /**
+ * @returns Parsed and validated 8-bit version of contained URI
+ * Ownership is transferred
+ * @pre UriType() != ENotParsed
+ * @leave KErrNotReady if precondition is not fulfilled
+ */
+ IMPORT_C HBufC8* GetUri8L();
+
+ /**
+ * @param aPrefix if ETrue, also sip: or tel:prefix is returned
+ * @returns Parsed and validated 16-bit version of contained URI
+ * Ownership is transferred
+ * @pre UriType() != ENotParsed
+ * @leave KErrNotReady if precondition is not fulfilled
+ */
+ IMPORT_C HBufC16* GetUri16L( TBool aPrefix );
+
+ /**
+ * Parses and validates contained URI
+ * @leave KErrCorrupt if URI is not valid SIP or TEL URI
+ * @post UriType() != ENotParsed
+ */
+ IMPORT_C void ParseUriL();
+
+
+ private:
+
+ void HandleSipUriL();
+ void HandleTelUriL();
+ void HandleLocalTelUriL();
+
+
+ TBuf8<KMaxUriLength> iUri;
+
+ TMusEngUriType iUriType;
+
+ };
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/mussipprofilehandler.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,215 @@
+/*
+* Copyright (c) 2005-2006 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:
+* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out.
+*
+*/
+
+
+
+#ifndef MUSSIPPROFILEHANDLER_H
+#define MUSSIPPROFILEHANDLER_H
+
+
+// INTERNAL INCLUDE
+#include "musunittesting.h"
+
+// SYSTEM INCLUDE
+#include <e32base.h>
+#include <sipobserver.h>
+#include <sipconnectionobserver.h>
+#include <sipprofileregistryobserver.h>
+#include <sipprofilealrobserver.h>
+
+
+class CSIPProfile;
+class CSIPProfileRegistry;
+class CSipProfileAlrController;
+class CUri8;
+class MMusSipProfileUser;
+
+/**
+*
+* @lib musengine.lib
+*/
+class CMusSipProfileHandler : public CBase,
+ public MSIPProfileRegistryObserver,
+ public MSIPObserver,
+ public MSIPConnectionObserver,
+ public MSipProfileAlrObserver
+ {
+ MUS_UNITTEST( UT_CMusEngSipProfileHandler )
+
+ public:
+
+ /**
+ * Creates new instance of CMusSipProfileHandler
+ * @param aSipProfileId profile id of requested profile
+ */
+ static CMusSipProfileHandler* NewL( MMusSipProfileUser& aUser );
+
+ /**
+ * Destructor
+ *
+ */
+ ~CMusSipProfileHandler();
+
+
+ public: // API
+
+ /**
+ * Creates the SIP profile used.
+ * @param aSipProfileId profile ID of requested SIP profile
+ */
+ void CreateProfileL( TUint32 aSipProfileId );
+
+ /**
+ * Returns the used SIP profile.
+ * @pre SipProfileL has been called
+ * @return SIP profile or NULL if the SIP profile cannot be found,
+ * The ownership is not transferred.
+ */
+ CSIPProfile* Profile();
+
+ /**
+ * Returns the registered public user identity of the used SIP profile
+ * @pre SipProfileL has been called
+ * @return a pointer to the URI, the ownership is transferred
+ */
+ CUri8* UserFromProfileLC();
+
+ /**
+ * Refreshes the availabilities of the access points
+ * for the used SIP profile.
+ * Should be called when a MuS session terminates.
+ */
+ void RefreshIapAvailabilities();
+
+ /**
+ * @return ETrue if SIP profile returned by Profile() is registered
+ */
+ TBool IsRegistered();
+
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMusSipProfileHandler( MMusSipProfileUser& aUser );
+
+ /**
+ * Second-phase constructor
+ */
+ void ConstructL();
+
+ private: // From MSIPProfileRegistryObserver
+
+ /**
+ * An event related to SIP Profile has accorred
+ *
+ * @param aProfileId a profile Id
+ * @param aEvent an occurred event
+ **/
+ void ProfileRegistryEventOccurred(
+ TUint32 aProfileId,
+ MSIPProfileRegistryObserver::TEvent aEvent );
+
+ /**
+ * An asynchronous error has occurred related to SIP profile
+ * Event is send to those observers, who have the
+ * corresponding profile instantiated.
+ *
+ * @param aProfileId the id of failed profile
+ * @param aError an occurred error
+ */
+ void ProfileRegistryErrorOccurred(
+ TUint32 aProfileId,
+ TInt aError );
+
+ private: // From MSIPObserver
+
+ void IncomingRequest( TUint32 aIapId,
+ CSIPServerTransaction* aTransaction );
+
+ void TimedOut( CSIPServerTransaction& aTransaction );
+
+ private: // MSIPConnectionObserver must be implemented to enable SIP profile
+
+ void IncomingRequest (CSIPServerTransaction* aTransaction );
+
+ void IncomingRequest (CSIPServerTransaction* aTransaction,
+ CSIPDialog& aDialog );
+
+ void IncomingResponse (CSIPClientTransaction& aTransaction );
+
+ void IncomingResponse ( CSIPClientTransaction& aTransaction,
+ CSIPDialogAssocBase& aDialogAssoc );
+
+ void IncomingResponse ( CSIPClientTransaction& aTransaction,
+ CSIPInviteDialogAssoc* aDialogAssoc );
+
+ void IncomingResponse( CSIPClientTransaction& aTransaction,
+ CSIPRegistrationBinding& aRegistration );
+
+ void ErrorOccured( TInt aError, CSIPTransactionBase& aTransaction );
+
+ void ErrorOccured( TInt aError,
+ CSIPClientTransaction& aTransaction,
+ CSIPRegistrationBinding& aRegistration );
+
+ void ErrorOccured( TInt aError,
+ CSIPTransactionBase& aTransaction,
+ CSIPDialogAssocBase& aDialogAssoc );
+
+ void ErrorOccured( TInt aError, CSIPRefresh& aSIPRefresh );
+
+ void ErrorOccured( TInt aError,
+ CSIPRegistrationBinding& aRegistration );
+
+ void ErrorOccured( TInt aError, CSIPDialogAssocBase& aDialogAssoc );
+
+ void InviteCompleted( CSIPClientTransaction& aTransaction );
+
+ void InviteCanceled( CSIPServerTransaction& aTransaction );
+
+ void ConnectionStateChanged( CSIPConnection::TState aState );
+
+ private: // From MSipProfileAlrObserver
+
+ void AlrEvent( MSipProfileAlrObserver::TEvent aEvent,
+ TUint32 aProfileId,
+ TUint32 aSnapId,
+ TUint32 aIapId );
+
+ void AlrError( TInt aError,
+ TUint32 aProfileId,
+ TUint32 aSnapId,
+ TUint32 aIapId );
+
+ private: // New functions
+
+ TUint32 ProfileId() const;
+
+ private: // DATA
+
+ MMusSipProfileUser& iUser;
+ CSIP* iSip;
+ CSIPProfileRegistry* iProfileRegistry;
+ CSipProfileAlrController* iProfileAlrController;
+ CSIPProfile* iSipProfile;
+ };
+
+
+#endif // MUSSIPPROFILEHANDLER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/inc/mussipprofileuser.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2008 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 MUSSIPPROFILEUSER_H
+#define MUSSIPPROFILEUSER_H
+
+// SYSTEM INCLUDE
+#include <e32def.h>
+
+/**
+* Callbacks for asking permission to roam between access points
+* and notifying client about registering event
+* @lib musengine.lib
+*/
+class MMusSipProfileUser
+ {
+ public:
+
+ /**
+ * Checks whether roaming between access points is allowed.
+ * @return ETrue is roaming is allowed, otherwise EFalse.
+ */
+ virtual TBool IsRoamingBetweenAPsAllowed() = 0;
+
+ /**
+ * Indicates that SIP profile has been registered.
+ */
+ virtual void ProfileRegistered() = 0;
+
+ };
+
+
+#endif // MUSSIPPROFILEUSER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/src/musengcamerahandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,703 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengcamerahandler.h"
+#include "musunittesting.h"
+#include "musengmceutils.h"
+#include "musenglogger.h"
+
+// SYSTEM
+#include <mcemanager.h>
+#include <mcecamerasource.h>
+#include <mcevideostream.h>
+#include <mcertpsink.h>
+#include <mcedisplaysink.h>
+#include <mcefilesink.h>
+#include <mcesession.h>
+
+const TInt KMaxBrightness = 100;
+const TInt KMinBrightness = -100;
+const TInt KBrightnessStepSize = 10;
+
+
+//Number of big and small zoom steps on Zoom scale
+const TInt KZoomBigStepCount = 15;
+const TInt KZoomSmallStepCount = KZoomBigStepCount*2;
+const TInt KZoomStepMinSize = 1;
+
+const TInt64 KZoomFasterTime = 333333; // 1/3 second
+const TInt KOneCameraOnly = 1;
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TMusEngCameraHandler::TMusEngCameraHandler() :
+ iSession( NULL ),
+ iDefaultZoomFactor( -1 ),
+ iDefaultBrightness( 0 ),
+ iZoomInTime(0),
+ iZoomOutTime(0),
+ iSmallZoomStep( KZoomStepMinSize ),
+ iBigZoomStep( KZoomStepMinSize ),
+ iCameraUsage( MusSettingsKeys::EUseCameraSwapping )
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::SetSession( CMceSession* aSession )
+ {
+ iSession = aSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::InitializeL( CMceCameraSource& aCamera )
+ {
+ aCamera.GetCameraInfo( iCameraInfo );
+ iDefaultZoomFactor = aCamera.ZoomFactorL();
+
+ InitializeZoomStepSize();
+
+ iCurrentCamera = EBackCamera;
+ if ( iCameraUsage == MusSettingsKeys::EUseOnlySecondaryCamera )
+ {
+ iCurrentCamera = EFrontCamera;
+ }
+ aCamera.SetCameraIndexL( (TInt)iCurrentCamera );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::PlayL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::PlayL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ if ( !camera->IsEnabled() )
+ {
+ camera->EnableL();
+ }
+ else
+ {
+ MUS_LOG( "mus: [ENGINE] Camera already enabled, ignore request" )
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::PlayL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Disable camera if not already disabled
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::PauseL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::PauseL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ if ( camera->IsEnabled() )
+ {
+ camera->DisableL();
+ }
+ else
+ {
+ MUS_LOG( "mus: [ENGINE] Camera already disabled, ignore request" )
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::PauseL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool TMusEngCameraHandler::IsPlayingL()
+ {
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ return ( MusEngMceUtils::GetCameraL( *iSession )->IsEnabled() );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt TMusEngCameraHandler::CamerasAvailableL(
+ TCurrentCamera& aCurrentCamera )
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::CamerasAvailableL()" )
+ __ASSERT_ALWAYS( iSession != NULL, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ __ASSERT_ALWAYS( camera != NULL, User::Leave( KErrNotReady ) );
+ aCurrentCamera = iCurrentCamera;
+ TInt camerasAvailable = camera->CamerasAvailable();
+
+ if ( camerasAvailable > KOneCameraOnly &&
+ iCameraUsage != MusSettingsKeys::EUseCameraSwapping )
+ {
+ camerasAvailable = KOneCameraOnly;
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::CamerasAvailable()" )
+ return camerasAvailable;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::ChangeCameraL( TCurrentCamera aCurrentCamera )
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::ChangeCameraL()" )
+ __ASSERT_ALWAYS( iSession != NULL, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ CMceDisplaySink* display = MusEngMceUtils::GetDisplayL( *iSession );
+
+ if ( camera->CamerasAvailable() )
+ {
+ if ( TMusEngCameraHandler::EFrontCamera == aCurrentCamera &&
+ TMusEngCameraHandler::EFrontCamera != iCurrentCamera )
+ {
+ MUS_LOG( "mus: [ENGINE] Set Front camera" )
+ iCurrentCamera = TMusEngCameraHandler::EFrontCamera;
+ ChangeActiveCameraL( iCurrentCamera );
+ }
+ else if ( TMusEngCameraHandler::EBackCamera == aCurrentCamera &&
+ TMusEngCameraHandler::EBackCamera != iCurrentCamera )
+ {
+ MUS_LOG( "mus: [ENGINE] Set Back camera " )
+ iCurrentCamera = TMusEngCameraHandler::EBackCamera;
+ ChangeActiveCameraL( iCurrentCamera );;
+ }
+ else if ( TMusEngCameraHandler::ENextCamera == aCurrentCamera )
+ {
+ if ( iCurrentCamera == TMusEngCameraHandler::EBackCamera )
+ {
+ iCurrentCamera = TMusEngCameraHandler::EFrontCamera;
+ }
+ else
+ {
+ iCurrentCamera = TMusEngCameraHandler::EBackCamera;
+ }
+ ChangeActiveCameraL( iCurrentCamera );
+ }
+ }
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::ChangeCameraL()" )
+ }
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt TMusEngCameraHandler::CurrentZoomL() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::CurrentZoomL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ TInt currentZoom = camera->ZoomFactorL() + camera->DigitalZoomFactorL();
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::CurrentZoomL( %d )",
+ currentZoom )
+
+ return currentZoom;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::SetZoomL( TInt aNewZoomFactor )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> TMusEngCameraHandler::SetZoomL( %d )",
+ aNewZoomFactor )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+ __ASSERT_ALWAYS( aNewZoomFactor <= MaxZoomL() &&
+ aNewZoomFactor >= MinZoomL(),
+ User::Leave( KErrArgument ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ if ( aNewZoomFactor <= iCameraInfo.iMaxZoom )
+ {
+ MUS_LOG( "mus: [ENGINE] Optical zoom factor increased" )
+ camera->SetZoomFactorL( aNewZoomFactor );
+ }
+
+ if ( aNewZoomFactor - iCameraInfo.iMaxZoom > 0 )
+ {
+ camera->SetDigitalZoomFactorL( aNewZoomFactor - iCameraInfo.iMaxZoom );
+ MUS_LOG1( "mus: [ENGINE] Digital zoom factor increased to %d",
+ aNewZoomFactor - iCameraInfo.iMaxZoom )
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::SetZoomL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt TMusEngCameraHandler::MinZoomL() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MinZoomL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ // Although we do not need camera for return value, we have to have it in
+ // order to have proper iCameraInfo
+ MusEngMceUtils::GetCameraL( *iSession );
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MinZoomL( %d )",
+ iCameraInfo.iMinZoom )
+
+ return iCameraInfo.iMinZoom;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt TMusEngCameraHandler::MaxZoomL() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MaxZoomL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ // Although we do not need camera for return value, we have to have it in
+ // order to have proper iCameraInfo
+ MusEngMceUtils::GetCameraL( *iSession );
+
+ TInt maxZoom = iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom;
+
+ MUS_LOG1( "mus: [ENGINE] Max optical zoom( %d )",
+ iCameraInfo.iMaxZoom )
+ MUS_LOG1( "mus: [ENGINE] Max digital zoom( %d )",
+ iCameraInfo.iMaxDigitalZoom )
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MaxZoomL( %d )",
+ maxZoom )
+
+ return maxZoom;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::ZoomInL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::ZoomInL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ // First try to increase optical zoom factor. If in maximum value, try to
+ // increase digital zoom factor.
+ TInt stepSize = ZoomStepSize( iZoomInTime );
+ TInt zoomFactor = camera->ZoomFactorL();
+ TInt zoomDigitalFactor = camera->DigitalZoomFactorL();
+
+ //increate optical zoom factor
+ if ( zoomFactor + stepSize <= iCameraInfo.iMaxZoom )
+ {
+ //optical zoom factor is enough
+ camera->SetZoomFactorL( zoomFactor + stepSize );
+ stepSize = 0;
+ }
+ else if (zoomFactor < iCameraInfo.iMaxZoom)
+ {
+ stepSize -= iCameraInfo.iMaxZoom - zoomFactor;
+ camera->SetZoomFactorL( iCameraInfo.iMaxZoom );
+ }
+
+ //increate digital zoom factor
+ if (stepSize > 0)
+ {
+ if ( zoomDigitalFactor + stepSize <= iCameraInfo.iMaxDigitalZoom )
+ {
+ camera->SetDigitalZoomFactorL( zoomDigitalFactor + stepSize );
+ }
+ else
+ {
+ camera->SetDigitalZoomFactorL( iCameraInfo.iMaxDigitalZoom );
+ MUS_LOG( "mus: [ENGINE] TMusEngCameraHandler::ZoomInL(): Optical \
+ and digital zoom factors are in maximum value" )
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::ZoomInL()" )
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::ZoomOutL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::ZoomOutL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ // First try to decrease digital zoom factor. If already zero, try to
+ // decrease optical zoom factor.
+ TInt stepSize = ZoomStepSize( iZoomOutTime );
+ TInt zoomFactor = camera->ZoomFactorL();
+ TInt zoomDigitalFactor = camera->DigitalZoomFactorL();
+
+ //decreate digital zoom factor firstly
+ if ( zoomDigitalFactor - stepSize >= 0 )
+ {
+ //digital zoom factor is enough
+ camera->SetDigitalZoomFactorL( zoomDigitalFactor - stepSize );
+ stepSize = 0;
+ }
+ else if ( zoomDigitalFactor > 0 )
+ {
+ stepSize -= zoomDigitalFactor;
+ camera->SetDigitalZoomFactorL( 0 );
+ MUS_LOG("mus: [ENGINE] Digigal Factor to zero")
+ }
+
+ //decreate optical zoom factor firstly
+ if ( stepSize > 0 )
+ {
+ if ( zoomFactor - stepSize > iCameraInfo.iMinZoom )
+ {
+ camera->SetZoomFactorL( zoomFactor - stepSize );
+ }
+ else
+ {
+ MUS_LOG( "mus: [ENGINE] TMusEngCameraHandler::ZoomOutL(): Optical and \
+ digital zoom factors are in minimum value" )
+ camera->SetZoomFactorL( iCameraInfo.iMinZoom );
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::ZoomOutL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::ZoomDefaultL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::ZoomDefaultL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ camera->SetZoomFactorL( iDefaultZoomFactor );
+ camera->SetDigitalZoomFactorL( 0 );
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::ZoomDefaultL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::SetBrightnessL( TInt aBrightness ) const
+ {
+ MUS_LOG1( "mus: [ENGINE] -> TMusEngCameraHandler::SetBrightnessL( %d )",
+ aBrightness )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ camera->SetBrightnessL( aBrightness );
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::SetBrightnessL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt TMusEngCameraHandler::CurrentBrightnessL() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::CurrentBrightnessL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ TInt currentBrightness = camera->BrightnessL();
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::CurrentBrightnessL(): %d",
+ currentBrightness )
+
+ return currentBrightness;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt TMusEngCameraHandler::MaxBrightnessL() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MaxBrightnessL()" )
+
+ // maximum brightness is not in camera info, but a constant 100
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MaxBrightnessL(): %d",
+ KMaxBrightness )
+
+ return KMaxBrightness;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt TMusEngCameraHandler::MinBrightnessL() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::MinBrightnessL()" )
+
+ // maximum brightness is not in camera info, but a constant -100
+
+ MUS_LOG1( "mus: [ENGINE] <- TMusEngCameraHandler::MinBrightnessL(): %d",
+ KMinBrightness )
+
+ return KMinBrightness;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::IncreaseBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::IncreaseBrightnessL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ TInt newBrightness = camera->BrightnessL() + KBrightnessStepSize;
+
+ if ( newBrightness < KMaxBrightness )
+ {
+ camera->SetBrightnessL( newBrightness );
+ }
+ else
+ {
+ camera->SetBrightnessL( KMaxBrightness );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::IncreaseBrightnessL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::DecreaseBrightnessL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::DecreaseBrightnessL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ TInt newBrightness = camera->BrightnessL() - KBrightnessStepSize;
+
+ if ( newBrightness > KMinBrightness )
+ {
+ camera->SetBrightnessL( newBrightness );
+ }
+ else
+ {
+ camera->SetBrightnessL( KMinBrightness );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::DecreaseBrightnessL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::BrightnessDefaultL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::BrightnessDefaultL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ camera->SetBrightnessL( iDefaultBrightness );
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::BrightnessDefaultL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngCameraHandler::BrightnessAutoL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::BrightnessAutoL()" )
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+
+ camera->SetBrightnessL( CCamera::EBrightnessAuto );
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::BrightnessAutoL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::InitializeZoomStepSize()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::InitializeZoomStepSize()" )
+ MUS_LOG2( "iMaxZoom = %d, iMinZoom = %d", iCameraInfo.iMaxZoom, iCameraInfo.iMinZoom);
+ MUS_LOG2( "iMaxDigitalZoom = %d, iMaxDigitalZoomFactor = %d",
+ iCameraInfo.iMaxDigitalZoom, iCameraInfo.iMaxDigitalZoomFactor);
+
+ iBigZoomStep = ( iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom -
+ iCameraInfo.iMinZoom ) / KZoomBigStepCount;
+
+ if ( iBigZoomStep < KZoomStepMinSize )
+ iBigZoomStep = KZoomStepMinSize;
+
+ iSmallZoomStep = ( iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom -
+ iCameraInfo.iMinZoom ) / KZoomSmallStepCount;
+
+ if ( iSmallZoomStep < KZoomStepMinSize )
+ iSmallZoomStep = KZoomStepMinSize;
+
+ MUS_LOG2( "mus: [ENGINE] iSmallZoomStep = %d, iBigZoomStep = %d",
+ iSmallZoomStep, iBigZoomStep )
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::InitializeZoomStepSize()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngCameraHandler::ReadCameraUsageKeyL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::ReadCameraUsageKeyL()" )
+
+ // We try to read camera usage. If we do not succeed, we use default
+ iCameraUsage = MusSettingsKeys::EUseCameraSwapping;
+ TRAPD( error,
+ iCameraUsage = MultimediaSharingSettings::CameraUsageL() )
+ __ASSERT_ALWAYS( error == KErrNone || error == KErrNotFound,
+ User::Leave( error ) );
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::ReadCameraUsageKeyL()" )
+
+ }
+
+// -----------------------------------------------------------------------------
+// Calculate the zoom step based time escaped
+// -----------------------------------------------------------------------------
+TInt TMusEngCameraHandler::ZoomStepSize( TInt64& aTime )
+ {
+ TTime now;
+ now.HomeTime();
+ TInt64 timeNow = now.Int64();
+ TInt stepSize = ( ( timeNow - aTime ) <= KZoomFasterTime ) ? iBigZoomStep : iSmallZoomStep;
+
+ aTime = now.Int64();
+
+ MUS_LOG1( "mus: [ENGINE] stepSize = %d", stepSize );
+
+ return stepSize;
+ }
+
+// -----------------------------------------------------------------------------
+// Disable camera before it changes it. It enables camera after change.
+// -----------------------------------------------------------------------------
+void TMusEngCameraHandler::ChangeActiveCameraL( TCurrentCamera aNewCamera )
+ {
+ MUS_LOG( "mus: [ENGINE] -> ChangeActiveCamera()" )
+
+ CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
+ CMceDisplaySink* display = MusEngMceUtils::GetDisplayL( *iSession );
+ MUS_LOG( "mus: [ENGINE] Camera enabled ?" )
+ if ( camera->IsEnabled() )
+ {
+ MUS_LOG( "mus: [ENGINE] Is view finder enabled? " )
+ if ( display->IsEnabled() )
+ {
+ MUS_LOG( "mus: [ENGINE] Disable view finder" )
+ display->DisableL();
+ }
+ MUS_LOG( "mus: [ENGINE] Disable camera" )
+ camera->DisableL();
+ camera->SetCameraIndexL( aNewCamera );
+ camera->EnableL();
+ display->EnableL();
+ }
+ else
+ {
+ if ( display->IsEnabled() )
+ {
+ MUS_LOG( "mus: [ENGINE] Disable view finder" )
+ display->DisableL();
+ }
+ MUS_LOG( "mus: [ENGINE] set camera index" )
+ camera->SetCameraIndexL( aNewCamera );
+ MUS_LOG( "mus: [ENGINE] Enable camera" )
+ display->EnableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] -> fetching new iCameraInfo..." )
+ camera->GetCameraInfo( iCameraInfo );
+ iDefaultZoomFactor = camera->ZoomFactorL();
+ InitializeZoomStepSize();
+ }
+
--- a/tsrc/musenginestub/src/musengclipsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/src/musengclipsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,45 +18,18 @@
// USER
#include "musengclipsession.h"
-#include "musengclipsessionobserver.h"
-#include "musengsessionobserver.h"
-#include "musengmceoutsession.h"
-#include "musenglivesession.h"
-
-
-// SYSTEM
-/*#include <mcesession.h>
-#include <mcefilesource.h>
-#include <mcemediastream.h>
-#include <mcevideostream.h>
-#include <mceaudiostream.h>
-#include <mcertpsink.h>
-#include <mcedisplaysink.h>
-#include <mcespeakersink.h>
-#include <drmcommon.h>
-*/
-
-// CONSTANTS
-
-const TInt KMicroSecondsInOneSecond = 1000000;
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C CMusEngClipSession* CMusEngClipSession::NewL(
- const TDesC& aFileName,
- const TRect& aRect,
- MMusEngClipSessionObserver* aSessionObserver,
- TUint aSipProfileId )
+CMusEngClipSession* CMusEngClipSession::NewL(
+ const TRect& aRect )
{
- CMusEngClipSession* self = new( ELeave ) CMusEngClipSession(
- aSessionObserver,
- aRect,
- aSipProfileId );
+ CMusEngClipSession* self = new( ELeave ) CMusEngClipSession( aRect );
CleanupStack::PushL( self );
- self->ConstructL( aFileName );
+ self->ConstructL();
CleanupStack::Pop( self );
return self;
}
@@ -70,60 +43,12 @@
{
}
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngClipSession::ChangeClipL( const TDesC& aFileName )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// TODO: At the moment behavior of MCE is not known and all the FFWD commands
-// are only forwarded to MCE.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::FastForwardL( TBool aUseFFWD )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// TODO: At the moment behavior of MCE is not known and all the FRWD commands
-// are only forwarded to MCE.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::FastRewindL( TBool aUseFRWD )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TTimeIntervalSeconds CMusEngClipSession::PositionL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TTimeIntervalSeconds CMusEngClipSession::DurationL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::SetPositionL (
- const TTimeIntervalSeconds& aPosition )
+CMusEngClipSession::CMusEngClipSession( const TRect& aRect )
+ : CMusEngMceOutSession( aRect )
{
}
@@ -132,78 +57,11 @@
//
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngClipSession::SetSessionObserver(
- MMusEngClipSessionObserver* aSessionObserver)
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::PlayL()
+void CMusEngClipSession::ConstructL()
{
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngClipSession::PauseL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngClipSession::CompleteSessionStructureL()
- {
+ CMusEngMceOutSession::ConstructL();
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngClipSession::CMusEngClipSession(
- MMusEngClipSessionObserver* aSessionObserver,
- const TRect& aRect,
- TUint aSipProfileId )
- : CMusEngMceOutSession( aRect, aSipProfileId )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngClipSession::ConstructL( const TDesC& aFileName )
- {
- }
+
+// End of file
-
-// -----------------------------------------------------------------------------
-// Check is file DRM protected.
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusEngClipSession::IsProtectedFileL( const TDesC& aClipFile )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// If member file contains audio, add appropriate amount of audio streams to
-// session structure
-// -----------------------------------------------------------------------------
-//
-void CMusEngClipSession::ConstructAudioStructureL()
- {
- }
-
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/src/musenginepluginentry.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "musengsessionmanager.h"
+#include <ECom.h>
+#include <ImplementationProxy.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+const TImplementationProxy KMusEnginePluginImplementationTable[] =
+ {
+ IMPLEMENTATION_PROXY_ENTRY( 0x20021341, CMusEngSessionManager::NewL )
+ };
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+ {
+ aTableCount = sizeof( KMusEnginePluginImplementationTable ) /
+ sizeof( TImplementationProxy );
+
+ return KMusEnginePluginImplementationTable;
+ }
--- a/tsrc/musenginestub/src/musenglivesession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/src/musenglivesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,36 +18,49 @@
// USER
#include "musenglivesession.h"
+#include "musengsessionobserver.h"
#include "musenglivesessionobserver.h"
-//#include "musunittesting.h"
-//#include "musengmceutils.h"
+#include "musunittesting.h"
+#include "musengmceutils.h"
+#include "musenglogger.h"
+#include "mussessionproperties.h"
// SYSTEM
-/*
+#include <mcemanager.h>
#include <mcecamerasource.h>
#include <mcevideostream.h>
#include <mcertpsink.h>
#include <mcedisplaysink.h>
+#include <mcefilesink.h>
#include <mcesession.h>
#include <mcevideocodec.h>
-*/
+#include <mceh263codec.h>
+#include <mceavccodec.h>
+// Names of AVC levels in string for config keys stored in CenRep
+_LIT8( KMusAvcBitrateLevel1, "AvcBrL1=" );
+_LIT8( KMusAvcBitrateLevel1b, "AvcBrL1b=" );
+_LIT8( KMusAvcBitrateLevel1_1, "AvcBrL1_1=" );
+_LIT8( KMusAvcBitrateLevel1_2, "AvcBrL1_2=" );
+_LIT8( KMusAvcBitrateLevel1_3, "AvcBrL1_3=" );
+_LIT8( KMusAvcBitrateLevel2, "AvcBrL2=" );
+
+_LIT8( KMusEncoderInfoTokenizer, ";" );
+
+
+const TInt KMaxDispName = 512;
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C CMusEngLiveSession* CMusEngLiveSession::NewL(
- const TDesC& /*aFileName*/,
- const TRect& aRect,
- MMusEngLiveSessionObserver* aSessionObserver,
- TUint aSipProfileId )
+CMusEngLiveSession* CMusEngLiveSession::NewL(
+ const TDesC& aFileName,
+ const TRect& aRect )
{
- CMusEngLiveSession* self = new( ELeave ) CMusEngLiveSession(
- aSessionObserver,
- aRect,
- aSipProfileId );
+ CMusEngLiveSession* self = new( ELeave ) CMusEngLiveSession( aRect,
+ aFileName );
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -59,15 +72,10 @@
//
// -----------------------------------------------------------------------------
//
-EXPORT_C CMusEngLiveSession* CMusEngLiveSession::NewL(
- const TRect& aRect,
- MMusEngLiveSessionObserver* aSessionObserver,
- TUint aSipProfileId )
+CMusEngLiveSession* CMusEngLiveSession::NewL(
+ const TRect& aRect )
{
- CMusEngLiveSession* self = new( ELeave ) CMusEngLiveSession(
- aSessionObserver,
- aRect,
- aSipProfileId);
+ CMusEngLiveSession* self = new( ELeave ) CMusEngLiveSession( aRect );
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -81,15 +89,322 @@
//
CMusEngLiveSession::~CMusEngLiveSession()
{
+ delete iRemoteDisplayName;
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::EstablishLcSessionL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngLiveSession::LocalVideoPlayer()
+ {
+ return this;
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+
+const TDesC& CMusEngLiveSession::RemoteDisplayName()
+ {
+ return *iRemoteDisplayName;
+ }
+
+
+
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer::TLcVideoPlayerState CMusEngLiveSession::LcVideoPlayerState() const
+ {
+ TLcVideoPlayerState vidPlayerState = MLcVideoPlayer::EUnavailable;
+ return vidPlayerState;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngLiveSession::LcIsPlayingL()
+ {
+ return iPlaying;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::LcPlayL()
+ {
+ iPlaying = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::LcPauseL()
+ {
+ iPlaying = EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcWindow* CMusEngLiveSession::LcWindow()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcCameraControl* CMusEngLiveSession::LcCameraControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcFileControl* CMusEngLiveSession::LcSourceFile()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcFileControl* CMusEngLiveSession::LcDestinationFile()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcAudioControl* CMusEngLiveSession::LcAudioControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcZoomControl* CMusEngLiveSession::LcZoomControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcBrightnessControl* CMusEngLiveSession::LcBrightnessControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+RPointerArray< MLcValueControl >& CMusEngLiveSession::LcExtensionControls()
+ {
+ return iValueControls;
}
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngLiveSession::LcCameraCountL()
+ {
+ return 1;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcCameraControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::ToggleLcCameraL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngLiveSession::MinLcBrightnessL()
+ {
+ return iCurrentBrighness;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngLiveSession::MaxLcBrightnessL()
+ {
+ return iCurrentBrighness;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngLiveSession::LcBrightnessL()
+ {
+ return iCurrentBrighness;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::SetLcBrightnessL( TInt aValue )
+ {
+ iCurrentBrighness = aValue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::IncreaseLcBrightnessL()
+ {
+ iCurrentBrighness++;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcBrightnessControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::DecreaseLcBrightnessL()
+ {
+ iCurrentBrighness--;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngLiveSession::MinLcZoomL()
+ {
+ return iCurrentZoom;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngLiveSession::MaxLcZoomL()
+ {
+ return iCurrentZoom;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngLiveSession::LcZoomValueL()
+ {
+ return iCurrentZoom;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::SetLcZoomValueL( TInt aValue )
+ {
+ iCurrentZoom = aValue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::LcZoomInL()
+ {
+ iCurrentZoom++;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcZoomControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::LcZoomOutL()
+ {
+ iCurrentZoom--;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::EnableLcFileL( TBool aEnable )
+ {
+ iFileEnabled = aEnable;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngLiveSession::IsLcFileEnabled()
+ {
+ return iFileEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::SetLcFileNameL( const TFileName& aFileName )
+ {
+ iRecordedFile = aFileName;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcFileControl
+// -----------------------------------------------------------------------------
+//
+TFileName& CMusEngLiveSession::LcFileName()
+ {
+ return iRecordedFile;
+ }
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngLiveSession::SetSessionObserver(
- MMusEngLiveSessionObserver* aSessionObserver )
+CMusEngLiveSession::CMusEngLiveSession(
+ const TRect& aRect,
+ const TDesC& aRecordedFile )
+ : CMusEngMceOutSession( aRect ),
+ iRecordedFile( aRecordedFile )
{
}
@@ -98,114 +413,13 @@
//
// -----------------------------------------------------------------------------
//
-EXPORT_C TInt CMusEngLiveSession::CurrentZoomL() const
- {
- return iCurrentZoom;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CMusEngLiveSession::MaxZoomL() const
- {
- return iCurrentZoom;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CMusEngLiveSession::MinZoomL() const
+void CMusEngLiveSession::ConstructL()
{
- return iCurrentZoom;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::ZoomInL()
- {
- iCurrentZoom++;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::ZoomOutL()
- {
- iCurrentZoom--;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::ZoomDefaultL()
- {
- }
-
+ MUS_LOG( "mus: [ENGINE] -> CMusEngLiveSession::ConstructL()" )
+
+ CMusEngMceOutSession::ConstructL();
+
+ iRemoteDisplayName = HBufC::NewL( KMaxDispName );
-// -----------------------------------------------------------------------------
-// Enable camera
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::PlayL()
- {
- iPlaying = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-// Disable camera
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngLiveSession::PauseL()
- {
- iPlaying = EFalse;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngLiveSession::CompleteSessionStructureL()
- {
+ MUS_LOG( "mus: [ENGINE] <- CMusEngLiveSession::ConstructL()" )
}
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngLiveSession::CMusEngLiveSession(
- MMusEngLiveSessionObserver* aSessionObserver,
- const TRect& aRect,
- TUint aSipProfileId )
- :CMusEngMceOutSession( aRect, aSipProfileId ),
- iDefaultZoomFactor( -1 )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngLiveSession::ConstructL( /*const TDesC& aFileName*/ )
- {
- }
-
-
-
-
-
-
--- a/tsrc/musenginestub/src/musengmceoutsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/src/musengmceoutsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,32 +18,6 @@
// USER
#include "musengmceoutsession.h"
-#include "musenglivesessionobserver.h"
-//#include "mussipprofilehandler.h"
-
-// SYSTEM
-/*
-#include <mcemediastream.h>
-#include <mceoutsession.h>
-#include <mcevideostream.h>
-#include <mcemediasource.h>
-#include <mcefilesource.h>
-#include <mcemediasink.h>
-#include <mcertpsink.h>
-#include <mcespeakersink.h>
-#include <mcedisplaysink.h>
-
-#include <sipprofile.h>
-#include <uri8.h>
-#include <charconv.h>
-#include <f32file.h>
-#include <utf.h>
-*/
-const TInt KMaxUriLength = 512;
-_LIT8( KMusEngAtSign, "@" );
-_LIT8( KMusEngPlusSign, "+" );
-_LIT8( KMusEngSipPrefix, "sip:" );
-_LIT8( KMusEngTelPrefix, "tel:" );
// -----------------------------------------------------------------------------
//
@@ -53,44 +27,13 @@
{
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceOutSession::InviteL( const TDesC& aRecipient )
- {
- iInvited = ETrue;
- User::LeaveIfError( iErrorCode );
-
- }
-
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngMceOutSession::CancelInviteL()
- {
- iInvited = EFalse;
- User::LeaveIfError( iErrorCode );
- }
-
-
-// -----------------------------------------------------------------------------
-// Handle MCE session termination. Called by MCE observer function of the
-// base class.
-// -----------------------------------------------------------------------------
-//
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngMceOutSession::CMusEngMceOutSession( const TRect& aRect,
- TUint aSipProfileId )
- : CMusEngMceSession( aRect ),
- iSipProfileId( aSipProfileId )
+CMusEngMceOutSession::CMusEngMceOutSession(
+ const TRect& aRect)
+ : CMusEngMceSession( aRect )
{
}
@@ -103,34 +46,4 @@
{
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngMceOutSession::CreateMceSessionStructureL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-MMusEngOutSessionObserver* CMusEngMceOutSession::OutSessionObserver()
- {
- return static_cast<MMusEngOutSessionObserver*>(iSessionObserver);
- }
-
-
-// -----------------------------------------------------------------------------
-// TODO: Using UTF8 is to wide. It should handle the escape characters
-// correctly. UTF7 is not working, since it converts + as +-
-// -----------------------------------------------------------------------------
-//
-HBufC8* CMusEngMceOutSession::ParseRecipientUriL( const TDesC& aRecipient )
- {
- }
-
-
-
+// End of file
--- a/tsrc/musenginestub/src/musengmcesession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/src/musengmcesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,118 +18,6 @@
// USER
#include "musengmcesession.h"
-#include "musengsessiondurationtimer.h"
-#include "musengoutsessionobserver.h"
-//#include "musengmceutils.h"
-//#include "musuid.hrh"
-#include "musengclipsessionobserver.h"
-
-// SYSTEM
-/*
-#include <mcemanager.h>
-#include <mcesession.h>
-#include <mcevideostream.h>
-#include <mceaudiostream.h>
-#include <mcertpsink.h>
-#include <mcedisplaysink.h>
-#include <mcespeakersink.h>
-#include <mcefilesource.h>
-*/
-
-const TInt KMusEngTimerInterval = 1000000; // 1 second
-const TInt KMusEngRtcpInactivityThreshold = 20; // seconds
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngMceSession::~CMusEngMceSession()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::TerminateL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::ReleaseInternalObservers()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// Returns estabilished session time. If not established return
-// value is < 0
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TTimeIntervalSeconds CMusEngMceSession::GetSessionTime() const
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CMusEngMceSession::ConnectionActive() const
- {
- return EFalse;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::VolumeUpL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::VolumeDownL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::EnableDisplayL( TBool aEnable )
- {
- iDisplayEnabled = aEnable;
- }
-
-
-// -----------------------------------------------------------------------------
-// Mutes playback of sended audio streams. Audio data is still streamed.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::MuteL()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// Unmutes playback of sended audio streams.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngMceSession::UnmuteL()
- {
- }
// -----------------------------------------------------------------------------
@@ -137,8 +25,7 @@
// -----------------------------------------------------------------------------
//
CMusEngMceSession::CMusEngMceSession( const TRect& aRect )
- : CMusEngSession( aRect ),
- iSecondsFromLastRtcpReport ( 0 )
+ : iRect ( aRect )
{
}
@@ -149,71 +36,267 @@
//
void CMusEngMceSession::ConstructL()
{
+ CMusEngSession::ConstructL(); // Base class ConstructL -first
}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngMceSession::RectChangedL()
- {
- }
-
-
-
-
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-TBool CMusEngMceSession::IsRtpcInactivityTimoutSupported()
-{
- return EFalse;
-}
+CMusEngMceSession::~CMusEngMceSession()
+ {
+ }
// -----------------------------------------------------------------------------
-// Initializes session timer to current time
+// From MLcSession
// -----------------------------------------------------------------------------
//
-void CMusEngMceSession::InitializeSessionTimer()
+
+MLcSession::TLcSessionState CMusEngMceSession::LcSessionState() const
+ {
+ TLcSessionState lcSessionState = MLcSession::EUninitialized;
+ return lcSessionState;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::EstablishLcSessionL()
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::TerminateLcSessionL()
{
}
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngMceSession::RemoteVideoPlayer()
+ {
+ return NULL;
+ }
// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngMceSession::LocalVideoPlayer()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::LocalDisplayName()
+ {
+ return KNullDesC;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMusEngMceSession::RemoteDisplayName()
+ {
+ return KNullDesC;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
//
+TInt CMusEngMceSession::SetParameter( TInt /*aId*/, TInt /*aValue*/ )
+ {
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::ParameterValue( TInt /*aId*/ )
+ {
+ return KErrNotSupported;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
// -----------------------------------------------------------------------------
//
-void CMusEngMceSession::UpdateTimerEvent()
+void CMusEngMceSession::EnableLcWindowL( TBool aEnable )
+ {
+ iWindowEnabled = aEnable;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcWindowEnabled()
{
+ return iWindowEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcWindowRectL( TRect aRect )
+ {
+ iRect = aRect;
}
// -----------------------------------------------------------------------------
-// Enables or disables all the speaker and rtp sinks of all the audio streams
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+TRect CMusEngMceSession::LcWindowRect()
+ {
+ return iRect;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcWindowOrientationL(
+ TLcWindowOrientation aOrientation )
+ {
+ iOrientation = aOrientation;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcWindow
+// -----------------------------------------------------------------------------
+//
+MLcWindow::TLcWindowOrientation CMusEngMceSession::LcWindowOrientationL()
+ {
+ MLcWindow::TLcWindowOrientation orientation;
+ if ( iOrientation == ELandscape )
+ {
+ orientation = MLcWindow::ELandscape;
+ }
+ else
+ {
+ orientation = MLcWindow::EPortrait;
+ }
+ return orientation;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcAudioMutedL()
+ {
+ return iMuted;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::MuteLcAudioL( TBool aMute )
+ {
+ iMuted = aMute;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsEnablingLcLoudspeakerAllowed()
+ {
+ return iEnablingLoudspeakerAllowed;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
// -----------------------------------------------------------------------------
//
-void CMusEngMceSession::DoMuteL( TBool aMute )
+TBool CMusEngMceSession::IsLcMicMutedL()
+ {
+ return iMicMuted;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::MuteLcMicL( TBool aMute )
+ {
+ iMicMuted = aMute;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngMceSession::IsLcLoudspeakerEnabled()
+ {
+ return iLoudspeakerEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::EnableLcLoudspeakerL( TBool aEnabled )
+ {
+ iLoudspeakerEnabled = aEnabled;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngMceSession::LcVolumeL()
+ {
+ return iVolume;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::SetLcVolumeL( TInt aValue )
+ {
+ iVolume = aValue;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::IncreaseLcVolumeL()
+ {
+ iVolume++;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcAudioControl
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::DecreaseLcVolumeL()
+ {
+ iVolume--;
+ }
+
+void CMusEngMceSession::UpdateLcSessionL()
{
}
-// -----------------------------------------------------------------------------
-// Changes volume of all speaker sinks in the session structure
-// -----------------------------------------------------------------------------
-//
-void CMusEngMceSession::ChangeVolumeByOneL( TBool aIncreaseVolume )
- {
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngMceSession::CheckClipEndL()
- {
- }
-
-
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/src/musengmceutils.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,571 @@
+/*
+* Copyright (c) 2005-2006 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: Utilities to get and set profile used with SWIS.
+*
+*/
+
+
+
+// USER
+
+#include "musengmceutils.h"
+#include "muslogger.h"
+
+// SYSTEM
+
+#include <mcesession.h>
+#include <mcevideostream.h>
+#include <mceaudiostream.h>
+#include <mcertpsink.h>
+#include <mcemediasource.h>
+#include <mcertpsource.h>
+#include <mcecamerasource.h>
+#include <mcedisplaysink.h>
+#include <mcefilesource.h>
+#include <mcefilesink.h>
+#include <mcespeakersink.h>
+
+
+
+
+
+// -----------------------------------------------------------------------------
+// Tells if parameter stream is a video stream with RTP source
+// -----------------------------------------------------------------------------
+//
+TBool MusEngMceUtils::IsVideoInStream( CMceMediaStream& aStream )
+ {
+ return ( aStream.Type() == KMceVideo &&
+ aStream.Source() &&
+ aStream.Source()->Type() == KMceRTPSource );
+ }
+
+// -----------------------------------------------------------------------------
+// Tells if parameter stream is a video stream with RTP sink
+// -----------------------------------------------------------------------------
+//
+TBool MusEngMceUtils::IsVideoOutStream( CMceMediaStream& aStream )
+ {
+ TBool isOutStream( EFalse );
+ if ( aStream.Type() == KMceVideo )
+ {
+ CMceMediaSink* rtpSink = MusEngMceUtils::GetMediaSink(
+ aStream,
+ KMceRTPSink );
+
+ isOutStream = ( rtpSink != NULL );
+ }
+ return isOutStream;
+ }
+
+// -----------------------------------------------------------------------------
+// Tells if parameter stream is an audio stream with RTP source
+// -----------------------------------------------------------------------------
+//
+TBool MusEngMceUtils::IsAudioInStream( CMceMediaStream& aStream )
+ {
+ return ( aStream.Type() == KMceAudio &&
+ aStream.Source() &&
+ aStream.Source()->Type() == KMceRTPSource );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to video stream with RTP sink.
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* MusEngMceUtils::GetVideoOutStreamL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetVideoOutStreamL()" )
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ CMceVideoStream* videoOut = NULL;
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( MusEngMceUtils::IsVideoOutStream( *streams[i] ) )
+ {
+ __ASSERT_ALWAYS( !videoOut, User::Leave( KErrOverflow ) );
+
+ videoOut = static_cast<CMceVideoStream*>( streams[i] );
+ }
+
+ // Check if bound stream is a video stream with RTP sink.
+ if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoOutStream( streams[i]->BoundStreamL() ) )
+ {
+ __ASSERT_ALWAYS( !videoOut, User::Leave( KErrOverflow ) );
+
+ videoOut = static_cast<CMceVideoStream*>(
+ &streams[i]->BoundStreamL() );
+ }
+ }
+
+ __ASSERT_ALWAYS( videoOut, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetVideoOutStreamL()" )
+
+ return videoOut;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to video stream with RTP source.
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* MusEngMceUtils::GetVideoInStreamL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetVideoInStreamL()" )
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ CMceVideoStream* videoIn = NULL;
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( MusEngMceUtils::IsVideoInStream( *streams[i] ) )
+
+ {
+ __ASSERT_ALWAYS( !videoIn, User::Leave( KErrOverflow ) );
+
+ videoIn = static_cast<CMceVideoStream*>( streams[i] );
+ }
+
+ // Check if bound stream is a video stream with RTP souce.
+ if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoInStream( streams[i]->BoundStreamL() ) )
+ {
+ __ASSERT_ALWAYS( !videoIn, User::Leave( KErrOverflow ) );
+
+ videoIn = static_cast<CMceVideoStream*>(
+ &streams[i]->BoundStreamL() );
+ }
+ }
+
+ __ASSERT_ALWAYS( videoIn, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetVideoInStreamL()" )
+
+ return videoIn;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to video stream with file sink
+// -----------------------------------------------------------------------------
+//
+CMceVideoStream* MusEngMceUtils::GetRecordingStream( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetRecordingStreamL()" )
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ CMceVideoStream* recordingStream = NULL;
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( streams[i]->Type() == KMceVideo )
+ {
+ if ( MusEngMceUtils::GetMediaSink( *streams[i], KMceFileSink ) )
+ {
+ recordingStream = static_cast<CMceVideoStream*>( streams[i] );
+ }
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetRecordingStreamL()" )
+
+ return recordingStream;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a mediastream.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSink( CMceMediaStream& aStream,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType )
+ {
+ const RPointerArray<CMceMediaSink>& sinks = aStream.Sinks();
+ for ( TInt i = 0; i < sinks.Count(); ++i )
+ {
+ if ( sinks[i]->Type() == aType &&
+ ( aAssociatedSourceType == KMusEngNoAssociatedSourceType ||
+ aStream.Source()->Type() == aAssociatedSourceType ) )
+ {
+ return sinks[i];
+ }
+ }
+
+ return NULL;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a mediastream.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSinkL( CMceMediaStream& aStream,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType )
+ {
+
+ CMceMediaSink* sink = MusEngMceUtils::GetMediaSink( aStream, aType, aAssociatedSourceType );
+
+ __ASSERT_ALWAYS( sink, User::Leave( KErrNotFound ) );
+
+ return sink;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a session.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSink( CMceSession& aSession,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType,
+ TBool aStrictMatch )
+ {
+ CMceMediaSink* sink = NULL;
+
+ TRAP_IGNORE( sink = MusEngMceUtils::GetMediaSinkL(
+ aSession, aType, aAssociatedSourceType, aStrictMatch ) )
+
+ return sink;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a media sink of spesified type contained by a session.
+// -----------------------------------------------------------------------------
+//
+CMceMediaSink* MusEngMceUtils::GetMediaSinkL( CMceSession& aSession,
+ TMceSinkType aType,
+ TMceSourceType aAssociatedSourceType,
+ TBool aStrictMatch )
+ {
+ CMceMediaSink* sink = NULL;
+
+ const RPointerArray<CMceMediaStream>& streams = aSession.Streams();
+
+ for ( TInt i = 0; i < streams.Count(); ++i )
+ {
+ sink = MusEngMceUtils::GetMediaSink( *streams[i], aType, aAssociatedSourceType );
+ if ( sink )
+ {
+ return sink;
+ }
+
+ if ( streams[i]->BoundStream() )
+ {
+ sink = MusEngMceUtils::GetMediaSink( streams[i]->BoundStreamL(),
+ aType,
+ aAssociatedSourceType );
+ if ( sink )
+ {
+ return sink;
+ }
+ }
+ }
+
+ if ( !sink && aAssociatedSourceType != KMusEngNoAssociatedSourceType && !aStrictMatch )
+ {
+ // No preferred match, try without source preference
+ sink = GetMediaSinkL( aSession, aType );
+ }
+
+ __ASSERT_ALWAYS( sink, User::Leave( KErrNotFound ) );
+
+ return sink;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a speaker sink contained by specified stream or bound stream.
+// -----------------------------------------------------------------------------
+//
+CMceSpeakerSink* MusEngMceUtils::GetSpeaker( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetSpeaker()" )
+
+ CMceSpeakerSink* speaker = NULL;
+
+ if ( aStream.Type() == KMceAudio )
+ {
+ speaker = static_cast<CMceSpeakerSink*>(
+ MusEngMceUtils::GetMediaSink( aStream, KMceSpeakerSink ) );
+
+ if ( !speaker && aStream.BoundStream() )
+ {
+ CMceMediaStream* boundStream = NULL;
+ TRAPD( error, boundStream = &aStream.BoundStreamL() )
+
+ if ( error == KErrNone )
+ {
+ speaker = static_cast<CMceSpeakerSink*>(
+ MusEngMceUtils::GetMediaSink( *boundStream,
+ KMceSpeakerSink ) );
+ }
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetSpeaker()" )
+
+ return speaker;
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a camera source.
+// -----------------------------------------------------------------------------
+//
+CMceCameraSource* MusEngMceUtils::GetCameraL( CMceSession& aSession )
+ {
+ // Camera can be only in out stream
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetCameraL()" )
+
+ CMceVideoStream* videoOut = MusEngMceUtils::GetVideoOutStreamL( aSession );
+
+ if ( !( videoOut->Source() &&
+ videoOut->Source()->Type() == KMceCameraSource ) )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetCameraL()" )
+ return static_cast<CMceCameraSource*>( videoOut->Source() );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a file source.
+// -----------------------------------------------------------------------------
+//
+CMceFileSource* MusEngMceUtils::GetFileSourceL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetFileSourceL()" )
+
+ CMceVideoStream* videoOut = MusEngMceUtils::GetVideoOutStreamL( aSession );
+
+ if ( !( videoOut->Source() &&
+ videoOut->Source()->Type() == KMceFileSource ) )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetFileSourceL()" )
+ return static_cast<CMceFileSource*>( videoOut->Source() );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetDisplay(
+ CMceSession& aSession, TBool aPreferViewFinder )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetDisplay()" )
+ TMceSourceType preferredSource =
+ aPreferViewFinder ? KMceCameraSource : KMusEngNoAssociatedSourceType;
+ return static_cast<CMceDisplaySink*>(
+ MusEngMceUtils::GetMediaSink( aSession, KMceDisplaySink, preferredSource ) );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetDisplayL(
+ CMceSession& aSession, TBool aPreferViewFinder )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetDisplayL()" )
+
+ CMceDisplaySink* display = MusEngMceUtils::GetDisplay( aSession, aPreferViewFinder );
+
+ __ASSERT_ALWAYS( display, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetDisplayL()" )
+ return display;
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying received video.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetReceivingDisplay( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetReceivingDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetReceivingDisplay()" )
+
+ // Search display which is connected with rtp source
+ TMceSourceType preferredSource = KMceRTPSource;
+ return static_cast<CMceDisplaySink*>( MusEngMceUtils::GetMediaSink(
+ aSession, KMceDisplaySink, preferredSource, ETrue ) );
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying received video.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetReceivingDisplayL( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetReceivingDisplayL()" )
+
+ CMceDisplaySink* display = GetReceivingDisplay( aSession );
+ __ASSERT_ALWAYS( display != NULL, User::Leave( KErrNotFound ) );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetReceivingDisplay()" )
+
+ return display;
+ }
+
+// -----------------------------------------------------------------------------
+// Gets handle to a display sink displaying viewfinder content.
+// -----------------------------------------------------------------------------
+//
+CMceDisplaySink* MusEngMceUtils::GetVfDisplay( CMceSession& aSession )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::GetVfDisplay()" )
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::GetVfDisplay()" )
+
+ // Search display which is connected with camera
+ TMceSourceType preferredSource = KMceCameraSource;
+ return static_cast<CMceDisplaySink*>( MusEngMceUtils::GetMediaSink(
+ aSession, KMceDisplaySink, preferredSource, ETrue ) );
+ }
+
+// -----------------------------------------------------------------------------
+// Adds display sink to specified stream if one does not exist already.
+// Display rect is set in both cases.
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::AddDisplayL( CMceMediaStream& aStream,
+ CMceManager& aManager,
+ const TRect& aDisplayRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::AddDisplayL()" )
+
+ __ASSERT_ALWAYS( aStream.Type() == KMceVideo, User::Leave( KErrArgument ) );
+
+ CMceDisplaySink* display = static_cast<CMceDisplaySink*>(
+ MusEngMceUtils::GetMediaSink(
+ aStream,
+ KMceDisplaySink ) );
+
+ if ( !display )
+ {
+ display = CMceDisplaySink::NewLC( aManager );
+ aStream.AddSinkL( display );
+ CleanupStack::Pop( display );
+ }
+
+ display->SetDisplayRectL( aDisplayRect );
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::AddDisplayL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Adds display sink to specified stream if one does not exist already.
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::AddSpeakerL( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::AddSpeakerL()" )
+
+ __ASSERT_ALWAYS( aStream.Type() == KMceAudio, User::Leave( KErrArgument ) );
+
+ CMceSpeakerSink* speaker = static_cast<CMceSpeakerSink*>(
+ MusEngMceUtils::GetMediaSink(
+ aStream,
+ KMceSpeakerSink ) );
+
+ if ( !speaker )
+ {
+ speaker = CMceSpeakerSink::NewLC();
+ aStream.AddSinkL( speaker );
+ CleanupStack::Pop( speaker );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::AddSpeakerL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+// Disables parameter stream, its' source and all the sinks.
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::DisableStreamL( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::DisableStreamL()" )
+
+ aStream.DisableL();
+
+ if ( aStream.Source() )
+ {
+ aStream.Source()->DisableL();
+ }
+
+ for ( TInt sinkIndex = 0; sinkIndex < aStream.Sinks().Count(); ++sinkIndex )
+ {
+ aStream.Sinks()[ sinkIndex ]->DisableL();
+ }
+
+ MUS_LOG( "mus: [ENGINE] -> MusEngMceUtils::DisableStreamL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void MusEngMceUtils::DoEnableDisplayL( CMceDisplaySink& aDisplay, TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> MusEngMceUtils::DoEnableDisplayL() %d",
+ aEnable )
+
+ if ( aEnable )
+ {
+ if ( !aDisplay.IsEnabled() )
+ {
+ aDisplay.EnableL();
+ MUS_LOG( " Display enabled" )
+ }
+ else
+ {
+ MUS_LOG( " Display already enabled, ignore" )
+ }
+ }
+ else
+ {
+ if ( aDisplay.IsEnabled() )
+ {
+ aDisplay.DisableL();
+ MUS_LOG( " Display disabled" )
+ }
+ else
+ {
+ MUS_LOG( " Display already disabled, ignore" )
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- MusEngMceUtils::DoEnableDisplayL()")
+ }
+
--- a/tsrc/musenginestub/src/musengreceivesession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/src/musengreceivesession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -20,24 +20,52 @@
// USER INCLUDES
#include "musengreceivesession.h"
+#include "musengsessionobserver.h"
#include "musengreceivesessionobserver.h"
-//#include "musengmceutils.h"
-//#include "muslogger.h"
+#include "musengmceutils.h"
+#include "musenglogger.h"
+#include "mussipprofilehandler.h"
+#include "mussessionproperties.h"
// SYSTEM INCLUDES
#include <mcemanager.h>
#include <mceinsession.h>
+#include <mcestreambundle.h>
#include <mceaudiostream.h>
#include <mcevideostream.h>
#include <mcemediasource.h>
#include <mcertpsource.h>
#include <mcedisplaysink.h>
#include <mcespeakersink.h>
+#include <mceaudiocodec.h>
+#include <mceavccodec.h>
+#include <e32property.h>
#include <utf.h>
-const TInt KMaxUriLength = 512;
+const TUint8 KMusEngRtpKeepAliveTimer = 5; // this should be 30 sec, this a temporary fix
+const TUint8 KMusEngKeepAlivePayloadTypeVideoH263 = 96;
+const TUint8 KMusEngKeepAlivePayloadTypeAudio = 97;
+const TUint8 KMusEngKeepAlivePayloadTypeVideoAvc = 98;
+
+const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+const TInt KMusEngTresholdToSecondsFactor = 20;
+const TInt KMusEngOneSecondInMilliSeconds = 1000;
+// Use inactivity timer value that is a little bigger than treshold in seconds
+const TUint KMusEngInactivityTimer = KMusEngTresholdToSecondsFactor *
+ KMusEngJitterBufferTreshold +
+ KMusEngOneSecondInMilliSeconds;
+
+_LIT8( KMusEngSwisIdentifier, "Require: precondition" );
+_LIT8( KMusEngAssertedIdentity, "P-Asserted-Identity" );
+_LIT8( KMusEngBiggerSign, ">" );
+
+const TInt KMusEngSipReasonCodeBusyHere = 486;
+_LIT8( KMusEngSipReasonPhraseBusy, "Busy" );
// -----------------------------------------------------------------------------
//
@@ -45,23 +73,7 @@
//
CMusEngReceiveSession::~CMusEngReceiveSession()
{
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CMusEngReceiveSession* CMusEngReceiveSession::NewL(
- const TRect& aRect,
- MMusEngReceiveSessionObserver* aSessionObserver)
- {
- CMusEngReceiveSession* self =
- new( ELeave ) CMusEngReceiveSession( aSessionObserver, aRect );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
+ delete iRemoteDisplayName;
}
@@ -69,62 +81,155 @@
//
// -----------------------------------------------------------------------------
//
-EXPORT_C void CMusEngReceiveSession::AcceptInvitationL(
- const TBool& aAccept )
+CMusEngReceiveSession* CMusEngReceiveSession::NewL( const TRect& aRect )
{
- iAccepInvitation = aAccept;
+ MUS_LOG( "mus: [ENGINE] -> CMusEngReceiveSession::NewL(...)" )
+
+ CMusEngReceiveSession* self = new( ELeave ) CMusEngReceiveSession( aRect );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngReceiveSession::NewL(...)" )
+ return self;
}
// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngReceiveSession::SetSessionObserver(
- MMusEngReceiveSessionObserver* aSessionObserver)
- {
- iSessionObserver = aSessionObserver;
- }
-
-
-
-// -----------------------------------------------------------------------------
-//
+// From MLcSession
// -----------------------------------------------------------------------------
//
-TBool CMusEngReceiveSession::IsRtpcInactivityTimoutSupported()
-{
- return ETrue;
-}
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngReceiveSession::CMusEngReceiveSession(
- MMusEngReceiveSessionObserver* aSessionObserver,
- const TRect& aRect )
- : CMusEngMceSession( aRect )
+void CMusEngReceiveSession::EstablishLcSessionL()
{
}
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+MLcVideoPlayer* CMusEngReceiveSession::RemoteVideoPlayer()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcSession
+// -----------------------------------------------------------------------------
+//
+
+const TDesC& CMusEngReceiveSession::RemoteDisplayName()
+ {
+ return *iRemoteDisplayName;
+ }
+
// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
//
+MLcVideoPlayer::TLcVideoPlayerState CMusEngReceiveSession::LcVideoPlayerState() const
+ {
+ TLcVideoPlayerState vidPlayerState = MLcVideoPlayer::EUnavailable;
+
+ return vidPlayerState;
+ }
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
// -----------------------------------------------------------------------------
//
-void CMusEngReceiveSession::ConstructL()
+TBool CMusEngReceiveSession::LcIsPlayingL()
+ {
+ return EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngReceiveSession::LcPlayL()
{
+ // NOP
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+void CMusEngReceiveSession::LcPauseL()
+ {
+ // NOP
}
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcWindow* CMusEngReceiveSession::LcWindow()
+ {
+ return this;
+ }
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcCameraControl* CMusEngReceiveSession::LcCameraControl()
+ {
+ return NULL;
+ }
// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcFileControl* CMusEngReceiveSession::LcSourceFile()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
//
+MLcFileControl* CMusEngReceiveSession::LcDestinationFile()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcAudioControl* CMusEngReceiveSession::LcAudioControl()
+ {
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
// -----------------------------------------------------------------------------
//
-MMusEngReceiveSessionObserver* CMusEngReceiveSession::ReceiveSessionObserver()
+MLcZoomControl* CMusEngReceiveSession::LcZoomControl()
{
+ return NULL;
}
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+MLcBrightnessControl* CMusEngReceiveSession::LcBrightnessControl()
+ {
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// From MLcVideoPlayer
+// -----------------------------------------------------------------------------
+//
+RPointerArray< MLcValueControl >& CMusEngReceiveSession::LcExtensionControls()
+ {
+ return iValueControls;
+ }
+
+// End of File
--- a/tsrc/musenginestub/src/musengsession.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/src/musengsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,12 +18,9 @@
// USER INCLUDES
#include "musengsession.h"
-#include "musengsessionobserver.h"
#include "musengtelephoneutils.h"
+#include "muslogger.h"
-// SYSTEM INCLUDES
-
-//#include <e32cmn.h>
// -----------------------------------------------------------------------------
//
@@ -38,38 +35,7 @@
//
// -----------------------------------------------------------------------------
//
-EXPORT_C TRect CMusEngSession::Rect() const
- {
- return iRect;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::SetRectL( const TRect& aRect )
- {
- iRect = aRect;
- User::LeaveIfError( iErrorCode );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::EnableLoudspeakerL( TBool aEnable,
- TBool aShowDialog )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CMusEngSession::IsLoudSpeakerEnabled() const
+CMusEngSession::CMusEngSession()
{
}
@@ -78,48 +44,8 @@
//
// -----------------------------------------------------------------------------
//
-EXPORT_C TInt CMusEngSession::VolumeL() const
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// Increases CS call volume level by one.
-// Leaves if error occurs when accessing central repository.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::VolumeUpL( )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// Decreases CS call volume level by one.
-// Leaves if error occurs when accessing central repository.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CMusEngSession::VolumeDownL( )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngSession::CMusEngSession( const TRect& aRect )
- {
- iRect = aRect;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
void CMusEngSession::ConstructL() // second-phase constructor
{
- iErrorCode = KErrNone;
}
--- a/tsrc/musenginestub/src/musengsessiondurationtimer.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/src/musengsessiondurationtimer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -16,21 +16,21 @@
*/
-// USER INCLUDES
+// USER INCLUDES
#include "musengsessiondurationtimer.h"
#include "musengsessiondurationtimerobserver.h"
// -----------------------------------------------------------------------------
-//
+//
// -----------------------------------------------------------------------------
//
-CMusEngSessionDurationTimer* CMusEngSessionDurationTimer::NewL(
- MMusEngSessionDurationTimerObserver& aObserver )
+CMusEngSessionDurationTimer* CMusEngSessionDurationTimer::NewL(
+ MMusEngSessionDurationTimerObserver& aObserver )
{
- CMusEngSessionDurationTimer* self =
- new (ELeave) CMusEngSessionDurationTimer( aObserver );
+ CMusEngSessionDurationTimer* self =
+ new (ELeave) CMusEngSessionDurationTimer( aObserver );
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self) ;
@@ -39,31 +39,74 @@
// -----------------------------------------------------------------------------
-//
+//
// -----------------------------------------------------------------------------
//
CMusEngSessionDurationTimer::~CMusEngSessionDurationTimer()
{
+ Cancel();
+ iTimer.Close();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngSessionDurationTimer::Start(TInt aDelay )
+ {
+ if ( !IsActive() )
+ {
+ iTimer.After( iStatus, aDelay );
+ SetActive();
+ }
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionDurationTimer::CMusEngSessionDurationTimer(
+ MMusEngSessionDurationTimerObserver& aObserver )
+ : CActive( CActive::EPriorityStandard ),
+ iObserver( aObserver)
+ {
}
// -----------------------------------------------------------------------------
-//
+//
// -----------------------------------------------------------------------------
//
-CMusEngSessionDurationTimer::CMusEngSessionDurationTimer(
- MMusEngSessionDurationTimerObserver& aObserver )
- : iObserver( aObserver)
+void CMusEngSessionDurationTimer::ConstructL()
{
+ CActiveScheduler::Add( this );
+ User::LeaveIfError( iTimer.CreateLocal() );
}
// -----------------------------------------------------------------------------
-//
+//
// -----------------------------------------------------------------------------
//
-void CMusEngSessionDurationTimer::ConstructL()
+void CMusEngSessionDurationTimer::RunL()
{
+ if ( iStatus.Int() == KErrNone )
+ {
+ iObserver.UpdateTimerEvent();
+ }
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngSessionDurationTimer::DoCancel()
+ {
+ iTimer.Cancel();
+ }
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/src/musengsessionmanager.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "musengsessionmanager.h"
+#include <e32property.h>
+#include "musenglivesession.h"
+#include "musengreceivesession.h"
+#include "lcsession.h"
+#include "mussessionproperties.h"
+#include "lcsessionobserver.h"
+#include "lcuiprovider.h"
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager* CMusEngSessionManager::NewL( TAny* aInitParams )
+ {
+ __ASSERT_ALWAYS( aInitParams != NULL, User::Leave( KErrArgument ) );
+
+ CMusEngSessionManager* self =
+ new( ELeave )CMusEngSessionManager(
+ *reinterpret_cast< TLcEngineParams* >( aInitParams ) );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager::~CMusEngSessionManager()
+ {
+ delete iSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngSessionManager::CMusEngSessionManager(
+ TLcEngineParams& aInitParams )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngSessionManager::ConstructL()
+ {
+ TInt useCase;
+ User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid,
+ NMusSessionApi::KUseCase,
+ useCase ) );
+ iSession = CreateMusSessionL(
+ static_cast< MultimediaSharing::TMusUseCase >( useCase ) );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+MLcSession& CMusEngSessionManager::Session()
+ {
+ return *iSession;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession* CMusEngSessionManager::CreateMusSessionL(
+ MultimediaSharing::TMusUseCase aUseCase )
+ {
+ CMusEngMceSession* session = NULL;
+ switch ( aUseCase )
+ {
+ case MultimediaSharing::EMusLiveVideo:
+ {
+ session = CMusEngLiveSession::NewL( TRect() );
+ break;
+ }
+ case MultimediaSharing::EMusReceive:
+ {
+ session = CMusEngReceiveSession::NewL( TRect() );
+ break;
+ }
+ default:
+ User::Leave( KErrNotSupported );
+ break;
+ }
+ return session;
+ }
+
+// End of File
--- a/tsrc/musenginestub/src/musengtelephoneutils.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musenginestub/src/musengtelephoneutils.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -18,12 +18,21 @@
// USER
#include "musengtelephoneutils.h"
+#include "musengaudioroutingobserver.h"
+#include "muslogger.h"
// SYSTEM
-/*
#include <centralrepository.h>
-#include <telephonyinternalcrkeys.h>
-*/
+#include <telincallvolcntrlcrkeys.h>
+#include <e32property.h>
+#include <telephonydomainpskeys.h>
+#include <cphcltcommandhandler.h> // for CPhCltCommandHandler
+
+// Constants
+const TInt KMusEngMaxVolume = 10;
+const TInt KMusEngMinVolume = 0;
+
+
// -----------------------------------------------------------------------------
@@ -46,6 +55,51 @@
//
CMusEngTelephoneUtils::~CMusEngTelephoneUtils()
{
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::~CMusEngTelephoneUtils()" )
+
+ Cancel();
+
+ delete iPhoneCommandHandler;
+
+ if( iTelephonyAudioRouting ) // If 2nd phase construction has succeeded
+ {
+ CTelephonyAudioRouting::TAudioOutput currentMode =
+ iTelephonyAudioRouting->Output();
+ if( currentMode != iAudioOutputAtStartup )
+ {
+ // As going down, let audiorouting api to show notification
+ iTelephonyAudioRouting->SetShowNote( ETrue );
+ TRAPD( err, DoSetOutputL( iAudioOutputAtStartup ) );
+ MUS_LOG1( "mus: [ENGINE] final route change completed: %d", err )
+ err++;
+ }
+ }
+
+ delete iRepository;
+ delete iTelephonyAudioRouting;
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::~CMusEngTelephoneUtils()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngTelephoneUtils::AudioRoutingCanBeChanged()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::AudioRoutingCanBeChanged" )
+
+ TBool retValue = ( iTelephonyAudioRouting->Output() !=
+ CTelephonyAudioRouting::EWiredAudioAccessory &&
+ iTelephonyAudioRouting->Output() !=
+ CTelephonyAudioRouting::EBTAudioAccessory &&
+ iTelephonyAudioRouting->Output() !=
+ CTelephonyAudioRouting::ETTY );
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngTelephoneUtils::AudioRoutingCanBeChanged: %d",
+ retValue )
+
+ return retValue;
}
@@ -55,6 +109,46 @@
//
void CMusEngTelephoneUtils::LoudspeakerL( TBool aEnable, TBool aShowDialog )
{
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTelephoneUtils::LoudspeakerL(%d)",
+ aEnable )
+
+ if ( aEnable )
+ {
+ if ( iTelephonyAudioRouting->Output() ==
+ CTelephonyAudioRouting::EHandset )
+ {
+ // Disable note shown by audiorouting api as it causes
+ // application going to background for a while. Instead, display
+ // note by ourselves once setting output completes. This mechanism
+ // is needed only for loudspeaker enabling as going to background
+ // causes problems only at beginning of sharing session.
+ if ( aShowDialog )
+ {
+ iTelephonyAudioRouting->SetShowNote( EFalse );
+
+ iShowDialog = aShowDialog;
+ }
+
+ DoSetOutputL( CTelephonyAudioRouting::ELoudspeaker );
+ }
+ }
+ else
+ {
+ iTelephonyAudioRouting->SetShowNote( aShowDialog );
+
+ if ( iAudioOutputAtStartup == CTelephonyAudioRouting::ELoudspeaker )
+ {
+ DoSetOutputL( CTelephonyAudioRouting::EHandset );
+ }
+ else
+ {
+ DoSetOutputL( iAudioOutputAtStartup );
+ }
+ }
+
+
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::LoudspeakerL(...)" )
}
@@ -64,6 +158,8 @@
//
TBool CMusEngTelephoneUtils::IsLoudSpeakerEnabled() const
{
+ return ( iTelephonyAudioRouting->Output() ==
+ CTelephonyAudioRouting::ELoudspeaker );
}
@@ -74,6 +170,19 @@
//
TInt CMusEngTelephoneUtils::GetVolumeL() const
{
+ TInt currentVolume = 0;
+ if ( IsLoudSpeakerEnabled() )
+ {
+ User::LeaveIfError( iRepository->Get( KTelIncallLoudspeakerVolume,
+ currentVolume ) );
+ }
+ else
+ {
+ User::LeaveIfError( iRepository->Get( KTelIncallEarVolume,
+ currentVolume ) );
+ }
+
+ return ValidateVolume( currentVolume );
}
@@ -84,6 +193,62 @@
//
void CMusEngTelephoneUtils::SetVolumeL( TInt aVolume )
{
+ TInt newVolume = ValidateVolume( aVolume );
+
+ if ( GetVolumeL() != newVolume )
+ {
+ if ( IsLoudSpeakerEnabled() )
+ {
+ User::LeaveIfError( iRepository->Set( KTelIncallLoudspeakerVolume,
+ newVolume ) );
+ }
+ else
+ {
+ User::LeaveIfError( iRepository->Set( KTelIncallEarVolume,
+ newVolume ) );
+ }
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTelephoneUtils::MuteMicL( TBool aMute )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTelephoneUtils::MuteMicL(%d)", aMute )
+
+ if ( IsActive() )
+ {
+ MUS_LOG( "mus: [ENGINE] Cancel pending request" )
+ Cancel();
+ }
+
+ iPhoneCommandHandler->MuteMicrophone( iStatus, aMute );
+ SetActive();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::MuteMicL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngTelephoneUtils::IsMicMutedL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::IsMicMutedL()" )
+
+ TInt psVal;
+ User::LeaveIfError( RProperty::Get( KPSUidTelMicrophoneMuteStatus,
+ KTelMicrophoneMuteState,
+ psVal ) );
+
+ MUS_LOG1( "mus: [ENGINE] Mute status in PS is (%d)", psVal )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::IsMicMutedL()" )
+
+ return ( psVal == EPSTelMicMuteOn );
}
@@ -91,8 +256,122 @@
//
// -----------------------------------------------------------------------------
//
-CMusEngTelephoneUtils::CMusEngTelephoneUtils()
+void CMusEngTelephoneUtils::SetAudioRoutingObserver(
+ MMusEngAudioRoutingObserver* aObserver )
+ {
+ iAudioRoutingObserver = aObserver;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTelephoneUtils::RunL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::RunL()" )
+
+ // NOP, since we really cannot do anything but log the result
+ MUS_LOG1( "mus: [ENGINE] Asynchronous call completed with code %d",
+ iStatus.Int() )
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::RunL()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTelephoneUtils::DoCancel()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::DoCancel()" )
+
+ if ( iPhoneCommandHandler )
+ {
+ iPhoneCommandHandler->CancelAsyncRequest( EPhCltCommandMuteMic );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::DoCancel()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTelephoneUtils::AvailableOutputsChanged(
+ CTelephonyAudioRouting& /*aTelephonyAudioRouting*/ )
+ {
+ // NOP
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTelephoneUtils::OutputChanged(
+ CTelephonyAudioRouting& aTelephonyAudioRouting )
{
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::OutputChanged()" )
+
+ // Some other application has changed audio output routing. We consider
+ // this as a last will of a user and return to this state after sharing
+
+ iAudioOutputAtStartup = aTelephonyAudioRouting.Output();
+
+ MUS_LOG1( "mus: [ENGINE] New audio routing is %d", iAudioOutputAtStartup )
+
+ if ( iAudioRoutingObserver )
+ {
+ iAudioRoutingObserver->AudioRoutingChanged( EFalse );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::OutputChanged()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTelephoneUtils::SetOutputComplete(
+ CTelephonyAudioRouting& /*aTelephonyAudioRouting*/,
+ TInt aError )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::SetOutputComplete()" )
+
+ if ( aError == KErrNone && iAudioRoutingObserver )
+ {
+ // If audio routing api didn't shown note and show dialog mode is on,
+ // we know that this completion is for such setoutput call for which
+ // we need to show the note. Show note mode is turned off only in that
+ // case.
+ TBool dialogShownByUs( EFalse );
+ TBool dialogShownByAudioRouting( EFalse );
+ aError = iTelephonyAudioRouting->GetShowNote( dialogShownByAudioRouting );
+ if ( aError == KErrNone && !dialogShownByAudioRouting && iShowDialog )
+ {
+ dialogShownByUs = iShowDialog;
+ iShowDialog = EFalse;
+ }
+
+ iAudioRoutingObserver->AudioRoutingChanged( dialogShownByUs );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::SetOutputComplete()" )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTelephoneUtils::CMusEngTelephoneUtils()
+ : CActive( CActive::EPriorityStandard )
+ {
+ iAudioOutputAtStartup = CTelephonyAudioRouting::ENotActive;
}
@@ -102,6 +381,23 @@
//
void CMusEngTelephoneUtils::ConstructL()
{
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::ConstructL()" )
+
+ // Volume control
+ iRepository = CRepository::NewL( KCRUidInCallVolume );
+
+ // Audio routing control
+ iTelephonyAudioRouting = CTelephonyAudioRouting::NewL( *this );
+
+ iAudioOutputAtStartup = iTelephonyAudioRouting->Output();
+
+ // Phone
+ MUS_LOG( "mus: [ENGINE] Use static DLL" )
+ iPhoneCommandHandler = CPhCltCommandHandler::NewL();
+
+ CActiveScheduler::Add( this );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::ConstructL()" )
}
@@ -112,8 +408,38 @@
//
TInt CMusEngTelephoneUtils::ValidateVolume( const TInt aVolume ) const
{
+ if ( aVolume < KMusEngMinVolume )
+ {
+ return KMusEngMinVolume;
+ }
+ else if ( aVolume > KMusEngMaxVolume )
+ {
+ return KMusEngMaxVolume;
+ }
+ else
+ {
+ // NOP, to keep PC-Lint happy
+ }
+
+ return aVolume;
}
+// -----------------------------------------------------------------------------
+// Set output if setting is currently allowed.
+// -----------------------------------------------------------------------------
+//
+void CMusEngTelephoneUtils::DoSetOutputL(
+ CTelephonyAudioRouting::TAudioOutput aAudioOutput )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTelephoneUtils::DoSetOutputL()" )
+ if ( iAudioRoutingObserver && !iAudioRoutingObserver->AudioRouteChangeAllowed() )
+ {
+ MUS_LOG( "mus: [ENGINE] change not allowed!" )
+ User::Leave( KErrAccessDenied );
+ }
+ iTelephonyAudioRouting->SetOutputL( aAudioOutput );
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTelephoneUtils::DoSetOutputL()" )
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/src/musengtwowayrecvsession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,540 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengtwowayrecvsession.h"
+#include "musengsessionobserver.h"
+#include "musengreceivesessionobserver.h"
+#include "musunittesting.h"
+#include "musengmceutils.h"
+#include "musenglogger.h"
+#include "mussipprofilehandler.h"
+
+// SYSTEM
+#include <mcemanager.h>
+#include <mcecamerasource.h>
+#include <mcevideostream.h>
+#include <mcertpsink.h>
+#include <mcedisplaysink.h>
+#include <mcesession.h>
+#include <mcertpsource.h>
+#include <mcestreambundle.h>
+
+const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMusEngTwoWayRecvSession* CMusEngTwoWayRecvSession::NewL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect,
+ MMusEngSessionObserver& aSessionObserver,
+ MMusEngReceiveSessionObserver& aReceiveSessionObserver )
+ {
+ CMusEngTwoWayRecvSession* self = new( ELeave ) CMusEngTwoWayRecvSession(
+ aSessionObserver,
+ aReceiveSessionObserver,
+ aRemoteRect,
+ aLocalRect );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()" )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::~CMusEngTwoWayRecvSession()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::EnableDisplayL() %d",
+ aEnable )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+ MusEngMceUtils::DoEnableDisplayL( *display, aEnable );
+
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+ if ( vfDisplay )
+ {
+ MusEngMceUtils::DoEnableDisplayL( *vfDisplay, aEnable );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::EnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngMceSession::TDisplayOrientation CMusEngTwoWayRecvSession::OrientationL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::RotationL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+
+ TDisplayOrientation displayOrientation;
+ CMceDisplaySink::TRotation rotation( display->RotationL() );
+
+ MUS_LOG1( "mus: [ENGINE] MCE rotation is %d", rotation )
+
+ if ( rotation == CMceDisplaySink::ENone )
+ {
+ displayOrientation = CMusEngMceSession::EPortrait;
+ }
+ else
+ {
+ displayOrientation = CMusEngMceSession::ELandscape;
+ }
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::RotationL() %d",
+ displayOrientation )
+
+ return displayOrientation;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetOrientationL() %d",
+ aOrientation )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+
+ CMceDisplaySink::TRotation rotation = ( aOrientation == EPortrait ) ?
+ CMceDisplaySink::ENone : CMceDisplaySink::EClockwise90Degree;
+
+ display->SetRotationL( rotation );
+ if ( vfDisplay )
+ {
+ vfDisplay->SetRotationL( rotation );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetOrientationL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMusEngTwoWayRecvSession::SetRectsL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetRectsL()" )
+
+ iLocalRect = aLocalRect;
+ iRect = aRemoteRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetRectsL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMusEngTwoWayRecvSession::SetLocalRectL( const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::SetLocalRectL()" )
+
+ iLocalRect = aLocalRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::SetLocalRectL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TRect CMusEngTwoWayRecvSession::LocalRect() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::LocalRect()" )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::LocalRect()" )
+ return iLocalRect;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TMusEngCameraHandler& CMusEngTwoWayRecvSession::Camera()
+ {
+ return iCameraHandler;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+
+void CMusEngTwoWayRecvSession::RectChangedL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::RectChangedL()" )
+
+
+ // If session is not yet created, do nothing
+ if ( iSession && iSession->State() != CMceSession::ETerminated )
+ {
+ TRect remoteRect( Rect() );
+ MUS_LOG2( "mus: [ENGINE] remote tl.ix=%d tl.iy=%d",
+ remoteRect.iTl.iX, remoteRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] remote brc%d br.iy=%d",
+ remoteRect.iBr.iX, remoteRect.iBr.iY )
+ MUS_LOG2( "mus: [ENGINE] local tl.ix=%d tl.iy=%d",
+ iLocalRect.iTl.iX, iLocalRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] local br.ix=%d br.iy=%d",
+ iLocalRect.iBr.iX, iLocalRect.iBr.iY )
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplayL( *iSession );
+ display->SetDisplayRectL( remoteRect );
+
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetVfDisplay( *iSession );
+ if ( vfDisplay )
+ {
+ vfDisplay->SetDisplayRectL( iLocalRect );
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::RectChangedL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ iCameraHandler.SetSession( iSession );
+
+ // Force bandwidth line usage in sdp as it is mandatory
+ // at MT side based on GSMA VS specification IR.74. Bandwidth is set to
+ // session or to media level based on sender's way of usage. If other end
+ // is not using bandwidth attribute at all, media level is preferred.
+ SetSessionSdpLinesL( *iSession, ETrue );
+
+ CMceStreamBundle* localBundle =
+ CMceStreamBundle::NewLC( CMceStreamBundle::ELS );
+
+ const RPointerArray<CMceMediaStream>& streams = iSession->Streams();
+
+ CMceMediaStream* videoInStream = NULL;
+ CMceMediaStream* videoOutStream = NULL;
+
+ // Search interesting video streams, sendrecv is preferred
+ TBool sendRecvVideoFound( EFalse );
+ for( TInt i = 0; i < streams.Count(); ++i )
+ {
+ if ( MusEngMceUtils::IsVideoInStream( *streams[i] ) &&
+ !sendRecvVideoFound )
+ {
+ videoInStream = streams[i];
+
+ if ( streams[i]->BoundStream() )
+ {
+ videoOutStream = &streams[i]->BoundStreamL();
+ }
+ }
+ else if ( streams[i]->BoundStream() &&
+ MusEngMceUtils::IsVideoInStream( streams[i]->BoundStreamL() ) &&
+ !sendRecvVideoFound )
+ {
+ videoInStream = &streams[i]->BoundStreamL();
+
+ videoOutStream = streams[i];
+ }
+ else
+ {
+ // NOP
+ }
+
+ sendRecvVideoFound = ( videoInStream && videoOutStream );
+ }
+
+ CompleteSessionStructureAudioPartL( streams, *localBundle, videoInStream, videoOutStream );
+
+ if ( videoInStream )
+ {
+ CompleteSessionStructureInStreamL( *videoInStream, *localBundle );
+ }
+ else
+ {
+ // At least receiving video stream is required
+ User::Leave( KErrCorrupt );
+ }
+
+ if ( videoOutStream )
+ {
+ CompleteSessionStructureOutStreamL( *videoOutStream );
+ }
+
+ // Destroy bundle if it is not needed or transfer ownership
+ if ( localBundle->Streams().Count() > 1 )
+ {
+ iSession->AddBundleL( localBundle );
+ CleanupStack::Pop( localBundle );
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy( localBundle );
+ }
+
+ AdjustStreamsAndCodecsL();
+
+ iSession->UpdateL();
+
+ // Now session state is right to adjust volume
+ SetSpeakerVolumeL( VolumeL() );
+
+ iSipProfileHandler->CreateProfileL( iSession->Profile() );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::StreamStateChanged( CMceMediaStream& aStream,
+ CMceMediaSink& aSink )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::StreamStateChanged( sink )" )
+ if ( !iSession )
+ {
+ return;
+ }
+
+ MUS_ENG_LOG_STREAM_STATE( aStream )
+
+ // TODO: if display sink buffers, inform ui with some callback
+ // so that it can modify display rects accordingly
+
+ CMusEngMceSession::StreamStateChanged( aStream, aSink );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::StreamStateChanged( sink )" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::StreamStateChanged( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::StreamStateChanged()" )
+ if ( !iSession )
+ {
+ return;
+ }
+
+ MUS_ENG_LOG_STREAM_STATE( aStream )
+
+ // TODO: if receiving video stream buffers, inform ui with some callback
+ // so that it can modify display rects accordingly
+
+ CMusEngReceiveSession::StreamStateChanged( aStream );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::StreamStateChanged()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWayRecvSession::CMusEngTwoWayRecvSession(
+ MMusEngSessionObserver& aSessionObserver,
+ MMusEngReceiveSessionObserver& aReceiveSessionObserver,
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect ) :
+ CMusEngReceiveSession( aSessionObserver,
+ aReceiveSessionObserver,
+ aRemoteRect ),
+ iLocalRect( aLocalRect )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::ConstructL()" )
+
+ iCameraHandler.ReadCameraUsageKeyL();
+ CMusEngReceiveSession::ConstructL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+// When checking audio streams also not interesting streams are removed from
+// session. Stream if removed if one of following apply:
+// 1. Is not and does not contain incoming video or audio
+// 2. We already have one incoming video stream
+// 3. Stream is audio and we run operator variant where audio is
+// not allowed.
+// 4. Two-way video exists and this one is audio
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL(
+ const RPointerArray<CMceMediaStream>& aStreams,
+ CMceStreamBundle& aLocalBundle,
+ CMceMediaStream* aVideoInStream,
+ CMceMediaStream* aVideoOutStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL()" )
+
+ // Audio streams not allowed in two-way session or in operator variant
+ TBool audioAllowed( !( aVideoInStream && aVideoOutStream ) && !iOperatorVariant );
+
+ for( TInt i = 0; i < aStreams.Count(); ++i )
+ {
+ // Audio supported currently only in recvonly case
+ if ( audioAllowed &&
+ MusEngMceUtils::IsAudioInStream( *aStreams[i] ) )
+ {
+ MusEngMceUtils::AddSpeakerL( *aStreams[i] );
+
+ aLocalBundle.AddStreamL( *aStreams[i] );
+
+ // Disable possible opposite stream to indicate that sendrecv audio is
+ // not allowed.
+ if ( aStreams[i]->BoundStream() )
+ {
+ MusEngMceUtils::DisableStreamL( aStreams[i]->BoundStreamL() );
+ }
+ }
+ else if ( audioAllowed &&
+ aStreams[i]->BoundStream() &&
+ MusEngMceUtils::IsAudioInStream( aStreams[i]->BoundStreamL() ) )
+ {
+ MusEngMceUtils::AddSpeakerL( aStreams[i]->BoundStreamL() );
+
+ aLocalBundle.AddStreamL( aStreams[i]->BoundStreamL() );
+
+ // Disable opposite stream to indicate that sendrecv audio is not allowed.
+ MusEngMceUtils::DisableStreamL( *aStreams[i] );
+ }
+ else if ( aStreams[ i ] != aVideoInStream && aStreams[ i ] != aVideoOutStream )
+ {
+ iSession->RemoveStreamL( *aStreams[i] );
+
+ // Since succesfull removal of a stream has decreased the amount
+ // of streams in array by one, we have to modify the index
+ --i;
+ }
+ else
+ {
+ // NOP
+ }
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureAudioPartL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL(
+ CMceMediaStream& aVideoInStream, CMceStreamBundle& aLocalBundle )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL()" )
+
+ SetMediaSdpLinesL( aVideoInStream, ETrue );
+
+ MusEngMceUtils::AddDisplayL( aVideoInStream, *iManager, Rect() );
+
+ static_cast<CMceRtpSource*>(aVideoInStream.Source())->UpdateL(
+ KMusEngJitterBufferLength,
+ KMusEngJitterBufferTreshold );
+
+ aLocalBundle.AddStreamL( aVideoInStream );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureInStreamL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL(
+ CMceMediaStream& aVideoOutStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL()" )
+
+ SetMediaSdpLinesL( aVideoOutStream, ETrue );
+
+ CMceCameraSource* camera = NULL;
+ TRAP_IGNORE( camera = MusEngMceUtils::GetCameraL( *iSession ) )
+ if ( !camera )
+ {
+ camera = CMceCameraSource::NewLC( *iManager );
+ aVideoOutStream.SetSourceL( camera );
+ CleanupStack::Pop( camera );
+ }
+
+ camera->DisableL(); // Start session in pause mode.
+
+ iCameraHandler.InitializeL( *camera );
+
+ CMceVideoStream* vfStream = CMceVideoStream::NewLC();
+
+ vfStream->SetSourceL( aVideoOutStream.Source() );
+
+ // Complete stream
+ MusEngMceUtils::AddDisplayL( *vfStream, *iManager, LocalRect() );
+
+ iSession->AddStreamL( vfStream );
+ CleanupStack::Pop( vfStream );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWayRecvSession::CompleteSessionStructureOutStreamL()" )
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/src/musengtwowaysession.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,476 @@
+/*
+* 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:
+*
+*/
+
+
+// USER
+#include "musengtwowaysession.h"
+#include "musengsessionobserver.h"
+#include "musenglivesessionobserver.h"
+#include "musunittesting.h"
+#include "musengmceutils.h"
+#include "musenglogger.h"
+#include "musengtwowaysessionobserver.h"
+
+// SYSTEM
+#include <mcemanager.h>
+#include <mcecamerasource.h>
+#include <mcevideostream.h>
+#include <mcertpsink.h>
+#include <mcedisplaysink.h>
+#include <mcesession.h>
+#include <mcertpsource.h>
+
+const TInt KMusEngJitterBufferLength = 51; //Must be bigger than treshold
+// Using following value increases treshold buffer to 1 second from
+// default 100 ms
+const TInt KMusEngJitterBufferTreshold = 50;
+
+const TUint32 KMusEngTwoWayReceivingActivityTimeout = 3000; // 3 seconds
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CMusEngTwoWaySession* CMusEngTwoWaySession::NewL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect,
+ MMusEngSessionObserver& aSessionObserver,
+ MMusEngOutSessionObserver& aOutSessionObserver,
+ MMusEngLiveSessionObserver& aLiveSessionObserver,
+ MMusEngTwoWaySessionObserver& aTwoWayObserver )
+ {
+ CMusEngTwoWaySession* self = new( ELeave ) CMusEngTwoWaySession(
+ aSessionObserver,
+ aOutSessionObserver,
+ aLiveSessionObserver,
+ aTwoWayObserver,
+ aRemoteRect,
+ aLocalRect );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession::~CMusEngTwoWaySession()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::~CMusEngTwoWaySession()" )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::~CMusEngTwoWaySession()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::EnableDisplayL( TBool aEnable )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWaySession::EnableDisplayL() %d",
+ aEnable )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplay( *iSession );
+ if ( display )
+ {
+ MusEngMceUtils::DoEnableDisplayL( *display, aEnable );
+ }
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetDisplayL( *iSession, ETrue );
+ MusEngMceUtils::DoEnableDisplayL( *vfDisplay, aEnable );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::EnableDisplayL()")
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::SetOrientationL( TDisplayOrientation aOrientation )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWaySession::SetOrientationL() %d",
+ aOrientation )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplay( *iSession );
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetDisplayL( *iSession, ETrue );
+
+ CMceDisplaySink::TRotation rotation = ( aOrientation == EPortrait ) ?
+ CMceDisplaySink::ENone : CMceDisplaySink::EClockwise90Degree;
+
+ vfDisplay->SetRotationL( rotation );
+ if ( display )
+ {
+ display->SetRotationL( rotation );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetOrientationL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::RecordL( TBool aRecord )
+ {
+ MUS_LOG1( "mus: [ENGINE] -> CMusEngTwoWaySession::RecordL( %d )", aRecord )
+
+ User::Leave( KErrNotSupported );
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusEngTwoWaySession::RecordL( %d )", aRecord )
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusEngTwoWaySession::IsRecording()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::IsRecording()" )
+
+ return EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMusEngTwoWaySession::SetRectsL(
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SetRectsL()" )
+
+ iLocalRect = aLocalRect;
+ iRect = aRemoteRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetRectsL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMusEngTwoWaySession::SetLocalRectL( const TRect& aLocalRect )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::SetLocalRectL()" )
+
+ iLocalRect = aLocalRect;
+ RectChangedL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::SetLocalRectL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TRect CMusEngTwoWaySession::LocalRect() const
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::LocalRect()" )
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::LocalRect()" )
+ return iLocalRect;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::RectChangedL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::RectChangedL()" )
+
+ // If session is not yet created, do nothing
+ if ( iSession && iSession->State() != CMceSession::ETerminated )
+ {
+ TRect remoteRect( Rect() );
+ MUS_LOG2( "mus: [ENGINE] remote tl.ix=%d tl.iy=%d",
+ remoteRect.iTl.iX, remoteRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] remote br.ix=%d br.iy=%d",
+ remoteRect.iBr.iX, remoteRect.iBr.iY )
+ MUS_LOG2( "mus: [ENGINE] local tl.ix=%d tl.iy=%d",
+ iLocalRect.iTl.iX, iLocalRect.iTl.iY )
+ MUS_LOG2( "mus: [ENGINE] local br.ix=%d br.iy=%d",
+ iLocalRect.iBr.iX, iLocalRect.iBr.iY )
+
+ CMceDisplaySink* display = MusEngMceUtils::GetReceivingDisplay( *iSession );
+ if ( display )
+ {
+ display->SetDisplayRectL( remoteRect );
+ }
+ CMceDisplaySink* vfDisplay = MusEngMceUtils::GetDisplayL( *iSession, ETrue );
+ vfDisplay->SetDisplayRectL( iLocalRect );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::RectChangedL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::CompleteSessionStructureL(
+ CMceStreamBundle& /*aLocalBundle*/ )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::CompleteSessionStructureL()" )
+
+ __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
+
+ iCameraHandler.SetSession( iSession );
+
+ // Create outgoing video stream
+ CMceVideoStream* videoStream = CMceVideoStream::NewLC();
+
+ CMceRtpSink* rtpsink = CMceRtpSink::NewLC();
+ videoStream->AddSinkL( rtpsink );
+ CleanupStack::Pop( rtpsink );
+
+ CMceCameraSource* camera = CMceCameraSource::NewLC( *iManager );
+ camera->DisableL(); // Start session in pause mode.
+
+ iCameraHandler.InitializeL( *camera );
+
+ videoStream->SetSourceL( camera );
+ CleanupStack::Pop( camera );
+
+ // Create incoming video stream
+ CMceVideoStream* videoInStream = CMceVideoStream::NewL();
+ CleanupStack::PushL( videoInStream );
+
+ MusEngMceUtils::AddDisplayL( *videoInStream, *iManager, Rect() );
+
+ CMceRtpSource* rtpSource = CMceRtpSource::NewLC( KMusEngJitterBufferLength,
+ KMusEngJitterBufferTreshold );
+ videoInStream->SetSourceL( rtpSource );
+ CleanupStack::Pop( rtpSource );
+
+ videoStream->BindL( videoInStream );
+ CleanupStack::Pop( videoInStream );
+
+ iSession->AddStreamL( videoStream );
+ CleanupStack::Pop( videoStream );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::CompleteSessionStructureL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::AddDisplayL( CMceMediaStream& aStream )
+ {
+ MusEngMceUtils::AddDisplayL( aStream,
+ *iManager,
+ iLocalRect );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::StreamStateChanged( CMceMediaStream& aStream )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::StreamStateChanged()" )
+ if ( !iSession )
+ {
+ return;
+ }
+
+ MUS_ENG_LOG_STREAM_STATE( aStream )
+
+ if ( aStream.Type() == KMceVideo &&
+ aStream.Source() &&
+ aStream.Source()->Type() == KMceRTPSource )
+ {
+ if ( aStream.State() == CMceMediaStream::EStreaming )
+ {
+ ReceivingStarted();
+ }
+ else if ( aStream.State() == CMceMediaStream::EBuffering )
+ {
+ iBuffered = ETrue;
+ }
+ }
+
+ CMusEngMceSession::StreamStateChanged( aStream );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::StreamStateChanged()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::InactivityTimeout( CMceMediaStream& aStream,
+ CMceRtpSource& /*aSource*/ )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::InactivityTimeout()" )
+
+ if ( aStream.Type() == KMceVideo )
+ {
+ ReceivingStopped();
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::InactivityTimeout()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::HandleSessionStateChanged(
+ CMceSession& aSession,
+ TInt aStatusCode,
+ const TDesC8& aReasonPhrase )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::HandleSessionStateChanged" )
+
+ MUS_ENG_LOG_SESSION_STATE_AND_STATUS( aSession, aStatusCode, aReasonPhrase )
+
+ TBool consumed( EFalse );
+ if ( iSession &&
+ iSession == &aSession &&
+ aSession.State() == CMceSession::EEstablished )
+ {
+ // TODO: if receiving stream is disabled, inform ui with some callback
+ // that it can modify display rects accordingly and continue with
+ // session.
+ CMceVideoStream* stream = NULL;
+ CMceVideoStream* streamout = NULL;
+ TRAPD( err, stream = MusEngMceUtils::GetVideoInStreamL( *iSession ) );
+ TRAPD( errout, streamout = MusEngMceUtils::GetVideoOutStreamL( *iSession ) );
+ if ( err == KErrNone && stream && stream->IsEnabled() )
+ {
+ if ( errout != KErrNone || !streamout || !streamout->IsEnabled() )
+ {
+ MUS_LOG( "mus: [ENGINE] sendrecv downgraded to recvonly, terminate!" )
+ consumed = ETrue;
+ iSessionObserver.SessionFailed();
+ }
+ }
+ else
+ {
+ if ( errout == KErrNone && streamout && streamout->IsEnabled() )
+ {
+ MUS_LOG( "mus: [ENGINE] sendrecv downgraded to sendonly, continue!" )
+ }
+ }
+ }
+
+ if ( !consumed )
+ {
+ CMusEngLiveSession::HandleSessionStateChanged( aSession,
+ aStatusCode,
+ aReasonPhrase );
+ }
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::HandleSessionStateChanged" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngTwoWaySession::CMusEngTwoWaySession(
+ MMusEngSessionObserver& aSessionObserver,
+ MMusEngOutSessionObserver& aOutSessionObserver,
+ MMusEngLiveSessionObserver& aLiveSessionObserver,
+ MMusEngTwoWaySessionObserver& aTwoWayObserver,
+ const TRect& aRemoteRect,
+ const TRect& aLocalRect ) :
+ CMusEngLiveSession( aSessionObserver,
+ aOutSessionObserver,
+ aLiveSessionObserver,
+ aRemoteRect,
+ KNullDesC ),
+ iTwoWayObserver( aTwoWayObserver ),
+ iLocalRect( aLocalRect )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::ConstructL()" )
+
+ CMusEngLiveSession::ConstructL();
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::ReceivingStarted()
+ {
+ if ( iSession && !iReceiving && iBuffered )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::ReceivingStarted()" )
+
+ TInt err( KErrNone );
+ CMceMediaSource* source = NULL;
+ TRAP( err, source =
+ MusEngMceUtils::GetVideoInStreamL( *iSession )->Source() );
+ if ( source && source->Type() == KMceRTPSource )
+ {
+ CMceRtpSource* rtpSource = static_cast<CMceRtpSource*>( source );
+ TRAP( err, rtpSource->EnableInactivityTimerL(
+ KMusEngTwoWayReceivingActivityTimeout ) )
+ }
+
+ if ( err != KErrNone )
+ {
+ MUS_LOG1("mus: [ENGINE] ReceivingStarted failed %d", err)
+ iSessionObserver.SessionFailed();
+ }
+ else
+ {
+ iReceiving = ETrue;
+ iTwoWayObserver.ReceivingStateChanged( ETrue );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::ReceivingStarted()" )
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngTwoWaySession::ReceivingStopped()
+ {
+ if ( iReceiving )
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusEngTwoWaySession::ReceivingStopped()" )
+
+ iReceiving = EFalse;
+ iTwoWayObserver.ReceivingStateChanged( EFalse );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusEngTwoWaySession::ReceivingStopped()" )
+ }
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/src/musenguriparser.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,281 @@
+/*
+* Copyright (c) 2005-2006 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: Parser for recipient's address
+*
+*/
+
+
+#include "musenguriparser.h"
+#include "mussettings.h"
+#include "muslogger.h"
+
+#include <uri8.h>
+#include <charconv.h>
+//#include <f32file.h>
+#include <utf.h>
+#include <collate.h>
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// UTF7 is not working, since it converts + as +-
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TMusEngUriParser::TMusEngUriParser( const TDesC16& aUri )
+ :iUriType( ENotParsed )
+ {
+ TBuf8<KMaxUriLength> buf;
+
+ if ( CnvUtfConverter::ConvertFromUnicodeToUtf8( buf, aUri ) == 0 )
+ {
+ iUri = buf;
+ }
+ else
+ {
+ iUri = KNullDesC8();
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TMusEngUriParser::TMusEngUriType TMusEngUriParser::UriType()
+ {
+ return iUriType;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* TMusEngUriParser::GetUri8L()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::GetUri8L()" )
+
+ __ASSERT_ALWAYS( UriType() != TMusEngUriParser::ENotParsed,
+ User::Leave( KErrNotReady ) );
+
+ HBufC8* uri8 = iUri.AllocL();
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngUriParser::GetUri8L()" )
+
+ return uri8;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC16* TMusEngUriParser::GetUri16L( TBool aPrefix )
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::GetUri16L()" )
+
+ __ASSERT_ALWAYS( UriType() != TMusEngUriParser::ENotParsed,
+ User::Leave( KErrNotReady ) );
+
+ HBufC16* uri16 = NULL;
+
+ if ( aPrefix )
+ {
+ uri16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( iUri );
+ }
+ else
+ {
+ uri16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L(
+ iUri.Mid( KMusEngTelPrefix().Length() ) );
+ }
+
+ MUS_LOG( "mus: [ENGINE] <- TMusEngUriParser::GetUri16L()" )
+
+ return uri16;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMusEngUriParser::ParseUriL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL()" )
+
+ if ( iUri.Find( KMusEngAtSign ) >= 0 ) // Sip uri
+ {
+ HandleSipUriL();
+ }
+ else if ( iUri.Find( KMusEngPlusSign ) >= 0 ) // Tel uri
+ {
+ HandleTelUriL();
+ }
+ else
+ {
+ // check for variant
+ if ( MultimediaSharingSettings::OperatorVariantSettingL()
+ != MusSettingsKeys::EOperatorSpecific )
+ {// basic behaviour
+ MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL() \
+ normal behaviour" )
+ User::Leave( KErrCorrupt );
+ }
+ else
+ { // variant behaviour(local tel uri)
+ HandleLocalTelUriL();
+ }
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngUriParser::HandleSipUriL()
+ {
+ if ( iUri.FindF( KMusEngTelPrefix() ) == 0 )
+ {
+ // SIP uri with prefix "tel:"
+ User::Leave( KErrCorrupt );
+ }
+ else if ( iUri.FindF( KMusEngSipPrefix() ) != 0 )
+ {
+ // SIP uri without prefix
+ if ( iUri.Length() + KMusEngSipPrefix().Length() <=
+ KMaxUriLength )
+ {
+ iUri.Insert( 0, KMusEngSipPrefix() );
+ }
+ else
+ {
+ User::Leave( KErrCorrupt );
+ }
+ }
+ else
+ {
+ // SIP uri with prefix
+ iUri.Replace( 0, KMusEngSipPrefix().Length(), KMusEngSipPrefix() );
+ }
+
+ TUriParser8 parser;
+
+ User::LeaveIfError( parser.Parse( iUri ) );
+
+ User::LeaveIfError( parser.Validate() );
+
+ iUriType = TMusEngUriParser::ESip;
+ }
+
+
+
+
+// -----------------------------------------------------------------------------
+//
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngUriParser::HandleTelUriL()
+ {
+ if ( iUri.FindF( KMusEngTelPrefix() ) != 0 )
+ {
+ // Tel uri without prefix
+ if ( iUri.Length() + KMusEngTelPrefix().Length() <=
+ KMaxUriLength )
+ {
+ iUri.Insert( 0, KMusEngTelPrefix() );
+ }
+ else
+ {
+ User::Leave( KErrCorrupt );
+ }
+ }
+ else
+ {
+ //Tel uri with prefix
+ iUri.Replace( 0, KMusEngTelPrefix().Length(), KMusEngTelPrefix() );
+ }
+
+ TInt index = KMusEngTelPrefix().Length() + KMusEngPlusSign().Length();
+
+ while ( index < iUri.Length() )
+ {
+ TChar character = iUri[ index ];
+ if ( !character.IsDigit() )
+ {
+ User::Leave( KErrCorrupt );
+ }
+ ++index;
+ }
+
+ iUriType = TMusEngUriParser::ETel;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+//
+// -----------------------------------------------------------------------------
+//
+void TMusEngUriParser::HandleLocalTelUriL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL() \
+ variant behaviour" )
+ if ( iUri.FindF( KMusEngTelPrefix() ) != 0 )
+ {
+ // local tel uri without prefix
+ if ( iUri.Length() + KMusEngTelPrefix().Length() <=
+ KMaxUriLength )
+ {
+ iUri.Insert( 0, KMusEngTelPrefix() );
+ }
+ else
+ {
+ User::Leave( KErrCorrupt );
+ }
+ }
+ else
+ {
+ //Tel uri with prefix
+ iUri.Replace(
+ 0,
+ KMusEngTelPrefix().Length(),
+ KMusEngTelPrefix() );
+ }
+
+ TInt index = KMusEngTelPrefix().Length();
+
+ // check if all chars are digits
+ while ( index < iUri.Length() )
+ {
+ TChar character = iUri[ index ];
+ if ( !character.IsDigit() )
+ {
+ User::Leave( KErrCorrupt );
+ }
+ ++index;
+ }
+
+ iUriType = TMusEngUriParser::ETel;
+ }
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/musenginestub/src/mussipprofilehandler.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,448 @@
+/*
+* Copyright (c) 2005-2006 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: Utilities to get and set profile used with SWIS.
+* Part of : Mus For S60 v3.2
+* Description : Utilities to get and set profile used with SWIS.
+* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out.
+*
+*/
+
+
+// USER
+#include "mussipprofilehandler.h"
+#include "musuid.hrh"
+#include "muslogger.h"
+#include "mussipprofileuser.h"
+
+// SYSTEM
+#include <sip.h>
+#include <sipservertransaction.h>
+#include <sipinvitedialogassoc.h>
+#include <sipprofile.h>
+#include <sipprofileregistry.h>
+#include <sipprofilealrcontroller.h>
+#include <uri8.h>
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusSipProfileHandler* CMusSipProfileHandler::NewL( MMusSipProfileUser& aUser )
+ {
+ CMusSipProfileHandler* self =
+ new (ELeave) CMusSipProfileHandler( aUser );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusSipProfileHandler::CMusSipProfileHandler( MMusSipProfileUser& aUser )
+ : iUser( aUser )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::ConstructL()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusSipProfileHandler::ConstructL()" )
+
+ // Use NULL Uid since we do not want to receive any requests.
+ // All requests should be handled by MCE.
+ iSip = CSIP::NewL( TUid::Null(), *this );
+ iProfileRegistry = CSIPProfileRegistry::NewL( *iSip, *this );
+ iProfileAlrController =
+ CSipProfileAlrController::NewL( *iProfileRegistry , *this );
+
+ MUS_LOG( "mus: [ENGINE] <- CMusSipProfileHandler::ConstructL()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusSipProfileHandler::~CMusSipProfileHandler()
+ {
+ delete iProfileAlrController;
+ delete iSipProfile;
+ delete iProfileRegistry;
+ delete iSip;
+ MUS_LOG( "mus: [ENGINE] CMusSipProfileHandler::~CMusSipProfileHandler()" )
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::CreateProfileL( TUint32 aSipProfileId )
+ {
+ CSIPProfile* profile( NULL );
+ if ( aSipProfileId != 0 )
+ {
+ profile = iProfileRegistry->ProfileL( aSipProfileId );
+ }
+ else
+ {
+ profile = iProfileRegistry->DefaultProfileL();
+ }
+
+ delete iSipProfile;
+ iSipProfile = profile;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CSIPProfile* CMusSipProfileHandler::Profile()
+ {
+ return iSipProfile;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CUri8* CMusSipProfileHandler::UserFromProfileLC()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusSipProfileHandler::UserFromProfileLC()" );
+
+ __ASSERT_ALWAYS( iSipProfile != NULL, User::Leave( KErrNotReady ) );
+
+ const MDesC8Array* aors = NULL;
+ User::LeaveIfError( iSipProfile->GetParameter( KSIPRegisteredAors, aors ) );
+ __ASSERT_ALWAYS( aors && aors->MdcaCount() > 0,
+ User::Leave( KErrArgument ) );
+
+ TUriParser8 parser;
+ User::LeaveIfError( parser.Parse( aors->MdcaPoint( 0 ) ) );
+ MUS_LOG( "mus: [ENGINE] <- CMusSipProfileHandler::UserFromProfileLC()" )
+
+ return CUri8::NewLC( parser );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::RefreshIapAvailabilities()
+ {
+ TRAP_IGNORE( iProfileAlrController->RefreshIapAvailabilityL( ProfileId() ) )
+ }
+
+
+// -----------------------------------------------------------------------------
+// This function should never be called before creating a profile, but such
+// a situation will be considered as pending registration.
+// -----------------------------------------------------------------------------
+//
+TBool CMusSipProfileHandler::IsRegistered()
+ {
+ MUS_LOG( "mus: [ENGINE] -> CMusSipProfileHandler::IsRegistered()" )
+
+ TBool profileRegistered = EFalse;
+ if ( iSipProfile )
+ {
+ iSipProfile->GetParameter( KSIPProfileRegistered, profileRegistered );
+ }
+
+ MUS_LOG1( "mus: [ENGINE] <- CMusSipProfileHandler::IsRegistered( %d )",
+ profileRegistered )
+
+ return profileRegistered;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::ProfileRegistryEventOccurred(
+ TUint32 aProfileId,
+ MSIPProfileRegistryObserver::TEvent aEvent )
+ {
+ if ( iSipProfile && aProfileId == ProfileId() )
+ {
+ switch ( aEvent )
+ {
+ case MSIPProfileRegistryObserver::EProfileRegistered:
+ {
+ iUser.ProfileRegistered();
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::ProfileRegistryErrorOccurred(
+ TUint32 /*aProfileId*/,
+ TInt /*aError*/)
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::IncomingRequest(
+ TUint32 /*aIapId*/,
+ CSIPServerTransaction* aTransaction )
+ {
+ // Ownership transferred, should not ever be called by SIP though
+ delete aTransaction;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::TimedOut(
+ CSIPServerTransaction& /*aTransaction*/ )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::IncomingRequest(
+ CSIPServerTransaction* aTransaction )
+ {
+ // Ownership transferred, should not ever be called by SIP though
+ delete aTransaction;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::IncomingRequest(
+ CSIPServerTransaction* aTransaction,
+ CSIPDialog& /*aDialog*/)
+ {
+ // Ownership transferred, should not ever be called by SIP though
+ delete aTransaction;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::IncomingResponse(
+ CSIPClientTransaction& /*aTransaction*/)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::IncomingResponse(
+ CSIPClientTransaction& /*aTransaction*/,
+ CSIPDialogAssocBase& /*aDialogAssoc*/)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::IncomingResponse(
+ CSIPClientTransaction& /*aTransaction*/,
+ CSIPInviteDialogAssoc* aDialogAssoc)
+ {
+ // Ownership transferred, should not ever be called by SIP though
+ delete aDialogAssoc;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::IncomingResponse(
+ CSIPClientTransaction& /*aTransaction*/,
+ CSIPRegistrationBinding& /*aRegistration*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::ErrorOccured(
+ TInt /*aError*/,
+ CSIPTransactionBase& /*aTransaction*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::ErrorOccured(
+ TInt /*aError*/,
+ CSIPClientTransaction& /*aTransaction*/,
+ CSIPRegistrationBinding& /*aRegistration*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::ErrorOccured(
+ TInt /*aError*/,
+ CSIPTransactionBase& /*aTransaction*/,
+ CSIPDialogAssocBase& /*aDialogAssoc*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::ErrorOccured(
+ TInt /*aError*/,
+ CSIPRefresh& /*aSIPRefresh*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::ErrorOccured(
+ TInt /*aError*/,
+ CSIPRegistrationBinding& /*aRegistration*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::ErrorOccured(
+ TInt /*aError*/,
+ CSIPDialogAssocBase& /*aDialogAssoc*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::InviteCompleted(
+ CSIPClientTransaction& /*aTransaction*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::InviteCanceled(
+ CSIPServerTransaction& /*aTransaction*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::ConnectionStateChanged(
+ CSIPConnection::TState /*aState*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CMusSipProfileHandler::AlrEvent
+// From MSipProfileAlrObserver
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::AlrEvent(
+ MSipProfileAlrObserver::TEvent aEvent,
+ TUint32 aProfileId,
+ TUint32 /*aSnapId*/,
+ TUint32 aIapId )
+ {
+ if ( aEvent == MSipProfileAlrObserver::EIapAvailable )
+ {
+ if ( iSipProfile &&
+ aProfileId == ProfileId() &&
+ !iUser.IsRoamingBetweenAPsAllowed() )
+ {
+ // Disallow roaming only if the profile is used by MuS and
+ // the MuS has an ongoing session
+ TRAP_IGNORE(
+ iProfileAlrController->DisallowMigrationL( aProfileId, aIapId ) )
+ }
+ else
+ {
+ // In all other cases allow roaming
+ TRAP_IGNORE(
+ iProfileAlrController->AllowMigrationL( aProfileId, aIapId ) )
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CMusSipProfileHandler::AlrError
+// From MSipProfileAlrObserver
+// -----------------------------------------------------------------------------
+//
+void CMusSipProfileHandler::AlrError(
+ TInt /*aError*/,
+ TUint32 /*aProfileId*/,
+ TUint32 /*aSnapId*/,
+ TUint32 /*aIapId*/ )
+ {
+ // Ignore ALR related errors as they should not happen
+ // as migration is not allowed when
+ // the instance of CMusSipProfileHandler exists
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TUint32 CMusSipProfileHandler::ProfileId() const
+ {
+ TUint32 sipProfileId( 0 );
+ if ( iSipProfile )
+ {
+ iSipProfile->GetParameter( KSIPProfileId, sipProfileId );
+ }
+ return sipProfileId;
+ }
--- a/tsrc/musmanagerstub/inc/musmanagerstub.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/musmanagerstub/inc/musmanagerstub.h Tue Aug 31 15:12:07 2010 +0300
@@ -46,6 +46,7 @@
{
ESipOptions = 0x1028238D,
ESipInviteDesired = 0x10282391,
+ ESipInviteDesired2WayVideo = 0x10282392,
ESipInviteNotDesired = 0x1028238D
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/data/mustestapp.rss Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,218 @@
+/*
+* Copyright (c) 2002-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: This file contains all the resources for the AiwTestApp.
+* Initial content was generated by Series 60 AppWizard.
+*
+*/
+
+// RESOURCE IDENTIFIER
+NAME AIWT // 4 letter ID
+
+// INCLUDES
+#include <eikon.rh>
+#include <avkon.rsg>
+#include <avkon.rh>
+#include <avkon.mbg>
+#include <avkon.loc>
+#include <aiwcommon.rh>
+#include <aiwcommon.hrh>
+#include <appinfo.rh>
+#include <data_caging_paths_strings.hrh>
+
+#include "aiwtestapp.hrh"
+#include "aiwtestapp.loc"
+
+// RESOURCE DEFINITIONS
+RESOURCE RSS_SIGNATURE { }
+RESOURCE TBUF { buf = "MusTestApp"; }
+
+//----------------------------------------------------
+//
+// eik_app_info
+//
+//----------------------------------------------------
+//
+RESOURCE EIK_APP_INFO
+ {
+ hotkeys = r_aiwtest_hotkeys;
+ menubar = r_aiwtest_menubar;
+ cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
+ }
+
+//----------------------------------------------------
+//
+// r_aiwtest_hotkeys
+//
+//----------------------------------------------------
+//
+RESOURCE HOTKEYS r_aiwtest_hotkeys
+ {
+ control =
+ {
+ HOTKEY { command = EAknCmdExit; key='e'; }
+ };
+ }
+
+//----------------------------------------------------
+//
+// r_aiwtest_menubar
+//
+//----------------------------------------------------
+//
+RESOURCE MENU_BAR r_aiwtest_menubar
+ {
+ titles =
+ {
+ MENU_TITLE { menu_pane = r_aiwtest_menu; txt = "File"; }
+ //MENU_TITLE { menu_pane = r_umasettings_main_menu; txt = "File"; }
+ };
+ }
+
+//----------------------------------------------------
+//
+// r_aiwtest_menu
+//
+//----------------------------------------------------
+//
+RESOURCE MENU_PANE r_aiwtest_menu
+ {
+ items =
+ {
+ MENU_ITEM { command = 1000; txt = "Manager: Availability inv."; },
+ MENU_ITEM { command = 1001; txt = "Manager: Start live"; },
+ MENU_ITEM { command = 1002; txt = "Direct: Availability inv."; },
+ MENU_ITEM { command = 100000; txt = "Video Sharing"; cascade = AIW_INTELLIGENT_CASCADE_ID; },
+ //MENU_ITEM { command = 100001; txt = "Video Sharing"; cascade = AIW_INTELLIGENT_CASCADE_ID| AIW_LOCK_SUBMENU_TITLE; },
+ MENU_ITEM { command = EAknCmdExit; txt = qtn_options_exit; }
+ };
+ }
+
+// -----------------------------------------------------------------------------
+//
+// r_core_info_message_query
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_core_info_message_query
+ {
+ flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
+ buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+ items=
+ {
+ DLG_LINE
+ {
+ type = EAknCtPopupHeadingPane;
+ id = EAknMessageQueryHeaderId;
+ control = AVKON_HEADING
+ {
+ label = "Core info";
+ headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
+ };
+ },
+ DLG_LINE
+ {
+ type = EAknCtMessageQuery;
+ id = EAknMessageQueryContentId;
+ control = AVKON_MESSAGE_QUERY
+ {
+ message = "a";
+ };
+ }
+ };
+ }
+
+// -----------------------------------------------------------------------------
+//
+// r_aiwtest_localisable_app_info
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE LOCALISABLE_APP_INFO r_aiwtest_localisable_app_info
+ {
+ short_caption = "MusTestApp";
+ caption_and_icon =
+ CAPTION_AND_ICON_INFO
+ {
+ caption = "MusTestApp";
+#ifdef __SCALABLE_ICONS
+ number_of_icons = 1;
+#else
+ number_of_icons = 2;
+#endif
+ };
+ }
+
+// -----------------------------------------------------------------------------
+//
+// r_aiwtestapp_submenu
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_PANE r_aiwtestapp_submenu
+ {
+ items =
+ {
+ MENU_ITEM { command = 100000; txt = ""; }
+ };
+ }
+
+// -----------------------------------------------------------------------------
+//
+// r_aiwtestapp_interest
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AIW_INTEREST r_aiwtestapp_interest
+ {
+ items =
+ {
+ // This application is interested in printing jpeg images
+ // from menu.
+ AIW_CRITERIA_ITEM
+ {
+ id = 100000;
+ serviceCmd = KAiwCmdShare;
+ serviceClass = KAiwClassMenu;
+ contentType = "*";
+ defaultProvider = 0x10282389;
+ maxProviders = 1;
+ }
+ };
+ }
+
+// -----------------------------------------------------------------------------
+//
+// r_aiwtestapp_baseinterest
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AIW_INTEREST r_aiwtestapp_baseinterest
+ {
+ items =
+ {
+ // This application is interested in printing jpeg images
+ // from menu.
+ AIW_CRITERIA_ITEM
+ {
+ id = 100000;
+ serviceCmd = KAiwCmdShare;
+ serviceClass = KAiwClassMenu;
+ contentType = "*";
+ defaultProvider = 0x10282389;
+ maxProviders = 1;
+ }
+ };
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/data/mustestapp_reg.rss Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+#include <appinfo.rh>
+#include <mustestapp.rsg>
+#include <data_caging_paths_strings.hrh>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x1028239B // Define your application UID here
+
+RESOURCE APP_REGISTRATION_INFO
+ {
+ app_file = "mustestapp";
+ localisable_resource_file = APP_RESOURCE_DIR"\\MusTestApp";
+ localisable_resource_id = R_AIWTEST_LOCALISABLE_APP_INFO;
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/group/AiwTestApp.mmp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+// To get the APP_LAYER_SYSTEMINCLUDE-definition
+#include <platform_paths.hrh>
+
+#include <bldvariant.hrh>
+#include <data_caging_paths.hrh>
+
+TARGET musTestApp.exe
+TARGETTYPE exe
+
+UID 0x100039CE 0x1028239B
+VENDORID VID_DEFAULT
+CAPABILITY CAP_APPLICATION
+
+EPOCSTACKSIZE 0xF000
+
+
+
+SOURCEPATH ../../../common/src
+SOURCE muscallmonitor.cpp
+SOURCE muscalleventmonitor.cpp
+SOURCE musconferencecallmonitor.cpp
+
+SOURCEPATH ../src
+SOURCE AiwTestAppApp.cpp
+SOURCE AiwTestAppAppUi.cpp
+SOURCE AiwTestAppContainer.cpp
+SOURCE AiwTestAppDocument.cpp
+
+
+START RESOURCE ../data/musTestApp.rss
+HEADER
+TARGETPATH APP_RESOURCE_DIR
+END
+
+START RESOURCE ../data/musTestApp_reg.rss
+DEPENDS mustestapp.rsg
+TARGETPATH /private/10003a3f/apps
+END
+
+
+
+LANG SC
+
+USERINCLUDE ../inc
+USERINCLUDE ../../../common/inc
+
+// Default system include paths for application layer modules.
+APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/ecom
+
+//SOURCEPATH ../data
+//DOCUMENT AIWTestApp.rss
+//DOCUMENT AIWTestApp_caption.rss
+
+LIBRARY apparc.lib
+LIBRARY avkon.lib
+LIBRARY bafl.lib
+LIBRARY cone.lib
+LIBRARY ecom.lib
+LIBRARY eikcoctl.lib
+LIBRARY eikcore.lib
+LIBRARY euser.lib
+LIBRARY fbscli.lib
+LIBRARY efsrv.lib
+LIBRARY aknskins.lib // for skin background
+LIBRARY CdlEngine.lib // for scalable ui
+LIBRARY ServiceHandler.lib
+LIBRARY flogger.lib
+LIBRARY centralrepository.lib
+LIBRARY etel.lib
+LIBRARY etelmm.lib
+
+LIBRARY musmanagerclient.lib
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/group/bld.inf Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+PRJ_PLATFORMS
+// Specify the platforms your component needs to be built for here
+DEFAULT
+
+PRJ_EXPORTS
+// Specify the source file followed by its destination here
+// copy will be used to copy the source file to its destination
+// If there's no destination then the source file will be copied
+// to the same name in /epoc32/include
+
+PRJ_MMPFILES
+// Specify the .mmp files required for building the important component
+// releasables.
+//
+// Specify "tidy" if the component you need to build doesn't need to be
+// released. Specify "ignore" if the MMP file exists but should be
+// ignored.
+AiwTestApp.mmp
+
+PRJ_TESTMMPFILES
+// specify the .mmp files required for building any test programs here
+
+PRJ_TESTEXPORTS
+// specify the files to be copied from the source directories to the releasables'
+// directories for use with test programs.
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/group/mce.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,56 @@
+;
+; Copyright (c) 2009 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:
+;
+; A package file for creating an installation file for MCE
+
+
+; Supported languages
+&en
+
+#{"MMcomms"},(0x1020286C),2,0,0,TYPE=SA
+
+
+%{"Vendor-EN"}
+:"Nokia"
+
+(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
+
+
+
+; -----------------------------------------------------------------------------------
+
+;MCE DLLs
+; for S60 3.x
+"\epoc32\release\armv5\udeb\mceserver.exe"-"!:\sys\bin\mceserver.exe"
+"\epoc32\release\armv5\udeb\mceclient.dll"-"!:\sys\bin\mceclient.dll"
+"\epoc32\release\armv5\udeb\fcpluginengine.dll"-"!:\sys\bin\fcpluginengine.dll"
+"\epoc32\release\armv5\udeb\MMCCInterface.dll"-"!:\sys\bin\MMCCInterface.dll"
+"\epoc32\release\armv5\udeb\MMCCJitterBuffer.dll"-"!:\sys\bin\MMCCJitterBuffer.dll"
+"\epoc32\release\armv5\udeb\MMCCSubthreads.dll"-"!:\sys\bin\MMCCSubthreads.dll"
+"\epoc32\release\armv5\udeb\FCTBCP.dll"-"!:\sys\bin\FCTBCP.dll"
+"\EPOC32\DATA\Z\Resource\Plugins\FCTBCP.RSC"-"!:\resource\plugins\FCTBCP.RSC"
+
+"\epoc32\release\armv5\udeb\MMCCController.dll"-"!:\sys\bin\MMCCController.dll"
+"\EPOC32\DATA\Z\Resource\Plugins\MMCCController.RSC"-"!:\resource\plugins\MMCCController.RSC"
+"\epoc32\release\armv5\udeb\MMCCRtpSourceSink.dll"-"!:\sys\bin\MMCCRtpSourceSink.dll"
+"\EPOC32\DATA\Z\Resource\Plugins\MMCCRtpSourceSink.RSC"-"!:\resource\plugins\MMCCRtpSourceSink.RSC"
+"\epoc32\release\armv5\udeb\MMCCAmrPlFormat.dll"-"!:\sys\bin\MMCCAmrPlFormat.dll"
+"\EPOC32\DATA\Z\Resource\Plugins\MMCCAmrPlFormat.RSC"-"!:\resource\plugins\MMCCAmrPlFormat.RSC"
+"\epoc32\release\armv5\udeb\MMCCRedPlFormat.dll"-"!:\sys\bin\MMCCRedPlFormat.dll"
+"\EPOC32\DATA\Z\Resource\Plugins\MMCCRedPlFormat.RSC"-"!:\resource\plugins\MMCCRedPlFormat.RSC"
+"\epoc32\release\armv5\udeb\MMCCDtmfPlFormat.dll"-"!:\sys\bin\MMCCDtmfPlFormat.dll"
+"\EPOC32\DATA\Z\Resource\Plugins\MMCCDtmfPlFormat.RSC"-"!:\resource\plugins\MMCCDtmfPlFormat.RSC"
+"\epoc32\release\armv5\udeb\MMCCG711PlFormat.dll"-"!:\sys\bin\MMCCG711PlFormat.dll"
+"\EPOC32\DATA\Z\Resource\Plugins\MMCCG711PlFormat.RSC"-"!:\resource\plugins\MMCCG711PlFormat.RSC"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/inc/AiwTestApp.hrh Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2002-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: This file contains declarations for constants of AiwTestApp.
+* The file can be included in C++ or resource file.
+* Initial content was generated by Series 60 AppWizard.
+*
+*/
+
+#ifndef AIWTESTAPP_HRH
+#define AIWTESTAPP_HRH
+
+enum TAiwTestAppCommandIds
+ {
+ EAiwTestAppCmdBATTest = 1,
+ EAiwTestAppCmdSetLanguage,
+ EAiwTestAppCmdSetInputMode,
+ EAiwTestAppCmdCoreInfo,
+ EAiwTestAppCmdChangeCore,
+ EAiwTestAppCmdEngineInfo
+ };
+
+#endif // AIWTESTAPP_HRH
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/inc/AiwTestApp.loc Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) 2002-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: This is a localisation file for AiwTestApp.
+* A loc file is the one and only place where the logical strings
+* to be localised are defined.
+* Initial content was generated by Series 60 AppWizard.
+*
+*/
+
+
+// LOCALISATION STRINGS
+
+// d:Command in options menu.
+// d:Example application spesific command.
+// l:list_single_popup_submenu_pane_1
+//
+#define qtn_appl_test "Test"
+
+// d:Example caption string for app.
+//
+#define qtn_app_caption_string ""
+
+// d:Example short caption string for app.
+//
+#define qtn_app_short_caption_string ""
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/inc/AiwTestAppApp.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2002-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: Declares main application class.
+*
+*/
+
+#ifndef AIWTESTAPP_H
+#define AIWTESTAPP_H
+
+// INCLUDES
+#include <aknapp.h>
+
+// CONSTANTS
+// UID of the application
+const TUid KUidAiwTestApp = { 0x1028239B };
+
+// CLASS DECLARATION
+
+/**
+* CAiwTestApp application class.
+* Provides factory to create concrete document object.
+*
+*/
+class CAiwTestApp : public CAknApplication
+ {
+ public: // Functions from base classes
+
+ private:
+ /**
+ * From CApaApplication, creates CAiwTestAppDocument document object.
+ * @return A pointer to the created document object.
+ */
+ CApaDocument* CreateDocumentL();
+
+ /**
+ * From CApaApplication, returns application's UID (KUidAiwTestApp).
+ * @return The value of KUidAiwTestApp.
+ */
+ TUid AppDllUid() const;
+ };
+
+#endif
+
+// End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/inc/AiwTestAppAppUi.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2002-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: Declares UI class for application.
+*
+*/
+
+#ifndef AIWTESTAPPUI_H
+#define AIWTESTAPPUI_H
+
+// INCLUDES
+#include "musavaobserver.h"
+#include "muscallmonitorobserver.h"
+
+#include <eikapp.h>
+#include <eikdoc.h>
+#include <e32std.h>
+#include <coeccntx.h>
+#include <aknappui.h>
+
+
+// FORWARD DECLARATIONS
+class CAiwTestContainer;
+class CAiwServiceHandler;
+class CMusManager;
+class CMusAvaInterface;
+class CMusCallMonitor;
+
+// CLASS DECLARATION
+
+/**
+* Application UI class.
+* Provides support for the following features:
+* - EIKON control architecture
+*/
+class CAiwTestAppUi : public CAknAppUi, public MMusAvaObserver,
+ public MMusCallMonitorObserver
+ {
+ public: // Constructors and destructor
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CAiwTestAppUi();
+
+ public: // New functions
+ public: // Functions from base classes
+
+ void AvailabilityState( TAvailabilityState aState,
+ TAvailabilityStatus aStatus,
+ TAvailabilityName aName );
+
+
+ void StopComplete();
+
+
+ void CallConnectedL( const TDesC& /*aTelNumber*/, TBool /*aIsSipUri*/ )
+ {
+ }
+
+ void CallHold( const TDesC& /*aTelNumber*/, TBool /*aIsSipUri*/ )
+ {
+ }
+
+ void ConferenceCallL()
+ {
+ }
+
+ void NoActiveCallL()
+ {
+ }
+
+
+ private:
+ /**
+ * From MEikMenuObserver, dynamically initialises a menu pane.
+ * @param aResourceId The menu's ID.
+ * @param aMenuPane The in-memory representation of the menu pane.
+ */
+ void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
+
+ private:
+ /**
+ * From CEikAppUi, takes care of command handling.
+ * @param aCommand command to be handled
+ */
+ void HandleCommandL(TInt aCommand);
+
+ /**
+ * From CEikAppUi, handles key events.
+ * @param aKeyEvent Event to handled.
+ * @param aType Type of the key event.
+ * @return Response code (EKeyWasConsumed, EKeyWasNotConsumed).
+ */
+ virtual TKeyResponse HandleKeyEventL(
+ const TKeyEvent& aKeyEvent,TEventCode aType);
+
+ private:
+ CAiwTestContainer* iAppContainer;
+ CAiwServiceHandler* iServiceHandler;
+
+ CMusManager* iManager;
+ CMusAvaInterface* iPlugin;
+ TAvailabilityStatus iMinimumStatus;
+ TAvailabilityStatus iMandatoryStatus;
+ TAvailabilityStatus iExtensionStatus;
+
+ CMusCallMonitor* iCallMonitor;
+ };
+
+#endif
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/inc/AiwTestAppContainer.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2002-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: Declares container control for application.
+*
+*/
+
+#ifndef AIWTESTCONTAINER_H
+#define AIWTESTCONTAINER_H
+
+// INCLUDES
+#include <coecntrl.h>
+
+// FORWARD DECLARATIONS
+class CEikLabel; // for example labels
+
+// CLASS DECLARATION
+
+/**
+* CAiwTestContainer container control class.
+*/
+class CAiwTestContainer : public CCoeControl, MCoeControlObserver
+ {
+ public: // Constructors and destructor
+ /**
+ * EPOC default constructor.
+ * @param aRect Frame rectangle for container.
+ */
+ void ConstructL(const TRect& aRect);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CAiwTestContainer();
+
+ void SetLabelL(TDesC& aText);
+
+ public: // New functions
+
+ public: // Functions from base classes
+
+ private: // Functions from base classes
+
+ /**
+ * From CoeControl,SizeChanged.
+ */
+ void SizeChanged();
+
+ /**
+ * From CoeControl,CountComponentControls.
+ */
+ TInt CountComponentControls() const;
+
+ /**
+ * From CCoeControl,ComponentControl.
+ */
+ CCoeControl* ComponentControl(TInt aIndex) const;
+
+ /**
+ * From CCoeControl,Draw.
+ */
+ void Draw(const TRect& aRect) const;
+
+ /**
+ * From MCoeControlObserver
+ * Acts upon changes in the hosted control's state.
+ *
+ * @param aControl The control changing its state
+ * @param aEventType The type of control event
+ */
+ void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
+
+ private: //data
+
+ CEikLabel* iLabel; // example label
+ CEikLabel* iToDoLabel; // example label
+ };
+
+#endif
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/inc/AiwTestAppDocument.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2002-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: Declares document for application.
+*
+*/
+
+#ifndef AIWTESTDOCUMENT_H
+#define AIWTESTDOCUMENT_H
+
+// INCLUDES
+#include <akndoc.h>
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+class CEikAppUi;
+
+// CLASS DECLARATION
+
+/**
+* CAiwTestDocument application class.
+*/
+class CAiwTestDocument : public CAknDocument
+ {
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ */
+ static CAiwTestDocument* NewL(CEikApplication& aApp);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CAiwTestDocument();
+
+ public: // New functions
+ public: // Functions from base classes
+ protected: // New functions
+ protected: // Functions from base classes
+
+ private:
+ /**
+ * C++ default constructor.
+ */
+ CAiwTestDocument(CEikApplication& aApp);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ private:
+ /**
+ * From CEikDocument, create CAiwTestAppUi "App UI" object.
+ */
+ CEikAppUi* CreateAppUiL();
+ };
+
+#endif
+
+// End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/install/AIWTestApp_3x.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,44 @@
+;
+; Copyright (c) 2009 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:
+;
+;
+; Installation file for AIWTestApp application
+;
+;Languages
+&EN
+;
+; UID is the app's UID
+;
+#{"AIWTestApp"},(0x102072D1),1,0,0
+;
+; List of localised vendor names
+%{"Vendor-EN"}
+
+; The non-localised, globally unique vendor name (mandatory)
+:"Nokia OY"
+;Supports Series 60 v 3.x
+;This line indicates that this installation is for the Series 60 platform v3.x
+;This line must appear _exactly_ as shown below in the sis file
+;If this line is missing or incorrect, the sis file will not be able
+;to be installed on Series 60 v3.x platforms
+(0x101F7961), 0, 0, 0, {"Series60ProductID"}
+;
+; Three files to install
+;
+"\epoc32\release\armv5\urel\AIWTestApp.exe" -"!:\sys\bin\AIWTestApp.exe"
+"\epoc32\data\z\Resource\apps\AIWTestApp.rsc" -"!:\resource\apps\AIWTestApp.rsc"
+"\epoc32\data\Z\private\10003a3f\apps\AiwTestApp_reg.rsc" -"!:\private\10003a3f\import\apps\AiwTestApp_reg.rsc"
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/install/mustestapp.pkg Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,52 @@
+;
+; Copyright (c) 2009 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:
+;
+;
+; Installation file for AIWTestApp application
+;
+;Languages
+&EN
+;
+; UID is the app's UID
+;
+#{"AIWTestApp"},(0x102072D1),1,0,0
+;
+; List of localised vendor names
+%{"Vendor-EN"}
+
+; The non-localised, globally unique vendor name (mandatory)
+:"Nokia OY"
+;Supports Series 60 v 3.x
+;This line indicates that this installation is for the Series 60 platform v3.x
+;This line must appear _exactly_ as shown below in the sis file
+;If this line is missing or incorrect, the sis file will not be able
+;to be installed on Series 60 v3.x platforms
+(0x101F7961), 0, 0, 0, {"Series60ProductID"}
+;
+; Three files to install
+;
+"\epoc32\release\armv5\udeb\aiwTestApp.exe" -"!:\sys\bin\AIWTestApp.exe"
+"\epoc32\data\z\Resource\apps\aiwTestApp.rsc" -"!:\resource\apps\AIWTestApp.rsc"
+"\epoc32\data\Z\private\10003a3f\apps\AiwTestApp_reg.rsc" -"!:\private\10003a3f\import\apps\AiwTestApp_reg.rsc"
+
+
+"\epoc32\release\armv5\urel\musui.app"-"!:\system\apps\About\About.app"
+"\epoc32\release\armv5\urel\musui.rsc"-"!:\system\apps\About\About.rsc"
+"\epoc32\release\armv5\urel\musui_caption.rsc"-"!:\system\apps\About\About_caption.rsc"
+"\epoc32\release\armv5\urel\musui.aif"-"!:\system\apps\About\About.aif"
+"\epoc32\release\armv5\urel\musui.mbm"-"!:\system\apps\About\About.mbm"
+
+"\epoc32\release\armv5\udeb\
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/src/AiwTestAppApp.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+// INCLUDE FILES
+#include <eikstart.h>
+#include "aiwtestappapp.h"
+#include "aiwtestappdocument.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CAiwTestApp::AppDllUid()
+// Returns application UID
+// ---------------------------------------------------------
+//
+TUid CAiwTestApp::AppDllUid() const
+ {
+ return KUidAiwTestApp;
+ }
+
+// ---------------------------------------------------------
+// CAiwTestApp::CreateDocumentL()
+// Creates CAiwTestDocument object
+// ---------------------------------------------------------
+//
+CApaDocument* CAiwTestApp::CreateDocumentL()
+ {
+ return CAiwTestDocument::NewL( *this );
+ }
+
+LOCAL_C CApaApplication* NewApplication()
+ {
+ return new CAiwTestApp;
+ }
+
+// ---------------------------------------------------------
+// E32Main()
+// Main startup entry point
+// Returns: KErrNone
+// ---------------------------------------------------------
+//
+GLDEF_C TInt E32Main()
+ {
+ return EikStart::RunApplication(NewApplication);
+ }
+
+// End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/src/AiwTestAppAppUi.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,265 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+// INCLUDE FILES
+#include "aiwtestappappui.h"
+#include "aiwtestappcontainer.h"
+#include "musmanager.h"
+#include <mustestapp.rsg>
+#include "aiwtestapp.hrh"
+#include "musresourceproperties.h"
+#include "musavainterface.h"
+#include "muscallmonitor.h"
+
+#include <e32property.h>
+#include <flogger.h>
+#include <e32math.h>
+
+#include <avkon.hrh>
+#include <aknutils.h>
+
+#include <aknmessagequerydialog.h>
+#include <aknquerydialog.h>
+
+#include <aiwservicehandler.h>
+
+// ================= MEMBER FUNCTIONS =======================
+//
+// ----------------------------------------------------------
+// CAiwTestAppUi::ConstructL()
+//
+// ----------------------------------------------------------
+//
+void CAiwTestAppUi::ConstructL()
+ {
+ BaseConstructL();
+
+ iPlugin = NULL;
+
+ // Creates a container object and adds it to the application's control stack.
+ iAppContainer = new (ELeave) CAiwTestContainer;
+ iAppContainer->SetMopParent( this );
+ iAppContainer->ConstructL( ClientRect() );
+ AddToStackL( iAppContainer );
+
+ // Create service handler instance.
+ iServiceHandler = CAiwServiceHandler::NewL();
+
+ // Attach menu service interests to AIW framework.
+ iServiceHandler->AttachMenuL(R_AIWTEST_MENU, R_AIWTESTAPP_INTEREST);
+ //iServiceHandler->AttachMenuL(R_UMASETTINGS_MAIN_MENU, R_UMASETTINGSUI_INTEREST);
+
+ // Attach base service interests to AIW framework.
+ iServiceHandler->AttachL(R_AIWTESTAPP_BASEINTEREST);
+
+ iManager = CMusManager::NewL();
+
+ RProperty::Define( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KCameraAvailability,
+ RProperty::EInt);
+
+ // 2. keypad property
+ RProperty::Define( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KKeypadAvailability,
+ RProperty::EInt );
+
+ // 3. video player property
+ RProperty::Define( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KVideoPlayerAvailability,
+ RProperty::EInt
+ );
+
+ RProperty::Set( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KCameraAvailability,
+ ( TInt ) NMusResourceApi::EAvailable );
+
+ // 2. keypad property
+ RProperty::Set( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KKeypadAvailability,
+ ( TInt ) NMusResourceApi::EAvailable );
+
+ // 3. video player property
+ RProperty::Set( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KVideoPlayerAvailability,
+ ( TInt ) NMusResourceApi::EAvailable );
+
+ // Next line is an example of how to use base service commands.
+ //iServiceHandler->ExecuteServiceCmdL(4, iServiceHandler->InParamListL(),
+ // iServiceHandler->OutParamListL());
+ }
+
+// ----------------------------------------------------
+// CAiwTestAppUi::~CAiwTestAppUi()
+// Destructor
+// Frees reserved resources
+// ----------------------------------------------------
+//
+CAiwTestAppUi::~CAiwTestAppUi()
+ {
+ delete iServiceHandler;
+
+ if (iAppContainer)
+ {
+ RemoveFromStack( iAppContainer );
+ delete iAppContainer;
+ }
+
+ if ( iPlugin )
+ {
+ iPlugin->StopL();
+ delete iPlugin;
+ }
+
+ iManager->StopApplicationL();
+
+ delete iManager;
+ }
+
+// ------------------------------------------------------------------------------
+// CAiwTestAppUi::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
+// This function is called by the EIKON framework just before it displays
+// a menu pane. Its default implementation is empty, and by overriding it,
+// the application can set the state of menu items dynamically according
+// to the state of application data.
+// ------------------------------------------------------------------------------
+//
+void CAiwTestAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+ {
+ if (iServiceHandler->HandleSubmenuL(*aMenuPane))
+ {
+ return;
+ }
+
+ if (iServiceHandler->IsAiwMenu(aResourceId))
+ {
+ TFileName filename(_L("image.jpg")); // This is just an axample of how to fill param list.
+ TAiwVariant variant(filename);
+ TAiwGenericParam param(EGenericParamFile, variant);
+ CAiwGenericParamList& inList = iServiceHandler->InParamListL();
+ inList.AppendL(param);
+
+ iServiceHandler->InitializeMenuPaneL(*aMenuPane, aResourceId, 5000,
+ iServiceHandler->InParamListL());
+ }
+ }
+
+// ----------------------------------------------------
+// CAiwTestAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent,
+// TEventCode aType)
+// Takes care of key event handling.
+// ----------------------------------------------------
+//
+TKeyResponse CAiwTestAppUi::HandleKeyEventL(const TKeyEvent& /*aKeyEvent*/,
+ TEventCode /*aType*/)
+ {
+ return EKeyWasNotConsumed;
+ }
+
+// ----------------------------------------------------
+// CAiwTestAppUi::HandleCommandL(TInt aCommand)
+// Takes care of command handling.
+// ----------------------------------------------------
+//
+void CAiwTestAppUi::HandleCommandL(TInt aCommand)
+ {
+ switch ( aCommand )
+ {
+ case EAknSoftkeyBack: // fallthrough
+ case EEikCmdExit:
+ {
+ RDebug::Print(_L("This is a debug message - Exit"));
+ Exit();
+ break;
+ }
+ case EAiwTestAppCmdBATTest:
+ {
+ break;
+ }
+ case EAiwTestAppCmdCoreInfo:
+ {
+ break;
+ }
+ case EAiwTestAppCmdEngineInfo:
+ {
+ break;
+ }
+ case 1000: // 'Testi' menu item.
+ {
+
+ iManager->ExamineAvailabilityL();
+ }
+ break;
+
+
+
+ case 1001:
+ {
+
+ iManager->StartApplicationL( MultimediaSharing::EMusLiveVideo );
+
+ }
+ break;
+ case 1002:
+ {
+ iPlugin = CMusAvaInterface::NewL();
+ iPlugin->SetObserver( *this );
+
+ iPlugin->StartL();
+ //iCallMonitor = CMusCallMonitor::NewL( *this );
+ //iCallMonitor->StartMonitoringL();
+
+
+
+ }
+ break;
+ default:
+ {
+
+
+ CAiwGenericParamList& in = iServiceHandler->InParamListL();
+ // in.AppendL(param);
+
+ // Executes menu service command.
+ iServiceHandler->ExecuteMenuCmdL(aCommand, in, iServiceHandler->OutParamListL());
+
+ //CleanupStack::PopAndDestroy(2);
+ }
+ break;
+ }
+ }
+
+ void CAiwTestAppUi::AvailabilityState( TAvailabilityState aState,
+ TAvailabilityStatus aStatus,
+ TAvailabilityName aName )
+ {
+ if( aState == EMusAvaMinimum )
+ iMinimumStatus = aStatus;
+ else if( aState == EMusAvaMandatory )
+ iMandatoryStatus = aStatus;
+ else if( aState == EMusAvaExtension )
+ iExtensionStatus = aStatus;
+ }
+
+
+ void CAiwTestAppUi::StopComplete()
+ {
+
+ }
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/src/AiwTestAppContainer.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+// INCLUDE FILES
+#include "aiwtestappcontainer.h"
+#include <eikenv.h>
+#include <eiklabel.h> // for example label control
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CAiwTestContainer::ConstructL(const TRect& aRect)
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------
+//
+void CAiwTestContainer::ConstructL(const TRect& aRect)
+ {
+ CreateWindowL();
+
+ iLabel = new (ELeave) CEikLabel;
+ iLabel->SetContainerWindowL( *this );
+ iLabel->SetTextL( _L("Label") );
+
+ iToDoLabel = new (ELeave) CEikLabel;
+ iToDoLabel->SetContainerWindowL( *this );
+ iToDoLabel->SetTextL( _L("TodoLabel") );
+
+ SetRect(aRect);
+ ActivateL();
+ }
+
+// ---------------------------------------------------------
+// CAiwTestContainer::~CAiwTestContainer()
+// Destructor
+// ---------------------------------------------------------
+//
+CAiwTestContainer::~CAiwTestContainer()
+ {
+ delete iLabel;
+ delete iToDoLabel;
+ }
+
+// ---------------------------------------------------------
+// CAiwTestContainer::SetLabelL(TDesC& aText)
+// ---------------------------------------------------------
+//
+void CAiwTestContainer::SetLabelL(TDesC& /*aText*/)
+ {
+ }
+
+// ---------------------------------------------------------
+// CAiwTestContainer::SizeChanged()
+// Called by framework when the view size is changed
+// ---------------------------------------------------------
+//
+void CAiwTestContainer::SizeChanged()
+ {
+ }
+
+// ---------------------------------------------------------
+// CAiwTestContainer::CountComponentControls() const
+// ---------------------------------------------------------
+//
+TInt CAiwTestContainer::CountComponentControls() const
+ {
+ return 2; // return nbr of controls inside this container
+ }
+
+// ---------------------------------------------------------
+// CAiwTestContainer::ComponentControl(TInt aIndex) const
+// ---------------------------------------------------------
+//
+CCoeControl* CAiwTestContainer::ComponentControl(TInt aIndex) const
+ {
+ switch ( aIndex )
+ {
+ case 0:
+ return iLabel;
+ case 1:
+ return iToDoLabel;
+ default:
+ return NULL;
+ }
+ }
+
+// ---------------------------------------------------------
+// CAiwTestContainer::Draw(const TRect& aRect) const
+// ---------------------------------------------------------
+//
+void CAiwTestContainer::Draw(const TRect& aRect) const
+ {
+ CWindowGc& gc = SystemGc();
+
+ gc.SetPenStyle( CGraphicsContext::ENullPen );
+ gc.SetBrushColor( KRgbGray );
+ gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+
+ gc.DrawRect( aRect );
+ }
+
+// ---------------------------------------------------------
+// CAiwTestContainer::HandleControlEventL(CCoeControl* aControl,
+// TCoeEvent aEventType)
+// ---------------------------------------------------------
+//
+void CAiwTestContainer::HandleControlEventL(CCoeControl* /*aControl*/,
+ TCoeEvent /*aEventType*/)
+ {
+ // TODO: Add your control event handler code here
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/mustestapp/src/AiwTestAppDocument.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+
+// INCLUDE FILES
+#include "aiwtestappdocument.h"
+#include "aiwtestappappui.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// -----------------------------------------------------------------------------
+// CAiwTestDocument::CAiwTestDocument(CEikApplication& aApp)
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CAiwTestDocument::CAiwTestDocument(CEikApplication& aApp)
+: CAknDocument(aApp)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAiwTestDocument::~CAiwTestDocument()
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAiwTestDocument::~CAiwTestDocument()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAiwTestDocument::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CAiwTestDocument::ConstructL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAiwTestDocument::NewL(CEikApplication& aApp)
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CAiwTestDocument* CAiwTestDocument::NewL(CEikApplication& aApp) // CAiwTestApp reference
+ {
+ CAiwTestDocument* self = new (ELeave) CAiwTestDocument( aApp );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// ----------------------------------------------------
+// CAiwTestDocument::CreateAppUiL()
+// Constructs CAiwTestAppUi.
+// ----------------------------------------------------
+//
+CEikAppUi* CAiwTestDocument::CreateAppUiL()
+ {
+ return new (ELeave) CAiwTestAppUi;
+ }
+
+// End of File
--- a/tsrc/propertystub/src/e32property.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/propertystub/src/e32property.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -16,12 +16,18 @@
*/
#include "e32property.h"
+#include "mussessionproperties.h"
+#include "mussesseioninformationapi.h"
#include <e32cmn.h>
static RArray<TUint> iIntProperty;
static TInt iErrorCode = KErrNone;
static RProperty::TPropertyCalledFunctions iCalledFunction = RProperty::ENone;
-static TName iString = KNullDesC();
+// Large enough to store maximum length descriptor for RProperty
+static TBuf<RProperty::KMaxPropertySize> iString = KNullDesC();
+static TBuf<RProperty::KMaxPropertySize> iVideoCodecList = KNullDesC();
+static TBuf<RProperty::KMaxPropertySize> iSessionRecipient = KNullDesC();
+static TBuf<RProperty::KMaxPropertySize> iEngineName = KNullDesC();
static TInt iValue = KErrNotFound;
@@ -78,6 +84,7 @@
return error;
}
+
TInt RProperty::Get( TUid /*aCategory*/, TUint /*aKey*/, TDes8& aValue)
{
// This is not widely used in Mush , so who cares in stub.
@@ -85,10 +92,26 @@
return iErrorCode;
}
-TInt RProperty::Get( TUid /*aCategory*/, TUint /*aKey*/, TDes16& aValue )
+
+TInt RProperty::Get( TUid /*aCategory*/, TUint aKey, TDes16& aValue )
{
- // This is not widely used in Mush , so who cares in stub.
- aValue = iString;
+ if ( aKey == NMusSessionInformationApi::KMUSCallProvider )
+ {
+ aValue = iEngineName;
+ }
+ else if ( aKey == NMusSessionApi::KVideoCodecs )
+ {
+ aValue = iVideoCodecList;
+ }
+ else if ( aKey == NMusSessionApi::KRemoteSipAddress )
+ {
+ aValue = iSessionRecipient;
+ }
+ else
+ {
+ aValue = iString;
+ }
+
return iErrorCode;
}
@@ -118,10 +141,27 @@
return iErrorCode;
}
-TInt RProperty::Set( TUid /*aCategory*/, TUint /*aKey*/, const TDesC& aValue )
+
+TInt RProperty::Set( TUid /*aCategory*/, TUint aKey, const TDesC& aValue )
{
- // This is not widely used in Mush , so who cares in stub.
- iString = aValue;
+
+ if ( aKey == NMusSessionInformationApi::KMUSCallProvider )
+ {
+ iEngineName = aValue;
+ }
+
+ else if ( aKey == NMusSessionApi::KVideoCodecs )
+ {
+ iVideoCodecList = aValue;
+ }
+ else if ( aKey == NMusSessionApi::KRemoteSipAddress )
+ {
+ iSessionRecipient = aValue;
+ }
+ else
+ {
+ iString = aValue;
+ }
return iErrorCode;
}
@@ -193,7 +233,7 @@
iErrorCode = KErrNone;
iCalledFunction = RProperty::ENone;
iString = KNullDesC();
+ iEngineName = KNullDesC();
iValue = KErrNotFound;
}
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/qtestutils/inc/testresultxmlparser.h Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,68 @@
+/*
+* Copyright (c) 2009 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 TESTRESULTXMLPARSER_H
+#define TESTRESULTXMLPARSER_H
+
+#include <QXmlDefaultHandler>
+
+
+class TestResultXmlParser : public QXmlDefaultHandler
+{
+public: // Constructors and destructor
+ TestResultXmlParser();
+ ~TestResultXmlParser();
+
+public: // From QXmlContentHandler
+ bool startElement(
+ const QString& namespaceURI,
+ const QString& localName,
+ const QString& qName,
+ const QXmlAttributes& atts);
+
+ bool endElement(
+ const QString& namespaceURI,
+ const QString& localName,
+ const QString& qName);
+
+ bool characters(const QString& ch);
+
+public: // New functions
+
+ int parse(const QString& fileName);
+
+ int parseAndPrintResults(
+ const QString& fileName,
+ bool printDetails=false);
+
+ int testCount();
+
+ QStringList errors();
+
+private: // Data
+ int mTestCount;
+ QStringList* mErrors;
+ bool mParsingIncidentElement;
+ bool mParsingDescriptionElement;
+ bool mCurrentTestFailed;
+ QString mCurrentTestName;
+ QString mCurrentTestFile;
+ int mCurrentTestFailureLine;
+};
+
+
+#endif // TESTRESULTXMLPARSER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/qtestutils/src/testresultxmlparser.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,178 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "testresultxmlparser.h"
+#include <stdio.h>
+
+const char testFunctionElement[] = "TestFunction";
+const char incidentElement[] = "Incident";
+const char descriptionElement[] = "Description";
+const char nameAttr[] = "name";
+const char typeAttr[] = "type";
+const char fileAttr[] = "file";
+const char lineAttr[] = "line";
+const char attrValueFail[] = "fail";
+
+
+// -----------------------------------------------------------------------------
+// TestResultXmlParser::TestResultXmlParser
+// -----------------------------------------------------------------------------
+//
+TestResultXmlParser::TestResultXmlParser()
+: mTestCount(0),
+ mParsingIncidentElement(false),
+ mParsingDescriptionElement(false),
+ mCurrentTestFailed(false),
+ mCurrentTestFailureLine(0)
+{
+ mErrors = new QStringList;
+}
+
+// -----------------------------------------------------------------------------
+// TestResultXmlParser::TestResultXmlParser
+// -----------------------------------------------------------------------------
+//
+TestResultXmlParser::~TestResultXmlParser()
+{
+ delete mErrors;
+}
+
+// -----------------------------------------------------------------------------
+// TestResultXmlParser::startElement
+// -----------------------------------------------------------------------------
+//
+bool TestResultXmlParser::startElement(
+ const QString& /*namespaceURI*/,
+ const QString& /*localName*/,
+ const QString& qName,
+ const QXmlAttributes& atts)
+{
+ if (qName == testFunctionElement) {
+ mTestCount++;
+ mCurrentTestName = atts.value(nameAttr);
+ return true;
+ }
+ if (qName == incidentElement) {
+ mParsingIncidentElement = true;
+ if (atts.value(typeAttr) == attrValueFail) {
+ mCurrentTestFailed = true;
+ mCurrentTestFile = atts.value(fileAttr);
+ mCurrentTestFailureLine = atts.value(lineAttr).toInt();
+ }
+ return true;
+ }
+ mParsingDescriptionElement = (qName == descriptionElement);
+ return true;
+}
+
+// -----------------------------------------------------------------------------
+// TestResultXmlParser::endElement
+// -----------------------------------------------------------------------------
+//
+bool TestResultXmlParser::endElement(
+ const QString& /*namespaceURI*/,
+ const QString& /*localName*/,
+ const QString& qName)
+{
+ if (qName == incidentElement) {
+ mParsingIncidentElement = false;
+ mCurrentTestFailed = false;
+ return true;
+ }
+ if (qName == descriptionElement) {
+ mParsingDescriptionElement = false;
+ }
+ return true;
+}
+
+// -----------------------------------------------------------------------------
+// TestResultXmlParser::characters
+// -----------------------------------------------------------------------------
+//
+bool TestResultXmlParser::characters(const QString& ch)
+{
+ if (mParsingIncidentElement &&
+ mParsingDescriptionElement &&
+ mCurrentTestFailed) {
+ QString testResult = mCurrentTestName + " failed:\n";
+ testResult += "File: ";
+ testResult += mCurrentTestFile;
+ testResult += "\n";
+ testResult += "Line: ";
+ testResult += QString::number(mCurrentTestFailureLine);
+ testResult += "\n";
+ testResult += "Reason: ";
+ testResult += ch;
+ testResult += "\n";
+ mErrors->append(testResult);
+ }
+ return true;
+}
+
+// -----------------------------------------------------------------------------
+// TestResultXmlParser::parse
+// -----------------------------------------------------------------------------
+//
+int TestResultXmlParser::parse(const QString& fileName)
+{
+ QFile file(fileName);
+ QXmlInputSource inputSource(&file);
+ QXmlSimpleReader reader;
+ reader.setContentHandler(this);
+ return reader.parse(inputSource);
+}
+
+// -----------------------------------------------------------------------------
+// TestResultXmlParser::parseAndPrintResults
+// -----------------------------------------------------------------------------
+//
+int TestResultXmlParser::parseAndPrintResults(
+ const QString& fileName,
+ bool printDetails)
+{
+ printf("Parsing: %s\n", fileName.toUtf8().data());
+ int error = parse(fileName);
+ printf("%d tests executed. Failed total: %d\n", mTestCount, mErrors->count());
+ if (printDetails) {
+ printf("\n");
+ foreach(QString error, *mErrors) {
+ printf(error.toUtf8().data());
+ printf("\n");
+ }
+ }
+ return error;
+}
+
+// -----------------------------------------------------------------------------
+// TestResultXmlParser::testCount
+// -----------------------------------------------------------------------------
+//
+int TestResultXmlParser::testCount()
+{
+ return mTestCount;
+}
+
+// -----------------------------------------------------------------------------
+// TestResultXmlParser::errors
+// -----------------------------------------------------------------------------
+//
+QStringList TestResultXmlParser::errors()
+{
+ return *mErrors;
+}
+
+// End of File.
--- a/tsrc/telephonyaudioroutingstub/inc/telephonyaudiorouting.h Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/telephonyaudioroutingstub/inc/telephonyaudiorouting.h Tue Aug 31 15:12:07 2010 +0300
@@ -56,7 +56,7 @@
static CTelephonyAudioRouting* NewL(
MTelephonyAudioRoutingObserver& aObserver );
- virtual ~CTelephonyAudioRouting();
+ ~CTelephonyAudioRouting();
/**
* Returns array of currently available outputs.
@@ -74,7 +74,7 @@
* @param none.
* @return TArray<TAudioOutput>& Array of available outputs.
*/
- virtual const TArray<TAudioOutput>& AvailableOutputs();
+ const TArray<TAudioOutput>& AvailableOutputs();
/**
* Returns the current output configured by the client application to play
@@ -94,7 +94,7 @@
* @param none.
* @return TAudioOutput Current output.
*/
- virtual TAudioOutput Output();
+ TAudioOutput Output();
/**
* Sends an asynchronous request to Adaptation to set the output
@@ -118,7 +118,7 @@
* of the outputs from AvailableOutputs() list or ENotActive.
* @return none.
*/
- virtual void SetOutputL( TAudioOutput aOutput = ENotActive );
+ void SetOutputL( TAudioOutput aOutput = ENotActive );
/**
* Returns the second last output that was successfully configured to
@@ -137,7 +137,7 @@
* audio. ENone will never be returned since telephony apps cannot call
* SetOutputL(ENone).
*/
- virtual TAudioOutput PreviousOutput();
+ TAudioOutput PreviousOutput();
/*
* Sends the Show Note mode to server along with the next SetOutputL()
@@ -155,7 +155,7 @@
* @param TBool aMode Show Note mode. ETrue or EFalse.
* @return KErrNone if succesfull, otherwise system-wide error code.
*/
- virtual TInt SetShowNote( TBool aMode );
+ TInt SetShowNote( TBool aMode );
/*
* Returns the the Show Note mode for the last succesfully completed
@@ -182,7 +182,7 @@
* Show Note mode. EFalse or ETrue.
* @return KErrNone if succesfull, otherwise system-wide error code.
*/
- virtual TInt GetShowNote( TBool& aMode );
+ TInt GetShowNote( TBool& aMode );
private:
@@ -194,8 +194,8 @@
MTelephonyAudioRoutingObserver& iObserver;
RArray<TAudioOutput> iAvailableOutputs;
- static TAudioOutput iCurrentOutput;
- static TAudioOutput iPreviousOutput;
+ TAudioOutput iCurrentOutput;
+ TAudioOutput iPreviousOutput;
TBool iShowNoteMode;
--- a/tsrc/telephonyaudioroutingstub/src/telephonyaudioroutingstub.cpp Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/telephonyaudioroutingstub/src/telephonyaudioroutingstub.cpp Tue Aug 31 15:12:07 2010 +0300
@@ -20,11 +20,6 @@
-CTelephonyAudioRouting::TAudioOutput CTelephonyAudioRouting::iCurrentOutput =
- CTelephonyAudioRouting::ENone;
-CTelephonyAudioRouting::TAudioOutput CTelephonyAudioRouting::iPreviousOutput =
- CTelephonyAudioRouting::ENone;
-
// ============================ MEMBER FUNCTIONS ===============================
@@ -91,7 +86,6 @@
User::Leave( leaveValue );
}
- iPreviousOutput = iCurrentOutput;
iCurrentOutput = aOutput;
}
--- a/tsrc/unittestrunner/eunitdlls_ctc.txt Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/unittestrunner/eunitdlls_ctc.txt Tue Aug 31 15:12:07 2010 +0300
@@ -1,35 +1,39 @@
mmsharinguis/mmsharing/mmshengine/tsrc/ut_engine/group
ut_musengine.dll
-1
+0
mmsharinguis/mmsharing/mmshavailability/tsrc/ut_availability/group
ut_availability.dll
-1
+0
mmsharinguis/mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/group
ut_aoplugin.dll
-1
+0
mmsharinguis/mmshplugins/mmshsipcrplugin/tsrc/ut_sipcrplugin/group
ut_sipcrplugin.dll
-1
+0
mmsharinguis/mmshplugins/mmshaiwplugin/tsrc/ut_aiwplugin/group
ut_musaiwprovider.dll
-1
+0
mmsharinguis/mmshplugins/mmshwpadapterplugin/tsrc/ut_wpadapterplugin/group
ut_muswpadapter.dll
-1
+0
mmsharinguis/mmsharing/mmshmanagercli/tsrc/ut_managercli/group
ut_musmanagerclient.dll
-1
+0
mmsharinguis/mmsharing/mmshmanagersrv/tsrc/ut_managersrv/group
ut_musmanagerserver.dll
-1
+0
mmsharinguis/mmsharing/mmshindicator/tsrc/ut_indicator/group
ut_musindicator.dll
-1
+0
+
+mmsharinguis/mmshplugins/mmcctranscoder/tsrc/ut_transcoder/group
+ut_transcoder.dll
+0
--- a/tsrc/unittestrunner/eunittest_ctc.pl Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/unittestrunner/eunittest_ctc.pl Tue Aug 31 15:12:07 2010 +0300
@@ -42,9 +42,10 @@
$ignoredmodeSourceRelative = "1";
$coverageSymbols = "MON.sym";
-$ctcCommandPart1 = "ctcwrap -i d -n";
-$ctcCommandPart2 = "abld build winscw udeb";
-$ctcCommandPart2Test = "abld test build winscw udeb";
+#$ctcCommandPart1 = "ctcwrap -i d -2comp -no-conf-check -n";
+$ctcCommandPart1 = "ctcwrap -i d -2comp -n";
+$ctcCommandPart2 = "sbs.bat -c winscw_udeb";
+$ctcCommandPart2Test = "sbs -c winscw_udeb.test";
$ctcIgnoredPart1 = " -C \"EXCLUDE+";
$ctcIgnoredPart2 = "\" ";
@@ -239,11 +240,12 @@
unlink("$eunitDstDllLocation$currentDllNameLine");
if ($currentBuildModeLine =~ /$eunitTestBuildMode/)
{
- doSystemCall("abld test reallyclean winscw udeb ");
+ doSystemCall("sbs -c winscw_udeb.test reallyclean ");
}
else
{
- doSystemCall("abld reallyclean winscw udeb ");
+ #doSystemCall("sbs -c winscw_udeb reallyclean ");
+ doSystemCall("sbs REALLYCLEAN ");
}
}
else
@@ -267,16 +269,15 @@
else
{
print("previous dll was not from same path - build all!\n");
- doSystemCall("bldmake bldfiles");
if ($currentBuildModeLine =~ /$eunitTestBuildMode/)
- {
- doSystemCall("abld test reallyclean winscw udeb ");
- doSystemCall("$ctcCommandPart1 $coverageResultsDir$coverageSymbols $excludedCmd $ctcCommandPart2Test");
- }
+ {
+ doSystemCall("sbs -c winscw_udeb.test reallyclean ");
+ doSystemCall("$ctcCommandPart1 $coverageResultsDir$coverageSymbols $excludedCmd $ctcCommandPart2Test");
+ }
else
{
- doSystemCall("abld reallyclean winscw udeb ");
+ doSystemCall("sbs REALLYCLEAN ");
doSystemCall("$ctcCommandPart1 $coverageResultsDir$coverageSymbols $excludedCmd $ctcCommandPart2");
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/unittestrunner/qt_runall.cmd Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,22 @@
+@echo off
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:
+rem
+@echo on
+
+echo --qt_runtest.cmd ut_lcuieng--
+call qt_runtest.cmd ut_lcuieng
+echo --qt_runtest.cmd ut_lcui--
+call qt_runtest.cmd ut_lcui
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/unittestrunner/qt_runtest.cmd Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,26 @@
+@echo off
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:
+rem
+@echo on
+
+call del %1.xml
+
+:FINAL
+echo --because xml names are defined in main.cpp this -o is unnecessary at the moment
+echo --\epoc32\release\winscw\udeb\%1.exe -xml -o c:\%1.xml
+call \epoc32\release\winscw\udeb\%1.exe -xml -o c:\%1.xml
+call copy \epoc32\winscw\c\%1.xml .
+call type %1.xml
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/unittestrunner/qt_runtests.cmd Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,57 @@
+@echo off
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:
+rem
+@echo on
+
+call del MON.sym
+call del MON.dat
+
+call qmake -platform symbian-abld
+call sbs -c winscw_udeb reallyclean
+
+echo -- Build sbs -c winscw_udeb--
+call sbs -c winscw_udeb
+
+echo -- Build and instrument for Code coverage --
+echo -- ctcwrap -i f : This instruments the code for function coverage measurement
+call ctcwrap -i d -C "EXCLUDE+*/tsrc/*" -C "EXCLUDE+*/*/tsrc/*" -C "EXCLUDE+*/*/*/tsrc/*" -C "EXCLUDE+moc_*" sbs -c winscw_udeb
+
+echo --qt_runall.cmd
+call qt_runall.cmd
+
+echo --ctcpost MON.sym MON.dat -p profile.txt
+call ctcpost MON.sym MON.dat -p profile.txt
+
+echo --you can give the output directory for the result
+echo --e.q qt_runtests.cmd R:\qtresult
+echo --ctc2html -i profile.txt -o %1
+
+IF ["%1"] EQU [""] GOTO :USEDEFDIR
+
+call ctc2html -i profile.txt -o %1
+GOTO :ENDDIR
+
+:USEDEFDIR
+echo --default output directory used
+call ctc2html -i profile.txt
+
+:ENDDIR
+echo -- Coverage calculated --
+
+:END
+echo -- Build Complete --
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/unittestrunner/tsrc.pro Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2009 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:
+#
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS= \
+ ..\..\mmsharing\livecommsui\lcui\tsrc\ut_lcui\
+ ..\..\mmsharing\livecommsui\lcuiengine\tsrc\ut_lcuieng\
+ ..\..\mmsharing\mmshapp\tsrc\ut_mmshapp\
+
+include(rom/rom.pri)
--- a/tsrc/unittestrunner/unittest_ctc.pl Thu Aug 19 09:51:39 2010 +0300
+++ b/tsrc/unittestrunner/unittest_ctc.pl Tue Aug 31 15:12:07 2010 +0300
@@ -299,12 +299,12 @@
print("\n*************************************************************\n\n");
print("Script runs by default all multimediasharing eunit tests\n");
print("and creates build, test and coverage results to:\n\n");
- print(" mmsharing/src/internal/unittestrunner/results/\n\n");
+ print(" $coverageResultsDirDefault\n\n");
print("Own configuration file (list of components to be processed)\n");
print("can be used as well:\n\n");
print(" >unittest_ctc.pl -eunitdlls=myowneunitcomponents.txt\n\n");
print("The text file should follow the syntax of default configuration file\n");
- print("mmsharing/src/internal/unittestrunner/eunitdlls_ctc.txt\n\n");
+ print("$scriptLocation/eunitdlls_ctc.txt\n\n");
print("Alloc failure simulation can be turned on with following command:\n\n");
print(" >unittest_ctc.pl -allocfailure=2\n\n");
print("Any number will turn eunit alloc on.\n");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/unittestrunner/unittest_qt.pl Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,442 @@
+#
+# Copyright (c) 2009 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:
+#
+#!/usr/bin/perl
+
+use File::Copy;
+use Cwd;
+use Getopt::Long;
+use XML::Parser::Expat;
+use Data::Dumper;
+
+#---------------------------------------Initialization------------------------------------------------------#
+
+$projectrootname = "/"; #is set to correct at run-time
+$projectdrive = "z:"; #is set to correct at run-time
+
+$unitTestRunner = "unittest_qt.pl";
+$scriptLocation = "mmsharinguis/tsrc/unittestrunner";
+$coverageResultsDirDefault = "mmsharinguis/tsrc/unittestrunner/qtresults/";
+$testConfigDefault = "unittest_qt_config.txt";
+$qtProFileDefault = "tsrc.pro";
+$buildResults = "BuildResults.txt";
+$coverageDat = "MON.dat";
+$coverageSymbols = "MON.sym";
+$coverageProfile = "profile.txt";
+
+$coverageResultsFile = "CTCHTML/index.html";
+$finalResultsFile = "AllResults.html";
+$cssFile = "CTCHTML/ctc.css";
+$cssLink = "<link rel=\"stylesheet\"";
+
+$xmlDllLine = "TestCase";
+$xmlResultLine = "Incident";
+$xmlCaseFailed = "failed";
+$xmlCasePassed = "pass";
+$outputString = "";
+$outputFileBodyStart = "<body";
+
+$totalCount = 0;
+$passedCount = 0;
+$failedCount = 0;
+
+$qtestOutputString = "";
+
+my @testNamesAndLogFiles = ( [""],[""] ); # two dimensional array e.g. [name, log1, log2], [name2, log3, log5, log6]
+
+# from command line
+my ($param_noclean,
+ $testConfig,
+ $qtProFile,
+ $coverageResultsDir);
+
+#---------------------------------------Main Start----------------------------------------------------------#
+
+# read command line parameters
+my $result = GetOptions("noclean" => \$param_noclean,
+ "config:s" => \$testConfig,
+ "pro:s" => \$qtProFile,
+ "results:s" => \$coverageResultsDir,
+ "help" => \$help);
+
+$startdir = cwd;
+
+if (defined $help){
+ print_help();
+ exit;
+}
+
+findProjectDriveAndRoot();
+
+createResultsDir();
+
+# set target for intrumentation result
+$ENV{'CTC_DATA_PATH'}= "$coverageResultsDir";
+
+doClean();
+
+parseConfigFile();
+
+buildTests();
+
+runTests();
+
+chdir($startdir);
+
+# create textual output
+chdir("$coverageResultsDir");
+doSystemCall("ctcpost $coverageSymbols $coverageDat -p $coverageProfile -T 70");
+doSystemCall("ctc2html -i $coverageProfile -t 70");
+
+# clear target for intrumentation result
+$ENV{'CTC_DATA_PATH'}= "";
+
+combineResults();
+
+chdir($startdir);
+
+#---------------------------------------Main Ends-------------------------------------------------------------#
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub findProjectDriveAndRoot()
+{
+ $tempStartDir = $startdir;
+ if ($tempStartDir =~ m/$scriptLocation/){
+ # extract project root
+ for ($tempStartDir) {
+ s/$scriptLocation+$//;
+ }
+ # divide it to drive and root
+ if ($tempStartDir =~ /^(.:)(.*)/){
+ $projectdrive = $1;
+ $projectrootname = $2;
+ }
+ print "project drive: $projectdrive \n";
+ print "project root: $projectrootname \n";
+ }
+ else{
+ print "cannot determine project drive and root, use defaults!\n";
+ }
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub createResultsDir()
+{
+ # create directory for results
+ if ( defined $coverageResultsDir ){
+ if ($coverageResultsDir =~ /^(.:)/){
+ print("Drive name given in results dir arg\n");
+ }
+ else{
+ $coverageResultsDir = "$projectdrive" . "/" . "$coverageResultsDir";
+ }
+ }
+ else{
+ $coverageResultsDir = "$projectdrive$projectrootname$coverageResultsDirDefault";
+ }
+ print ("Writing results to $coverageResultsDir \n\n");
+ if (mkdir("$coverageResultsDir", 0755)){
+ print("The results directory was created successfully! \n");
+ }
+ else {
+ print("The results directory already exists. \n");
+ }
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub doClean()
+{
+ if (!defined $param_noclean)
+ {
+ # clear previous results
+ print("Cleaning previous results. \n");
+ unlink("$coverageResultsDir$buildResults");
+ unlink("$coverageResultsDir$coverageDat");
+ unlink("$coverageResultsDir$coverageSymbols");
+ unlink("$coverageResultsDir$coverageProfile");
+ unlink("$coverageResultsDir$finalResultsFile");
+ }
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub parseConfigFile()
+{
+ if ( !defined $testConfig ){
+ print("Config file not defined, using default. \n");
+ $testConfig = $testConfigDefault;
+ }
+
+ open(CONFIG, $testConfig) or die("file $testConfig not found!\n");
+
+ @config_file_content = <CONFIG>;
+
+
+ for ($j = 0; $j <= $#config_file_content; $j++)
+ {
+ # remove \n from each line
+ $currline = @config_file_content[$j];
+ for ($currline) {
+ s/\n+$//;
+ }
+ @{ $testNamesAndLogFiles [$j] } = split( ",", $currline );
+ }
+
+ print Dumper( @testNamesAndLogFiles );
+
+ close(CONFIG);
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub buildTests()
+{
+ if ( !defined $qtProFile ){
+ print("Pro file not defined, using default. \n");
+ $qtProFile = $qtProFileDefault;
+ }
+ doSystemCall( "qmake $qtProFile" );
+ doSystemCall( "sbs reallyclean" );
+ doSystemCall( "qmake $qtProFile" );
+
+ $exclude = "-C \"EXCLUDE+*\tsrc\*\" -C \"EXCLUDE+*/*/tsrc/*\" -C \"EXCLUDE+*/*/*/tsrc/*\" -C \"EXCLUDE+moc_*\"";
+
+ doSystemCall( "call ctcwrap -i d -n $coverageResultsDir$coverageSymbols $exclude -2comp sbs.bat -c winscw_udeb" );
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub runTests()
+{
+ for $i ( 0 .. $#testNamesAndLogFiles ) {
+ $testName = $testNamesAndLogFiles[$i][0];
+ print("Running tests for: $testName\n");
+
+ $testCall = "\\epoc32\\release\\winscw\\udeb\\" . $testName . " -xml";
+ doSystemCall( $testCall );
+
+ for $j ( 1 .. $#{ $testNamesAndLogFiles [$i] } ) {
+ $logFile = $projectdrive . "\\epoc32\\winscw\\c\\" . $testNamesAndLogFiles[$i][$j];
+ print("Copying log file: $logFile\n");
+ copy( $logFile, "$coverageResultsDir" );
+ }
+ }
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub combineResults()
+{
+ open(COVERAGE, "$coverageResultsDir$coverageResultsFile") or die("file $coverageResultsFile not found!\n");
+ @coverageFileContent = <COVERAGE>;
+
+ # append coverage information after eunit results
+
+ for ($j = 0; $j <= $#coverageFileContent; $j++){
+ $currentLine = @coverageFileContent[$j];
+
+ if ($currentLine =~ /$cssLink/){
+ if ( open(CSSFILE, "$coverageResultsDir$cssFile") ){
+ # append css styles to results html
+ $outputString .= "<style type=\"text/css\"> body {";
+ @cssFileContent = <CSSFILE>;
+ my($line);
+ foreach $line (@cssFileContent){
+ $outputString .= $line;
+ }
+ $outputString .= "}</style>\n";
+ close(CSSFILE);
+ }
+ }
+ else{
+ $outputString .= $currentLine;
+
+ if ($currentLine =~ /$outputFileBodyStart/){
+ $outputString .= parseXmlResults();
+ $outputString .= "<br><br>"
+ }
+ }
+ }
+
+ open(NEWRESULTSFILE, "> $coverageResultsDir$finalResultsFile") or die "Cannot open final results file\n";
+ print NEWRESULTSFILE "$outputString";
+ close(NEWRESULTSFILE);
+ close(OUTPUT);
+ close(COVERAGE);
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub parseXmlResults()
+{
+ $qtestOutputString = "<span class=\"head1\">QTestLib Results</span><br><br>\n";
+
+
+ for $i ( 0 .. $#testNamesAndLogFiles ) {
+ $testName = $testNamesAndLogFiles[$i][0];
+
+ for $j ( 1 .. $#{ $testNamesAndLogFiles [$i] } ) {
+ $logFile = $testNamesAndLogFiles[$i][$j];
+ if ( -e "$coverageResultsDir$logFile" ){
+ print("Parsing: $logFile\n");
+ open(TESTRESULTS, "$coverageResultsDir$logFile");
+ $parser = new XML::Parser::Expat;
+ $parser->setHandlers('Start' => \&sh,
+ 'End' => \&eh,
+ 'Char' => \&ch);
+
+ $totalCount = 0;
+ $passedCount = 0;
+ $failedCount = 0;
+ eval{
+ ### try block
+ $parser->parse(*TESTRESULTS);
+ };
+ if ($@){
+ ### catch block
+ print("$logFile, parsing failed\n");
+ $qtestOutputString .= "<span class=\"red\">$logFile parsing failed, testcase execution might have failed </span><br>\n";
+ };
+ close(TESTRESULTS);
+
+ }
+ else{
+
+ print("$logFile, not found\n");
+ $qtestOutputString .= "<span class=\"head3\">";
+ $qtestOutputString .= "$testName => </span>";
+ $qtestOutputString .= "<span class=\"red\">$logFile not found, testcase building might have failed </span><br>\n";
+ }
+ }
+ }
+
+ return $qtestOutputString;
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub sh
+{
+ my ($p, $el, %atts) = @_;
+ if ( $el eq $xmlDllLine )
+ {
+ $qtestOutputString .= "<span class=\"head3\">";
+ $dllName = %atts->{name};
+ @dllNameParts = split m!(\\)!, $dllName;
+ $dllName = $dllNameParts[$#dllNameParts];
+ $qtestOutputString .= "$dllName => </span>";
+ }
+
+ if ( $el eq $xmlResultLine )
+ {
+ $status = %atts->{type};
+ if ( $status eq $xmlCasePassed )
+ {
+ $passedCount++;
+ }
+ else
+ {
+ $failedCount++;
+ }
+ }
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub eh
+{
+ my ($p, $el) = @_;
+ if ( $el eq $xmlDllLine )
+ {
+ $totalCount = $passedCount + $failedCount;
+ if ( $failedCount > 0 || $totalCount == 0 )
+ {
+ $qtestOutputString .= "<span class=\"red\">Testcases passed/run: $passedCount/$totalCount </span><br>\n";
+ }
+ else
+ {
+ $qtestOutputString .= "<span class=\"blue\">Testcases passed/run: $passedCount/$totalCount </span><br>\n";
+ }
+ $passedCount = 0;
+ $failedCount = 0;
+ }
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub ch
+{
+ my ($p, $el) = @_;
+ #print ("$el\n");
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub doSystemCall
+{
+ #print("\nDoing system call: $_[0]\n");
+ #system($_[0]);
+ system("echo Doing system call: $_[0] >> $coverageResultsDir$buildResults");
+ system("$_[0] >> $coverageResultsDir$buildResults 2>&1");
+}
+
+# -----------------------------------------------------------------------------
+#
+# -----------------------------------------------------------------------------
+#
+sub print_help
+{
+ print("\n*************************************************************\n\n");
+ print("Script runs by default all multimediasharing qt tests\n");
+ print("and creates build, test and coverage results to:\n\n");
+ print(" mmsharing/src/internal/unittestrunner/qtresults/\n\n");
+ print("Own configuration file (list of components to be processed)\n");
+ print("can be used as well:\n\n");
+ print(" >unittest_ctc.pl -config=myowntestcomponents.txt\n\n");
+ print("The text file should follow the syntax of default configuration file\n");
+ print("mmsharing/src/internal/unittestrunner/unittest_qt_config.txt\n\n");
+ print("When running just some set of components you might want to \"merge\" the results");
+ print("with existing coverage results.\n");
+ print("That is possible with command:\n\n");
+ print(" >unittest_ctc.pl -eunitdlls=myowneunitcomponents.txt -noclean\n");
+ print("\n*************************************************************\n");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/unittestrunner/unittest_qt_config.txt Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,3 @@
+ut_lcuieng -noprompt,ut_lcui_lcUiEngine.xml,ut_lcui_lcactivitymanager.xml
+ut_lcui -noprompt,ut_lcui_LcViewManager.xml,ut_lcui_LcUiComponentRepository.xml,ut_lcui_LcView.xml,ut_lcui_LcEffectHandler.xml,ut_lcui_LcVideoWidget.xml
+ut_mmshapp -noprompt,ut_lcapplication.xml
\ No newline at end of file