#include "ndgui.h" #include "chooseinterfacedialog.h" #include "abortbootdialog.h" ndgui::ndgui(QWidget *parent) : QWidget(parent) { ui.setupUi(this); connect(&logReceiver, SIGNAL(addNewInterface(QString)), this, SLOT(addNewInterface(QString))); connect(&logReceiver, SIGNAL(changeProgressBarValue(QString , int )), this, SLOT(handleProgress(QString, int))); connect(&logReceiver, SIGNAL(connectionEstablished(QString, QString)), this, SLOT(handleConnectionEstablished(QString, QString))); connect(&logReceiver, SIGNAL(abortBoot(QString)), this, SLOT(handleAbortBoot(QString))); connect(&logReceiver, SIGNAL(updateStatusLabel(QString,QString)), this, SLOT(handleUpdateStatusLabel(QString, QString))); connect(&logReceiver, SIGNAL(allProcessesFinished()), this, SLOT(handleAllProcessesFinished())); buildGui(); logReceiver.initAndRun("/var/tmp/qt_c_socket_custom"); numberOfInterfaces = 0; setWindowTitle(tr("NetD")); } ndgui::~ndgui() { } void ndgui::buildGui() { ndStatusLabel = new QLabel(tr("test")); ndStatusLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); ndStatusLabel->setAlignment(Qt::AlignCenter); ndStatusLabel->setMinimumSize(100, 20); // create interface group box createInterfaceGroupBox(); mainLayout = new QVBoxLayout; mainLayout->addWidget(ndStatusLabel); mainLayout->addWidget(interfaceGroupBox); setLayout(mainLayout); } void ndgui::createInterfaceGroupBox(){ interfaceGroupBox = new QGroupBox(tr("Interfaces")); interfaceGroupBoxLayout = new QVBoxLayout; /* add interfaces via addInterfacesToGroupBox()*/ interfaceGroupBox->setLayout(interfaceGroupBoxLayout); } void ndgui::addNewInterface(QString ifName) { qDebug() << "receive interface to add:" << ifName; QHBoxLayout *hBoxLayout = new QHBoxLayout; QLabel *label = new QLabel(ifName); QLabel *labelStatus = new QLabel("waiting"); QProgressBar *pBar = new QProgressBar(this); pBar->setRange(1, 100); pBar->setMaximumSize(200, 20); statusLabels.insert(ifName, labelStatus); progressBars.insert(ifName, pBar); hBoxLayout->addWidget(label, Qt::AlignLeft); hBoxLayout->addWidget(labelStatus, Qt::AlignCenter); hBoxLayout->addWidget(pBar, Qt::AlignRight); numberOfInterfaces++; interfaceGroupBoxLayout->addLayout(hBoxLayout, 2); } void ndgui::handleProgress(QString ifName, int newValue) { qDebug() << "<[---]> SLOT handleProgress activated with: " << ifName << newValue; QProgressBar * pBar = progressBars.value(ifName); if(newValue >= pBar->value()) { pBar->setValue(newValue); } else { qDebug() << "Error: new value is smaller than the old value!"; } } void ndgui::handleConnectionEstablished(QString ifName, QString gateway) { finalUsableInterfaces.append(ifName); // TODO:: Fix this!! use a interfaceconfiguration object instead!!! } void ndgui::handleAbortBoot(QString msg) { qDebug() << "abort boot. reason:" << msg; showAbortBootDialog(); } void ndgui::handleUpdateStatusLabel(QString ifName, QString status) { QLabel* label = statusLabels.value(ifName); label->setText(status); } void ndgui::handleAllProcessesFinished() { qDebug() << "all Processes finished"; if (finalUsableInterfaces.size() > 0) { showChooseInterfaceDialog(); } else { showAbortBootDialog(); } } void ndgui::showAbortBootDialog() { aBD = new AbortBootDialog(this); connect(aBD, SIGNAL(showLogSignal()), this, SLOT(showLog())); connect(aBD, SIGNAL(restartSignal()), this, SLOT(restartSystem())); connect(aBD, SIGNAL(shutDownSignal()), this, SLOT(shutDownSystem())); aBD->setModal(true); aBD->show(); } void ndgui::showChooseInterfaceDialog() { cID = new ChooseInterfaceDialog(finalUsableInterfaces, this); connect(cID, SIGNAL(continueSignal(QString)), this, SLOT(continueBoot(QString))); connect(cID, SIGNAL(restartSignal()), this, SLOT(restartSystem())); connect(cID, SIGNAL(shutDownSignal()), this, SLOT(shutDownSystem())); cID->setModal(true); cID->show(); } void ndgui::restartSystem() { if(qobject_cast(QObject::sender())>0) { qDebug() << "received Signal restart abd"; aBD->closeDialog(); } else if(qobject_cast(QObject::sender())>0) { qDebug() << "received Signal restart cid"; cID->close(); } else { qDebug() << "unknown sender" << QObject::sender(); } } void ndgui::shutDownSystem() { if(qobject_cast(QObject::sender())>0) { aBD->closeDialog(); } else if(qobject_cast(QObject::sender())>0) { cID->close(); } else { qDebug() << "unknown sender" << QObject::sender(); } } void ndgui::continueBoot(QString ifName) { QString text = "continue with interface: " + ifName; cID->close(); } void ndgui::showLog() { qDebug() << "show log"; } /*test html gui version*/ /* slots */ void ndgui::addInterface() { }