1
/* ============================================================
3
* This file is a part of digiKam project
4
* http://www.digikam.org
7
* Description : advanced settings for camera interface.
9
* Copyright (C) 2011-2012 by Gilles Caulier <caulier dot gilles at gmail dot com>
11
* This program is free software; you can redistribute it
12
* and/or modify it under the terms of the GNU General
13
* Public License as published by the Free Software Foundation;
14
* either version 2, or (at your option)
17
* This program is distributed in the hope that it will be useful,
18
* but WITHOUT ANY WARRANTY; without even the implied warranty of
19
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
* GNU General Public License for more details.
22
* ============================================================ */
24
#include "advancedsettings.moc"
28
#include <QVBoxLayout>
31
#include <QToolButton>
37
#include <kcombobox.h>
43
#include "templateselector.h"
44
#include "ddatetimeedit.h"
50
class AdvancedSettings::Private
67
QCheckBox* autoRotateCheck;
68
QCheckBox* convertJpegCheck;
69
QCheckBox* fixDateTimeCheck;
71
KComboBox* losslessFormat;
73
DDateTimeEdit* dateTimeEdit;
75
TemplateSelector* templateSelector;
78
AdvancedSettings::AdvancedSettings(QWidget* const parent)
79
: QWidget(parent), d(new Private)
81
QVBoxLayout* onFlyVlay = new QVBoxLayout(this);
82
d->templateSelector = new TemplateSelector(this);
83
d->fixDateTimeCheck = new QCheckBox(i18n("Fix internal date && time"), this);
84
d->dateTimeEdit = new DDateTimeEdit(this, "datepicker");
85
d->autoRotateCheck = new QCheckBox(i18n("Auto-rotate/flip image"), this);
86
d->convertJpegCheck = new QCheckBox(i18n("Convert to lossless file format"), this);
87
KHBox* hbox2 = new KHBox(this);
88
d->formatLabel = new QLabel(i18n("New image format:"), hbox2);
89
d->losslessFormat = new KComboBox(hbox2);
90
d->losslessFormat->insertItem(0, "PNG");
91
d->losslessFormat->insertItem(1, "TIF");
92
d->losslessFormat->insertItem(2, "JP2");
93
d->losslessFormat->insertItem(3, "PGF");
95
onFlyVlay->addWidget(d->templateSelector);
96
onFlyVlay->addWidget(d->fixDateTimeCheck);
97
onFlyVlay->addWidget(d->dateTimeEdit);
98
onFlyVlay->addWidget(d->autoRotateCheck);
99
onFlyVlay->addWidget(d->convertJpegCheck);
100
onFlyVlay->addWidget(hbox2);
101
onFlyVlay->addStretch();
102
onFlyVlay->setMargin(KDialog::spacingHint());
103
onFlyVlay->setSpacing(KDialog::spacingHint());
105
setWhatsThis(i18n("Set here all options to fix/transform JPEG files automatically "
106
"as they are downloaded."));
107
d->autoRotateCheck->setWhatsThis(i18n("Enable this option if you want images automatically "
108
"rotated or flipped using EXIF information provided by the camera."));
109
d->templateSelector->setWhatsThis(i18n("Select here which metadata template you want to apply "
111
d->fixDateTimeCheck->setWhatsThis(i18n("Enable this option to set date and time metadata "
112
"tags to the right values if your camera does not set "
113
"these tags correctly when pictures are taken. The values will "
114
"be saved in the DateTimeDigitized and DateTimeCreated EXIF, XMP, and IPTC tags."));
115
d->convertJpegCheck->setWhatsThis(i18n("Enable this option to automatically convert "
116
"all JPEG files to a lossless image format. <b>Note:</b> Image conversion can take a "
117
"while on a slow computer."));
118
d->losslessFormat->setWhatsThis(i18n("Select your preferred lossless image file format to "
119
"convert to. <b>Note:</b> All metadata will be preserved during the conversion."));
121
// ---------------------------------------------------------------------------------------
123
connect(d->convertJpegCheck, SIGNAL(toggled(bool)),
124
d->losslessFormat, SLOT(setEnabled(bool)));
126
connect(d->convertJpegCheck, SIGNAL(toggled(bool)),
127
d->formatLabel, SLOT(setEnabled(bool)));
129
connect(d->convertJpegCheck, SIGNAL(toggled(bool)),
130
this, SIGNAL(signalDownloadNameChanged()));
132
connect(d->losslessFormat, SIGNAL(activated(int)),
133
this, SIGNAL(signalDownloadNameChanged()));
135
connect(d->fixDateTimeCheck, SIGNAL(toggled(bool)),
136
d->dateTimeEdit, SLOT(setEnabled(bool)));
139
AdvancedSettings::~AdvancedSettings()
144
void AdvancedSettings::readSettings(KConfigGroup& group)
146
d->autoRotateCheck->setChecked(group.readEntry("AutoRotate", true));
147
d->fixDateTimeCheck->setChecked(group.readEntry("FixDateTime", false));
148
d->templateSelector->setTemplateIndex(group.readEntry("Template", 0));
149
d->convertJpegCheck->setChecked(group.readEntry("ConvertJpeg", false));
150
d->losslessFormat->setCurrentIndex(group.readEntry("LossLessFormat", 0)); // PNG by default
152
d->dateTimeEdit->setEnabled(d->fixDateTimeCheck->isChecked());
153
d->losslessFormat->setEnabled(d->convertJpegCheck->isChecked());
154
d->formatLabel->setEnabled(d->convertJpegCheck->isChecked());
157
void AdvancedSettings::saveSettings(KConfigGroup& group)
159
group.writeEntry("AutoRotate", d->autoRotateCheck->isChecked());
160
group.writeEntry("FixDateTime", d->fixDateTimeCheck->isChecked());
161
group.writeEntry("Template", d->templateSelector->getTemplateIndex());
162
group.writeEntry("ConvertJpeg", d->convertJpegCheck->isChecked());
163
group.writeEntry("LossLessFormat", d->losslessFormat->currentIndex());
166
DownloadSettings AdvancedSettings::settings() const
168
DownloadSettings settings;
170
settings.autoRotate = d->autoRotateCheck->isChecked();
171
settings.fixDateTime = d->fixDateTimeCheck->isChecked();
172
settings.convertJpeg = d->convertJpegCheck->isChecked();
173
settings.newDateTime = d->dateTimeEdit->dateTime();
174
settings.losslessFormat = d->losslessFormat->currentText();
175
settings.templateTitle = d->templateSelector->getTemplate().templateTitle();
180
} // namespace Digikam