[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    RE: Thumbnail managing standard
From:       Simon MacMullen <simon.macmullen () aspect-proteus ! com>
Date:       2002-04-30 16:19:38
[Download RAW message or body]

Previously, on kde-core-devel...

> From: Malte Starostik [mailto:malte@kde.org]
> > One thing that sucks about the current 
> > implementation is that newly installed preview plugins are 
> disabled until 
> > user enables them. IMHO it should be the other way round, 
> i.e. changing
> the 
> > implementation from an enabled-list to a disabled-list.
> 
> OK. I will do this then.

...and have now done so. Patch is attached. The idea was to keep the
interface to KonqPropsView the same. However, I had to change
KonqPropsView::previewSettings() to be non-inline. This means that anything
compiled against it will get faulty behaviour (not crashing, but it'll be
confused by previews) until it is recompiled.

My question is: does anything apart from Konqueror use KonqPropsView? Or
more exactly KonqPropsView::previewSettings() ?

Cheers, Simon


["preview_default_on.diff" (application/octet-stream)]

Index: libkonq/konq_propsview.cc
===================================================================
RCS file: /home/kde/kdebase/libkonq/konq_propsview.cc,v
retrieving revision 1.69
diff -u -3 -p -r1.69 konq_propsview.cc
--- libkonq/konq_propsview.cc	2002/04/05 13:34:12	1.69
+++ libkonq/konq_propsview.cc	2002/04/30 16:13:02
@@ -27,6 +27,7 @@
 #include <unistd.h>
 #include <qfile.h>
 #include <iostream>
+#include <ktrader.h>
 #include <kinstance.h>
 #include <assert.h>
 
@@ -62,7 +63,7 @@ static QPixmap wallpaperPixmap( const QS
 
 struct KonqPropsView::Private
 {
-    // Move along, nothing to see...
+    QStringList* previewsToShow;
 };
 
 KonqPropsView::KonqPropsView( KInstance * instance, KonqPropsView * defaultProps )
@@ -79,7 +80,7 @@ KonqPropsView::KonqPropsView( KInstance 
   m_iItemTextPos = config->readNumEntry( "ItemTextPos", QIconView::Bottom );
   m_bShowDot = config->readBoolEntry( "ShowDotFiles", false );
   m_bShowDirectoryOverlays = config->readBoolEntry( "ShowDirectoryOverlays", false \
                );
-  m_preview = config->readListEntry( "Preview" );
+  m_dontPreview = config->readListEntry( "DontPreview" );
 
   m_textColor = config->readColorEntry( "TextColor" ); // will be set to QColor() if \
not found  m_bgColor = config->readColorEntry( "BgColor" ); // will be set to \
QColor() if not found @@ -101,6 +102,9 @@ KonqPropsView::KonqPropsView( KInstance 
 
   KGlobal::dirs()->addResourceType("tiles",
                                    KGlobal::dirs()->kde_default("data") + \
"konqueror/tiles/"); +                                   
+  d = new Private;
+  d->previewsToShow = 0;                             
 }
 
 KConfigBase * KonqPropsView::currentConfig()
@@ -130,6 +134,8 @@ KConfigBase * KonqPropsView::currentColo
 
 KonqPropsView::~KonqPropsView()
 {
+    delete d->previewsToShow;
+    delete d;
 }
 
 bool KonqPropsView::enterDir( const KURL & dir )
@@ -151,7 +157,7 @@ bool KonqPropsView::enterDir( const KURL
     m_iIconSize = m_defaultProps->iconSize();
     m_iItemTextPos = m_defaultProps->itemTextPos();
     m_bShowDot = m_defaultProps->isShowingDotFiles();
-    m_preview = m_defaultProps->m_preview;
+    m_dontPreview = m_defaultProps->m_dontPreview;
     m_textColor = m_defaultProps->m_textColor;
     m_bgColor = m_defaultProps->m_bgColor;
     m_bgPixmapFile = m_defaultProps->bgPixmapFile();
@@ -167,8 +173,8 @@ bool KonqPropsView::enterDir( const KURL
     m_iItemTextPos = config->readNumEntry( "ItemTextPos", m_iItemTextPos );
     m_bShowDot = config->readBoolEntry( "ShowDotFiles", m_bShowDot );
     m_bShowDirectoryOverlays = config->readBoolEntry( "ShowDirectoryOverlays", \
                m_bShowDirectoryOverlays );
-    if (config->hasKey( "Preview" ))
-        m_preview = config->readListEntry( "Preview" );
+    if (config->hasKey( "DontPreview" ))
+        m_dontPreview = config->readListEntry( "DontPreview" );
 
     m_textColor = config->readColorEntry( "TextColor", &m_textColor );
     m_bgColor = config->readColorEntry( "BgColor", &m_bgColor );
@@ -260,20 +266,23 @@ void KonqPropsView::setShowingDirectoryO
 
 void KonqPropsView::setShowingPreview( const QString &preview, bool show )
 {
-    if ( m_preview.contains( preview ) == show )
+    if ( m_dontPreview.contains( preview ) != show )
         return;
     else if ( show )
-        m_preview.append( preview );
+        m_dontPreview.remove( preview );
     else
-        m_preview.remove( preview );
+        m_dontPreview.append( preview );
     if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
         m_defaultProps->setShowingPreview( preview, show );
     else if (currentConfig())
     {
         KConfigGroupSaver cgs(currentConfig(), currentGroup());
-        currentConfig()->writeEntry( "Preview", m_preview );
+        currentConfig()->writeEntry( "DontPreview", m_dontPreview );
         currentConfig()->sync();
     }
+    
+    delete d->previewsToShow;
+    d->previewsToShow = 0;
 }
 
 void KonqPropsView::setBgColor( const QColor & color )
@@ -395,4 +404,22 @@ void KonqPropsView::applyColors(QWidget 
     // This makes us react to the palette-change event accordingly.
     if ( setPaletteNeeded )
         widget->setPalette( QPalette( a, d, i ) );
+}
+
+const QStringList& KonqPropsView::previewSettings()
+{
+    if ( ! d->previewsToShow )
+    {
+        d->previewsToShow = new QStringList;
+    
+        KTrader::OfferList plugins = KTrader::self()->query( "ThumbCreator" );
+        for ( KTrader::OfferList::ConstIterator it = plugins.begin(); it != \
plugins.end(); ++it ) +        {
+            QString name = (*it)->desktopEntryName();
+            if ( ! m_dontPreview.contains(name) )
+                d->previewsToShow->append( name );
+        }
+    }
+    
+    return *(d->previewsToShow);
 }
Index: libkonq/konq_propsview.h
===================================================================
RCS file: /home/kde/kdebase/libkonq/konq_propsview.h,v
retrieving revision 1.44
diff -u -3 -p -r1.44 konq_propsview.h
--- libkonq/konq_propsview.h	2002/04/05 13:34:12	1.44
+++ libkonq/konq_propsview.h	2002/04/30 16:13:02
@@ -93,9 +93,9 @@ public:
   bool isShowingDirectoryOverlays() const { return m_bShowDirectoryOverlays; }
 
   void setShowingPreview( const QString &preview, bool show );
-  bool isShowingPreview( const QString &preview ) const { return \
                m_preview.contains(preview); }
-  bool isShowingPreview() const { return m_preview.count() > 0; }
-  const QStringList &previewSettings() const { return m_preview; }
+  bool isShowingPreview( const QString &preview ) const { return ! \
m_dontPreview.contains(preview); } +  bool isShowingPreview() const { return \
m_dontPreview.count() == 0; } +  const QStringList &previewSettings();
 
   void setBgColor( const QColor & color );
   const QColor& bgColor(QWidget * widget) const;
@@ -128,7 +128,7 @@ private:
   int m_iItemTextPos;
   bool m_bShowDot;
   bool m_bShowDirectoryOverlays;
-  QStringList m_preview;
+  QStringList m_dontPreview;
   QColor m_textColor;
   QColor m_bgColor;
   QString m_bgPixmapFile;



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic