Skip to content

Commit

Permalink
Cleanup the default size computation for the surface viewer.
Browse files Browse the repository at this point in the history
  • Loading branch information
zackr committed Sep 24, 2011
1 parent 07bb055 commit 2ffe9f8
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
24 changes: 24 additions & 0 deletions gui/imageviewer.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
#include "imageviewer.h"

#include <QDesktopWidget>
#include <QPainter>
#include <QPixmap>
#include <QScrollBar>

ImageViewer::ImageViewer(QWidget *parent)
: QDialog(parent)
Expand All @@ -24,8 +26,30 @@ ImageViewer::ImageViewer(QWidget *parent)

void ImageViewer::setImage(const QImage &image)
{
m_image = image;
QPixmap px = QPixmap::fromImage(image);
imageLabel->setPixmap(px);
updateGeometry();
}

QSize ImageViewer::sizeHint() const
{
QSize size;

int vScrollWidth = scrollArea->verticalScrollBar() ?
scrollArea->verticalScrollBar()->width() : 0;
int hScrollHeight = scrollArea->horizontalScrollBar() ?
scrollArea->horizontalScrollBar()->height() : 0;
QSize optimalWindowSize(m_image.width() + vScrollWidth,
m_image.height() + hScrollHeight);

QRect screenRect = QApplication::desktop()->availableGeometry();
const float maxPercentOfDesktopSpace = 0.8;
QSize maxAvailableSize(maxPercentOfDesktopSpace * screenRect.width(),
maxPercentOfDesktopSpace * screenRect.height());

return QSize(qMin(optimalWindowSize.width(), maxAvailableSize.width()),
qMin(optimalWindowSize.height(), maxAvailableSize.height()));
}

#include "imageviewer.moc"
4 changes: 4 additions & 0 deletions gui/imageviewer.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ class ImageViewer : public QDialog, public Ui_ImageViewer
ImageViewer(QWidget *parent = 0);

void setImage(const QImage &image);

QSize sizeHint() const;
private:
QImage m_image;
};


Expand Down
3 changes: 0 additions & 3 deletions gui/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -618,9 +618,6 @@ void MainWindow::showSelectedSurface()
QImage img = var.value<QImage>();
viewer->setImage(img);

QRect screenRect = QApplication::desktop()->availableGeometry();
viewer->resize(qMin(int(0.75 * screenRect.width()), img.width()) + 40,
qMin(int(0.75 * screenRect.height()), img.height()) + 40);
viewer->show();
viewer->raise();
viewer->activateWindow();
Expand Down

0 comments on commit 2ffe9f8

Please sign in to comment.