2021-05-24 07:25:56 +00:00
|
|
|
/*
|
|
|
|
SPDX-FileCopyrightText: 2005 Enrico Ros <eros.kde@email.it>
|
|
|
|
SPDX-FileCopyrightText: 2005 Albert Astals Cid <aacid@kde.org>
|
2021-06-03 18:33:18 +00:00
|
|
|
|
|
|
|
Work sponsored by the LiMux project of the city of Munich:
|
2021-05-24 11:41:08 +00:00
|
|
|
SPDX-FileCopyrightText: 2017 Klarälvdalens Datakonsult AB a KDAB Group company <info@kdab.com>
|
2021-05-24 07:25:56 +00:00
|
|
|
|
|
|
|
SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
*/
|
2005-01-02 14:55:14 +00:00
|
|
|
|
2006-09-21 08:45:36 +00:00
|
|
|
#ifndef _OKULAR_DOCUMENTOBSERVER_H_
|
|
|
|
#define _OKULAR_DOCUMENTOBSERVER_H_
|
2005-01-02 14:55:14 +00:00
|
|
|
|
2018-08-31 09:23:45 +00:00
|
|
|
#include <QVector>
|
2006-09-21 08:45:36 +00:00
|
|
|
|
2014-10-27 21:35:06 +00:00
|
|
|
#include "okularcore_export.h"
|
2006-12-25 15:10:39 +00:00
|
|
|
|
2006-09-21 08:45:36 +00:00
|
|
|
namespace Okular
|
|
|
|
{
|
|
|
|
class Page;
|
2005-01-09 23:37:07 +00:00
|
|
|
|
2005-01-02 14:55:14 +00:00
|
|
|
/**
|
|
|
|
* @short Base class for objects being notified when something changes.
|
|
|
|
*
|
2006-09-21 08:45:36 +00:00
|
|
|
* Inherit this class and call Document->addObserver( yourClass ) to get
|
2006-05-13 11:17:24 +00:00
|
|
|
* notified of asynchronous events (new pixmap generated, or changed, etc..).
|
2005-01-02 14:55:14 +00:00
|
|
|
*/
|
2014-10-27 21:35:06 +00:00
|
|
|
class OKULARCORE_EXPORT DocumentObserver
|
2005-01-02 14:55:14 +00:00
|
|
|
{
|
|
|
|
public:
|
2007-03-18 17:14:36 +00:00
|
|
|
DocumentObserver();
|
2006-11-27 08:12:39 +00:00
|
|
|
/**
|
|
|
|
* Destroys the document observer.
|
|
|
|
*/
|
2006-12-05 08:53:26 +00:00
|
|
|
virtual ~DocumentObserver();
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2020-02-21 15:11:42 +00:00
|
|
|
DocumentObserver(const DocumentObserver &) = delete;
|
|
|
|
DocumentObserver &operator=(const DocumentObserver &) = delete;
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2006-11-27 08:12:39 +00:00
|
|
|
/**
|
|
|
|
* Flags that can be sent from the document to all observers to
|
|
|
|
* inform them about the type of object that has been changed.
|
|
|
|
*/
|
|
|
|
enum ChangedFlags {
|
|
|
|
Pixmap = 1, ///< Pixmaps has been changed
|
|
|
|
Bookmark = 2, ///< Bookmarks has been changed
|
|
|
|
Highlights = 4, ///< Highlighting information has been changed
|
|
|
|
TextSelection = 8, ///< Text selection has been changed
|
2012-05-23 21:43:44 +00:00
|
|
|
Annotations = 16, ///< Annotations have been changed
|
|
|
|
BoundingBox = 32, ///< Bounding boxes have been changed
|
2017-11-14 13:52:02 +00:00
|
|
|
NeedSaveAs = 64 ///< Set when "Save" is needed or annotation/form changes will be lost @since 0.15 (KDE 4.9) @deprecated
|
2006-11-27 08:12:39 +00:00
|
|
|
};
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2007-09-09 10:50:36 +00:00
|
|
|
/**
|
|
|
|
* ...
|
|
|
|
*/
|
|
|
|
enum SetupFlags {
|
|
|
|
DocumentChanged = 1, ///< The document is a new document.
|
2014-05-11 15:38:30 +00:00
|
|
|
NewLayoutForPages = 2, ///< All the pages have
|
2017-11-06 05:10:13 +00:00
|
|
|
UrlChanged = 4 ///< The URL has changed @since 1.3
|
2007-09-09 10:50:36 +00:00
|
|
|
};
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2006-12-05 08:53:26 +00:00
|
|
|
/**
|
|
|
|
* This method is called whenever the document is initialized or reconstructed.
|
|
|
|
*
|
|
|
|
* @param pages The vector of pages of the document.
|
2007-09-09 10:50:36 +00:00
|
|
|
* @param setupFlags the flags with the information about the setup
|
2006-12-05 08:53:26 +00:00
|
|
|
*/
|
2007-09-09 10:50:36 +00:00
|
|
|
virtual void notifySetup(const QVector<Okular::Page *> &pages, int setupFlags);
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2006-12-05 08:53:26 +00:00
|
|
|
/**
|
|
|
|
* This method is called whenever the viewport has been changed.
|
|
|
|
*
|
|
|
|
* @param smoothMove If true, the move shall be animated.
|
|
|
|
*/
|
|
|
|
virtual void notifyViewportChanged(bool smoothMove);
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2006-12-05 08:53:26 +00:00
|
|
|
/**
|
|
|
|
* This method is called whenever the content on @p page described by the
|
|
|
|
* passed @p flags has been changed.
|
|
|
|
*/
|
|
|
|
virtual void notifyPageChanged(int page, int flags);
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2006-12-05 08:53:26 +00:00
|
|
|
/**
|
|
|
|
* This method is called whenever the content described by the passed @p flags
|
|
|
|
* has been cleared.
|
|
|
|
*/
|
|
|
|
virtual void notifyContentsCleared(int flags);
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2006-12-05 08:53:26 +00:00
|
|
|
/**
|
|
|
|
* This method is called whenever the visible rects have been changed.
|
|
|
|
*/
|
|
|
|
virtual void notifyVisibleRectsChanged();
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2007-07-08 14:25:08 +00:00
|
|
|
/**
|
|
|
|
* This method is called whenever the zoom of the document has been changed.
|
|
|
|
*/
|
|
|
|
virtual void notifyZoom(int factor);
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2006-12-05 08:53:26 +00:00
|
|
|
/**
|
|
|
|
* Returns whether the observer agrees that all pixmaps for the given
|
|
|
|
* @p page can be unloaded to improve memory usage.
|
|
|
|
*
|
|
|
|
* Returns true per default.
|
|
|
|
*/
|
|
|
|
virtual bool canUnloadPixmap(int page) const;
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2012-08-16 15:37:39 +00:00
|
|
|
/**
|
|
|
|
* This method is called after the current page of the document has been entered.
|
|
|
|
*
|
|
|
|
* @param previous The number of the previous page (is @c -1 for the initial page change).
|
|
|
|
* @param current The number of the current page.
|
|
|
|
*
|
|
|
|
* @since 0.16 (KDE 4.10)
|
|
|
|
*/
|
|
|
|
virtual void notifyCurrentPageChanged(int previous, int current);
|
2020-07-10 22:15:05 +00:00
|
|
|
|
2006-12-05 08:53:26 +00:00
|
|
|
private:
|
|
|
|
class Private;
|
2007-04-15 19:11:10 +00:00
|
|
|
const Private *d;
|
2005-01-02 14:55:14 +00:00
|
|
|
};
|
|
|
|
|
2006-09-21 08:45:36 +00:00
|
|
|
}
|
|
|
|
|
2005-01-02 14:55:14 +00:00
|
|
|
#endif
|