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