| 204 | } // namespace |
| 205 | |
| 206 | PskReporterMapDialog::PskReporterMapDialog(RadioModel* radioModel, |
| 207 | PropForecastClient* propForecast, |
| 208 | QWidget* parent) |
| 209 | : PersistentDialog(tr("PSK Reporter"), |
| 210 | QStringLiteral("PskReporterMapGeometry"), parent) |
| 211 | , m_radioModel(radioModel) |
| 212 | , m_client(new PskReporterClient(this)) |
| 213 | , m_propForecast(propForecast) |
| 214 | { |
| 215 | setMinimumSize(720, 480); |
| 216 | |
| 217 | auto* root = new QVBoxLayout(bodyWidget()); |
| 218 | root->setContentsMargins(6, 6, 6, 6); |
| 219 | root->setSpacing(6); |
| 220 | |
| 221 | auto* topBar = new QHBoxLayout(); |
| 222 | |
| 223 | topBar->addWidget(new QLabel(tr("Band:"), bodyWidget())); |
| 224 | m_bandCombo = new QComboBox(bodyWidget()); |
| 225 | m_bandCombo->addItem(tr("All")); |
| 226 | for (const char* b : { "160m", "80m", "60m", "40m", "30m", "20m", |
| 227 | "17m", "15m", "12m", "10m", "6m", "VHF+" }) { |
| 228 | m_bandCombo->addItem(QString::fromLatin1(b)); |
| 229 | } |
| 230 | topBar->addWidget(m_bandCombo); |
| 231 | |
| 232 | topBar->addWidget(new QLabel(tr("Mode:"), bodyWidget())); |
| 233 | m_modeCombo = new QComboBox(bodyWidget()); |
| 234 | m_modeCombo->addItem(tr("All")); |
| 235 | for (const char* m : { "FT8", "FT4", "WSPR", "JS8", "CW", "PSK", |
| 236 | "RTTY", "SSB", "Other" }) { |
| 237 | m_modeCombo->addItem(QString::fromLatin1(m)); |
| 238 | } |
| 239 | topBar->addWidget(m_modeCombo); |
| 240 | |
| 241 | topBar->addWidget(new QLabel(tr("Lookback:"), bodyWidget())); |
| 242 | m_lookbackCombo = new QComboBox(bodyWidget()); |
| 243 | m_lookbackCombo->addItem(tr("15 min"), 15 * 60); |
| 244 | m_lookbackCombo->addItem(tr("30 min"), 30 * 60); |
| 245 | m_lookbackCombo->addItem(tr("1 hour"), 60 * 60); |
| 246 | m_lookbackCombo->addItem(tr("2 hours"), 2 * 60 * 60); |
| 247 | m_lookbackCombo->addItem(tr("4 hours"), 4 * 60 * 60); |
| 248 | m_lookbackCombo->addItem(tr("8 hours"), 8 * 60 * 60); |
| 249 | topBar->addWidget(m_lookbackCombo); |
| 250 | |
| 251 | topBar->addSpacing(12); |
| 252 | topBar->addWidget(new QLabel(tr("Update every:"), bodyWidget())); |
| 253 | |
| 254 | m_intervalCombo = new QComboBox(bodyWidget()); |
| 255 | // PSK Reporter policy floors HTTP polling at 5 minutes; "Live" uses |
| 256 | // their sanctioned MQTT feed instead of fast polling. |
| 257 | m_intervalCombo->addItem(tr("Live (MQTT)"), PskReporterClient::kLiveMqtt); |
| 258 | m_intervalCombo->addItem(tr("5 minutes"), 5 * 60 * 1000); |
| 259 | m_intervalCombo->addItem(tr("10 minutes"), 10 * 60 * 1000); |
| 260 | m_intervalCombo->addItem(tr("15 minutes"), 15 * 60 * 1000); |
| 261 | m_intervalCombo->addItem(tr("30 minutes"), 30 * 60 * 1000); |
| 262 | m_intervalCombo->addItem(tr("1 hour"), 60 * 60 * 1000); |
| 263 | topBar->addWidget(m_intervalCombo); |
nothing calls this directly
no test coverage detected