Version: 0.9.0-svn (using KDE KDE 3.5.2) Installed from: SuSE RPMs Compiler: gcc version 4.0.2 OS: Linux It is not possible to save any user preferences in the current svn version. The OK button of the dialog always remains disabled.
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