Коммит 7d351ab6 создал по автору 2eg01nd's avatar 2eg01nd
Просмотр файлов

[FIX] Fix the bug when the page wasn't reredered after updating the document path.

владелец d857a48a
......@@ -176,9 +176,6 @@ void DocumentMapper::setDocumentProvider(BasePdfDocument *documentProvider)
if (documentProvider == nullptr)
return;
if (m_documentProvider == documentProvider)
return;
m_documentProvider = documentProvider;
const auto pageCount = m_documentProvider->count();
......@@ -502,7 +499,7 @@ PagePosition DocumentMapper::actualPagePosition(int pageIndex) const
PageGeometry DocumentMapper::originalPageGeometry(int pageIndex) const
{
if (pageIndex < 0 || pageIndex > m_originalPagesMap.pages.size())
if (!(pageIndex >= 0 && pageIndex < m_originalPagesMap.pages.size()))
return { };
return m_originalPagesMap.pages.at(pageIndex);
......
......@@ -69,6 +69,13 @@ bool NotesModel::isLoading() const
return m_loading;
}
void NotesModel::clear()
{
beginResetModel();
m_notes.clear();
endResetModel();
}
void NotesModel::_collectNotes()
{
beginResetModel();
......@@ -81,9 +88,8 @@ void NotesModel::_collectNotes()
if (annotation->type == BaseAnnotation::AnnotationType::HighLight
|| annotation->type == BaseAnnotation::AnnotationType::Text) {
m_notes.append(annotation);
continue;
if (!annotation->isSearchResult)
m_notes.append(annotation);
}
}
......
......@@ -31,6 +31,7 @@ public:
void setPageSource(QSharedPointer<BasePage> pageSource);
bool isLoading() const;
void clear();
signals:
void loadingChanged(bool);
......
......@@ -57,6 +57,17 @@ QHash<int, QByteArray> PagesWithNotesModel::roleNames() const
};
}
void PagesWithNotesModel::clear() {
beginResetModel();
QMap<int, NotesModel*>::const_iterator i;
for (i = m_notesModels.constBegin(); i != m_notesModels.constEnd(); ++i) {
i.value()->clear();
i.value()->deleteLater();
}
m_notesModels.clear();
endResetModel();
}
void PagesWithNotesModel::setNewData(BasePdfDocument *provider)
{
if (provider == nullptr || provider == m_documentProvider)
......
......@@ -29,6 +29,7 @@ public:
void setNewData(BasePdfDocument *newData);
void clear();
public slots:
void preLoadAllNotes();
......
......@@ -253,6 +253,7 @@ void PdfDocumentItem::setPath(const QString &path)
m_loadedPages.clear();
m_pagesInProcess.clear();
m_baseBookmarks.clear();
m_foundPhrases.clear();
if (m_pdfiumDocument == nullptr) {
m_status = DocumentStatus::Error;
......
......@@ -685,8 +685,14 @@ void PdfView::setDocumentProvider(BasePdfDocument *documentProvider)
m_mapper->setSpecialPageIndexes(indexIntervals, pageIndexes);
}
m_specialPagesCount = m_mapper->specialPagesCount();
m_pages.clear();
m_paintedPages.clear();
m_pageCheckerItems.clear();
m_pageNumberItems.clear();
m_documentProvider->startLoadBookmarks();
m_pagesWithNotesModel->clear();
m_pagesWithNotesModel->setNewData(m_documentProvider);
m_searchPhraseModel->clear();
emit countChanged(m_count);
emit specialPagesCountChanged(m_specialPagesCount);
emit maxPageIndexChanged(m_mapper->maxSpecialIndex());
......
......@@ -44,11 +44,20 @@ QHash<int, QByteArray> PdfWordModel::roleNames() const
};
}
void PdfWordModel::setNewData(QString phrase, const QVector<BaseWord *> &newData)
void PdfWordModel::clear()
{
beginResetModel();
qDeleteAll(m_data);
m_data.clear();
m_phrase = "";
endResetModel();
}
void PdfWordModel::setNewData(QString phrase, const QVector<BaseWord *> &newData)
{
clear();
beginResetModel();
m_data = newData;
m_phrase = phrase;
endResetModel();
......
......@@ -30,6 +30,7 @@ public:
void setNewData(QString phrase, const QVector<BaseWord *> &newData);
Q_INVOKABLE QString getPhrase();
void clear();
private:
QVector<BaseWord *> m_data;
QString m_phrase;
......
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать