| 11 | } |
| 12 | |
| 13 | void PluginManager::LoadPlugins() |
| 14 | { |
| 15 | // Get the Plugins directory relative to the executable |
| 16 | QString appDir = QCoreApplication::applicationDirPath(); |
| 17 | QString pluginsDir = appDir + "/Plugins"; |
| 18 | |
| 19 | QDir dir(pluginsDir); |
| 20 | if (!dir.exists()) |
| 21 | { |
| 22 | qWarning() << "PluginManager: Plugins directory not found:" << pluginsDir; |
| 23 | return; |
| 24 | } |
| 25 | |
| 26 | // Find all DLL files |
| 27 | QStringList filters; |
| 28 | #ifdef _WIN32 |
| 29 | filters << "*.dll"; |
| 30 | #elif defined(__APPLE__) |
| 31 | filters << "*.dylib"; |
| 32 | #else |
| 33 | filters << "*.so"; |
| 34 | #endif |
| 35 | |
| 36 | dir.setNameFilters(filters); |
| 37 | QFileInfoList files = dir.entryInfoList(QDir::Files); |
| 38 | |
| 39 | qDebug() << "PluginManager: Scanning for plugins in:" << pluginsDir; |
| 40 | qDebug() << "PluginManager: Found" << files.count() << "potential plugin(s)"; |
| 41 | |
| 42 | for (const QFileInfo& fileInfo : files) |
| 43 | { |
| 44 | LoadPlugin(fileInfo.absoluteFilePath()); |
| 45 | } |
| 46 | |
| 47 | qDebug() << "PluginManager: Loaded" << m_plugins.count() << "plugin(s)"; |
| 48 | } |
| 49 | |
| 50 | bool PluginManager::LoadPlugin(const QString& path) |
| 51 | { |