File indexing completed on 2024-04-28 15:51:43

0001 /*
0002     SPDX-FileCopyrightText: 2012 Fabio D 'Urso <fabiodurso@hotmail.it>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef EDITANNOTTOOLDIALOG_H
0008 #define EDITANNOTTOOLDIALOG_H
0009 
0010 #include <QDialog>
0011 #include <QDomElement>
0012 class KLineEdit;
0013 class KComboBox;
0014 class QLabel;
0015 class QListWidget;
0016 class QGroupBox;
0017 class AnnotationWidget;
0018 
0019 namespace Okular
0020 {
0021 class Annotation;
0022 }
0023 
0024 class EditAnnotToolDialog : public QDialog
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029     enum ToolType { ToolNoteLinked, ToolNoteInline, ToolInk, ToolStraightLine, ToolPolygon, ToolTextMarkup, ToolGeometricalShape, ToolStamp, ToolTypewriter };
0030 
0031     explicit EditAnnotToolDialog(QWidget *parent = nullptr, const QDomElement &initialState = QDomElement(), bool builtinTool = false);
0032     ~EditAnnotToolDialog() override;
0033     QString name() const;
0034     QDomDocument toolXml() const;
0035 
0036 private:
0037     void createStubAnnotation();
0038     void rebuildAppearanceBox();
0039     void updateDefaultNameAndIcon();
0040     void setToolType(ToolType newType);
0041     void loadTool(const QDomElement &toolElement);
0042 
0043     KLineEdit *m_name;
0044     KComboBox *m_type;
0045     QLabel *m_toolIcon;
0046     QGroupBox *m_appearanceBox;
0047 
0048     Okular::Annotation *m_stubann;
0049     AnnotationWidget *m_annotationWidget;
0050 
0051     bool m_builtinTool;
0052 
0053 private Q_SLOTS:
0054     void slotTypeChanged();
0055     void slotDataChanged();
0056 };
0057 
0058 Q_DECLARE_METATYPE(EditAnnotToolDialog::ToolType)
0059 
0060 #endif // EDITANNOTTOOLDIALOG_H