/////////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2019 Edouard Griffiths, F4EXB // // // // This program is free software; you can redistribute it and/or modify // // it under the terms of the GNU General Public License as published by // // the Free Software Foundation as version 3 of the License, or // // (at your option) any later version. // // // // This program is distributed in the hope that it will be useful, // // but WITHOUT ANY WARRANTY; without even the implied warranty of // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License V3 for more details. // // // // You should have received a copy of the GNU General Public License // // along with this program. If not, see . // /////////////////////////////////////////////////////////////////////////////////// #include "device/deviceenumerator.h" #include "device/deviceuserargs.h" #include "ui_deviceuserargsdialog.h" #include "deviceuserargsdialog.h" DeviceUserArgsDialog::DeviceUserArgsDialog( DeviceEnumerator* deviceEnumerator, DeviceUserArgs& hardwareDeviceUserArgs, QWidget* parent ) : QDialog(parent), ui(new Ui::DeviceUserArgsDialog), m_deviceEnumerator(deviceEnumerator), m_hardwareDeviceUserArgs(hardwareDeviceUserArgs), m_argsByDeviceCopy(hardwareDeviceUserArgs.m_argsByDevice) { qDebug("DeviceUserArgsDialog::DeviceUserArgsDialog"); ui->setupUi(this); for (int i = 0; i < m_deviceEnumerator->getNbRxSamplingDevices(); i++) { pushHWDeviceReference(m_deviceEnumerator->getRxSamplingDevice(i)); } for (int i = 0; i < m_deviceEnumerator->getNbTxSamplingDevices(); i++) { pushHWDeviceReference(m_deviceEnumerator->getTxSamplingDevice(i)); } for (int i = 0; i < m_deviceEnumerator->getNbMIMOSamplingDevices(); i++) { pushHWDeviceReference(m_deviceEnumerator->getMIMOSamplingDevice(i)); } for (auto& hwItem : m_availableHWDevices) { QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui->deviceTree); treeItem->setText(0, hwItem.m_hardwareId); treeItem->setText(1, tr("%1").arg(hwItem.m_sequence)); treeItem->setText(2, hwItem.m_description); } ui->deviceTree->resizeColumnToContents(0); ui->deviceTree->resizeColumnToContents(1); ui->deviceTree->resizeColumnToContents(2); displayArgsByDevice(); } DeviceUserArgsDialog::~DeviceUserArgsDialog() { delete ui; } void DeviceUserArgsDialog::displayArgsByDevice() { ui->argsTree->clear(); ui->argStringEdit->clear(); QMap::iterator it = m_argsByDeviceCopy.begin(); for (; it != m_argsByDeviceCopy.end(); ++it) { QString hardwareId; int sequence; DeviceUserArgs::splitDeviceKey(it.key(), hardwareId, sequence); QTreeWidgetItem *treeItem = new QTreeWidgetItem(ui->argsTree); treeItem->setText(0, hardwareId); treeItem->setText(1, tr("%1").arg(sequence)); treeItem->setText(2, m_argsByDeviceCopy.value(it.value())); } ui->argsTree->resizeColumnToContents(0); ui->argsTree->resizeColumnToContents(1); ui->argsTree->resizeColumnToContents(2); } void DeviceUserArgsDialog::pushHWDeviceReference(const PluginInterface::SamplingDevice *samplingDevice) { HWDeviceReference hw; hw.m_hardwareId = samplingDevice->hardwareId; hw.m_sequence = samplingDevice->sequence; hw.m_description = samplingDevice->displayedName; bool found = false; for (auto& hwAvail : m_availableHWDevices) { if (hw == hwAvail) { found = true; break; } } if (!found) { m_availableHWDevices.push_back(hw); } } void DeviceUserArgsDialog::accept() { m_hardwareDeviceUserArgs.m_argsByDevice = m_argsByDeviceCopy; QDialog::accept(); } void DeviceUserArgsDialog::reject() { QDialog::reject(); } void DeviceUserArgsDialog::on_importDevice_clicked(bool checked) { (void) checked; QTreeWidgetItem *deviceItem = ui->deviceTree->currentItem(); QStringList strList; strList.append(deviceItem->text(0)); strList.append(deviceItem->text(1)); QString key = strList.join('-'); qDebug("DeviceUserArgsDialog::on_importDevice_clicked: key: %s", qPrintable(key)); QMap::iterator it = m_argsByDeviceCopy.find(key); if (it == m_argsByDeviceCopy.end()) { m_argsByDeviceCopy[key] = ""; } displayArgsByDevice(); } void DeviceUserArgsDialog::on_deleteArgs_clicked(bool checked) { } void DeviceUserArgsDialog::on_argStringEdit_returnPressed() { }