X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Flgconfig%2Flgconfig.cpp;h=7b7fca89d910cf4b12b32a7576cb798e1326bc0b;hb=refs%2Ftags%2F3.4-b1;hp=8739358531aecf8c439917a697d1afd65a079e47;hpb=e1c9f64d814247154fc734afdc9b1593d88425bb;p=vlp.git diff --git a/src/lgconfig/lgconfig.cpp b/src/lgconfig/lgconfig.cpp index 8739358..7b7fca8 100644 --- a/src/lgconfig/lgconfig.cpp +++ b/src/lgconfig/lgconfig.cpp @@ -1,19 +1,5 @@ #include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include -#include -#include #include #include #include @@ -22,6 +8,7 @@ #include "lgconfig.h" #include "NodeListDialog.h" +#include "vlp/config.h" namespace loglan { namespace vlp { @@ -29,74 +16,56 @@ 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 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 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 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); } } }