QRZ callback modification

pull/2/head
David Freese 2008-12-10 14:57:27 -06:00
rodzic 9728d0d862
commit 2712de8ba9
7 zmienionych plików z 151 dodań i 233 usunięć

Wyświetl plik

@ -20,7 +20,7 @@ Fl_Double_Window *dlgConfig;
void set_qrz_buttons(Fl_Button* b) {
Fl_Button* qrzb[] = { btnQRZnotavailable, btnQRZcdrom, btnQRZonline,
btnQRZsub, btnHamcall};
btnQRZsub, btnHamcall, btnHAMCALLonline};
for (size_t i = 0; i < sizeof(qrzb)/sizeof(*qrzb); i++)
qrzb[i]->value(b == qrzb[i]);
@ -1933,19 +1933,11 @@ progdefaults.changed = true;
Fl_Group *tabQRZ=(Fl_Group *)0;
Fl_Round_Button *btnQRZnotavailable=(Fl_Round_Button *)0;
static void cb_btnQRZnotavailable(Fl_Round_Button* o, void*) {
set_qrz_buttons(o);
progdefaults.QRZ = QRZ_NONE;
progdefaults.changed = true;
}
Fl_Round_Button *btnQRZcdrom=(Fl_Round_Button *)0;
static void cb_btnQRZcdrom(Fl_Round_Button* o, void*) {
set_qrz_buttons(o);
progdefaults.QRZ = QRZ_CD;
progdefaults.QRZ = QRZCD;
progdefaults.changed = true;
}
@ -1957,19 +1949,11 @@ progdefaults.QRZchanged = true;
progdefaults.changed = true;
}
Fl_Round_Button *btnQRZonline=(Fl_Round_Button *)0;
static void cb_btnQRZonline(Fl_Round_Button* o, void*) {
set_qrz_buttons(o);
progdefaults.QRZ = QRZ_NET_HTML;
progdefaults.changed = true;
}
Fl_Round_Button *btnQRZsub=(Fl_Round_Button *)0;
static void cb_btnQRZsub(Fl_Round_Button* o, void*) {
set_qrz_buttons(o);
progdefaults.QRZ = QRZ_NET_SUB;
progdefaults.QRZ = QRZNET;
progdefaults.changed = true;
}
@ -1977,7 +1961,7 @@ Fl_Round_Button *btnHamcall=(Fl_Round_Button *)0;
static void cb_btnHamcall(Fl_Round_Button* o, void*) {
set_qrz_buttons(o);
progdefaults.QRZ = QRZ_HAMCALL;
progdefaults.QRZ = HAMCALLNET;
progdefaults.changed = true;
}
@ -2003,6 +1987,30 @@ inpQRZuserpassword->redraw();
o->label((inpQRZuserpassword->type() & FL_SECRET_INPUT) ? "Show" : "Hide");
}
Fl_Round_Button *btnQRZonline=(Fl_Round_Button *)0;
static void cb_btnQRZonline(Fl_Round_Button* o, void*) {
set_qrz_buttons(o);
progdefaults.QRZ = QRZHTML;
progdefaults.changed = true;
}
Fl_Round_Button *btnQRZnotavailable=(Fl_Round_Button *)0;
static void cb_btnQRZnotavailable(Fl_Round_Button* o, void*) {
set_qrz_buttons(o);
progdefaults.QRZ = QRZNONE;
progdefaults.changed = true;
}
Fl_Round_Button *btnHAMCALLonline=(Fl_Round_Button *)0;
static void cb_btnHAMCALLonline(Fl_Round_Button* o, void*) {
set_qrz_buttons(o);
progdefaults.QRZ = HAMCALLHTML;
progdefaults.changed = true;
}
Fl_Button *btnSaveConfig=(Fl_Button *)0;
static void cb_btnSaveConfig(Fl_Button*, void*) {
@ -2106,6 +2114,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
tabOperator->end();
} // Fl_Group* tabOperator
{ tabUI = new Fl_Group(0, 25, 500, 345, _("UI"));
tabUI->hide();
{ tabsUI = new Fl_Tabs(0, 25, 500, 345);
tabsUI->selection_color(FL_LIGHT1);
{ tabUserInterface = new Fl_Group(0, 50, 500, 320, _("General"));
@ -3979,22 +3988,15 @@ l with your sound hardware."));
tabMisc->end();
} // Fl_Group* tabMisc
{ tabQRZ = new Fl_Group(0, 25, 500, 345, _("Callsign DB"));
tabQRZ->hide();
{ Fl_Group* o = new Fl_Group(5, 35, 490, 120, _("Database"));
{ Fl_Group* o = new Fl_Group(5, 180, 490, 75, _("CDROM"));
o->box(FL_ENGRAVED_FRAME);
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
{ btnQRZnotavailable = new Fl_Round_Button(15, 65, 110, 20, _("Not available"));
btnQRZnotavailable->down_box(FL_ROUND_DOWN_BOX);
btnQRZnotavailable->value(1);
btnQRZnotavailable->callback((Fl_Callback*)cb_btnQRZnotavailable);
btnQRZnotavailable->value(progdefaults.QRZ == QRZ_NONE);
} // Fl_Round_Button* btnQRZnotavailable
{ btnQRZcdrom = new Fl_Round_Button(15, 95, 105, 20, _("QRZ cdrom"));
{ Fl_Round_Button* o = btnQRZcdrom = new Fl_Round_Button(25, 215, 70, 20, _("QRZ"));
btnQRZcdrom->down_box(FL_ROUND_DOWN_BOX);
btnQRZcdrom->callback((Fl_Callback*)cb_btnQRZcdrom);
btnQRZcdrom->value(progdefaults.QRZ == QRZ_CD);
o->value(progdefaults.QRZ == QRZCD);
} // Fl_Round_Button* btnQRZcdrom
{ Fl_Input2* o = txtQRZpathname = new Fl_Input2(150, 95, 300, 20, _("at:"));
{ Fl_Input2* o = txtQRZpathname = new Fl_Input2(104, 215, 300, 20, _("at:"));
txtQRZpathname->tooltip(_("ie: /home/dave/CALLBK/ or C:/CALLBK/^jLeave blank to search for database"));
txtQRZpathname->box(FL_DOWN_BOX);
txtQRZpathname->color(FL_BACKGROUND2_COLOR);
@ -4008,29 +4010,24 @@ l with your sound hardware."));
txtQRZpathname->when(FL_WHEN_RELEASE);
o->value(progdefaults.QRZpathname.c_str());
} // Fl_Input2* txtQRZpathname
{ btnQRZonline = new Fl_Round_Button(15, 125, 255, 20, _("QRZ online (may not be available)"));
btnQRZonline->down_box(FL_ROUND_DOWN_BOX);
btnQRZonline->callback((Fl_Callback*)cb_btnQRZonline);
btnQRZonline->value(progdefaults.QRZ == QRZ_NET_HTML);
} // Fl_Round_Button* btnQRZonline
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(5, 155, 490, 95, _("Paid online subscription"));
{ Fl_Group* o = new Fl_Group(5, 260, 490, 95, _("Paid online subscription"));
o->box(FL_ENGRAVED_FRAME);
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
{ btnQRZsub = new Fl_Round_Button(15, 186, 90, 20, _("QRZ.com"));
{ Fl_Round_Button* o = btnQRZsub = new Fl_Round_Button(25, 291, 90, 20, _("QRZ.com"));
btnQRZsub->tooltip(_("You need a paid QRZ online subscription to access"));
btnQRZsub->down_box(FL_ROUND_DOWN_BOX);
btnQRZsub->callback((Fl_Callback*)cb_btnQRZsub);
btnQRZsub->value(progdefaults.QRZ == QRZ_NET_SUB);
o->value(progdefaults.QRZ == QRZNET);
} // Fl_Round_Button* btnQRZsub
{ btnHamcall = new Fl_Round_Button(15, 216, 105, 20, _("Hamcall.net"));
{ Fl_Round_Button* o = btnHamcall = new Fl_Round_Button(25, 321, 105, 20, _("Hamcall.net"));
btnHamcall->tooltip(_("You need a paid Hamcall online subscription to access"));
btnHamcall->down_box(FL_ROUND_DOWN_BOX);
btnHamcall->callback((Fl_Callback*)cb_btnHamcall);
btnHamcall->value(progdefaults.QRZ == QRZ_HAMCALL);
o->value(progdefaults.QRZ == HAMCALLNET);
} // Fl_Round_Button* btnHamcall
{ Fl_Input2* o = inpQRZusername = new Fl_Input2(235, 186, 90, 20, _("User name"));
{ Fl_Input2* o = inpQRZusername = new Fl_Input2(235, 291, 90, 20, _("User name"));
inpQRZusername->box(FL_DOWN_BOX);
inpQRZusername->color(FL_BACKGROUND2_COLOR);
inpQRZusername->selection_color(FL_SELECTION_COLOR);
@ -4043,7 +4040,7 @@ l with your sound hardware."));
inpQRZusername->when(FL_WHEN_RELEASE);
o->value(progdefaults.QRZusername.c_str());
} // Fl_Input2* inpQRZusername
{ Fl_Input2* o = inpQRZuserpassword = new Fl_Input2(236, 216, 90, 20, _("Password"));
{ Fl_Input2* o = inpQRZuserpassword = new Fl_Input2(236, 321, 90, 20, _("Password"));
inpQRZuserpassword->box(FL_DOWN_BOX);
inpQRZuserpassword->color(FL_BACKGROUND2_COLOR);
inpQRZuserpassword->selection_color(FL_SELECTION_COLOR);
@ -4057,11 +4054,32 @@ l with your sound hardware."));
o->value(progdefaults.QRZuserpassword.c_str());
o->type(FL_SECRET_INPUT);
} // Fl_Input2* inpQRZuserpassword
{ btnQRZpasswordShow = new Fl_Button(336, 216, 70, 20, _("Show"));
{ btnQRZpasswordShow = new Fl_Button(336, 321, 70, 20, _("Show"));
btnQRZpasswordShow->callback((Fl_Callback*)cb_btnQRZpasswordShow);
} // Fl_Button* btnQRZpasswordShow
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(5, 35, 490, 140);
o->box(FL_ENGRAVED_FRAME);
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
{ Fl_Round_Button* o = btnQRZonline = new Fl_Round_Button(25, 75, 300, 20, _("QRZ online via default Internet Browser"));
btnQRZonline->down_box(FL_ROUND_DOWN_BOX);
btnQRZonline->callback((Fl_Callback*)cb_btnQRZonline);
o->value(progdefaults.QRZ == QRZHTML);
} // Fl_Round_Button* btnQRZonline
{ Fl_Round_Button* o = btnQRZnotavailable = new Fl_Round_Button(25, 45, 110, 20, _("Not available"));
btnQRZnotavailable->down_box(FL_ROUND_DOWN_BOX);
btnQRZnotavailable->value(1);
btnQRZnotavailable->callback((Fl_Callback*)cb_btnQRZnotavailable);
o->value(progdefaults.QRZ == QRZNONE);
} // Fl_Round_Button* btnQRZnotavailable
{ Fl_Round_Button* o = btnHAMCALLonline = new Fl_Round_Button(25, 105, 300, 20, _("HamCall online via default Internet Browser"));
btnHAMCALLonline->down_box(FL_ROUND_DOWN_BOX);
btnHAMCALLonline->callback((Fl_Callback*)cb_btnHAMCALLonline);
o->value(progdefaults.QRZ == HAMCALLHTML);
} // Fl_Round_Button* btnHAMCALLonline
o->end();
} // Fl_Group* o
tabQRZ->end();
} // Fl_Group* tabQRZ
tabsConfigure->end();

Wyświetl plik

@ -50,10 +50,11 @@ decl {Fl_Double_Window *dlgConfig;} {public
Function {set_qrz_buttons(Fl_Button* b)} {open return_type void
} {
code {Fl_Button* qrzb[] = { btnQRZnotavailable, btnQRZcdrom, btnQRZonline,
btnQRZsub, btnHamcall};
btnQRZsub, btnHamcall, btnHAMCALLonline};
for (size_t i = 0; i < sizeof(qrzb)/sizeof(*qrzb); i++)
qrzb[i]->value(b == qrzb[i]);} {}
qrzb[i]->value(b == qrzb[i]);} {selected
}
}
Function {ConfigureDialog()} {open
@ -133,7 +134,7 @@ progdefaults.changed = true;}
}
Fl_Group tabUI {
label UI open
xywh {0 25 500 345}
xywh {0 25 500 345} hide
} {
Fl_Tabs tabsUI {open
xywh {0 25 500 345} selection_color 50
@ -388,7 +389,7 @@ progdefaults.changed = true;}
Fl_Value_Input nbrTimeSpan {
label minutes
callback {progdefaults.timespan = o->value();
progdefaults.changed = true;} selected
progdefaults.changed = true;}
xywh {230 313 53 22} align 8 maximum 1440 step 1 value 120
code0 {o->value(progdefaults.timespan);}
}
@ -2393,71 +2394,55 @@ progdefaults.changed = true;}
}
Fl_Group tabQRZ {
label {Callsign DB} open
xywh {0 25 500 345} hide
xywh {0 25 500 345}
} {
Fl_Group {} {
label Database open
xywh {5 35 490 120} box ENGRAVED_FRAME align 21
label CDROM open
xywh {5 180 490 75} box ENGRAVED_FRAME align 21
} {
Fl_Round_Button btnQRZnotavailable {
label {Not available}
callback {set_qrz_buttons(o);
progdefaults.QRZ = QRZ_NONE;
progdefaults.changed = true;}
xywh {15 65 110 20} down_box ROUND_DOWN_BOX value 1
code0 {btnQRZnotavailable->value(progdefaults.QRZ == QRZ_NONE);}
}
Fl_Round_Button btnQRZcdrom {
label {QRZ cdrom}
label QRZ
callback {set_qrz_buttons(o);
progdefaults.QRZ = QRZ_CD;
progdefaults.QRZ = QRZCD;
progdefaults.changed = true;}
xywh {15 95 105 20} down_box ROUND_DOWN_BOX
code0 {btnQRZcdrom->value(progdefaults.QRZ == QRZ_CD);}
xywh {25 215 70 20} down_box ROUND_DOWN_BOX
code0 {o->value(progdefaults.QRZ == QRZCD);}
}
Fl_Input txtQRZpathname {
label {at:}
callback {progdefaults.QRZpathname = o->value();
progdefaults.QRZchanged = true;
progdefaults.changed = true;}
tooltip {ie: /home/dave/CALLBK/ or C:/CALLBK/^jLeave blank to search for database} xywh {150 95 300 20}
tooltip {ie: /home/dave/CALLBK/ or C:/CALLBK/^jLeave blank to search for database} xywh {104 215 300 20}
code0 {o->value(progdefaults.QRZpathname.c_str());}
class Fl_Input2
}
Fl_Round_Button btnQRZonline {
label {QRZ online (may not be available)}
callback {set_qrz_buttons(o);
progdefaults.QRZ = QRZ_NET_HTML;
progdefaults.changed = true;}
xywh {15 125 255 20} down_box ROUND_DOWN_BOX
code0 {btnQRZonline->value(progdefaults.QRZ == QRZ_NET_HTML);}
}
}
Fl_Group {} {
label {Paid online subscription} open
xywh {5 155 490 95} box ENGRAVED_FRAME align 21
xywh {5 260 490 95} box ENGRAVED_FRAME align 21
} {
Fl_Round_Button btnQRZsub {
label {QRZ.com}
callback {set_qrz_buttons(o);
progdefaults.QRZ = QRZ_NET_SUB;
progdefaults.QRZ = QRZNET;
progdefaults.changed = true;}
tooltip {You need a paid QRZ online subscription to access} xywh {15 186 90 20} down_box ROUND_DOWN_BOX
code0 {btnQRZsub->value(progdefaults.QRZ == QRZ_NET_SUB);}
tooltip {You need a paid QRZ online subscription to access} xywh {25 291 90 20} down_box ROUND_DOWN_BOX
code0 {o->value(progdefaults.QRZ == QRZNET);}
}
Fl_Round_Button btnHamcall {
label {Hamcall.net}
callback {set_qrz_buttons(o);
progdefaults.QRZ = QRZ_HAMCALL;
progdefaults.QRZ = HAMCALLNET;
progdefaults.changed = true;}
tooltip {You need a paid Hamcall online subscription to access} xywh {15 216 105 20} down_box ROUND_DOWN_BOX
code0 {btnHamcall->value(progdefaults.QRZ == QRZ_HAMCALL);}
tooltip {You need a paid Hamcall online subscription to access} xywh {25 321 105 20} down_box ROUND_DOWN_BOX
code0 {o->value(progdefaults.QRZ == HAMCALLNET);}
}
Fl_Input inpQRZusername {
label {User name}
callback {progdefaults.QRZusername = o->value();
progdefaults.changed = true;}
xywh {235 186 90 20}
xywh {235 291 90 20}
code0 {o->value(progdefaults.QRZusername.c_str());}
class Fl_Input2
}
@ -2465,7 +2450,7 @@ progdefaults.changed = true;}
label Password
callback {progdefaults.QRZuserpassword = o->value();
progdefaults.changed = true;}
xywh {236 216 90 20}
xywh {236 321 90 20}
code0 {o->value(progdefaults.QRZuserpassword.c_str());}
code1 {o->type(FL_SECRET_INPUT);}
class Fl_Input2
@ -2475,7 +2460,35 @@ progdefaults.changed = true;}
callback {inpQRZuserpassword->type(inpQRZuserpassword->type() ^ FL_SECRET_INPUT);
inpQRZuserpassword->redraw();
o->label((inpQRZuserpassword->type() & FL_SECRET_INPUT) ? "Show" : "Hide");}
xywh {336 216 70 20}
xywh {336 321 70 20}
}
}
Fl_Group {} {open
xywh {5 35 490 140} box ENGRAVED_FRAME align 21
} {
Fl_Round_Button btnQRZonline {
label {QRZ online via default Internet Browser}
callback {set_qrz_buttons(o);
progdefaults.QRZ = QRZHTML;
progdefaults.changed = true;}
xywh {25 75 300 20} down_box ROUND_DOWN_BOX
code0 {o->value(progdefaults.QRZ == QRZHTML);}
}
Fl_Round_Button btnQRZnotavailable {
label {Not available}
callback {set_qrz_buttons(o);
progdefaults.QRZ = QRZNONE;
progdefaults.changed = true;}
xywh {25 45 110 20} down_box ROUND_DOWN_BOX value 1
code0 {o->value(progdefaults.QRZ == QRZNONE);}
}
Fl_Round_Button btnHAMCALLonline {
label {HamCall online via default Internet Browser}
callback {set_qrz_buttons(o);
progdefaults.QRZ = HAMCALLHTML;
progdefaults.changed = true;}
xywh {25 105 300 20} down_box ROUND_DOWN_BOX
code0 {o->value(progdefaults.QRZ == HAMCALLHTML);}
}
}
}

Wyświetl plik

@ -281,15 +281,16 @@ extern Fl_Check_Button *btnDisplayMacroFilename;
extern Fl_Group *tabCPUspeed;
extern Fl_Check_Button *chkSlowCpu;
extern Fl_Group *tabQRZ;
extern Fl_Round_Button *btnQRZnotavailable;
extern Fl_Round_Button *btnQRZcdrom;
extern Fl_Input2 *txtQRZpathname;
extern Fl_Round_Button *btnQRZonline;
extern Fl_Round_Button *btnQRZsub;
extern Fl_Round_Button *btnHamcall;
extern Fl_Input2 *inpQRZusername;
extern Fl_Input2 *inpQRZuserpassword;
extern Fl_Button *btnQRZpasswordShow;
extern Fl_Round_Button *btnQRZonline;
extern Fl_Round_Button *btnQRZnotavailable;
extern Fl_Round_Button *btnHAMCALLonline;
extern Fl_Button *btnSaveConfig;
#include <FL/Fl_Return_Button.H>
extern Fl_Return_Button *btnCloseConfig;

Wyświetl plik

@ -131,6 +131,7 @@ extern void activate_rig_menu_item(bool b);
extern void activate_test_menu_item(bool b);
extern void activate_mfsk_image_item(bool b);
extern void cb_mnuVisitURL(Fl_Widget*, void* arg);
extern void put_freq(double frequency);
extern void put_Bandwidth(int bandwidth);

Wyświetl plik

@ -2,6 +2,6 @@
#define LOOKUPCALL_H
extern void CALLSIGNquery();
enum qrz_query_t { QRZ_EXIT = -1, QRZ_NONE, QRZ_NET_SUB, QRZ_CD, QRZ_HAMCALL, QRZ_NET_HTML };
enum qrz_query_t { QRZ_EXIT = -1, QRZNONE, QRZCD, QRZNET, QRZHTML, HAMCALLNET, HAMCALLHTML };
#endif

Wyświetl plik

@ -477,21 +477,24 @@ int configuration::setDefaults()
Fl_Button* qrzb = btnQRZnotavailable;
switch (QRZ) {
case QRZ_NONE:
case QRZNONE:
qrzb = btnQRZnotavailable;
break;
case QRZ_CD:
case QRZCD:
qrzb = btnQRZcdrom;
break;
case QRZ_NET_HTML:
case QRZHTML:
qrzb = btnQRZonline;
break;
case QRZ_NET_SUB:
case QRZNET:
qrzb = btnQRZsub;
break;
case QRZ_HAMCALL:
case HAMCALLNET:
qrzb = btnHamcall;
break;
case HAMCALLHTML:
qrzb = btnHAMCALLonline;
break;
default :
break;
}

Wyświetl plik

@ -77,7 +77,7 @@ string lookup_latd;
string lookup_lond;
string lookup_notes;
qrz_query_t DB_query = QRZ_NONE;
qrz_query_t DB_query = QRZNONE;
enum TAG {
IGNORE, KEY, ALERT, ERROR, CALL,
@ -111,8 +111,6 @@ void parse_html(const string& htmlpage);
bool HAMCALLget(string& htmlpage);
void HAMCALLquery();
bool parseQRZdetails(string &htmlpage);
bool getQRZdetails(string& htmlpage);
void QRZ_DETAILS_query();
@ -659,141 +657,20 @@ void HAMCALLquery()
REQ(QRZ_disp_result);
}
// ----------------------------------------------------------------------------
//
// These routines allow data extraction (commonly known as page scraping)
// from a www.qrz.com/detail/<callsign> query
//
// They are entirely dependent on the format of the details response page
// which may and probably will change as the business requirements of QRZ.com
// dictate.
// ----------------------------------------------------------------------------
#define BEGIN_NAME "Name</td><td class=\"q2\"><b>"
#define BEGIN_ADDR1 "Addr1</td><td class=\"q2\"><b>"
#define BEGIN_ADDR2 "Addr2</td><td class=\"q2\"><b>"
#define BEGIN_COUNTRY "Country</td><td class=\"q2\"><b>"
#define BEGIN_GRID "Grid</td><td class=\"q2\"><b>"
#define NOT_FOUND "callsign <b class=\"red\">"
#define snip_end_RECORD "</b>"
bool parseQRZdetails(string &htmlpage)
{
size_t snip, snip_end;
clear_Lookup();
if (htmlpage.find(NOT_FOUND) != string::npos) {
lookup_qth = "NOT FOUND";
return false;
}
snip = htmlpage.find(BEGIN_NAME);
if (snip != string::npos) {
snip += strlen(BEGIN_NAME);
snip_end = htmlpage.find(snip_end_RECORD, snip);
lookup_name = htmlpage.substr(snip, snip_end - snip);
snip = lookup_name.find(' ');
lookup_fname = lookup_name.substr(0, snip);
for (size_t i = 0; i < lookup_fname.length(); i++)
if (lookup_fname[i] < ' ' || lookup_fname[i] > 'z')
lookup_fname[i] = ' ';
while ((snip = lookup_fname.find(' ')) != string::npos)
lookup_fname.erase(snip, 1);
}
// snip = htmlpage.find(BEGIN_ADDR1);
// if (snip != string::npos) {
// snip += strlen(BEGIN_ADDR1);
// snip_end = htmlpage.find(snip_end_RECORD, snip);
// lookup_addr1 = htmlpage.substr(snip, snip_end - snip);
// }
snip = htmlpage.find(BEGIN_ADDR2);
if (snip != string::npos) {
snip += strlen(BEGIN_ADDR2);
snip_end = htmlpage.find(snip_end_RECORD, snip);
lookup_addr2 = htmlpage.substr(snip, snip_end - snip);
// lookup_qth += lookup_addr2;
lookup_qth = lookup_addr2;
}
string isUS = "aAkKnNwW";
string isCAN = "vV";
if (isUS.find(callsign[0]) != string::npos) { // a US callsign
size_t pos = lookup_qth.find(',');
if (pos != string::npos) {
lookup_state = lookup_qth.substr(pos);
lookup_qth = lookup_qth.substr(0, pos);
pos = lookup_state.find_first_not_of(", ");
if (pos != string::npos)
lookup_state = lookup_state.substr(pos);
pos = lookup_state.find(' ');
if (pos != string::npos)
lookup_state = lookup_state.substr(0,pos);
}
} else if (isCAN.find(callsign[0]) != string::npos) { // a Canadian callsign
size_t pos = lookup_qth.find(',');
if (pos != string::npos) {
lookup_province = lookup_qth.substr(pos);
lookup_qth = lookup_qth.substr(0, pos);
pos = lookup_province.find_first_not_of(", ");
if (pos != string::npos)
lookup_province = lookup_province.substr(pos);
pos = lookup_province.find(' ');
if (pos != string::npos)
lookup_province = lookup_province.substr(0,pos);
}
} else {
size_t pos = lookup_qth.find(',');
if (pos != string::npos)
lookup_qth = lookup_qth.substr(0, pos);
snip = htmlpage.find(BEGIN_COUNTRY);
if (snip != string::npos) {
snip += strlen(BEGIN_COUNTRY);
snip_end = htmlpage.find(snip_end_RECORD, snip);
lookup_state = htmlpage.substr(snip, snip_end - snip);
pos = lookup_state.find(',');
if (pos != string::npos)
lookup_state = lookup_state.substr(0, pos);
}
}
snip = htmlpage.find(BEGIN_GRID);
if (snip != string::npos) {
snip += strlen(BEGIN_GRID);
snip_end = htmlpage.find(snip_end_RECORD, snip);
lookup_grid = htmlpage.substr(snip, snip_end - snip);
}
lookup_notes = "Courtesy of\nWWW.QRZ.COM";
return true;
}
bool getQRZdetails(string& htmlpage)
{
string url_detail;
url_detail = "GET /detail/";
url_detail += callsign;
url_detail += "\r\n";
return request_reply("www.qrz.com", "http", url_detail, htmlpage, 10.0);
}
void QRZ_DETAILS_query()
{
ENSURE_THREAD(QRZ_TID);
string qrzurl = "http://www.qrz.com/callsign.html?callsign=";
qrzurl.append(callsign);
cb_mnuVisitURL(0, (void*)qrzurl.c_str());
}
string htmlpage;
if (getQRZdetails(htmlpage))
parseQRZdetails(htmlpage);
else
lookup_notes = htmlpage;
REQ(QRZ_disp_result);
void HAMCALL_DETAILS_query()
{
string hamcallurl = "http://www.hamcall.net/call?callsign=";
hamcallurl.append(callsign);
cb_mnuVisitURL(0, (void*)hamcallurl.c_str());
}
// ----------------------------------------------------------------------------
@ -815,18 +692,21 @@ static void *LOOKUP_loop(void *args)
pthread_mutex_unlock(&qrz_mutex);
switch (DB_query) {
case QRZ_CD :
case QRZCD :
QRZ_CD_query();
break;
case QRZ_NET_SUB :
case QRZNET :
QRZquery();
break;
case QRZ_HAMCALL :
case HAMCALLNET :
HAMCALLquery();
break;
case QRZ_NET_HTML :
case QRZHTML :
QRZ_DETAILS_query();
break;
case HAMCALLHTML :
HAMCALL_DETAILS_query();
break;
case QRZ_EXIT:
return NULL;
default:
@ -856,13 +736,15 @@ void CALLSIGNquery()
inpCall->value(callsign.c_str());
switch (DB_query = static_cast<qrz_query_t>(progdefaults.QRZ)) {
case QRZ_NET_SUB: case QRZ_NET_HTML:
case QRZNET:
inpNotes->value("Request sent to\nqrz.com...");
break;
case QRZ_HAMCALL:
case QRZHTML: case HAMCALLHTML:
break;
case HAMCALLNET:
inpNotes->value("Request sent to\nwww.hamcall.net...");
break;
case QRZ_CD:
case QRZCD:
if (!qCall)
qCall = new QRZ( "callbkc" );
if (progdefaults.QRZchanged) {
@ -871,7 +753,7 @@ void CALLSIGNquery()
}
if (!qCall->getQRZvalid()) {
inpNotes->value("QRZ DB error");
DB_query = QRZ_NONE;
DB_query = QRZNONE;
return;
}
break;