Move ListNode dialog layout code into separate ui file
[vlp.git] / src / lgconfig / lgconfig.cpp
index 70a8bbc732902ecc81c15d74cb4283fbc2deec79..8739358531aecf8c439917a697d1afd65a079e47 100644 (file)
@@ -1,8 +1,6 @@
 #include <QtGui/QApplication>
 #include <QtGui/QMainWindow>
 #include <Qt3Support/q3multilineedit.h>
-#include <QtGui/QMenuBar>
-// #include <qpopmenu.h>
 #include <QtGui/QDialog>
 #include <QtGui/QButtonGroup>
 #include <QtGui/QLabel>
 #include <QtGui/QToolTip>
 #include <QtGui/QFont>
 #include <QtGui/QPixmap>
-#include <QtGui/QMessageBox>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 
 #include <libconfig.h>
 
-class VLPEntry {
-public:
-       int ID;
-       char addr[255];
-       /** 0 - explicit */
-       int type;
-       char progdir[255];
-       char homedir[255];
-       char item[255];
-};
+#include "lgconfig.h"
+#include "NodeListDialog.h"
 
-class QInstall: public QMainWindow {
-       Q_OBJECT
-public:
-       QMenuBar *bar;
-       Q3ListBox *nodelist;
-       QPushButton *infob;
-       QList<VLPEntry*> Nodes;
-
-       QInstall();
-       bool check_id(int);
-       bool check_addr(char*);
-
-public slots:
-       void SetOptions();
-       void AddNode();
-       void DelNode();
-       void Info();
-};
-
-
-QApplication *app;
+namespace loglan {
+namespace vlp {
 
 QInstall::QInstall()
 {
-       QFont f("Helvetica", 12, QFont::Bold);
-       QPixmap mp;
-
-//     infob = new QPushButton(this);
+       setupUi(this);
 
-       setWindowTitle("VLP Configuration Tool");
-
-       QMenu * programMenu = NULL;
-       programMenu = menuBar()->addMenu("&Program");
-       programMenu->addAction("Configure", this, SLOT(SetOptions()));
-       programMenu->addAction("Quit", app, SLOT(quit()));
-
-//     bar = new QMenuBar(this);
-//     bar->insertItem("Configure", this, SLOT(SetOptions()));
-//     bar->insertItem("Quit", app, SLOT(quit()));
-//     bar->setFont(f);
-//     infob->setGeometry(0, bar->height(), 200, 30);
-       if (mp.load("logo.bmp")) {
-//             infob->setPixmap(mp);
-//             infob->resize(mp.width(), mp.height());
-       }
-//     resize(infob->width(), infob->height() + bar->height());
        Nodes.clear();
 }
 
-bool QInstall::check_id(int id)
+void QInstall::on_actionConfigure_triggered()
 {
-       VLPEntry *pom;
+       dialog::NodeListDialog dialog(&Nodes, this);
 
-       pom = Nodes.first();
-       while (pom != NULL) {
-               if (pom->ID == id)
-                       return FALSE;
-               pom = Nodes.takeFirst();
-       }
-       return TRUE;
-}
-
-bool QInstall::check_addr(char *addr)
-{
-       VLPEntry *pom;
-
-       pom = Nodes.first();
-       while (pom != NULL) {
-               if (strcmp(pom->addr, addr) == 0)
-                       return FALSE;
-               pom = Nodes.takeFirst();
-       }
-       return TRUE;
-}
-
-/**
- * @attention Currently not in use
- */
-void QInstall::Info()
-{
-}
-
-void QInstall::AddNode()
-{
-       QDialog dlg(this);
-       QLabel *tmpQLabel;
-       QLineEdit *id, *addr, *progs, *home;
-       QPushButton *okbtn, *cancelbtn;
        VLPEntry *pom;
+       int i;
        char pomstr[255];
 
-       tmpQLabel = new QLabel(&dlg);
-       tmpQLabel->setGeometry(110, 10, 180, 30);
-       tmpQLabel->setFrameStyle(49);
-       tmpQLabel->setText("Virtual Processor Properties");
-
-       id = new QLineEdit(&dlg);
-       id->setGeometry(130, 50, 50, 30);
-       id->setText("");
-
-       tmpQLabel = new QLabel(&dlg);
-       tmpQLabel->setGeometry(20, 50, 90, 30);
-       tmpQLabel->setText("Node number");
-
-       tmpQLabel = new QLabel(&dlg);
-       tmpQLabel->setGeometry(20, 90, 80, 30);
-       tmpQLabel->setText("IP Address");
-
-       addr = new QLineEdit(&dlg);
-       addr->setGeometry(130, 90, 120, 30);
-       addr->setText("");
-
-       tmpQLabel = new QLabel(&dlg);
-       tmpQLabel->setGeometry(20, 130, 100, 30);
-       tmpQLabel->setText("Connection type");
-
-       QComboBox* tmpQComboBox;
-       tmpQComboBox = new QComboBox(&dlg);
-       tmpQComboBox->setGeometry(130, 130, 100, 30);
-//     tmpQComboBox->setSizeLimit(2);
-//     tmpQComboBox->setAutoResize(FALSE);
-       tmpQComboBox->insertItem(0, "Explicit");
-
-       tmpQLabel = new QLabel(&dlg);
-       tmpQLabel->setGeometry(20, 170, 110, 30);
-       tmpQLabel->setText("Programs directory");
-
-       progs = new QLineEdit(&dlg);
-       progs->setGeometry(130, 170, 230, 30);
-       progs->setText("");
-
-       tmpQLabel = new QLabel(&dlg);
-       tmpQLabel->setGeometry(20, 210, 100, 30);
-       tmpQLabel->setText("VLP directory");
-
-       home = new QLineEdit(&dlg);
-       home->setGeometry(130, 210, 230, 30);
-       home->setText("");
-
-       okbtn = new QPushButton(&dlg);
-       okbtn->setGeometry(80, 250, 100, 30);
-       okbtn->setText("Ok");
-       connect(okbtn,SIGNAL(clicked()), &dlg, SLOT(accept()));
-       cancelbtn = new QPushButton(&dlg);
-       cancelbtn->setGeometry(210, 250, 100, 30);
-       cancelbtn->setText("Cancel");
-       connect(cancelbtn,SIGNAL(clicked()), &dlg, SLOT(reject()));
-       dlg.resize(380, 300);
-       if (dlg.exec()) {
-               pom = new VLPEntry;
-               pom->ID = id->text().toInt();
-               if (check_id(pom->ID)) {
-                       strcpy(pom->addr, addr->text().toStdString().c_str());
-                       if (check_addr(pom->addr)) {
-                               if (tmpQComboBox->currentText() == "Explicit") {
-                                       pom->type=0;
-                               }
-                               strcpy(pom->progdir, progs->text().toStdString().c_str());
-                               strcpy(pom->homedir, home->text().toStdString().c_str());
-                               Nodes.append(pom);
-                               sprintf(pomstr, "Node: %d\t"
-                                               "Addr: %s\t"
-                                               "Home dir: %s", pom->ID, pom->addr, pom->homedir);
-                               nodelist->insertItem(pomstr);
-                               strcpy(pom->item, pomstr);
-                       } else {
-                               QMessageBox::warning(this, "Error!", "Only one VLP on a single computer!", "Ok");
-                       }
-               } else {
-                       QMessageBox::warning(this, "Error!", "ID must be unique!", "Ok");
-               }
-       }
-}
-
-void QInstall::DelNode()
-{
-       char pom[255];
-       VLPEntry *vpom;
-
-       if (nodelist->currentItem() >= 0) {
-               strcpy(pom, nodelist->text(nodelist->currentItem()).toStdString().c_str());
-               vpom = Nodes.first();
-               while (vpom != NULL) {
-                       if (strcmp(pom, vpom->item) == 0)
-                               break;
-                       vpom = Nodes.takeFirst();
-               }
-               if (vpom != NULL)
-                       if (QMessageBox::question(this, "Delete VLP", "Are you sure?", "Yes", "No")) {
-                               nodelist->removeItem(nodelist->currentItem());
-                               Nodes.removeOne(vpom);
-                       }
-       }
-}
-
-void QInstall::SetOptions()
-{
-       QDialog dlg(this);
-       QLabel *tmpQLabel;
-       QPushButton *addbtn, *delbtn, *okbtn, *cancelbtn;
-       VLPEntry *pom;
-       int i, j;
-       char pomstr[255];
-
-       //dlg.setStyle(WindowsStyle);
-       nodelist = new Q3ListBox(&dlg);
-       nodelist->setGeometry(20, 40, 480, 160);
-
-       tmpQLabel = new QLabel(&dlg);
-       tmpQLabel->setGeometry(20, 10, 100, 30);
-       tmpQLabel->setText("Nodes:");
-
-       addbtn = new QPushButton(&dlg);
-       addbtn->setGeometry(30, 210, 100, 30);
-       addbtn->setText("Add VLP");
-       connect(addbtn, SIGNAL(clicked()), this, SLOT(AddNode()));
-
-       delbtn = new QPushButton(&dlg);
-       delbtn->setGeometry(150, 210, 100, 30);
-       delbtn->setText("Del VLP");
-       connect(delbtn, SIGNAL(clicked()), this, SLOT(DelNode()));
-
-       okbtn = new QPushButton(&dlg);
-       okbtn->setGeometry(270, 210, 100, 30);
-       okbtn->setText("Save files");
-       connect(okbtn, SIGNAL(clicked()), &dlg, SLOT(accept()));
-
-       cancelbtn = new QPushButton(&dlg);
-       cancelbtn->setGeometry(390, 210, 100, 30);
-       cancelbtn->setText("Cancel");
-       connect(cancelbtn, SIGNAL(clicked()), &dlg, SLOT(reject()));
-
-       dlg.resize(520, 260);
-
-       if (dlg.exec()) {
+       if (dialog.exec()) {
                if (!Nodes.isEmpty()) {
-                       pom = Nodes.first();
-                       while (pom != NULL) {
-                               j = Nodes.indexOf(pom);
+                       QListIterator<VLPEntry *> nodesIterator(Nodes);
+
+                       while (nodesIterator.hasNext()) {
+                               pom = nodesIterator.next();
+                               i = Nodes.indexOf(pom);
                                sprintf(pomstr, "%s.cfg", pom->addr);
 
                                config_t cfg;
@@ -306,13 +81,13 @@ void QInstall::SetOptions()
                                        }
                                        config_setting_set_string(setting, "explicit");
                                }
-                               for (i = 0; i < Nodes.count(); i++) {
-                                       if (pom != Nodes.at(i)) {
+                               for (auto node : Nodes) {
+                                       if (pom != node) {
                                                setting = config_setting_get_member(root, "host");
                                                if (!setting) {
                                                        setting = config_setting_add(root, "host", CONFIG_TYPE_STRING);
                                                }
-                                               config_setting_set_string(setting, Nodes.at(i)->addr);
+                                               config_setting_set_string(setting, node->addr);
                                        }
                                }
 
@@ -321,21 +96,26 @@ void QInstall::SetOptions()
                                }
                                config_destroy(&cfg);
 
-                               pom = Nodes.at(j);
-                               pom = Nodes.takeFirst();
+                               pom = Nodes.at(i);
                        }
                }
        }
 }
 
-#include "lgconfig.moc"
+
+void QInstall::on_actionQuit_triggered()
+{
+       QApplication::instance()->quit();
+}
+
+}
+}
+
 
 int main(int argc, char **argv)
 {
-       app = new QApplication(argc,argv);
-       QInstall cfg;
-       //app->setStyle(WindowsStyle);
-//     app->setMainWidget(&cfg);
+       QApplication *app = new QApplication(argc,argv);
+       loglan::vlp::QInstall cfg;
        cfg.show();
        return app->exec();
 }