Added an ImageLoader Object to Support Multi Threading in Loading an Image
[photoenhancer] / src / core / baseui / workspace.cpp
index 673555e..b77feef 100644 (file)
@@ -1,14 +1,37 @@
 #include "workspace.h"
 #include <QPainter>
+ImageLoader::ImageLoader()
+{
+    url=QString();
+}
+void ImageLoader::fetchImage(QString path)
+{
+    url=path;
+    start();
+}
+void ImageLoader::run()
+{
+    QImage image(url);
+    emit ready(image);
+}
+
 Workspace::Workspace(QWidget *parent) :
     QWidget(parent)
 {
-    loadImage("/home/shakir/Desktop/Test/test1.jpg");
+    qRegisterMetaType<QImage>("QImage &" );
+    mImageLoader=new ImageLoader();
+    connect(mImageLoader,SIGNAL(ready(QImage&)),this,SLOT(onImageLoaded(QImage&)));
 }
 void  Workspace::loadImage(QString fileName)
 {
-    mImage=QImage(fileName);
+   mImageLoader->fetchImage(fileName);
 }
+void Workspace::onImageLoaded(QImage &image)
+{
+     mImage=image.copy();
+     update();
+}
+
 void  Workspace::zoomIn()
 {
     mImage=mImage.scaledToHeight(mImage.height()*1.5);