1 /*
2     SPDX-FileCopyrightText: 2012 Fabio D 'Urso <fabiodurso@hotmail.it>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #ifndef EDITANNOTTOOLDIALOG_H
8 #define EDITANNOTTOOLDIALOG_H
9 
10 #include <QDialog>
11 #include <QDomElement>
12 class KLineEdit;
13 class KComboBox;
14 class QLabel;
15 class QListWidget;
16 class QGroupBox;
17 class AnnotationWidget;
18 
19 namespace Okular
20 {
21 class Annotation;
22 }
23 
24 class EditAnnotToolDialog : public QDialog
25 {
26     Q_OBJECT
27 
28 public:
29     enum ToolType { ToolNoteLinked, ToolNoteInline, ToolInk, ToolStraightLine, ToolPolygon, ToolTextMarkup, ToolGeometricalShape, ToolStamp, ToolTypewriter };
30 
31     explicit EditAnnotToolDialog(QWidget *parent = nullptr, const QDomElement &initialState = QDomElement(), bool builtinTool = false);
32     ~EditAnnotToolDialog() override;
33     QString name() const;
34     QDomDocument toolXml() const;
35 
36 private:
37     void createStubAnnotation();
38     void rebuildAppearanceBox();
39     void updateDefaultNameAndIcon();
40     void setToolType(ToolType newType);
41     void loadTool(const QDomElement &toolElement);
42 
43     KLineEdit *m_name;
44     KComboBox *m_type;
45     QLabel *m_toolIcon;
46     QGroupBox *m_appearanceBox;
47 
48     Okular::Annotation *m_stubann;
49     AnnotationWidget *m_annotationWidget;
50 
51     bool m_builtinTool;
52 
53 private Q_SLOTS:
54     void slotTypeChanged();
55     void slotDataChanged();
56 };
57 
58 Q_DECLARE_METATYPE(EditAnnotToolDialog::ToolType)
59 
60 #endif // EDITANNOTTOOLDIALOG_H
61