Bug 125589 - saving user preferences not possible
Summary: saving user preferences not possible
Status: CLOSED WORKSFORME
Alias: None
Product: digikam
Classification: Applications
Component: ImageEditor-Workflow (show other bugs)
Version: 0.9.0
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-04-14 19:55 UTC by Heiner Lamprecht
Modified: 2022-02-03 03:54 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 0.9.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Heiner Lamprecht 2006-04-14 19:55:18 UTC
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.
Comment 1 caulier.gilles 2006-04-14 20:22:52 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
Comment 2 caulier.gilles 2006-04-14 22:14:55 UTC
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()
Comment 3 Heiner Lamprecht 2006-04-14 22:44:32 UTC
Now saving works again.  Thanks.
Comment 4 caulier.gilles 2006-04-15 09:36:08 UTC
Ok i close this file. Thansk for the report

Gilles