[Pkg-kde-commits] rev 1058 - in kde-extras/digikam/trunk/debian: . patches

Achim Bohnet ach-guest@costa.debian.org
Wed, 11 May 2005 12:23:42 +0000


Author: ach-guest
Date: 2005-05-11 12:23:41 +0000 (Wed, 11 May 2005)
New Revision: 1058

Added:
   kde-extras/digikam/trunk/debian/patches/
   kde-extras/digikam/trunk/debian/patches/01_fix-two-or-fourfold_menu_entries.diff
Modified:
   kde-extras/digikam/trunk/debian/changelog
   kde-extras/digikam/trunk/debian/rules
Log:
Backport fix for duplicate menu entries.

  http://bugs.kde.org/show_bug.cgi?id=103147

Thx to Querub and {toma} for 'complaining' and testing.



Modified: kde-extras/digikam/trunk/debian/changelog
===================================================================
--- kde-extras/digikam/trunk/debian/changelog	2005-05-08 14:56:05 UTC (rev 1057)
+++ kde-extras/digikam/trunk/debian/changelog	2005-05-11 12:23:41 UTC (rev 1058)
@@ -1,3 +1,11 @@
+digikam (0.7.2-4) unstable; urgency=medium
+
+  * patches/01_fix-two-or-fourfold_menu_entries.diff:
+    fix double and even quadruple appearances of menu entries.
+    Backport of http://bugs.kde.org/show_bug.cgi?id=103147
+
+ -- Achim Bohnet <ach@mpe.mpg.de>  Wed, 11 May 2005 13:55:04 +0200
+
 digikam (0.7.2-3) unstable; urgency=low
 
   * move digikam.desktop file to /usr/share/applications/kde/

