Added AppTableViewDelegate class for painting tableview (painting not yet done, just...
[meego-garage:garage-netbook-ui.git] / imagemanager.cpp
1 #include "imagemanager.h"
2 #include "image.h"
3
4 #include <QWidget>
5 #include <QPaintEngine>
6
7 namespace MeeGoGarage {
8
9 ImageManager::ImageManager(QObject *parent) :
10     QObject(parent)
11 {
12 }
13
14 QPixmap ImageManager::getPixmap(const Image * image, QWidget * widgetToUpdateWhenReady)
15 {
16     if (!image) {
17         return QPixmap();
18     }
19
20     if (image->isLocalImageReady()) {
21         return QPixmap(image->getImageLocalPath());
22     }
23
24     if (widgetToUpdateWhenReady) {
25         callUpdateWhenReady(image, widgetToUpdateWhenReady);
26     }
27
28     // return placeholder
29     return QPixmap(":/placeholder_100x100.png");
30 }
31
32 QPixmap ImageManager::getPixmap(const Image * image, QPaintDevice * paintDeviceToUpdateWhenReady)
33 {
34     QWidget * widgetToUpdateWhenReady = 0;
35
36     // Not sure if this is safe
37     if (paintDeviceToUpdateWhenReady && paintDeviceToUpdateWhenReady->paintEngine() != 0) {
38         QPaintEngine::Type type = paintDeviceToUpdateWhenReady->paintEngine()->type();
39         // painting on Windows system, paintDevice probably is a QWidget
40         if (type == QPaintEngine::X11) {
41             widgetToUpdateWhenReady = static_cast<QWidget *> (paintDeviceToUpdateWhenReady);
42             Q_ASSERT(widgetToUpdateWhenReady->isWidgetType());
43         }
44     }
45
46     return getPixmap(image, widgetToUpdateWhenReady);
47 }
48
49 void ImageManager::callUpdateWhenReady(const Image * image, QWidget * widget)
50 {
51     if (!image || !widget) {
52         return;
53     }
54
55     if (image->isLocalImageReady()) {
56         return;
57     }
58
59     connect(image, SIGNAL(localImageReady(Image*)), widget, SLOT(update()));
60 }
61
62
63 } // namespace MeeGoGarage