1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141 | /* ============================================================
*
* This file is a part of digiKam project
* https://www.digikam.org
*
* Date : 2016-05-03
* Description : DNG convert settings for camera interface.
*
* SPDX-FileCopyrightText: 2011-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
* SPDX-FileCopyrightText: 2016 by Maik Qualmann <metzpinguin at gmail dot com>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*
* ============================================================ */
#include "dngconvertsettings.h"
// Qt includes
#include <QApplication>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QCheckBox>
#include <QLabel>
#include <QStyle>
// KDE includes
#include <klocalizedstring.h>
#include <kconfiggroup.h>
// Local includes
#include "dngsettings.h"
#include "setup.h"
namespace Digikam
{
class Q_DECL_HIDDEN DNGConvertSettings::Private
{
public:
Private() = default;
QCheckBox* convertDng = nullptr;
QLabel* dngLink = nullptr;
DNGSettings* dngSettings = nullptr;
};
DNGConvertSettings::DNGConvertSettings(QWidget* const parent)
: QWidget(parent),
d (new Private)
{
const int spacing = qMin(QApplication::style()->pixelMetric(QStyle::PM_LayoutHorizontalSpacing),
QApplication::style()->pixelMetric(QStyle::PM_LayoutVerticalSpacing));
QVBoxLayout* const mainVlay = new QVBoxLayout(this);
QHBoxLayout* const convHlay = new QHBoxLayout;
d->convertDng = new QCheckBox(i18nc("@option:check", "Convert RAW images to"), this);
d->dngSettings = new DNGSettings(this);
d->dngLink = new QLabel(this);
d->dngLink->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
d->dngLink->setOpenExternalLinks(true);
d->dngLink->setWordWrap(false);
d->dngLink->setText(QString::fromUtf8("<p><a href='https://en.wikipedia.org/wiki/Digital_Negative_(file_format)'>%1</a></p>")
.arg(i18nc("@label", "DNG container")));
convHlay->addWidget(d->convertDng);
convHlay->addWidget(d->dngLink);
convHlay->addStretch(10);
convHlay->setContentsMargins(spacing, spacing, spacing, spacing);
convHlay->setSpacing(0);
mainVlay->addLayout(convHlay);
mainVlay->addWidget(d->dngSettings);
mainVlay->setContentsMargins(QMargins());
mainVlay->setSpacing(0);
setWhatsThis(i18nc("@info", "Set here all options to convert RAW images to DNG container automatically "
"as they are downloaded."));
d->convertDng->setWhatsThis(i18nc("@info", "Enable this option to convert RAW images to DNG container automatically."));
setLayout(mainVlay);
// ---------------------------------------------------------------------------------------
connect(d->convertDng, SIGNAL(toggled(bool)),
d->dngSettings, SLOT(setEnabled(bool)));
connect(d->convertDng, SIGNAL(toggled(bool)),
this, SIGNAL(signalDownloadNameChanged()));
connect(d->dngSettings, SIGNAL(signalSetupExifTool()),
this, SLOT(slotSetupExifTool()));
}
DNGConvertSettings::~DNGConvertSettings()
{
delete d;
}
void DNGConvertSettings::readSettings(KConfigGroup& group)<--- Parameter 'group' can be declared as reference to const
{
d->dngSettings->setBackupOriginalRawFile(group.readEntry(QLatin1String("BackupOriginalRawFile"), false));
d->dngSettings->setCompressLossLess(group.readEntry(QLatin1String("CompressLossLess"), true));
d->dngSettings->setPreviewMode(group.readEntry(QLatin1String("PreviewMode"), (int)DNGWriter::FULL_SIZE));
d->convertDng->setChecked(group.readEntry(QLatin1String("ConvertDng"), false));
d->dngSettings->setEnabled(d->convertDng->isChecked());
}
void DNGConvertSettings::saveSettings(KConfigGroup& group)
{
group.writeEntry(QLatin1String("BackupOriginalRawFile"), d->dngSettings->backupOriginalRawFile());
group.writeEntry(QLatin1String("CompressLossLess"), d->dngSettings->compressLossLess());
group.writeEntry(QLatin1String("PreviewMode"), d->dngSettings->previewMode());
group.writeEntry(QLatin1String("ConvertDng"), d->convertDng->isChecked());
}
void DNGConvertSettings::settings(DownloadSettings* const settings)
{
settings->backupRaw = d->dngSettings->backupOriginalRawFile();
settings->compressDng = d->dngSettings->compressLossLess();
settings->previewMode = d->dngSettings->previewMode();
settings->convertDng = d->convertDng->isChecked();
}
void DNGConvertSettings::slotSetupExifTool()
{
if (Setup::execExifTool(nullptr))
{
d->dngSettings->slotSetupChanged();
}
}
} // namespace Digikam
#include "moc_dngconvertsettings.cpp"
|