File indexing completed on 2025-02-02 04:11:28
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <memory> 0010 0011 #include <QAbstractListModel> 0012 #include <QFontDatabase> 0013 0014 #include "model/document.hpp" 0015 0016 namespace glaxnimate::gui::font { 0017 0018 class FontModel : public QAbstractListModel 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 enum FontFilter { 0024 AllFonts = 0, 0025 ScalableFonts = 0x1, 0026 NonScalableFonts = 0x2, 0027 MonospacedFonts = 0x4, 0028 ProportionalFonts = 0x8 0029 }; 0030 Q_DECLARE_FLAGS(FontFilters, FontFilter) 0031 Q_FLAG(FontFilters) 0032 0033 explicit FontModel(QObject *parent = nullptr); 0034 ~FontModel(); 0035 0036 void set_document(model::Document* document); 0037 0038 int columnCount(const QModelIndex & parent) const override; 0039 int rowCount(const QModelIndex & parent) const override; 0040 QVariant data(const QModelIndex & index, int role) const override; 0041 0042 QStringList favourites() const; 0043 void set_favourites(const QStringList& faves); 0044 0045 0046 void set_writing_system(QFontDatabase::WritingSystem); 0047 QFontDatabase::WritingSystem writing_system() const; 0048 0049 0050 void set_font_filters(FontFilters filters); 0051 FontFilters font_filters() const; 0052 0053 QModelIndex index_for_font(const QString& family); 0054 0055 bool preview_font() const; 0056 void set_preview_font(bool preview); 0057 0058 void set_favourite(const QString& family, bool favourite); 0059 void toggle_favourite(const QString& family); 0060 0061 private: 0062 void reset(); 0063 0064 class Private; 0065 std::unique_ptr<Private> d; 0066 }; 0067 0068 } // namespace glaxnimate::gui::font