Implement saving of configuration files in its own class
[vlp.git] / src / lgconfig / lgconfig.cpp
index 2511b5bf02838a63c8ada14d3483e829ed1f2f08..f3605f16d91c90c0c0c5531dcaf77ff1358a84f9 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "lgconfig.h"
 #include "NodeListDialog.h"
+#include "vlp/config.h"
 
 namespace loglan {
 namespace vlp {
@@ -51,51 +52,32 @@ void QInstall::on_actionConfigure_triggered()
                                i = Nodes.indexOf(pom);
                                sprintf(pomstr, "%s.cfg", pom->addr);
 
-                               config_t cfg;
-                               config_setting_t *root, *setting;
-                               config_init(&cfg);
+                               
+                               loglan::vlp::Config config;
 
-                               root = config_root_setting(&cfg);
+                               config.setProgramDir(pom->progdir);
+                               config.setNodeNumber(pom->ID);
+                               config.setConnectionType(
+                                       (pom->type == 0) ? EXPLICIT : REGISTER
+                               );
 
-                               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);
-
-                               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);
-
-                               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);
-
-                               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");
-                               }
+                               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);
                        }