Bug 135655

Summary: proper full screen mode in preview (F3) - no sidebar, toolbar
Product: [Applications] digikam Reporter: Debajyoti Bera <dbera.web>
Component: Preview-ImageAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: wishlist CC: lure
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In: 0.9.1
Sentry Crash Report:

Description Debajyoti Bera 2006-10-14 22:29:21 UTC
Version:           svn (using KDE KDE 3.5.4)
Installed from:    Compiled From Sources
OS:                Linux

It took me quite some time to realise that there is a "preview/view" mode which can be reached using F3 and not-by doubleclicking (the most common operation). But that will go to a separate usability bug.

Anyway, in the preview widget, trying to view the images in fullscreen mode results in improper full-screen. The toolbar at the top, the menu-bar, the left sidebar and the right sidebar are displayed in the full-screen mode. When I press full-screen, I would obviously want proper full-screen (like the one I find in imageeditor) i.e. nothing but the picture on the screen (and possibly with optional toolbar to go forward and backward).
Comment 1 caulier.gilles 2007-02-09 16:36:29 UTC
SVN commit 631948 by cgilles:

digikam from trunk: new Slideshow Tool using Preview feature !

Hi guys, you can slide your RAW files very fast like this !!!

This slide show tool is a simplified version of kipi-plugins SlideShow tool. No effect, no OpenGL. Just the picture slided on the screen.

But the must important feature is to use Image Preview : RAW files can be slided and pictures saved by digiKam image editor will be loaded very fast because we use preview image embeded in IPTC metadata (that the kipi-plugins cannot do it).

This slide show tool run always in fullscreen mode. this have simplified the common EditorWindow class implementation.

This slide show tool is available in Image Editor and Showfoto instead the old one. Added it to Album Gui is not a problem. It's very easy to add the right action on the main window menu. 

Luka, If you want to do it before 0.9.1-Beta1, let's go to, and close files #135655, #140303, #140304. thanks in advance...

CCBUGS: 135655, 140303, 140304
BUG: 116518

 M  +1 -0      digikam/Makefile.am  
 M  +2 -0      showfoto/Makefile.am  
 M  +20 -13    showfoto/showfoto.cpp  
 M  +2 -1      showfoto/showfoto.h  
 M  +1 -1      utilities/Makefile.am  
 M  +14 -13    utilities/imageeditor/editor/Makefile.am  
 M  +9 -51     utilities/imageeditor/editor/editorwindow.cpp  
 M  +6 -9      utilities/imageeditor/editor/editorwindow.h  
 M  +2 -0      utilities/imageeditor/editor/editorwindowprivate.h  
 M  +19 -5     utilities/imageeditor/editor/imagewindow.cpp  
 M  +2 -1      utilities/imageeditor/editor/imagewindow.h  
 M  +1 -1      utilities/imageeditor/tools/Makefile.am  
 D             utilities/imageeditor/tools/slideshow.cpp  
 D             utilities/imageeditor/tools/slideshow.h  
 M  +14 -14    utilities/setup/setupslideshow.cpp  
 M  +4 -4      utilities/setup/setupslideshow.h  
 A             utilities/slideshow (directory)  
 A             utilities/slideshow/Makefile.am  
 AM            utilities/slideshow/slideshow.cpp   [License: GPL]
 AM            utilities/slideshow/slideshow.h   [License: GPL]
 AM            utilities/slideshow/toolbar.cpp   [License: GPL]
 AM            utilities/slideshow/toolbar.h   [License: GPL]
Comment 2 Luka Renko 2007-02-09 23:03:09 UTC
SVN commit 632071 by lure:

Add Slide Show to View menu and toolbar:
- uses own slideshow implementation (same as Showfoto/Image Editor)
- implemented with preview, so can be also used as full screen preview
- left KIPI-plugin in Tools menu (should be renamed to reduce confusion)

TODO: find good keyboard shortcut to assign to Slide Show function
- all obvious ones are already used: F5 (powerpoint), F12 (kpresenter)

CCBUG: 135655
BUG: 140303, 140304


 M  +1 -0      Makefile.am  
 M  +4 -0      digikamapp.cpp  
 M  +2 -0      digikamappprivate.h  
 M  +4 -1      digikamui.rc  
 M  +30 -0     digikamview.cpp  
 M  +1 -0      digikamview.h  


--- trunk/extragear/graphics/digikam/digikam/Makefile.am #632070:632071
@@ -20,6 +20,7 @@
 	   -I$(top_srcdir)/digikam/utilities/imageeditor/canvas \
 	   -I$(top_srcdir)/digikam/utilities/splashscreen \
 	   -I$(top_srcdir)/digikam/utilities/setup \
