1 /***************************************************************************
2 * Copyright (C) 2005 by Enrico Ros <eros.kde@email.it> *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
8 ***************************************************************************/
10 #ifndef _OKULAR_PAGEVIEWANNOTATOR_H_
11 #define _OKULAR_PAGEVIEWANNOTATOR_H_
15 #include <qlinkedlist.h>
17 #include "pageviewutils.h"
28 // engines are defined and implemented in the cpp
29 class AnnotatorEngine
;
33 * @short PageView object devoted to annotation creation/handling.
35 * PageViewAnnotator is the okular class used for visually creating annotations.
36 * It uses internal 'engines' for interacting with user events and attaches
37 * the newly created annotation to the document when the creation is complete.
38 * In the meanwhile all PageView events (actually mouse/paint ones) are routed
39 * to this class that performs a rough visual representation of what the
40 * annotation will become when finished.
42 * "data/tools.xml" is the file that contains Annotations/Engine association
43 * for the items placed in the toolbar. The XML is parsed (1) when populating
44 * the toolbar and (2)after selecting a toolbar item, in which case an Ann is
45 * initialized with the values in the XML and an engine is created to handle
48 class PageViewAnnotator
: public QObject
52 PageViewAnnotator( PageView
* parent
, Okular::Document
* storage
);
55 // called to show/hide the editing toolbar
56 void setEnabled( bool enabled
);
58 // called to toggle the usage of text annotating tools
59 void setTextToolsEnabled( bool enabled
);
61 void setToolsEnabled( bool enabled
);
63 // methods used when creating the annotation
64 bool routeEvents() const;
65 QRect
routeEvent( QMouseEvent
* event
, PageViewItem
* item
);
66 bool routeKeyEvent( QKeyEvent
* event
);
67 bool routePaints( const QRect
& wantedRect
) const;
68 void routePaint( QPainter
* painter
, const QRect
& paintRect
);
71 void slotToolSelected( int toolID
);
72 void slotSaveToolbarOrientation( int side
);
75 // global class pointers
76 Okular::Document
* m_document
;
77 PageView
* m_pageView
;
78 PageViewToolBar
* m_toolBar
;
79 AnnotatorEngine
* m_engine
;
80 QDomElement m_toolsDefinition
;
81 QLinkedList
<AnnotationToolItem
> m_items
;
82 bool m_textToolsEnabled
;
85 // creation related variables
87 QRect m_lastDrawnRect
;
88 PageViewItem
* m_lockedItem
;
89 //selected annotation name
90 //QString m_selectedAnnotationName;