--- a/mmsharing/livecommsui/lcui/src/lcview.cpp Tue Aug 31 15:12:07 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1074 +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
-#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