Implement saving of configuration files in its own class
[vlp.git] / src / kernel / OptionsDialog.cpp
index b7261cd639835eefce7dd81c7d50b738fcbfd0d9..4e413cd596c2a20dd88cd8ebb3fd4cf7a3366197 100644 (file)
@@ -102,37 +102,21 @@ void OptionsDialog::saveConfig(QString fname)
 
 void OptionsDialog::saveConfig(const char * fname)
 {
-       config_t cfg;
-       config_setting_t *root;
-       config_setting_t *setting;
-       config_init(&cfg);
-
-       root = config_root_setting(&cfg);
-
-       setting = config_setting_add(root, "progdir", CONFIG_TYPE_STRING);
-       config_setting_set_string(setting, programsDirectory->text().toStdString().c_str());
-
-       setting = config_setting_add(root, "node_number", CONFIG_TYPE_INT);
-       config_setting_set_int(setting, nodeNumber->value());
-
-       setting = config_setting_add(root, "type", CONFIG_TYPE_STRING);
-       if (explicitConnectionMode->isChecked()) {
-               config_setting_set_string(setting, "explicit");
-
-               config_setting_t *hosts = NULL;
-               hosts = config_setting_add(root, "host", CONFIG_TYPE_ARRAY);
-               for(int i = 0; i < connections->count(); i++) {
-                       setting = config_setting_add(hosts, NULL, CONFIG_TYPE_STRING);
-                       config_setting_set_string(setting, connections->item(i)->text().toStdString().c_str());
-               }
-       } else {
-               config_setting_set_string(setting, "register");
-       }
+       loglan::vlp::Config config;
 
-       if (!config_write_file(&cfg, fname)) {
-               fprintf(stderr, "Error while writing to file: %s.\n", fname);
+       config.setProgramDir(programsDirectory->text().toStdString().c_str());
+       config.setNodeNumber(nodeNumber->value());
+       config.setConnectionType(
+               explicitConnectionMode->isChecked() ? EXPLICIT : REGISTER
+       );
+       
+       std::vector<std::string> hosts;
+       for(int i = 0; i < connections->count(); i++) {
+               hosts.push_back(connections->item(i)->text().toStdString());
        }
-       config_destroy(&cfg);
+       config.setHosts(hosts);
+       
+       config.save(fname);
 }
 
 }