Author: JirkaH Date: 2010-02-17 17:19:53 +0100 (Wed, 17 Feb 2010) New Revision: 1762 Modified: branches/client/pdf-presentation-branch/elvys-client/Makefile branches/client/pdf-presentation-branch/elvys-client/elvys-client.pro.user branches/client/pdf-presentation-branch/elvys-client/src/pdfpresentationviewer.cpp branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.cpp branches/client/pdf-presentation-branch/elvys-client/src/videodocument.cpp branches/client/pdf-presentation-branch/elvys-client/src/videodocument.h Log: even more changes.... Modified: branches/client/pdf-presentation-branch/elvys-client/Makefile =================================================================== --- branches/client/pdf-presentation-branch/elvys-client/Makefile 2010-02-17 15:30:14 UTC (rev 1761) +++ branches/client/pdf-presentation-branch/elvys-client/Makefile 2010-02-17 16:19:53 UTC (rev 1762) @@ -1,6 +1,6 @@ ############################################################################# # Makefile for building: elvys-client -# Generated by qmake (2.01a) (Qt 4.5.3) on: Tue Feb 16 09:19:19 2010 +# Generated by qmake (2.01a) (Qt 4.5.3) on: Wed Feb 17 09:52:32 2010 # Project: elvys-client.pro # Template: subdirs # Command: /usr/bin/qmake -spec /usr/share/qt4/mkspecs/linux-g++ -unix CONFIG+=debug_and_release -o Makefile elvys-client.pro Modified: branches/client/pdf-presentation-branch/elvys-client/elvys-client.pro.user =================================================================== --- branches/client/pdf-presentation-branch/elvys-client/elvys-client.pro.user 2010-02-17 15:30:14 UTC (rev 1761) +++ branches/client/pdf-presentation-branch/elvys-client/elvys-client.pro.user 2010-02-17 16:19:53 UTC (rev 1762) @@ -113,7 +113,6 @@ <value type="QString" >KDE_SESSION_VERSION=4</value> <value type="QString" >LADSPA_PATH=/usr/lib/ladspa</value> <value type="QString" >LANG=en_US.UTF-8</value> - <value type="QString" >LANGUAGE=</value> <value type="QString" >LC_CTYPE=en_US.UTF-8</value> <value type="QString" >LESS=-R -M --shift 5</value> <value type="QString" >LESSOPEN=|lesspipe.sh %s</value> @@ -191,7 +190,6 @@ <value type="QString" >KDE_SESSION_VERSION=4</value> <value type="QString" >LADSPA_PATH=/usr/lib/ladspa</value> <value type="QString" >LANG=en_US.UTF-8</value> - <value type="QString" >LANGUAGE=</value> <value type="QString" >LC_CTYPE=en_US.UTF-8</value> <value type="QString" >LESS=-R -M --shift 5</value> <value type="QString" >LESSOPEN=|lesspipe.sh %s</value> Modified: branches/client/pdf-presentation-branch/elvys-client/src/pdfpresentationviewer.cpp =================================================================== --- branches/client/pdf-presentation-branch/elvys-client/src/pdfpresentationviewer.cpp 2010-02-17 15:30:14 UTC (rev 1761) +++ branches/client/pdf-presentation-branch/elvys-client/src/pdfpresentationviewer.cpp 2010-02-17 16:19:53 UTC (rev 1762) @@ -492,7 +492,7 @@ Q_UNUSED(event); if (! zoomed ) { // I might get called in zoomed state - + setBorderFocused(); _normalGeometry = geometry(); } Modified: branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.cpp =================================================================== --- branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.cpp 2010-02-17 15:30:14 UTC (rev 1761) +++ branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.cpp 2010-02-17 16:19:53 UTC (rev 1762) @@ -420,6 +420,7 @@ if (! zoomed ) { // I might get called in zoomed state _normalGeometry = geometry(); + setBorderFocused(); } if (scroll) { scroll->setGeometry(getScrollGeometry()); Modified: branches/client/pdf-presentation-branch/elvys-client/src/videodocument.cpp =================================================================== --- branches/client/pdf-presentation-branch/elvys-client/src/videodocument.cpp 2010-02-17 15:30:14 UTC (rev 1761) +++ branches/client/pdf-presentation-branch/elvys-client/src/videodocument.cpp 2010-02-17 16:19:53 UTC (rev 1762) @@ -1,7 +1,9 @@ #include "videodocument.h" +#include "math.h" + /** class contructor - @arg doc another document from which construct geometry + @arg doc another document from which geometry is constructed @arg id of this document */ @@ -27,11 +29,12 @@ vlayout->addWidget(slider); this->setLayout(vlayout); + connect(player, SIGNAL(finished()), this, SLOT(completelyUnZoom())); connect(player, SIGNAL(finished()), this, SLOT(replay())); setBorder(false); } -/** class descrutor. +/** class destructor. */ VideoDocument::~VideoDocument() { @@ -39,6 +42,13 @@ delete vlayout; } + + +void VideoDocument::managePlayerState() { + +} + + /** Loads document to play. It does nothing if the same file is already loaded. @arg name name of the file to load */ @@ -54,6 +64,7 @@ fullName = AppConfig::getInstance()->getLocalDataDir() + _name; MediaSource source(fullName); player->load(source); + connect(player->mediaObject(), SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(managePlayerState())); player->setVolume(0); slider->setMediaObject(player->mediaObject()); @@ -127,7 +138,7 @@ void VideoDocument::seek(qint64 pos) { if (player->isPlaying()) { - player->seek(pos); // do not disturb audience + player->seek(pos); } else { player->play(); player->seek(pos); @@ -175,7 +186,64 @@ return _startAt; } +QRect VideoDocument::getZoomedGeometry(int scale) { + int newX; + int newY; + int overlap = 0; + int zoomW; + int zoomH; + QWidget * parW = parentWidget(); + if ( scale == 0) { + zoomW = AppConfig::getInstance()->getZoomWidth(parW); + zoomH = AppConfig::getInstance()->getZoomHeight(parW); + } else { //we must be zoomed already + zoomW = AppConfig::getInstance()->getZoomWidth(parW) * pow(SCALE_FACTOR, scale); + zoomH = AppConfig::getInstance()->getZoomHeight(parW) * pow(SCALE_FACTOR, scale); + } + + if ( zoomW > parW->width()) { + zoomW = parW->width(); + } + + if ( zoomH > parW->height()) { + zoomH = parW->height(); + } + + int zoomWHalf = zoomW / 2; ///< half width of zoomed size + + int centerX = _normalGeometry.x() + _normalGeometry.width() / 2; ///< center of my widget + + + if ( (overlap = (centerX + zoomWHalf) - parW->width()) > 0 ) { // it wouldnt fit the screen! Move left + //we know that center needs to be in centerX - overlap + newX = (centerX - overlap) - zoomWHalf; + } else if ( (overlap = (centerX - zoomWHalf)) < 0 ) { //we are of the screen + newX = 0; + } else { //center it + newX = centerX - zoomWHalf; + } + + if ( (_normalGeometry.y() + AppConfig::getInstance()->getZoomHeight(parW)) > parW->height() ) { + newY = 0; + } else { + newY = _normalGeometry.y(); + } + + return QRect(newX, newY, zoomW, zoomH); +} + + +void VideoDocument::completelyUnZoom() { + if ( ! _zoomed ) { + return; + } + + scaled = 0; + unZoom(); +} + + /** Enlarges widget geometry and starts playing widget, if not playing */ @@ -191,10 +259,14 @@ raise(); player->raise(); player->videoWidget()->raise(); - setGeometry(0, 0, AppConfig::getInstance()->getZoomWidth(parentWidget()), AppConfig::getInstance()->getZoomHeight(parentWidget())); + setGeometry(getZoomedGeometry(scaled)); setBorder(false); } else { - + if ( width() == parentWidget()->width() && height() == parentWidget()->height()) { //we are zoomed maximaly already + return; + } + scaled++; + setGeometry(getZoomedGeometry(scaled)); } } } @@ -205,7 +277,8 @@ void VideoDocument::unZoom() { if ( _zoomed ) { if ( scaled != 0) { - + scaled--; + setGeometry(getZoomedGeometry(scaled)); } else { _zoomed = false; emit unZoomEvent(); @@ -228,7 +301,7 @@ Q_UNUSED(event); if (! _zoomed ) { // I might get called in zoomed state - + setBorder(hasFocus()); _normalGeometry = geometry(); } @@ -256,6 +329,13 @@ event->ignore(); } break; + case Qt::Key_Up: + if ( _zoomed ) { + seek(0); + } else { + event->ignore(); + } + break; case Qt::Key_Return: zoom(); break; Modified: branches/client/pdf-presentation-branch/elvys-client/src/videodocument.h =================================================================== --- branches/client/pdf-presentation-branch/elvys-client/src/videodocument.h 2010-02-17 15:30:14 UTC (rev 1761) +++ branches/client/pdf-presentation-branch/elvys-client/src/videodocument.h 2010-02-17 16:19:53 UTC (rev 1762) @@ -10,6 +10,7 @@ #include "appconfig.h" #include "document.h" +#include "constants.h" using namespace Phonon; @@ -29,7 +30,7 @@ virtual int close(); void setAutoStart(bool autoStart); void setStartAt(qint64 startAt); - void manageAutoStart(); + void manageAutoStart(); signals: void zoomEvent(int documentId, int layoutPos); @@ -53,11 +54,14 @@ virtual void resizeEvent(QResizeEvent * event); private slots: + void managePlayerState(); void replay(); void play(); + void completelyUnZoom(); void seek(qint64 pos); private: + QRect getZoomedGeometry(int scaled); void zoom(); void unZoom(); void setBorder(bool focused);