diff -r 73a1feb507fb -r bc78a40cd63c mmsharing/livecommsui/lcui/src/lcview.cpp --- 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - - -#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( mRepository.findWidget( lcLabelRecipientId ) ); - mDuration = - static_cast( mRepository.findWidget( lcLabelDurationId ) ); - mContactIcon = - static_cast( mRepository.findWidget( lcIconContactId ) ); - mSharedVideoWidget = - static_cast( - mRepository.findWidget( lcWidgetSendVideoId ) ); - mReceivedVideoWidget = - static_cast( - mRepository.findWidget( lcWidgetRecvVideoId ) ); - mChangeCameraAction = - static_cast( mRepository.findObject( lcActChangeCameraId ) ); - mMuteAction = - static_cast( mRepository.findObject( lcActMuteId ) ); - mSpeakerAction = - static_cast( mRepository.findObject( lcActSpeakerId ) ); - mDisableCameraAction = - static_cast( mRepository.findObject( lcActDisableCameraId ) ); - - mDisableCameraMenuAction = - static_cast( mRepository.findObject( lcActMenuDisableCameraId ) ); - - mEndCallButton = - static_cast( mRepository.findObject( lcButtonEndCall ) ); - - if ( mEndCallButton ) { - connect( mEndCallButton, SIGNAL(clicked()), this, SLOT(endVideoSession())); - } - - if ( mSharedVideoWidget ) { - mSharedVideoEffectOverlay = static_cast( - mRepository.findWidget( lcWidgetSendVideoId2 ) ); - if ( mSharedVideoEffectOverlay ) { - mSharedVideoEffectOverlay->show(); - } - } - - mReceivedVideoEffectOverlay = - static_cast( 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 ( 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(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( - mRepository.findObject(lcActSwapViewsId)); - menu()->addAction(swapAction); - - HbAction* openKeypadAction = static_cast( - 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