Bug 116154 - Show progress bar while saving large files
Summary: Show progress bar while saving large files
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: ImageEditor-Save (show other bugs)
Version: 0.8.0
Platform: Gentoo Packages Linux
: NOR wishlist
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-11-11 23:30 UTC by Dik Takken
Modified: 2022-02-03 04:15 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 0.9.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dik Takken 2005-11-11 23:30:46 UTC
Version:           0.8.0-beta2 (using KDE KDE 3.4.1)
Installed from:    Gentoo Packages
OS:                Linux

Saving a 6 Megapixel scan to PNG format can take a while, and DigiKam (as well as Showfoto) shows no progress while saving. A progress bar would be nice.
Comment 1 caulier.gilles 2006-01-24 12:55:17 UTC
SVN commit 501938 by cgilles:

Digikam 0.9.0 from trunk : 

- New abstraction layer for image editor tools : image print, image resize, and slide show tools are migrated to a new dedicaced subfolder.
- New IO file acess progress bar to displaying image file loading and saving operations. Only Loading image progress rules is complete. Saving image progress still to do.

CCMAIL: digikam-devel@kde.org
CCBUG: 116154

 M  +1 -0      showfoto/Makefile.am  
 M  +11 -5     showfoto/showfoto.cpp  
 M  +2 -1      showfoto/showfoto.h  
 M  +1 -1      utilities/imageeditor/Makefile.am  
 M  +7 -3      utilities/imageeditor/editor/Makefile.am  
 D             utilities/imageeditor/editor/imageprint.cpp  
 D             utilities/imageeditor/editor/imageprint.h  
 D             utilities/imageeditor/editor/imageresizedlg.cpp  
 D             utilities/imageeditor/editor/imageresizedlg.h  
 M  +6 -2      utilities/imageeditor/editor/imagewindow.cpp  
 M  +3 -1      utilities/imageeditor/editor/imagewindow.h  
 A             utilities/imageeditor/editor/iofileprogressbar.cpp   [License: GPL]
 A             utilities/imageeditor/editor/iofileprogressbar.h   [License: GPL]
 D             utilities/imageeditor/editor/slideshow.cpp  
 D             utilities/imageeditor/editor/slideshow.h  
 A             utilities/imageeditor/tools (directory)  
 A             utilities/imageeditor/tools/Makefile.am  
 A             utilities/imageeditor/tools/imageprint.cpp   utilities/imageeditor/editor/imageprint.cpp#501877
 A             utilities/imageeditor/tools/imageprint.h   utilities/imageeditor/editor/imageprint.h#501877
 A             utilities/imageeditor/tools/imageresizedlg.cpp   utilities/imageeditor/editor/imageresizedlg.cpp#501877
 A             utilities/imageeditor/tools/imageresizedlg.h   utilities/imageeditor/editor/imageresizedlg.h#501877
 A             utilities/imageeditor/tools/slideshow.cpp   utilities/imageeditor/editor/slideshow.cpp#501877
 A             utilities/imageeditor/tools/slideshow.h   utilities/imageeditor/editor/slideshow.h#501877


--- trunk/extragear/graphics/digikam/showfoto/Makefile.am #501937:501938
@@ -15,6 +15,7 @@
 	   -I$(top_srcdir)/digikam/digikam \
 	   -I$(top_srcdir)/digikam/utilities/imageeditor/canvas \
 	   -I$(top_srcdir)/digikam/utilities/imageeditor/editor \
+	   -I$(top_srcdir)/digikam/utilities/imageeditor/tools \
 	   -I$(top_srcdir)/digikam/utilities/splashscreen \
 	   $(LIBKEXIF_CFLAGS) $(all_includes)
 
--- trunk/extragear/graphics/digikam/showfoto/showfoto.cpp #501937:501938
@@ -93,6 +93,7 @@
 #include "setupeditor.h"
 #include "setupimgplugins.h"
 #include "slideshow.h"
+#include "iofileprogressbar.h"
 #include "iccsettingscontainer.h"
 #include "iofilesettingscontainer.h"
 #include "savingcontextcontainer.h"
