cacheBuffer: view.width * 2
model: SparqlListModel {
- query: "SELECT nie:url(?urn) AS ?url tracker:id(?urn) AS ?trackerid nie:mimeType(?urn) AS mimeType WHERE { ?urn rdf:type nfo:Media . ?urn nfo:equipment \"urn:equipment:Nokia:N950:\" ; tracker:available \"true\"^^xsd:boolean } ORDER BY DESC (?created)"
+ query: "SELECT nie:url(?urn) AS ?url tracker:id(?urn) AS ?trackerid nie:mimeType(?urn) AS ?mime WHERE { ?urn rdf:type nfo:Media . ?urn nfo:equipment \"urn:equipment:Nokia:N950:\" ; tracker:available \"true\"^^xsd:boolean } ORDER BY DESC (?created)"
connection: SparqlConnection {
id: connection
}
}
- delegate: QuillItem {
- source: url
+ delegate: Item {
width: view.width
height: view.height
- // TODO: does not work because of preloading
-// onError: showError(qsTr("Failed to load image"));
+
+ QuillItem {
+ source: url
+ mimeType: mime
+ width: view.width - 10
+ height: view.height
+ anchors.centerIn: parent
+ // TODO: does not work because of preloading
+ // onError: showError(qsTr("Failed to load image"));
+ }
}
}
static bool init = false;
if (!init) {
Quill::setPreviewLevelCount(1);
- Quill::setPreviewSize(0, QSize(864, 480)); // TODO:
- Quill::setMinimumPreviewSize(0, QSize(864, 480)); // TODO:
+ Quill::setPreviewSize(0, QSize(854, 480)); // TODO:
+ Quill::setMinimumPreviewSize(0, QSize(854, 480)); // TODO:
Quill::setThumbnailExtension("jpeg"); // TODO:
Quill::setThumbnailFlavorName(0, "screen");
Quill::setBackgroundRenderingColor(Qt::black);
delete m_file; m_file = 0;
}
-QUrl QuillItem::source() const {
- if (m_file) {
- return QUrl::fromLocalFile(m_file->fileName());
- }
+void QuillItem::componentComplete() {
+ QDeclarativeItem::componentComplete();
- return QUrl();
+ recreate();
+}
+
+QUrl QuillItem::source() const {
+ return m_url;
}
void QuillItem::setSource(const QUrl& src) {
return;
}
+ m_url = src;
+
+ if (isComponentComplete()) {
+ recreate();
+ }
+
+ emit sourceChanged();
+}
+
+QString QuillItem::mimeType() const {
+ return m_type;
+}
+
+void QuillItem::setMimeType(const QString& mime) {
+ if (mimeType() == mime) {
+ return;
+ }
+
+ m_type = mime;
+
+ if (isComponentComplete()) {
+ recreate();
+ }
+
+ emit mimeTypeChanged();
+}
+
+void QuillItem::recreate() {
if (m_file) {
m_file->deleteLater();
}
- m_file = new QuillFile(src.toLocalFile());
+ m_file = new QuillFile(m_url.toLocalFile(), m_type);
QObject::connect(m_file, SIGNAL(error(QuillError)),
this, SLOT(fileError()), Qt::QueuedConnection);
if (fileError()) {
return;
}
-
- emit sourceChanged();
}
void QuillItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) {
}
QuillError err = m_file->error();
+
if (err.errorCode() != QuillError::NoError) {
- qWarning() << "Error loading file" << m_file->fileName() << err.errorData();
+ qWarning() << "Error loading file" << m_file->fileName() << err.errorCode();
QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
Q_ARG(QString, err.errorData()));
Q_OBJECT
Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged);
+ Q_PROPERTY(QString mimeType READ mimeType WRITE setMimeType NOTIFY mimeTypeChanged);
public:
QuillItem(QDeclarativeItem *parent = 0);
QUrl source() const;
void setSource(const QUrl& src);
+ QString mimeType() const;
+ void setMimeType(const QString& mime);
+
void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
+ virtual void componentComplete();
+
signals:
void sourceChanged();
void error(const QString& err);
+ void mimeTypeChanged();
private slots:
void fileLoaded();
bool fileError();
private:
+ void recreate();
+
QuillFile *m_file;
+ QUrl m_url;
+ QString m_type;
};
#endif /* QUILL_ITEM_H */