public async Task newQso(string callsign, string myCallsign, decimal freq, string mode, string rstRcvd, string rstSnt, string comments) { QSO qso = qsoFactory.create(callsign, myCallsign, freq, mode, rstRcvd, rstSnt, comments); qsoList.Insert(0, qso); await httpService.postQso(qso); }
public string adif(QSO qso, Dictionary <string, string> adifParams) { if (String.IsNullOrEmpty(qso.band)) { Logger.Error($"No band data. Freq: {qso.freq}"); } string[] dt = qso.ts.Split(' '); string r = adifField("CALL", qso.cs) + adifField("QSO_DATE", dt[0].Replace("-", "")) + adifField("TIME_OFF", dt[1].Replace(":", "")) + adifField("TIME_ON", dt[1].Replace(":", "")) + adifField("BAND", Band.waveLength(qso.band)) + adifField("STATION_CALLSIGN", qso.myCS) + adifField("FREQ", adifFormatFreq(qso.freq)) + adifField("MODE", qso.mode) + adifField("RST_RCVD", qso.rcv) + adifField("RST_SENT", qso.snt) + adifField("MY_GRIDSQUARE", qso.loc) + adifField("GRIDSQUARE", qso.loc_rcv); for (int field = 0; field < TnxlogConfig.QthFieldCount; field++) { string fieldName = tnxlog.config.qthAdifFields[field]; if (!string.IsNullOrEmpty(fieldName)) { r += adifField(fieldName, adifParams.ContainsKey(fieldName) ? adifParams[fieldName] : qso.qth[field]); } } if (!string.IsNullOrEmpty(tnxlog.config.commentAdifField)) { r += adifField(tnxlog.config.commentAdifField, qso.comments); } r += " <EOR>"; return(r); }
private async void newAdifLogEntry(object sender, NewAdifEntryEventArgs e) { QSO qso = qsoFactory.fromADIF(e.adif); _formMain.DoInvoke(() => { qsoList.Insert(0, qso); }); writeQsoList(); await httpService.postQso(qso); }
private bool qsoFilterPredicate(QSO qso) { if (filterTextBox.Text.Contains("*")) { return(reFilter.IsMatch(qso.cs)); } else { return(qso.cs == filterTextBox.Text); } }
public async Task deleteQso(QSO qso) { if (qso.serverTs != 0) { QsoDeleteData qdd = new QsoDeleteData { delete = qso.serverTs }; if (logQueue.IsEmpty && config.token != null) { if (!await _postDeleteQso(qdd)) { addToQueue(qdd); } } else { addToQueue(qdd); } } }
public QSO create(string callsign, string myCallsign, decimal freq, string mode, string rstRcvd, string rstSnt, string comments, DateTime?timestamp = null) { QSO qso = new QSO { _ts = (timestamp == null ? DateTime.UtcNow : (DateTime)timestamp).ToString("yyyy-MM-dd HH:mm:ss"), _myCS = myCallsign, _band = Band.fromFreq(freq), _freq = QSO.formatFreq(freq), _mode = mode, _cs = callsign, _snt = rstSnt, _rcv = rstRcvd, _freqRx = freq.ToString(), _no = no++, _loc = tnxlog.loc, _comments = comments, _qth = new string[TnxlogConfig.QthFieldCount] }; for (int field = 0; field < TnxlogConfig.QthFieldCount; field++) { qso._qth[field] = tnxlog.getQthFieldValue(field); } return(qso); }
public QSO fromADIF(string adif, string[] qthFields = null, string commentField = "COMMENT") { string date = getAdifField(adif, "QSO_DATE"); string time = getAdifField(adif, "TIME_OFF"); if (string.IsNullOrEmpty(time)) { time = getAdifField(adif, "TIME_ON"); } string myCs = getAdifField(adif, "STATION_CALLSIGN"); if (string.IsNullOrEmpty(myCs)) { myCs = getAdifField(adif, "OPERATOR"); } string adifFreq = QSO.FixSeparator(getAdifField(adif, "FREQ")); decimal freq = Convert.ToDecimal(adifFreq, System.Globalization.NumberFormatInfo.InvariantInfo) * 1000; string band = Band.fromFreq(freq); string mode = getAdifField(adif, "MODE"); string submode = getAdifField(adif, "SUBMODE"); if (!string.IsNullOrEmpty(submode) && Mode.Names.Contains(submode)) { mode = submode; } if (Mode.DefFreq.ContainsKey(mode)) { decimal defFreq = Mode.DefFreq[mode].FirstOrDefault(item => Band.fromFreq(item) == band); if (defFreq != 0) { freq = defFreq; } } QSO qso = new QSO { _ts = $"{date.Substring(0, 4)}-{date.Substring(4, 2)}-{date.Substring(6, 2)} {time.Substring(0, 2)}:{time.Substring(2, 2)}:00", _myCS = myCs, freq = QSO.formatFreq(freq), _mode = mode, _cs = getAdifField(adif, "CALL"), _snt = getAdifField(adif, "RST_SENT"), _rcv = getAdifField(adif, "RST_RCVD"), _freqRx = getAdifField(adif, "FREQ"), _no = no++, _loc = tnxlog.loc, _loc_rcv = getAdifField(adif, "GRIDSQUARE"), _qth = new string[TnxlogConfig.QthFieldCount] }; for (int field = 0; field < TnxlogConfig.QthFieldCount; field++) { if (qthFields != null) { if (!string.IsNullOrEmpty(qthFields[field])) { qso._qth[field] = getAdifField(adif, qthFields[field]); } } else { qso._qth[field] = tnxlog.getQthFieldValue(field); } } if (!string.IsNullOrEmpty(commentField)) { qso._comments = getAdifField(adif, commentField); } return(qso); }
public async Task postFreq(decimal freq) { await httpService.postFreq(QSO.formatFreq(freq)); }
public async Task deleteQso(QSO qso) { qsoList.Remove(qso); await httpService.deleteQso(qso); }
internal QsoDeleteRequest(HttpServiceConfig _config, QSO qso) : base(_config) { delete = qso.serverTs; }
public async Task postQso(QSO qso) { await postQso(new QSO[] { qso }); }