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