From 0741ef1838af91a1041cefab81e7a1d396e9563c Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Tue, 22 Mar 2022 00:59:42 +0100 Subject: [PATCH] Port away from more QLinkedLists QLinkedList is gone from Qt6 The almost 1:1 port is std::list but we don't need iterator stability on removal/insertion so just port to QList --- autotests/calculatetexttest.cpp | 2 +- autotests/editformstest.cpp | 6 ++---- autotests/formattest.cpp | 2 +- autotests/keystroketest.cpp | 2 +- autotests/kjsfunctionstest.cpp | 2 +- autotests/parttest.cpp | 8 ++++---- autotests/signatureformtest.cpp | 2 +- autotests/signunsignedfieldtest.cpp | 4 ++-- autotests/visibilitytest.cpp | 4 ++-- core/document.cpp | 6 +++--- core/page.cpp | 12 ++++-------- core/page.h | 6 +++--- core/page_p.h | 2 +- core/script/kjs_document.cpp | 15 +++++++-------- generators/dvi/generator_dvi.cpp | 2 +- generators/poppler/generator_pdf.cpp | 12 ++++++------ generators/poppler/generator_pdf.h | 2 +- gui/signatureguiutils.cpp | 4 ++-- gui/signaturemodel.cpp | 2 +- part/pageview.cpp | 2 +- 20 files changed, 45 insertions(+), 52 deletions(-) diff --git a/autotests/calculatetexttest.cpp b/autotests/calculatetexttest.cpp index 1b87df2af..106e4d2fb 100644 --- a/autotests/calculatetexttest.cpp +++ b/autotests/calculatetexttest.cpp @@ -61,7 +61,7 @@ void CalculateTextTest::testSimpleCalculate() // Field names in test document are: // field1, field2, field3, Sum, AVG, Prod, Min, Max - const QLinkedList pageFormFields = page->formFields(); + const QList pageFormFields = page->formFields(); for (Okular::FormField *ff : pageFormFields) { fields.insert(ff->name(), static_cast(ff)); } diff --git a/autotests/editformstest.cpp b/autotests/editformstest.cpp index 984325b36..0e3d4cee1 100644 --- a/autotests/editformstest.cpp +++ b/autotests/editformstest.cpp @@ -72,16 +72,14 @@ void EditFormsTest::init() QVERIFY(!m_document->canRedo()); const Okular::Page *page = m_document->page(0); - QLinkedList pageFields = page->formFields(); + const QList pageFields = page->formFields(); // Clear lists m_checkBoxForms.clear(); m_radioButtonForms.clear(); // Collect forms of the various types - QLinkedList::const_iterator ffIt = pageFields.constBegin(), ffEnd = pageFields.constEnd(); - for (; ffIt != ffEnd; ++ffIt) { - Okular::FormField *ff = *ffIt; + for (Okular::FormField *ff : pageFields) { ff->type(); switch (ff->type()) { diff --git a/autotests/formattest.cpp b/autotests/formattest.cpp index b1ab3f220..4ef2dc369 100644 --- a/autotests/formattest.cpp +++ b/autotests/formattest.cpp @@ -61,7 +61,7 @@ void FormatTest::initTestCase() }); const Okular::Page *page = m_document->page(0); - const QLinkedList pageFormFields = page->formFields(); + const QList pageFormFields = page->formFields(); for (Okular::FormField *ff : pageFormFields) { m_fields.insert(ff->name(), ff); } diff --git a/autotests/keystroketest.cpp b/autotests/keystroketest.cpp index 03de3df5e..7aabaddc9 100644 --- a/autotests/keystroketest.cpp +++ b/autotests/keystroketest.cpp @@ -49,7 +49,7 @@ void KeystrokeTest::initTestCase() QCOMPARE(m_document->openDocument(testFile, QUrl(), mime), Okular::Document::OpenSuccess); const Okular::Page *page = m_document->page(0); - const QLinkedList pageFormFields = page->formFields(); + const QList pageFormFields = page->formFields(); for (Okular::FormField *ff : pageFormFields) { m_fields.insert(ff->name(), ff); } diff --git a/autotests/kjsfunctionstest.cpp b/autotests/kjsfunctionstest.cpp index ee385ec26..742d444dd 100644 --- a/autotests/kjsfunctionstest.cpp +++ b/autotests/kjsfunctionstest.cpp @@ -108,7 +108,7 @@ void KJSFunctionsTest::initTestCase() QCOMPARE(m_document->openDocument(testFile, QUrl(), mime), Okular::Document::OpenSuccess); const Okular::Page *page = m_document->page(0); - const QLinkedList pageFormFields = page->formFields(); + const QList pageFormFields = page->formFields(); for (Okular::FormField *ff : pageFormFields) { m_fields.insert(ff->name(), ff); } diff --git a/autotests/parttest.cpp b/autotests/parttest.cpp index 2d8be8818..e0646a3b2 100644 --- a/autotests/parttest.cpp +++ b/autotests/parttest.cpp @@ -1317,7 +1317,7 @@ void PartTest::testSaveAsUndoStackForms() Okular::Part part(nullptr, nullptr, QVariantList()); part.openDocument(file); - const QLinkedList pageFormFields = part.m_document->page(0)->formFields(); + const QList pageFormFields = part.m_document->page(0)->formFields(); for (FormField *ff : pageFormFields) { if (ff->id() == 65537) { QCOMPARE(ff->type(), FormField::FormText); @@ -1474,7 +1474,7 @@ void PartTest::testCheckBoxReadOnly() // Field names in test document are: // CBMakeRW, CBMakeRO, TargetDefaultRO, TargetDefaultRW - const QLinkedList pageFormFields = page->formFields(); + const QList pageFormFields = page->formFields(); for (Okular::FormField *ff : pageFormFields) { fields.insert(ff->name(), static_cast(ff)); } @@ -1550,7 +1550,7 @@ void PartTest::testCheckBoxReadOnly() fields.clear(); { - const QLinkedList pageFormFields = page->formFields(); + const QList pageFormFields = page->formFields(); for (Okular::FormField *ff : pageFormFields) { fields.insert(ff->name(), static_cast(ff)); } @@ -1706,7 +1706,7 @@ void PartTest::testAdditionalActionTriggers() // For target fields: _focus_target, _cursor_target, // _mouse_target const Okular::Page *page = part.m_document->page(0); - const QLinkedList pageFormFields = page->formFields(); + const QList pageFormFields = page->formFields(); for (Okular::FormField *ff : pageFormFields) { fields.insert(ff->name(), static_cast(ff)); } diff --git a/autotests/signatureformtest.cpp b/autotests/signatureformtest.cpp index 5a40b2c47..9642fda21 100644 --- a/autotests/signatureformtest.cpp +++ b/autotests/signatureformtest.cpp @@ -46,7 +46,7 @@ void SignatureFormTest::testSignatureForm() QCOMPARE(m_document->openDocument(testFile, QUrl(), mime), Okular::Document::OpenSuccess); const Okular::Page *page = m_document->page(0); - QLinkedList pageFields = page->formFields(); + const QList pageFields = page->formFields(); QCOMPARE(pageFields.size(), 1); QCOMPARE(pageFields.first()->type(), Okular::FormField::FormSignature); diff --git a/autotests/signunsignedfieldtest.cpp b/autotests/signunsignedfieldtest.cpp index 3b84f5f48..0ff473a71 100644 --- a/autotests/signunsignedfieldtest.cpp +++ b/autotests/signunsignedfieldtest.cpp @@ -84,7 +84,7 @@ void SignUnsignedFieldTest::cleanup() void SignUnsignedFieldTest::testSignUnsignedField() { - const QLinkedList forms = m_document->page(0)->formFields(); + const QList forms = m_document->page(0)->formFields(); QCOMPARE(forms.count(), 1); Okular::FormFieldSignature *ffs = dynamic_cast(forms.first()); @@ -111,7 +111,7 @@ void SignUnsignedFieldTest::testSignUnsignedField() const QMimeType mime = db.mimeTypeForFile(f.fileName()); QCOMPARE(m_document->openDocument(f.fileName(), QUrl(), mime), Okular::Document::OpenSuccess); - const QLinkedList newForms = m_document->page(0)->formFields(); + const QList newForms = m_document->page(0)->formFields(); QCOMPARE(newForms.count(), 1); ffs = dynamic_cast(newForms.first()); QCOMPARE(ffs->signatureType(), Okular::FormFieldSignature::AdbePkcs7detached); diff --git a/autotests/visibilitytest.cpp b/autotests/visibilitytest.cpp index 6dc8c1d00..9a3d04fff 100644 --- a/autotests/visibilitytest.cpp +++ b/autotests/visibilitytest.cpp @@ -57,7 +57,7 @@ void VisibilityTest::initTestCase() // With two radio buttons named TargetRadio. const Okular::Page *page = m_document->page(0); - const QLinkedList pageFormFields = page->formFields(); + const QList pageFormFields = page->formFields(); for (Okular::FormField *ff : pageFormFields) { m_fields.insert(ff->name(), ff); } @@ -128,7 +128,7 @@ void VisibilityTest::testSaveLoad() const Okular::Page *page = newDoc->page(0); bool anyChecked = false; // Saveguard against accidental test passing here ;-) - const QLinkedList pageFormFields = page->formFields(); + const QList pageFormFields = page->formFields(); for (Okular::FormField *ff : pageFormFields) { if (ff->name().startsWith(QStringLiteral("Target"))) { QVERIFY(!ff->isVisible()); diff --git a/core/document.cpp b/core/document.cpp index 93e0a3b30..091474627 100644 --- a/core/document.cpp +++ b/core/document.cpp @@ -1176,7 +1176,7 @@ void DocumentPrivate::recalculateForms() const Page *p = m_parent->page(pageIdx); if (p) { bool pageNeedsRefresh = false; - const QLinkedList forms = p->formFields(); + const QList forms = p->formFields(); for (FormField *form : forms) { if (form->id() == formId) { Action *action = form->additionalAction(FormField::CalculateField); @@ -2145,7 +2145,7 @@ void DocumentPrivate::loadSyncFile(const QString &filePath) } } - QVector> refRects(m_pagesVector.size()); + QVector> refRects(m_pagesVector.size()); for (const pdfsyncpoint &pt : qAsConst(points)) { // drop pdfsync points not completely valid if (pt.page < 0 || pt.page >= m_pagesVector.size()) { @@ -2663,7 +2663,7 @@ void Document::closeDocument() } } - const QLinkedList forms = p->formFields(); + const QList forms = p->formFields(); for (const FormField *form : forms) { const QList additionalActions = form->additionalActions(); for (const Action *a : additionalActions) { diff --git a/core/page.cpp b/core/page.cpp index c82efe258..69b8a97f9 100644 --- a/core/page.cpp +++ b/core/page.cpp @@ -541,7 +541,7 @@ const Action *Page::pageAction(PageAction action) const return nullptr; } -QLinkedList Page::formFields() const +QList Page::formFields() const { return d->formfields; } @@ -641,7 +641,7 @@ void PagePrivate::setTextSelections(RegularAreaRect *r, const QColor &color) } } -void Page::setSourceReferences(const QLinkedList &refRects) +void Page::setSourceReferences(const QList &refRects) { deleteSourceReferences(); for (SourceRefObjectRect *rect : refRects) { @@ -746,7 +746,7 @@ void Page::setPageAction(PageAction action, Action *link) } } -void Page::setFormFields(const QLinkedList &fields) +void Page::setFormFields(const QList &fields) { qDeleteAll(d->formfields); d->formfields = fields; @@ -967,11 +967,7 @@ void PagePrivate::saveLocalContents(QDomNode &parentNode, QDomDocument &document QDomElement formListElement = document.createElement(QStringLiteral("forms")); // add every form data to the formList - QLinkedList::const_iterator fIt = formfields.constBegin(), fItEnd = formfields.constEnd(); - for (; fIt != fItEnd; ++fIt) { - // get the form field - const FormField *f = *fIt; - + for (const FormField *f : formfields) { QString newvalue = f->d_ptr->value(); if (f->d_ptr->m_default == newvalue) { continue; diff --git a/core/page.h b/core/page.h index 3a62cedcc..5e0d0704d 100644 --- a/core/page.h +++ b/core/page.h @@ -263,7 +263,7 @@ public: /** * Returns the list of FormField of the page. */ - QLinkedList formFields() const; + QList formFields() const; /** * Sets the region described by @p rect with @p pixmap for the @@ -293,7 +293,7 @@ public: /** * Sets the list of source reference objects @p rects. */ - void setSourceReferences(const QLinkedList &rects); + void setSourceReferences(const QList &rects); /** * Sets the duration of the page to @p seconds when displayed in presentation mode. @@ -353,7 +353,7 @@ public: /** * Sets @p fields as list of FormField of the page. */ - void setFormFields(const QLinkedList &fields); + void setFormFields(const QList &fields); /** * Deletes the pixmap for the given @p observer diff --git a/core/page_p.h b/core/page_p.h index 9201461e6..81ab5cf3a 100644 --- a/core/page_p.h +++ b/core/page_p.h @@ -158,7 +158,7 @@ public: TextPage *m_text; PageTransition *m_transition; HighlightAreaRect *m_textSelections; - QLinkedList formfields; + QList formfields; Action *m_openingAction; Action *m_closingAction; double m_duration; diff --git a/core/script/kjs_document.cpp b/core/script/kjs_document.cpp index cdd1ad9f2..0286ba57a 100644 --- a/core/script/kjs_document.cpp +++ b/core/script/kjs_document.cpp @@ -190,11 +190,10 @@ static KJSObject docGetField(KJSContext *context, void *object, const KJSArgumen QVector::const_iterator pIt = doc->m_pagesVector.constBegin(), pEnd = doc->m_pagesVector.constEnd(); for (; pIt != pEnd; ++pIt) { - const QLinkedList pageFields = (*pIt)->formFields(); - QLinkedList::const_iterator ffIt = pageFields.constBegin(), ffEnd = pageFields.constEnd(); - for (; ffIt != ffEnd; ++ffIt) { - if ((*ffIt)->fullyQualifiedName() == cName) { - return JSField::wrapField(context, *ffIt, *pIt); + const QList pageFields = (*pIt)->formFields(); + for (FormField *form : pageFields) { + if (form->fullyQualifiedName() == cName) { + return JSField::wrapField(context, form, *pIt); } } } @@ -250,12 +249,12 @@ static KJSObject docGetNthFieldName(KJSContext *ctx, void *object, const KJSArgu int numField = arguments.at(0).toInt32(ctx); for (const Page *pIt : qAsConst(doc->m_pagesVector)) { - const QLinkedList pageFields = pIt->formFields(); + const QList pageFields = pIt->formFields(); if (numField < pageFields.size()) { - const auto ffIt = pageFields.begin() + numField; + const Okular::FormField *form = pageFields[numField]; - return KJSString((*ffIt)->fullyQualifiedName()); + return KJSString(form->fullyQualifiedName()); } numField -= pageFields.size(); diff --git a/generators/dvi/generator_dvi.cpp b/generators/dvi/generator_dvi.cpp index 11e881805..1c2de5f11 100644 --- a/generators/dvi/generator_dvi.cpp +++ b/generators/dvi/generator_dvi.cpp @@ -453,7 +453,7 @@ void DviGenerator::loadPages(QVector &pagesVector) // filling the pages with the source references rects const QVector &sourceAnchors = m_dviRenderer->sourceAnchors(); - QVector> refRects(numofpages); + QVector> refRects(numofpages); for (const DVI_SourceFileAnchor &sfa : sourceAnchors) { if (sfa.page < 1 || (int)sfa.page > numofpages) { continue; diff --git a/generators/poppler/generator_pdf.cpp b/generators/poppler/generator_pdf.cpp index f2e22127c..14800baf2 100644 --- a/generators/poppler/generator_pdf.cpp +++ b/generators/poppler/generator_pdf.cpp @@ -825,7 +825,7 @@ void PDFGenerator::loadPages(QVector &pagesVector, int rotation, page->setDuration(p->duration()); page->setLabel(p->label()); - QLinkedList okularFormFields; + QList okularFormFields; #if POPPLER_VERSION_MACRO >= QT_VERSION_CHECK(0, 89, 0) if (i > 0) { // for page 0 we handle the form fields at the end okularFormFields = getFormFields(p); @@ -859,7 +859,7 @@ void PDFGenerator::loadPages(QVector &pagesVector, int rotation, #if POPPLER_VERSION_MACRO >= QT_VERSION_CHECK(0, 89, 0) const QVector allSignatures = pdfdoc->signatures(); std::unique_ptr page0(pdfdoc->page(0)); - QLinkedList page0FormFields = getFormFields(page0.get()); + QList page0FormFields = getFormFields(page0.get()); for (Poppler::FormFieldSignature *s : allSignatures) { bool createSignature = true; @@ -868,7 +868,7 @@ void PDFGenerator::loadPages(QVector &pagesVector, int rotation, // See if the signature is in one of the already loaded page (i.e. 1 to end) for (Okular::Page *p : qAsConst(pagesVector)) { - const QLinkedList pageFormFields = p->formFields(); + const QList pageFormFields = p->formFields(); if (std::find_if(pageFormFields.begin(), pageFormFields.end(), compareSignatureByFullyQualifiedName) != pageFormFields.end()) { delete s; createSignature = false; @@ -1296,7 +1296,7 @@ void PDFGenerator::resolveMediaLinkReferences(Okular::Page *page) } } - const QLinkedList fields = page->formFields(); + const QList fields = page->formFields(); for (Okular::FormField *field : fields) { resolveMediaLinkReference(field->activationAction()); } @@ -1913,14 +1913,14 @@ void PDFGenerator::addTransition(Poppler::Page *pdfPage, Okular::Page *page) page->setTransition(transition); } -QLinkedList PDFGenerator::getFormFields(Poppler::Page *popplerPage) +QList PDFGenerator::getFormFields(Poppler::Page *popplerPage) { if (!popplerPage) { return {}; } const QList popplerFormFields = popplerPage->formFields(); - QLinkedList okularFormFields; + QList okularFormFields; for (Poppler::FormField *f : popplerFormFields) { Okular::FormField *of = nullptr; switch (f->type()) { diff --git a/generators/poppler/generator_pdf.h b/generators/poppler/generator_pdf.h index d58b4a333..580fdd612 100644 --- a/generators/poppler/generator_pdf.h +++ b/generators/poppler/generator_pdf.h @@ -127,7 +127,7 @@ private: // fetch the transition information and add it to the page void addTransition(Poppler::Page *pdfPage, Okular::Page *page); // fetch the poppler page form fields - QLinkedList getFormFields(Poppler::Page *popplerPage); + QList getFormFields(Poppler::Page *popplerPage); Okular::TextPage *abstractTextPage(const QList &text, double height, double width, int rot); diff --git a/gui/signatureguiutils.cpp b/gui/signatureguiutils.cpp index eacd8bbb4..96300d93b 100644 --- a/gui/signatureguiutils.cpp +++ b/gui/signatureguiutils.cpp @@ -20,7 +20,7 @@ QVector getSignatureFormFields(const Okular: const uint endPage = doc->pages() - 1; QVector signatureFormFields; while (curPage <= endPage) { - const QLinkedList formFields = doc->page(curPage++)->formFields(); + const QList formFields = doc->page(curPage++)->formFields(); for (Okular::FormField *f : formFields) { if (f->type() == Okular::FormField::FormSignature) { signatureFormFields.append(static_cast(f)); @@ -178,7 +178,7 @@ std::pair documentSignatureMessageWidgetTe const uint numPages = doc->pages(); bool isDigitallySigned = false; for (uint i = 0; i < numPages; i++) { - const QLinkedList formFields = doc->page(i)->formFields(); + const QList formFields = doc->page(i)->formFields(); for (const Okular::FormField *f : formFields) { if (f->type() == Okular::FormField::FormSignature) { isDigitallySigned = true; diff --git a/gui/signaturemodel.cpp b/gui/signaturemodel.cpp index 05c775726..1f729256b 100644 --- a/gui/signaturemodel.cpp +++ b/gui/signaturemodel.cpp @@ -94,7 +94,7 @@ SignatureModelPrivate::~SignatureModelPrivate() static void updateFormFieldSignaturePointer(SignatureItem *item, const QVector &pages) { if (item->form) { - const QLinkedList formFields = pages[item->page]->formFields(); + const QList formFields = pages[item->page]->formFields(); for (Okular::FormField *f : formFields) { if (item->form->id() == f->id()) { item->form = static_cast(f); diff --git a/part/pageview.cpp b/part/pageview.cpp index 54009bba0..dd9f06f64 100644 --- a/part/pageview.cpp +++ b/part/pageview.cpp @@ -1262,7 +1262,7 @@ void PageView::notifySetup(const QVector &pageSet, int setupFlag #ifdef PAGEVIEW_DEBUG qCDebug(OkularUiDebug).nospace() << "cropped geom for " << d->items.last()->pageNumber() << " is " << d->items.last()->croppedGeometry(); #endif - const QLinkedList pageFields = page->formFields(); + const QList pageFields = page->formFields(); for (Okular::FormField *ff : pageFields) { FormWidgetIface *w = FormWidgetFactory::createWidget(ff, this); if (w) {