1
/* ============================================================
3
* This file is a part of digiKam project
4
* http://www.digikam.org
7
* Description : a dialog to see preview ICC color correction
8
* before to apply color profile.
10
* Copyright (C) 2006-2011 by Gilles Caulier <caulier dot gilles at gmail dot com>
12
* This program is free software; you can redistribute it
13
* and/or modify it under the terms of the GNU General
14
* Public License as published by the Free Software Foundation;
15
* either version 2, or (at your option)
18
* This program is distributed in the hope that it will be useful,
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
* GNU General Public License for more details.
23
* ============================================================ */
25
#include "colorcorrectiondlg.moc"
32
#include <QGridLayout>
34
#include <QHBoxLayout>
36
#include <QPushButton>
37
#include <QRadioButton>
38
#include <QVBoxLayout>
44
#include <kiconloader.h>
45
#include <kapplication.h>
46
#include <kseparator.h>
47
#include <kstandarddirs.h>
52
#include "iccmanager.h"
53
#include "iccsettings.h"
54
#include "icctransform.h"
55
#include "iccprofileinfodlg.h"
56
#include "iccprofilescombobox.h"
61
class ColorCorrectionDlg::ColorCorrectionDlgPriv
65
ColorCorrectionDlgPriv() :
70
convertToWorkingSpace(0),
78
mode(ColorCorrectionDlg::ProfileMismatch)
85
QLabel* imageProfileTitle;
86
QLabel* imageProfileDesc;
87
QLabel* previewTarget;
89
QRadioButton* keepProfile;
90
QRadioButton* convertToWorkingSpace;
91
QRadioButton* thirdOption;
92
QCheckBox* thirdCheckBox;
94
QRadioButton* imageSRGB;
95
QRadioButton* imageWorkingSpace;
96
QRadioButton* imageOtherSpace;
98
IccProfilesComboBox* otherProfileBox;
99
IccProfilesComboBox* imageProfileBox;
101
ColorCorrectionDlg::Mode mode;
103
IccProfile workspaceProfile;
104
IccProfile imageProfile;
105
IccProfile outputProfile;
108
ColorCorrectionDlg::ColorCorrectionDlg(Mode mode, const DImg& preview,
109
const QString& file, QWidget* parent)
110
: KDialog(parent), d(new ColorCorrectionDlgPriv)
113
d->preview = preview;
115
ICCSettingsContainer iccSettings = IccSettings::instance()->settings();
116
d->workspaceProfile = IccProfile(iccSettings.workspaceProfile);
120
if (d->mode == ProfileMismatch)
122
caption = i18n("Color Profile Mismatch");
124
else if (d->mode == MissingProfile)
126
caption = i18n("Missing Color Profile");
128
else if (d->mode == UncalibratedColor)
130
caption = i18n("Image with Uncalibrated Color");
136
caption = i18nc("<Problem> - <filename>", "%1 - %2", caption, fi.fileName());
141
setButtons(Help | Ok | Cancel);
142
setDefaultButton(Ok);
145
setHelp("iccprofile.anchor", "digikam");
146
setButtonText(Cancel, i18n("Don't know"));
147
setButtonToolTip(Cancel, i18n("Take the safest and most appropriate action"));
149
QWidget* page = new QWidget(this);
150
QGridLayout* grid = new QGridLayout(page);
154
if (d->mode == ProfileMismatch)
156
grid->addLayout(createHeading(), 0, 0, 1, 2);
157
grid->addLayout(createProfilesInfo(), 1, 0);
158
grid->addLayout(createPreviews(), 1, 1, 2, 1);
159
grid->addWidget(createOptions(), 3, 0, 1, 2);
161
else if (d->mode == MissingProfile)
163
QVBoxLayout* vbox = new QVBoxLayout;
164
vbox->addWidget(createAssumeOptions());
165
vbox->addLayout(createProfilesInfo());
168
grid->addLayout(createHeading(), 0, 0, 1, 2);
169
grid->addLayout(vbox, 1, 0);
170
grid->addLayout(createPreviews(), 1, 1, 2, 1);
171
grid->addWidget(createOptions(), 3, 0, 1, 2);
172
grid->setRowStretch(1, 1);
173
grid->setRowStretch(3, 1);
175
else if (d->mode == UncalibratedColor)
177
grid->addLayout(createHeading(), 0, 0, 1, 2);
178
grid->addLayout(createProfilesInfo(), 1, 0, Qt::AlignTop);
179
grid->addLayout(createPreviews(), 1, 1, 2, 1);
180
grid->addWidget(createAssumeOptions(), 3, 0, 1, 2);
183
page->setLayout(grid);
186
updateImageProfileUI();
187
updateUsedProfileUI();
191
ColorCorrectionDlg::~ColorCorrectionDlg()
196
QLayout* ColorCorrectionDlg::createHeading() const
198
QLabel* icon = new QLabel;
199
icon->setPixmap(SmallIcon("fill-color", KIconLoader::SizeMedium));
201
QLabel* message = new QLabel;
203
if (d->mode == ProfileMismatch)
205
message->setText(i18n("<p>This image has an <b>embedded color profile</b><br/> "
206
"which does not match your working space color profile.<br/>"
207
"How do you want to proceed?</p>"));
209
else if (d->mode == MissingProfile)
211
message->setText(i18n("<p>This image has <b>no information about the color space</b><br/>"
212
"that was used when creating the image. <br/>"
213
"How do you want to proceed?</p>"));
216
else if (d->mode == UncalibratedColor)
218
message->setText(i18n("<p>The color information of this image is uncalibrated.<br/>"
219
"How do you want to proceed?</p>"));
222
message->setWordWrap(true);
224
QLabel* logo = new QLabel;
225
logo->setPixmap(QPixmap(KStandardDirs::locate("data", "digikam/data/logo-digikam.png"))
226
.scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation));
228
KSeparator* line = new KSeparator(Qt::Horizontal);
230
QGridLayout* grid = new QGridLayout;
231
grid->addWidget(icon, 0, 0);
232
grid->addWidget(message, 0, 1);
233
grid->addWidget(logo, 0, 2);
234
grid->addWidget(line, 1, 0, 1, 3);
235
grid->setColumnStretch(1, 1);
239
QLayout* ColorCorrectionDlg::createProfilesInfo() const
241
QVBoxLayout* vbox = new QVBoxLayout;
243
if (d->mode == ProfileMismatch || d->mode == UncalibratedColor)
245
d->imageProfileTitle = new QLabel;
247
if (d->mode == ProfileMismatch)
249
d->imageProfileTitle->setText(i18n("Embedded Color Profile:"));
251
//else if (d->mode == MissingProfile)
252
// d->imageProfileTitle->setText(i18n("Image Color Profile:"));
253
else if (d->mode == UncalibratedColor)
255
d->imageProfileTitle->setText(i18n("Input Color Profile:"));
258
d->imageProfileDesc = new QLabel;
259
QPushButton* imageProfInfo = new QPushButton(i18n("Info..."));
260
//d->imageProfileTitle->setWordWrap(true);
261
d->imageProfileDesc->setWordWrap(true);
263
vbox->addWidget(d->imageProfileTitle);
264
vbox->addWidget(d->imageProfileDesc);
265
vbox->addWidget(imageProfInfo, 0, Qt::AlignLeft);
267
connect(imageProfInfo, SIGNAL(clicked()),
268
this, SLOT(slotImageProfInfo()));
271
QLabel* workspaceProfileTitle = new QLabel(i18n("Working Color Space:"));
272
QLabel* workspaceProfileDesc = new QLabel(QString("<b>%1</b>").arg(d->workspaceProfile.description()));
273
QPushButton* workspaceProfInfo = new QPushButton(i18n("Info..."));
274
//workspaceProfileTitle->setWordWrap(true);
275
workspaceProfileDesc->setWordWrap(true);
277
vbox->addWidget(workspaceProfileTitle);
278
vbox->addWidget(workspaceProfileDesc);
279
vbox->addWidget(workspaceProfInfo, 0, Qt::AlignLeft);
281
connect(workspaceProfInfo, SIGNAL(clicked()),
282
this, SLOT(slotWorkspaceProfInfo()));
287
QLayout* ColorCorrectionDlg::createPreviews() const
289
QGridLayout* grid = new QGridLayout;
290
QLabel* originalTitle = new QLabel;
292
if (d->mode == ProfileMismatch)
294
originalTitle->setText(i18n("Original Colors:"));
296
else if (d->mode == MissingProfile)
298
originalTitle->setText(i18n("Uncorrected Colors:"));
300
else if (d->mode == UncalibratedColor)
302
originalTitle->setText(i18n("Raw Colors:"));
305
originalTitle->setWordWrap(true);
307
QLabel* previewOriginal = new QLabel;
308
DImg copyOriginal = d->preview.copy();
309
IccManager manager(copyOriginal);
310
manager.transformForDisplay();
311
previewOriginal->setPixmap(copyOriginal.convertToPixmap());
313
QLabel* targetTitle = new QLabel;
315
if (d->mode == ProfileMismatch)
317
targetTitle->setText(i18n("Resulting Colors:"));
319
else if (d->mode == MissingProfile)
321
targetTitle->setText(i18n("Correction Applied:"));
323
else if (d->mode == UncalibratedColor)
325
targetTitle->setText(i18n("Corrected Colors:"));
328
targetTitle->setWordWrap(true);
330
d->previewTarget = new QLabel;
332
if (d->preview.width() > d->preview.height())
334
grid->addWidget(originalTitle, 0, 0, Qt::AlignTop);
335
grid->addWidget(previewOriginal, 1, 0);
336
grid->addWidget(targetTitle, 2, 0, Qt::AlignTop);
337
grid->addWidget(d->previewTarget, 3, 0);
341
grid->addWidget(originalTitle, 0, 0, Qt::AlignTop);
342
grid->addWidget(previewOriginal, 1, 0);
343
grid->addWidget(targetTitle, 0, 1, Qt::AlignTop);
344
grid->addWidget(d->previewTarget, 1, 1);
350
QWidget* ColorCorrectionDlg::createOptions() const
352
QGroupBox* box = new QGroupBox;
353
QVBoxLayout* vbox = new QVBoxLayout(box);
355
if (d->mode == ProfileMismatch)
357
d->keepProfile = new QRadioButton(i18n("Keep the embedded profile, do not convert"));
358
d->convertToWorkingSpace = new QRadioButton(i18n("Convert to working color space"));
359
d->thirdOption = new QRadioButton(i18n("Ignore embedded profile, assign this profile:"));
360
d->otherProfileBox = new IccProfilesComboBox;
361
d->otherProfileBox->addProfilesSqueezed(IccSettings::instance()->workspaceProfiles());
362
d->thirdCheckBox = new QCheckBox(i18n("and then convert to working space"));
364
d->keepProfile->setChecked(true);
365
d->otherProfileBox->setCurrentProfile(IccProfile::adobeRGB());
366
d->otherProfileBox->setNoProfileIfEmpty(i18n("No Profile Available"));
368
if (d->otherProfileBox->count() == 0) // disable if empty
370
d->thirdOption->setEnabled(false);
371
d->otherProfileBox->setEnabled(false);
374
QHBoxLayout* hboxAssign = new QHBoxLayout;
375
hboxAssign->addSpacing(10);
376
hboxAssign->addWidget(d->otherProfileBox);
377
hboxAssign->addWidget(d->thirdCheckBox);
378
hboxAssign->setSpacing(0);
380
vbox->addWidget(d->keepProfile);
381
vbox->addWidget(d->convertToWorkingSpace);
382
vbox->addWidget(d->thirdOption);
383
vbox->addLayout(hboxAssign);
385
connect(d->keepProfile, SIGNAL(toggled(bool)),
386
this, SLOT(imageProfileToggled(bool)));
388
connect(d->convertToWorkingSpace, SIGNAL(toggled(bool)),
389
this, SLOT(imageProfileToggled(bool)));
391
connect(d->thirdOption, SIGNAL(toggled(bool)),
392
this, SLOT(imageProfileToggled(bool)));
394
connect(d->thirdCheckBox, SIGNAL(toggled(bool)),
395
this, SLOT(imageProfileToggled(bool)));
397
connect(d->otherProfileBox, SIGNAL(currentIndexChanged(int)),
398
this, SLOT(imageProfileChanged()));
400
else if (d->mode == MissingProfile)
402
d->convertToWorkingSpace = new QRadioButton(i18n("Assign profile and convert to working color space"));
403
d->keepProfile = new QRadioButton(i18n("Assign and keep color profile"));
404
d->thirdOption = new QRadioButton(i18n("Leave the file untagged, do not color manage"));
406
d->convertToWorkingSpace->setChecked(true);
408
vbox->addWidget(d->convertToWorkingSpace);
409
vbox->addWidget(d->keepProfile);
410
vbox->addWidget(d->thirdOption);
412
connect(d->keepProfile, SIGNAL(toggled(bool)),
413
this, SLOT(missingProfileToggled(bool)));
415
connect(d->convertToWorkingSpace, SIGNAL(toggled(bool)),
416
this, SLOT(missingProfileToggled(bool)));
418
connect(d->thirdOption, SIGNAL(toggled(bool)),
419
this, SLOT(missingProfileToggled(bool)));
421
else if (d->mode == UncalibratedColor)
425
d->convertToWorkingSpace = new QRadioButton(i18n("Convert to working color space"));
426
d->thirdOption = new QRadioButton(i18n("Convert to this profile:"));
427
d->otherProfileBox = new IccProfilesComboBox;
428
d->otherProfileBox->addProfilesSqueezed(IccSettings::instance()->workspaceProfiles());
430
vbox->addWidget(d->convertToWorkingSpace);
431
vbox->addWidget(d->thirdOption);
432
vbox->addWidget(d->otherProfileBox);
439
QWidget* ColorCorrectionDlg::createAssumeOptions() const
441
QGroupBox* box = new QGroupBox;
442
QGridLayout* grid = new QGridLayout(box);
444
if (d->mode == ProfileMismatch)
448
else if (d->mode == MissingProfile)
450
QLabel* label = new QLabel(i18n("Which color space shall be used to interpret the colors of this image?"));
451
label->setWordWrap(true);
453
d->imageSRGB = new QRadioButton(i18n("sRGB (Internet standard)"));
454
d->imageWorkingSpace = new QRadioButton(i18n("Current working color space"));
455
d->imageOtherSpace = new QRadioButton(i18n("This profile:"));
456
d->imageProfileBox = new IccProfilesComboBox;
457
d->imageProfileBox->addProfilesSqueezed(IccSettings::instance()->workspaceProfiles()
458
<< IccSettings::instance()->inputProfiles());
459
QPushButton* usedProfInfo = new QPushButton(i18n("Info..."));
461
d->imageSRGB->setChecked(true);
462
d->imageProfileBox->setCurrentProfile(IccProfile::adobeRGB());
463
d->imageProfileBox->setNoProfileIfEmpty(i18n("No Profile Available"));
465
if (d->imageProfileBox->count() == 0) // disable if empty
467
d->imageOtherSpace->setEnabled(false);
468
d->imageProfileBox->setEnabled(false);
471
grid->addWidget(label, 0, 0, 1, 2);
472
grid->addWidget(d->imageSRGB, 1, 0, 1, 2);
473
grid->addWidget(d->imageWorkingSpace, 2, 0, 1, 2);
474
grid->addWidget(d->imageOtherSpace, 3, 0, 1, 2);
475
grid->addWidget(d->imageProfileBox, 4, 1);
476
grid->addWidget(usedProfInfo, 5, 0, 1, 2, Qt::AlignLeft);
477
grid->setColumnMinimumWidth(0, 10);
478
grid->setColumnStretch(1, 1);
480
connect(d->imageProfileBox, SIGNAL(currentIndexChanged(int)),
481
this, SLOT(usedProfileChanged()));
483
connect(d->imageSRGB, SIGNAL(toggled(bool)),
484
this, SLOT(usedProfileToggled(bool)));
486
connect(d->imageWorkingSpace, SIGNAL(toggled(bool)),
487
this, SLOT(usedProfileToggled(bool)));
489
connect(d->imageOtherSpace, SIGNAL(toggled(bool)),
490
this, SLOT(usedProfileToggled(bool)));
492
connect(usedProfInfo, SIGNAL(clicked()),
493
this, SLOT(slotImageProfInfo()));
495
else if (d->mode == UncalibratedColor)
497
QLabel* label = new QLabel(i18n("Please select the input color profile of the device (camera) used to create this image:"));
498
label->setWordWrap(true);
500
d->imageProfileBox = new IccProfilesComboBox;
501
d->imageProfileBox->addProfilesSqueezed(IccSettings::instance()->inputProfiles());
502
d->imageProfileBox->setCurrentProfile(IccSettings::instance()->settings().defaultInputProfile);
503
d->imageProfileBox->setNoProfileIfEmpty(i18n("No Input Profile Available"));
505
grid->addWidget(label);
506
grid->addWidget(d->imageProfileBox);
508
connect(d->imageProfileBox, SIGNAL(currentIndexChanged(int)),
509
this, SLOT(inputProfileChanged()));
515
void ColorCorrectionDlg::imageProfileToggled(bool on)
522
imageProfileChanged();
525
void ColorCorrectionDlg::imageProfileChanged()
527
updateImageProfileUI();
531
void ColorCorrectionDlg::updateImageProfileUI()
533
if (d->otherProfileBox)
535
d->otherProfileBox->setEnabled(d->thirdOption->isChecked());
538
if (d->thirdCheckBox)
540
d->thirdCheckBox->setEnabled(d->thirdOption->isChecked());
544
void ColorCorrectionDlg::missingProfileToggled(bool on)
551
missingProfileChanged();
554
void ColorCorrectionDlg::missingProfileChanged()
559
void ColorCorrectionDlg::usedProfileToggled(bool on)
566
usedProfileChanged();
569
void ColorCorrectionDlg::usedProfileChanged()
571
updateUsedProfileUI();
575
void ColorCorrectionDlg::updateUsedProfileUI()
577
if (d->imageProfileBox && d->imageOtherSpace)
579
d->imageProfileBox->setEnabled(d->imageOtherSpace->isChecked());
583
void ColorCorrectionDlg::inputProfileChanged()
588
void ColorCorrectionDlg::updateInfo()
590
setCursor(Qt::WaitCursor);
592
DImg colorPreview = d->preview.copy();
593
IccManager manager(colorPreview);
594
ICCSettingsContainer::Behavior b = currentBehavior();
595
d->imageProfile = manager.imageProfile(b, specifiedProfile());
597
if (d->mode == ProfileMismatch)
599
if (b & ICCSettingsContainer::UseSpecifiedProfile)
601
d->imageProfileTitle->setText(i18n("Assigned Color Profile:"));
605
d->imageProfileTitle->setText(i18n("Embedded Color Profile:"));
609
if (d->mode == ProfileMismatch || d->mode == UncalibratedColor)
611
QString description = d->imageProfile.description();
613
if (description.isEmpty())
615
d->imageProfileDesc->setText(i18n("<b>No Profile</b>"));
619
d->imageProfileDesc->setText(QString("<b>%1</b>").arg(description));
623
manager.transform(currentBehavior(), specifiedProfile());
624
manager.transformForDisplay(this);
625
d->previewTarget->setPixmap(colorPreview.convertToPixmap());
630
void ColorCorrectionDlg::slotWorkspaceProfInfo()
632
ICCProfileInfoDlg infoDlg(parentWidget(), QString(), d->workspaceProfile);
636
void ColorCorrectionDlg::slotImageProfInfo()
638
if (d->imageProfile.isNull())
643
ICCProfileInfoDlg infoDlg(parentWidget(), QString(), d->imageProfile);
647
ICCSettingsContainer::Behavior ColorCorrectionDlg::behavior() const
649
if (result() == QDialog::Rejected)
651
return ICCSettingsContainer::SafestBestAction;
654
return currentBehavior();
657
ICCSettingsContainer::Behavior ColorCorrectionDlg::currentBehavior() const
659
if (d->mode == ProfileMismatch)
661
if (d->keepProfile->isChecked())
663
return ICCSettingsContainer::PreserveEmbeddedProfile;
665
else if (d->convertToWorkingSpace->isChecked())
667
return ICCSettingsContainer::EmbeddedToWorkspace;
669
else if (d->thirdOption->isChecked())
671
if (d->thirdCheckBox->isChecked())
673
return ICCSettingsContainer::UseSpecifiedProfile | ICCSettingsContainer::ConvertToWorkspace;
677
return ICCSettingsContainer::UseSpecifiedProfile | ICCSettingsContainer::KeepProfile;
681
else if (d->mode == MissingProfile)
683
if (d->thirdOption->isChecked())
685
return ICCSettingsContainer::NoColorManagement;
688
ICCSettingsContainer::Behavior behavior;
690
if (d->keepProfile->isChecked())
692
behavior |= ICCSettingsContainer::KeepProfile;
694
else if (d->convertToWorkingSpace->isChecked())
696
behavior |= ICCSettingsContainer::ConvertToWorkspace;
699
if (d->imageSRGB->isChecked())
701
behavior |= ICCSettingsContainer::UseSRGB;
703
else if (d->imageWorkingSpace->isChecked())
705
behavior |= ICCSettingsContainer::UseWorkspace;
707
else if (d->imageOtherSpace->isChecked())
709
behavior |= ICCSettingsContainer::UseSpecifiedProfile;
714
else if (d->mode == UncalibratedColor)
716
return ICCSettingsContainer::ConvertToWorkspace | ICCSettingsContainer::UseSpecifiedProfile;
719
return ICCSettingsContainer::SafestBestAction;
722
IccProfile ColorCorrectionDlg::specifiedProfile() const
724
if (d->mode == ProfileMismatch)
726
return d->otherProfileBox->currentProfile();
728
else if (d->mode == MissingProfile || d->mode == UncalibratedColor)
730
return d->imageProfileBox->currentProfile();
736
void ColorCorrectionDlg::readSettings()
738
ICCSettingsContainer settings = IccSettings::instance()->settings();
740
if (d->mode == ProfileMismatch)
742
if ((settings.lastMismatchBehavior & ICCSettingsContainer::UseSpecifiedProfile) &&
743
d->otherProfileBox->count() > 0)
745
d->thirdOption->setChecked(true);
746
d->thirdCheckBox->setChecked(settings.lastMismatchBehavior & ICCSettingsContainer::ConvertToWorkspace);
747
d->thirdOption->setFocus();
751
if (settings.lastMismatchBehavior & ICCSettingsContainer::KeepProfile)
753
d->keepProfile->setChecked(true);
754
d->keepProfile->setFocus();
756
else if (settings.lastMismatchBehavior & ICCSettingsContainer::ConvertToWorkspace)
758
d->convertToWorkingSpace->setChecked(true);
759
d->convertToWorkingSpace->setFocus();
763
if (!settings.lastSpecifiedAssignProfile.isEmpty())
765
d->otherProfileBox->setCurrentProfile(settings.lastSpecifiedAssignProfile);
768
else if (d->mode == MissingProfile)
770
if (settings.lastMissingProfileBehavior == ICCSettingsContainer::NoColorManagement)
772
d->imageSRGB->setChecked(true); // ?
773
d->thirdOption->setChecked(true);
774
d->thirdOption->setFocus();
778
if (settings.lastMissingProfileBehavior & ICCSettingsContainer::KeepProfile)
780
d->keepProfile->setChecked(true);
781
d->keepProfile->setFocus();
783
else if (settings.lastMissingProfileBehavior & ICCSettingsContainer::ConvertToWorkspace)
785
d->convertToWorkingSpace->setChecked(true);
786
d->convertToWorkingSpace->setFocus();
789
if (settings.lastMissingProfileBehavior & ICCSettingsContainer::UseSRGB)
791
d->imageSRGB->setChecked(true);
794
if (settings.lastMissingProfileBehavior & ICCSettingsContainer::UseWorkspace)
796
d->imageWorkingSpace->setChecked(true);
799
if ((settings.lastMissingProfileBehavior & ICCSettingsContainer::UseSpecifiedProfile)
800
&& d->imageProfileBox->count() > 0)
802
d->imageOtherSpace->setChecked(true);
806
if (!settings.lastSpecifiedInputProfile.isEmpty())
808
d->imageProfileBox->setCurrentProfile(settings.lastSpecifiedInputProfile);
811
else if (d->mode == UncalibratedColor)
813
d->imageProfileBox->setCurrentProfile(settings.lastSpecifiedInputProfile);
814
d->imageProfileBox->setFocus();
818
void ColorCorrectionDlg::setSettings()
820
ICCSettingsContainer settings = IccSettings::instance()->settings();
822
if (d->mode == ProfileMismatch)
824
settings.lastMismatchBehavior = currentBehavior();
825
settings.lastSpecifiedAssignProfile = specifiedProfile().filePath();
827
else if (d->mode == MissingProfile)
829
settings.lastMissingProfileBehavior = currentBehavior();
830
settings.lastSpecifiedInputProfile = specifiedProfile().filePath();
832
else if (d->mode == UncalibratedColor)
834
settings.lastUncalibratedBehavior = currentBehavior();
835
settings.lastSpecifiedInputProfile = specifiedProfile().filePath();
838
IccSettings::instance()->setSettings(settings);
841
void ColorCorrectionDlg::accept()
848
} // namespace Digikam