/** * @brief slot: show preference dialog * @return * void */ void DLDConfigureOB::showPreferences () { QDialog * preferenceDialog = new QDialog; preferences.setupUi (preferenceDialog); // fill with defaults: (from settings) QString logFile = settings->value("logFile", "").toString (); preferences.flashBasepathEdit->setText (settings->value("FlashBasepath", "ttyUSB").toString ()); preferences.openBeaconBasepathEdit->setText (settings->value("OpenBeaconBasepath", "ttyACM").toString ()); preferences.refreshSpin->setValue (settings->value("DeviceRefreshRate", 5).toInt ()); preferences.logFileEdit->setText (logFile); preferences.sam7PathEdit->setText (settings->value("sam7Path", "/usr/local/bin/sam7").toString ()); preferences.showTagPacketsCheck->setChecked (showRX); // fill command table QStringList tableHeader; tableHeader << tr ("Command") << tr ("Command description"); preferences.commandTable->setColumnCount(2); preferences.commandTable->setHorizontalHeaderLabels (tableHeader); preferences.commandTable->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); preferences.commandTable->setShowGrid(true); QMap<QString, QString> cmdMap = getCommandMap (); QMapIterator<QString, QString> i (cmdMap); while (i.hasNext()) { i.next(); QTableWidgetItem * cmdNameItem = new QTableWidgetItem(i.key()); QTableWidgetItem * cmdDescItem = new QTableWidgetItem(i.value()); preferences.commandTable->insertRow(0); preferences.commandTable->setItem(0, 0, cmdNameItem); preferences.commandTable->setItem(0, 1, cmdDescItem); } // connect buttons: connect(preferences.addButton, SIGNAL(clicked ()), this, SLOT(insertCommandTableRow ())); connect(preferences.deleteButton, SIGNAL(clicked ()), this, SLOT(deleteCommandTableRow ())); connect(preferences.logFileButton, SIGNAL(clicked ()), this, SLOT(selectLogFile ())); connect(preferences.sam7PathButton, SIGNAL(clicked ()), this, SLOT(selectSam7File ())); connect(preferences.defaultCommandsButton,SIGNAL(clicked ()), this, SLOT(fillDefaultCommands ())); // connect entry checks connect(preferences.flashBasepathEdit, SIGNAL(editingFinished ()), this, SLOT(checkFilled ())); connect(preferences.openBeaconBasepathEdit,SIGNAL(editingFinished ()), this, SLOT(checkFilled ())); if (preferenceDialog->exec () == QDialog::Accepted) { int refreshRate = preferences.refreshSpin->value (); settings->setValue("FlashBasepath", preferences.flashBasepathEdit->text ()); settings->setValue("OpenBeaconBasepath", preferences.openBeaconBasepathEdit->text ()); settings->setValue("DeviceRefreshRate", refreshRate); settings->setValue("showRX", showRX); showRX = preferences.showTagPacketsCheck->isChecked(); settings->setValue("sam7Path", preferences.sam7PathEdit->text ()); QString newLogFile = preferences.logFileEdit->text(); if (logFile != newLogFile) { emit logFileChanged (newLogFile); settings->setValue("logFile", newLogFile); log->infoLog (QString("Logpath changed to: %1").arg(newLogFile)); } QMap<QString, QString> newCmdMap; log->debugLog ("Current command list:"); for (int row = 0; row < preferences.commandTable->rowCount(); row++) { QTableWidgetItem *cmdNameItem = preferences.commandTable->item(row, 0); QTableWidgetItem *cmdDescItem = preferences.commandTable->item(row, 1); if (cmdNameItem && cmdDescItem) { newCmdMap.insert (cmdNameItem->text(), cmdDescItem->text()); log->debugLog (QString ("Name: %1\tDesc: %2").arg(cmdNameItem->text()).arg(cmdDescItem->text())); } } writeCommandMap (newCmdMap); refreshDevices (); refreshTimer->setInterval (refreshRate * 1000); } }
void LogConfigDialog::buildDialog() { setWindowTitle(tr("Configure Logging")); QPushButton* button; QVBoxLayout *vLayout; QHBoxLayout *hLayout; QFormLayout *fLayout = new QFormLayout; m_configFilePath = new QLineEdit(); m_logFilePath = new QLineEdit(); hLayout = new QHBoxLayout(); vLayout = new QVBoxLayout(); vLayout->addWidget(new QLabel(tr("Configuration File: "))); vLayout->addWidget(new QLabel(tr("Log File: "))); hLayout->addLayout(vLayout); vLayout = new QVBoxLayout(); vLayout->addWidget(m_configFilePath); vLayout->addWidget(m_logFilePath); hLayout->addLayout(vLayout); vLayout = new QVBoxLayout(); button = new QPushButton(tr("Load")); connect(button, SIGNAL(clicked()), this, SLOT(loadLogConfiguration())); vLayout->addWidget(button); button = new QPushButton(tr("Select")); connect(button, SIGNAL(clicked()), this, SLOT(selectLogFile())); vLayout->addWidget(button); hLayout->addLayout(vLayout); vLayout = new QVBoxLayout(); button = new QPushButton(tr("Save")); connect(button, SIGNAL(clicked()), this, SLOT(saveLogConfiguration())); vLayout->addWidget(button); vLayout->addStretch(); hLayout->addLayout(vLayout); fLayout->addRow(hLayout); hLayout = new QHBoxLayout(); vLayout = new QVBoxLayout(); vLayout->addWidget(new QLabel(tr("Routings:"))); button = new QPushButton(tr("Edit")); connect(button, SIGNAL(clicked()), this, SLOT(editSelectedRouting())); vLayout->addWidget(button); button = new QPushButton(tr("Add")); connect(button, SIGNAL(clicked()), this, SLOT(addRouting())); vLayout->addWidget(button); button = new QPushButton(tr("Copy")); connect(button, SIGNAL(clicked()), this, SLOT(copyRouting())); vLayout->addWidget(button); button = new QPushButton(tr("Delete")); connect(button, SIGNAL(clicked()), this, SLOT(delSelectedRouting())); vLayout->addWidget(button); vLayout->addStretch(); hLayout->addLayout(vLayout); m_routingTableView = new QTableView(); m_tableModel = new LogRoutingInfoTableModel(); m_routingTableView->setModel(m_tableModel); LinkBackFilterDelegate* delegate = new LinkBackFilterDelegate(m_routingTableView); m_routingTableView->setItemDelegate(delegate); CheckBoxOnlyDelegate * cboDelegate = new CheckBoxOnlyDelegate(m_routingTableView); m_routingTableView->setItemDelegateForColumn(LogRoutingInfoTableModel::enabledColumn, cboDelegate); m_routingTableView->setItemDelegateForColumn(LogRoutingInfoTableModel::routFileColumn, cboDelegate); m_routingTableView->setItemDelegateForColumn(LogRoutingInfoTableModel::routScreenColumn, cboDelegate); m_routingTableView->setItemDelegateForColumn(LogRoutingInfoTableModel::routDebugColumn, cboDelegate); hLayout->addWidget(m_routingTableView); fLayout->addRow(hLayout); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); fLayout->addRow(buttonBox); setLayout(fLayout); QSettings settings; restoreGeometry(settings.value("LogConfigDialogGeometry").toByteArray()); setConfigFilePath(settings.value("LogConfigDialogLastConfigPath").toString()); QString s = settings.value("LogConfigDialogRoutingColumnWidths").toString(); if (s.length() > 0) { QStringList list = s.split(','); bool ok = true; for (int i=0; i<list.count() && i<LogRoutingInfoTableModel::numColumns; ++i) { int width = list[i].toInt(&ok); if (ok && width > 0) { m_routingTableView->setColumnWidth(i, width); } } } }