Warning, file /office/calligra/qtquick/CQTextDocumentModel.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  * This file is part of the KDE project
0003  *
0004  * SPDX-FileCopyrightText: 2013 Shantanu Tushar <shantanu@kde.org>
0005  * SPDX-FileCopyrightText: 2013 Sujith Haridasan <sujith.h@gmail.com>
0006  *
0007  * SPDX-License-Identifier: LGPL-2.0-or-later
0008  *
0009  */
0010 
0011 #include "CQTextDocumentModel.h"
0012 
0013 #include "CQImageProvider.h"
0014 
0015 #include <KWPage.h>
0016 #include <KWDocument.h>
0017 
0018 CQTextDocumentModel::CQTextDocumentModel(QObject* parent, KWDocument* document, KoShapeManager *shapemanager)
0019     : QAbstractListModel(parent), kw_document(document), kw_shapemanager(shapemanager), m_thumbnailSize(QSize(512, 512))
0020 {
0021 }
0022 
0023 int CQTextDocumentModel::rowCount(const QModelIndex& parent) const
0024 {
0025     if(parent.isValid()) {
0026         return 0;
0027     }
0028     return kw_document->pageManager()->pageCount();
0029 }
0030 
0031 QVariant CQTextDocumentModel::data(const QModelIndex& index, int role) const
0032 {
0033 
0034     if (!kw_document || !index.isValid()) {
0035        return QVariant();
0036     }
0037 
0038     if (CQImageProvider::s_imageProvider) {
0039         if (role == Qt::DecorationRole) {
0040             const QString id = kw_document->caption() + "textData" + QString::number(index.row());
0041             if (!CQImageProvider::s_imageProvider->containsId(id)) {
0042                 KWPage pagePreview = kw_document->pageManager()->page(index.row()+1);
0043                 QImage image = pagePreview.thumbnail(m_thumbnailSize, kw_shapemanager);
0044                 if (image.isNull() == true) {
0045                     return QVariant();
0046                 }
0047                 CQImageProvider::s_imageProvider->addImage(id, image);
0048             }
0049             return QString("image://%1/%2").arg(CQImageProvider::identificationString).arg(id);
0050         }
0051     }
0052     return QVariant();
0053 }
0054 
0055 QSize CQTextDocumentModel::thumbnailSize() const
0056 {
0057     return m_thumbnailSize;
0058 }
0059 
0060 void CQTextDocumentModel::setThumbnailSize(const QSize& newSize)
0061 {
0062     m_thumbnailSize = newSize;
0063     if (newSize.height() == 0) {
0064         m_thumbnailSize = QSize(512, 512);
0065     }
0066     if (CQImageProvider::s_imageProvider) {
0067         CQImageProvider::s_imageProvider->clearCache();
0068         dataChanged(index(0), index(kw_document->pageCount() - 1));
0069     }
0070     emit thumbnailSizeChanged();
0071 }