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

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; */