/****************************************************************************
**
-** Copyright (C) 2011 Takumi Asaki
+** Copyright (C) 2012 Takumi Asaki
** All rights reserved.
** Contact: Takumi Asaki (takumi.asaki@gmail.com)
**
#include <QList>
#include <QStringList>
#include <QMap>
+#include <QFont>
#include "fontsconfigproperties.h"
+class QUrl;
+
class InstalledFontInfo;
+class FontsConf;
class FontConfigManager : public QObject
{
Q_OBJECT
- Q_PROPERTY(QStringList families READ families NOTIFY familiesChanged)
- Q_PROPERTY(QStringList systemFamilies READ systemFamilies NOTIFY systemFamiliesChanged)
- Q_PROPERTY(QStringList localFamilies READ localFamilies NOTIFY localFamiliesChanged)
public:
explicit FontConfigManager(QObject *parent = 0);
QString localFontsConfPath() const;
void setLocalFontsConfPath(const QString &path);
+ bool localFontsConfExists() const;
+
bool hasUnknownConfig() const;
bool fontsConfModified() const;
-
- QStringList families() const;
- QStringList systemFamilies() const;
- QStringList localFamilies() const;
+ bool isEmptyLocalFontsConf() const;
QStringList fontCount(const QString &fontpath) const;
- InstalledFontInfo *fontInfo(const QString &family) const;
+ InstalledFontInfo *fontInfo(const QString &family, const QString &fullname = QString()) const;
InstalledFontInfo *fontInfo(int index) const;
int count() const;
QString localFontsConf() const;
+ QStringList preferFamilyFor(const QString &family) const;
+ QStringList acceptFamilyFor(const QString &family) const;
+ QStringList prependFamilyFor(const QString &family) const;
+ QStringList appendFamilyFor(const QString &family) const;
+
+ void addPreferFamily(const QString &family, const QString &value);
+ void addAcceptFamily(const QString &family, const QString &value);
+ void addPrependFamily(const QString &family, const QString &value);
+ void addAppendFamily(const QString &family, const QString &value);
+
+ void insertPreferFamily(const QString &family, const QString &value, int index);
+ void insertAcceptFamily(const QString &family, const QString &value, int index);
+ void insertPrependFamily(const QString &family, const QString &value, int index);
+ void insertAppendFamily(const QString &family, const QString &value, int index);
+
+ void removePreferFamily(const QString &family, const QString &value);
+ void removeAcceptFamily(const QString &family, const QString &value);
+ void removePrependFamily(const QString &family, const QString &value);
+ void removeAppendFamily(const QString &family, const QString &value);
+
+ bool isConflict(const QString &family, const QStringList &lang) const;
+ QStringList systemPreferFamilyFor(const QString &family) const;
+
+ void importSystemSettings(const QString &family);
+
+ void createRecommendedSettings();
+
+ QStringList installableFamily(const QString &family, bool localOnly = false);
+
+ QString localeFamily(const QString &family) const;
+
private:
- void appendFontPropertyBool(const QString &config, FontsConfigProperties::ConfigValue value, FontsConfigProperties *prop, const QStringList &familyList = QStringList());
- bool fontPropertyBoolValue(const QString &config, bool value, const QString &family, const QStringList &familyList) const;
+ bool maybeSansSerifFont(InstalledFontInfo *info) const;
+ bool maybeSerifFont(InstalledFontInfo *info) const;
+ bool maybeMonospaceFont(InstalledFontInfo *info) const;
+ QFont font4info(InstalledFontInfo *info, int pointSize) const;
signals:
void fcCacheFinished();
- void familiesChanged();
- void systemFamiliesChanged();
- void localFamiliesChanged();
-
+ void localFontsConfExistsChanged();
void localFontsConfPathChanged();
- void warning(const QString &message);
+ void startUpdateFontsConfig();
+ void endUpdateFontsConfig();
+ void fontListUpdated();
+ void fontsConfUpdated();
-private slots:
- void clearFontProperties();
+ void warning(const QString &message);
public slots:
void runFcCache();
void readFcList();
void readFontsConf();
void saveFontsConf();
+ void backupFontsConf(const QString &filepath);
+ void restoreFontsConf(const QString &filepath);
+
+ void resetFontsConf();
private:
QString mLang;
QString mLocalFontPath;
QString mLocalFontsConfPath;
QList<InstalledFontInfo *> mFcListInfo;
- QStringList mFamilies;
- QStringList mSystemFamilies;
- QStringList mLocalFamilies;
- bool mHasUnknownConfig;
- bool mFontsConfModified;
-
- QMap<QString, QStringList> mPreferFontListMap;
- QMap<QString, QStringList> mMatchFontListMap;
+ QMap<QString, QString> mEnLocaleFontMap;
+
+ FontsConf *mLocalFontsConf;
+ FontsConf *mSystemLocalConf;
+
+ QList<QStringList> mConflictFonts;
};
#endif // FONTCONFIGMANAGER_H