24QQuickPdfSearchModel::QQuickPdfSearchModel(QObject *parent)
25 : QPdfSearchModel(parent)
27 connect(
this, &QPdfSearchModel::modelReset,
this, [
this]() {
29 if (m_currentResult != 0) {
31 emit currentResultChanged();
186QList<QPolygonF> QQuickPdfSearchModel::boundingPolygonsOnPage(
int page)
188 if (!document() || searchString().isEmpty() || page < 0 || page > document()->document()->pageCount())
193 QList<QPolygonF> ret;
194 const auto m = QPdfSearchModel::resultsOnPage(page);
195 for (
const auto &result : m) {
196 for (
const auto &rect : result.rectangles())
197 ret << QPolygonF(rect);
209void QQuickPdfSearchModel::setCurrentPage(
int currentPage)
211 if (m_currentPage == currentPage || !document())
214 const auto pageCount = document()->document()->pageCount();
216 currentPage = pageCount - 1;
217 else if (currentPage >= pageCount)
220 m_currentPage = currentPage;
221 if (!m_suspendSignals) {
222 emit currentPageChanged();
238void QQuickPdfSearchModel::setCurrentResult(
int currentResult)
240 if (m_currentResult == currentResult)
243 const int currentResultWas = m_currentResult;
244 const int currentPageWas = m_currentPage;
245 const int resultCount = rowCount({});
248 if (currentResult >= resultCount) {
250 }
else if (currentResult < 0) {
251 currentResult = resultCount - 1;
254 const QPdfLink link = resultAtIndex(currentResult);
255 if (link.isValid()) {
256 setCurrentPage(link.page());
257 m_currentResult = currentResult;
258 emit currentResultChanged();
259 emit currentResultLinkChanged();
260 emit currentResultBoundingPolygonsChanged();
261 emit currentResultBoundingRectChanged();
262 qCDebug(qLcSearch) <<
"currentResult was" << currentResultWas
263 <<
"requested" << currentResult <<
"on page" << currentPageWas
264 <<
"->" << m_currentResult <<
"on page" << m_currentPage;
266 qWarning() <<
"failed to find result" << currentResult <<
"in range 0 ->" << resultCount;