[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdeplasma-addons/applets/frame
From:       Etienne Rebetez <etienne.rebetez () oberwallis ! ch>
Date:       2010-04-17 13:59:58
Message-ID: 20100417140241.B7922AC89B () svn ! kde ! org
[Download RAW message or body]

SVN commit 1115792 by erebetez:

BUG: 232361 
Picture class checks if the loaded image is not null before it emits pictureLoaded.

 M  +16 -10    picture.cpp  
 M  +1 -0      picture.h  


--- trunk/KDE/kdeplasma-addons/applets/frame/picture.cpp #1115791:1115792
@@ -45,7 +45,6 @@
     connect(m_fileWatch,SIGNAL(dirty(QString)),this,SLOT(reload()));
     connect(m_fileWatch,SIGNAL(created(QString)),this,SLOT(reload()));
     connect(m_fileWatch,SIGNAL(deleted(QString)),this,SLOT(reload()));
-
 }
 
 Picture::~Picture()
@@ -65,7 +64,6 @@
 QImage Picture::defaultPicture(const QString &message)
 {
     // Create a QImage with same axpect ratio of default svg and current pixelSize
-
     kDebug() << "Default Image:" << m_defaultImage;
     QImage image = QImage(m_defaultImage);
     m_message = message;
@@ -81,8 +79,7 @@
         kDebug() << "Not a local file, downloading" << currentUrl;
         m_job = KIO::storedGet( currentUrl, KIO::NoReload, KIO::DefaultFlags );
         connect(m_job, SIGNAL(finished(KJob*)), this, SLOT(slotFinished(KJob*)));
-        loader = new ImageLoader(m_defaultImage);
-        m_message = i18n("Loading image...");
+        emit pictureLoaded(defaultPicture(i18n("Loading image...")));
     } else {
         if (currentUrl.isEmpty()) {
             loader = new ImageLoader(m_defaultImage);
@@ -92,10 +89,10 @@
             loader = new ImageLoader(m_currentUrl.path());
             setPath(m_currentUrl.path());
             m_message.clear();
-        }
+        }   
+        connect(loader, SIGNAL(loaded(QImage)), this, SLOT(checkImageLoaded(QImage)));
+        QThreadPool::globalInstance()->start(loader);     
     }
-    connect(loader, SIGNAL(loaded(QImage)), this, SIGNAL(pictureLoaded(QImage)));
-    QThreadPool::globalInstance()->start(loader);
 }
 
 KUrl Picture::url()
@@ -118,8 +115,8 @@
 void Picture::reload()
 {
     kDebug() << "Picture reload";
-    ImageLoader *loader = new ImageLoader(m_defaultImage);
-    connect(loader, SIGNAL(loaded(QImage)), this, SIGNAL(pictureLoaded(QImage)));
+    ImageLoader *loader = new ImageLoader(m_path);
+    connect(loader, SIGNAL(loaded(QImage)), this, SLOT(checkImageLoaded(QImage)));
     QThreadPool::globalInstance()->start(loader);
 }
 
@@ -150,7 +147,16 @@
         kDebug() << "Saved to" << path;
         setPath(path);
     }
-    emit pictureLoaded(ImageLoader::correctRotation(image, path));
+    emit checkImageLoaded(ImageLoader::correctRotation(image, path));
 }
 
+void Picture::checkImageLoaded(QImage newImage)
+{
+  if ( newImage.isNull()) {
+    emit pictureLoaded(defaultPicture(i18n("Error loading image. Image was probably deleted.")));
+  } else {
+    emit pictureLoaded(newImage);
+  }
+}
+
 #include "picture.moc"
--- trunk/KDE/kdeplasma-addons/applets/frame/picture.h #1115791:1115792
@@ -61,6 +61,7 @@
 private Q_SLOTS:
     void slotFinished(KJob *job);
     void reload();
+    void checkImageLoaded(QImage newImage);
 
 private:
     void setPath(const QString &path);
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic