File indexing completed on 2024-12-01 13:50:26
0001 /*************************************************************************** 0002 pluginloader.h - description 0003 ------------------- 0004 begin : Sun Oct 7 2007 0005 copyright : (C) 2007 by Dominik Seichter 0006 email : domseichter@web.de 0007 ***************************************************************************/ 0008 0009 /*************************************************************************** 0010 * * 0011 * This program is free software; you can redistribute it and/or modify * 0012 * it under the terms of the GNU General Public License as published by * 0013 * the Free Software Foundation; either version 2 of the License, or * 0014 * (at your option) any later version. * 0015 * * 0016 ***************************************************************************/ 0017 0018 #ifndef PLUGIN_LOADER_H 0019 #define PLUGIN_LOADER_H 0020 0021 #include <QHash> 0022 #include <QList> 0023 #include <QMap> 0024 0025 class Plugin; 0026 class KConfigGroup; 0027 class KRenameImpl; 0028 0029 class PluginLoader 0030 { 0031 public: 0032 ~PluginLoader(); 0033 0034 static PluginLoader *Instance(); 0035 0036 /** Find a plugin that supports a certain token 0037 * 0038 * This works only for plugins of the type ePluginType_Token 0039 * 0040 * @param token a token 0041 * @returns a plugin or NULL 0042 */ 0043 Plugin *findPlugin(const QString &token); 0044 0045 /** Find a plugin by its name 0046 * 0047 * @param name as returned by Plugin::name() 0048 * @returns a plugin or NULL 0049 */ 0050 Plugin *findPluginByName(const QString &name); 0051 0052 /** A read-only list of all plugins 0053 * 0054 * @returns a list of all plugins; 0055 */ 0056 inline const QList<Plugin *> &plugins() const 0057 { 0058 return m_plugins; 0059 } 0060 0061 /** This maybe called by plugins, 0062 * if a setting in their UI was changed 0063 * so that the preview in KRename 0064 * should be updated. 0065 */ 0066 void sendUpdatePreview(); 0067 0068 /** Save the plugin configuration. 0069 * 0070 * Called when plugins should save their configuration. 0071 * 0072 * @param group config group where the configuration should be stored 0073 */ 0074 void saveConfig(KConfigGroup &group); 0075 0076 /** Load the plugin configuration. 0077 * 0078 * Called when plugins should load their configuration. 0079 * 0080 * @param group config group where the configuration should be read from 0081 */ 0082 void loadConfig(KConfigGroup &group); 0083 0084 void registerForUpdates(KRenameImpl *kreanme); 0085 void deregisterForUpdates(KRenameImpl *kreanme); 0086 0087 private: 0088 PluginLoader(); 0089 0090 /** Clear the plugin loader. 0091 * I.e reset the object to its initial state and unload all plugins 0092 */ 0093 void clear(); 0094 0095 /** Load all plugins 0096 */ 0097 void load(); 0098 0099 private: 0100 0101 static PluginLoader *s_instance; ///< The handle to the only pluginloader instance 0102 QList<Plugin *> m_plugins; ///< The list of all plugins 0103 0104 QMap<QString, Plugin *> m_tokenMap; ///< All supported tokens in brackets are listed here 0105 QHash<QString, Plugin *> m_tokenCache; ///< All used tokens are listed here 0106 0107 QList<KRenameImpl *> m_observers; ///< A list of KRenameImpls that should be notified on updates 0108 }; 0109 0110 #endif // PLUGIN_LOADER_H