Commit graph

106 commits

Author SHA1 Message Date
Albert Astals Cid
7b7fef0bea Move the messagebox about continuing search from core to ui 2014-05-10 11:33:21 +02:00
Albert Astals Cid
c8697989a1 Do not duplicate the noDialogs storage in two structs 2014-05-10 10:09:38 +02:00
Albert Astals Cid
3c3d4373ab Do not reset the search if it's a different search id
Doesn't make any sense, why would we want a "running searches map" if we
always reset the previous one?

BUGS: 334568
FIXED-IN: 4.13.2
2014-05-10 10:07:23 +02:00
Albert Astals Cid
6bf6b14f3c Do not reset the search if it's a different search id
Doesn't make any sense, why would we want a "running searches map" if we
always reset the previous one?

BUGS: 334568
FIXED-IN: 4.13.2
2014-05-10 10:04:47 +02:00
Albert Astals Cid
630d3a8a5f Simplify search parameter passing 2014-05-10 00:49:01 +02:00
Albert Astals Cid
e93d5bda01 Move KWallet code from pdf backend to ui
This helps with the widget dependency removal in the core/backends
2014-05-09 19:58:43 +02:00
Michal Humpula
c07ee043a3 Multiple Tiles Managers per Page
It's straighforward implementation. Every single place, where there were call for (or with) TilesManager, now has a DocumentObserver as companion. The m_tiledManager reference in PagePrivate was changed to QMap<DocumentObserver, TilesManager>.

REVIEW: 113986
2014-02-19 23:41:22 +01:00
Jon Mease
43246c563b Viewport transition refinements for Find and Undo/Redo actions
REVIEW: 114060

This patch introduces viewport transitions for undo/redo actions on annotations and forms.  When an annotation/form action is undone/redone but the associated annotation/form is not currently visible, the viewport is updated to center on the undo/redo action. If the annotation/form is visible, the viewport is not updated.

The viewport transitions for the Find action have also been updated to this same algorithm.  Previously the viewport was moved to center on each matching search term even if the search term was already visible in the viewport. This lead to unnecessary viewport transitions if the search term matched several items in a single paragraph for example.

These proposed changes to the viewport transition behavior are consistent with the find and undo behavior of many existing applications including Kate, Open Office, and Foxit PDF Reader.
2013-12-29 23:27:30 +01:00
Fabio D'Urso
a556126816 Fix the issue exposed by the previous patch
The patch de-singletons the PageController class.

The PageController is now per-document and it gets deleted when the
document is closed.

As consequence of this, the RotationJob's done signal will not be
delivered if the document has been closed, and thus this fixes the
crash.
2013-07-30 20:40:40 +02:00
Albert Astals Cid
076e0cfaf8 More the commands to a different file 2013-04-06 00:39:35 +02:00
Albert Astals Cid
d0fd156dc9 Minor tweaks 2013-04-06 00:28:39 +02:00
Jon Mease
78faf1e68f Add undo/redo support for annotations
REVIEW: 107442
2013-04-06 00:22:48 +02:00
Albert Astals Cid
541650a4f4 Remove the concept of observer/view id
Just use the pointer as id :-)

This is BIC and SIC, increase the soversion now to makes sure we don't forget in the future

Patch based in an earlier patch by Bogdan Cristea <cristeab@gmail.com>
REVIEW: 109115
2013-02-24 23:01:02 +01:00
Thomas Fischer
96c69528d4 Show paper size names like "ISO/DIN A4" instead of just paper size in numbers
REVIEW: 107350
2012-12-31 11:14:54 +01:00
Mailson Menezes
f56c5a8ac9 Merge branch 'master' into tiled-rendering 2012-11-08 20:51:01 -03:00
Fabio D'Urso
e12966b259 Removed possibility to have a tiles manager per observer
Now only the PageView can have a tiles manager.
2012-11-08 20:52:01 +01:00
Mailson Menezes
da54ffdd8e Improve the evicting algorithm
The miss counter was taken away. Now the algorithm relies on the
distance between the tiles and the viewport.

