3 #include <QFontDatabase>
5 #include <QMutexLocker>
12 #define LOC QString("MythFontManager: ")
29 const QString ®isteredFor)
31 int maxDirs = MAX_DIRS;
32 LoadFonts(directory, registeredFor, &maxDirs);
48 const QString ®isteredFor,
int *maxDirs)
50 if (directory.isEmpty() || directory ==
"/" || registeredFor.isEmpty())
55 LOG(VB_GENERAL, LOG_WARNING,
LOC +
56 "Reached the maximum directory depth "
57 "for a font directory structure. Terminating font scan.");
65 QFileInfoList files = dir.entryInfoList();
67 for (QFileInfoList::const_iterator it = files.begin();
68 ((it != files.end()) && (*maxDirs > 0)); ++it)
73 if (!info.baseName().isEmpty() && info.isDir())
74 LoadFonts(info.absoluteFilePath(), registeredFor, maxDirs);
86 if (registeredFor.isEmpty())
89 QMutexLocker locker(&
m_lock);
96 LOG(VB_FILE, LOG_DEBUG,
LOC +
97 QString(
"Removing application font '%1'")
103 if (QFontDatabase::removeApplicationFont(fontRef->
GetFontID()))
105 LOG(VB_FILE, LOG_DEBUG,
LOC +
106 QString(
"Successfully removed application font '%1'")
111 LOG(VB_GENERAL, LOG_WARNING,
LOC +
112 QString(
"Unable to remove application font '%1'")
135 const QString ®isteredFor)
137 if (directory.isEmpty() || directory ==
"/" || registeredFor.isEmpty())
140 LOG(VB_FILE, LOG_DEBUG,
LOC +
141 QString(
"Scanning directory '%1' for font files.").arg(directory));
144 QStringList nameFilters = QStringList() <<
"*.ttf" <<
"*.otf" <<
"*.ttc";
145 QStringList fontFiles = dir.entryList(nameFilters);
146 for (QStringList::const_iterator it = fontFiles.begin();
147 it != fontFiles.end(); ++it)
160 const QString ®isteredFor)
162 if (fontPath.isEmpty() || fontPath ==
"/" || registeredFor.isEmpty())
165 QMutexLocker locker(&
m_lock);
168 LOG(VB_GUI | VB_FILE, LOG_INFO,
LOC +
169 QString(
"Font file '%1' already loaded")
174 LOG(VB_GUI | VB_FILE, LOG_INFO,
LOC +
175 QString(
"Unable to load font(s) in file '%1'")
181 LOG(VB_GUI | VB_FILE, LOG_INFO,
LOC +
182 QString(
"Loading font file: '%1'").arg(fontPath));
184 int result = QFontDatabase::addApplicationFont(fontPath);
187 LOG(VB_GUI | VB_FILE, LOG_DEBUG,
LOC +
188 QString(
"In file '%1', found font(s) '%2'")
190 .arg(QFontDatabase::applicationFontFamilies(result)
195 LOG(VB_GENERAL, LOG_WARNING,
LOC +
196 QString(
"Unable to register font(s) in file '%1'")
202 LOG(VB_GENERAL, LOG_WARNING,
LOC +
203 QString(
"Unable to load font(s) in file '%1'")
216 const QString ®isteredFor,
222 QList<MythFontReference*> values;
224 if (values.isEmpty())
246 return !values.isEmpty();
262 const QString ®isteredFor,
264 m_fontPath(fontPath), m_registeredFor(registeredFor), m_fontID(fontID)