From 3f14c4198dd29b3428e37befe5aec5fa8c5bcf68 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 2 Jul 2022 21:14:23 +0200 Subject: Set fixed size for viewer.cpp While adding new pictures to my collection, I realized that the simple viewer didn't obey it's size restrictions and grew out of proportions. So make the maximum size configurable. --- configurationdialog.cpp | 19 ++++++++++++++----- configurationdialog.h | 2 ++ viewer.cpp | 9 +++++++-- viewer.h | 1 + 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/configurationdialog.cpp b/configurationdialog.cpp index acb7b46..9f49e8e 100644 --- a/configurationdialog.cpp +++ b/configurationdialog.cpp @@ -244,16 +244,21 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S fillPositions(mMapBox); pvInfoL->addRow(tr("Picture mapping information"), mMapBox); picInfoBox->setLayout(pvInfoL); - - //picture viewer - size - QFormLayout *pvSizeWHL = new QFormLayout; - QVBoxLayout *pvSizeL = new QVBoxLayout; - pvSizeL->addLayout(pvSizeWHL); + QFormLayout *pvMaxSizeL = new QFormLayout; + QGroupBox *maxSizeBox = new QGroupBox(tr("Max. picture size")); + mPicMaxHeight = new QSpinBox; + mPicMaxHeight->setMaximum(10000); + mPicMaxWidth = new QSpinBox; + mPicMaxWidth->setMaximum(10000); + pvMaxSizeL->addRow(tr("Max. picture height"), mPicMaxHeight); + pvMaxSizeL->addRow(tr("Max. picture width"), mPicMaxWidth); + maxSizeBox->setLayout(pvMaxSizeL); //picture viewer - layout QWidget *picWidget = new QWidget; QVBoxLayout *picLayout = new QVBoxLayout; picLayout->addWidget(picInfoBox); + picLayout->addWidget(maxSizeBox); picLayout->addStretch(); picWidget->setLayout(picLayout); @@ -449,6 +454,8 @@ void ConfigurationDialog::readSettings(){ //read pictures mInfoBox->setCurrentIndex(mInfoBox->findData(s.value("ui/infoposition", TopLeft).toInt())); mMapBox->setCurrentIndex(mMapBox->findData(s.value("ui/mappingposition", TopRight).toInt())); + mPicMaxHeight->setValue(s.value("ui/maxheight", 1100).toInt()); + mPicMaxWidth->setValue(s.value("ui/maxwidth", 1800).toInt()); //read database mDatabaseHost->setText(s.value("database/hostname").toString()); @@ -529,6 +536,8 @@ void ConfigurationDialog::writeSettings(){ s.setValue("ui/infoposition", mPositionMap.value(curPos)); curPos = mMapBox->currentText(); s.setValue("ui/mappingposition", mPositionMap.value(curPos)); + s.setValue("ui/maxheight", mPicMaxHeight->value()); + s.setValue("ui/maxwidth", mPicMaxWidth->value()); //write database s.setValue("database/hostname", mDatabaseHost->text()); diff --git a/configurationdialog.h b/configurationdialog.h index 8a76051..704074f 100644 --- a/configurationdialog.h +++ b/configurationdialog.h @@ -78,6 +78,8 @@ class ConfigurationDialog : public SmDialog { QCheckBox *mExpensive; QCheckBox *mClearNewMovieWizard; QSpinBox *mAutoRefreshValue; + QSpinBox *mPicMaxHeight; + QSpinBox *mPicMaxWidth; QLabel *mClipboardColor; QLabel *mBaseColor; QLabel *mAlternateBaseColor; diff --git a/viewer.cpp b/viewer.cpp index cba6314..e11a02f 100644 --- a/viewer.cpp +++ b/viewer.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "helper.h" #include "viewer.h" @@ -14,6 +15,10 @@ Viewer::Viewer(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f), mCurInd setBackgroundRole(QPalette::AlternateBase); mLabel = new QLabel; mLabel->setAlignment(Qt::AlignCenter); + QSettings s; + int maxHeight = s.value("ui/maxheight").toInt(); + int maxWidth = s.value("ui/maxwidth").toInt(); + mMaxSize = QSize(maxWidth, maxHeight); QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addWidget(mLabel); setLayout(mainLayout); @@ -92,8 +97,8 @@ void Viewer::displayFile(int index){ setBackgroundRole(QPalette::AlternateBase); } QPixmap pm(mFiles.at(mCurIndex)); - if((pm.height() > height()) || (pm.width() > width())){ - pm = pm.scaled(QSize(width() - 20, height() - 20), Qt::KeepAspectRatio, Qt::SmoothTransformation); + if(pm.height() > mMaxSize.height() || pm.width() > mMaxSize.width()){ + pm = pm.scaled(mMaxSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); } mLabel->setPixmap(pm); QString winTitle = QString(tr("%1 Viewer [%2]")).arg(qApp->applicationName(), mFiles.at(mCurIndex)); diff --git a/viewer.h b/viewer.h index e5a8a02..c3980c8 100644 --- a/viewer.h +++ b/viewer.h @@ -22,6 +22,7 @@ class Viewer : public QWidget { int mCurIndex; QLabel *mLabel; QStringList mFiles; + QSize mMaxSize; }; #endif // VIEWER_H -- cgit v1.2.3-70-g09d2