diff --git a/Paint.cpp b/Paint.cpp index fae82e8..f23e1a8 100644 --- a/Paint.cpp +++ b/Paint.cpp @@ -149,12 +149,20 @@ bool Media::hasVideoSupport() bool Media::setUri(const QString &uri) { + static QFileIconProvider provider; + + // Default (in case seeking and loading don't work). + icon = provider.icon(QFileInfo(uri)); + // Try to load movie. bool success = false; this->uri = uri; - success = this->impl_->loadMovie(uri); + success = impl_->loadMovie(uri); if (! success) + { qDebug() << "Cannot load movie " << uri << "." << endl; + return false; + } // Try to get thumbnail. const uint* bits = NULL; @@ -173,12 +181,14 @@ bool Media::setUri(const QString &uri) bits = (uint*)impl_->getBits(); // Copy bits into thumbnail QImage. - thumbnail = QImage(getWidth(), getHeight(), QImage::Format_ARGB32); + QImage thumbnail(getWidth(), getHeight(), QImage::Format_ARGB32); int i=0; for (int y=0; yresetMovie(); diff --git a/Paint.h b/Paint.h index ed7dedc..501277f 100644 --- a/Paint.h +++ b/Paint.h @@ -234,7 +234,7 @@ class Media : public Texture protected: QString uri; - QImage thumbnail; + QIcon icon; public: Q_INVOKABLE Media(int id=NULL_UID); @@ -289,7 +289,7 @@ public: */ static bool hasVideoSupport(); - virtual QIcon getIcon() const { return QIcon(QPixmap::fromImage(thumbnail)); } + virtual QIcon getIcon() const { return icon; } private: /**