SVN commit 581696 by cgilles:
digikam from trunk : ICC profiles repository at startup bugfix : - Add new common static method on SetupIcc to perform icc repository validity check - Showfoto have been forget to check icc repository at startup. Fixed. - Fix to sync config to disk if icc management need to be disable. - Using the setup() method available on digiKam/showfoto to start Setup instance in case of icc repository path is not valid. CCMAIL: [hidden email] M +1 -1 digikam.kdevelop M +29 -17 digikam/digikamapp.cpp M +1 -0 digikam/digikamapp.h M +60 -16 showfoto/showfoto.cpp M +2 -1 showfoto/showfoto.h M +1 -1 utilities/imageeditor/editor/editorwindow.h M +3 -2 utilities/imageeditor/editor/imagewindow.cpp M +1 -1 utilities/imageeditor/editor/imagewindow.h M +21 -0 utilities/setup/setupicc.cpp M +2 -0 utilities/setup/setupicc.h --- trunk/extragear/graphics/digikam/digikam.kdevelop #581695:581696 @@ -112,7 +112,7 @@ <run> <directoryradio>build</directoryradio> <customdirectory>/</customdirectory> - <mainprogram>digikam/showfoto/showfoto</mainprogram> + <mainprogram>digikam/digikam/digikam</mainprogram> <programargs></programargs> <terminal>false</terminal> <autocompile>false</autocompile> --- trunk/extragear/graphics/digikam/digikam/digikamapp.cpp #581695:581696 @@ -75,6 +75,7 @@ #include "setup.h" #include "setupplugins.h" #include "setupeditor.h" +#include "setupicc.h" #include "setupimgplugins.h" #include "imagepluginloader.h" #include "imagewindow.h" @@ -141,24 +142,19 @@ applyMainWindowSettings(m_config); - // Check ICC profiles repository + // Check ICC profiles repository availability + if(mSplash) mSplash->message(i18n("Checking ICC repository"), AlignLeft, white); - m_config->setGroup("Color Management"); - QDir tmpPath(m_config->readPathEntry("DefaultPath", QString::null)); - if (!tmpPath.exists()) - { - mValidIccPath = false; - } - kdDebug() << "ICC profiles repository is: " << tmpPath.dirName() << endl; + mValidIccPath = SetupICC::iccRepositoryIsValid(); // Check witch dcraw version available if(mSplash) mSplash->message(i18n("Checking dcraw version"), AlignLeft, white); - Digikam::DcrawBinary::instance()->checkSystem(); + DcrawBinary::instance()->checkSystem(); // Actual file scanning is done in main() - is this necessary here? mAlbumManager->setLibraryPath(mAlbumSettings->getAlbumLibraryPath()); @@ -219,6 +215,7 @@ void DigikamApp::show() { // Remove Splashscreen. + if(mSplash) { mSplash->finish(this); @@ -226,31 +223,39 @@ mSplash = 0; } + // Display application window. + KMainWindow::show(); // Report errors from ICC repository path. + if(!mValidIccPath) { QString message = i18n("<qt><p>ICC profiles path seems to be invalid.</p>" "<p>If you want to set it now, select \"Yes\", otherwise " "select \"No\". In this case, \"Color Management\" feature " "will be disabled until you solve this issue</p></qt>"); - int answer = KMessageBox::warningYesNo(this, message); - if (answer == KMessageBox::Yes) + + if (KMessageBox::warningYesNo(this, message) == KMessageBox::Yes) { - Setup setup(this, 0, Setup::IccProfiles); - if (setup.exec() != QDialog::Accepted) - return; + if (!setup(true)) + { + m_config->setGroup("Color Management"); + m_config->writeEntry("EnableCM", false); + m_config->sync(); + } } else { m_config->setGroup("Color Management"); m_config->writeEntry("EnableCM", false); + m_config->sync(); } } // Report errors from dcraw detection. - Digikam::DcrawBinary::instance()->checkReport(); + + DcrawBinary::instance()->checkReport(); } const QPtrList<KAction>& DigikamApp::menuImageActions() @@ -1335,20 +1340,27 @@ void DigikamApp::slotSetup() { - Setup setup(this); + setup(); +} +bool DigikamApp::setup(bool iccSetupPage) +{ + Setup setup(this, 0, iccSetupPage ? Setup::IccProfiles : Setup::LastPageUsed); + // To show the number of KIPI plugins in the setup dialog. KIPI::PluginLoader::PluginList list = KipiPluginLoader_->pluginList(); setup.kipiPluginsPage()->initPlugins((int)list.count()); if (setup.exec() != QDialog::Accepted) - return; + return false; setup.kipiPluginsPage()->applyPlugins(); m_ImagePluginsLoader->loadPluginsFromList(setup.imagePluginsPage()->getImagePluginsListEnable()); slotSetupChanged(); + + return true; } void DigikamApp::slotSetupCamera() --- trunk/extragear/graphics/digikam/digikam/digikamapp.h #581695:581696 @@ -114,6 +114,7 @@ private: + bool setup(bool iccSetupPage=false); void setupView(); void setupActions(); void setupAccelerators(); --- trunk/extragear/graphics/digikam/showfoto/showfoto.cpp #581695:581696 @@ -85,6 +85,7 @@ #include "dimginterface.h" #include "splashscreen.h" #include "setup.h" +#include "setupicc.h" #include "setupimgplugins.h" #include "iofileprogressbar.h" #include "iccsettingscontainer.h" @@ -112,6 +113,7 @@ m_itemsNb = 0; m_deleteItem2Trash = true; m_fullScreenHideThumbBar = true; + m_validIccPath = true; // -- Show splash at start ---------------------------- @@ -125,6 +127,13 @@ m_splash = new Digikam::SplashScreen("showfoto-splash.png"); } + // Check ICC profiles repository availability + + if(m_splash) + m_splash->message(i18n("Checking ICC repository"), AlignLeft, white); + + m_validIccPath = Digikam::SetupICC::iccRepositoryIsValid(); + // Check witch dcraw version available if(m_splash) @@ -245,6 +254,53 @@ return true; } +void ShowFoto::show() +{ + // Remove Splashscreen. + + if(m_splash) + { + m_splash->finish(this); + delete m_splash; + m_splash = 0; + } + + // Display application window. + + KMainWindow::show(); + + // Report errors from ICC repository path. + + KConfig* config = kapp->config(); + if(!m_validIccPath) + { + QString message = i18n("<qt><p>ICC profiles path seems to be invalid.</p>" + "<p>If you want to set it now, select \"Yes\", otherwise " + "select \"No\". In this case, \"Color Management\" feature " + "will be disabled until you solve this issue</p></qt>"); + + if (KMessageBox::warningYesNo(this, message) == KMessageBox::Yes) + { + if (!setup(true)) + { + config->setGroup("Color Management"); + config->writeEntry("EnableCM", false); + config->sync(); + } + } + else + { + config->setGroup("Color Management"); + config->writeEntry("EnableCM", false); + config->sync(); + } + } + + // Report errors from dcraw detection. + + Digikam::DcrawBinary::instance()->checkReport(); +} + void ShowFoto::setupConnections() { setupStandardConnections(); @@ -614,26 +670,12 @@ printImage(m_currentItem->url()); } -void ShowFoto::show() +bool ShowFoto::setup(bool iccSetupPage) { - if(m_splash) - { - m_splash->finish(this); - delete m_splash; - m_splash = 0; - } - KMainWindow::show(); - - // Report errors from dcraw detection. - Digikam::DcrawBinary::instance()->checkReport(); -} - -void ShowFoto::setup(bool iccSetupPage) -{ Setup setup(this, 0, iccSetupPage ? Setup::ICCPage : Setup::LastPageUsed); if (setup.exec() != QDialog::Accepted) - return; + return false; unLoadImagePlugins(); m_imagePluginLoader->loadPluginsFromList(setup.imagePluginsPage()->getImagePluginsListEnable()); @@ -647,6 +689,8 @@ slotUpdateItemInfo(); toggleActions(false); } + + return true; } void ShowFoto::slotUpdateItemInfo(void) --- trunk/extragear/graphics/digikam/showfoto/showfoto.h #581695:581696 @@ -66,12 +66,13 @@ ~ShowFoto(); virtual void show(); - void setup(bool iccSetupPage=false); + bool setup(bool iccSetupPage=false); private: bool m_fullScreenHideThumbBar; bool m_deleteItem2Trash; + bool m_validIccPath; int m_itemsNb; --- trunk/extragear/graphics/digikam/utilities/imageeditor/editor/editorwindow.h #581695:581696 @@ -61,7 +61,7 @@ ~EditorWindow(); virtual void applySettings(){}; - virtual void setup(bool iccSetupPage=false)=0; + virtual bool setup(bool iccSetupPage=false)=0; signals: --- trunk/extragear/graphics/digikam/utilities/imageeditor/editor/imagewindow.cpp #581695:581696 @@ -692,12 +692,12 @@ } } -void ImageWindow::setup(bool iccSetupPage) +bool ImageWindow::setup(bool iccSetupPage) { Setup setup(this, 0, iccSetupPage ? Setup::IccProfiles : Setup::LastPageUsed); if (setup.exec() != QDialog::Accepted) - return; + return false; unLoadImagePlugins(); m_imagePluginLoader->loadPluginsFromList(setup.imagePluginsPage()->getImagePluginsListEnable()); @@ -705,6 +705,7 @@ loadImagePlugins(); applySettings(); + return true; } void ImageWindow::toggleGUI2FullScreen() --- trunk/extragear/graphics/digikam/utilities/imageeditor/editor/imagewindow.h #581695:581696 @@ -64,7 +64,7 @@ static bool imagewindowCreated(); void applySettings(); - void setup(bool iccSetupPage=false); + bool setup(bool iccSetupPage=false); bool queryClose(); --- trunk/extragear/graphics/digikam/utilities/setup/setupicc.cpp #581695:581696 @@ -37,6 +37,7 @@ #include <qpushbutton.h> #include <qstringlist.h> #include <qmap.h> +#include <qdir.h> #include <qtooltip.h> // KDE includes. @@ -688,6 +689,26 @@ d->monitorProfilesKC->setEnabled(b); d->infoMonitorProfiles->setEnabled(b); } + +bool SetupICC::iccRepositoryIsValid() +{ + KConfig* config = kapp->config(); + config->setGroup("Color Management"); + + // If color management is disable, no need to check anymore. + if (!config->readBoolEntry("EnableCM", false)) + return true; + + // To be valid, the ICC profiles repository must exist and be readable. + + QDir tmpPath(config->readPathEntry("DefaultPath", QString::null)); + kdDebug() << "ICC profiles repository is: " << tmpPath.dirName() << endl; + + if ( tmpPath.exists() && tmpPath.isReadable() ) + return true; + + return false; +} } // namespace Digikam --- trunk/extragear/graphics/digikam/utilities/setup/setupicc.h #581695:581696 @@ -47,6 +47,8 @@ void applySettings(); + static bool iccRepositoryIsValid(); + private: void readSettings(); _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
Free forum by Nabble | Edit this page |