| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
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>
|