Also the visibleRect() and setVisibleRect() methods were removed from
TilesManager since we now pass this information to
TilesManager::cleanupPixmapMemory()
2012-11-08 10:58:08 -03:00
Albert Astals Cid
4befd95ef8 sendGeneratorRequest -> sendGeneratorPixmapRequest 2012-09-25 11:09:34 +02:00
Albert Astals Cid
d917fe1e12 Unify the forward and backward search methods
Same functionality 60 lines of duplicated code less to maintain
2012-09-25 00:14:10 +02:00
Fabio D'Urso
00afec8617 Refactoring of cleanupPixmapMemory
memoryToFree calculation now lives in DocumentPrivate::calculateMemoryToFree()
2012-07-10 00:57:17 +02:00
Fabio D'Urso
1feb549d3d Clean pixmap cache in order of descreasing distance from current viewport
Previously it was cleaned in FIFO order

I also moved the pixmap selection logic in a separate function, that
will be needed in the next patches.

Note: This behaviour is yet not optimal for the thumbnails panel,
because it is allowed to be at a page different than the current
viewport
2012-07-10 00:56:19 +02:00
Albert Astals Cid
cd8485c7bc Make the freeSwap out param optional 2012-06-24 23:53:01 +02:00
Fabio D'Urso
3c2d2e1b7a Better memory limit tuning in greedy mode to avoid triggering the OOM if swap is full
Using Albert's new formula
2012-06-24 21:05:14 +02:00
Fabio D'Urso
5930478352 Keep original filename when creating a .okular archive from a .okular archive
This patch makes sure that the file saved in the .okular file keeps
the original filename (and, in particular, the extension) even if the
user is re-exporting a .okular archive as .okular archive. Before this
patch, the file boundled in the .okular archive would be named like the
.okular file it was exported from (eg foo.okular instead of foo.pdf).
Note: Okular had no problems in reopening it, but advanced users
unpacking the ZIP file obtained a .okular file which is actually a
native file, and not an okular archive.
2012-06-07 18:59:39 +02:00
Fabio D'Urso
86c92ffec2 Fixes against causes of annotation data loss + Improved GUI message logic
1) If the user had previously annotated the document with an old okular
version and the document contains existing annotations and no /Encrypt
(ie the case where annotation changes are no longer saved locally), make
Document::saveDocumentInfo write the original unmodified local
annotations back to XML, so that it seems that the original file was not
changed. If the user makes annotation changes, code from previous
patches already asks him to save them to a different document on close.

2) Ask "Save changes?" if the user has modified annotations in a .okular
archive.
BUG: 300197

3) Turned a "sorry" message in a "information" (with dontshowthisagain),
because now we also have the "Save changes?" prompt to inform the user.

4) Suppressed all annotation-related message boxes on document opening
2012-06-05 00:49:01 +02:00
Fabio D'Urso
e3f1c388de Ask "Save annotation changes?" if there are unsaved annotations that cannot be saved locally
This patch turns Okular into a ReadWritePart. Annotation editing is always
disabled if we're loaded as ReadOnlyPart, no matter the document type.

REVIEW: 105020
2012-05-23 23:43:44 +02:00
Fabio D'Urso
b3782d82a1 Fallback behavior for documents whose generator provides native annotation editing support without saveAs support
The only affected generator is poppler. Note that:
Document has /Encrypt <=iff=> SaveInterface supportsOption(SaveChanges) is false

This patch enforces the following behavior (and warns the user the first time
he edits an annotation).

- If the document has /Encrypt, warn that "Save as" is not available, but it's
possible to export as okular archive. New annotations will be automatically
saved to XML as usual.
Note that the previous patch already made all existing annotations uneditable,
because there's no way to save them.

- If the document has no /Encrypt and there are existing external annotations,
warn that changes won't be saved automatically. The user needs to "Save as" or
changes will be lost.

- If the document has no /Encrypt and there aren't existing external
annotations, don't show any warning. New annotations will be automatically saved
to XML as usual and to file if "Save as" is pressed.
2012-05-17 23:51:00 +02:00
Fabio D'Urso
157638f2f9 Added Annotation::BeingMoved flag to avoid refreshing pixmaps while moving annotations 2012-05-17 23:50:39 +02:00
Fabio D'Urso
f6fa2a5614 Disable GUI operations on certain types of annotations
Modification and removal of *external* annotations are disabled by this
patch. Note that this change doesn't remove any functionality, because they
have never been implemented (AnnotationProxy is defined by the previous
patch).

