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);
}
}