OSDN Git Service

Version 0.5
[fontmanager/fontmanager.git] / fontconfigmanager.h
index c06fbb1..98a439e 100644 (file)
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** 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);
 
@@ -66,16 +67,15 @@ public:
     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;
 
@@ -86,43 +86,77 @@ public:
 
     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