Added offset to call activity display and sort menu

This commit is contained in:
Jordan Sherer 2018-08-28 16:35:14 -04:00
parent 0ecbbd0da1
commit c8c4f98610
3 changed files with 30 additions and 12 deletions

View File

@ -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<QString, QString> values){
void MainWindow::buildSortByMenu(QMenu * menu, QString key, QString defaultValue, QList<QPair<QString, QString>> 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);

View File

@ -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<QString, QString> values);
void buildSortByMenu(QMenu * menu, QString key, QString defaultValue, QList<QPair<QString, QString> > values);
void buildBandActivitySortByMenu(QMenu * menu);
void buildCallActivitySortByMenu(QMenu * menu);
void buildQueryMenu(QMenu *, QString callsign);

View File

@ -221,7 +221,7 @@ QPushButton[oob=&quot;true&quot;] {
</string>
</property>
<property name="text">
<string>14.074 000</string>
<string>14.078 000</string>
</property>
<property name="flat">
<bool>true</bool>
@ -1178,6 +1178,11 @@ QTextEdit[transmitting=&quot;true&quot;] {
<string>Callsign</string>
</property>
</column>
<column>
<property name="text">
<string>Offset</string>
</property>
</column>
<column>
<property name="text">
<string>Age</string>
@ -1250,15 +1255,15 @@ QTextEdit[transmitting=&quot;true&quot;] {
</item>
<item row="1" column="4">
<widget class="QPushButton" name="qthMacroButton">
<property name="visible">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="visible">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Send your station location message&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>