The #if0'd blocks will be enabled by a future patch that provides fallback
behavior for generators that don't support saving changes.
2012-05-17 23:50:10 +02:00
Albert Astals Cid
25f95bbc9f duplicate code is evil
svn path=/trunk/KDE/kdegraphics/okular/; revision=1115314
2010-04-15 22:26:58 +00:00
Albert Astals Cid
b9d749bc0d Commit "Document information" patch by Luigi Toscano, 8 months without a nack from any devel and i like it, so let's commit it
Luigi's mail says
********
The attached patch changes a bit the handling of document informations 
and the informations shown in the info page.
- document path is added to the information and a button allows you to 
toggle between to file name (default) and the complete path;
- the number of the page is added to the information set by 
documentInfo() and not by the properties dialog (so the latter will not 
modify datas);
- the order of the information shown is the fixed now (see 
orderedProperties).
*********

Then there are a few things of my own since some const here and there and adding three values to Key enum

Also it fixes wish 208999
BUGS: 208999

svn path=/trunk/KDE/kdegraphics/okular/; revision=1049872
2009-11-16 00:46:33 +00:00
Pino Toscano
b2472bef0d check that the rotation page notification really refers to a page of a document
fixes crash when rotating documents opened in one of more than one okular tabs in konqueror

svn path=/trunk/KDE/kdegraphics/okular/; revision=989681
2009-06-30 17:21:55 +00:00
Pino Toscano
dc7583eb8b Add the concept of "next destination" next to the "next viewport" one.
This allows a resolution, if set, of that named destination when opening a document.
CCBUG: 192032

svn path=/trunk/KDE/kdegraphics/okular/; revision=967542
2009-05-13 14:24:30 +00:00
Pino Toscano
b6c5ba1bc8 Add API to load and save "document archives", ie an .okular archive with document and metadata (currently annotations).
Few missing to be done in it:
- more checks when saving
- make it use a proper mimetype

CCBUG: 151614

svn path=/trunk/KDE/kdegraphics/okular/; revision=884597
2008-11-15 14:15:31 +00:00
Pino Toscano
acab77c691 add a loadDocumentInfo() variant that takes the file name to read stuff from, and make the non-parameters one calling the new one
svn path=/trunk/KDE/kdegraphics/okular/; revision=884461
2008-11-15 00:34:03 +00:00
Pino Toscano
9d8c52b5eb Shuffle a bit the way documents are opened:
- when there are no backends for handling the document mimetype, try harder using the mimetype from the file content only
- when the backend fails loading, try again with the backend that handles the mimetype of the file content
BUG: 166034

svn path=/trunk/KDE/kdegraphics/okular/; revision=881991
2008-11-09 14:21:20 +00:00
Pino Toscano
97335bf267 simple optimization in the Google-like search: split the search terms just once
svn path=/trunk/KDE/kdegraphics/okular/; revision=873283
2008-10-19 10:07:48 +00:00
Pino Toscano
f1f52f4124 do not forget to init m_maxAllocatedTextPages
svn path=/trunk/KDE/kdegraphics/okular/; revision=867869
2008-10-04 19:13:33 +00:00
Pino Toscano
0eab41cc97 do not use the specified widget as parent for the Document, but just keep it
svn path=/trunk/KDE/kdegraphics/okular/; revision=863377
2008-09-21 22:44:42 +00:00
Pino Toscano
e4dc8d8126 Load and save in the XML document info all the properties of the various View's, that are specific to each document.
At the moment, they are the zoom mode and level of the page view.
BUG: 155752

svn path=/trunk/KDE/kdegraphics/okular/; revision=814998
2008-05-31 21:13:15 +00:00
Pino Toscano
18f486c2c1 add the possibility to store an useful bounding box of a page, and for generators to notify the document (and its observers) on its change
original patch by kde2eran@tromer.org, thanks!
CCMAIL: kde2eran@tromer.org

svn path=/trunk/KDE/kdegraphics/okular/; revision=809467
2008-05-18 23:06:21 +00:00
Albert Astals Cid
bb23209234 limit the number of text pages we keep in memory so that searching does not bring your system to its knees
BUG: 161213

