Author: JirkaH Date: 2010-02-17 13:34:01 +0100 (Wed, 17 Feb 2010) New Revision: 1759 Modified: branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.cpp branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.h Log: scroll area for zoomed area scales too now Modified: branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.cpp =================================================================== --- branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.cpp 2010-02-17 11:42:26 UTC (rev 1758) +++ branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.cpp 2010-02-17 12:34:01 UTC (rev 1759) @@ -74,6 +74,11 @@ } +/** Returns geometry for scroll area, when in zoomed mode and scale == 1. It makes sure that whole first page is visible, if it is possible. + + @return geometry for scroll area + */ + QRect PDFViewer::getScrollGeometry() { int newX; int newY; @@ -314,12 +319,8 @@ */ int PDFViewer::adjustScrollBar(QScrollBar * scrollBar, double factor) { - qDebug() << "-------------------"; - qDebug() << "factor" << factor << "val" << scrollBar->value() << "pageStep" << scrollBar->pageStep(); - qDebug() << "maximum" << scrollBar->maximum(); + int value = int(factor * scrollBar->value() + ((factor - 1) * scrollBar->pageStep()/2)); - int value = int(factor * scrollBar->value() + ((factor - 1) * scrollBar->pageStep()/2)); - qDebug() << "final val" << value; scrollBar->setValue(value); return value; } @@ -336,6 +337,8 @@ scroll->verticalScrollBar()->setValue(val1); scroll->horizontalScrollBar()->setValue(val2); scaled--; + QRect rect = getScrollGeometry(); + scroll->setGeometry(rect); } else { if (fadeEffect.isActive()) { stopFadeEffect(); @@ -356,6 +359,7 @@ void PDFViewer::zoom() { int val1, val2; + double factor; if (pdfZoomed == NULL ) { //qDebug() << "Nemuzu zvetsovat, neni nastaveny widget PDFZoomed" ; @@ -372,12 +376,12 @@ toBeZoomed = true; getFirstPageBig(); } else { - if ( scaled >= SCALE_MAX ) { // do not allow to zoom too much (SCALE_FACTOR^5) + if ( scaled >= SCALE_MAX ) { // do not allow to zoom too much return; } scaled++; - qDebug() << scroll->verticalScrollBar()->value(); + //let's take care of image position - we will try to keep focus on the middle of an image val1 = adjustScrollBar(scroll->verticalScrollBar(), SCALE_FACTOR); val2 = adjustScrollBar(scroll->horizontalScrollBar(), SCALE_FACTOR); @@ -386,6 +390,9 @@ //scaling could move the bars out, so make sure they are in correct position. scroll->verticalScrollBar()->setValue(val1); scroll->horizontalScrollBar()->setValue(val2); + + QRect rect = getScrollGeometry(); + scroll->setGeometry(rect); } } Modified: branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.h =================================================================== --- branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.h 2010-02-17 11:42:26 UTC (rev 1758) +++ branches/client/pdf-presentation-branch/elvys-client/src/pdfviewer.h 2010-02-17 12:34:01 UTC (rev 1759) @@ -34,7 +34,7 @@ public: PDFViewer(QWidget * parent, const QRect & rect); //inicializuju dedene promene - void setPDFZoomed(PDFZoomed * _pdfZoomed); + void setPDFZoomed(PDFZoomed * _pdfZoomed); void setPages(QList <int> & _pageNumbers); virtual ~PDFViewer(); @@ -51,7 +51,7 @@ virtual void stopFadeEffect(); void getFirstPageBig(); void getFirstPageSmall(); - QRect getScrollGeometry(); + QRect getScrollGeometry(); virtual void zoom(); virtual void unzoom(); virtual void showPDF();