mirror of
https://github.com/jankae/LibreVNA.git
synced 2026-04-06 06:53:37 +00:00
add IP address list for TCP drivers
This commit is contained in:
parent
9b5bb1678c
commit
952c43073e
10 changed files with 255 additions and 34 deletions
|
|
@ -0,0 +1,89 @@
|
|||
#include "devicetcpdriver.h"
|
||||
|
||||
#include "ui_devicetcpdriversettings.h"
|
||||
|
||||
#include <QLineEdit>
|
||||
|
||||
DeviceTCPDriver::DeviceTCPDriver(QString driverName)
|
||||
{
|
||||
specificSettings.push_back(Savable::SettingDescription(&searchAddressString, driverName+".searchAddressString", ""));
|
||||
}
|
||||
|
||||
QWidget *DeviceTCPDriver::createSettingsWidget()
|
||||
{
|
||||
parseSearchAddressString();
|
||||
auto w = new QWidget();
|
||||
auto ui = new Ui::DeviceTCPDriverSettingsWidget;
|
||||
ui->setupUi(w);
|
||||
|
||||
ui->list->clear();
|
||||
for(auto &a : searchAddresses) {
|
||||
auto item = new QListWidgetItem();
|
||||
if(a.isNull()) {
|
||||
item->setText("0.0.0.0");
|
||||
} else {
|
||||
item->setText(a.toString());
|
||||
}
|
||||
item->setFlags(item->flags() | Qt::ItemIsEditable);
|
||||
ui->list->addItem(item);
|
||||
}
|
||||
|
||||
connect(ui->list->itemDelegate(), &QAbstractItemDelegate::commitData, this, [=](QWidget *pLineEdit) {
|
||||
QString strNewText = reinterpret_cast<QLineEdit*>(pLineEdit)->text();
|
||||
int nRow = ui->list->currentRow();
|
||||
auto address = QHostAddress(strNewText);
|
||||
if(!address.isNull()) {
|
||||
// valid IP
|
||||
searchAddresses[nRow] = address;
|
||||
updateSearchAddressString();
|
||||
}
|
||||
ui->list->item(nRow)->setText(searchAddresses[nRow].toString());
|
||||
});
|
||||
|
||||
connect(ui->add, &QPushButton::clicked, [=](){
|
||||
searchAddresses.push_back(QHostAddress("0.0.0.0"));
|
||||
auto item = new QListWidgetItem(searchAddresses.back().toString());
|
||||
item->setFlags(item->flags() | Qt::ItemIsEditable);
|
||||
ui->list->addItem(item);
|
||||
updateSearchAddressString();
|
||||
});
|
||||
|
||||
connect(ui->remove, &QPushButton::clicked, [=](){
|
||||
auto index = ui->list->currentRow();
|
||||
if(index >= 0 && index < (int) searchAddresses.size()) {
|
||||
delete ui->list->takeItem(index);
|
||||
searchAddresses.erase(searchAddresses.begin() + index);
|
||||
updateSearchAddressString();
|
||||
}
|
||||
});
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
std::vector<QHostAddress> DeviceTCPDriver::getSearchAddresses()
|
||||
{
|
||||
parseSearchAddressString();
|
||||
return searchAddresses;
|
||||
}
|
||||
|
||||
void DeviceTCPDriver::parseSearchAddressString()
|
||||
{
|
||||
QStringList list = searchAddressString.split(",");
|
||||
searchAddresses.clear();
|
||||
for(auto &l : list) {
|
||||
searchAddresses.push_back(QHostAddress(l));
|
||||
}
|
||||
}
|
||||
|
||||
void DeviceTCPDriver::updateSearchAddressString()
|
||||
{
|
||||
searchAddressString = "";
|
||||
for(auto &a : searchAddresses) {
|
||||
searchAddressString += a.toString();
|
||||
searchAddressString += ",";
|
||||
}
|
||||
if(searchAddressString.length() > 0) {
|
||||
// remove trailing comma
|
||||
searchAddressString.chop(1);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue