]> git.cworth.org Git - apitrace/blobdiff - gui/imageviewer.cpp
Pass list of frames by reference.
[apitrace] / gui / imageviewer.cpp
index fd5ec5d426b1a8aecac070bd81b75db85c906a77..4a11da5308d4c786d347cfc8472edc88e84115a7 100644 (file)
@@ -1,7 +1,9 @@
 #include "imageviewer.h"
 
+#include <QDesktopWidget>
 #include <QPainter>
 #include <QPixmap>
+#include <QScrollBar>
 
 ImageViewer::ImageViewer(QWidget *parent)
     : QDialog(parent)
@@ -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"