[Kde-imaging] branches/extragear/kde3/libs/kipi-plugins

Valerio Fuoglio valerio.fuoglio at gmail.com
Thu Nov 15 00:15:45 CET 2007


SVN commit 736830 by vfuoglio:

Added Ken Burns effect.
Backported some code from SmoothSlideSaver (by Carsten Weinhold).

Next step: port SlideShow to KDE4.

BUG: 102021
CCMAIL: kde-imaging at kde.org
GUI:


 M  +5 -1      NEWS  
 M  +2 -1      slideshow/Makefile.am  
 A             slideshow/imageloadthread.cpp   [License: GPL (v2+)]
 A             slideshow/imageloadthread.h   [License: GPL (v2+)]
 A             slideshow/kbeffect.cpp   [License: GPL (v2+)]
 A             slideshow/kbeffect.h   [License: GPL (v2+)]
 M  +14 -8     slideshow/plugin_slideshow.cpp  
 A             slideshow/screenproperties.cpp   [License: GPL (v2+)]
 A             slideshow/screenproperties.h   [License: GPL (v2+)]
 M  +64 -13    slideshow/slideshowconfig.cpp  
 M  +2 -1      slideshow/slideshowconfig.h  
 M  +46 -2     slideshow/slideshowconfigbase.ui  
 M  +0 -10     slideshow/slideshowgl.cpp  
 A             slideshow/slideshowkb.cpp   [License: GPL (v2+)]
 A             slideshow/slideshowkb.h   [License: GPL (v2+)]


--- branches/extragear/kde3/libs/kipi-plugins/NEWS #736829:736830
@@ -9,6 +9,7 @@
 PrintWizard    : Added raw file management, now raw files can be printed.
 SlideShow      : Solved minor issue in filename printing (2D slideshow).
 SlideShow      : New caching mechanism
+SlideShow      : Added Ken Burns effect
 
 
 Kipi-plugins BUG FIXING from B.K.O (http://bugs.kde.org):
@@ -16,8 +17,11 @@
 001 ==> 149666 : General     : iPod Export kipi plugin cannot be disabled at compile 
                                time when libgpod is present on system
 002 ==> 151604 : PrintWizard : Print Wizard does not recognize raw images
-003 ==>
+003 ==> 102021 : SlideShow   : Pan and Zoom on Slideshow viewing (not a transition) 
+                               a la iPhoto
+004 ==>
 
+
 v 0.1.5 - Beta1
 ----------------------------------------------------------------------------
 
--- branches/extragear/kde3/libs/kipi-plugins/slideshow/Makefile.am #736829:736830
@@ -10,7 +10,8 @@
 
 kipiplugin_slideshow_la_SOURCES = listimageitems.cpp plugin_slideshow.cpp \
 	slideshow.cpp slideshowconfig.cpp slideshowconfigbase.ui slideshowgl.cpp \
-	slideshowloader.cpp toolbar.cpp
+	slideshowloader.cpp toolbar.cpp imageloadthread.cpp kbeffect.cpp screenproperties.cpp \
+	slideshowkb.cpp
 
 #kipiplugin_slideshow_la_LIBADD = -lkdefx  $(GL_LIBS) $(LIBKIPI_LIBS) $(LIB_KDEUI) $(LIB_KDECORE) $(LIB_QT)
 kipiplugin_slideshow_la_LIBADD = -lkdefx $(GL_LIBS) $(LIBKIPI_LIBS) $(LIBKDCRAW_LIBS)  \
--- branches/extragear/kde3/libs/kipi-plugins/slideshow/plugin_slideshow.cpp #736829:736830
@@ -43,6 +43,7 @@
 
 #include "slideshow.h"
 #include "slideshowgl.h"
+#include "slideshowkb.h"
 #include "slideshowconfig.h"
 #include "plugin_slideshow.h"
 
@@ -173,13 +174,13 @@
      
     bool    opengl;
     bool    shuffle;
+    bool    wantKB;
     
     config.setGroup("SlideShow Settings");
     opengl                = config.readBoolEntry("OpenGL");
     shuffle               = config.readBoolEntry("Shuffle");
-
-    if ( !m_urlList ) {kdDebug() << "ERRORE m_urlList NON ALLOCATO!!!"; return;}
-
+    wantKB                = config.readEntry("Effect Name (OpenGL)") == QString("Ken Burns");
+    
     if ( m_urlList->isEmpty() )
     {
         KMessageBox::sorry(kapp->activeWindow(), i18n("There are no images to show."));
@@ -227,10 +228,8 @@
         }
     }
 
