| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| | |
The feature set is mostly in place (except for some known shortcomings)
and we need the merge to build it on iOS.
Task-number: QTBUG-69519
Change-Id: Ib1ac82a9a7e0830d98d1c4327a1b15d4d7f4d4c1
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Similar to f467edc97e66727be7fa3747913e4e01672d4b71:
NavigationStack is kept up-to-date when the scroll position changes, and
can go back to a previous position; and links can in theory jump to
specific positions and zoom levels, scrolling such that a specific x
coordinate is visible.
Change-Id: I2add617914d89b0dc5389e7c3d12d11580a1f82f
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
PdfPageView might be useful in some cases, but we need to get feature
parity with PdfMultiPageView as much as possible, including scrollbars.
Including them in the view is convenient, but also less flexible.
Change-Id: Ibbe6a090a5f5b1d340124986fe49672d682ddedb
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
TableView is missing some features compared to ListView; so finding out
where we currently are (which row) and programmatic positioning on a
specific y coordinate of a specific row require some workarounds for now,
including helpers in PdfDocument.
TableView also assumes (and sporadically enforces) that all cells in a
column have the same width. So we need a placeholder Item for each page.
This also helps with rotation: the placeholder is now as wide as the
window or the image, whichever is wider, and the "paper" is centered
within; thus there's always room to rotate it.
There's still some problem with setting contentY in goToPage() after
the page has been zoomed to a size larger than the window: the values
look correct, but it scrolls too far.
But on the plus side, horizontal scrolling works. So now we attempt to
control the horizontal position too: NavigationStack tracks it, and can
go back to a previous position; and links can in theory jump to specific
positions and zoom levels, scrolling horizontally such that a specific x
coordinate is visible.
Includes minor UI tweaks to make it look better on iOS.
Change-Id: I643d8ef48ef815aeb49cae77dcb84c3682563d56
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On iOS, the native FileDialog doesn't work, sharing doesn't work, and
packaging files along with the application requires manual effort; so
a PDF file in resources seems to be the easiest alternative to make
the examples demo-able.
QPdfDocument wants a file path, because it uses QFile; but we like
to use URLs in Qt Quick. So it's a bit of an impedance mismatch,
there are several choices about when and where to do the conversion,
and it's hard to say which way is more correct. This way happens
to work for now.
Also do the rest of the things necessary to get this working on iOS.
Change-Id: Icb8614d5eed2510f101aefba534ef80cf890518f
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As usual, coordinates are in the first quadrant, and we need to
convert to 4th quadrant to get a y value that can be used to adjust
contentY of a ListView or TableView.
The tooltip when hovering over links provides a way to verify that
the link really jumps where it's intended to.
Change-Id: I9107639f15496a987c0fa7c3c2e2583c3839cc6b
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
If the document is null, ignore it.
Change-Id: I3cebd049fb5d16d0064dddf00183f231019ef03c
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I20512187dcc872b2e0429968e9ad2a9899aee6c2
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Now it looks more similar to PdfMultiPageView.qml: public properties
and functions are grouped by functionality, implementation details are
"below the fold", and properties and functions that we don't want to
expose as API are nested inside inner items.
Also fixed ColumnLayout attached properties.
Change-Id: Iafe6f983a34ca6bac9b0d4f3a26aba5a426e0232
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Amends 09a6eac4a63b32548ecc1ff5b16a5d8fc3ba1c04.
Change-Id: Id321d016a758d4f58d82a32575d034df226e083e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I855150578c9127b175c5907500d057b704fe5e0e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It's a QAbstractListModel, so now PdfMultiPageView has a ListView in a
left-side Drawer showing all results found so far.
- In PdfMultiPageView, multiple pages exist at once, so it makes sense
to use the same searchmodel for all.
- It's faster and saves memory.
- Search results on each page can be cached.
- It's possible to show search results in a ListView or QListView.
Change-Id: I66fba6975954a09a4d23262be87ff8cc25ee7478
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This version still has separate PdfSearchModel instances on each page,
but now there are buttons to iterate and highlight the search results
in order. When you come to the last result on one page, hitting the
"Find Next" button will jump to the next page, and keep jumping forward
from there until another result is found. Unfortunately this jumping
takes time if it skips over a lot of pages because of empty search
results. That seems to be another reason to make PdfSearchModel into a
whole-document search model and use one instance.
Also reorganize PdfMultiPageView.qml's public API into sections
according to functionality rather than by type.
Change-Id: I677a764fcbf231b2656aff8abe7240a27582a696
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Unfortunately it's getting harder to do things declaratively, because we
have to avoid circular bindings, and because of needing to use imperative
APIs. The current-page spinbox provides onValueModified() to detect when
the user modifies it, distinct from the simple fact that the value changed.
We shouldn't make bindings to set ListView.currentIndex anyway, because
that results in slow animation (and loading pages in all delegates along
the way) rather than quick jumping to the correct page. Instead we need
to use ListView.positionViewAtIndex(), another imperative API, to get
quick jumps without having to calculate and set contentY in some other way.
Now we move toward the NavigationStack providing storage for the current
destination at all times. Changes there will trigger programmatically
moving the ListView.
When the user scrolls manually, that generates a "destination" in the
navigation stack, such that the back button can jump back to the
previous location, and then the forward button can return to the
destination where manual scrolling ended up.
Fixes: QTBUG-77510
Change-Id: I47544210d2e0f9aa790f3d2594839678374e463d
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
So far it does not update the spinbox with the current page to which
the user has scrolled, because ListView.currentIndex doesn't change.
Change-Id: I5dfa644401f77628c71ad1db7d64c5f0ac1e0c65
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Push/back/forward behavior seems more correct now, but still no
autotest yet.
QPdfDestination might be useful to represent locations of search results,
for link destinations and maybe named destinations too.
Fixes: QTBUG-77512
Change-Id: I113b2c535a2cd302106e6546104c64e12985d387
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Currently, scaleToWidth() and scaleToPage() choose the scale of the
first page to fit the given viewport size, and as long as all pages are
the same size, it works. On the other hand, the PinchHandler only
affects the scale of the page on which the pinch gesture occurs.
Calling resetScale(), scaleToWidth() or scaleToPage() undoes the
effect of any previous pinch gesture or any other kind of scaling change.
Task-number: QTBUG-77513
Change-Id: Ia3227ca9c4af263eb8505dbd6336657984c66ab0
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
HoverHandler.cursorShape is new API in 5.15, so we have to use
MouseArea for 5.14.
This patch can be reverted as soon as 5.14 is no longer supported.
Change-Id: I1c830215729038095ec33ece36a1a83108cbd835
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
So far it's a ListView with a page per delegate. Many features are working,
but zooming and rotation are not working yet.
Change-Id: I9ee7aa60ad4411bd8734fe2cd987a68906a5cf57
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Works well enough to use, but needs autotests and at least one fix.
Change-Id: I2114b9fb3b5ddf7cfe2106d4a4fbc7d74852c61d
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I40b92000a4def105d22a3bd10d0544b0b0f0fe1e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This seems to make QPdfLinkModel happy for some reason; otherwise
QPdfLinkModelPrivate::update() does not succeed in getting page numbers
when it calls FPDFDest_GetDestPageIndex().
Amends 9231d3444555945297857ee4aae05919083ea479
Change-Id: Iaed3301a1ab304ac9813c3b605b2f9c7465bf8e7
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
checkPageComplete() calls FPDFAvail_IsPageAvail(), which does some
initialization that is necessary before PDFium is able to provide any
information about that page. The static readImage() function in
qquickpixmapcache.cpp calls QImageReader::size() before rendering,
to determine the size of the image that will be read, and that
ends up calling QPdfDocument::pageSize(); so it's important to
"go to" that page before attempting to read its size. In summary,
checkPageComplete() is the "go to page" function that must be called
before any other page-specific function.
Amends 9231d3444555945297857ee4aae05919083ea479
Change-Id: Idf5ba9d013b62395c284d055fbfe835fe949df79
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Amends 4f5f0705bc161ff95899fdb2c5fcdb4581bf15bb.
Change-Id: I62563f5be367e8139dc4cdf12866c65f55a576b5
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-81560
Change-Id: I9d75606634da4c604f34913908f97a91797d1813
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Internal links and web links populate the QALM, which can then
be used to drive a Repeater to position highlight rectangles
with TapHandlers, which will handle a click by jumping to the
link destination.
Fixes: QTBUG-77511
Change-Id: I3b5b96d6e82bfd578f31f631f24279173036a080
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
So now you can select text by mouse-drag and copy it to the clipboard.
Task-number: QTBUG-77509
Change-Id: I689ee4158974de8bc541c319a5a5cc2f8f3c2ae6
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Like some other image plugins, the PDF plugin now supports
ImageOption::ScaledClipRect and ScaledSize.
Change-Id: Ie7278752e49c885cc4580f30af1ec5e6310f8334
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I would prefer to use the "import as" mechanism to allow the user to
customize prefixes rather than hard-coding them, actually; but
currently every QML type in the QtPDF module has a hard-coded Pdf prefix.
Change-Id: I4c00e7891c58e028280599d6089a821b9e285c1a
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Ia56a07bc2d53bd4a2166566a9c95126a5d2f9154
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-81560
Change-Id: I159747a097a6a6a28c2355e8ff6b6c59a4f3a29a
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a viewer application is opened with a book-sized PDF, there's no
need to check hundreds of pages before we can render the first page.
Using it in QPdfIOHandler is even worse because this check needs to
be repeated each time we advance from one page to the next. But we
do need to ensure that the page we want to render is available.
Amends 945840bd067d9ca3179a667f48b451cc2087931b
Change-Id: Ib6576b1b91c63c2b57893d14b05632eff8cc4a15
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
|/
|
|
|
|
|
|
| |
When doing qtpdf build with system icu we might get no static libs.
Update checks and remove unnecessary CONFIG lines from pdf core.
Change-Id: Ia9e1944b4931d47f2efca58418f430bad800b29f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|
|
|
|
|
|
|
| |
The pdfium build for qtwebengine should not use
features set for qtpdf.
Change-Id: Ibee97b774dda7e9157cadf28aa4a7a862bcba8ed
Reviewed-by: Michael Brüning <michael.bruning@qt.io>
|
|
|
|
|
|
|
| |
Qdoc no longer adds them automatically.
Change-Id: I83463038a515ed7e731795a9a63b3ba48a7c8c94
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
|
|
|
|
| |
Change-Id: Ic6f66d36ab742cebaf7a1425419e3d2a56f9e56f
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-77514
Change-Id: Ifa7515dae18b278e038c2e5fad46492ca158b044
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This enables searching a PDF for a text string and getting the
boundaries of the areas where it is found. The boundaries are returned
as polygons intended to be rendered with PathMultiline.
PdfPageView is a QML component intended to be a drop-in viewer for use
in applications that need the most common PDF viewing functionality.
More advanced applications are free to use it as a starting point for
customization.
Task-number: QTBUG-77507
Task-number: QTBUG-77514
Change-Id: Id08ac30224e41b6cdfb9300cc4288d5750259f78
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
| |
Also add examples, even though the example docs have not been
added yet.
Task-number: QTBUG-81560
Change-Id: I9ada8e658359788421eda209fffe1eaed967318c
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
|
|
|
|
|
|
|
|
|
| |
QQuickPdfDocument is a wrapper for QPdfDocument providing appropriate
QML API.
Task-number: QTBUG-77506
Change-Id: Ifa2ef50d3d31179f1955c2f673495e727b962bd1
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Fix platform checks, add initial gn args,
use shared library template for gn to get all
the linker objects. This is just debug build.
Task-number: QTBUG-77931
Change-Id: I9b3f7d3440aec66433ed19f4976e14506fba45dd
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
| |
Pdfium API has changed slightly.
Change-Id: I8f6a5b227f35fd819ac4632d1d816569978b47b0
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Without v8/xfa support, compilation drops to ~650 files.
Disable v8/xfa by default. Enabling v8 enables all xfa support.
For example to enable full xfa support without xfa-tiff:
qmake <src> -- --feature-pdf-v8 --no-feature-pdf-xfa-tiff
Change-Id: I0525c22ed6ed84d5837ab9a238ef2c4219339895
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
| |
Change-Id: I6c8dbc3c8d5c8638d7098ab1d4f2999a4c2e6042
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
|
|
|
|
|
|
|
| |
Add missing "We mean it."
Change-Id: Ib5efa6829148fcb1f58a252a839386067ffbf8a6
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change adds two new modules to qtwebengine repository.
New modules do not depend on webengine module, however webengine
chromium source code and Chromium "gn" configuration is
required to build QtPdf.
Adding two unrelated modules to webengine might look crazy:
however sharing gn build configuration and Chromium code base
with necessary qt adaptations simplifies code maintenance and
minimises required code checkouts. Back porting of security
patches for Chromium also affects Pdfium. Moreover, Pdfium is no
longer a separate project, but integrated into Chromium:
therefore moving it out of Chromium source tree would require
extra effort.
Rename webengine-core feature to build-qtwebengine-core, this
makes consistent feature naming with build-qtpdf
At the moment two new modules have integrated build, with possible
shortcuts:
qmake -- --no-build-qtwebengine-core
qmake -- --no-build-qtpdf
Webengine build is disabled by default now.
Change-Id: Iac3d9927d51f3ac316db0148d275eda843dcc19b
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
| |
Change-Id: I96c81d486050aa2e5c6990ee4abbda070f1235e7
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
|
|
|
|
|
| |
Change-Id: I4fdd53098c32394dbeef58f49b511453079045f9
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
| |
Change-Id: I8bc6327e86c4381966da759cbe6295b327c4d808
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
The QPdfPageRenderer renders a page of a QPdfDocument for a given
zoom factor. Depending on its render mode, it does the rendering
in the UI thread or a worker thread. Subsequent requests are queued
and processed in order.
Change-Id: I95820cd318cb443b2572f6d3db5a0bee53939bd1
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
|