Commit graph

94 commits

Author SHA1 Message Date
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