ctkPluginManager.cxx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * ctkPluginManager.cxx
  3. *
  4. * Created on: Mar 11, 2010
  5. * Author: zelzer
  6. */
  7. #include "ctkPluginManager.h"
  8. #include <QDirIterator>
  9. #include <QDebug>
  10. #include <QLibrary>
  11. namespace ctk {
  12. class PluginManagerPrivate
  13. {
  14. public:
  15. QList<QString> pluginPaths;
  16. };
  17. PluginManager::PluginManager()
  18. : d_ptr(new PluginManagerPrivate())
  19. {
  20. }
  21. PluginManager::~PluginManager()
  22. {
  23. Q_D(PluginManager);
  24. delete d;
  25. }
  26. void PluginManager::addSearchPath(const QString & searchPath)
  27. {
  28. Q_D(PluginManager);
  29. d->pluginPaths.push_back(searchPath);
  30. }
  31. void PluginManager::startAllPlugins()
  32. {
  33. Q_D(PluginManager);
  34. QDirIterator it(d->pluginPaths.front(), QDir::Files);
  35. while (it.hasNext()) {
  36. QString libName(it.next());
  37. QLibrary lib(libName);
  38. QFileInfo fileInfo(libName);
  39. QString libBaseName(fileInfo.baseName());
  40. if (libBaseName.startsWith("lib"))
  41. {
  42. libBaseName.remove(0, 3);
  43. }
  44. qDebug() << libBaseName;
  45. lib.load();
  46. qDebug() << "lib loaded: " << lib.isLoaded();
  47. QString xyz = QString(":/") + libBaseName + "/servicedescriptor.xml";
  48. //QString xyz = ":/servicedescriptor.xml";
  49. qDebug() << "resource string: " << xyz;
  50. QFile serviceDescriptor(xyz);
  51. qDebug() << "file exists: " << serviceDescriptor.exists();
  52. qDebug() << "open returns:" << serviceDescriptor.open(QIODevice::ReadOnly);
  53. qDebug() << "file open: " << serviceDescriptor.isOpen();
  54. qDebug() << "file is readable: " << serviceDescriptor.isReadable();
  55. QByteArray serviceBA = serviceDescriptor.readAll();
  56. qDebug() << serviceBA;
  57. lib.unload();
  58. }
  59. }
  60. }