#include <QAction>
#include <QFileDialog>
#include <QMessageBox>
+#include <QApplication>
+
#include "DownloadView.h"
#include "SeedView.h"
"\nQt and Libtorrent."
"\n\nURL: http://qtrapids.garage.maemo.org/"
"\n\nAuthors:\nLassi Väätämöinen, lassi.vaatamoinen@ixonos.com"
- "\nDenis Zalievsky, denis.zalewsky@ixonos.com"
+ "\nDenis Zalevskiy, denis.zalewsky@ixonos.com"
"\n\nIxonos Plc, Finland\n"));
-
// Consturctor
MainWindow::MainWindow():
QMainWindow(), // Superclass
// TABWIDGET (central widget)
tabWidget_ = new QTabWidget();
+ tabWidget_->setTabsClosable(true);
/// @todo Exception handling
dlView_ = new DownloadView(this);
connect(&btSession_, SIGNAL(alert(std::auto_ptr<Alert>)),
this, SLOT(on_alert(std::auto_ptr<Alert>)));
+
+ LoadPlugins();
}
{
}
+// ===================== Implements PluginInterface =========================
+bool MainWindow::setGui(qtrapids::PluginInterface* from, QWidget* widget)
+{
+#ifdef QTRAPIDS_DEBUG
+ qDebug() << "MainWindow::setGui():" << dlView_->currentItem();
+#endif
+ tabWidget_->addTab(widget, tr("Search"));
+ return true;
+}
+
+/// @todo Add PluginInterface parameter check which plugin gives the widget to handle appropriately
+void MainWindow::addPluginWidget(qtrapids::PluginInterface* from, QWidget* widget)
+{
+#ifdef QTRAPIDS_DEBUG
+ qDebug() << "MainWindow::addPluginWidget():" << dlView_->currentItem();
+#endif
+
+ int index = tabWidget_->addTab(widget, tr("Test"));
+ tabWidget_->setCurrentIndex(index);
+ //layout_->addWidget(widget);
+}
+
+void MainWindow::addToolbar(qtrapids::PluginInterface* from, QWidget* widget)
+{
+}
+
+void MainWindow::addToolItem(qtrapids::PluginInterface* from, QWidget* widget)
+{
+}
+
+void MainWindow::addMenu(qtrapids::PluginInterface* from, QWidget* widget)
+{
+}
+
+void MainWindow::addMenuItem(qtrapids::PluginInterface* from, QWidget* widget)
+{
+}
+
+//=========================== PRIVATE ================================
+
+void MainWindow::LoadPlugins()
+{
+ /// @todo get plugin directory from settings or go through multiple diectories
+ /// Now we only check the application directory
+ pluginsDir_ = QDir(qApp->applicationDirPath());
+ pluginsDir_.cd("plugins");
+ QStringList nameFilters;
+ nameFilters << "*.so";
+
+ foreach (QString fileName, pluginsDir_.entryList(nameFilters, QDir::Files))
+ {
+ QPluginLoader pluginLoader(pluginsDir_.absoluteFilePath(fileName));
+
+ if (!QLibrary::isLibrary(fileName))
+ {
+ qDebug() << fileName << " not a library";
+ }
+
+ if (pluginLoader.load())
+ {
+ qDebug() << "Plugin loaded: " << fileName;
+ }
+ else
+ {
+ qDebug() << "Plugin load failed: " << pluginLoader.errorString();
+ }
+
+ QObject *baseInstance = pluginLoader.instance();
+ if (!baseInstance)
+ {
+ qDebug() << "Base instance = NULL.";
+ }
+
+ qtrapids::PluginInterface *plugin = qobject_cast<qtrapids::PluginInterface*>(baseInstance);
+
+ if (!plugin)
+ {
+ qDebug() << "Cast failed.";
+ }
+ else
+ {
+ plugin->initialize(this);
+ pluginFileNames_ += fileName;
+ }
+
+// QObject *plugin = pluginLoader.instance();
+// if (plugin) {
+// populateMenus(plugin);
+// pluginFileNames += fileName;
+// }
+
+ }
+
+ //pluginLoader_.setFileName("../libsearchplugin.so");
+
+
+
+
+}
+
// =========================== SLOTS =================================
void MainWindow::on_openAction_clicked()
{
void MainWindow::on_alert(std::auto_ptr<Alert> al)
{
-
-
if (al.get() != NULL)
{
// qDebug()
}
}
-
-
-
}
/*