#include <QtGui/QApplication>
-#include <QtGui/QMainWindow>
-#include <Qt3Support/q3multilineedit.h>
-#include <QtGui/QDialog>
-#include <QtGui/QButtonGroup>
-#include <QtGui/QLabel>
-#include <QtGui/QLineEdit>
-#include <Qt3Support/Q3ListBox>
-#include <QtGui/QPushButton>
-#include <QtGui/QRadioButton>
#include <QtCore/QList>
-#include <QtCore/qfile.h>
-#include <QtGui/qcombobox.h>
-#include <QtGui/QToolTip>
-#include <QtGui/QFont>
-#include <QtGui/QPixmap>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "lgconfig.h"
#include "NodeListDialog.h"
+#include "vlp/config.h"
namespace loglan {
namespace vlp {
QInstall::QInstall()
{
setupUi(this);
-
- Nodes.clear();
}
void QInstall::on_actionConfigure_triggered()
{
- dialog::NodeListDialog dialog(&Nodes, this);
-
- VLPEntry *pom;
- int i;
- char pomstr[255];
+ dialog::NodeListDialog dialog(nodes, this);
if (dialog.exec()) {
- if (!Nodes.isEmpty()) {
- QListIterator<VLPEntry *> nodesIterator(Nodes);
+ nodes = dialog.getNodes();
- while (nodesIterator.hasNext()) {
- pom = nodesIterator.next();
- i = Nodes.indexOf(pom);
- sprintf(pomstr, "%s.cfg", pom->addr);
+ if (!nodes.isEmpty()) {
- config_t cfg;
- config_setting_t *root, *setting;
- config_init(&cfg);
+ VLPEntry *pom;
+ int i;
+ char pomstr[255];
- root = config_root_setting(&cfg);
+ QListIterator<VLPEntry *> nodesIterator(nodes);
- setting = config_setting_get_member(root, "progdir");
- if(!setting) {
- setting = config_setting_add(root, "progdir", CONFIG_TYPE_STRING);
- }
- config_setting_set_string(setting, pom->progdir);
+ while (nodesIterator.hasNext()) {
+ pom = nodesIterator.next();
+ i = nodes.indexOf(pom);
+ sprintf(pomstr, "%s.cfg", pom->addr);
- setting = config_setting_get_member(root, "homedir");
- if(!setting) {
- setting = config_setting_add(root, "homedir", CONFIG_TYPE_STRING);
- }
- config_setting_set_string(setting, pom->homedir);
+
+ loglan::vlp::Config config;
- setting = config_setting_get_member(root, "node_number");
- if(!setting) {
- setting = config_setting_add(root, "node_number", CONFIG_TYPE_INT);
- }
- config_setting_set_int(setting, pom->ID);
+ config.setProgramDir(pom->progdir);
+ config.setNodeNumber(pom->ID);
+ config.setConnectionType(
+ (pom->type == 0) ? EXPLICIT : REGISTER
+ );
- if (pom->type == 0) {
- setting = config_setting_get_member(root, "type");
- if(!setting) {
- setting = config_setting_add(root, "type", CONFIG_TYPE_STRING);
- }
- config_setting_set_string(setting, "explicit");
- }
- for (auto node : Nodes) {
+ std::vector<std::string> hosts;
+ 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, node->addr);
+ hosts.push_back(node->addr);
}
}
+ config.setHosts(hosts);
+
+ config.save(pomstr);
+
+// TODO: add handling of homedir or remove it at all
+// setting = config_setting_get_member(root, "homedir");
+// if(!setting) {
+// setting = config_setting_add(root, "homedir", CONFIG_TYPE_STRING);
+// }
+// config_setting_set_string(setting, pom->homedir);
- if(!config_write_file(&cfg, pomstr)) {
- fprintf(stderr, "Error while writing to file: %s.\n", pomstr);
- }
- config_destroy(&cfg);
- pom = Nodes.at(i);
+ pom = nodes.at(i);
}
}
}