36 m_pluginPath = QProcessEnvironment::systemEnvironment().value(
"KRITA_PLUGIN_PATH");
43 QDir appDir(qApp->applicationDirPath());
57 Q_FOREACH (
const QDir& dir, searchDirs) {
64 Q_FOREACH (
const QFileInfo &info, dir.entryInfoList(nameFilters, QDir::Dirs | QDir::NoDotAndDotDot)) {
66 if (info.fileName().contains(
"PlugIns")) {
70 else if (info.fileName().contains(
"lib")) {
72 if (info.fileName().contains(
"lib")) {
74 QDir libDir(info.absoluteFilePath());
77#if defined(Q_PROCESSOR_ARM_64)
78 libDir.cd(
"arm64-v8a");
79#elif defined(Q_PROCESSOR_ARM)
80 libDir.cd(
"armeabi-v7a");
81#elif defined(Q_PROCESSOR_X86_64)
83#elif defined(Q_PROCESSOR_x86)
90 if (libDir.cd(
"kritaplugins")) {
98 Q_FOREACH (
const QFileInfo &subInfo, libDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) {
99 QDir subDir(subInfo.absoluteFilePath());
100 if (subDir.cd(
"kritaplugins")) {
142 QDirIterator dirIter(
m_pluginPath, QDirIterator::Subdirectories);
143 while (dirIter.hasNext()) {
147 if (dirIter.fileInfo().isFile() && dirIter.fileName().startsWith(
"lib_krita")) {
148#elif defined(_MSC_VER)
149 if (dirIter.fileInfo().isFile() && dirIter.fileName().startsWith(
"krita") && !dirIter.fileName().endsWith(
".pdb") && !dirIter.fileName().endsWith(
".lib")) {
151 if (dirIter.fileInfo().isFile() && dirIter.fileName().startsWith(
"krita") && !dirIter.fileName().endsWith(
".debug")) {
155 std::unique_ptr<QPluginLoader> loader(
new QPluginLoader(dirIter.filePath()));
156 QJsonObject json = loader->metaData().value(
"MetaData").toObject();
158 dbgPlugins << json << json.value(
"X-KDE-ServiceTypes");
160 if (json.isEmpty()) {
161 qWarning() << dirIter.filePath() <<
"has no json!";
164 QJsonArray serviceTypes = json.value(
"X-KDE-ServiceTypes").toArray();
165 if (serviceTypes.isEmpty()) {
166 qWarning() << dirIter.fileName() <<
"has no X-KDE-ServiceTypes";
170 QStringList mimeTypes = json.value(
"X-KDE-ExtraNativeMimeTypes").toString().split(
',');
171 mimeTypes += json.value(
"MimeType").toString().split(
';');
172 mimeTypes += json.value(
"X-KDE-NativeMimeType").toString();
175 cacheEntry.
filePath = dirIter.filePath();
QSharedPointer< QPluginLoader > loader