From c8c4f986106405c60db29cef758e1796e9d50f3a Mon Sep 17 00:00:00 2001 From: Jordan Sherer Date: Tue, 28 Aug 2018 16:35:14 -0400 Subject: [PATCH] Added offset to call activity display and sort menu --- mainwindow.cpp | 27 ++++++++++++++++++++------- mainwindow.h | 2 +- mainwindow.ui | 13 +++++++++---- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 311015d..4e9a243 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -7207,14 +7207,15 @@ QString MainWindow::getSortBy(QString key, QString defaultValue){ return m_sortCache.value(key, QVariant(defaultValue)).toString(); } -void MainWindow::buildSortByMenu(QMenu * menu, QString key, QString defaultValue, QMap values){ +void MainWindow::buildSortByMenu(QMenu * menu, QString key, QString defaultValue, QList> values){ auto currentSortBy = getSortBy(key, defaultValue); QActionGroup * g = new QActionGroup(menu); g->setExclusive(true); - foreach(auto k, values.keys()){ - auto v = values[k]; + foreach(auto p, values){ + auto k = p.first; + auto v = p.second; auto a = menu->addAction(k); a->setCheckable(true); a->setChecked(v == currentSortBy); @@ -7241,6 +7242,7 @@ void MainWindow::buildBandActivitySortByMenu(QMenu * menu){ void MainWindow::buildCallActivitySortByMenu(QMenu * menu){ buildSortByMenu(menu, "callActivity", "callsign", { {"Callsign", "callsign"}, + {"Frequency Offset", "offset"}, {"Distance (closest first)", "distance"}, {"Distance (farthest first)", "-distance"}, {"Last heard timestamp (oldest first)", "timestamp"}, @@ -9558,6 +9560,13 @@ void MainWindow::displayCallActivity() { // Build the table QList < QString > keys = m_callActivity.keys(); + auto compareOffset = [this](const QString left, QString right) { + auto leftActivity = m_callActivity[left]; + auto rightActivity = m_callActivity[right]; + + return leftActivity.freq < rightActivity.freq; + }; + auto compareDistance = [this](const QString left, QString right) { auto leftActivity = m_callActivity[left]; auto rightActivity = m_callActivity[right]; @@ -9599,7 +9608,9 @@ void MainWindow::displayCallActivity() { reverse = true; } - if(sortBy == "distance"){ + if(sortBy == "offset"){ + qSort(keys.begin(), keys.end(), compareOffset); + } else if(sortBy == "distance"){ qSort(keys.begin(), keys.end(), compareDistance); } else if(sortBy == "timestamp"){ qSort(keys.begin(), keys.end(), compareTimestamp); @@ -9629,12 +9640,13 @@ void MainWindow::displayCallActivity() { displayItem->setData(Qt::UserRole, QVariant((d.call))); ui->tableWidgetCalls->setItem(ui->tableWidgetCalls->rowCount() - 1, 0, displayItem); ui->tableWidgetCalls->setItem(ui->tableWidgetCalls->rowCount() - 1, 1, new QTableWidgetItem(QString("(%1)").arg(since(d.utcTimestamp)))); - ui->tableWidgetCalls->setItem(ui->tableWidgetCalls->rowCount() - 1, 2, new QTableWidgetItem(QString("%1").arg(Varicode::formatSNR(d.snr)))); - ui->tableWidgetCalls->setItem(ui->tableWidgetCalls->rowCount() - 1, 3, new QTableWidgetItem(QString("%1").arg(d.grid))); + ui->tableWidgetCalls->setItem(ui->tableWidgetCalls->rowCount() - 1, 2, new QTableWidgetItem(QString("%1").arg(d.freq))); + ui->tableWidgetCalls->setItem(ui->tableWidgetCalls->rowCount() - 1, 3, new QTableWidgetItem(QString("%1").arg(Varicode::formatSNR(d.snr)))); + ui->tableWidgetCalls->setItem(ui->tableWidgetCalls->rowCount() - 1, 4, new QTableWidgetItem(QString("%1").arg(d.grid))); auto distanceItem = new QTableWidgetItem(calculateDistance(d.grid)); distanceItem->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); - ui->tableWidgetCalls->setItem(ui->tableWidgetCalls->rowCount() - 1, 4, distanceItem); + ui->tableWidgetCalls->setItem(ui->tableWidgetCalls->rowCount() - 1, 5, distanceItem); if (call == selectedCall) { ui->tableWidgetCalls->selectRow(ui->tableWidgetCalls->rowCount() - 1); @@ -9646,6 +9658,7 @@ void MainWindow::displayCallActivity() { ui->tableWidgetCalls->resizeColumnToContents(1); ui->tableWidgetCalls->resizeColumnToContents(2); ui->tableWidgetCalls->resizeColumnToContents(3); + ui->tableWidgetCalls->resizeColumnToContents(4); // Reset the scroll position ui->tableWidgetCalls->verticalScrollBar()->setValue(currentScrollPos); diff --git a/mainwindow.h b/mainwindow.h index 4d21c19..3774362 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -262,7 +262,7 @@ private slots: void on_qthMacroButton_clicked(); void setSortBy(QString key, QString value); QString getSortBy(QString key, QString defaultValue); - void buildSortByMenu(QMenu * menu, QString key, QString defaultValue, QMap values); + void buildSortByMenu(QMenu * menu, QString key, QString defaultValue, QList > values); void buildBandActivitySortByMenu(QMenu * menu); void buildCallActivitySortByMenu(QMenu * menu); void buildQueryMenu(QMenu *, QString callsign); diff --git a/mainwindow.ui b/mainwindow.ui index c1769fd..e887be1 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -221,7 +221,7 @@ QPushButton[oob="true"] { - 14.074 000 + 14.078 000 true @@ -1178,6 +1178,11 @@ QTextEdit[transmitting="true"] { Callsign + + + Offset + + Age @@ -1250,15 +1255,15 @@ QTextEdit[transmitting="true"] { - - false - 0 30 + + false + <html><head/><body><p>Send your station location message</p></body></html>