1 #include <QtGui/QDialog>
4 #include "vlp/config.h"
10 OptionsDialog::OptionsDialog(QString configFilePath, QWidget * parent)
15 connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
16 connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
18 loadConfig(configFilePath.toStdString().c_str());
21 OptionsDialog::~OptionsDialog()
26 * Adds IP address to the configuration.
27 * Additional window is displayed to add address to the list
29 void OptionsDialog::on_addConnectionButton_clicked()
31 QDialog d(this, Qt::Dialog);
32 QLabel lab("IP Address:", &d);
34 QPushButton ob("", &d);
35 QPushButton cb("", &d);
38 ob.setGeometry(30, 60, 80, 30);
41 lab.setGeometry(10, 10, 60, 30);
42 lab.setText("Address");
43 ed.setGeometry(70, 10, 140, 30);
44 cb.setGeometry(130, 60, 80, 30);
47 connect(&ob, SIGNAL(clicked()), &d, SLOT(accept()));
48 connect(&cb, SIGNAL(clicked()), &d, SLOT(reject()));
50 if (strcmp(ed.text().toAscii().data(), "") != 0) {
51 connections->addItem(ed.text());
57 * Deletes current address from available connections.
59 void OptionsDialog::on_delConnectionButton_clicked()
61 if (connections->currentRow() != -1) {
62 connections->takeItem(connections->currentRow());
67 * Loads configuration from the given file.
69 * @see QKernel::LoadConfig
71 * @param fname Filename of the configuration file.
73 void OptionsDialog::loadConfig(const char * fname)
75 loglan::vlp::Config config;
78 nodeNumber->setValue(config.getNodeNumber());
79 switch(config.getConnectionType()) {
80 case loglan::vlp::EXPLICIT:
81 explicitConnectionMode->setEnabled(true);
82 registrationConnectionMode->setDisabled(true);
84 case loglan::vlp::REGISTER:
85 registrationConnectionMode->setEnabled(true);
86 explicitConnectionMode->setDisabled(true);
90 for (auto host : config.getHosts()) {
91 connections->addItem(host.c_str());
94 programsDirectory->setText(config.getProgramDir());
97 void OptionsDialog::saveConfig(QString fname)
99 saveConfig(fname.toStdString().c_str());
102 void OptionsDialog::saveConfig(const char * fname)
105 config_setting_t *root;
106 config_setting_t *setting;
109 root = config_root_setting(&cfg);
111 setting = config_setting_add(root, "progdir", CONFIG_TYPE_STRING);
112 config_setting_set_string(setting, programsDirectory->text().toStdString().c_str());
114 setting = config_setting_add(root, "node_number", CONFIG_TYPE_INT);
115 config_setting_set_int(setting, nodeNumber->value());
117 setting = config_setting_add(root, "type", CONFIG_TYPE_STRING);
118 if (explicitConnectionMode->isChecked()) {
119 config_setting_set_string(setting, "explicit");
121 config_setting_t *hosts = NULL;
122 hosts = config_setting_add(root, "host", CONFIG_TYPE_ARRAY);
123 for(int i = 0; i < connections->count(); i++) {
124 setting = config_setting_add(hosts, NULL, CONFIG_TYPE_STRING);
125 config_setting_set_string(setting, connections->item(i)->text().toStdString().c_str());
128 config_setting_set_string(setting, "register");
131 if (!config_write_file(&cfg, fname)) {
132 fprintf(stderr, "Error while writing to file: %s.\n", fname);
134 config_destroy(&cfg);