-
     if (!opengl) {
-        KIPISlideShowPlugin::SlideShow *slideShow =
-                new KIPISlideShowPlugin::SlideShow(fileList, commentsList, m_imagesHasComments);
+      KIPISlideShowPlugin::SlideShow* slideShow = new KIPISlideShowPlugin::SlideShow(fileList, commentsList, m_imagesHasComments);
         slideShow->show();
     }
     else {
@@ -238,9 +237,16 @@
             KMessageBox::error(kapp->activeWindow(),
                                i18n("Sorry. OpenGL support not available on your system"));
         else {
-            KIPISlideShowPlugin::SlideShowGL *slideShow =
-                    new KIPISlideShowPlugin::SlideShowGL(fileList, commentsList, m_imagesHasComments);
+          if (wantKB) {
+            KIPISlideShowPlugin::SlideShowKB* slideShow = 
+                new KIPISlideShowPlugin::SlideShowKB(fileList, commentsList, m_imagesHasComments);
             slideShow->show();
+          }
+          else {
+            KIPISlideShowPlugin::SlideShowGL * slideShow = 
+                new KIPISlideShowPlugin::SlideShowGL(fileList, commentsList, m_imagesHasComments);
+            slideShow->show();
+          }
         }
     }
 }
--- branches/extragear/kde3/libs/kipi-plugins/slideshow/slideshowconfig.cpp #736829:736830
@@ -69,6 +69,7 @@
 #include "listimageitems.h"
 #include "slideshow.h"
 #include "slideshowgl.h"
+#include "slideshowkb.h"
 #include "slideshowconfig.h"
 #include "slideshowconfig.moc"
 
@@ -122,6 +123,7 @@
     connect(m_commentsBgColor, SIGNAL(changed(const QColor &)), this, SLOT(slotCommentsBgColorChanged()));
     connect(m_useMillisecondsCheckBox, SIGNAL(toggled(bool)), SLOT(slotUseMillisecondsToggled()));
     connect(m_delaySpinBox, SIGNAL(valueChanged(int)), this, SLOT(slotDelayChanged()));
+    connect(m_effectsComboBox, SIGNAL(activated(int)), this,  SLOT(slotEffectChanged()));
 
     connect(m_fileSrcButtonGroup, SIGNAL(clicked(int)), this, SLOT(slotSelection()));
 
@@ -165,6 +167,7 @@
     m_urlList = urlList;
     
     slotSelection();
+    slotEffectChanged();
 }
 
 
@@ -201,20 +204,31 @@
 {
     m_effectsComboBox->clear();
 
-    QMap<QString,QString> effectNames = SlideShowGL::effectNamesI18N();
     QStringList effects;
+    QMap<QString,QString> effectNames;
+    QMap<QString,QString>::Iterator it;
+    
+    // Load slideshowgl effects
+    effectNames = SlideShowGL::effectNamesI18N();
 
-    QMap<QString,QString>::Iterator it;
     for (it = effectNames.begin(); it != effectNames.end(); ++it)
         effects.append(it.data());
 
+    // Load Ken Burns effect
+    effectNames = SlideShowKB::effectNamesI18N();
+    for (it = effectNames.begin(); it != effectNames.end(); ++it)
+      effects.append(it.data());
+
+    // Update GUI
+    
+    effects.sort();
     m_effectsComboBox->insertStringList(effects);
 
     for (int i=0; i<m_effectsComboBox->count(); i++) {
-        if (effectNames[m_effectNameGL] == m_effectsComboBox->text(i)) {
-            m_effectsComboBox->setCurrentItem(i);
-            break;
-        }
+      if (effectNames[m_effectNameGL] == m_effectsComboBox->text(i)) {
+        m_effectsComboBox->setCurrentItem(i);
+        break;
+      }
     }
 }
 
