summaryrefslogblamecommitdiffstats
path: root/LogReceiver/ndgui.cpp
blob: cb2a2f97bfae388c2e39bb53805d8d78c1276110 (plain) (tree)
1
2
3
4
5
6
7
8
9
10

                  

                                   
 

                                                                                                                                                                 
                                                                                                                             

                                                                                                                                             

                                                                                                               
 
                         
                                                     
 
                                      

                                                                                      
                                                           

                                                       

 


                                                               
                                   


                                                

 
                 


 


                                    
                                                                                                  


                                                               
         
 
 

                                                         

 

                                             






                                                                 
                
                                                         


         
                             
 

 
                              
 
 
 
                                                          


                                                                    
                

                                                                    

                                                                                  
         
                                                           

 

                               
 

                         




























                                                                      
           
 








































                                                                                           

                                          
                                             




                                                                  
                                                                      


                                                                






















                                                                                     
                               


                                                             

                                            
 
#include "ndgui.h"

ndgui::ndgui(QMainWindow *parent) :
	QMainWindow(parent) {

	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)));

	_started = false;
	_manualConfInterfaces = "[\"NO INTERFACE\"]";

	_webView = new QWebView(this);
	connect(_webView->page()->mainFrame(), SIGNAL(
		         javaScriptWindowObjectCleared()), this, SLOT(attachToDOM()));
	connect(_webView, SIGNAL(loadFinished(bool)), this,
			SLOT(startNetworkDiscovery()));



	setCentralWidget(_webView);
	_webView->load(QUrl("qrc:html/networkdiscovery.html"));
	_webView->show();
	setWindowTitle(tr("NetD"));
	setAttribute(Qt::WA_QuitOnClose, true);
	setWindowFlags(Qt::FramelessWindowHint);

}

ndgui::~ndgui() {

}

void ndgui::startNetworkDiscovery(){
	if(!_started) {
		_started = true;
		networkDiscovery.initAndRun("209.85.148.105", true,"/var/tmp/qt_c_socket_custom");
	}
	else {
		qDebug() << "NetworkDiscovery already started";
	}
}

void ndgui::handleConnectionEstablished(QString ifName) {
	_ifNameList.append(ifName);
}

void ndgui::handleAllProcessesFinished() {
	qDebug() << "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() << text << "no user choice";
	} else {
		QString text = "continue with interface: " + ifName;
		qDebug() << text << "with user choice";
		QString gateway = networkDiscovery.getGatewayForInterface(ifName);
		networkDiscovery.ip4_replaceDefaultRoute(ifName,gateway,0);
	}
	_webView->load(QUrl("qrc:html/continueBoot.html"));
}

void ndgui::showLog() {
	qDebug() << "show log";
}

/*test html gui version*/

QVariantList ndgui::getManualConfInterfaces() {
	qDebug() << "call getManualConfInterfaces";
	/*
	QString jsonArr("");
	if(_manConfList.size() > 0) {
		jsonArr = "[";
		for(int i = 0; i < _manConfList.size()-1; i++) {
			jsonArr += "'" + _manConfList.value(i) + "',";
		}
		jsonArr += "'" + _manConfList.last() + "']";

	}
	qDebug() << "value of jsonArr:" << jsonArr;
	*/
	QVariantList jsonArr;
	foreach (QString s, _manConfList) {
		QVariant e(s);
		jsonArr << e;
	}
	qDebug() << "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() << "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() << "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() << "call addInterface";
   _manConfList.append(ifName);
   QString code = QString("addInterface('\%1')").arg(ifName);
   _webView->page()->mainFrame()->evaluateJavaScript(code);
}
void ndgui::notifyCall(QString msg){
	qDebug() << "------ called:" << msg;
}