Added: kde-extras/digikam/trunk/debian/patches/01_fix-two-or-fourfold_menu_entries.diff
===================================================================
--- kde-extras/digikam/trunk/debian/patches/01_fix-two-or-fourfold_menu_entries.diff	2005-05-08 14:56:05 UTC (rev 1057)
+++ kde-extras/digikam/trunk/debian/patches/01_fix-two-or-fourfold_menu_entries.diff	2005-05-11 12:23:41 UTC (rev 1058)
@@ -0,0 +1,229 @@
+--- digikam/utilities/imageeditor/imagepluginloader.cpp.orig	2005-05-10 23:16:17.000000000 +0200
++++ digikam/utilities/imageeditor/imagepluginloader.cpp	2005-05-10 21:47:17.000000000 +0200
+@@ -64,7 +64,7 @@
+     loadPluginsFromList(imagePluginsList2Load);
+ }
+ 
+-void ImagePluginLoader::loadPluginsFromList(QStringList list)
++void ImagePluginLoader::loadPluginsFromList(const QStringList& list)
+ {
+     KTrader::OfferList offers = KTrader::self()->query("Digikam/ImagePlugin");
+     KTrader::OfferList::ConstIterator iter;
+@@ -80,29 +80,41 @@
+ 
+         if(service->library() == "digikamimageplugin_core")
+            {
+-           if( pluginIsLoaded(service->name()) )
+-              break;
+-           else
++            if (!pluginIsLoaded(service->name()) )
+               {
++                int error;
+               plugin = KParts::ComponentFactory
+-                       ::createInstanceFromService<Digikam::ImagePlugin>(service, this, 0, 0);
++                         ::createInstanceFromService<Digikam::ImagePlugin>(service, this,
++                                                                           service->name().local8Bit(),
++                                                                           0, &error);
+ 
+               if (plugin && (dynamic_cast<KXMLGUIClient*>(plugin) != 0))
+                  {
+-                 m_pluginList.append(plugin);
++                    m_pluginList.append(PluginType(service->name(), plugin));
+                 
+-                 kdDebug() << "ImagePluginLoader: Loaded plugin " << plugin->name() << endl;
++                    kdDebug() << "ImagePluginLoader: Loaded plugin " << service->name() << endl;
+                  
+                  if (m_splash)      
+-                    m_splash->message(i18n("Loading: %1").arg(plugin->name()));
++                        m_splash->message(i18n("Loading: %1").arg(service->name()));
+                     
+                  ++cpt;
+                  }
+-                                
+-              break;
++                else
++                {
++                    kdWarning(  ) << "KIPI::PluginLoader:: createInstanceFromLibrary returned 0 for "
++                                  << service->name()
++                                  << " (" << service->library() << ")"
++                                  << " with error number "
++                                  << error << endl;
++                    if (error == KParts::ComponentFactory::ErrNoLibrary)
++                        kdWarning(  ) << "KLibLoader says: "
++                                      << KLibLoader::self()->lastErrorMessage() << endl;
+               }
+            }
++            break;
+        }
++    }
++
+         
+     // Load all other image plugins after (make a coherant menu construction in Image Editor).
+       
+@@ -114,7 +126,7 @@
+        if(!list.contains(service->library()) && service->library() != "digikamimageplugin_core")
+           {
+           if((plugin = pluginIsLoaded(service->name())) != NULL)
+-              m_pluginList.remove(plugin);
++                m_pluginList.remove(PluginType(service->name(),plugin));
+           }
+        else 
+           {
+@@ -123,16 +135,18 @@
+           else
+              {
+              plugin = KParts::ComponentFactory
+-                      ::createInstanceFromService<Digikam::ImagePlugin>(service, this, 0, 0);
++                         ::createInstanceFromService<Digikam::ImagePlugin>(service, this,
++                                                                           service->name().local8Bit(),
++                                                                           0);
+ 
+              if (plugin)
+                 {
+-                m_pluginList.append(plugin);
++                    m_pluginList.append(PluginType(service->name(), plugin));
+                 
+-                kdDebug() << "ImagePluginLoader: Loaded plugin " << plugin->name() << endl;
++                    kdDebug() << "ImagePluginLoader: Loaded plugin " << service->name() << endl;
+                 
+                 if (m_splash)      
+-                   m_splash->message(i18n("Loading: %1").arg(plugin->name()));
++                        m_splash->message(i18n("Loading: %1").arg(service->name()));
+                 
+                 ++cpt;
+                 }
+@@ -148,19 +162,37 @@
+                          // use the old splashscreen instance.
+ }
+ 
+-Digikam::ImagePlugin* ImagePluginLoader::pluginIsLoaded(QString pluginName)
++Digikam::ImagePlugin* ImagePluginLoader::pluginIsLoaded(const QString& name)
+ {
+-    if( m_pluginList.isEmpty() ) return NULL;
++    if ( m_pluginList.isEmpty() )
++        return 0;
+ 
+-    Digikam::ImagePlugin *plugin;
++    for (PluginList::iterator it = m_pluginList.begin(); it != m_pluginList.end(); ++it)
++    {
++        if ((*it).first == name )
++            return (*it).second;
++    }
++           
++    return 0;
++}
+         
+-    for ( plugin = m_pluginList.first() ; plugin ; plugin = m_pluginList.next() )
++bool ImagePluginLoader::pluginLibraryIsLoaded(const QString& libraryName)
+        {
+-       if( plugin->name() == pluginName )
+-          return plugin;
++    KTrader::OfferList offers = KTrader::self()->query("Digikam/ImagePlugin");
++    KTrader::OfferList::ConstIterator iter;
++    
++    for(iter = offers.begin(); iter != offers.end(); ++iter)
++    {
++        KService::Ptr service = *iter;
++
++        if(service->library() == libraryName)
++        {
++            if( pluginIsLoaded(service->name()) )
++                return true;
++        }
+        }
+            
+-    return NULL;
++    return false;
+ }
+ 
+ ImagePluginLoader::~ImagePluginLoader()
+@@ -173,7 +205,14 @@
+     return m_instance;
+ }
+ 
+-QPtrList<Digikam::ImagePlugin>& ImagePluginLoader::pluginList()
++QPtrList<Digikam::ImagePlugin> ImagePluginLoader::pluginList()
+ {
+-    return m_pluginList;
++    QPtrList<Digikam::ImagePlugin> list;
++
++    for (PluginList::iterator it = m_pluginList.begin(); it != m_pluginList.end(); ++it)
++    {
++        list.append((*it).second);
++    }
++        
++    return list;
+ }
+--- digikam/utilities/imageeditor/imagepluginloader.h.orig	2005-05-10 23:16:27.000000000 +0200
++++ digikam/utilities/imageeditor/imagepluginloader.h	2005-05-10 21:47:17.000000000 +0200
+@@ -27,6 +27,8 @@
+ #include <qobject.h>
+ #include <qptrlist.h>
+ #include <qstring.h>
++#include <qvaluelist.h>
++#include <qpair.h>
+ 
+ // Local includes.
+ 
+@@ -44,16 +46,23 @@
+ 
+     static ImagePluginLoader* instance();
+ 
+-    QPtrList<Digikam::ImagePlugin>& pluginList();
+-    void loadPluginsFromList(QStringList list);
++    QPtrList<Digikam::ImagePlugin> pluginList();
++    void loadPluginsFromList(const QStringList& list);
++    
++    // Return true if plugin library is loaded in memory.
++    // 'libraryName' is internal plugin library name not i18n.
++    bool pluginLibraryIsLoaded(const QString& libraryName);
+ 
+ private:
+ 
++    typedef QPair<QString,Digikam::ImagePlugin*> PluginType;
++    typedef QValueList< PluginType >             PluginList;
++    
+     SplashScreen                   *m_splash;
+     static ImagePluginLoader       *m_instance;
+-    QPtrList<Digikam::ImagePlugin>  m_pluginList;
++    PluginList                            m_pluginList;
+     
+-    Digikam::ImagePlugin* pluginIsLoaded(QString pluginName);
++    Digikam::ImagePlugin* pluginIsLoaded(const QString& name);
+ };
+ 
+ #endif /* IMAGEPLUGINLOADER_H */
+Index: digikam/utilities/imageeditor/imagewindow.cpp
+===================================================================
+--- digikam/utilities/imageeditor/imagewindow.cpp	(revision 411796)
++++ digikam/utilities/imageeditor/imagewindow.cpp	(revision 411797)
+@@ -116,9 +116,11 @@
+ 
+     buildGUI();
+         
+-    ImagePluginLoader* loader = ImagePluginLoader::instance();
+-    for (Digikam::ImagePlugin* plugin = loader->pluginList().first();
+-         plugin; plugin = loader->pluginList().next()) {
++    QPtrList<Digikam::ImagePlugin> pluginList
++        = ImagePluginLoader::instance()->pluginList();
++    for (Digikam::ImagePlugin* plugin = pluginList.first();
++         plugin; plugin = pluginList.next())
++    {
+         if (plugin) {
+             guiFactory()->addClient(plugin);
+             plugin->setParentWidget(this);
+@@ -166,9 +168,11 @@
+ 
+     saveSettings();
+ 
+-    ImagePluginLoader* loader = ImagePluginLoader::instance();
+-    for (Digikam::ImagePlugin* plugin = loader->pluginList().first();
+-         plugin; plugin = loader->pluginList().next()) {
++    QPtrList<Digikam::ImagePlugin> pluginList
++        = ImagePluginLoader::instance()->pluginList();
++    for (Digikam::ImagePlugin* plugin = pluginList.first();
++         plugin; plugin = pluginList.next())
++    {
+         if (plugin) {
+             guiFactory()->removeClient(plugin);
+             plugin->setParentWidget(0);

Modified: kde-extras/digikam/trunk/debian/rules
===================================================================
--- kde-extras/digikam/trunk/debian/rules	2005-05-08 14:56:05 UTC (rev 1057)
+++ kde-extras/digikam/trunk/debian/rules	2005-05-11 12:23:41 UTC (rev 1058)
@@ -3,7 +3,7 @@
 cdbs_kde_enable_debug = --disable-debug
 
 include /usr/share/cdbs/1/rules/debhelper.mk
-#include /usr/share/cdbs/1/rules/simple-patchsys.mk
+include /usr/share/cdbs/1/rules/simple-patchsys.mk
 include /usr/share/cdbs/1/class/kde.mk
 
 DEB_INSTALL_MANPAGES_digikam = debian/digikam.manpage debian/showfoto.manpage