@@ -248,6 +262,7 @@
     useMilliseconds       = m_config->readBoolEntry("Use Milliseconds", false);
     enableMouseWheel      = m_config->readNumEntry("Enable Mouse Wheel", true);
     
+
     // Comments tab settings
     uint  commentsFontColor;
     uint  commentsBgColor;
@@ -269,11 +284,15 @@
     commentsLinesLength   = m_config->readNumEntry("Comments Lines Length", 72);
 
     // Advanced tab
-    bool enableCache;
-
+    bool enableCache, kbDisableFadeInOut, kbDisableCrossFade;
+    
+    kbDisableFadeInOut = m_config->readBoolEntry("KB Disable FadeInOut", false);
+    kbDisableCrossFade = m_config->readBoolEntry("KB Disable Crossfade", false);
+    
     enableCache = m_config->readBoolEntry("Enable Cache", false);
     m_cacheSize  = m_config->readNumEntry("Cache Size", 5);
     
+    
     // -- Apply Settings to widgets ------------------------------
 
     m_openglCheckBox->setChecked(opengl);
@@ -304,6 +323,9 @@
     m_commentsFontChooser->setFont(*savedFont);
     delete savedFont;
 
+    m_kbDisableFadeCheckBox->setChecked(kbDisableFadeInOut);
+    m_kbDisableCrossfadeCheckBox->setChecked(kbDisableCrossFade);
+    
     m_cacheCheckBox->setChecked(enableCache);
     
     slotOpenGLToggled();
@@ -374,14 +396,27 @@
 
     }
     else {
+      QStringList effects;
+      QMap<QString,QString> effectNames;
+      QMap<QString,QString>::Iterator it;
+    
+    // Load slideshowgl effects
+      effectNames = SlideShowGL::effectNamesI18N();
 
+      for (it = effectNames.begin(); it != effectNames.end(); ++it)
+        effects.append(it.data());
+
+    // Load Ken Burns effect
+      effectNames = SlideShowKB::effectNamesI18N();
+      for (it = effectNames.begin(); it != effectNames.end(); ++it)
+        effects.append(it.data());
+
         QString effect;
-        QMap<QString,QString> effectNames = SlideShowGL::effectNamesI18N();
-        QMap<QString,QString>::Iterator it;
+        QStringList::Iterator it1;
 
-        for (it = effectNames.begin(); it != effectNames.end(); ++it) {
-            if (it.data() == m_effectsComboBox->currentText()) {
-                effect = it.key();
+        for (it1 = effects.begin(); it1 != effects.end(); ++it1) {
+            if ( *it1 == m_effectsComboBox->currentText()) {
+                effect = *it1;
                 break;
             }
         }
@@ -391,6 +426,9 @@
     }
 
     // Advanced settings
+    m_config->writeEntry("KB Disable FadeInOut", m_kbDisableFadeCheckBox->isChecked());
+    m_config->writeEntry("KB Disable Crossfade", m_kbDisableCrossfadeCheckBox->isChecked());
+    
     m_config->writeEntry("Enable Cache", m_cacheCheckBox->isChecked());
     m_config->writeEntry("Cache Size", m_cacheSizeSpinBox->value());
     
@@ -480,6 +518,17 @@
     }
 }
 
