Summary: | saving user preferences not possible | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Heiner Lamprecht <heiner> |
Component: | ImageEditor-Workflow | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | CLOSED WORKSFORME | ||
Severity: | normal | CC: | caulier.gilles |
Priority: | NOR | ||
Version: | 0.9.0 | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 0.9.0 | |
Sentry Crash Report: |
Description
Heiner Lamprecht
2006-04-14 19:55:18 UTC
This is relevant of setup ICC dialog page implementation. Today, i have commited some changes in this implementation to fix any problems. Please checkout the code and give me a feedback, especially a screenshot of this page from your computer and a copy of your ~/.kde/share/config/digikamrc file. Thanks in advance Nota : I cannot reproduce this problem here. Somebody can confirm with a fresh checkout ? Gilles Caulier SVN commit 529923 by cgilles: digikam from trunk : fix Ok dialog button rules with ICC setup page. CCBUGS: 125589 M +39 -29 setupicc.cpp --- trunk/extragear/graphics/digikam/utilities/setup/setupicc.cpp #529922:529923 @@ -46,6 +46,7 @@ #include <kdialog.h> #include <kdialogbase.h> #include <kurlrequester.h> +#include <klineedit.h> #include <kconfig.h> #include <kcombobox.h> #include <kapplication.h> @@ -177,6 +178,7 @@ defaultPath->setTitle(i18n("Color Profiles Directory")); d->defaultPathKU = new KURLRequester(defaultPath); + d->defaultPathKU->lineEdit()->setReadOnly(true); d->defaultPathKU->setMode(KFile::Directory | KFile::LocalOnly | KFile::ExistingOnly); QWhatsThis::add( d->defaultPathKU, i18n("<p>Default path to the color profiles folder. " "You must store all your color profiles in this directory.</p>")); @@ -187,7 +189,7 @@ QGroupBox *profiles = new QGroupBox(0, Qt::Horizontal, i18n("ICC Profiles Settings"), parent); QGridLayout* grid2 = new QGridLayout( profiles->layout(), 3, 2, KDialog::spacingHint()); - grid2->setColStretch(0, 10); + grid2->setColStretch(1, 10); QLabel *workProfiles = new QLabel(i18n("Workspace:"), profiles); d->workProfilesKC = new KComboBox(false, profiles); @@ -323,9 +325,6 @@ connect(d->infoWorkProfiles, SIGNAL(clicked()), this, SLOT(slotClickedWork())); - - connect(d->defaultPathKU, SIGNAL(textChanged(const QString&)), - this, SLOT(slotFillCombos(const QString&))); connect(d->defaultPathKU, SIGNAL(urlSelected(const QString&)), this, SLOT(slotFillCombos(const QString&))); @@ -385,18 +384,17 @@ config->setGroup("Color Management"); - d->enableColorManagement->setChecked(config->readBoolEntry("EnableCM", false)); + d->defaultPathKU->setURL(config->readPathEntry("DefaultPath", QString::null)); d->enableColorManagement->setChecked(config->readBoolEntry("EnableCM", false)); d->bpcAlgorithm->setChecked(config->readBoolEntry("BPCAlgorithm", false)); d->renderingIntentKC->setCurrentItem(config->readNumEntry("RenderingIntent", 0)); d->managedView->setChecked(config->readBoolEntry("ManagedView", false)); - slotToggledWidgets(d->enableColorManagement->isChecked()); if (config->readBoolEntry("BehaviourICC")) d->defaultApplyICC->setChecked(true); else d->defaultAskICC->setChecked(true); - d->defaultPathKU->setURL(config->readPathEntry("DefaultPath", QString::null)); + slotToggledWidgets(d->enableColorManagement->isChecked()); fillCombos(d->defaultPathKU->url(), false); d->workProfilesKC->setCurrentItem(config->readNumEntry("WorkSpaceProfile", 0)); @@ -405,30 +403,37 @@ d->proofProfilesKC->setCurrentItem(config->readNumEntry("ProofProfile", 0)); } -void SetupICC::slotFillCombos(const QString& url) +void SetupICC::slotFillCombos(const QString& path) { - fillCombos(url, true); + fillCombos(path, true); } -void SetupICC::fillCombos(const QString& url, bool report) +void SetupICC::fillCombos(const QString& path, bool report) { + if (!d->enableColorManagement->isChecked()) + return; + cmsHPROFILE tmpProfile=0; + d->inProfilesKC->clear(); + d->monitorProfilesKC->clear(); + d->workProfilesKC->clear(); + d->proofProfilesKC->clear(); + QDir dir(path); - if (url.isEmpty()) + if (path.isEmpty() || !dir.exists() || !dir.isReadable()) { + if (report) + KMessageBox::sorry(this, i18n("<p>You must set a correct default path for your ICC color profiles files.</p>")); + d->mainDialog->enableButtonOK(false); - - if (report) - KMessageBox::sorry(this, i18n("<p>You must set a default path to color profiles files.</p>")); - return; - } + } d->mainDialog->enableButtonOK(true); - - QDir profilesDir(QFile::encodeName(url), "*.icc;*.icm", QDir::Files); + QDir profilesDir(QFile::encodeName(path), "*.icc;*.icm", QDir::Files); const QFileInfoList* files = profilesDir.entryInfoList(); - + bool findIccFiles = false; + if (files) { QFileInfoListIterator it(*files); @@ -451,6 +456,7 @@ kdDebug() << "ICC file: " << fileName << " ==> Input device class (" << cmsGetDeviceClass(tmpProfile) << ")" << endl; + findIccFiles = true; break; case icSigDisplayClass: @@ -468,6 +474,7 @@ kdDebug() << "ICC file: " << fileName << " ==> Monitor device class (" << cmsGetDeviceClass(tmpProfile) << ")" << endl; + findIccFiles = true; break; case icSigOutputClass: @@ -479,6 +486,7 @@ kdDebug() << "ICC file: " << fileName << " ==> Output device class (" << cmsGetDeviceClass(tmpProfile) << ")" << endl; + findIccFiles = true; break; case icSigColorSpaceClass: @@ -496,6 +504,7 @@ kdDebug() << "ICC file: " << fileName << " ==> WorkingSpace device class (" << cmsGetDeviceClass(tmpProfile) << ")" << endl; + findIccFiles = true; break; default: @@ -508,26 +517,24 @@ ++it; } } - else + + if (!findIccFiles) { - d->mainDialog->enableButtonOK(false); - kdDebug() << "No ICC profile files found!!!" << endl; - if (report) { QString message = i18n("<p>Sorry, there is no ICC profiles files in "); - message.append(url); + message.append(path); message.append(i18n("</p>")); - KMessageBox::sorry(this,message); + KMessageBox::sorry(this, message); } + kdDebug() << "No ICC profile files found!!!" << endl; + d->mainDialog->enableButtonOK(false); return; } - d->inProfilesKC->clear(); d->inProfilesKC->insertStringList(d->inICCPath.keys(), 0); - d->monitorProfilesKC->clear(); d->monitorProfilesKC->insertStringList(d->monitorICCPath.keys(), 0); if (d->monitorICCPath.keys().isEmpty()) { @@ -539,10 +546,8 @@ d->managedView->setEnabled(true); } - d->workProfilesKC->clear(); d->workProfilesKC->insertStringList(d->workICCPath.keys(), 0); - d->proofProfilesKC->clear(); d->proofProfilesKC->insertStringList(d->proofICCPath.keys(), 0); } @@ -568,6 +573,11 @@ d->infoMonitorProfiles->setEnabled(t); d->infoInProfiles->setEnabled(t); d->infoProofProfiles->setEnabled(t); + + if (t) + fillCombos(d->defaultPathKU->url(), true); + else + d->mainDialog->enableButtonOK(true); } void SetupICC::slotClickedWork() Now saving works again. Thanks. Ok i close this file. Thansk for the report Gilles |