summaryrefslogtreecommitdiffstats
path: root/NetworkDiscovery/ndgui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'NetworkDiscovery/ndgui.cpp')
-rw-r--r--NetworkDiscovery/ndgui.cpp267
1 files changed, 267 insertions, 0 deletions
diff --git a/NetworkDiscovery/ndgui.cpp b/NetworkDiscovery/ndgui.cpp
new file mode 100644
index 0000000..bf3b05e
--- /dev/null
+++ b/NetworkDiscovery/ndgui.cpp
@@ -0,0 +1,267 @@
+#include "ndgui.h"
+
+ndgui::ndgui(QMainWindow *parent) :
+ QMainWindow(parent) {
+
+ _tag = "[nd:ndgui]";
+
+ _started = false;
+ _userChoice = false;
+
+ createAction();
+
+ connect(&networkDiscovery, SIGNAL(addInterface(const QString &)), this, SLOT(addInterface( const QString &)));
+ connect(&networkDiscovery, SIGNAL(changeProgressBarValue(const QString & , const int& )), this, SLOT(updateIfProgressBar(const QString & , const int&)));
+ connect(&networkDiscovery, SIGNAL(connectionEstablished(QString)), this, SLOT(handleConnectionEstablished(QString)));
+ connect(&networkDiscovery, SIGNAL(abortBoot(QString)), this, SLOT(abortBoot(const QString)));
+ connect(&networkDiscovery, SIGNAL(updateStatusLabel(QString,QString)), this, SLOT(updateIfStatus(const QString &, const QString &)));
+ connect(&networkDiscovery, SIGNAL(allProcessesFinished()), this, SLOT(handleAllProcessesFinished()));
+ connect(&networkDiscovery, SIGNAL(continueBoot(QString, int)), this, SLOT(continueBoot(QString, int)));
+
+
+
+ _webView = new QWebView(this);
+ connect(_webView->page()->mainFrame(), SIGNAL(
+ javaScriptWindowObjectCleared()), this, SLOT(attachToDOM()));
+ setCentralWidget(_webView);
+ setWindowTitle(tr("NetD"));
+ setAttribute(Qt::WA_QuitOnClose, true);
+ setWindowFlags(Qt::FramelessWindowHint);
+
+ _webView->load(QUrl("qrc:html/networkdiscovery_userchoice.html"));
+ _webView->show();
+
+ QTimer::singleShot(2000, this, SLOT(prepareNetworkDiscover()));
+
+}
+
+
+
+ndgui::~ndgui() {
+
+}
+
+
+
+void ndgui::createAction() {
+ _allowUserChoice = new QAction(tr("&quit"), this);
+ _allowUserChoice->setShortcut(QKeySequence(Qt::Key_F5));
+ connect(_allowUserChoice, SIGNAL(triggered()), this, SLOT(setUserChoiceTrue()));
+ this->addAction(_allowUserChoice);
+}
+
+
+
+void ndgui::setUserChoiceTrue() {
+ _userChoice = true;
+}
+
+
+
+void ndgui::prepareNetworkDiscover() {
+ connect(_webView, SIGNAL(loadFinished(bool)), this,
+ SLOT(startNetworkDiscovery()));
+ this->removeAction(_allowUserChoice);
+
+ _webView->load(QUrl("qrc:html/networkdiscovery.html"));
+ _webView->show();
+}
+
+
+
+void ndgui::startNetworkDiscovery(){
+
+ disconnect(_webView,SIGNAL(loadFinished(bool)), this, SLOT(startNetworkDiscovery()));
+ if(!_started) {
+ _started = true;
+ networkDiscovery.initAndRun("209.85.148.105", _userChoice, true, "/var/tmp/logfile","/var/tmp/qt_c_socket_custom");
+ }
+ else {
+ qDebug() << _tag << "NetworkDiscovery already started";
+ }
+}
+
+
+
+void ndgui::handleConnectionEstablished(QString ifName) {
+ _ifNameList.append(ifName);
+}
+
+
+
+void ndgui::handleAllProcessesFinished() {
+ qDebug() << _tag << "all Processes finished";
+ if(_ifNameList.size() > 0) {
+ QString jsonArr = "[";
+ for(int i = 0; i < _ifNameList.size()-1; i++) {
+ jsonArr += "\"" + _ifNameList.value(i) + "\",";
+ }
+ jsonArr += "\"" + _ifNameList.last() + "\"]";
+ chooseInterfaceDialog(jsonArr);
+ } else {
+ abortBoot("No usable interfaces found!");
+ }
+}
+
+
+
+void ndgui::restartSystem() {
+
+}
+
+
+
+void ndgui::shutDownSystem() {
+
+}
+
+
+
+void ndgui::continueBoot(QString ifName, int userChoice) {
+ if (!userChoice) {
+ QString text = "continue with interface: " + ifName;
+ qDebug() << _tag << text << "no user choice";
+ } else {
+ QString text = "continue with interface: " + ifName;
+ qDebug() << _tag << text << "with user choice";
+ QString gateway = networkDiscovery.getGatewayForInterface(ifName);
+ networkDiscovery.ip4_replaceDefaultRoute(ifName,gateway,0);
+ }
+ _webView->load(QUrl("qrc:html/continueBoot.html"));
+}
+
+
+
+QString ndgui::readLogFile() {
+ qDebug() << _tag << "show log";
+ return networkDiscovery.readLogFile();
+}
+
+
+
+/*test html gui version*/
+
+QVariantList ndgui::getManualConfInterfaces() {
+ qDebug() << _tag << "call getManualConfInterfaces";
+ QVariantList jsonArr;
+ foreach (QString s, _manConfList) {
+ QVariant e(s);
+ jsonArr << e;
+ }
+ qDebug() << _tag << "value of jsonArr:" << jsonArr;
+ return jsonArr;
+}
+
+
+
+int ndgui::ip4_setManualConfiguration(QVariantMap jsonArr) {
+ return networkDiscovery.ip4_setManualConfiguration(jsonArr);
+
+}
+
+
+
+/* slots */
+/************************************************/
+//////////////////////////////////////////////////
+/************************************************/
+
+void ndgui::attachToDOM(){
+ _webView->page()->mainFrame()->addToJavaScriptWindowObject(QString("fbgui"), this);
+ loadJQuery();
+}
+
+
+
+void ndgui::loadJQuery() {
+ QString js;
+ QString pathToJsDir(":/html");
+ pathToJsDir.append("/js");
+
+ QDir qrcJSDir(pathToJsDir);
+ QFileInfoList fiList = qrcJSDir.entryInfoList();
+ QFileInfo fi;
+ foreach(fi, fiList)
+ {
+ if (fi.suffix() == "js") {
+ //qDebug()<< fi.fileName();
+ //qxtLog->debug() << fi.fileName();
+ if (fi.fileName() != "test.js" && fi.fileName() != "nd-functions.js") {
+ QFile file;
+ file.setFileName(pathToJsDir + "/" + fi.fileName());
+ file.open(QIODevice::ReadOnly);
+ js = file.readAll();
+ file.close();
+
+ _webView->page()->mainFrame()->evaluateJavaScript(js);
+ //qxtLog->debug() << "evaluated " + fi.fileName();
+ }
+ }
+ }
+}
+
+
+
+//diese methoden müssen später in die javascriptInterface Klasse eingefügt werden.
+
+// dieser code muss später in die javascriptInterface klasse der fbgui eingefügt werden
+// tausche dazu ndgui zu javascriptinterface
+// und _webView->page()->mainFrame() zu _parent
+
+void ndgui::abortBoot(const QString msg) {
+ qDebug() << _tag << "call abortBoot:" << msg;
+ QString code = QString("abortBootDialog('\%1')").arg(msg);
+ _webView->page()->mainFrame()->evaluateJavaScript(code);
+}
+
+
+
+void ndgui::chooseInterfaceDialog(const QString msg) {
+ QString code = QString("chooseInterfaceDialog(\%1)").arg(msg);
+ _webView->page()->mainFrame()->evaluateJavaScript(code);
+}
+
+
+
+void ndgui::updateStatus(const QString &status) {
+ if (status == "")
+ return;
+ QString code = QString("updateStatus('\%1')").arg(status);
+ _webView->page()->mainFrame()->evaluateJavaScript(code);
+}
+
+
+
+void ndgui::updateIfProgressBar(const QString &ifName, const int& percent) {
+ if (percent == 0)
+ return;
+ qDebug() << _tag << "call updateIfProgressBar";
+ QString code = QString("updateIfProgressBar('\%1',\%2)").arg(ifName).arg(percent);
+ _webView->page()->mainFrame()->evaluateJavaScript(code);
+}
+
+
+
+void ndgui::updateIfStatus(const QString &ifName, const QString &status) {
+ if (ifName == "")
+ return;
+ QString code = QString("updateIfStatus('\%1','\%2')").arg(ifName).arg(status);
+ _webView->page()->mainFrame()->evaluateJavaScript(code);
+}
+
+
+
+void ndgui::addInterface(const QString &ifName) {
+ if (ifName == "")
+ return;
+ qDebug() << _tag << "call addInterface";
+ _manConfList.append(ifName);
+ QString code = QString("addInterface('\%1')").arg(ifName);
+ _webView->page()->mainFrame()->evaluateJavaScript(code);
+}
+
+
+
+void ndgui::notifyCall(QString msg){
+ qDebug() << _tag << "------ called:" << msg;
+}