scanned-image-extractor/scannerExtract/settingsdialog.cpp

129 lines
4.6 KiB
C++

/***********************************************************************
* This file is part of Scanned Image Extract.
*
* Scanned Image Extract is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Scanned Image Extract is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Scanned Image Extract. If not, see <http://www.gnu.org/licenses/>
*
*
* Copyright (C) 2015, Dominik Rueß; info@dominik-ruess.de
**********************************************************************/
#include "settingsdialog.h"
#include <QSettings>
#include <QDir>
#include <QFileDialog>
SettingsDialog::SettingsDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SettingsDialog)
{
ui->setupUi(this);
ui->tabWidget->removeTab(1);
load();
connect(ui->toolButton_folder, SIGNAL(clicked()), this, SLOT(setTargetDir()));
connect(ui->buttonBox, SIGNAL(accepted()), SLOT(accepted()));
connect(ui->buttonBox, SIGNAL(rejected()), SLOT(rejected()));
}
void SettingsDialog::load()
{
QSettings settings(tr(IMAGE_ORGANIZATION_ORG), tr(IMAGE_ORGANIZATION_APP));
QString home = QDir::homePath() + "/" + tr("Pictures") + "/" + tr("ScannedImageExtractor") + "/";
ui->lineEdit_location->setText(settings.value("targetdir", home).toString());
ui->lineEdit_prefix->setText(settings.value("prefix", "fromScanner_").toString());
ui->doubleSpinBox_thres->setValue(settings.value("thresh", 5.0).toDouble());
ui->doubleSpinBox_maxAspect->setValue(settings.value("max aspect", 2.1).toDouble());
ui->spinBox_levels->setValue(settings.value("levels", 3).toInt());
ui->spinBox_maxOverlap->setValue(settings.value("maxOverlap", 30).toInt());
ui->spinBox_minArea->setValue(settings.value("minArea", 10.0).toInt());
ui->spinBox_minAreaWithinImage->setValue(settings.value("minAreaWithinImage", 90).toInt());
ui->spinBox_splitMaxOffsetFrac->setValue(settings.value("splitMaxOffsetFromDiag", 20).toInt());
ui->spinBox_splitMinCornerDist->setValue(settings.value("splitMinCornerDist", 30).toInt());
ui->spinBox_splitMinLengthFrac->setValue(settings.value("splitMinLengthFrac", 35).toInt());
ui->spinBox_maxHierarchyLevel->setValue(settings.value("maxHierarchyLevel", 15).toInt());
ui->spinBox_preload->setValue(settings.value("preload", 10).toInt());
}
void SettingsDialog::save()
{
QSettings settings(tr(IMAGE_ORGANIZATION_ORG), tr(IMAGE_ORGANIZATION_APP));
QString dir = ui->lineEdit_location->text();
dir.replace("\\", "/");
if (dir.right(1) != "/")
{
dir = dir + "/";
}
ui->lineEdit_location->setText(dir);
settings.setValue("targetdir", dir);
settings.setValue("prefix", ui->lineEdit_prefix->text());
settings.setValue("thresh", ui->doubleSpinBox_thres->value());
settings.setValue("max aspect", ui->doubleSpinBox_maxAspect->value());
settings.setValue("levels", ui->spinBox_levels->value());
settings.setValue("maxOverlap", ui->spinBox_maxOverlap->value());
settings.setValue("minArea", ui->spinBox_minArea->value());
settings.setValue("minAreaWithinImage", ui->spinBox_minAreaWithinImage->value());
settings.setValue("splitMaxOffsetFromDiag", ui->spinBox_splitMaxOffsetFrac->value());
settings.setValue("splitMinCornerDist", ui->spinBox_splitMinCornerDist->value());
settings.setValue("splitMinLengthFrac", ui->spinBox_splitMinLengthFrac->value());
settings.setValue("maxHierarchyLevel", ui->spinBox_maxHierarchyLevel->value());
settings.setValue("preload", ui->spinBox_preload->value());
}
SettingsDialog::~SettingsDialog()
{
delete ui;
}
void SettingsDialog::accepted()
{
// save and close
save();
emit newValues();
close();
}
void SettingsDialog::rejected()
{
// reset and close
load();
close();
}
void SettingsDialog::setTargetDir()
{
QString location = ui->lineEdit_location->text();
location = QFileDialog::getExistingDirectory(this,
tr("Select Output directory"),
location);
if (location.length() == 0) {
return;
}
ui->lineEdit_location->setText(QDir(location).canonicalPath() );
}