Plugins.cpp

From Kenneth Noyens
Jump to: navigation, search

<source lang="cpp">

  1. include "plugins.h"
  2. include "ui_plugins.h"

Plugins::Plugins(QWidget *parent)

   : QDialog(parent), ui(new Ui::PluginsClass)

{

   ui->setupUi(this);
   loadPlugins();
   connect(ui->listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(itemSelected()));

}

Plugins::~Plugins() {

   delete ui;

}

void Plugins::itemSelected(void) {

   QList<QListWidgetItem *> items= ui->listWidget->selectedItems();
   QString name;
   if(items.count() != 0)
   {
       name = items.at(0)->text();
       QD << "item selected" << name;
       foreach(pluginInterface *plugin, plugins)
       {
           if(plugin->getName() == name)
           {
               ui->label->setText(QString("Plugin Text: %1").arg(plugin->getText()));
           }
       }
   }

}

void Plugins::loadPlugins(void) {

   QDir pluginsDir(QApplication::applicationDirPath());
   pluginsDir.cd("plugins");
   foreach (QString filename, pluginsDir.entryList(QDir::Files))
   {
       QPluginLoader loader(pluginsDir.absoluteFilePath(filename));
       if(pluginInterface *plugin = qobject_cast<pluginInterface *>(loader.instance()))
       {
           plugins.append(plugin);
           ui->listWidget->addItem(plugin->getName());
           QD << "plugin loaded: " << filename;
       }
       else QD << "failed loading plugin: " << filename;
   }

}

</source>