Коммит 8b58bebf создал по автору OMP Education's avatar OMP Education Зафиксировано автором k.sagalakova
Просмотр файлов

[View] Rename the name of the document entity interface.



	When we run docviewer and call print, there is a problem with
the document preview (the document is converted to pdf format).
This happens because docviewer registers the interface name "BaseDocument",
and tiny-pdf-viewer does too.
 	The main reason for the renaming is that the interface type is
 registered globally. (without uri) qmlRegisterInterface<BaseDocument>("BaseDocument"))
 	And it is not enough to just change the register name, because
 PdfView has a property that uses a pointer of type BaseDocument, so we decide to rename it

Co-Authored-By: default avatarKira Sagalakova <k.sagalakova@omp.ru>
владелец 8a822f0a
......@@ -23,7 +23,7 @@ Module {
"Sailfish.Silica.private 1.0"
]
Component {
name: "BaseDocument"
name: "BasePdfDocument"
prototype: "QObject"
Enum {
name: "DocumentStatus"
......@@ -90,7 +90,7 @@ Module {
Property { name: "itemScale"; type: "float" }
Property { name: "annotationsPaint"; type: "bool" }
Property { name: "notesPaint"; type: "bool" }
Property { name: "documentProvider"; type: "BaseDocument"; isPointer: true }
Property { name: "documentProvider"; type: "BasePdfDocument"; isPointer: true }
Property { name: "pdfPath"; type: "string" }
Property { name: "pageRange"; type: "string" }
Property { name: "pageNumberComponent"; type: "QQmlComponent"; isPointer: true }
......@@ -105,7 +105,7 @@ Module {
Property { name: "fitToPage"; type: "bool" }
Property { name: "centering"; type: "bool" }
Property { name: "pageSpacing"; type: "float" }
Property { name: "status"; type: "BaseDocument::DocumentStatus"; isReadonly: true }
Property { name: "status"; type: "BasePdfDocument::DocumentStatus"; isReadonly: true }
Property { name: "contentTopMargin"; type: "float"; isReadonly: true }
Property { name: "bookmarksModel"; type: "BookmarksModel"; isReadonly: true; isPointer: true }
Property { name: "fileVersion"; type: "int"; isReadonly: true }
......@@ -180,7 +180,7 @@ Module {
}
Signal {
name: "documentProviderChanged"
Parameter { name: "documentProvider"; type: "BaseDocument"; isPointer: true }
Parameter { name: "documentProvider"; type: "BasePdfDocument"; isPointer: true }
}
Signal {
name: "pdfPathChanged"
......@@ -240,7 +240,7 @@ Module {
}
Signal {
name: "statusChanged"
Parameter { name: "status"; type: "BaseDocument::DocumentStatus" }
Parameter { name: "status"; type: "BasePdfDocument::DocumentStatus" }
}
Signal {
name: "contentTopMarginChanged"
......@@ -307,7 +307,7 @@ Module {
}
Method {
name: "setDocumentProvider"
Parameter { name: "documentProvider"; type: "BaseDocument"; isPointer: true }
Parameter { name: "documentProvider"; type: "BasePdfDocument"; isPointer: true }
}
Method {
name: "setPdfPath"
......@@ -372,7 +372,7 @@ Module {
}
Component {
name: "PdfDocumentItem"
prototype: "BaseDocument"
prototype: "BasePdfDocument"
exports: ["ru.omp.amberpdf/PdfDocument 1.0"]
exportMetaObjectRevisions: [0]
Method {
......
......@@ -145,7 +145,7 @@ void DocumentMapper::forceUpdate()
_mapPages();
}
void DocumentMapper::setDocumentProvider(BaseDocument *documentProvider)
void DocumentMapper::setDocumentProvider(BasePdfDocument *documentProvider)
{
if (documentProvider == nullptr)
return;
......@@ -174,6 +174,7 @@ void DocumentMapper::setDocumentProvider(BaseDocument *documentProvider)
auto pageHeight = !isNeedeRecalcWidth && !m_fitToPage ? pageSize.width()
: pageSize.height();
m_originalPagesMap.pages.append({originalPageStartX,
originalPageStartY,
originalPageStartX + pageWidth,
......
......@@ -15,7 +15,7 @@
#define SPACING_DEFAULT_VALUE 20
class BaseDocument;
class BasePdfDocument;
class DocumentMapper : public QQuickItem
{
Q_OBJECT
......@@ -47,7 +47,7 @@ public:
bool fitToPage() const;
public slots:
void setDocumentProvider(BaseDocument *documentProvider);
void setDocumentProvider(BasePdfDocument *documentProvider);
void setOrientation(Qt::Orientation orientation);
void setSpecialPageIndexes(const std::map<int,int> &specialRangeIndexes,
const std::set<int> &specialIndexes);
......@@ -68,7 +68,7 @@ private slots:
void _updateSize();
private:
BaseDocument *m_documentProvider;
BasePdfDocument *m_documentProvider;
PagesMap m_originalPagesMap;
QHash<int, PagePosition> m_actualPagesCoordinates;
Qt::Orientation m_orientation;
......
// SPDX-FileCopyrightText: 2022 Open Mobile Platform LLC <community@omp.ru>
// SPDX-FileCopyrightText: 2022-2024 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
#include <QMetaType>
#include "basedocument.h"
BaseDocument::BaseDocument(QObject *parent) : QObject(parent)
BasePdfDocument::BasePdfDocument(QObject *parent)
: QObject(parent)
{
qRegisterMetaType<PageLoadStatus>();
}
BaseDocument::~BaseDocument() = default;
BasePdfDocument::~BasePdfDocument() = default;
BaseDocument::DocumentStatus BaseDocument::status() const
BasePdfDocument::DocumentStatus BasePdfDocument::status() const
{
return m_status;
}
QString BaseDocument::path() const
QString BasePdfDocument::path() const
{
return m_path;
}
// SPDX-FileCopyrightText: 2022-2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-FileCopyrightText: 2022-2024 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef BASEDOCUMENT_H
......@@ -9,7 +9,7 @@
class BasePage;
class BaseBookmark;
class BaseDocument : public QObject
class BasePdfDocument : public QObject
{
Q_OBJECT
......@@ -33,8 +33,8 @@ public:
};
Q_ENUM(PageLoadStatus)
explicit BaseDocument(QObject *parent = nullptr);
virtual ~BaseDocument();
explicit BasePdfDocument(QObject *parent = nullptr);
virtual ~BasePdfDocument();
DocumentStatus status() const;
......
// SPDX-FileCopyrightText: 2022-2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-FileCopyrightText: 2022-2024 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
#include "interface/basedocument.h"
......@@ -57,13 +57,13 @@ QHash<int, QByteArray> PagesWithNotesModel::roleNames() const
};
}
void PagesWithNotesModel::setNewData(BaseDocument *provider)
void PagesWithNotesModel::setNewData(BasePdfDocument *provider)
{
if (provider == nullptr || provider == m_documentProvider)
return;
m_documentProvider = provider;
connect(m_documentProvider, &BaseDocument::pageLoaded, this, &PagesWithNotesModel::_addPage);
connect(m_documentProvider, &BasePdfDocument::pageLoaded, this, &PagesWithNotesModel::_addPage);
beginResetModel();
endResetModel();
}
......
// SPDX-FileCopyrightText: 2022-2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-FileCopyrightText: 2022-2024 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef PAGESWITHNOTESMODEL_H
......@@ -6,7 +6,7 @@
#include <QAbstractListModel>
class BaseDocument;
class BasePdfDocument;
class NotesModel;
class PagesWithNotesModel : public QAbstractListModel
{
......@@ -27,7 +27,7 @@ public:
QVariant data(const QModelIndex &index, int role) const override;
QHash<int, QByteArray> roleNames() const override;
void setNewData(BaseDocument *newData);
void setNewData(BasePdfDocument *newData);
public slots:
void preLoadAllNotes();
......@@ -36,7 +36,7 @@ private slots:
void _addPage(int pageIndex);
private:
BaseDocument *m_documentProvider = nullptr;
BasePdfDocument *m_documentProvider = nullptr;
QMap<int, NotesModel *> m_notesModels;
};
......
// SPDX-FileCopyrightText: 2022-2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-FileCopyrightText: 2022-2024 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
#include <QMutexLocker>
......@@ -21,7 +21,7 @@ PagePreloader::~PagePreloader() = default;
void PagePreloader::run()
{
if (!m_document || m_document->status() != PdfDocument::Success) {
emit done(m_pageIndex, BaseDocument::PageLoadStatus::Fail);
emit done(m_pageIndex, BasePdfDocument::PageLoadStatus::Fail);
return;
}
......@@ -34,9 +34,9 @@ void PagePreloader::run()
auto pageFuture = m_document->page(m_pageIndex + i);
pageFuture.waitForFinished();
if (pageFuture.isFinished() && !pageFuture.isCanceled())
emit done(m_pageIndex + i, BaseDocument::PageLoadStatus::Success);
emit done(m_pageIndex + i, BasePdfDocument::PageLoadStatus::Success);
else
emit done(m_pageIndex + i, BaseDocument::PageLoadStatus::Fail);
emit done(m_pageIndex + i, BasePdfDocument::PageLoadStatus::Fail);
}
}
......
// SPDX-FileCopyrightText: 2022-2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-FileCopyrightText: 2022-2024 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef PAGEPRELOADER_H
......@@ -24,7 +24,7 @@ public:
void cancel();
signals:
void done(int, BaseDocument::PageLoadStatus);
void done(int, BasePdfDocument::PageLoadStatus);
private:
QSharedPointer<PdfDocument> m_document;
......
// SPDX-FileCopyrightText: 2022-2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-FileCopyrightText: 2022-2024 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
#include <QFile>
......@@ -18,7 +18,8 @@
#include "pdfdocumentitem.h"
PdfDocumentItem::PdfDocumentItem(QObject *parent) : BaseDocument(parent)
PdfDocumentItem::PdfDocumentItem(QObject *parent)
: BasePdfDocument(parent)
{
qRegisterMetaType<QHash<int, QSizeF>>();
......
......@@ -17,7 +17,7 @@
class PdfPage;
class PdfDocument;
class PdfDocumentItem : public BaseDocument
class PdfDocumentItem : public BasePdfDocument
{
Q_OBJECT
......
......@@ -68,7 +68,7 @@ PdfView::PdfView(QQuickItem *parent)
m_timer = new QTimer(this);
m_timer->setSingleShot(true);
emit statusChanged(BaseDocument::DocumentStatus::Null);
emit statusChanged(BasePdfDocument::DocumentStatus::Null);
m_bookmarksModel = new BookmarksModel(this);
}
......@@ -211,7 +211,7 @@ bool PdfView::notesPaint() const
return m_notesPaint;
}
BaseDocument *PdfView::documentProvider() const
BasePdfDocument *PdfView::documentProvider() const
{
return m_documentProvider;
}
......@@ -389,9 +389,10 @@ qreal PdfView::pageAspectRatio() const
return m_pageAspectRatio;
}
BaseDocument::DocumentStatus PdfView::status() const
BasePdfDocument::DocumentStatus PdfView::status() const
{
return m_documentProvider == nullptr ? BaseDocument::DocumentStatus::Null : m_documentProvider->status();
return m_documentProvider == nullptr ? BasePdfDocument::DocumentStatus::Null
: m_documentProvider->status();
}
void PdfView::setContentY(qreal contentY)
......@@ -559,7 +560,7 @@ void PdfView::setNotesPaint(bool notesPaint)
emit notesPaintChanged(m_notesPaint);
}
void PdfView::setDocumentProvider(BaseDocument *documentProvider)
void PdfView::setDocumentProvider(BasePdfDocument *documentProvider)
{
if (m_documentProvider == documentProvider)
return;
......@@ -585,7 +586,7 @@ void PdfView::setDocumentProvider(BaseDocument *documentProvider)
m_contentHeight = -1;
emit contentHeightChanged(m_contentHeight);
emit statusChanged(BaseDocument::DocumentStatus::Null);
emit statusChanged(BasePdfDocument::DocumentStatus::Null);
if (m_pagesWithNotesModel != nullptr) {
m_pagesWithNotesModel->deleteLater();
......@@ -595,57 +596,63 @@ void PdfView::setDocumentProvider(BaseDocument *documentProvider)
m_pagesWithNotesModel = new PagesWithNotesModel(this);
emit pagesWithNotesModelChanged(m_pagesWithNotesModel);
connect(m_documentProvider, &BaseDocument::pageLoaded, this, [&](int pageIndex, BaseDocument::PageLoadStatus loadStatus) {
if (!m_pages.contains(pageIndex))
return;
connect(m_documentProvider,
&BasePdfDocument::pageLoaded,
this,
[&](int pageIndex, BasePdfDocument::PageLoadStatus loadStatus) {
if (!m_pages.contains(pageIndex))
return;
auto page = qobject_cast<PdfPageContainer *>(m_pages.value(pageIndex));
if (page == nullptr)
return;
auto page = qobject_cast<PdfPageContainer *>(m_pages.value(pageIndex));
if (page == nullptr)
return;
if (!page->source() || loadStatus != BaseDocument::PageLoadStatus::Success) {
auto baseDocument = qobject_cast<BaseDocument *>(m_documentProvider);
page->setPageSource(baseDocument->loadPage(pageIndex));
}
});
if (!page->source() || loadStatus != BasePdfDocument::PageLoadStatus::Success) {
auto baseDocument = qobject_cast<BasePdfDocument *>(m_documentProvider);
page->setPageSource(baseDocument->loadPage(pageIndex));
}
});
connect(m_documentProvider, &BaseDocument::bookmarksLoaded, this, [this]() {
connect(m_documentProvider, &BasePdfDocument::bookmarksLoaded, this, [this]() {
m_bookmarksModel->setNewData(m_documentProvider->bookmarks());
emit bookmarksModelChanged(m_bookmarksModel);
});
connect(m_documentProvider, &BaseDocument::statusChanged, this, [this](BaseDocument::DocumentStatus status) {
if (status == BaseDocument::DocumentStatus::Ready) {
m_mapper->setSpacing(m_pageSpacing);
m_mapper->setPageAspectRatio(m_pageAspectRatio);
m_mapper->setFitToPage(m_fitToPage);
m_mapper->setDocumentProvider(m_documentProvider);
m_count = m_documentProvider->count();
if (m_pageNumberComponent) {
std::set<int> pageIndexes;
std::map<int, int> indexIntervals;
if (m_count > 1)
indexIntervals = {std::pair(0, m_count - 1)};
else
pageIndexes = {m_count - 1};
if (m_pageRange.isEmpty())
m_mapper->setSpecialPageIndexes(indexIntervals, pageIndexes);
}
m_specialPagesCount = m_mapper->specialPagesCount();
m_documentProvider->startLoadBookmarks();
m_pagesWithNotesModel->setNewData(m_documentProvider);
emit countChanged(m_count);
emit specialPagesCountChanged(m_specialPagesCount);
emit maxPageIndexChanged(m_mapper->maxSpecialIndex());
emit minPageIndexChanged(m_mapper->minSpecialIndex());
}
connect(m_documentProvider,
&BasePdfDocument::statusChanged,
this,
[this](BasePdfDocument::DocumentStatus status) {
if (status == BasePdfDocument::DocumentStatus::Ready) {
m_mapper->setSpacing(m_pageSpacing);
m_mapper->setPageAspectRatio(m_pageAspectRatio);
m_mapper->setFitToPage(m_fitToPage);
m_mapper->setDocumentProvider(m_documentProvider);
m_count = m_documentProvider->count();
if (m_pageNumberComponent) {
std::set<int> pageIndexes;
std::map<int, int> indexIntervals;
if (m_count > 1)
indexIntervals = {std::pair(0, m_count - 1)};
else
pageIndexes = {m_count - 1};
if (m_pageRange.isEmpty())
m_mapper->setSpecialPageIndexes(indexIntervals, pageIndexes);
}
m_specialPagesCount = m_mapper->specialPagesCount();
m_documentProvider->startLoadBookmarks();
m_pagesWithNotesModel->setNewData(m_documentProvider);
emit countChanged(m_count);
emit specialPagesCountChanged(m_specialPagesCount);
emit maxPageIndexChanged(m_mapper->maxSpecialIndex());
emit minPageIndexChanged(m_mapper->minSpecialIndex());
}
_calculateVisible();
emit statusChanged(status);
});
_calculateVisible();
emit statusChanged(status);
});
connect(m_documentProvider, &BaseDocument::fileVersionChanged, this, [this](int fileVersion) {
connect(m_documentProvider, &BasePdfDocument::fileVersionChanged, this, [this](int fileVersion) {
if (fileVersion > 0)
emit fileVersionChanged(m_documentProvider->fileVersion());
});
......@@ -1165,7 +1172,7 @@ void PdfView::_loadDocument()
if (m_documentProvider == nullptr)
return;
emit statusChanged(BaseDocument::DocumentStatus::Loading);
emit statusChanged(BasePdfDocument::DocumentStatus::Loading);
m_documentProvider->setPath(m_pdfPath);
}
......@@ -1235,7 +1242,7 @@ void PdfView::_preparePages()
if (m_paintedPages.isEmpty())
return;
auto baseDocument = qobject_cast<BaseDocument *>(m_documentProvider);
auto baseDocument = qobject_cast<BasePdfDocument *>(m_documentProvider);
bool needPositioning = false;
for (const auto &pageIndex : m_paintedPages) {
......
......@@ -31,10 +31,11 @@ class PdfView : public QQuickItem
Q_PROPERTY(qreal itemScale READ itemScale WRITE setItemScale NOTIFY itemScaleChanged)
Q_PROPERTY(bool annotationsPaint READ annotationsPaint WRITE setAnnotationsPaint NOTIFY annotationsPaintChanged)
Q_PROPERTY(bool notesPaint READ notesPaint WRITE setNotesPaint NOTIFY notesPaintChanged)
Q_PROPERTY(BaseDocument* documentProvider READ documentProvider WRITE setDocumentProvider NOTIFY documentProviderChanged)
Q_PROPERTY(BasePdfDocument *documentProvider READ documentProvider WRITE setDocumentProvider
NOTIFY documentProviderChanged)
Q_PROPERTY(QString pdfPath READ pdfPath WRITE setPdfPath NOTIFY pdfPathChanged)
Q_PROPERTY(QString pageRange READ pageRange WRITE setPageRange NOTIFY pageRangeChanged)
Q_PROPERTY(BaseDocument::DocumentStatus status READ status NOTIFY statusChanged)
Q_PROPERTY(BasePdfDocument::DocumentStatus status READ status NOTIFY statusChanged)
Q_PROPERTY(qreal contentTopMargin READ contentTopMargin NOTIFY contentTopMarginChanged)
Q_PROPERTY(BookmarksModel* bookmarksModel READ bookmarksModel NOTIFY bookmarksModelChanged)
Q_PROPERTY(int fileVersion READ fileVersion NOTIFY fileVersionChanged)
......@@ -74,12 +75,12 @@ public:
qreal itemScale() const;
bool annotationsPaint() const;
bool notesPaint() const;
BaseDocument* documentProvider() const;
BasePdfDocument *documentProvider() const;
QString pdfPath() const;
QString pageRange() const;
bool grayScaleRendering() const;
qreal pageAspectRatio() const;
BaseDocument::DocumentStatus status() const;
BasePdfDocument::DocumentStatus status() const;
qreal contentTopMargin() const;
BookmarksModel *bookmarksModel() const;
int fileVersion() const;
......@@ -115,7 +116,7 @@ public slots:
void clicked(const QPointF &point);
void setAnnotationsPaint(bool annotationsPaint);
void setNotesPaint(bool notesPaint);
void setDocumentProvider(BaseDocument* documentProvider);
void setDocumentProvider(BasePdfDocument *documentProvider);
void setPdfPath(QString pdfPath);
void setPageRange(const QString &pageRange);
void setPageNumberComponent(QQmlComponent *pageNumberComponent);
......@@ -147,10 +148,10 @@ signals:
void clickedGoToPage(int pageNumber, QPointF coordinateOnPage) const;
void notesPaintChanged(bool notesPaint);
void noteActivated(QString noteText, QString author, int pageIndex);
void documentProviderChanged(BaseDocument* documentProvider);
void documentProviderChanged(BasePdfDocument *documentProvider);
void pdfPathChanged(QString pdfPath);
void pageRangeChanged(QString pageRange);
void statusChanged(BaseDocument::DocumentStatus status);
void statusChanged(BasePdfDocument::DocumentStatus status);
void contentTopMarginChanged(qreal contentTopMargin);
void bookmarksModelChanged(BookmarksModel *bookmarksModel);
void fileVersionChanged(int fileVersion);
......@@ -210,7 +211,7 @@ private:
qreal m_itemScale;
bool m_annotationsPaint;
bool m_notesPaint;
BaseDocument* m_documentProvider;
BasePdfDocument *m_documentProvider;
QString m_pdfPath;
QString m_pageRange;
qreal m_contentTopMargin;
......
// SPDX-FileCopyrightText: 2022 Open Mobile Platform LLC <community@omp.ru>
// SPDX-FileCopyrightText: 2022-2024 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
#include <QQmlExtensionPlugin>
......@@ -32,7 +32,7 @@ public:
qmlRegisterType<BookmarksModel>(uri, 1, 0, "BookmarksModel");
qmlRegisterType<PagesWithNotesModel>(uri, 1, 0, "PagesWithNotesModel");
qmlRegisterType<PageWithNotesSortModel>(uri, 1, 0, "PageWithNotesSortModel");
qmlRegisterInterface<BaseDocument>("BaseDocument");
qmlRegisterInterface<BasePdfDocument>("BasePdfDocument");
}
};
......
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать