Browse Source

Add simple serial number handling for casual contesting.

master
Fabian Kurz 8 years ago
parent
commit
bcaa856f28
  1. 35
      yfk
  2. 15
      yfksubs.pl

35
yfk

@ -26,7 +26,7 @@ use DBI; # Database interface
use Curses;
use Net::FTP; # upload of online log or backup
my $prefix="/usr/local";
my $prefix="/usr";
if (-f './yfk' && -f './yfksubs.pl' && -f 'THANKS') {
# we're in the source directory, source the local copy
@ -60,7 +60,9 @@ my @wi; # contains the windows inside the input-window
my @qso = ("","","","", # Data of the current QSO which is read from input.
"","","","","","","","" # 0 Callsign, 1 Date, 2 time on, 3 time off
,"",""); # 4 QRG, 5 Mode, 6 QTH, 7 Name, 8 QSL-TX, 9 QSL-RX
# 10 RSTs, 11 RSTr, 12 Remarks, 13 PWR
# 10 RSTs, 11 RSTr, 12 Remarks, 13 PWR, 14 ser. nr.
# (Ser. nr. is appended to RSTs field and increased
# only on successfully saved QSO)
my $qso = \@qso; # QSO reference
my $editnr=0; # the QSO which we are editing. 0 = no QSO is edited nw
my $screenlayout=0; # screen layout - 0 or 1
@ -70,6 +72,9 @@ my $dbserver='';
my $directory='/tmp';
my $qsldetails=1; # show details of QSO in Write mode?
my $drem=""; # default remarks
my $serial=0; # Auto serial number for casual contesting
# Set to nonzero value to start logging with this number
$qso[14] = -1; # serial number saved here; -1 means not set yet
sub readconfig {
@ -93,6 +98,7 @@ while (defined (my $line = <CONFIG>)) { # Read line into $line
if ($line =~ /^colors=(.+)/) { $colors = $1; }
if ($line =~ /^qsldetails=(.+)/) { $qsldetails = $1; }
if ($line =~ /^drem=(.+)/) { $drem= $1; }
if ($line =~ /^serial=(.+)/) { $serial = $1; }
}
close CONFIG;
@ -361,6 +367,12 @@ if ($af == 1) { # READ CALLSIGN FIELD
if ($qso[10] eq "") { # RST sent to 59(9)
if ($dmode =~ /CW|RTTY|PSK/) {$qso[10] = "599";}
else {$qso[10] = "59"; }
if ($serial) {
if ($qso[14] == -1) {
$qso[14] = $serial;
}
$qso[10] .= sprintf("%03d", $qso[14]);
}
}
if ($qso[11] eq "") { # RST rcvd to 59(9)
if ($dmode =~ /CW|RTTY|PSK/) {$qso[11] = "599";}
@ -602,7 +614,9 @@ while ($aw == 2) {
# existing QSO because &saveqso; checks for an existing $editnr
&clearinputfields($wi,1); # deletes all input fields
my $snr = $qso[14]; # remember sent serial
@qso = &getqso($editnr,$wi);
$qso[14] = $snr;
&callinfo($qso,$winfo,$wi,$wqsos, $editnr);
$aw = 1;
}
@ -634,7 +648,9 @@ while ($aw == 3) {
# proceed like before.
&clearinputfields($wi,1); # deletes all input fields
my $snr = $qso[14]; # remember sent serial
@qso = &getqso($editnr,$wi); # put QSO number $editnr in @qso
$qso[14] = $snr;
&callinfo($qso,$winfo,$wi,$wqsos,$editnr); # show callinfo
$aw = 1; # go to edit window
}
@ -1945,7 +1961,8 @@ while ($status == 15) {
sprintf("colors=%-15s - Enable colors? [1/0] (requires restart)", $colors),
sprintf("usehamdb=%-15s - Use Ham::Callsign::DB to fill data", $yfksubs::usehamdb),
sprintf("qsldetails=%-15s - Show QSO details in QSL write mode?", $qsldetails),
sprintf("drem=%-15s - Default QSO remarks value", $drem)
sprintf("drem=%-15s - Default QSO remarks value", $drem),
sprintf("serial=%-15s - Sent Serial Nr. (0 = None)", $serial)
);
my $choice = &selectlist(\$wmain, 2, 1, 18, 78, \@setup);
@ -2258,7 +2275,7 @@ while ($status == 15) {
}
}
elsif ($choice == 32) {
$original = "drem=$qsldetails";
$original = "drem=$drem";
my $ret = &askbox(10,20,4,30, 'text', "Default remarks text?",
$drem);
if ($ret eq 'm') { last }
@ -2266,7 +2283,15 @@ while ($status == 15) {
&changeconfig($original, "drem=$ret");
}
}
elsif ($choice == 33) {
$original = "serial=$serial";
my $ret = &askbox(10,20,4,30, 'text', "Default serial nr. (0 = none)?",
$serial);
if ($ret eq 'm') { last }
elsif ($ret ne '') {
&changeconfig($original, "serial=$ret");
}
}
&readconfig;
&readsubconfig;
}

15
yfksubs.pl

@ -87,7 +87,7 @@ our $checklogs = ''; # add. logs to chk fr prev QSOs
our $lotwdetails='0'; # LOTW import details?
our $autoqueryrig='0'; # Query rig at new QSO?
our $directory='/tmp/'; # where to look for stuff
our $prefix="/usr/local"; # may be changed by 'make'
our $prefix="/usr"; # may be changed by 'make'
my $db=''; # sqlite or mysql?
our $fieldorder= # TAB/Field order.
'CALL DATE TON TOFF BAND MODE QTH NAME QSLS QSLR RSTS RSTR REM PWR';
@ -1039,9 +1039,16 @@ sub readw {
# and the input fields are deleted.
elsif ($ch eq KEY_F(2)) { # pressed F2 -> SAVE
${$_[3]}[$_[2]] = $input; # save field to @qso
if (&saveqso(@{$_[3]},$editnr)) { # save @QSO to DB
if (&saveqso(@{$_[3]}[0..13],$editnr)) { # save @QSO to DB
&clearinputfields($_[0],1); # clear input fields 0..13
# Increase serial number in QSO array, clear all other fields
my $snr = ${$_[3]}[14];
if ($editnr == 0) {
$snr++;
}
@{$_[3]} = ("","","","","","","","","","","","","","");
${$_[3]}[14] = $snr;
# Now we actualize the display of the last QSOs in the
# window $wlog.
&lastqsos(\$wlog);
@ -1078,9 +1085,7 @@ sub readw {
for (0 .. 13) { # iterate through windows 0-13
addstr(@{$_[0]}[$_],0,0," "x80); # clear it
refresh(@{$_[0]}[$_]);
}
foreach (@{$_[3]}) { # iterate through QSO-array
$_=""; # clear content
${$_[3]}[$_] = ""; # clear QSO array
}
${$_[5]} = 0; # editqso = 0
return 4; # return 4 -> to window 0 (call)

Loading…
Cancel
Save