- Added PluginInterface and SearchPlugin
[qtrapids] / src / plugins / searchplugin / SearchPlugin.cpp
diff --git a/src/plugins/searchplugin/SearchPlugin.cpp b/src/plugins/searchplugin/SearchPlugin.cpp
new file mode 100644 (file)
index 0000000..656b5f9
--- /dev/null
@@ -0,0 +1,77 @@
+#include <QDebug>
+#include <QtCore/qplugin.h>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QComboBox>
+#include <QLineEdit>
+#include <QPushButton>
+#include <QUrl>
+#include <QWebView>
+
+
+#include "SearchPlugin.h"
+
+namespace qtrapids
+{
+       SearchPlugin::SearchPlugin() : 
+               comboBox_(NULL), searchLine_(NULL), searchButton_(NULL), host_(NULL)
+       {
+               // TODO: Parse engine descriptions.
+               // -Add engines to model
+               // -Show model in comboBox
+       
+       }
+       
+       void SearchPlugin::initialize(PluginHostInterface* host)
+       {
+               host_ = host;
+               
+               if (host_ != NULL) {
+                       
+                       QWidget *pluginWidget = new QWidget;
+                       QVBoxLayout *vbox = new QVBoxLayout;
+                       QHBoxLayout *hbox = new QHBoxLayout;
+                       comboBox_ = new QComboBox;
+                       searchLine_ = new QLineEdit;
+                       searchButton_ = new QPushButton("Search");
+                       
+                       hbox->addWidget(searchLine_);
+                       hbox->addWidget(searchButton_);
+                       vbox->addWidget(comboBox_);
+                       vbox->addLayout(hbox);
+                       pluginWidget->setLayout(vbox);
+       
+                       connect(searchButton_, SIGNAL(clicked()), this, SLOT(on_searchButton_clicked()));
+                       //connect(this, SIGNAL(searchResult(QWidget*)), this, SLOT(on_searchResult(QWidget*)));
+                       
+                       host_->setGui(pluginWidget);
+               }
+       }
+       
+       QWidget* SearchPlugin::getGui()
+       {
+               return NULL;
+       }
+       
+       void SearchPlugin::on_searchButton_clicked()
+       {
+               QUrl searchUrl(QString("http://www.google.fi/search?q="
+                       + searchLine_->text()));
+               qDebug() << searchUrl;
+               QWebView *result = new QWebView;
+               result->load(searchUrl);
+               
+               on_searchResult((QWidget*)result);
+       }
+       
+       void SearchPlugin::on_searchResult(QWidget* resultWidget)
+       {
+               qDebug() << "on_searchResult()";
+               if (host_) {
+                       host_->addPluginWidget(resultWidget);
+               }
+       }
+
+} // namespace qtrapids
+
+Q_EXPORT_PLUGIN2(searchplugin, qtrapids::SearchPlugin)