@@ -166,7 +167,8 @@
 
     m_splitter->setOpaqueResize(false);
     setCentralWidget(widget);        
-    m_nameLabel = new QLabel(statusBar());
+
+    m_nameLabel = new Digikam::IOFileProgressBar(statusBar());
     m_nameLabel->setAlignment(Qt::AlignCenter);
     statusBar()->addWidget(m_nameLabel,1);
     m_zoomLabel = new QLabel(statusBar());
@@ -265,8 +267,8 @@
     connect(m_canvas, SIGNAL(signalSavingFinished(const QString &, bool)),
             this, SLOT(slotSavingFinished(const QString &, bool)));
 
-    connect(m_canvas, SIGNAL(signalSavingProgress(const QString& filePath, float progress)),
-            this, SLOT(slotSavingProgress(const QString& filePath, float progress)));
+    connect(m_canvas, SIGNAL(signalSavingProgress(const QString&, float)),
+            this, SLOT(slotSavingProgress(const QString&, float)));
 
     connect(m_slideShow, SIGNAL(finished()),
             m_slideShowAction, SLOT(activate()) );
@@ -1053,12 +1055,16 @@
 
 void ShowFoto::slotLoadingStarted(const QString &filename)
 {
-    //TODO
+    //TODO: Disable actions as appropriate
+
+    m_nameLabel->progressBarVisible(true);
+    QApplication::setOverrideCursor(Qt::WaitCursor);
 }
 
 void ShowFoto::slotLoadingFinished(const QString &filename, bool success, bool isReadOnly)
 {
     //TODO: handle success == false
+    m_nameLabel->progressBarVisible(false);
     m_isReadOnly = isReadOnly;
     slotUpdateItemInfo();
     QApplication::restoreOverrideCursor();
@@ -1066,7 +1072,7 @@
 
 void ShowFoto::slotLoadingProgress(const QString& filePath, float progress)
 {
-    //TODO
+    m_nameLabel->setProgressValue((int)(progress*100.0));
 }
 
 void ShowFoto::toggleNavigation(int index)
--- trunk/extragear/graphics/digikam/showfoto/showfoto.h #501937:501938
@@ -58,6 +58,7 @@
 class SavingContextContainer;
 class SplashScreen;
 class SlideShow;
+class IOFileProgressBar;
 }
 
 namespace ShowFoto
@@ -89,7 +90,6 @@
 
     int                              m_itemsNb;
 
-    QLabel                          *m_nameLabel;
     QLabel                          *m_zoomLabel;
     QLabel                          *m_resLabel;
         
@@ -142,6 +142,7 @@
         
     KSelectAction                   *m_viewHistogramAction;
 
+    Digikam::IOFileProgressBar       *m_nameLabel;
     Digikam::ImagePluginLoader       *m_imagePluginLoader;
     Digikam::ThumbBarView            *m_bar;
     Digikam::ThumbBarItem            *m_currentItem;
--- trunk/extragear/graphics/digikam/utilities/imageeditor/Makefile.am #501937:501938
@@ -1 +1 @@
-SUBDIRS = icons canvas editor 
+SUBDIRS = icons canvas tools editor 
--- trunk/extragear/graphics/digikam/utilities/imageeditor/editor/Makefile.am #501937:501938
@@ -3,16 +3,19 @@
 noinst_LTLIBRARIES = libdimgeditor.la libshowfoto.la 
 
 libdimgeditor_la_SOURCES = editorwindow.cpp imageiface.cpp imagewidget.cpp \
-	 		               imagewindow.cpp imageresizedlg.cpp imageprint.cpp 
+	 		   imagewindow.cpp iofileprogressbar.cpp  
 
 libdimgeditor_la_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_KDEPRINT) \
 	 	           $(LIBKEXIF_LIBS)
 
-libshowfoto_la_SOURCES = editorwindow.cpp imageiface.cpp imagewidget.cpp \
-	                     imageresizedlg.cpp slideshow.cpp imageprint.cpp 
+libdimgeditor_la_LIBADD = $(top_srcdir)/digikam/utilities/imageeditor/tools/libdimgeditortools.la 
 
