Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 private bool qsoFilterPredicate(QSO qso)
 {
     if (filterTextBox.Text.Contains("*"))
     {
         return(reFilter.IsMatch(qso.cs));
     }
     else
     {
         return(qso.cs == filterTextBox.Text);
     }
 }
Esempio n. 5
0
 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);
         }
     }
 }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
 public async Task postFreq(decimal freq)
 {
     await httpService.postFreq(QSO.formatFreq(freq));
 }
Esempio n. 9
0
 public async Task deleteQso(QSO qso)
 {
     qsoList.Remove(qso);
     await httpService.deleteQso(qso);
 }
Esempio n. 10
0
 internal QsoDeleteRequest(HttpServiceConfig _config, QSO qso) : base(_config)
 {
     delete = qso.serverTs;
 }
Esempio n. 11
0
 public async Task postQso(QSO qso)
 {
     await postQso(new QSO[] { qso });
 }