Miam-Player  0.8.0
A nice music player
pluginmanager.h
Go to the documentation of this file.
1 #ifndef PLUGINMANAGER_H
2 #define PLUGINMANAGER_H
3 
8 
9 #include <QDir>
10 
11 #include <QTableWidgetItem>
12 
13 #include "plugininfo.h"
14 
16 class MainWindow;
17 
23 class PluginManager : public QObject
24 {
25  Q_OBJECT
26 private:
28  MainWindow *_mainWindow;
29 
31  QMap<QString, BasicPlugin*> _loadedPlugins;
32 
34  QMultiMap<QString, QObject*> _dependencies;
35 
37  QMultiMap<QString, QObject*> _extensionPoints;
38 
39 public:
40  explicit PluginManager(MainWindow *parent);
41 
43  virtual ~PluginManager();
44 
46  void alertUser(const QStringList &failedPlugins);
47 
48  void init();
49 
50  inline QMultiMap<QString, QObject*> dependencies() const { return _dependencies; }
51  inline QMap<QString, BasicPlugin*> loadedPlugins() const { return _loadedPlugins; }
52 
54  bool loadPlugin(const QString &pluginAbsPath);
55 
57  void registerExtensionPoint(QPair<QString, QObjectList> ext);
58 
59  void unregisterExtensionPoint(const QString &ext);
60 
62  bool unloadPlugin(const QString &absFilePath);
63 
64 private:
65  void loadItemViewPlugin(ItemViewPlugin *itemViewPlugin);
66  void loadMediaPlayerPlugin(MediaPlayerPlugin *mediaPlayerPlugin);
67  void loadRemoteMediaPlayerPlugin(RemoteMediaPlayerPlugin *remoteMediaPlayerPlugin);
68  void loadTagEditorPlugin(TagEditorPlugin *tagEditorPlugin);
69 };
70 
71 #endif // PLUGINMANAGER_H
The RemoteMediaPlayerPlugin class.
Definition: remotemediaplayerplugin.h:18
The ItemViewPlugin class.
Definition: itemviewplugin.h:15
virtual ~PluginManager()
Definition: pluginmanager.cpp:21
void unregisterExtensionPoint(const QString &ext)
Definition: pluginmanager.cpp:158
void registerExtensionPoint(QPair< QString, QObjectList > ext)
Definition: pluginmanager.cpp:138
PluginManager(MainWindow *parent)
Definition: pluginmanager.cpp:15
QMap< QString, BasicPlugin * > loadedPlugins() const
Definition: pluginmanager.h:51
The MediaPlayerPlugin class.
Definition: mediaplayerplugin.h:15
The TagEditorPlugin class.
Definition: tageditorplugin.h:16
void alertUser(const QStringList &failedPlugins)
Definition: pluginmanager.cpp:76
The PluginManager class can dynamically load or unload plugins without restarting the application...
Definition: pluginmanager.h:23
QMultiMap< QString, QObject * > dependencies() const
Definition: pluginmanager.h:50
bool unloadPlugin(const QString &absFilePath)
Definition: pluginmanager.cpp:170
void init()
Definition: pluginmanager.cpp:35
The MainWindow class is the entry point of this audio player.
Definition: mainwindow.h:26
bool loadPlugin(const QString &pluginAbsPath)
Definition: pluginmanager.cpp:95