Bug 91484 - Album view not updated after images are modified in the image viewer
Summary: Album view not updated after images are modified in the image viewer
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Albums-IconView (show other bugs)
Version: unspecified
Platform: Slackware Linux
: NOR normal
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-10-16 23:50 UTC by Michał Kosmulski
Modified: 2017-08-14 21:13 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michał Kosmulski 2004-10-16 23:50:58 UTC
Version:           0.7 beta 1 (using KDE KDE 3.3.0)
Installed from:    Slackware Packages
Compiler:          gcc 3.3.4 
OS:                Linux

After double-clicking an image in the album view, the image viewer window is opened. Now, images can be browsed, e.g. with PgDn and PgUp and modified. I applied lossless rotation to some images (by pressing "1","2" or "3" to rotate and then the "Save" icon) and after I closed the image viewer window, in the album view images still had the previous orientation. I had to click on another album and then back on the first one to refresh its view and see images rotated correctly (BTW: a "Refresh" option in the "View" menu could be useful even if the issue with album view not being refreshed is resolved).
Comment 1 Michał Kosmulski 2004-10-17 00:00:16 UTC
Additional note: this doesn't happen always - at this time I am unable to always reproduce it. Perhaps it was using some particular mix of keyboard shortcuts and choosing menu items with the mouse that triggered this behavior.
Comment 2 Joern Ahrens 2004-10-17 14:17:06 UTC
CVS commit by jahrens: 


When the image viewer saved the modified file just before it was
closed, the job result could never arrive the result function of
the viewer. So signalFileModified was never emitted, and digikam
not informed about the modification.

CCMAIL: 91484-done@bugs.kde.org 


  M +20 -1     digikam/syncjob.cpp   1.6
  M +4 -0      digikam/syncjob.h   1.5
  M +13 -20    utilities/imageeditor/imagewindow.cpp   1.43
  M +0 -1      utilities/imageeditor/imagewindow.h   1.21


--- kdeextragear-3/digikam/digikam/syncjob.cpp  #1.5:1.6
@@ -65,4 +65,10 @@ bool SyncJob::trash(const KURL::List& ur
 }
 
+bool SyncJob::copy(const KURL &src, const KURL &dest)
+{
+    SyncJob sj;
+    return sj.copyPriv(src, dest);
+}
+
 QPixmap SyncJob::getTagThumbnail(const QString &name, int size)
 {
@@ -107,4 +113,17 @@ bool SyncJob::trashPriv(const KURL::List
 }
 
+bool SyncJob::copyPriv(const KURL &src, const KURL &dest)
+{
+    success_ = true;
+
+    KIO::FileCopyJob* job = KIO::file_move(src, dest, -1,
+                                           true, false, false);
+    connect( job, SIGNAL(result( KIO::Job* )),
+             SLOT(slotResult( KIO::Job*)) );
+
+    enter_loop();
+    return success_;
+}
+
 void qt_enter_modal( QWidget *widget );
 void qt_leave_modal( QWidget *widget );
@@ -175,5 +194,5 @@ void SyncJob::slotLoadThumbnailFailed()
 }
 
-void SyncJob::slotGotThumbnailFromIcon(const KURL& url, const QPixmap& pix,
+void SyncJob::slotGotThumbnailFromIcon(const KURL&, const QPixmap& pix,
                                        const KFileMetaInfo*)
 {

--- kdeextragear-3/digikam/digikam/syncjob.h  #1.4:1.5
@@ -59,4 +59,6 @@ public:
     static bool trash(const KURL::List& urls);
 
+    static bool copy(const KURL &src, const KURL &dest);
+
     /* Load the image or icon for the tag thumbnail */    
     static QPixmap getTagThumbnail(const QString &name, int size);
@@ -73,4 +75,6 @@ private:
     bool trashPriv(const KURL::List& urls);
 
+    bool copyPriv(const KURL &src, const KURL &dest);
+    
     QPixmap getTagThumbnailPriv(const QString &name, int size);
 

--- kdeextragear-3/digikam/utilities/imageeditor/imagewindow.cpp  #1.42:1.43
@@ -716,22 +716,14 @@ void ImageWindow::slotSave()
        KExifUtils::writeOrientation(tmpFile, KExifData::NORMAL);
 
-    KIO::FileCopyJob* job = KIO::file_move(KURL(tmpFile), m_urlCurrent,
-                                           -1, true, false, false);
-
-    connect(job, SIGNAL(result(KIO::Job *) ),
-            this, SLOT(slotSaveResult(KIO::Job *)));
-}
-
-void ImageWindow::slotSaveResult(KIO::Job *job)
-{
-    if (job->error()) 
+    if(!SyncJob::copy(KURL(tmpFile), m_urlCurrent))
     {
-       job->showErrorDialog(this);
-       return;
+        QString errMsg(SyncJob::lastErrorMsg());
+        KMessageBox::error(this, errMsg, errMsg);
     }
-    
+    else
+    {
     emit signalFileModified(m_urlCurrent);
-
     QTimer::singleShot(0, this, SLOT(slotLoadCurrent()));                                   
+    }
 }
 
@@ -744,5 +736,6 @@ void ImageWindow::slotSaveAs()
     QStringList mimetypes;
     mimetypes << "image/jpeg" << "image/png" << "image/tiff" << "image/gif"  
-              << "image/x-tga" << "image/x-bmp" <<  "image/x-xpm" <<  "image/x-portable-anymap"; 
+              << "image/x-tga" << "image/x-bmp" <<  "image/x-xpm" 
+              << "image/x-portable-anymap"; 
     
     KFileDialog *imageFileSaveDialog = new KFileDialog(m_urlCurrent.directory(),

--- kdeextragear-3/digikam/utilities/imageeditor/imagewindow.h  #1.20:1.21
@@ -122,5 +122,4 @@ private slots:
     
     void slotSave();
-    void slotSaveResult(KIO::Job *job);
     void slotSaveAs();
     void slotSaveAsResult(KIO::Job *job);