[poppler] qt5/demos qt5/src
qt5/demos/navigationtoolbar.cpp | 11 --- qt5/demos/viewer.cpp| 17 ++--- qt5/src/poppler-optcontent.cc | 15 --- 3 files changed, 14 insertions(+), 29 deletions(-) New commits: commit b2f14ccbf4e5aef7489d2da45c03cacf8db67953 Author: Albert Astals Cid Date: Tue Feb 1 15:35:47 2022 +0100 qt5: cleanup todos, we already require that qt version since a while diff --git a/qt5/demos/navigationtoolbar.cpp b/qt5/demos/navigationtoolbar.cpp index b1bf4576..74b32400 100644 --- a/qt5/demos/navigationtoolbar.cpp +++ b/qt5/demos/navigationtoolbar.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2008-2009, Pino Toscano * Copyright (C) 2013, Fabio D'Urso - * Copyright (C) 2019, Albert Astals Cid + * Copyright (C) 2019, 2022, Albert Astals Cid * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,8 +30,7 @@ NavigationToolBar::NavigationToolBar(QWidget *parent) : QToolBar(parent) m_firstAct = addAction(tr("First"), this, SLOT(slotGoFirst())); m_prevAct = addAction(tr("Previous"), this, SLOT(slotGoPrev())); m_pageCombo = new QComboBox(this); -// TODO replace with qOverload once we start requiring Qt 5.7 -connect(m_pageCombo, static_cast(::activated), this, ::slotComboActivated); +connect(m_pageCombo, qOverload(::activated), this, ::slotComboActivated); addWidget(m_pageCombo); m_nextAct = addAction(tr("Next"), this, SLOT(slotGoNext())); m_lastAct = addAction(tr("Last"), this, SLOT(slotGoLast())); @@ -53,8 +52,7 @@ NavigationToolBar::NavigationToolBar(QWidget *parent) : QToolBar(parent) m_zoomCombo->addItem(tr("300%")); m_zoomCombo->addItem(tr("400%")); m_zoomCombo->setCurrentIndex(6); // "100%" -// TODO replace with qOverload once we start requiring Qt 5.7 -connect(m_zoomCombo, static_cast(::currentIndexChanged), this, ::slotZoomComboChanged); +connect(m_zoomCombo, qOverload(::currentIndexChanged), this, ::slotZoomComboChanged); addWidget(m_zoomCombo); m_rotationCombo = new QComboBox(this); @@ -63,8 +61,7 @@ NavigationToolBar::NavigationToolBar(QWidget *parent) : QToolBar(parent) m_rotationCombo->addItem(tr("90\302\260")); m_rotationCombo->addItem(tr("180\302\260")); m_rotationCombo->addItem(tr("270\302\260")); -// TODO replace with qOverload once we start requiring Qt 5.7 -connect(m_rotationCombo, static_cast(::currentIndexChanged), this, ::slotRotationComboChanged); +connect(m_rotationCombo, qOverload(::currentIndexChanged), this, ::slotRotationComboChanged); addWidget(m_rotationCombo); documentClosed(); diff --git a/qt5/demos/viewer.cpp b/qt5/demos/viewer.cpp index fd41320e..eebd08d1 100644 --- a/qt5/demos/viewer.cpp +++ b/qt5/demos/viewer.cpp @@ -1,6 +1,6 @@ /* * Copyright (C) 2008-2009, Pino Toscano - * Copyright (C) 2008, 2019, Albert Astals Cid + * Copyright (C) 2008, 2019, 2022, Albert Astals Cid * Copyright (C) 2009, Shawn Rutledge * Copyright (C) 2013, Fabio D'Urso * Copyright (C) 2020, Oliver Sander @@ -53,17 +53,14 @@ PdfViewer::PdfViewer(QWidget *parent) : QMainWindow(parent), m_currentPage(0), m // setup the menus QMenu *fileMenu = menuBar()->addMenu(tr("")); -// TODO Use modern syntax when depending on Qt 5.6 -m_fileOpenAct = fileMenu->addAction(tr(""), this, SLOT(slotOpenFile())); // clazy:exclude=old-style-connect +m_fileOpenAct = fileMenu->addAction(tr(""), this, ::slotOpenFile); m_fileOpenAct->setShortcut(Qt::CTRL + Qt::Key_O); fileMenu->addSeparator(); -// TODO Use modern syntax when depending on Qt 5.6 -m_fileSaveCopyAct = fileMenu->addAction(tr(" a Copy..."), this, SLOT(slotSaveCopy())); // clazy:exclude=old-style-connect +m_fileSaveCopyAct = fileMenu->addAction(tr(" a Copy..."), this, ::slotSaveCopy); m_fileSaveCopyAct->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_S); m_fileSaveCopyAct->setEnabled(false); fileMenu->addSeparator(); -// TODO Use modern syntax when depending on Qt 5.6 -QAction *act = fileMenu->addAction(tr(""), qApp, SLOT(closeAllWindows())); // clazy:exclude=old-style-connect +QAction *act = fileMenu->addAction(tr(""), qApp, ::closeAllWindows); act->setShortcut(Qt::CTRL + Qt::Key_Q); QMenu *viewMenu = menuBar()->addMenu(tr("")); @@ -90,10 +87,8 @@ PdfViewer::PdfViewer(QWidget *parent) : QMainWindow(parent), m_currentPage(0), m connect(m_settingsRenderBackendGrp, ::triggered, this, ::slotRenderBackend); QMenu *helpMenu = menuBar()->addMenu(tr("")); -// TODO Use modern syntax when depending on Qt 5.6 -act = helpMenu->addAction(tr(""), this, SLOT(slotAbout())); // clazy:exclude=old-style-connect -// TODO Use modern syntax when depending on Qt 5.6 -act = helpMenu->addAction(tr("About "), this, SLOT(slotAboutQt())); // clazy:exclude=old-style-connect +act =
[poppler] qt5/demos qt5/src qt5/tests
qt5/demos/CMakeLists.txt | 13 + qt5/src/CMakeLists.txt |5 + qt5/tests/CMakeLists.txt | 16 +++- 3 files changed, 5 insertions(+), 29 deletions(-) New commits: commit 0f72f73357414ea79af774d4ce8f4fed80db3d98 Author: Albert Astals Cid Date: Wed Dec 2 18:29:45 2020 +0100 cmake: Use the new syntax to link in the Qt5 libs diff --git a/qt5/demos/CMakeLists.txt b/qt5/demos/CMakeLists.txt index 060ff167..fc5ae601 100644 --- a/qt5/demos/CMakeLists.txt +++ b/qt5/demos/CMakeLists.txt @@ -1,17 +1,7 @@ -add_definitions(${QT5_DEFINITIONS}) -add_definitions(${Qt5Core_DEFINITIONS}) -add_definitions(${Qt5Gui_DEFINITIONS}) -add_definitions(${Qt5Widgets_DEFINITIONS}) -add_definitions(${Qt5Xml_DEFINITIONS}) - include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../src ${CMAKE_CURRENT_BINARY_DIR} - ${Qt5Core_INCLUDE_DIRS} - ${Qt5Widgets_INCLUDE_DIRS} - ${Qt5Gui_INCLUDE_DIRS} - ${Qt5Xml_INCLUDE_DIRS} ) set(poppler_qt5viewer_SRCS @@ -31,6 +21,5 @@ set(poppler_qt5viewer_SRCS viewer.cpp ) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") poppler_add_test(poppler_qt5viewer BUILD_QT5_TESTS ${poppler_qt5viewer_SRCS}) -target_link_libraries(poppler_qt5viewer poppler-qt5 ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Xml_LIBRARIES}) +target_link_libraries(poppler_qt5viewer poppler-qt5 Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Xml) diff --git a/qt5/src/CMakeLists.txt b/qt5/src/CMakeLists.txt index 80f40fca..ae055a12 100644 --- a/qt5/src/CMakeLists.txt +++ b/qt5/src/CMakeLists.txt @@ -1,10 +1,7 @@ -add_definitions(${QT5_DEFINITIONS}) -add_definitions(${Qt5Core_DEFINITIONS}) add_definitions(-DQT_NO_SIGNALS_SLOTS_KEYWORDS) include_directories( ${CMAKE_CURRENT_SOURCE_DIR} - ${Qt5Core_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR} ) @@ -45,7 +42,7 @@ if(MINGW AND BUILD_SHARED_LIBS) get_target_property(POPPLER_QT5_SOVERSION poppler-qt5 SOVERSION) set_target_properties(poppler-qt5 PROPERTIES SUFFIX "-${POPPLER_QT5_SOVERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}") endif() -target_link_libraries(poppler-qt5 poppler ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Xml_LIBRARIES} ${FREETYPE_LIBRARIES}) +target_link_libraries(poppler-qt5 poppler Qt5::Core Qt5::Gui Qt5::Xml ${FREETYPE_LIBRARIES}) if(MSVC) target_link_libraries(poppler-qt5 poppler ${poppler_LIBS}) endif() diff --git a/qt5/tests/CMakeLists.txt b/qt5/tests/CMakeLists.txt index b8b5a399..82ef2139 100644 --- a/qt5/tests/CMakeLists.txt +++ b/qt5/tests/CMakeLists.txt @@ -1,28 +1,18 @@ -add_definitions(${Qt5Core_DEFINITIONS}) add_definitions(-DTESTDATADIR=\"${TESTDATADIR}\") include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../src ${CMAKE_CURRENT_BINARY_DIR} - ${Qt5Core_INCLUDE_DIRS} - ${Qt5Gui_INCLUDE_DIRS} - ${Qt5Xml_INCLUDE_DIRS} - ${Qt5Widgets_INCLUDE_DIRS} ) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Gui_EXECUTABLE_COMPILE_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Xml_EXECUTABLE_COMPILE_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") - macro(QT5_ADD_SIMPLETEST exe source) string(REPLACE "-" "" test_name ${exe}) set(${test_name}_SOURCES ${source} ) poppler_add_test(${exe} BUILD_QT5_TESTS ${${test_name}_SOURCES}) - target_link_libraries(${exe} poppler-qt5 ${Qt5Widgets_LIBRARIES}) + target_link_libraries(${exe} poppler-qt5 Qt5::Widgets) if(MSVC) target_link_libraries(${exe} poppler ${poppler_LIBS}) endif() @@ -36,7 +26,7 @@ macro(QT5_ADD_QTEST exe source) ) poppler_add_test(${exe} BUILD_QT5_TESTS ${${test_name}_SOURCES}) add_test(${exe} ${EXECUTABLE_OUTPUT_PATH}/${exe}) -target_link_libraries(${exe} poppler-qt5 ${Qt5Widgets_LIBRARIES} ${Qt5Test_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES}) +target_link_libraries(${exe} poppler-qt5 Qt5::Widgets Qt5::Test Qt5::Core Qt5::Gui) if(MSVC) target_link_libraries(${exe} poppler ${poppler_LIBS}) endif() @@ -49,7 +39,7 @@ macro(QT_ADD_FUZZER exe) ${ARGN} ) poppler_add_test(${exe} BUILD_QT5_TESTS ${${test_name}_SOURCES}) - target_link_libraries(${exe} poppler-qt5 ${Qt5Widgets_LIBRARIES} ${Qt5Test_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES}) + target_link_libraries(${exe} poppler-qt5 Qt5::Widgets Qt5::Test Qt5::Core Qt5::Gui) endmacro(QT_ADD_FUZZER) qt5_add_simpletest(test-poppler-qt5 test-poppler-qt5.cpp) ___ poppler mailing list poppler@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] qt5/demos qt6/demos qt6/src
qt5/demos/viewer.cpp|1 + qt6/demos/viewer.cpp|1 + qt6/src/poppler-document.cc |2 +- 3 files changed, 3 insertions(+), 1 deletion(-) New commits: commit 3e761a5035d5cdbcb861b3ad126942099d075d0e Author: Albert Astals Cid Date: Wed Oct 21 00:48:26 2020 +0200 Update (C) diff --git a/qt5/demos/viewer.cpp b/qt5/demos/viewer.cpp index be7dad7a..0b1a8f0e 100644 --- a/qt5/demos/viewer.cpp +++ b/qt5/demos/viewer.cpp @@ -3,6 +3,7 @@ * Copyright (C) 2008, 2019, Albert Astals Cid * Copyright (C) 2009, Shawn Rutledge * Copyright (C) 2013, Fabio D'Urso + * Copyright (C) 2020, Oliver Sander * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/qt6/demos/viewer.cpp b/qt6/demos/viewer.cpp index 6bba6e04..f1cfc852 100644 --- a/qt6/demos/viewer.cpp +++ b/qt6/demos/viewer.cpp @@ -3,6 +3,7 @@ * Copyright (C) 2008, 2019, 2020, Albert Astals Cid * Copyright (C) 2009, Shawn Rutledge * Copyright (C) 2013, Fabio D'Urso + * Copyright (C) 2020, Oliver Sander * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/qt6/src/poppler-document.cc b/qt6/src/poppler-document.cc index d014e253..4af90f07 100644 --- a/qt6/src/poppler-document.cc +++ b/qt6/src/poppler-document.cc @@ -13,7 +13,7 @@ * Copyright (C) 2017 Adrian Johnson * Copyright (C) 2017 Suzuki Toshiya * Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, . Work sponsored by the LiMux project of the city of Munich - * Copyright (C) 2019 Oliver Sander + * Copyright (C) 2019, 2020 Oliver Sander * Copyright (C) 2019 Alexander Volkov * Copyright (C) 2020 Philipp Knechtges * ___ poppler mailing list poppler@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] qt5/demos qt5/src qt5/tests qt6/demos qt6/src qt6/tests
qt5/demos/viewer.cpp |2 qt5/src/CMakeLists.txt |2 qt5/src/QPainterOutputDev.cc | 102 ++--- qt5/src/QPainterOutputDev.h| 26 - qt5/src/poppler-document.cc|7 +- qt5/src/poppler-page.cc| 34 ++-- qt5/src/poppler-qt5.h |7 +- qt5/tests/check_stroke_opacity.cpp |2 qt5/tests/test-poppler-qt5.cpp | 20 +++ qt5/tests/test-render-to-file.cpp | 10 +-- qt6/demos/viewer.cpp |2 qt6/src/CMakeLists.txt |2 qt6/src/QPainterOutputDev.cc | 102 ++--- qt6/src/QPainterOutputDev.h| 26 - qt6/src/poppler-document.cc|4 - qt6/src/poppler-page.cc| 34 ++-- qt6/src/poppler-qt6.h |6 +- qt6/tests/check_stroke_opacity.cpp |2 qt6/tests/test-poppler-qt6.cpp | 20 +++ qt6/tests/test-render-to-file.cpp | 10 +-- 20 files changed, 211 insertions(+), 209 deletions(-) New commits: commit 99346560791c935f74d77405dd35bef0f5823d1b Author: Oliver Sander Date: Fri Oct 16 23:01:42 2020 +0200 Rename ArthurOutputDev to QPainterOutputDev The Qt rendering system hasn't been called 'Arthur' for a long time, let's adapt the code to that. For backward compatibility, the ArthurBackend enum value remains in the files poppler-qt5.h and poppler-qt6.h. These shouldn't be used anymore. diff --git a/qt5/demos/viewer.cpp b/qt5/demos/viewer.cpp index a7c18079..be7dad7a 100644 --- a/qt5/demos/viewer.cpp +++ b/qt5/demos/viewer.cpp @@ -79,7 +79,7 @@ PdfViewer::PdfViewer(QWidget *parent) : QMainWindow(parent), m_currentPage(0), m act->setChecked(true); act->setData(QVariant::fromValue(0)); m_settingsRenderBackendGrp->addAction(act); -act = settingsRenderMenu->addAction(tr("Arthur")); +act = settingsRenderMenu->addAction(tr("QPainter")); act->setCheckable(true); act->setData(QVariant::fromValue(1)); m_settingsRenderBackendGrp->addAction(act); diff --git a/qt5/src/CMakeLists.txt b/qt5/src/CMakeLists.txt index 0247fa3f..403458e5 100644 --- a/qt5/src/CMakeLists.txt +++ b/qt5/src/CMakeLists.txt @@ -36,7 +36,7 @@ set(poppler_qt5_SRCS poppler-page-transition.cc poppler-media.cc poppler-outline.cc - ArthurOutputDev.cc + QPainterOutputDev.cc poppler-version.cpp ) add_library(poppler-qt5 ${poppler_qt5_SRCS}) diff --git a/qt5/src/ArthurOutputDev.cc b/qt5/src/QPainterOutputDev.cc similarity index 90% rename from qt5/src/ArthurOutputDev.cc rename to qt5/src/QPainterOutputDev.cc index a5a856b5..645b3cad 100644 --- a/qt5/src/ArthurOutputDev.cc +++ b/qt5/src/QPainterOutputDev.cc @@ -1,6 +1,6 @@ // // -// ArthurOutputDev.cc +// QPainterOutputDev.cc // // Copyright 2003 Glyph & Cog, LLC // @@ -50,7 +50,7 @@ #include "FontEncodingTables.h" #include #include -#include "ArthurOutputDev.h" +#include "QPainterOutputDev.h" #include "Page.h" #include "Gfx.h" #include "PDFDoc.h" @@ -61,10 +61,10 @@ #include #include -class ArthurType3Font +class QPainterOutputDevType3Font { public: -ArthurType3Font(PDFDoc *doc, Gfx8BitFont *font); +QPainterOutputDevType3Font(PDFDoc *doc, Gfx8BitFont *font); const QPicture (int gid) const; @@ -78,7 +78,7 @@ public: std::vector codeToGID; }; -ArthurType3Font::ArthurType3Font(PDFDoc *doc, Gfx8BitFont *font) : m_doc(doc), m_font(font) +QPainterOutputDevType3Font::QPainterOutputDevType3Font(PDFDoc *doc, Gfx8BitFont *font) : m_doc(doc), m_font(font) { char *name; const Dict *charProcs = font->getCharProcs(); @@ -103,7 +103,7 @@ ArthurType3Font::ArthurType3Font(PDFDoc *doc, Gfx8BitFont *font) : m_doc(doc), m } } -const QPicture ::getGlyph(int gid) const +const QPicture ::getGlyph(int gid) const { if (!glyphs[gid]) { @@ -118,7 +118,7 @@ const QPicture ::getGlyph(int gid) const QPainter glyphPainter; glyphs[gid] = std::make_unique(); glyphPainter.begin(glyphs[gid].get()); -auto output_dev = std::make_unique(); +auto output_dev = std::make_unique(); auto gfx = std::make_unique(m_doc, output_dev.get(), resDict, , // pagebox @@ -140,10 +140,10 @@ const QPicture ::getGlyph(int gid) const } // -// ArthurOutputDev +// QPainterOutputDev // -ArthurOutputDev::ArthurOutputDev(QPainter *painter) : m_lastTransparencyGroupPicture(nullptr), m_hintingPreference(QFont::PreferDefaultHinting) +QPainterOutputDev::QPainterOutputDev(QPainter *painter) : m_lastTransparencyGroupPicture(nullptr), m_hintingPreference(QFont::PreferDefaultHinting) { m_painter.push(painter);
[poppler] qt5/demos
qt5/demos/navigationtoolbar.cpp |8 1 file changed, 4 insertions(+), 4 deletions(-) New commits: commit c59a2794b68f104fec15bb75af456793bf3c3d96 Author: Albert Astals Cid Date: Fri Nov 22 18:49:06 2019 +0100 qt5: trUtf8 -> tr (less warnings) diff --git a/qt5/demos/navigationtoolbar.cpp b/qt5/demos/navigationtoolbar.cpp index 75eacfc1..77a011f1 100644 --- a/qt5/demos/navigationtoolbar.cpp +++ b/qt5/demos/navigationtoolbar.cpp @@ -59,10 +59,10 @@ NavigationToolBar::NavigationToolBar(QWidget *parent) m_rotationCombo = new QComboBox(this); // NOTE: \302\260 = degree symbol -m_rotationCombo->addItem(trUtf8("0\302\260")); -m_rotationCombo->addItem(trUtf8("90\302\260")); -m_rotationCombo->addItem(trUtf8("180\302\260")); -m_rotationCombo->addItem(trUtf8("270\302\260")); +m_rotationCombo->addItem(tr("0\302\260")); +m_rotationCombo->addItem(tr("90\302\260")); +m_rotationCombo->addItem(tr("180\302\260")); +m_rotationCombo->addItem(tr("270\302\260")); // TODO replace with qOverload once we start requiring Qt 5.7 connect(m_rotationCombo, static_cast(::currentIndexChanged), this, ::slotRotationComboChanged); addWidget(m_rotationCombo); ___ poppler mailing list poppler@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] qt5/demos
qt5/demos/toc.cpp | 145 -- qt5/demos/toc.h |6 +- 2 files changed, 124 insertions(+), 27 deletions(-) New commits: commit 8da4d536cc2b982365483ee873f859b346efeff0 Author: Albert Astals Cid Date: Wed Jan 9 09:58:43 2019 +0100 qt5: demo: Actually use the lazy toc model lazyly diff --git a/qt5/demos/toc.cpp b/qt5/demos/toc.cpp index db47c676..1efdc16a 100644 --- a/qt5/demos/toc.cpp +++ b/qt5/demos/toc.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2008, Pino Toscano - * Copyright (C) 2018 Adam Reichold + * Copyright (C) 2018, Adam Reichold + * Copyright (C) 2019, Albert Astals Cid * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,40 +22,116 @@ #include +#include #include #include -static void fillToc(const QVector , QTreeWidget *tree, QTreeWidgetItem *parentItem) +#include + +struct Node +{ +Node(Poppler::OutlineItem &, int row, Node *parent) +: m_row(row), m_parent(parent), m_item(std::move(item)) +{ +} + +~Node() +{ +qDeleteAll(m_children); +} + +Node(const Node &) = delete; +Node& operator=(const Node &) = delete; + +int m_row; +Node *m_parent; +Poppler::OutlineItem m_item; +QVector m_children; +}; + +class TocModel : public QAbstractItemModel { -QTreeWidgetItem *newitem = nullptr; -for (const auto : items) { -if (item.isNull()) { -continue; +Q_OBJECT +public: +TocModel(QVector &, QObject *parent) +: QAbstractItemModel(parent) +{ +for (int i = 0; i < items.count(); ++i) { +m_topItems << new Node(std::move(items[i]), i, nullptr); +} } -if (!parentItem) { -newitem = new QTreeWidgetItem(tree, newitem); -} else { -newitem = new QTreeWidgetItem(parentItem, newitem); +~TocModel() +{ +qDeleteAll(m_topItems); } -newitem->setText(0, item.name()); -if (item.isOpen()) { -tree->expandItem(newitem); +QVariant data(const QModelIndex , int role) const override +{ +if (role != Qt::DisplayRole) +return {}; + +Node *n = static_cast(index.internalPointer()); +return n->m_item.name(); } -const auto children = item.children(); -if (!children.isEmpty()) { -fillToc(children, tree, newitem); +QModelIndex index(int row, int column, const QModelIndex ) const override +{ +Node *p = static_cast(parent.internalPointer()); +const QVector = p ? p->m_children : m_topItems; + +return createIndex(row, column, children[row]); } -} -} +QModelIndex parent(const QModelIndex ) const override +{ +Node *n = static_cast(child.internalPointer()); +if (n->m_parent == nullptr) +return QModelIndex(); +else +return createIndex(n->m_parent->m_row, 0, n->m_parent); +} + +int rowCount(const QModelIndex ) const override +{ +Node *n = static_cast(parent.internalPointer()); +if (!n) { +return m_topItems.count(); +} + +if (n->m_children.isEmpty() && !n->m_item.isNull()) { +QVector items = n->m_item.children(); +for (int i = 0; i < items.count(); ++i) { +n->m_children << new Node(std::move(items[i]), i, n); +} +} + +return n->m_children.count(); +} + +bool hasChildren(const QModelIndex ) const override +{ +Node *n = static_cast(parent.internalPointer()); +if (!n) +return true; + +return n->m_item.hasChildren(); +} + +int columnCount(const QModelIndex ) const override +{ +return 1; +} + +private: +QVector m_topItems; + +}; TocDock::TocDock(QWidget *parent) : AbstractInfoDock(parent) { -m_tree = new QTreeWidget(this); +m_tree = new QTreeView(this); setWidget(m_tree); m_tree->setAlternatingRowColors(true); m_tree->header()->hide(); @@ -66,22 +143,40 @@ TocDock::~TocDock() { } +void TocDock::expandItemModels(const QModelIndex ) +{ +TocModel *model = static_cast(m_tree->model()); +for (int i = 0; i < model->rowCount(parent); ++i) { +QModelIndex index = model->index(i, 0, parent); +Node *n = static_cast(index.internalPointer()); +if (n->m_item.isOpen()) { +m_tree->setExpanded(index, true); +expandItemModels(index); +} +} +} + void TocDock::fillInfo() { -const auto outline = document()->outline(); +auto outline =
[poppler] qt5/demos qt5/src
qt5/demos/toc.cpp |1 + qt5/src/poppler-outline-private.h |2 ++ qt5/src/poppler-outline.cc|2 ++ qt5/src/poppler-qt5.h |2 +- 4 files changed, 6 insertions(+), 1 deletion(-) New commits: commit c8e6e73a28f6d66e6babedf9cc8da4f10b9e5ffe Author: Albert Astals Cid Date: Wed Jan 9 20:07:10 2019 +0100 Update (C) of previous commits diff --git a/qt5/demos/toc.cpp b/qt5/demos/toc.cpp index 50d4d68d..db47c676 100644 --- a/qt5/demos/toc.cpp +++ b/qt5/demos/toc.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2008, Pino Toscano + * Copyright (C) 2018 Adam Reichold * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/qt5/src/poppler-outline-private.h b/qt5/src/poppler-outline-private.h index 6c00c162..01b7b83d 100644 --- a/qt5/src/poppler-outline-private.h +++ b/qt5/src/poppler-outline-private.h @@ -1,5 +1,7 @@ /* poppler-outline-private.h: qt interface to poppler * + * Copyright (C) 2018 Adam Reichold + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) diff --git a/qt5/src/poppler-outline.cc b/qt5/src/poppler-outline.cc index b420a3ef..c0fbefaf 100644 --- a/qt5/src/poppler-outline.cc +++ b/qt5/src/poppler-outline.cc @@ -1,5 +1,7 @@ /* poppler-outline.cc: qt interface to poppler * + * Copyright (C) 2018 Adam Reichold + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) diff --git a/qt5/src/poppler-qt5.h b/qt5/src/poppler-qt5.h index 38dd05fc..c03fec15 100644 --- a/qt5/src/poppler-qt5.h +++ b/qt5/src/poppler-qt5.h @@ -12,7 +12,7 @@ * Copyright (C) 2012, Guillermo A. Amaral B. * Copyright (C) 2012, Fabio D'Urso * Copyright (C) 2012, Tobias Koenig - * Copyright (C) 2012, 2014, 2015, 2019 Adam Reichold + * Copyright (C) 2012, 2014, 2015, 2018, 2019 Adam Reichold * Copyright (C) 2012, 2013 Thomas Freitag * Copyright (C) 2013 Anthony Granger * Copyright (C) 2016 Jakub Alba ___ poppler mailing list poppler@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] qt5/demos
qt5/demos/pageview.cpp |7 +++ 1 file changed, 7 insertions(+) New commits: commit ffefe1c038de555ed39c3d9eca6ef79ac1f97b86 Author: Albert Astals CidDate: Tue Dec 26 23:57:21 2017 +0100 qt5: demo: don't crash if page is malformed diff --git a/qt5/demos/pageview.cpp b/qt5/demos/pageview.cpp index 4f56108e..81e6a98f 100644 --- a/qt5/demos/pageview.cpp +++ b/qt5/demos/pageview.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2008-2009, Pino Toscano * Copyright (C) 2013, Fabio D'Urso + * Copyright (C) 2017, Albert Astals Cid * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,6 +27,7 @@ #include #include #include +#include PageView::PageView(QWidget *parent) : QScrollArea(parent) @@ -56,6 +58,11 @@ void PageView::documentClosed() void PageView::pageChanged(int page) { Poppler::Page *popplerPage = document()->page(page); + +if (!popplerPage) { +qDebug() << "Page" << page << "is malformed"; +return; +} const double resX = m_dpiX * m_zoom; const double resY = m_dpiY * m_zoom; ___ poppler mailing list poppler@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/poppler
[poppler] qt5/demos qt5/src
qt5/demos/abstractinfodock.cpp |1 - qt5/demos/embeddedfiles.cpp |1 - qt5/demos/fonts.cpp |1 - qt5/demos/info.cpp |1 - qt5/demos/metadata.cpp |1 - qt5/demos/navigationtoolbar.cpp |1 - qt5/demos/optcontent.cpp|1 - qt5/demos/pageview.cpp |1 - qt5/demos/permissions.cpp |1 - qt5/demos/thumbnails.cpp|1 - qt5/demos/toc.cpp |1 - qt5/demos/viewer.cpp|1 - qt5/src/poppler-optcontent.cc |1 - 13 files changed, 13 deletions(-) New commits: commit 26a067d4a84f80eeb892e30a5ab608d0fbea1de5 Author: Albert Astals CidDate: Wed Sep 20 10:36:04 2017 +0200 Remove the moc includes Some people are having trouble with them and automoc really should be taking care of this so no need to have the include. Let's hope this doesn't break some other people :D diff --git a/qt5/demos/abstractinfodock.cpp b/qt5/demos/abstractinfodock.cpp index 7b306d82..970b7228 100644 --- a/qt5/demos/abstractinfodock.cpp +++ b/qt5/demos/abstractinfodock.cpp @@ -54,4 +54,3 @@ void AbstractInfoDock::slotVisibilityChanged(bool visible) } } -#include "abstractinfodock.moc" diff --git a/qt5/demos/embeddedfiles.cpp b/qt5/demos/embeddedfiles.cpp index 36ffa36d..12267135 100644 --- a/qt5/demos/embeddedfiles.cpp +++ b/qt5/demos/embeddedfiles.cpp @@ -79,4 +79,3 @@ void EmbeddedFilesDock::documentClosed() AbstractInfoDock::documentClosed(); } -#include "embeddedfiles.moc" diff --git a/qt5/demos/fonts.cpp b/qt5/demos/fonts.cpp index b75bc49f..68f11a1e 100644 --- a/qt5/demos/fonts.cpp +++ b/qt5/demos/fonts.cpp @@ -69,4 +69,3 @@ void FontsDock::documentClosed() AbstractInfoDock::documentClosed(); } -#include "fonts.moc" diff --git a/qt5/demos/info.cpp b/qt5/demos/info.cpp index 0aa6d2c0..277674ce 100644 --- a/qt5/demos/info.cpp +++ b/qt5/demos/info.cpp @@ -69,4 +69,3 @@ void InfoDock::documentClosed() AbstractInfoDock::documentClosed(); } -#include "info.moc" diff --git a/qt5/demos/metadata.cpp b/qt5/demos/metadata.cpp index ef7b1f48..a8ebc28d 100644 --- a/qt5/demos/metadata.cpp +++ b/qt5/demos/metadata.cpp @@ -47,4 +47,3 @@ void MetadataDock::documentClosed() AbstractInfoDock::documentClosed(); } -#include "metadata.moc" diff --git a/qt5/demos/navigationtoolbar.cpp b/qt5/demos/navigationtoolbar.cpp index 0b6c8622..a2c1b76b 100644 --- a/qt5/demos/navigationtoolbar.cpp +++ b/qt5/demos/navigationtoolbar.cpp @@ -141,4 +141,3 @@ void NavigationToolBar::slotRotationComboChanged(int idx) emit rotationChanged(idx * 90); } -#include "navigationtoolbar.moc" diff --git a/qt5/demos/optcontent.cpp b/qt5/demos/optcontent.cpp index 56f8e967..d1f20b1b 100644 --- a/qt5/demos/optcontent.cpp +++ b/qt5/demos/optcontent.cpp @@ -66,4 +66,3 @@ void OptContentDock::reloadImage() reloadPage(); } -#include "optcontent.moc" diff --git a/qt5/demos/pageview.cpp b/qt5/demos/pageview.cpp index cb2731b1..4f56108e 100644 --- a/qt5/demos/pageview.cpp +++ b/qt5/demos/pageview.cpp @@ -98,4 +98,3 @@ void PageView::slotRotationChanged(int value) reloadPage(); } -#include "pageview.moc" diff --git a/qt5/demos/permissions.cpp b/qt5/demos/permissions.cpp index 983dc0fc..2cb1ffca 100644 --- a/qt5/demos/permissions.cpp +++ b/qt5/demos/permissions.cpp @@ -63,4 +63,3 @@ void PermissionsDock::documentClosed() AbstractInfoDock::documentClosed(); } -#include "permissions.moc" diff --git a/qt5/demos/thumbnails.cpp b/qt5/demos/thumbnails.cpp index 1dafb5ee..dbf24799 100644 --- a/qt5/demos/thumbnails.cpp +++ b/qt5/demos/thumbnails.cpp @@ -81,4 +81,3 @@ void ThumbnailsDock::slotItemActivated(QListWidgetItem *item) setPage(item->data(PageRole).toInt()); } -#include "thumbnails.moc" diff --git a/qt5/demos/toc.cpp b/qt5/demos/toc.cpp index c7fec837..740c0ca0 100644 --- a/qt5/demos/toc.cpp +++ b/qt5/demos/toc.cpp @@ -85,4 +85,3 @@ void TocDock::documentClosed() AbstractInfoDock::documentClosed(); } -#include "toc.moc" diff --git a/qt5/demos/viewer.cpp b/qt5/demos/viewer.cpp index a95d7f33..3c571f55 100644 --- a/qt5/demos/viewer.cpp +++ b/qt5/demos/viewer.cpp @@ -316,4 +316,3 @@ int PdfViewer::page() const return m_currentPage; } -#include "viewer.moc" diff --git a/qt5/src/poppler-optcontent.cc b/qt5/src/poppler-optcontent.cc index 805d8965..0a10769c 100644 --- a/qt5/src/poppler-optcontent.cc +++ b/qt5/src/poppler-optcontent.cc @@ -454,4 +454,3 @@ namespace Poppler } } -#include "poppler-optcontent.moc" ___ poppler mailing list poppler@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/poppler