From kde-commits Mon Mar 31 21:20:01 2014 From: Emmanuel Lepage Vallee Date: Mon, 31 Mar 2014 21:20:01 +0000 To: kde-commits Subject: [sflphone-kde/contact_refactor] src: [ #44118 ] Fix rotate left/right buttons Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=139630081216478 Git commit f2f8c84aa1d8a17a63d62e06f51f9862ae2cb871 by Emmanuel Lepage Vall= ee. Committed on 31/03/2014 at 20:12. Pushed by lepagevalleeemmanuel into branch 'contact_refactor'. [ #44118 ] Fix rotate left/right buttons M +11 -0 src/lib/call.cpp M +2 -0 src/lib/call.h M +16 -2 src/lib/videorenderer.cpp M +10 -5 src/lib/videorenderer.h M +6 -0 src/widgets/videodock.cpp M +2 -0 src/widgets/videoglframe.cpp M +34 -13 src/widgets/videoscene.cpp M +3 -0 src/widgets/videoscene.h M +18 -0 src/widgets/videowidget3.cpp M +3 -0 src/widgets/videowidget3.h http://commits.kde.org/sflphone-kde/f2f8c84aa1d8a17a63d62e06f51f9862ae2cb871 diff --git a/src/lib/call.cpp b/src/lib/call.cpp index 0be3e5f..eb86407 100644 --- a/src/lib/call.cpp +++ b/src/lib/call.cpp @@ -608,6 +608,17 @@ AbstractHistoryBackend* Call::backend() const } = = +///Does this call currently has video +bool Call::hasVideo() const +{ + #ifdef ENABLE_VIDEO + return VideoModel::instance()->getRenderer(this) !=3D nullptr; + #else + return false; + #endif +} + + ///Get the current state Call::State Call::state() const { diff --git a/src/lib/call.h b/src/lib/call.h index 18106da..ec90b46 100644 --- a/src/lib/call.h +++ b/src/lib/call.h @@ -279,6 +279,7 @@ public: Q_PROPERTY( QString toHumanStateName READ toHumanStateName = ) Q_PROPERTY( bool missed READ isMissed = ) Q_PROPERTY( Direction direction READ direction = ) + Q_PROPERTY( bool hasVideo READ hasVideo = ) Q_PROPERTY( Call::LegacyHistoryState historyState READ historyState= ) = //Read/write properties @@ -329,6 +330,7 @@ public: bool isMissed () const; Call::Direction direction () const; AbstractHistoryBackend* backend () const; + bool hasVideo () const; = //Automated function Call::State stateChanged(const QString & newState); diff --git a/src/lib/videorenderer.cpp b/src/lib/videorenderer.cpp index 89cd560..e92f3b3 100644 --- a/src/lib/videorenderer.cpp +++ b/src/lib/videorenderer.cpp @@ -29,8 +29,7 @@ #include #include #include -// #include -#include + = #ifndef CLOCK_REALTIME #define CLOCK_REALTIME 0 @@ -265,6 +264,15 @@ void VideoRenderer::timedEvents() bool ok =3D renderToBitmap(); = if (ok =3D=3D true) { + + //Compute the FPS shown to the client + if (m_CurrentTime.second() !=3D QTime::currentTime().second()) { + m_Fps =3D m_fpsC; + m_fpsC=3D0; + m_CurrentTime =3D QTime::currentTime(); + } + m_fpsC++; + emit frameUpdated(); } else { @@ -349,6 +357,12 @@ QMutex* VideoRenderer::mutex() return m_pMutex; } = +///Get the current frame rate of this renderer +int VideoRenderer::fps() const +{ + return m_Fps; +} + = /*************************************************************************= **** * = * diff --git a/src/lib/videorenderer.h b/src/lib/videorenderer.h index d07607a..cff3189 100644 --- a/src/lib/videorenderer.h +++ b/src/lib/videorenderer.h @@ -20,6 +20,7 @@ = //Base #include +#include #include "typedefs.h" #include = @@ -49,11 +50,12 @@ class LIB_EXPORT VideoRenderer : public QObject { bool startShm (); = //Getters - const char* rawData (); - bool isRendering (); - QByteArray currentFrame (); - Resolution activeResolution(); - QMutex* mutex (); + const char* rawData () ; + bool isRendering () ; + QByteArray currentFrame () ; + Resolution activeResolution() ; + QMutex* mutex () ; + int fps () const; = //Setters void setResolution(QSize size); @@ -76,6 +78,9 @@ class LIB_EXPORT VideoRenderer : public QObject { QMutex* m_pMutex ; QMutex* m_pSSMutex ; QString m_Id ; + int m_fpsC ; + int m_Fps ; + QTime m_CurrentTime; = //Constants static const int TIMEOUT_SEC =3D 1; // 1 second diff --git a/src/widgets/videodock.cpp b/src/widgets/videodock.cpp index e8abbfb..64765e2 100644 --- a/src/widgets/videodock.cpp +++ b/src/widgets/videodock.cpp @@ -27,6 +27,8 @@ #include "videowidget3.h" #include "videoscene.h" #include "videotoolbar.h" +#include "actioncollection.h" +#include "extendedaction.h" = class VideoWidgetItem : public QWidgetItem { public: @@ -60,6 +62,10 @@ VideoDock::VideoDock(QWidget* parent) : QDockWidget(pare= nt) = VideoToolbar* tb =3D new VideoToolbar(this); l->addWidget(tb,2,0); + + connect(ActionCollection::instance()->videoRotateLeftAction() ,SIGNAL(t= riggered(bool)),m_pVideoWidet,SLOT(slotRotateLeft())); + connect(ActionCollection::instance()->videoRotateRightAction(),SIGNAL(t= riggered(bool)),m_pVideoWidet,SLOT(slotRotateRight())); + connect(ActionCollection::instance()->videoPreviewAction() ,SIGNAL(t= riggered(bool)),m_pVideoWidet,SLOT(slotShowPreview())); } = ///Set current renderer diff --git a/src/widgets/videoglframe.cpp b/src/widgets/videoglframe.cpp index 3f32a25..6585f7d 100644 --- a/src/widgets/videoglframe.cpp +++ b/src/widgets/videoglframe.cpp @@ -155,6 +155,7 @@ void ThreadedPainter2::draw(QPainter* p) glEnable(GL_MULTISAMPLE); glEnable(GL_CULL_FACE); glScalef(-1.0f*scale, -1.0f*scale, 1.0f*scale); + glRotatef(rot_x, 1.0f, 0.0f, 0.0f); glRotatef(rot_y, 0.0f, 1.0f, 0.0f); glRotatef(rot_z, 0.0f, 0.0f, 1.0f); @@ -276,6 +277,7 @@ void VideoGLFrame::setRotZ(float rot) = void VideoGLFrame::setRotY(float rot) { + qDebug() << "HERE" << this << rot << m_pPainter; m_pPainter->rot_y =3D rot; } = diff --git a/src/widgets/videoscene.cpp b/src/widgets/videoscene.cpp index b84bf58..5d06bd9 100644 --- a/src/widgets/videoscene.cpp +++ b/src/widgets/videoscene.cpp @@ -85,12 +85,13 @@ void VideoScene::mouseMoveEvent(QGraphicsSceneMouseEven= t *event) update(); } foreach(VideoGLFrame* frm, m_lFrames) { - const QPointF diff =3D event->pos() - frm->anchor(); +// const QPointF diff =3D event->pos() - frm->anchor(); if (event->buttons() & Qt::LeftButton) { - frm->setRotX(frm->rotX()+diff.y()/5.0f); - frm->setRotY(frm->rotY()+diff.x()/5.0f); - } else if (event->buttons() & Qt::RightButton) { - frm->setRotZ(frm->rotZ()+diff.x()/5.0f); + = + frm->setRotZ(frm->rotZ()+1); +// frm->setRotY(frm->rotY()+1/5.0f); +// } else if (event->buttons() & Qt::RightButton) { +// frm->setRotZ(frm->rotZ()+diff.x()/5.0f); } = frm->setAnchor(event->pos()); @@ -126,15 +127,15 @@ void VideoScene::wheelEvent(QGraphicsSceneWheelEvent = *event) if (event->isAccepted()) return; = - event->accept(); - foreach(VideoGLFrame* frm, m_lFrames) { - if (frm) { +// event->accept(); +// foreach(VideoGLFrame* frm, m_lFrames) { +// if (frm) { // frm->renderer()->mutex()->lock(); - frm->setScale(frm->scale() +(event->delta() > 0 ?1:-1)*frm->scale= ()*0.1f); +// frm->setScale(frm->scale() +(event->delta() > 0 ?1:-1)*frm->sc= ale()*0.1f); // frm->renderer()->mutex()->unlock(); - } - } - update(); +// } +// } +// update(); } = void VideoScene::frameChanged() @@ -151,6 +152,26 @@ void VideoScene::frameChanged() void VideoScene::addFrame(VideoGLFrame* frame) { m_lFrames << frame; - qDebug() << "HERE"; // m_pToolbar->resizeToolbar(); } + + +void VideoScene::slotRotateLeft() +{ + foreach(VideoGLFrame* frm, m_lFrames) { + frm->setRotZ(frm->rotZ()-90); + } +} + +void VideoScene::slotRotateRight() +{ + foreach(VideoGLFrame* frm, m_lFrames) { + frm->setRotZ(frm->rotZ()+90); + } +} + +void VideoScene::slotShowPreview() +{ + = +} + diff --git a/src/widgets/videoscene.h b/src/widgets/videoscene.h index 9eb1dd8..dfb771f 100644 --- a/src/widgets/videoscene.h +++ b/src/widgets/videoscene.h @@ -55,6 +55,9 @@ private: public Q_SLOTS: void setBackgroundColor(); void frameChanged (); + void slotRotateLeft(); + void slotRotateRight(); + void slotShowPreview(); }; = #endif diff --git a/src/widgets/videowidget3.cpp b/src/widgets/videowidget3.cpp index dda94b0..1aa8421 100644 --- a/src/widgets/videowidget3.cpp +++ b/src/widgets/videowidget3.cpp @@ -89,3 +89,21 @@ void VideoWidget3::resizeEvent(QResizeEvent* event) { m_pScene->setSceneRect(0,0,event->size().width(),event->size().height()= ); } + + + +void VideoWidget3::slotRotateLeft() +{ + m_pScene->slotRotateLeft(); +} + +void VideoWidget3::slotRotateRight() +{ + m_pScene->slotRotateRight(); +} + +void VideoWidget3::slotShowPreview() +{ + m_pScene->slotShowPreview(); +} + diff --git a/src/widgets/videowidget3.h b/src/widgets/videowidget3.h index 353fcda..b0f559b 100644 --- a/src/widgets/videowidget3.h +++ b/src/widgets/videowidget3.h @@ -47,6 +47,9 @@ private: public Q_SLOTS: void addRenderer(VideoRenderer* renderer); void removeRenderer(VideoRenderer* renderer); + void slotRotateLeft(); + void slotRotateRight(); + void slotShowPreview(); = Q_SIGNALS: void changed();