+void SlideShowConfig::slotEffectChanged()
+{
+  bool isKB = m_effectsComboBox->currentText() == i18n("Ken Burns");
+  
+  m_printNameCheckBox->setEnabled(!isKB);
+  m_printProgressCheckBox->setEnabled(!isKB);
+  m_printCommentsCheckBox->setEnabled(!isKB);
+  
+  m_cacheButtonGroup->setEnabled(!isKB);
+}
+
 void SlideShowConfig::slotCacheToggled()
 {
   bool isEnabled = m_cacheCheckBox->isChecked();
@@ -499,6 +548,8 @@
     }
     
     ShowNumberImages( m_ImagesFilesListBox->count() );
+    
+    slotEffectChanged();
 }
 
 
--- branches/extragear/kde3/libs/kipi-plugins/slideshow/slideshowconfig.h #736829:736830
@@ -90,6 +90,7 @@
     void slotStartClicked();
     void slotHelp();
     void slotOpenGLToggled();
+    void slotEffectChanged();
     void slotDelayChanged();
     void slotUseMillisecondsToggled();
     void slotPrintCommentsToggled();
@@ -98,7 +99,7 @@
     
     void slotSelection();
     void slotCacheToggled();
-    
+   
     void SlotPortfolioDurationChanged ( int );
     void slotImagesFilesSelected( QListBoxItem *item );
     void slotAddDropItems(KURL::List filesUrl);
--- branches/extragear/kde3/libs/kipi-plugins/slideshow/slideshowconfigbase.ui #736829:736830
@@ -1266,9 +1266,41 @@
                     </widget>
                     <widget class="QButtonGroup">
                         <property name="name">
-                            <cstring>buttonGroup2</cstring>
+                            <cstring>buttonGroup3</cstring>
                         </property>
                         <property name="title">
+                            <string>Ken Burns effect</string>
+                        </property>
+                        <hbox>
+                            <property name="name">
+                                <cstring>unnamed</cstring>
+                            </property>
+                            <widget class="QCheckBox">
+                                <property name="name">
+                                    <cstring>m_kbDisableFadeCheckBox</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Disable fade-in / fade-out</string>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox">
+                                <property name="name">
+                                    <cstring>m_kbDisableCrossfadeCheckBox</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Disable crossfade</string>
+                                </property>
+                            </widget>
+                        </hbox>
+                    </widget>
+                    <widget class="QButtonGroup">
+                        <property name="name">
+                            <cstring>m_cacheButtonGroup</cstring>
+                        </property>
+                        <property name="enabled">
+                            <bool>true</bool>
+                        </property>
+                        <property name="title">
                             <string>Others</string>
                         </property>
                         <vbox>
@@ -1340,6 +1372,18 @@
                                     </widget>
                                 </hbox>
                             </widget>
+                            <widget class="QLabel">
+                                <property name="name">
+                                    <cstring>m_KBCacheLabel</cstring>
+                                </property>
+                                <property name="enabled">
+                                    <bool>true</bool>
+                                </property>
+                                <property name="text">
+                                    <string>&lt;b&gt;Notice&lt;/b&gt;:
+Ken Burns effect doesn't use this cache mechanism.</string>
+                                </property>
+                            </widget>
                         </vbox>
                     </widget>
                     <spacer>
@@ -1355,7 +1399,7 @@
                         <property name="sizeHint">
                             <size>
                                 <width>41</width>
-                                <height>140</height>
+                                <height>90</height>
                             </size>
                         </property>
                     </spacer>
--- branches/extragear/kde3/libs/kipi-plugins/slideshow/slideshowgl.cpp #736829:736830
@@ -491,16 +491,6 @@
 
 void SlideShowGL::loadImage()
 {
-//     QPair<QString, int> fileAngle = m_fileList[m_fileIndex];
-//     QString path(fileAngle.first);
-//     int     angle(fileAngle.second);
-//     QImage image(path);
-//     if (angle != 0)
-//     {
-//         QWMatrix wm;
-//         wm.rotate(angle);
-//         image = image.xForm(wm);
-//     }
 
     QImage image = m_imageLoader->getCurrent();
   


More information about the Kde-imaging mailing list