diff --git a/imagewidget.cpp b/imagewidget.cpp index f69d3be..c8ca9e3 100644 --- a/imagewidget.cpp +++ b/imagewidget.cpp @@ -15,6 +15,7 @@ int FILTERING = 1; bool OpenGLES = false; const int LUT_SIZE = 32; +bool BESTFIT = false; struct RawImageType { @@ -87,6 +88,7 @@ ImageWidgetGL::ImageWidgetGL(Database *database, QWidget *parent) : QOpenGLWidge }); setMouseTracking(true); + m_bestFit = BESTFIT; } ImageWidgetGL::~ImageWidgetGL() diff --git a/mainwindow.cpp b/mainwindow.cpp index 73bb658..06a6454 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -560,6 +560,8 @@ void MainWindow::loadFile(const QString &path) _lastDir = info.canonicalPath(); QSettings settings; settings.setValue("mainwindow/lastdir", _lastDir); + if(settings.value("settings/bestfit", false).toBool()) + m_image->bestFit(); } } diff --git a/settingsdialog.cpp b/settingsdialog.cpp index 04585ba..3e87b1c 100644 --- a/settingsdialog.cpp +++ b/settingsdialog.cpp @@ -9,6 +9,7 @@ extern int DEFAULT_WIDTH; extern double SATURATION; extern int FILTERING; +extern bool BESTFIT; class EvenNumber : public QSpinBox { @@ -75,6 +76,10 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) m_qualityThumbnail->setChecked(QUALITY_RESIZE); m_qualityThumbnail->setToolTip(tr("Use box filter when downsampling thumbnails instead of nearest. Slightly slower.")); + m_bestFit = new QCheckBox(tr("Best Fit on image load")); + m_bestFit->setToolTip(tr("Set Best Fit zoom level when opening new image.")); + m_bestFit->setChecked(BESTFIT); + layout->addRow(tr("Image preload count"), m_preloadImages); layout->addRow(tr("Thumbnails size"), m_thumSize); layout->addRow(tr("Saturation"), m_saturation); @@ -82,6 +87,7 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) layout->addRow(tr("Image interpolation"), m_filtering); layout->addRow(m_qualityThumbnail); layout->addRow(m_useNativeDialog); + layout->addRow(m_bestFit); //layout->addRow(new QLabel(tr("Changes in settings will take effect after program restart."))); QDialogButtonBox *buttonBox = new QDialogButtonBox(this); @@ -103,6 +109,7 @@ void SettingsDialog::loadSettings() SATURATION = settings.value("settings/saturation", 95.0).toDouble() / 100.0; FILTERING = settings.value("settings/filtering", FILTERING).toInt(); QUALITY_RESIZE = settings.value("settings/qualitythumbnail", QUALITY_RESIZE).toBool(); + BESTFIT = settings.value("settings/bestfit", BESTFIT).toBool(); QApplication::setAttribute(Qt::AA_DontUseNativeDialogs, settings.value("settings/dontusenativedialogs", false).toBool()); } @@ -127,7 +134,9 @@ void SettingsDialog::saveSettings() settings.setValue("settings/qualitythumbnail", m_qualityThumbnail->isChecked()); QUALITY_RESIZE = m_qualityThumbnail->isChecked(); FILTERING = m_filtering->currentIndex(); + BESTFIT = m_bestFit->isChecked(); settings.setValue("settings/filtering", FILTERING); + settings.setValue("settings/bestfit", BESTFIT); SATURATION = m_saturation->value() / 100.0; QApplication::setAttribute(Qt::AA_DontUseNativeDialogs, m_useNativeDialog->isChecked()); if(DEFAULT_WIDTH != m_preloadImages->value()) diff --git a/settingsdialog.h b/settingsdialog.h index 6e23d6f..2d8855b 100644 --- a/settingsdialog.h +++ b/settingsdialog.h @@ -25,6 +25,7 @@ private: QCheckBox *m_useNativeDialog; QCheckBox *m_qualityThumbnail; QComboBox *m_filtering; + QCheckBox *m_bestFit; }; #endif // SETTINGSDIALOG_H