VPNAgentDialog::VPNAgentDialog(QWidget* parent) : QDialog(parent) { // setup the user interface ui.setupUi(this); // connect signals to slots connect(ui.toolButton_whatsthis, SIGNAL(clicked()), this, SLOT(showWhatsThis())); }
PropertiesEditor::PropertiesEditor(QWidget* parent, const arrayElement& ae) : QDialog(parent) { // Setup the user interface ui.setupUi(this); // Data members objpath = ae.objpath; objmap = ae.objmap; sl_ipv4_method << "dhcp" << "manual" << "off"; sl_ipv6_method << "auto" << "manual" << "off"; sl_ipv6_privacy << "disabled" << "enabled" << "prefered"; // misspelling prefered is necessary sl_proxy_method << "direct" << "auto" << "manual"; // Setup comboboxes ui.comboBox_ipv4method->addItems(TranslateStrings::cmtr_sl(sl_ipv4_method) ); ui.comboBox_ipv6method->addItems(TranslateStrings::cmtr_sl(sl_ipv6_method) ); ui.comboBox_ipv6privacy->addItems(TranslateStrings::cmtr_sl(sl_ipv6_privacy) ); ui.comboBox_proxymethod->addItems(TranslateStrings::cmtr_sl(sl_proxy_method) ); // Setup the address validator and apply it to any ui QLineEdit. // The lev validator will validate an IP address or up to one white space character (to allow // editing of the line edit). const QString s_ip4 = "(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"; const QString s_ip6 = "(?:[0-9a-fA-F]{1,4})"; const QString s_dom = "((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}"; // QLineEdits that allow single address QRegularExpression rx4("\\s?|^" + s_ip4 + "(?:\\." + s_ip4 + "){3}" + "$"); QRegularExpression rx6("\\s?|^" + s_ip6 + "(?::" + s_ip6 + "){7}" + "$"); QRegularExpressionValidator* lev_4 = new QRegularExpressionValidator(rx4, this); QRegularExpressionValidator* lev_6 = new QRegularExpressionValidator(rx6, this); ui.lineEdit_ipv4address->setValidator(lev_4); ui.lineEdit_ipv4netmask->setValidator(lev_4); ui.lineEdit_ipv4gateway->setValidator(lev_4); ui.lineEdit_ipv6address->setValidator(lev_6); ui.lineEdit_ipv6gateway->setValidator(lev_6); // now QLineEdits that allow multiple addresses QRegularExpression rx46d("\\s?|((" + s_ip4 + "(?:\\." + s_ip4 + "){3}|"+ s_ip6 + "(?::" + s_ip6 + "){7}|" + s_dom + ")(\\s*[,|;|\\s]\\s*))+"); QRegularExpressionValidator* lev_m = new QRegularExpressionValidator(rx46d, this); ui.lineEdit_nameservers->setValidator(lev_m); ui.lineEdit_timeservers->setValidator(lev_m); // initialize and populate submaps ipv4map.clear(); ipv6map.clear(); proxmap.clear(); shared::extractMapData(ipv4map, objmap.value("IPv4.Configuration") ); shared::extractMapData(ipv6map, objmap.value("IPv6.Configuration") ); shared::extractMapData(proxmap, objmap.value("Proxy.Configuration") ); // Seed initial values in the dialog. ui.checkBox_autoconnect->setChecked(objmap.value("AutoConnect").toBool() ); ui.lineEdit_nameservers->setText(objmap.value("Nameservers.Configuration").toStringList().join("\n") ); ui.lineEdit_timeservers->setText(objmap.value("Timeservers.Configuration").toStringList().join("\n")); ui.lineEdit_domains->setText(objmap.value("Domains.Configuration").toStringList().join("\n")); // ipv4 page if (! ipv4map.value("Method").toString().isEmpty() ) { ui.comboBox_ipv4method->setCurrentIndex(sl_ipv4_method.indexOf(QRegExp(ipv4map.value("Method").toString())) ); } ui.lineEdit_ipv4address->setText(ipv4map.value("Address").toString() ); ui.lineEdit_ipv4netmask->setText(ipv4map.value("Netmask").toString() ); ui.lineEdit_ipv4gateway->setText(ipv4map.value("Gateway").toString() ); // ipv6 page if (! ipv6map.value("Method").toString().isEmpty() ) { ui.comboBox_ipv6method->setCurrentIndex(sl_ipv6_method.indexOf(QRegularExpression(ipv6map.value("Method").toString())) ); } ui.spinBox_ipv6prefixlength->setValue(ipv6map.value("PrefixLength").toUInt() ); ui.lineEdit_ipv6address->setText(ipv6map.value("Address").toString() ); ui.lineEdit_ipv6gateway->setText(ipv6map.value("Gateway").toString() ); if (! ipv6map.value("Privacy").toString().isEmpty() ) { ui.comboBox_ipv6privacy->setCurrentIndex(sl_ipv6_privacy.indexOf(QRegularExpression(ipv6map.value("Privacy").toString())) ); } // proxy page if (! proxmap.value("Method").toString().isEmpty() ) { ui.comboBox_proxymethod->setCurrentIndex(sl_proxy_method.indexOf(QRegularExpression(proxmap.value("Method").toString())) ); } ui.lineEdit_proxyservers->setText(proxmap.value("Servers").toStringList().join("\n") ); ui.lineEdit_proxyexcludes->setText(proxmap.value("Excludes").toStringList().join("\n") ); ui.lineEdit_proxyurl->setText(proxmap.value("URL").toString() ); // connect signals to slots connect(ui.toolButton_whatsthis, SIGNAL(clicked()), this, SLOT(showWhatsThis())); connect(ui.pushButton_resetpage, SIGNAL(clicked()), this, SLOT(resetPage())); connect(ui.pushButton_resetall, SIGNAL(clicked()), this, SLOT(resetAll())); connect(ui.pushButton_ok, SIGNAL(clicked()), this, SLOT(updateConfiguration())); }
PropertiesEditor::PropertiesEditor(QWidget* parent, const arrayElement& ae, bool (*extractMapData) (QMap<QString,QVariant>&,const QVariant&)) : QDialog(parent) { // Setup the user interface ui.setupUi(this); // Data members objpath = ae.objpath; objmap = ae.objmap; // Setup the address validator and apply it to any ui QLineEdit. // The lev validator will validate an IP address or up to one white space character (to allow // editing of the line edit). QString s_ip4 = "(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"; QString s_ip6 = "(?:[0-9a-fA-F]{1,4})"; // QLineEdits that allow single address QRegularExpression rx4("\\s?|^" + s_ip4 + "(?:\\." + s_ip4 + "){3}" + "$"); QRegularExpression rx6("\\s?|^" + s_ip6 + "(?::" + s_ip6 + "){7}" + "$"); QRegularExpressionValidator* lev_4 = new QRegularExpressionValidator(rx4, this); QRegularExpressionValidator* lev_6 = new QRegularExpressionValidator(rx6, this); ui.lineEdit_ipv4address->setValidator(lev_4); ui.lineEdit_ipv4netmask->setValidator(lev_4); ui.lineEdit_ipv4gateway->setValidator(lev_4); ui.lineEdit_ipv6address->setValidator(lev_6); ui.lineEdit_ipv6gateway->setValidator(lev_6); // now QLineEdits that allow multiple addresses QRegularExpression rx46("\\s?|((" + s_ip4 + "(?:\\." + s_ip4 + "){3}|" + s_ip6 + "(?::" + s_ip6 + "){7})(\\s*[,|;|\\s]\\s*))+"); QRegularExpressionValidator* lev_m = new QRegularExpressionValidator(rx46, this); ui.lineEdit_nameservers->setValidator(lev_m); ui.lineEdit_timeservers->setValidator(lev_m); // initialize and populate submaps ipv4map.clear(); ipv6map.clear(); proxmap.clear(); extractMapData(ipv4map, objmap.value("IPv4.Configuration") ); extractMapData(ipv6map, objmap.value("IPv6.Configuration") ); extractMapData(proxmap, objmap.value("Proxy.Configuration") ); // Seed initial values in the dialog. ui.checkBox_autoconnect->setChecked(objmap.value("AutoConnect").toBool() ); ui.lineEdit_nameservers->setText(objmap.value("Nameservers.Configuration").toStringList().join("\n") ); ui.lineEdit_timeservers->setText(objmap.value("Timeservers.Configuration").toStringList().join("\n")); ui.lineEdit_domains->setText(objmap.value("Domains.Configuration").toStringList().join("\n")); // ipv4 page if (! ipv4map.value("Method").toString().isEmpty() ) { ui.comboBox_ipv4method->setCurrentIndex(ui.comboBox_ipv4method->findText(ipv4map.value("Method").toString(), Qt::MatchFixedString) ); } ui.lineEdit_ipv4address->setText(ipv4map.value("Address").toString() ); ui.lineEdit_ipv4netmask->setText(ipv4map.value("Netmask").toString() ); ui.lineEdit_ipv4gateway->setText(ipv4map.value("Gateway").toString() ); // ipv6 page if (! ipv6map.value("Method").toString().isEmpty() ) { ui.comboBox_ipv6method->setCurrentIndex(ui.comboBox_ipv6method->findText(ipv6map.value("Method").toString(), Qt::MatchFixedString) ); } ui.spinBox_ipv6prefixlength->setValue(ipv6map.value("PrefixLength").toUInt() ); ui.lineEdit_ipv6address->setText(ipv6map.value("Address").toString() ); ui.lineEdit_ipv6gateway->setText(ipv6map.value("Gateway").toString() ); if (! ipv6map.value("Privacy").toString().isEmpty() ) { ui.comboBox_ipv6privacy->setCurrentIndex(ui.comboBox_ipv6privacy->findText(ipv6map.value("Privacy").toString(), Qt::MatchFixedString) ); } // proxy page if (! proxmap.value("Method").toString().isEmpty() ) { ui.comboBox_proxymethod->setCurrentIndex(ui.comboBox_proxymethod->findText(proxmap.value("Method").toString(), Qt::MatchFixedString) ); } ui.lineEdit_proxyservers->setText(proxmap.value("Servers").toStringList().join("\n") ); ui.lineEdit_proxyexcludes->setText(proxmap.value("Excludes").toStringList().join("\n") ); ui.lineEdit_proxyurl->setText(proxmap.value("URL").toString() ); // connect signals to slots connect(ui.toolButton_whatsthis, SIGNAL(clicked()), this, SLOT(showWhatsThis())); connect(ui.pushButton_resetpage, SIGNAL(clicked()), this, SLOT(resetPage())); connect(ui.pushButton_resetall, SIGNAL(clicked()), this, SLOT(resetAll())); connect(ui.pushButton_ok, SIGNAL(clicked()), this, SLOT(updateConfiguration())); }