Stefano Verzegnassi has proposed merging lp:~verzegnassi-stefano/ubuntu-docviewer-app/lok-qml-async-imageprovider into lp:ubuntu-docviewer-app with lp:~ubuntu-docviewer-dev/ubuntu-docviewer-app/ubuntu-docviewer-app-re-fix as a prerequisite.
Commit message: Use QQuickAsyncImageProvider in LOPartsImageProvider class. This is backported on Ubuntu/Ubuntu Touch since Qt 5.4.1-1ubuntu7. On any other distro/OS it works only with Qt 5.6 (or later). Requested reviews: Jenkins Bot (ubuntu-core-apps-jenkins-bot): continuous-integration Roman Shchekin (mrqtros) Ubuntu Document Viewer Developers (ubuntu-docviewer-dev) For more details, see: https://code.launchpad.net/~verzegnassi-stefano/ubuntu-docviewer-app/lok-qml-async-imageprovider/+merge/282878 Use QQuickAsyncImageProvider in LOPartsImageProvider class. This is backported on Ubuntu/Ubuntu Touch since Qt 5.4.1-1ubuntu7. On any other distro/OS it works only with Qt 5.6 (or later). -- Your team Ubuntu Document Viewer Developers is requested to review the proposed merge of lp:~verzegnassi-stefano/ubuntu-docviewer-app/lok-qml-async-imageprovider into lp:ubuntu-docviewer-app.
=== modified file 'po/com.ubuntu.docviewer.pot' --- po/com.ubuntu.docviewer.pot 2016-01-16 12:31:49 +0000 +++ po/com.ubuntu.docviewer.pot 2016-01-17 21:17:43 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-16 13:11+0100\n" +"POT-Creation-Date: 2016-01-07 12:16+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <l...@li.org>\n" @@ -42,7 +42,7 @@ #: ../src/app/qml/common/DetailsPage.qml:26 #: ../src/app/qml/loView/LOViewDefaultHeader.qml:107 -#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:90 +#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:83 #: ../src/app/qml/textView/TextViewDefaultHeader.qml:69 msgid "Details" msgstr "" @@ -189,33 +189,33 @@ #. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings. #. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum -#: ../src/app/qml/documentPage/DocumentListDelegate.qml:103 +#: ../src/app/qml/documentPage/DocumentListDelegate.qml:100 #, qt-format msgid "Today, %1" msgstr "" #. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings. #. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum -#: ../src/app/qml/documentPage/DocumentListDelegate.qml:108 +#: ../src/app/qml/documentPage/DocumentListDelegate.qml:105 #, qt-format msgid "Yesterday, %1" msgstr "" #. TRANSLATORS: this is a datetime formatting string, #. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions. -#: ../src/app/qml/documentPage/DocumentListDelegate.qml:115 -#: ../src/app/qml/documentPage/DocumentListDelegate.qml:134 +#: ../src/app/qml/documentPage/DocumentListDelegate.qml:112 +#: ../src/app/qml/documentPage/DocumentListDelegate.qml:131 msgid "yyyy/MM/dd hh:mm" msgstr "" #. TRANSLATORS: this is a datetime formatting string, #. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions. -#: ../src/app/qml/documentPage/DocumentListDelegate.qml:128 +#: ../src/app/qml/documentPage/DocumentListDelegate.qml:125 msgid "dddd, hh:mm" msgstr "" #: ../src/app/qml/documentPage/DocumentPage.qml:23 -#: /tmp/lok-qml-currentpart-moved-build/po/com.ubuntu.docviewer.desktop.in.in.h:3 +#: /tmp/lok-qml-async-imageprovider-build/po/com.ubuntu.docviewer.desktop.in.in.h:3 msgid "Documents" msgstr "" @@ -342,13 +342,13 @@ msgstr "" #: ../src/app/qml/loView/LOViewDefaultHeader.qml:100 -#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:84 +#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:77 #: ../src/app/qml/textView/TextViewDefaultHeader.qml:63 msgid "Disable night mode" msgstr "" #: ../src/app/qml/loView/LOViewDefaultHeader.qml:100 -#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:84 +#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:77 #: ../src/app/qml/textView/TextViewDefaultHeader.qml:63 msgid "Enable night mode" msgstr "" @@ -403,7 +403,6 @@ #. TRANSLATORS: the first argument (%1) refers to the page currently shown on the screen, #. while the second one (%2) refers to the total pages count. -#: ../src/app/qml/pdfView/PdfPresentation.qml:51 #: ../src/app/qml/pdfView/PdfView.qml:35 #, qt-format msgid "Page %1 of %2" @@ -413,10 +412,6 @@ msgid "Go to page..." msgstr "" -#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:78 -msgid "Presentation" -msgstr "" - #: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:26 msgid "Go to page" msgstr "" @@ -444,10 +439,10 @@ msgid "copy %1" msgstr "" -#: /tmp/lok-qml-currentpart-moved-build/po/com.ubuntu.docviewer.desktop.in.in.h:1 +#: /tmp/lok-qml-async-imageprovider-build/po/com.ubuntu.docviewer.desktop.in.in.h:1 msgid "Document Viewer" msgstr "" -#: /tmp/lok-qml-currentpart-moved-build/po/com.ubuntu.docviewer.desktop.in.in.h:2 +#: /tmp/lok-qml-async-imageprovider-build/po/com.ubuntu.docviewer.desktop.in.in.h:2 msgid "documents;viewer;pdf;reader;" msgstr "" === modified file 'src/app/qml/loView/PartsView.qml' --- src/app/qml/loView/PartsView.qml 2016-01-08 16:26:46 +0000 +++ src/app/qml/loView/PartsView.qml 2016-01-17 21:17:43 +0000 @@ -85,13 +85,18 @@ /* UITK 1.3 specs: Slot B */ Image { + id: thumb SlotsLayout.position: SlotsLayout.Leading - height: parent.height; width: height + height: parent.height; width: units.gu(12) fillMode: Image.PreserveAspectFit // Do not store a cache of the thumbnail, so that we don't show // thumbnails of a previously loaded document. cache: true // TODO PLAY WITH IT - source: model.thumbnail + source: "image://lok/part/%1".arg(model.index) + sourceSize { + width: thumb.height + height: thumb.width + } } /* UITK 1.3 specs: Slot A */ @@ -141,12 +146,12 @@ Image { Layout.fillWidth: true - Layout.preferredHeight: width + Layout.fillHeight: true fillMode: Image.PreserveAspectFit // Do not store a cache of the thumbnail, so that we don't show // thumbnails of a previously loaded document. cache: true // TODO PLAY WITH IT - source: model.thumbnail + source: "image://lok/part/%1".arg(model.index) } Label { === modified file 'src/plugin/libreofficetoolkit-qml-plugin/CMakeLists.txt' --- src/plugin/libreofficetoolkit-qml-plugin/CMakeLists.txt 2015-12-12 10:06:55 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/CMakeLists.txt 2016-01-17 21:17:43 +0000 @@ -23,6 +23,7 @@ loview.cpp sgtileitem.cpp lopartsimageprovider.cpp + lopartsimageresponse.cpp lopartsmodel.cpp lorendertask.cpp ${QML_SRCS} === modified file 'src/plugin/libreofficetoolkit-qml-plugin/lodocument.cpp' --- src/plugin/libreofficetoolkit-qml-plugin/lodocument.cpp 2015-12-14 00:40:55 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/lodocument.cpp 2016-01-17 21:17:43 +0000 @@ -179,7 +179,7 @@ return result.rgbSwapped(); } -QImage LODocument::paintThumbnail(int part, qreal size) +QImage LODocument::paintPart(int part, const QSize &size) { if (!m_lokDocument) return QImage(); @@ -197,11 +197,11 @@ QSize resultSize; if (tWidth > tHeight) { - resultSize.setWidth(size); - resultSize.setHeight(size * tHeight / tWidth); + resultSize.setWidth(size.width()); + resultSize.setHeight(size.width() * tHeight / tWidth); } else { - resultSize.setHeight(size); - resultSize.setWidth(size * tWidth / tHeight); + resultSize.setHeight(size.height()); + resultSize.setWidth(size.height() * tWidth / tHeight); } QImage result = QImage(resultSize.width(), resultSize.height(), QImage::Format_RGB32); === modified file 'src/plugin/libreofficetoolkit-qml-plugin/lodocument.h' --- src/plugin/libreofficetoolkit-qml-plugin/lodocument.h 2015-12-14 00:40:55 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/lodocument.h 2016-01-17 21:17:43 +0000 @@ -63,7 +63,7 @@ QSize documentSize() const; QImage paintTile(int part, const QSize& canvasSize, const QRect& tileSize, const qreal& zoom = 1.0); - QImage paintThumbnail(int part, qreal size); + QImage paintPart(int part, const QSize &size); int partsCount(); QString getPartName(int index) const; === modified file 'src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.cpp' --- src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.cpp 2015-12-12 10:06:55 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.cpp 2016-01-17 21:17:43 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 Canonical, Ltd. + * Copyright (C) 2015 Stefano Verzegnassi * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published @@ -15,50 +15,20 @@ */ #include "lopartsimageprovider.h" +#include "lopartsimageresponse.h" #include "lodocument.h" -#include "../../app/renderengine.h" LOPartsImageProvider::LOPartsImageProvider(const QSharedPointer<LODocument>& d) - : QQuickImageProvider(QQuickImageProvider::Image), + : QQuickAsyncImageProvider(), m_document(d) { } -QImage LOPartsImageProvider::requestImage(const QString & id, QSize * size, const QSize & requestedSize) +QQuickImageResponse *LOPartsImageProvider::requestImageResponse(const QString & id, const QSize & requestedSize) { - Q_UNUSED(size) - QString type = id.section("/", 0, 0); - if (requestedSize.isNull() || type != "part" || - m_document->documentType() != LODocument::PresentationDocument) - return QImage(); - - // Get info from "id". - int partNumber = id.section("/", 1, 1).toInt(); - int itemId = id.section("/", 2, 2).toInt(); - - // Once rendered images can be found in hash. - if (m_images.contains(itemId)) - return m_images[itemId]; - - const int defaultSize = 256; - - RenderEngine::instance()->enqueueTask(createTask(partNumber, defaultSize, itemId)); - - // Return default image (empty). - static QImage defaultImage; - if (defaultImage.isNull()) - defaultImage = QImage(defaultSize, defaultSize, QImage::Format_ARGB32); - - return defaultImage; -} - -ThumbnailRenderTask *LOPartsImageProvider::createTask(int part, qreal size, int id) const -{ - ThumbnailRenderTask* task = new ThumbnailRenderTask(); - task->setId(id); - task->setPart(part); - task->setDocument(m_document); - task->setSize(size); - return task; + bool isValid = bool(!requestedSize.isNull() || type == "part" || + m_document.data()->documentType() == LODocument::PresentationDocument); + + return new LOPartsImageResponse(m_document, id, requestedSize, isValid); } === modified file 'src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.h' --- src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.h 2015-12-12 10:06:55 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.h 2016-01-17 21:17:43 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 Canonical, Ltd. + * Copyright (C) 2015 Stefano Verzegnassi * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published @@ -18,28 +18,20 @@ #ifndef LOPARTSIMAGEPROVIDER_H #define LOPARTSIMAGEPROVIDER_H -#include <QQuickImageProvider> +// For QQuickAsyncImageProvider +#include <qquickimageprovider.h> #include <QSharedPointer> -#include <QHash> -#include <QDebug> - -#include "lorendertask.h" class LODocument; -class LOPartsImageProvider : public QQuickImageProvider +class LOPartsImageProvider : public QQuickAsyncImageProvider { public: LOPartsImageProvider(const QSharedPointer<LODocument>& d); - QImage requestImage(const QString & id, QSize * size, const QSize & requestedSize); - - QHash<int, QImage> m_images; + QQuickImageResponse* requestImageResponse(const QString & id, const QSize & requestedSize); private: QSharedPointer<LODocument> m_document; - -private: - ThumbnailRenderTask* createTask(int part, qreal size, int id) const; }; #endif // LOPARTSIMAGEPROVIDER_H === added file 'src/plugin/libreofficetoolkit-qml-plugin/lopartsimageresponse.cpp' --- src/plugin/libreofficetoolkit-qml-plugin/lopartsimageresponse.cpp 1970-01-01 00:00:00 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/lopartsimageresponse.cpp 2016-01-17 21:17:43 +0000 @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2015 Roman Shchekin + * Copyright (C) 2015 Stefano Verzegnassi + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "lopartsimageresponse.h" +#include "lodocument.h" +#include "../../app/renderengine.h" +#include "lorendertask.h" + +LOPartsImageResponse::LOPartsImageResponse(const QSharedPointer<LODocument>& document, const QString & id, const QSize & requestedSize, bool requestIsValid) : + m_document(document) +{ + if (!requestIsValid) { + m_errorString = "Requested size or id are not valid."; + + // Emit 'finished' signal and return an empty image. + QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection); + return; + } + + m_task = new ThumbnailRenderTask(); + m_task->setIsOwnedByCaller(true); // Take the ownership of the task, for now. + m_task->setId(RenderEngine::getNextId()); + m_task->setPart(id.section("/", 1, 1).toInt()); + m_task->setDocument(m_document); + + if (!requestedSize.isEmpty()) { + m_task->setSize(requestedSize); + } else { + m_task->setSize(QSize(256, 256)); + } + + connect(RenderEngine::instance(), &RenderEngine::taskRenderFinished, + this, &LOPartsImageResponse::slotTaskRenderFinished); + + QMetaObject::invokeMethod(RenderEngine::instance(), "enqueueTask", + Qt::QueuedConnection, + Q_ARG(AbstractRenderTask*, m_task)); +} + +LOPartsImageResponse::~LOPartsImageResponse() +{ + this->cancel(); +} + +QString LOPartsImageResponse::errorString() const +{ + return m_errorString; +} + +QQuickTextureFactory * LOPartsImageResponse::textureFactory() const +{ + return QQuickTextureFactory::textureFactoryForImage(m_image); +} + +void LOPartsImageResponse::cancel() +{ + disconnect(RenderEngine::instance(), &RenderEngine::taskRenderFinished, + this, &LOPartsImageResponse::slotTaskRenderFinished); + + if (m_task) { + // Give to the RenderEngine the ownership of the task, so that it can + // be dequeued and deleted. + m_task->setIsOwnedByCaller(false); + + QMetaObject::invokeMethod(RenderEngine::instance(), "dequeueTask", + Qt::QueuedConnection, + Q_ARG(int, m_task->id())); + } +} + +void LOPartsImageResponse::slotTaskRenderFinished(AbstractRenderTask* task, QImage img) +{ + if (task->id() == m_task->id() && task->type() == RttImpressThumbnail) { + m_image = img; + Q_EMIT finished(); + } +} === added file 'src/plugin/libreofficetoolkit-qml-plugin/lopartsimageresponse.h' --- src/plugin/libreofficetoolkit-qml-plugin/lopartsimageresponse.h 1970-01-01 00:00:00 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/lopartsimageresponse.h 2016-01-17 21:17:43 +0000 @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2015 Stefano Verzegnassi + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#ifndef LOPARTSIMAGERESPONSE_H +#define LOPARTSIMAGEPROVIDER_H + +// For QQuickImageResponse +#include <qquickimageprovider.h> +#include <QSharedPointer> + +class LODocument; +class AbstractRenderTask; +class ThumbnailRenderTask; + +class LOPartsImageResponse : public QQuickImageResponse +{ +public: + LOPartsImageResponse(const QSharedPointer<LODocument>& document, const QString & id, const QSize & requestedSize, bool requestIsValid); + ~LOPartsImageResponse(); + + QString errorString() const override; + QQuickTextureFactory * textureFactory() const override; + void cancel() override; + +private Q_SLOTS: + void slotTaskRenderFinished(AbstractRenderTask* task, QImage img); + +private: + QSharedPointer<LODocument> m_document; + ThumbnailRenderTask* m_task; + + QString m_errorString; + QImage m_image; +}; + + +#endif // LOPARTSIMAGERESPONSE_H === modified file 'src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.cpp' --- src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.cpp 2015-10-11 11:31:22 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.cpp 2016-01-17 21:17:43 +0000 @@ -33,8 +33,6 @@ QHash<int, QByteArray> roles; roles[IndexRole] = "index"; roles[NameRole] = "name"; - roles[IdRole] = "id"; - roles[ThumbnailRole] = "thumbnail"; return roles; } @@ -57,10 +55,6 @@ return part.index; case NameRole: return part.name; - case IdRole: - return part.id; - case ThumbnailRole: - return part.thumbnail; default: return 0; @@ -79,22 +73,10 @@ QVariantMap map; map["name"] = part.name; map["index"] = part.index; - map["id"] = part.id; - map["thumbnail"] = part.thumbnail; return map; } -void LOPartsModel::notifyAboutChanges(int id) -{ - for (int i = 0; i < m_entries.size(); i++) - if (m_entries[i].id == id) { - m_entries[i].thumbnail += "/cached"; - Q_EMIT dataChanged(createIndex(i, 0), createIndex(i + 1, 0)); - break; - } -} - void LOPartsModel::fillModel() { if (!m_document) return; @@ -112,8 +94,6 @@ part.index = i; part.name = m_document->getPartName(i); - part.id = RenderEngine::getNextId(); - part.thumbnail = QString("image://lok/part/%1/%2").arg(QString::number(part.index)).arg(QString::number(part.id)); m_entries.append(part); } === modified file 'src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.h' --- src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.h 2015-12-12 10:06:55 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.h 2016-01-17 21:17:43 +0000 @@ -30,14 +30,11 @@ { public: LOPartEntry(): - id(0), index(0) { } - int id; int index; QString name; - QString thumbnail; }; class LOPartsModel : public QAbstractListModel @@ -50,8 +47,6 @@ enum Roles { NameRole = Qt::UserRole + 1, IndexRole, - IdRole, - ThumbnailRole }; explicit LOPartsModel(const QSharedPointer<LODocument>& document, QAbstractListModel *parent = 0); @@ -64,8 +59,6 @@ Q_INVOKABLE QVariantMap get(int index) const; - void notifyAboutChanges(int id); - Q_SIGNALS: void countChanged(); === modified file 'src/plugin/libreofficetoolkit-qml-plugin/lorendertask.cpp' --- src/plugin/libreofficetoolkit-qml-plugin/lorendertask.cpp 2016-01-07 11:23:50 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/lorendertask.cpp 2016-01-17 21:17:43 +0000 @@ -21,5 +21,5 @@ QImage ThumbnailRenderTask::doWork() { - return m_document->paintThumbnail(m_part, m_size); + return m_document->paintPart(m_part, m_size); } === modified file 'src/plugin/libreofficetoolkit-qml-plugin/lorendertask.h' --- src/plugin/libreofficetoolkit-qml-plugin/lorendertask.h 2016-01-07 11:23:50 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/lorendertask.h 2016-01-17 21:17:43 +0000 @@ -48,10 +48,10 @@ virtual RenderTaskType type() { return RttImpressThumbnail; } virtual QImage doWork(); - qreal size() { return m_size; } - void setSize(qreal s) { m_size = s; } + QSize size() const { return m_size; } + void setSize(const QSize & s) { m_size = s; } protected: - qreal m_size; + QSize m_size; }; #endif // LORENDERTASK_H === modified file 'src/plugin/libreofficetoolkit-qml-plugin/loview.cpp' --- src/plugin/libreofficetoolkit-qml-plugin/loview.cpp 2015-12-14 00:40:55 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/loview.cpp 2016-01-17 21:17:43 +0000 @@ -365,9 +365,15 @@ void LOView::slotTaskRenderFinished(AbstractRenderTask* task, QImage img) { if (task->type() == RttTile) { - updateTileData(task, img); - } else if (task->type() == RttImpressThumbnail) { - updateThumbnailModel(task, img); + int id = task->id(); + + for (auto i = m_tiles.begin(); i != m_tiles.end(); ++i) { + SGTileItem* sgtile = i.value(); + if (sgtile->id() == id) { + sgtile->setData(img); + break; + } + } } } @@ -424,25 +430,6 @@ return task; } -void LOView::updateTileData(AbstractRenderTask* task, QImage img) -{ - int id = task->id(); - for (auto i = m_tiles.begin(); i != m_tiles.end(); ++i) { - SGTileItem* sgtile = i.value(); - if (sgtile->id() == id) { - sgtile->setData(img); - break; - } - } -} - -void LOView::updateThumbnailModel(AbstractRenderTask* task, QImage img) -{ - int id = task->id(); - if (!m_imageProvider->m_images.contains(id)) - m_imageProvider->m_images.insert(id, img); - m_partsModel->notifyAboutChanges(id); -} void LOView::setError(const LibreOfficeError::Error &error) { === modified file 'src/plugin/libreofficetoolkit-qml-plugin/loview.h' --- src/plugin/libreofficetoolkit-qml-plugin/loview.h 2016-01-07 11:23:50 +0000 +++ src/plugin/libreofficetoolkit-qml-plugin/loview.h 2016-01-17 21:17:43 +0000 @@ -120,8 +120,6 @@ void setZoomMode(const ZoomMode zoomMode); void clearView(); TileRenderTask* createTask(const QRect& rect, int id) const; - void updateTileData(AbstractRenderTask* task, QImage img); - void updateThumbnailModel(AbstractRenderTask* task, QImage img); void setError(const LibreOfficeError::Error &error); };
-- Mailing list: https://launchpad.net/~ubuntu-touch-coreapps-reviewers Post to : ubuntu-touch-coreapps-reviewers@lists.launchpad.net Unsubscribe : https://launchpad.net/~ubuntu-touch-coreapps-reviewers More help : https://help.launchpad.net/ListHelp