mmsharing/livecommsui/lcuiengine/inc/lcuiengine_p.h
branchRCL_3
changeset 22 73a1feb507fb
--- /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