Bug 116609 - Allow slideshow to be recursive
Summary: Allow slideshow to be recursive
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Plugin-Generic-Presentation (show other bugs)
Version: unspecified
Platform: Gentoo Packages Linux
: NOR wishlist
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-11-18 09:56 UTC by Dik Takken
Modified: 2022-01-17 05:34 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In: 7.6.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dik Takken 2005-11-18 09:56:05 UTC
Version:           0.1.0_beta2 (using KDE KDE 3.4.1)
Installed from:    Gentoo Packages
OS:                Linux

Please add an option to also display the images in subalbums. 

Currently the only way to show the content of multiple albums is to copy all images into a new album, then start the slideshow.

Note that this is no duplicate of Bug 91545.
Comment 1 Tom Chance 2005-12-18 15:06:53 UTC
I'd also find this very useful. A simple checkbox in the dialogue that pops up in Digikam would do the trick. It could also be extended to allow users to manually check off the albums he/she wants to go into the slideshow from a list.
Comment 2 Anders Lund 2005-12-18 20:06:49 UTC
as should it be possible to display a slideshow with the images in a search, or images collected by the date or tag grouping in the right sidebar, and when in an album, only displayed images should be in the slideshow (that is, tag filtering should affect a slideshow too)
Comment 3 Wennael Lemonnier 2006-01-24 12:20:58 UTC
I'd also find very useful to bo able to use slideshow within multiple albums, or all albums, when clicking the "my albums" icon before running slideshow (for the moment, in digikam 0.8.1 ang kipi-plugins-0.1.0rc1, this produce a complain about there are no images selected)
Comment 4 Stefan Mueller 2006-04-22 11:59:12 UTC
This would make it easy to display those auto-generated folders. Digikam has an option to create subfolders by date when it imports pictures from a camera. 

But there is no way to view all those subfolders in one sildeshow presentation.

See
http://bugs.kde.org/show_bug.cgi?id=63978#c4
Comment 5 caulier.gilles 2007-02-14 11:02:58 UTC
SVN commit 633539 by cgilles:

digikam from trunk: native Slideshow Tool : added Albums recurssion feature. You can use SHIFT+F9 to start it.

BUG: 116609

 M  +12 -5     digikam/digikamapp.cpp  
 M  +5 -0      digikam/digikamappprivate.h  
 M  +41 -2     digikam/digikamview.cpp  
 M  +4 -2      digikam/digikamview.h  
 M  +1 -1      utilities/batch/Makefile.am  
 AM            utilities/batch/imageinfoalbumsjob.cpp   [License: GPL]
 AM            utilities/batch/imageinfoalbumsjob.h   [License: GPL]


--- trunk/extragear/graphics/digikam/digikam/digikamapp.cpp #633538:633539
@@ -769,14 +769,15 @@
 #endif
 
     d->slideShowAction = new KActionMenu(i18n("Slide Show"), "slideshow",
-                                    actionCollection(), "slideshow");
+                                         actionCollection(), "slideshow");
 
     d->slideShowAction->setDelayed(false);
 
-    KAction *ssAction = new KAction(i18n("All"), 0, Key_F9,
-                                    d->view, SLOT(slotSlideShowAll()),
-                                    actionCollection(), "slideshow_all");
-    d->slideShowAction->insert(ssAction);
+    d->slideShowAllAction = new KAction(i18n("All"), 0, Key_F9,
+                                d->view, SLOT(slotSlideShowAll()),
+                                actionCollection(), "slideshow_all");
+    d->slideShowAction->insert(d->slideShowAllAction);
+
     d->slideShowSelectionAction = new KAction(i18n("Selection"), 0, ALT+Key_F9,
                                               d->view, 
                                               SLOT(slotSlideShowSelection()),
@@ -784,6 +785,12 @@
                                               "slideshow_selected");
     d->slideShowAction->insert(d->slideShowSelectionAction);
 
