File indexing completed on 2024-05-12 04:46:56
0001 #include "fontpickermodel.h" 0002 0003 #include <QDebug> 0004 0005 FontPickerModel::FontPickerModel(QObject* parent) : QObject(parent) 0006 ,m_writingSystem(QFontDatabase::Any) 0007 ,m_onlyMonospaced(false) 0008 { 0009 } 0010 0011 QStringList FontPickerModel::fontsModel() 0012 { 0013 auto fonts = m_fontDatabase.families(m_writingSystem); 0014 0015 if(m_onlyMonospaced) 0016 { 0017 QStringList res; 0018 foreach (const QString &family, fonts) 0019 { 0020 if (m_fontDatabase.isFixedPitch(family)) 0021 { 0022 res << family; 0023 } 0024 } 0025 0026 return res; 0027 } 0028 0029 return fonts; 0030 } 0031 0032 QFont FontPickerModel::font() 0033 { 0034 return m_font; 0035 } 0036 0037 bool FontPickerModel::onlyMonospaced() 0038 { 0039 return m_onlyMonospaced; 0040 } 0041 0042 void FontPickerModel::setFont(const QFont& font) 0043 { 0044 if(m_font == font) 0045 return; 0046 0047 m_font = font; 0048 Q_EMIT fontChanged(); 0049 Q_EMIT sizesChanged(); 0050 Q_EMIT stylesChanged(); 0051 } 0052 0053 void FontPickerModel::setOnlyMonospaced(bool value) 0054 { 0055 if(m_onlyMonospaced == value) 0056 return; 0057 0058 m_onlyMonospaced = value; 0059 Q_EMIT onlyMonospacedChanged(); 0060 Q_EMIT fontsModelChanged(); 0061 } 0062 0063 void FontPickerModel::setWritingSystem(QFontDatabase::WritingSystem value) 0064 { 0065 if(m_writingSystem == value) 0066 return; 0067 0068 m_writingSystem = value; 0069 Q_EMIT writingSystemChanged(); 0070 Q_EMIT fontsModelChanged(); 0071 } 0072 0073 QStringList FontPickerModel::sizes() 0074 { 0075 QStringList res; 0076 0077 for(auto value : m_fontDatabase.smoothSizes(m_font.family(), m_font.styleName())) 0078 { 0079 res << QString::number(value); 0080 } 0081 0082 return res; 0083 } 0084 0085 QStringList FontPickerModel::styles() 0086 { 0087 return m_fontDatabase.styles(m_font.family()); 0088 } 0089 0090 QFontDatabase::WritingSystem FontPickerModel::writingSystem() 0091 { 0092 return m_writingSystem; 0093 } 0094 0095 void FontPickerModel::updateModel() 0096 { 0097 Q_EMIT sizesChanged(); 0098 Q_EMIT stylesChanged(); 0099 } 0100 0101 QString FontPickerModel::fontToString() 0102 { 0103 return m_font.toString(); 0104 } 0105 0106 void FontPickerModel::setFont(const QString& desc) 0107 { 0108 QFont font; 0109 0110 if(!font.fromString(desc)) 0111 { 0112 qWarning() << "Failed to set QFont from desc" << desc; 0113 return; 0114 } 0115 0116 setFont(font); 0117 } 0118 0119 0120 0121 0122 0123 0124 0125