mirror of
https://invent.kde.org/graphics/okular
synced 2024-08-24 10:25:36 +00:00
api for setting/unsetting bookmarks
This commit is contained in:
parent
e5a77cc8c7
commit
adabbf5fb5
|
@ -24,9 +24,10 @@
|
|||
#include <QTimer>
|
||||
#include <QStyleOptionGraphicsItem>
|
||||
|
||||
#include <core/bookmarkmanager.h>
|
||||
#include <core/document.h>
|
||||
#include <core/page.h>
|
||||
#include <core/generator.h>
|
||||
#include <core/page.h>
|
||||
|
||||
#include "pagepainter.h"
|
||||
#include "settings.h"
|
||||
|
@ -39,7 +40,8 @@ PageItem::PageItem(QDeclarativeItem *parent)
|
|||
m_page(0),
|
||||
m_pageNumber(0),
|
||||
m_smooth(false),
|
||||
m_intentionalDraw(true)
|
||||
m_intentionalDraw(true),
|
||||
m_bookmarked(false)
|
||||
{
|
||||
m_observerId = PAGEVIEW_ID;
|
||||
setFlag(QGraphicsItem::ItemHasNoContents, false);
|
||||
|
@ -66,9 +68,12 @@ void PageItem::setDocument(DocumentItem *doc)
|
|||
}
|
||||
|
||||
m_page = 0;
|
||||
disconnect(doc, 0, this, 0);
|
||||
m_documentItem = doc;
|
||||
Observer *observer = m_documentItem.data()->observerFor(m_observerId);
|
||||
connect(observer, SIGNAL(pageChanged(int, int)), this, SLOT(pageHasChanged(int, int)));
|
||||
connect(doc->document(), SIGNAL(bookmarksChanged(KUrl)),
|
||||
this, SLOT(checkBookmarksChanged()));
|
||||
setPageNumber(0);
|
||||
emit documentChanged();
|
||||
m_redrawTimer->start(REDRAW_TIMEOUT);
|
||||
|
@ -95,6 +100,7 @@ void PageItem::setPageNumber(int number)
|
|||
emit pageNumberChanged();
|
||||
emit implicitWidthChanged();
|
||||
emit implicitHeightChanged();
|
||||
checkBookmarksChanged();
|
||||
m_redrawTimer->start(REDRAW_TIMEOUT);
|
||||
}
|
||||
|
||||
|
@ -128,6 +134,30 @@ bool PageItem::smooth() const
|
|||
return m_smooth;
|
||||
}
|
||||
|
||||
bool PageItem::isBookmarked()
|
||||
{
|
||||
return m_bookmarked;
|
||||
}
|
||||
|
||||
void PageItem::setBookmarked(bool bookmarked)
|
||||
{
|
||||
if (!m_documentItem) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (bookmarked == m_bookmarked) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (bookmarked) {
|
||||
m_documentItem.data()->document()->bookmarkManager()->addBookmark(m_pageNumber);
|
||||
} else {
|
||||
m_documentItem.data()->document()->bookmarkManager()->removeBookmark(m_pageNumber);
|
||||
}
|
||||
m_bookmarked = bookmarked;
|
||||
emit bookmarkedChanged();
|
||||
}
|
||||
|
||||
//Reimplemented
|
||||
void PageItem::geometryChanged(const QRectF &newGeometry,
|
||||
const QRectF &oldGeometry)
|
||||
|
@ -192,4 +222,17 @@ void PageItem::pageHasChanged( int page, int flags )
|
|||
}
|
||||
}
|
||||
|
||||
void PageItem::checkBookmarksChanged()
|
||||
{
|
||||
if (!m_documentItem) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool newBookmarked = m_documentItem.data()->document()->bookmarkManager()->isBookmarked(m_pageNumber);
|
||||
if (m_bookmarked != newBookmarked) {
|
||||
m_bookmarked = newBookmarked;
|
||||
emit bookmarkedChanged();
|
||||
}
|
||||
}
|
||||
|
||||
#include "pageitem.moc"
|
||||
|
|
|
@ -42,6 +42,7 @@ class PageItem : public QDeclarativeItem, public Okular::View
|
|||
Q_PROPERTY(bool smooth READ smooth WRITE setSmooth)
|
||||
Q_PROPERTY(int implicitWidth READ implicitWidth NOTIFY implicitWidthChanged)
|
||||
Q_PROPERTY(int implicitHeight READ implicitHeight NOTIFY implicitHeightChanged)
|
||||
Q_PROPERTY(bool bookmarked READ isBookmarked WRITE setBookmarked NOTIFY bookmarkedChanged)
|
||||
|
||||
public:
|
||||
|
||||
|
@ -61,6 +62,9 @@ public:
|
|||
bool smooth() const;
|
||||
void setSmooth(bool smooth);
|
||||
|
||||
bool isBookmarked();
|
||||
void setBookmarked(bool bookmarked);
|
||||
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
||||
|
||||
// inherited from View
|
||||
|
@ -72,18 +76,21 @@ public:
|
|||
private Q_SLOTS:
|
||||
void delayedRedraw();
|
||||
void pageHasChanged(int page, int flags);
|
||||
void checkBookmarksChanged();
|
||||
|
||||
Q_SIGNALS:
|
||||
void implicitWidthChanged();
|
||||
void implicitHeightChanged();
|
||||
void documentChanged();
|
||||
void pageNumberChanged();
|
||||
void bookmarkedChanged();
|
||||
|
||||
private:
|
||||
const Okular::Page *m_page;
|
||||
int m_pageNumber;
|
||||
bool m_smooth;
|
||||
bool m_intentionalDraw;
|
||||
bool m_bookmarked;
|
||||
QWeakPointer<DocumentItem> m_documentItem;
|
||||
QTimer *m_redrawTimer;
|
||||
int m_observerId;
|
||||
|
|
Loading…
Reference in a new issue