diff options
Diffstat (limited to 'src/views/versioncontrol')
| -rw-r--r-- | src/views/versioncontrol/fileviewversioncontrolplugin.desktop | 1 | ||||
| -rw-r--r-- | src/views/versioncontrol/kversioncontrolplugin.h | 23 | ||||
| -rw-r--r-- | src/views/versioncontrol/versioncontrolobserver.cpp | 37 |
3 files changed, 36 insertions, 25 deletions
diff --git a/src/views/versioncontrol/fileviewversioncontrolplugin.desktop b/src/views/versioncontrol/fileviewversioncontrolplugin.desktop index 4c33b3b2c..5cffe9aac 100644 --- a/src/views/versioncontrol/fileviewversioncontrolplugin.desktop +++ b/src/views/versioncontrol/fileviewversioncontrolplugin.desktop @@ -43,6 +43,7 @@ Comment[sr@ijekavian]=Прикључак управљања верзијама � Comment[sr@ijekavianlatin]=Priključak upravljanja verzijama za fajl prikaze Comment[sr@latin]=Priključak upravljanja verzijama za fajl prikaze Comment[sv]=Insticksprogram för versionskontroll i filvyer +Comment[ta]=கோப்புக் காட்சிகளுக்கான பதிப்புக் கட்டுப்பாட்டு (version control) செருகுநிரல் Comment[tr]=Dosya Görünümleri için Sürüm Kontrol Eklentisi Comment[uk]=Додаток керування версіями для панелей перегляду файлів Comment[vi]=Phần cài cắm "Quản lí phiên bản" cho khung xem tệp diff --git a/src/views/versioncontrol/kversioncontrolplugin.h b/src/views/versioncontrol/kversioncontrolplugin.h index aeac5ad29..c908be247 100644 --- a/src/views/versioncontrol/kversioncontrolplugin.h +++ b/src/views/versioncontrol/kversioncontrolplugin.h @@ -23,14 +23,15 @@ class KFileItem; * steps are required (in the example below it is assumed that a plugin for * Subversion will be written): * - * - Create a fileviewsvnplugin.desktop file with the following content: + * - Create a fileviewsvnplugin.json file with the following content: * <code> - * [Desktop Entry] - * Type=Service - * Name=Subversion - * X-KDE-ServiceTypes=FileViewVersionControlPlugin - * MimeType=text/plain; - * X-KDE-Library=fileviewsvnplugin + * { + * "KPlugin": { + * "Description": "The svn plugin", + * "Name": "Svn" + * } + * } + * </code> * * - Create a class FileViewSvnPlugin derived from KVersionControlPlugin and @@ -45,15 +46,13 @@ class KFileItem; * <code> * #include <KPluginFactory> * #include <KPluginLoader> - * K_PLUGIN_FACTORY(FileViewSvnPluginFactory, registerPlugin<FileViewSvnPlugin>();) - * K_EXPORT_PLUGIN(FileViewSvnPluginFactory("fileviewsvnplugin")) + * K_PLUGIN_CLASS_WITH_JSON(FileViewSvnPlugin, "fileviewsvnplugin.json") * </code> * * - Add the following lines to your CMakeLists.txt file: * <code> - * kde4_add_plugin(fileviewsvnplugin fileviewsvnplugin.cpp) - * target_link_libraries(fileviewsvnplugin konq) - * install(FILES fileviewsvnplugin.desktop DESTINATION ${SERVICES_INSTALL_DIR}) + * kcoreaddons_add_plugin(fileviewsvnplugin SOURCES fileviewsvnplugin.cpp INSTALL_NAMESPACE "dolphin/vcs") + * target_link_libraries(fileviewsvnplugin DolphinVcs) * </code> * * General implementation notes: diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp index cf5be3c91..9c18c6794 100644 --- a/src/views/versioncontrol/versioncontrolobserver.cpp +++ b/src/views/versioncontrol/versioncontrolobserver.cpp @@ -15,6 +15,8 @@ #include <KLocalizedString> #include <KService> #include <KServiceTypeTrader> +#include <KPluginLoader> +#include <KPluginMetaData> #include <QTimer> @@ -279,24 +281,33 @@ void VersionControlObserver::initPlugins() // all fileview version control plugins and remember them in 'plugins'. const QStringList enabledPlugins = VersionControlSettings::enabledPlugins(); - const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("FileViewVersionControlPlugin")); - for (KService::List::ConstIterator it = pluginServices.constBegin(); it != pluginServices.constEnd(); ++it) { - if (enabledPlugins.contains((*it)->name())) { - KVersionControlPlugin* plugin = (*it)->createInstance<KVersionControlPlugin>(this); - if (plugin) { - connect(plugin, &KVersionControlPlugin::itemVersionsChanged, - this, &VersionControlObserver::silentDirectoryVerification); - connect(plugin, &KVersionControlPlugin::infoMessage, - this, &VersionControlObserver::infoMessage); - connect(plugin, &KVersionControlPlugin::errorMessage, - this, &VersionControlObserver::errorMessage); - connect(plugin, &KVersionControlPlugin::operationCompletedMessage, - this, &VersionControlObserver::operationCompletedMessage); + const QVector<KPluginMetaData> plugins = KPluginLoader::findPlugins(QStringLiteral("dolphin/vcs")); + + QSet<QString> loadedPlugins; + for (const auto &p : plugins) { + if (enabledPlugins.contains(p.name())) { + KPluginLoader loader(p.fileName()); + KPluginFactory *factory = loader.factory(); + KVersionControlPlugin *plugin = factory->create<KVersionControlPlugin>(); + if (plugin) { m_plugins.append(plugin); + loadedPlugins += p.name(); } } } + + for (auto &plugin : qAsConst(m_plugins)) { + connect(plugin, &KVersionControlPlugin::itemVersionsChanged, + this, &VersionControlObserver::silentDirectoryVerification); + connect(plugin, &KVersionControlPlugin::infoMessage, + this, &VersionControlObserver::infoMessage); + connect(plugin, &KVersionControlPlugin::errorMessage, + this, &VersionControlObserver::errorMessage); + connect(plugin, &KVersionControlPlugin::operationCompletedMessage, + this, &VersionControlObserver::operationCompletedMessage); + } + m_pluginsInitialized = true; } } |