+    d->slideShowRecursiveAction = new KAction(i18n("Recursive"), 0, SHIFT+Key_F9,
+                                              d->view, 
+                                              SLOT(slotSlideShowRecursive()),
+                                              actionCollection(), 
+                                              "slideshow_recursive");
+    d->slideShowAction->insert(d->slideShowRecursiveAction);
 
     d->quitAction = KStdAction::quit(this,
                                    SLOT(slotExit()),
--- trunk/extragear/graphics/digikam/digikam/digikamappprivate.h #633538:633539
@@ -100,6 +100,9 @@
         thumbSizeMinusAction                 = 0;
         fullScreenAction                     = 0;
         slideShowAction                      = 0;
+        slideShowAllAction                   = 0;
+        slideShowSelectionAction             = 0;
+        slideShowRecursiveAction             = 0;
         rating0Star                          = 0;
         rating1Star                          = 0;
         rating2Star                          = 0;
@@ -190,7 +193,9 @@
     // View Actions
     KAction               *fullScreenAction;
     KActionMenu           *slideShowAction;
+    KAction               *slideShowAllAction;
     KAction               *slideShowSelectionAction;
+    KAction               *slideShowRecursiveAction;
     KAction               *thumbSizePlusAction;
     KAction               *thumbSizeMinusAction;
     KSelectAction         *imageSortAction;
--- trunk/extragear/graphics/digikam/digikam/digikamview.cpp #633538:633539
@@ -63,6 +63,7 @@
 #include "slideshow.h"
 #include "sidebar.h"
 #include "imagepropertiessidebardb.h"
+#include "imageinfoalbumsjob.h"
 #include "datefolderview.h"
 #include "tagfolderview.h"
 #include "searchfolderview.h"
@@ -211,6 +212,12 @@
 
     connect(d->parent, SIGNAL(signalPasteAlbumItemsSelection()),
             d->iconView, SLOT(slotPaste()));
+
+    connect(this, SIGNAL(signalProgressBarMode(int, const QString&)),
+            d->parent, SLOT(slotProgressBarMode(int, const QString&)));
+
+    connect(this, SIGNAL(signalProgressValue(int)),
+            d->parent, SLOT(slotProgressValue(int)));
                         
     // -- AlbumManager connections --------------------------------
 
@@ -1085,6 +1092,33 @@
     slideShow(infoList);
 }
 
+void DigikamView::slotSlideShowRecursive()
+{
+    Album *album = AlbumManager::instance()->currentAlbum();
+    if(album)
+    {
+        AlbumList albumList;
+        albumList.append(album);
+        AlbumIterator it(album);
+        while (it.current())
+        {
+            albumList.append(*it);
+            ++it;
+        }
+
+        ImageInfoAlbumsJob *job = new ImageInfoAlbumsJob;
+        connect(job, SIGNAL(signalCompleted(const ImageInfoList&)),
+                this, SLOT(slotItemsInfoFromAlbums(const ImageInfoList&)));
+        job->allItemsFromAlbums(albumList);       
+    }
+}
+
+void DigikamView::slotItemsInfoFromAlbums(const ImageInfoList& infoList)
+{
+    ImageInfoList list = infoList; 
+    slideShow(list);
+}
+
 void DigikamView::slideShow(ImageInfoList &infoList)
 {
     KConfig* config = kapp->config();
@@ -1100,8 +1134,9 @@
     SlideShowSettings settings;
     settings.exifRotate = AlbumSettings::instance()->getExifRotate();
 
-    for (ImageInfo *info = infoList.first(); info; info = infoList.next())
+    for (ImageInfoList::iterator it = infoList.begin(); it != infoList.end(); ++it)
     {
+        ImageInfo *info = *it;
         settings.fileList.append(info->kurl());
         SlidePictureInfo pictInfo;
         meta.load(info->kurl().path());
@@ -1127,7 +1162,11 @@
 
     SlideShow *slide = new SlideShow(settings);
     if (startWithCurrent)
-        slide->setCurrent(dynamic_cast<AlbumIconItem*>(d->iconView->currentItem())->imageInfo()->kurl());
+    {
+        AlbumIconItem* current = dynamic_cast<AlbumIconItem*>(d->iconView->currentItem());
+        if (current) 
+            slide->setCurrent(current->imageInfo()->kurl());
+    }
 
     slide->show();
 }
--- trunk/extragear/graphics/digikam/digikam/digikamview.h #633538:633539
@@ -77,6 +77,9 @@
     // View Action slots
     void slotThumbSizePlus();
     void slotThumbSizeMinus();
+    void slotSlideShowAll();
+    void slotSlideShowSelection();
+    void slotSlideShowRecursive();
 
     // Album action slots
     void slotNewAlbum();
@@ -106,8 +109,6 @@
     void slotNewAdvancedSearch();
 
     // Image action slots
-    void slotSlideShowAll();
-    void slotSlideShowSelection();
     void slotImagePreview();
     void slotImageEdit();
     void slotImageExifOrientation(int orientation);
@@ -151,6 +152,7 @@
     void slotToggledToPreviewMode(bool);
     void slotDispatchImageSelected();
     void slotImageCopyResult(KIO::Job* job);
+    void slotItemsInfoFromAlbums(const ImageInfoList&);
 
     void slotLeftSidebarChangedTab(QWidget* w);
 
--- trunk/extragear/graphics/digikam/utilities/batch/Makefile.am #633538:633539
@@ -11,7 +11,7 @@
 noinst_LTLIBRARIES = libbatch.la 
 
 libbatch_la_SOURCES = batchthumbsgenerator.cpp batchalbumssyncmetadata.cpp \
-	              imageinfojob.cpp batchsyncmetadata.cpp 
+	              imageinfojob.cpp imageinfoalbumsjob.cpp batchsyncmetadata.cpp 
 
 libbatch_la_LDFLAGS = $(all_libraries) $(KDE_RPATH)
 
** trunk/extragear/graphics/digikam/utilities/batch/imageinfoalbumsjob.cpp #property svn:eol-style
   + native
** trunk/extragear/graphics/digikam/utilities/batch/imageinfoalbumsjob.h #property svn:eol-style
   + native