+libshowfoto_la_SOURCES = editorwindow.cpp imageiface.cpp imagewidget.cpp iofileprogressbar.cpp 
+
 libshowfoto_la_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_KDEPRINT) 
 
+libshowfoto_la_LIBADD = $(top_srcdir)/digikam/utilities/imageeditor/tools/libdimgeditortools.la 
+
 INCLUDES= -I$(top_srcdir)/digikam/digikam \
 	  -I$(top_srcdir)/digikam/libs/widgets \
 	  -I$(top_srcdir)/digikam/libs/dimg \
@@ -21,6 +24,7 @@
 	  -I$(top_srcdir)/digikam/libs/threadimageio \
 	  -I$(top_srcdir)/digikam/utilities/splashscreen \
 	  -I$(top_srcdir)/digikam/utilities/imageeditor/canvas \
+	  -I$(top_srcdir)/digikam/utilities/imageeditor/tools \
 	  $(LIBKEXIF_CFLAGS) $(all_includes) 
 
 digikaminclude_HEADERS = imageiface.h imagewidget.h 
--- trunk/extragear/graphics/digikam/utilities/imageeditor/editor/imagewindow.cpp #501937:501938
@@ -81,6 +81,7 @@
 #include "imageinfo.h"
 #include "imagepropertiessidebardb.h"
 #include "tagspopupmenu.h"
+#include "iofileprogressbar.h"
 #include "iccsettingscontainer.h"
 #include "iofilesettingscontainer.h"
 #include "savingcontextcontainer.h"
@@ -135,7 +136,7 @@
     m_splitter->setOpaqueResize(false);
     setCentralWidget(widget);
     
-    m_nameLabel = new QLabel(statusBar());
+    m_nameLabel = new IOFileProgressBar(statusBar());
     m_nameLabel->setAlignment(Qt::AlignCenter);
     statusBar()->addWidget(m_nameLabel,1);
     m_zoomLabel = new QLabel(statusBar());
@@ -644,6 +645,8 @@
 void ImageWindow::slotLoadingStarted(const QString &filename)
 {
     //TODO: Disable actions as appropriate
+
+    m_nameLabel->progressBarVisible(true);
     QApplication::setOverrideCursor(Qt::WaitCursor);
 }
 
@@ -652,6 +655,7 @@
     //TODO: enable actions as appropriate
     //TODO: handle success == false
 
+    m_nameLabel->progressBarVisible(false);
     QApplication::restoreOverrideCursor();
     m_isReadOnly = isReadOnly;
 
@@ -711,7 +715,7 @@
 
 void ImageWindow::slotLoadingProgress(const QString& filePath, float progress)
 {
-    //TODO: progress display in status bar
+    m_nameLabel->setProgressValue((int)(progress*100.0));
 }
 
 void ImageWindow::slotLoadNext()
--- trunk/extragear/graphics/digikam/utilities/imageeditor/editor/imagewindow.h #501937:501938
@@ -55,6 +55,7 @@
 class ICCSettingsContainer;
 class IOFileSettingsContainer;
 class SavingContextContainer;
+class IOFileProgressBar;
 
 class ImageWindow : public EditorWindow
 {
@@ -99,7 +100,6 @@
 
     QSplitter              *m_splitter;
                               
-    QLabel*                 m_nameLabel;
     QLabel*                 m_zoomLabel;
     QLabel*                 m_resLabel;
     
@@ -156,6 +156,8 @@
     ImagePropertiesSideBarDB *m_rightSidebar;
 
     SavingContextContainer   *m_savingContext;
+
+    IOFileProgressBar        *m_nameLabel;
     
     static ImageWindow       *m_instance;
 
Comment 2 caulier.gilles 2006-02-15 21:44:13 UTC
Image editor and showFoto progress bar during loading/saving image file operations is fully implemented in digiKam 0.9.0 alpha from svn trunk. I can close this file

Gilles Caulier