File indexing completed on 2024-05-19 12:18:02
0001 /* 0002 SPDX-FileCopyrightText: 2004 Albert Astals Cid <aacid@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef _PROPERTIESDIALOG_H_ 0008 #define _PROPERTIESDIALOG_H_ 0009 0010 #include <QAbstractItemModel> 0011 #include <QList> 0012 0013 #include <KPageDialog> 0014 0015 #include "core/fontinfo.h" 0016 0017 class QLabel; 0018 class QProgressBar; 0019 class FontsListModel; 0020 class PageSizesModel; 0021 0022 namespace Okular 0023 { 0024 class Document; 0025 } 0026 0027 class PropertiesDialog : public KPageDialog 0028 { 0029 Q_OBJECT 0030 0031 public: 0032 PropertiesDialog(QWidget *parent, Okular::Document *doc); 0033 ~PropertiesDialog() override; 0034 0035 private Q_SLOTS: 0036 void pageChanged(KPageWidgetItem *, KPageWidgetItem *); 0037 void slotFontReadingProgress(int page); 0038 void slotFontReadingEnded(); 0039 void reallyStartFontReading(); 0040 void showFontsMenu(const QPoint pos); 0041 0042 private: 0043 Okular::Document *m_document; 0044 KPageWidgetItem *m_fontPage; 0045 FontsListModel *m_fontModel; 0046 PageSizesModel *m_pageSizesModel; 0047 QLabel *m_fontInfo; 0048 QProgressBar *m_fontProgressBar; 0049 bool m_fontScanStarted; 0050 }; 0051 0052 class FontsListModel : public QAbstractTableModel 0053 { 0054 Q_OBJECT 0055 0056 public: 0057 explicit FontsListModel(QObject *parent = nullptr); 0058 ~FontsListModel() override; 0059 0060 // reimplementations from QAbstractTableModel 0061 int columnCount(const QModelIndex &parent = QModelIndex()) const override; 0062 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0063 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 0064 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0065 0066 public Q_SLOTS: 0067 void addFont(const Okular::FontInfo &fi); 0068 0069 private: 0070 QList<Okular::FontInfo> m_fonts; 0071 }; 0072 0073 class PageSizesModel : public QAbstractTableModel 0074 { 0075 Q_OBJECT 0076 0077 public: 0078 explicit PageSizesModel(QObject *parent = nullptr, Okular::Document *doc = nullptr); 0079 ~PageSizesModel() override; 0080 0081 // reimplementations from QAbstractTableModel 0082 int columnCount(const QModelIndex &parent = QModelIndex()) const override; 0083 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0084 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 0085 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0086 0087 private: 0088 Okular::Document *m_document; 0089 }; 0090 0091 #endif 0092 0093 /* kate: replace-tabs on; indent-width 4; */