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.
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.
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)
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)
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
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