svn path=/trunk/KDE/kdegraphics/okular/; revision=803949
2008-05-04 15:10:32 +00:00
Pino Toscano
e13e74db92 add a private slot for hooks on config change
svn path=/trunk/KDE/kdegraphics/okular/; revision=803946
2008-05-04 15:02:35 +00:00
Pino Toscano
5851ddf6a8 Start a View class for managing the "views" of a document.
Provide ways to register & unregister the view from a Document, and to get/set the view capabilities.

svn path=/trunk/KDE/kdegraphics/okular/; revision=801657
2008-04-27 11:05:59 +00:00
Pino Toscano
513c7cf225 Add a scripter class to execute scripts on request.
Trigger its execution at the document loading, if there are "top level" scripts,
and when a script action is activated.

svn path=/trunk/KDE/kdegraphics/okular/; revision=796637
2008-04-13 22:31:59 +00:00
Pino Toscano
8a858a9449 Core implementation of the backward text search, to be used now in the search bar.
Works pretty well -- the only problem left is that when changing the search direction, the first match is the current match.

svn path=/trunk/KDE/kdegraphics/okular/; revision=785629
2008-03-14 14:14:06 +00:00
Pino Toscano
c9089f3160 Add the possibility to save a copy of the document with the changes to it (only for form fields at the moment).
On the Document/Generator side, introduce a proper interface for the purpouse.

On the GUI side, add a new "Save As" function that save the changed document to a location.
The action is enabled only if the current backend can provide the functionality.

svn path=/trunk/KDE/kdegraphics/okular/; revision=784661
2008-03-11 23:40:59 +00:00
Pino Toscano
e023effb15 Add a requestPixmaps() overload that takes options as flags.
This way we can tell to "merge" in a smart way the new pixmap request with the enqueued ones of the same ID.

Add a (private) slot to refresh all the pixmaps of a page.

svn path=/trunk/KDE/kdegraphics/okular/; revision=783259
2008-03-07 15:50:48 +00:00
Pino Toscano
e9bd289993 Keep a list of the currently active pixmap requests (usually one at most), and wait for their finish when closing the document.
svn path=/trunk/KDE/kdegraphics/okular/; revision=769281
2008-02-01 00:43:45 +00:00
Pino Toscano
6aa123656a Port the plugin system to the standard KDE factory and loader, getting rid of the custom system okular had so far.
This requires a generator to have a
  MyGenerator(QObject *parent, const QVariantList &args)
constructor in order to be successfully loaded.
The OKULAR_EXPORT_PLUGIN macro was adapted, and the generators to provide it the about data; the protected Generator::setAboutData() is no more needed.

Remove the 'lib' prefix from plugins, unneeded now.

CCMAIL: okular-devel@kde.org

svn path=/trunk/KDE/kdegraphics/okular/; revision=744169
2007-12-02 20:57:24 +00:00
Pino Toscano
dfce0d1fcd centralize the way we know whether a generator is configurable, and properly manage i18n loading in that case
svn path=/trunk/KDE/kdegraphics/okular/; revision=741325
2007-11-25 12:49:30 +00:00
Pino Toscano
2340d9c6d8 Save the rotation of the document, so when reopening the document the last rotation is kept.
This also fixed the problem of the lost rotation when reloading because of document change.

CCBUG: 151130

svn path=/trunk/KDE/kdegraphics/okular/; revision=731697
2007-11-01 16:15:34 +00:00
Pino Toscano
5dc92c5824 use qint64 for the document size
svn path=/trunk/KDE/kdegraphics/okular/; revision=719107
2007-09-30 10:49:38 +00:00
Pino Toscano
78e2377a87 Add a method for generators to know some metadata of the document
adapted the poppler and the chm generators to use that, instead of fiddling with the settings class

svn path=/trunk/KDE/kdegraphics/okular/; revision=712614
2007-09-14 22:16:00 +00:00
Pino Toscano
f8ed5302ec - move the Document::requestDone() to the private class, as it's something internal to the generator work
- make the Generator internally keep an pointer to the private class Document, so we can access easily to the Document' stuff

svn path=/trunk/KDE/kdegraphics/okular/; revision=712498
2007-09-14 15:29:16 +00:00
Pino Toscano
aaed55f037 extract the DocumentPrivate class in an own file
svn path=/trunk/KDE/kdegraphics/okular/; revision=712493
2007-09-14 15:17:36 +00:00