From 648f329b501a59a497650b13b139f751a4e52c96 Mon Sep 17 00:00:00 2001 From: Daniele Forsi Date: Sat, 12 Aug 2023 20:26:36 +0200 Subject: [PATCH 1/6] IBP Beacons: Add the "DX Entity" column as in the IBP website --- plugins/feature/map/ibpbeacon.cpp | 36 +++++++++++----------- plugins/feature/map/ibpbeacon.h | 5 ++- plugins/feature/map/mapibpbeacondialog.cpp | 2 ++ plugins/feature/map/mapibpbeacondialog.h | 1 + plugins/feature/map/mapibpbeacondialog.ui | 5 +++ 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/plugins/feature/map/ibpbeacon.cpp b/plugins/feature/map/ibpbeacon.cpp index 4d3cc263a..10688373d 100644 --- a/plugins/feature/map/ibpbeacon.cpp +++ b/plugins/feature/map/ibpbeacon.cpp @@ -19,24 +19,24 @@ // Beacon information from https://www.ncdxf.org/beacon/beaconlocations.html QList IBPBeacon::m_beacons = { - IBPBeacon("4U1UN", "United Nations NY", "FN30AS", 0), - IBPBeacon("VE8AT", "North Canada", "CP38GH", 10), - IBPBeacon("W6WX", "USA (CA)", "CM97BD", 20), - IBPBeacon("KH6RS", "Hawaii", "BL10TS", 30), - IBPBeacon("ZL6B", "New Zealand", "RE78TW", 40), - IBPBeacon("VK6RBP", "West Australia", "OF87AV", 50), - IBPBeacon("JA2IGY", "Japan", "PM84JK", 60), - IBPBeacon("RR9O", "Siberia", "NO14KX", 70), - IBPBeacon("VR2B", "China", "OL72BG", 80), - IBPBeacon("4S7B", "Sri Lanka", "MJ96WV", 90), - IBPBeacon("ZS6DN", "South Africa", "KG33XI", 100), - IBPBeacon("5Z4B", "Kenya", "KI88HR", 110), - IBPBeacon("4X6TU", "Israel", "KM72JB", 120), - IBPBeacon("OH2B", "Finland", "KP20EH", 130), - IBPBeacon("CS3B", "Madeira", "IM12JT", 140), - IBPBeacon("LU4AA", "Argentina", "GF05TJ", 150), - IBPBeacon("OA4B", "Peru", "FH17MW", 160), - IBPBeacon("YV5B", "Venezuela", "FJ69CC", 170) + IBPBeacon("United Nations", "4U1UN", "New York City", "FN30AS", 0), + IBPBeacon("Canada", "VE8AT", "Inuvik (NT)", "CP38GH", 10), + IBPBeacon("United States", "W6WX", "Mt. Umunhum (CA)", "CM97BD", 20), + IBPBeacon("Hawaii", "KH6RS", "Maui ", "BL10TS", 30), + IBPBeacon("New Zealand", "ZL6B", "Masterton", "RE78TW", 40), + IBPBeacon("Australia", "VK6RBP", "Rolystone (WA)", "OF87AV", 50), + IBPBeacon("Japan", "JA2IGY", "Mt. Asama", "PM84JK", 60), + IBPBeacon("Russia", "RR9O", "Novosibirsk", "NO14KX", 70), + IBPBeacon("Hong Kong", "VR2B", "Hong Kong", "OL72BG", 80), + IBPBeacon("Sri Lanka", "4S7B", "Colombo", "MJ96WV", 90), + IBPBeacon("South Africa", "ZS6DN", "Pretoria", "KG33XI", 100), + IBPBeacon("Kenya", "5Z4B", "Kikuyu", "KI88HR", 110), + IBPBeacon("Israel", "4X6TU", "Tel Aviv", "KM72JB", 120), + IBPBeacon("Finland", "OH2B", "Lohja", "KP20EH", 130), + IBPBeacon("Madeira", "CS3B", "São Jorge", "IM12JT", 140), + IBPBeacon("Argentina", "LU4AA", "Buenos Aires", "GF05TJ", 150), + IBPBeacon("Peru", "OA4B", "Lima", "FH17MW", 160), + IBPBeacon("Venezuela", "YV5B", "Caracas", "FJ69CC", 170) }; // The frequencies in MHz through which the IBP beacons rotate diff --git a/plugins/feature/map/ibpbeacon.h b/plugins/feature/map/ibpbeacon.h index bb0f97bd5..ebb39c980 100644 --- a/plugins/feature/map/ibpbeacon.h +++ b/plugins/feature/map/ibpbeacon.h @@ -28,6 +28,7 @@ struct IBPBeacon { + QString m_dxEntity; QString m_callsign; QString m_location; QString m_locator; @@ -35,7 +36,8 @@ struct IBPBeacon { float m_latitude; float m_longitude; - IBPBeacon(const QString& callsign, const QString& location, const QString& locator, int offset) : + IBPBeacon(const QString& dxEntity, const QString& callsign, const QString& location, const QString& locator, int offset) : + m_dxEntity(dxEntity), m_callsign(callsign), m_location(location), m_locator(locator), @@ -48,6 +50,7 @@ struct IBPBeacon { { QStringList list; list.append("IBP Beacon"); + list.append(QString("DX Entity: %1").arg(m_dxEntity)); list.append(QString("Callsign: %1").arg(m_callsign)); list.append(QString("Frequency: 14.1, 18.11, 21.15, 24.93, 28.2 MHz")); list.append(QString("Power: 100 Watts ERP")); diff --git a/plugins/feature/map/mapibpbeacondialog.cpp b/plugins/feature/map/mapibpbeacondialog.cpp index be2b96ed0..144ecac88 100644 --- a/plugins/feature/map/mapibpbeacondialog.cpp +++ b/plugins/feature/map/mapibpbeacondialog.cpp @@ -38,6 +38,7 @@ MapIBPBeaconDialog::MapIBPBeaconDialog(MapGUI *gui, QWidget* parent) : ui->beacons->setItem(row, IBP_BEACON_COL_FREQUENCY, new QTableWidgetItem(QString::number(IBPBeacon::m_frequencies[row], 'f', 3))); ui->beacons->setItem(row, IBP_BEACON_COL_CALLSIGN, new QTableWidgetItem("")); ui->beacons->setItem(row, IBP_BEACON_COL_LOCATION, new QTableWidgetItem("")); + ui->beacons->setItem(row, IBP_BEACON_COL_DX_ENTITY, new QTableWidgetItem("")); ui->beacons->setItem(row, IBP_BEACON_COL_AZIMUTH, new QTableWidgetItem("")); ui->beacons->setItem(row, IBP_BEACON_COL_DISTANCE, new QTableWidgetItem("")); } @@ -60,6 +61,7 @@ void MapIBPBeaconDialog::updateTable(QTime time) { ui->beacons->item(row, IBP_BEACON_COL_CALLSIGN)->setText(IBPBeacon::m_beacons[index].m_callsign); ui->beacons->item(row, IBP_BEACON_COL_LOCATION)->setText(IBPBeacon::m_beacons[index].m_location); + ui->beacons->item(row, IBP_BEACON_COL_DX_ENTITY)->setText(IBPBeacon::m_beacons[index].m_dxEntity); // Calculate azimuth and distance to beacon azEl.setTarget(IBPBeacon::m_beacons[index].m_latitude, IBPBeacon::m_beacons[index].m_longitude, 0.0); diff --git a/plugins/feature/map/mapibpbeacondialog.h b/plugins/feature/map/mapibpbeacondialog.h index 4496d8d0d..86bba5bd5 100644 --- a/plugins/feature/map/mapibpbeacondialog.h +++ b/plugins/feature/map/mapibpbeacondialog.h @@ -49,6 +49,7 @@ private: IBP_BEACON_COL_FREQUENCY, IBP_BEACON_COL_CALLSIGN, IBP_BEACON_COL_LOCATION, + IBP_BEACON_COL_DX_ENTITY, IBP_BEACON_COL_AZIMUTH, IBP_BEACON_COL_DISTANCE }; diff --git a/plugins/feature/map/mapibpbeacondialog.ui b/plugins/feature/map/mapibpbeacondialog.ui index 038ab63ea..4ad54cf0b 100644 --- a/plugins/feature/map/mapibpbeacondialog.ui +++ b/plugins/feature/map/mapibpbeacondialog.ui @@ -89,6 +89,11 @@ Location + + + DX Entity + + Azimuth (°) From 2ee8c6d137d0bbbae88b90dbff99678cdb123968 Mon Sep 17 00:00:00 2001 From: Daniele Forsi Date: Sat, 12 Aug 2023 19:41:39 +0200 Subject: [PATCH 2/6] IBP Beacons: Align numeric cells to the right --- plugins/feature/map/mapibpbeacondialog.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/feature/map/mapibpbeacondialog.cpp b/plugins/feature/map/mapibpbeacondialog.cpp index 144ecac88..79a767bb7 100644 --- a/plugins/feature/map/mapibpbeacondialog.cpp +++ b/plugins/feature/map/mapibpbeacondialog.cpp @@ -59,6 +59,7 @@ void MapIBPBeaconDialog::updateTable(QTime time) for (int row = 0; row < IBPBeacon::m_frequencies.size(); row++) { + ui->beacons->item(row, IBP_BEACON_COL_FREQUENCY)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); ui->beacons->item(row, IBP_BEACON_COL_CALLSIGN)->setText(IBPBeacon::m_beacons[index].m_callsign); ui->beacons->item(row, IBP_BEACON_COL_LOCATION)->setText(IBPBeacon::m_beacons[index].m_location); ui->beacons->item(row, IBP_BEACON_COL_DX_ENTITY)->setText(IBPBeacon::m_beacons[index].m_dxEntity); @@ -67,8 +68,10 @@ void MapIBPBeaconDialog::updateTable(QTime time) azEl.setTarget(IBPBeacon::m_beacons[index].m_latitude, IBPBeacon::m_beacons[index].m_longitude, 0.0); azEl.calculate(); ui->beacons->item(row, IBP_BEACON_COL_AZIMUTH)->setData(Qt::DisplayRole, round(azEl.getAzimuth())); + ui->beacons->item(row, IBP_BEACON_COL_AZIMUTH)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); int km = round(azEl.getDistance()/1000); ui->beacons->item(row, IBP_BEACON_COL_DISTANCE)->setData(Qt::DisplayRole, km); + ui->beacons->item(row, IBP_BEACON_COL_DISTANCE)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); index--; if (index < 0) { From 413d8555afe748fb6ebd7e55a0a2192aace35dbb Mon Sep 17 00:00:00 2001 From: Daniele Forsi Date: Tue, 22 Aug 2023 19:21:37 +0200 Subject: [PATCH 3/6] IBP Beacons: Resize the columns --- plugins/feature/map/mapibpbeacondialog.cpp | 16 ++++++++++++++++ plugins/feature/map/mapibpbeacondialog.h | 2 ++ plugins/feature/map/mapibpbeacondialog.ui | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/plugins/feature/map/mapibpbeacondialog.cpp b/plugins/feature/map/mapibpbeacondialog.cpp index 79a767bb7..ced27ea2d 100644 --- a/plugins/feature/map/mapibpbeacondialog.cpp +++ b/plugins/feature/map/mapibpbeacondialog.cpp @@ -42,6 +42,7 @@ MapIBPBeaconDialog::MapIBPBeaconDialog(MapGUI *gui, QWidget* parent) : ui->beacons->setItem(row, IBP_BEACON_COL_AZIMUTH, new QTableWidgetItem("")); ui->beacons->setItem(row, IBP_BEACON_COL_DISTANCE, new QTableWidgetItem("")); } + resizeTable(); updateTable(QTime::currentTime()); } @@ -50,6 +51,21 @@ MapIBPBeaconDialog::~MapIBPBeaconDialog() delete ui; } +// Fill table with a row of dummy data that will size the columns nicely +void MapIBPBeaconDialog::resizeTable(void) +{ + int row = ui->beacons->rowCount(); + ui->beacons->setRowCount(row + 1); + ui->beacons->setItem(row, IBP_BEACON_COL_FREQUENCY, new QTableWidgetItem("12.345")); + ui->beacons->setItem(row, IBP_BEACON_COL_CALLSIGN, new QTableWidgetItem("12345")); + ui->beacons->setItem(row, IBP_BEACON_COL_LOCATION, new QTableWidgetItem("1234567890123456")); + ui->beacons->setItem(row, IBP_BEACON_COL_DX_ENTITY, new QTableWidgetItem("1234567890123456")); + ui->beacons->setItem(row, IBP_BEACON_COL_AZIMUTH, new QTableWidgetItem("-123")); + ui->beacons->setItem(row, IBP_BEACON_COL_DISTANCE, new QTableWidgetItem("12345")); + ui->beacons->resizeColumnsToContents(); + ui->beacons->removeRow(row); +} + void MapIBPBeaconDialog::updateTable(QTime time) { AzEl azEl = *m_gui->getAzEl(); diff --git a/plugins/feature/map/mapibpbeacondialog.h b/plugins/feature/map/mapibpbeacondialog.h index 86bba5bd5..5381cf22f 100644 --- a/plugins/feature/map/mapibpbeacondialog.h +++ b/plugins/feature/map/mapibpbeacondialog.h @@ -45,6 +45,8 @@ private: QTimer m_timer; Ui::MapIBPBeaconDialog* ui; + void resizeTable(void); + enum BeaconCol { IBP_BEACON_COL_FREQUENCY, IBP_BEACON_COL_CALLSIGN, diff --git a/plugins/feature/map/mapibpbeacondialog.ui b/plugins/feature/map/mapibpbeacondialog.ui index 4ad54cf0b..ba637a5e7 100644 --- a/plugins/feature/map/mapibpbeacondialog.ui +++ b/plugins/feature/map/mapibpbeacondialog.ui @@ -6,7 +6,7 @@ 0 0 - 584 + 590 311 From ffacca397cb3baca5b9c013014ccf8cb1ba20604 Mon Sep 17 00:00:00 2001 From: Daniele Forsi Date: Sat, 12 Aug 2023 22:24:46 +0200 Subject: [PATCH 4/6] Beacons: Align numeric cells to the right --- plugins/feature/map/mapbeacondialog.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/feature/map/mapbeacondialog.cpp b/plugins/feature/map/mapbeacondialog.cpp index 454552bf0..62a896726 100644 --- a/plugins/feature/map/mapbeacondialog.cpp +++ b/plugins/feature/map/mapbeacondialog.cpp @@ -57,8 +57,10 @@ void MapBeaconDialog::updateTable() freq->setText(beacon->getFrequencyText()); freq->setData(Qt::UserRole, beacon->m_frequency); ui->beacons->setItem(row, BEACON_COL_FREQUENCY, freq); + ui->beacons->item(row, BEACON_COL_FREQUENCY)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); ui->beacons->setItem(row, BEACON_COL_LOCATION, new QTableWidgetItem(beacon->m_locator)); ui->beacons->setItem(row, BEACON_COL_POWER, new QTableWidgetItem(beacon->m_power)); + ui->beacons->item(row, BEACON_COL_POWER)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); ui->beacons->setItem(row, BEACON_COL_POLARIZATION, new QTableWidgetItem(beacon->m_polarization)); ui->beacons->setItem(row, BEACON_COL_PATTERN, new QTableWidgetItem(beacon->m_pattern)); ui->beacons->setItem(row, BEACON_COL_KEY, new QTableWidgetItem(beacon->m_key)); @@ -66,11 +68,14 @@ void MapBeaconDialog::updateTable() azEl.setTarget(beacon->m_latitude, beacon->m_longitude, beacon->m_altitude); azEl.calculate(); ui->beacons->setItem(row, BEACON_COL_AZIMUTH, new QTableWidgetItem(QString("%1").arg(round(azEl.getAzimuth())))); + ui->beacons->item(row, BEACON_COL_AZIMUTH)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); ui->beacons->setItem(row, BEACON_COL_ELEVATION, new QTableWidgetItem(QString("%1").arg(round(azEl.getElevation())))); + ui->beacons->item(row, BEACON_COL_ELEVATION)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); int km = round(azEl.getDistance()/1000); QTableWidgetItem *dist = new QTableWidgetItem(); dist->setData(Qt::DisplayRole, km); ui->beacons->setItem(row, BEACON_COL_DISTANCE, dist); + ui->beacons->item(row, BEACON_COL_DISTANCE)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); row++; } } From df5a7f370d7d90ba9deb144fbfd340f0f75619e1 Mon Sep 17 00:00:00 2001 From: Daniele Forsi Date: Sun, 13 Aug 2023 00:18:59 +0200 Subject: [PATCH 5/6] Beacons: Add symbol of degrees to column headers --- plugins/feature/map/mapbeacondialog.ui | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/feature/map/mapbeacondialog.ui b/plugins/feature/map/mapbeacondialog.ui index 4b749b039..f8523a95f 100644 --- a/plugins/feature/map/mapbeacondialog.ui +++ b/plugins/feature/map/mapbeacondialog.ui @@ -156,12 +156,12 @@ - Azimuth + Azimuth (°) - Elevation + Elevation (°) From 552d17567709c590da797333ab209ad96a9f4455 Mon Sep 17 00:00:00 2001 From: Daniele Forsi Date: Sun, 13 Aug 2023 00:01:20 +0200 Subject: [PATCH 6/6] Radio Time: Align numeric cells to the right --- plugins/feature/map/mapradiotimedialog.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/feature/map/mapradiotimedialog.cpp b/plugins/feature/map/mapradiotimedialog.cpp index 4f2ebf478..797944783 100644 --- a/plugins/feature/map/mapradiotimedialog.cpp +++ b/plugins/feature/map/mapradiotimedialog.cpp @@ -52,16 +52,21 @@ void MapRadioTimeDialog::updateTable() freq->setText(QString("%1").arg(transmitters[i].m_frequency/1000.0)); freq->setData(Qt::UserRole, transmitters[i].m_frequency); ui->transmitters->setItem(row, TRANSMITTER_COL_FREQUENCY, freq); + ui->transmitters->item(row, TRANSMITTER_COL_FREQUENCY)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); ui->transmitters->setItem(row, TRANSMITTER_COL_LOCATION, new QTableWidgetItem(QString("%1,%2").arg(transmitters[i].m_latitude).arg(transmitters[i].m_longitude))); ui->transmitters->setItem(row, TRANSMITTER_COL_POWER, new QTableWidgetItem(QString("%1").arg(transmitters[i].m_power))); + ui->transmitters->item(row, TRANSMITTER_COL_POWER)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); azEl.setTarget(transmitters[i].m_latitude, transmitters[i].m_longitude, 1.0); azEl.calculate(); ui->transmitters->setItem(row, TRANSMITTER_COL_AZIMUTH, new QTableWidgetItem(QString("%1").arg(round(azEl.getAzimuth())))); + ui->transmitters->item(row, TRANSMITTER_COL_AZIMUTH)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); ui->transmitters->setItem(row, TRANSMITTER_COL_ELEVATION, new QTableWidgetItem(QString("%1").arg(round(azEl.getElevation())))); + ui->transmitters->item(row, TRANSMITTER_COL_ELEVATION)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); int km = round(azEl.getDistance()/1000); QTableWidgetItem *dist = new QTableWidgetItem(); dist->setData(Qt::DisplayRole, km); ui->transmitters->setItem(row, TRANSMITTER_COL_DISTANCE, dist); + ui->transmitters->item(row, TRANSMITTER_COL_DISTANCE)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); row++; } ui->transmitters->setSortingEnabled(true);