+	   -I$(top_srcdir)/digikam/utilities/slideshow \
 	   -I$(top_srcdir)/digikam/utilities/batch \
 	   $(LIBKIPI_CFLAGS) $(GPHOTO_CFLAGS) $(all_includes) 
 
--- trunk/extragear/graphics/digikam/digikam/digikamapp.cpp #632070:632071
@@ -765,6 +765,10 @@
                                          "in full screen mode."));
 #endif
 
+    d->slideShowAction = new KAction(i18n("Slide Show"), "slideshow", 0,
+                                     d->view, SLOT(slotSlideShow()),
+                                     actionCollection(), "slideshow");
+
     d->quitAction = KStdAction::quit(this,
                                    SLOT(slotExit()),
                                    actionCollection(),
--- trunk/extragear/graphics/digikam/digikam/digikamappprivate.h #632070:632071
@@ -99,6 +99,7 @@
         thumbSizePlusAction                  = 0;
         thumbSizeMinusAction                 = 0;
         fullScreenAction                     = 0;
+        slideShowAction                      = 0;
         rating0Star                          = 0;
         rating1Star                          = 0;
         rating2Star                          = 0;
@@ -188,6 +189,7 @@
 
     // View Actions
     KAction               *fullScreenAction;
+    KAction               *slideShowAction;
     KAction               *thumbSizePlusAction;
     KAction               *thumbSizeMinusAction;
     KSelectAction         *imageSortAction;
--- trunk/extragear/graphics/digikam/digikam/digikamui.rc #632070:632071
@@ -1,5 +1,5 @@
 <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui version="18" name="digikam" >
+<kpartgui version="19" name="digikam" >
 
  <MenuBar>
 
@@ -60,6 +60,7 @@
   <Menu name="View" >
    <text>&amp;View</text>
      <Action name="full_screen" />
+     <Action name="slideshow" />
      <Separator/>
      <Action name="album_thumbSizeIncrease" />
      <Action name="album_thumbSizeDecrease" />
@@ -124,7 +125,9 @@
   <Separator/>
   <Action name="album_thumbSizeIncrease" />
   <Action name="album_thumbSizeDecrease" />
+  <Separator/>
   <Action name="full_screen" />
+  <Action name="slideshow" />
  </ToolBar>
  <ActionProperties/>
 
--- trunk/extragear/graphics/digikam/digikam/digikamview.cpp #632070:632071
@@ -59,6 +59,7 @@
 #include "albumsettings.h"
 #include "albumhistory.h"
 #include "batchsyncmetadata.h"
+#include "slideshow.h"
 #include "sidebar.h"
 #include "imagepropertiessidebardb.h"
 #include "datefolderview.h"
@@ -895,6 +896,35 @@
     d->parent->toggledToPreviewMode(t);
 }
 
