From 632ed58c717c9ffc540374377e3e7ba71f00407d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Sun, 2 Jun 2013 19:24:26 +0200 Subject: [PATCH] Added auto resize on previews Currently only available on previews handled by FreeFormHelper --- src/editing/common/freeformhelper.cpp | 40 +++++++++++++++++++++++++++ src/editing/common/freeformhelper.h | 8 ++++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/editing/common/freeformhelper.cpp b/src/editing/common/freeformhelper.cpp index 9ab7c67..36967fd 100644 --- a/src/editing/common/freeformhelper.cpp +++ b/src/editing/common/freeformhelper.cpp @@ -2,11 +2,16 @@ #include #include +#include +#include +#include #include +#include #include "dialogrender.h" #include "dialogexplorer.h" #include "rendering/scenery.h" #include "rendering/renderer.h" +#include "tools.h" Q_DECLARE_METATYPE(double*) @@ -24,8 +29,43 @@ FreeFormHelper::~FreeFormHelper() { } +bool FreeFormHelper::eventFilter(QObject* object, QEvent* event) +{ + if (event->type() == QEvent::Resize && object == _form_widget) + { + QSize form_size = ((QResizeEvent*) event)->size(); + QSize preview_size; + + if (form_size.width() > 1400 && form_size.height() > 900) + { + preview_size = QSize(300, 300); + } + else if (form_size.width() < 1000 || form_size.height() < 700) + { + preview_size = QSize(160, 160); + } + else + { + preview_size = QSize(220, 220); + } + + for (int i = 0; i < _previews.size(); i++) + { + if (_previews[i]->size() != preview_size) + { + _previews[i]->setMinimumSize(preview_size); + _previews[i]->setMaximumSize(preview_size); + _previews[i]->resize(preview_size); + } + } + } + return false; +} + void FreeFormHelper::startManaging() { + _form_widget->installEventFilter(this); + connect(this, SIGNAL(needLocalRefreshing()), _form_widget, SLOT(refreshFromLocalData())); connect(this, SIGNAL(needGlobalRefreshing()), _form_widget, SLOT(refreshFromFellowData())); connect(this, SIGNAL(needReverting()), _form_widget, SLOT(updateLocalDataFromScenery())); diff --git a/src/editing/common/freeformhelper.h b/src/editing/common/freeformhelper.h index c245fcb..5592d3b 100644 --- a/src/editing/common/freeformhelper.h +++ b/src/editing/common/freeformhelper.h @@ -1,11 +1,12 @@ #ifndef FREEFORMHELPER_H #define FREEFORMHELPER_H -#include -#include #include "widgetsliderdecimal.h" #include "../basepreview.h" +class QSlider; +class QPushButton; + class FreeFormHelper:public QObject { Q_OBJECT @@ -57,6 +58,9 @@ public slots: void processRenderClicked(); void processDecimalChange(double value); +protected: + bool eventFilter(QObject* object, QEvent* event); + private: QWidget* _form_widget;