+void DigikamView::slotSlideShow()
+{
+    KConfig* config = kapp->config();
+    config->setGroup("ImageViewer Settings");
+    bool startWithCurrent = config->readBoolEntry("SlideShowStartCurrent", false);
+    bool loop             = config->readBoolEntry("SlideShowLoop", false);
+    bool printName        = config->readBoolEntry("SlideShowPrintName", true);
+    int  delay            = config->readNumEntry("SlideShowDelay", 5);
+
+    bool exifRotate = AlbumSettings::instance()->getExifRotate();
+    KURL::List urlList;
+
+    AlbumIconItem* item = 0;
+    if (startWithCurrent)
+        item = dynamic_cast<AlbumIconItem*>(d->iconView->currentItem());
+    else
+        item = dynamic_cast<AlbumIconItem*>(d->iconView->firstItem());
+
+    while (item) 
+    {
+        urlList.append(item->imageInfo()->kurl());
+
+        item = dynamic_cast<AlbumIconItem*>(item->nextItem());
+    }
+
+    SlideShow *slide = new SlideShow(urlList, exifRotate, delay*1000, printName, loop);
+    slide->show();
+}
+
 void DigikamView::slotImageEdit()
 {
     AlbumIconItem *currItem = dynamic_cast<AlbumIconItem*>(d->iconView->currentItem());
--- trunk/extragear/graphics/digikam/digikam/digikamview.h #632070:632071
@@ -101,6 +101,7 @@
     void slotNewAdvancedSearch();
 
     // Image action slots
+    void slotSlideShow();
     void slotImagePreview();
     void slotImageEdit();
     void slotImageExifOrientation(int orientation);
Comment 3 Mikolaj Machowski 2007-02-10 01:35:48 UTC
> TODO: find good keyboard shortcut to assign to Slide Show function
> - all obvious ones are already used: F5 (powerpoint), F12 (kpresenter)


KPDF uses Ctrl+Shift+P. Maybe not nice but it would be used in more than
one app. Also... I noticed that F5 is used for Refresh. What is supposed
this to do? File changes should be done through FAM. What else should be
refreshed?
Comment 4 caulier.gilles 2007-02-10 08:32:25 UTC
Mik,

The icons item from album, like konqueror do.

Gilles
Comment 5 Mikolaj Machowski 2007-02-10 10:56:53 UTC
Some issues:

- when clicking arrows it starts auto slideshow, IMO users would expect
  going image by image
- file name in lower-left may be not always readable due to character of
  photo beneath it, maybe some semi transparent background to be sure it
  will be always readable
- file name in lower-left: it sometimes disturbs the viewing, make it
  visible first few seconds when switching to photo, vanish but show it
  again when mouse hit bottom of the screen (analog to nav buttons and
  top of the screen)
- keyboard shortcuts for faster going through images and/or buttons for
  fast forward

TIA for consideration of this points
Comment 6 Luka Renko 2007-02-10 20:09:56 UTC
SVN commit 632346 by lure:

Implement proper full screen mode for Album GUI

Hide menubar, toolbar (configurable), statusbar and left/ride sidebars.

BUG: 135655


 M  +2 -1      NEWS  
 M  +25 -0     digikam/digikamapp.cpp  
 M  +12 -0     digikam/digikamview.cpp  
 M  +2 -0      digikam/digikamview.h  


--- trunk/extragear/graphics/digikam/NEWS #632345:632346
@@ -493,6 +493,7 @@
 285 ==> 140303 : slideshow must be relocated to View menu from tools menu.
 286 ==> 137503 : Tags are not written to image file automatically.
 287 ==> 136254 : Editing tags does not change IPTC-keywords.
-288 ==> 
+288 ==> 135655 : Proper full screen mode (no menu, toolbar, statusbar, sidebars)
+289 ==> 
 
 ---------------------------------------------------------------------------------------------------- 
--- trunk/extragear/graphics/digikam/digikam/digikamapp.cpp #632345:632346
@@ -29,7 +29,9 @@
 #include <qstringlist.h>
 #include <qtimer.h>
 #include <qsignalmapper.h>
+#include <qdockarea.h>
 
+
 // KDE includes.
 
 #include <kaboutdata.h>
@@ -44,6 +46,7 @@
 #include <ktip.h>
 #include <kdeversion.h>
 #include <kapplication.h>
+#include <kmenubar.h>
 #include <kmessagebox.h>
 #include <kwin.h>
 #include <dcopref.h>
@@ -1511,11 +1514,33 @@
 #else
         showNormal();
 #endif
+        menuBar()->show();
+        statusBar()->show();
+        topDock()->show();
+        bottomDock()->show();
+        leftDock()->show();
+        rightDock()->show();
+        d->view->showSideBars();
+
         d->fullScreen = false;
     }
     else
     {
+        KConfig* config = kapp->config();
+        config->setGroup("ImageViewer Settings");
+        bool fullScreenHideToolBar = config->readBoolEntry("FullScreen Hide ToolBar", false);
+
+        menuBar()->hide();
+        statusBar()->hide();
+        if (fullScreenHideToolBar)
+            topDock()->hide();
+        bottomDock()->hide();
+        leftDock()->hide();
+        rightDock()->hide();
+        d->view->hideSideBars();
+
         showFullScreen();
+
         d->fullScreen = true;
     }
 }
--- trunk/extragear/graphics/digikam/digikam/digikamview.cpp #632345:632346
@@ -348,6 +348,18 @@
     }
 }
 
+void DigikamView::showSideBars()
+{
+    d->leftSideBar->restore();
+    d->rightSideBar->restore();
+}
+
+void DigikamView::hideSideBars()
+{
+    d->leftSideBar->backup();
+    d->rightSideBar->backup();
+}
+
 void DigikamView::slotFirstItem(void)
 {
     AlbumIconItem *currItem = dynamic_cast<AlbumIconItem*>(d->iconView->firstItem());
--- trunk/extragear/graphics/digikam/digikam/digikamview.h #632345:632346
@@ -57,6 +57,8 @@
     void clearHistory();
     void getForwardHistory(QStringList &titles);
     void getBackwardHistory(QStringList &titles);
+    void showSideBars();
+    void hideSideBars();
 
 signals: