mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-03 15:31:15 -05:00
623 lines
23 KiB
C++
623 lines
23 KiB
C++
///////////////////////////////////////////////////////////////////////////////////
|
|
// Copyright (C) 2024 Edouard Griffiths, F4EXB <f4exb06@gmail.com> //
|
|
// //
|
|
// This program is free software; you can redistribute it and/or modify //
|
|
// it under the terms of the GNU General Public License as published by //
|
|
// the Free Software Foundation as version 3 of the License, or //
|
|
// (at your option) any later version. //
|
|
// //
|
|
// This program is distributed in the hope that it will be useful, //
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
|
// GNU General Public License V3 for more details. //
|
|
// //
|
|
// You should have received a copy of the GNU General Public License //
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// This source code file was last time modified by Arvo ES1JA on 20190224
|
|
// All changes are shown in the patch file coming together with the full JTDX source code.
|
|
|
|
/*
|
|
#Sov Mil Order of Malta: 15: 28: EU: 41.90: -12.43: -1.0: 1A:
|
|
#1A;
|
|
#Spratly Islands: 26: 50: AS: 9.88: -114.23: -8.0: 1S:
|
|
#1S,9M0,BV9S;
|
|
#Monaco: 14: 27: EU: 43.73: -7.40: -1.0: 3A:
|
|
#3A;
|
|
#Heard Island: 39: 68: AF: -53.08: -73.50: -5.0: VK0H:
|
|
#=VK0IR;
|
|
#Macquarie Island: 30: 60: OC: -54.60: -158.88: -10.0: VK0M:
|
|
#=VK0KEV;
|
|
#Cocos-Keeling: 29: 54: OC: -12.15: -96.82: -6.5: VK9C:
|
|
#AX9C,AX9Y,VH9C,VH9Y,VI9C,VI9Y,VJ9C,VJ9Y,VK9C,VK9Y,VL9C,VL9Y,VM9C,VM9Y,
|
|
#VN9C,VN9Y,VZ9C,VZ9Y,=VK9AA;
|
|
*/
|
|
|
|
|
|
|
|
#include "countrydat.h"
|
|
#include <QFile>
|
|
#include <QTextStream>
|
|
|
|
const CountryDat::CountryInfo CountryDat::nullCountry = CountryDat::CountryInfo{"", "?", "where?", "", ""};
|
|
|
|
void CountryDat::init()
|
|
{
|
|
_countries.clear();
|
|
_name.clear();
|
|
_name.insert("where?","where?");
|
|
_name.insert("Sov Mil Order of Malta","Sov Mil Order of Malta");
|
|
_name.insert("Spratly Islands","Spratly Is.");
|
|
_name.insert("Monaco","Monaco");
|
|
_name.insert("Agalega & St. Brandon","Agalega & St. Brandon");
|
|
_name.insert("Mauritius","Mauritius");
|
|
_name.insert("Rodriguez Island","Rodriguez Is.");
|
|
_name.insert("Equatorial Guinea","Equatorial Guinea");
|
|
_name.insert("Annobon Island","Annobon Is.");
|
|
_name.insert("Fiji","Fiji");
|
|
_name.insert("Conway Reef","Conway Reef");
|
|
_name.insert("Rotuma Island","Rotuma Is.");
|
|
_name.insert("Kingdom of Eswatini","Kingdom of Eswatini");
|
|
_name.insert("Tunisia","Tunisia");
|
|
_name.insert("Vietnam","Vietnam");
|
|
_name.insert("Guinea","Guinea");
|
|
_name.insert("Bouvet","Bouvet");
|
|
_name.insert("Peter 1 Island","Peter 1 Is.");
|
|
_name.insert("Azerbaijan","Azerbaijan");
|
|
_name.insert("Georgia","Georgia");
|
|
_name.insert("Montenegro","Montenegro");
|
|
_name.insert("Sri Lanka","Sri Lanka");
|
|
_name.insert("ITU HQ","ITU HQ");
|
|
_name.insert("United Nations HQ","United Nations HQ");
|
|
_name.insert("Vienna Intl Ctr","Vienna Intl Ctr");
|
|
_name.insert("Timor - Leste","Timor - Leste");
|
|
_name.insert("Israel","Israel");
|
|
_name.insert("Libya","Libya");
|
|
_name.insert("Cyprus","Cyprus");
|
|
_name.insert("Tanzania","Tanzania");
|
|
_name.insert("Nigeria","Nigeria");
|
|
_name.insert("Madagascar","Madagascar");
|
|
_name.insert("Mauritania","Mauritania");
|
|
_name.insert("Niger","Niger");
|
|
_name.insert("Togo","Togo");
|
|
_name.insert("Samoa","Samoa");
|
|
_name.insert("Uganda","Uganda");
|
|
_name.insert("Kenya","Kenya");
|
|
_name.insert("Senegal","Senegal");
|
|
_name.insert("Jamaica","Jamaica");
|
|
_name.insert("Yemen","Yemen");
|
|
_name.insert("Lesotho","Lesotho");
|
|
_name.insert("Malawi","Malawi");
|
|
_name.insert("Algeria","Algeria");
|
|
_name.insert("Barbados","Barbados");
|
|
_name.insert("Maldives","Maldives");
|
|
_name.insert("Guyana","Guyana");
|
|
_name.insert("Croatia","Croatia");
|
|
_name.insert("Ghana","Ghana");
|
|
_name.insert("Malta","Malta");
|
|
_name.insert("Zambia","Zambia");
|
|
_name.insert("Kuwait","Kuwait");
|
|
_name.insert("Sierra Leone","Sierra Leone");
|
|
_name.insert("West Malaysia","W. Malaysia");
|
|
_name.insert("East Malaysia","E. Malaysia");
|
|
_name.insert("Nepal","Nepal");
|
|
_name.insert("Dem. Rep. of the Congo","Dem. Rep. of the Congo");
|
|
_name.insert("Burundi","Burundi");
|
|
_name.insert("Singapore","Singapore");
|
|
_name.insert("Rwanda","Rwanda");
|
|
_name.insert("Trinidad & Tobago","Trinidad & Tobago");
|
|
_name.insert("Botswana","Botswana");
|
|
_name.insert("Tonga","Tonga");
|
|
_name.insert("Oman","Oman");
|
|
_name.insert("Bhutan","Bhutan");
|
|
_name.insert("United Arab Emirates","United Arab Emirates");
|
|
_name.insert("Qatar","Qatar");
|
|
_name.insert("Bahrain","Bahrain");
|
|
_name.insert("Pakistan","Pakistan");
|
|
_name.insert("Scarborough Reef","Scarborough Reef");
|
|
_name.insert("Taiwan","Taiwan");
|
|
_name.insert("Pratas Island","Pratas Is.");
|
|
_name.insert("China","China");
|
|
_name.insert("Nauru","Nauru");
|
|
_name.insert("Andorra","Andorra");
|
|
_name.insert("The Gambia","The Gambia");
|
|
_name.insert("Bahamas","Bahamas");
|
|
_name.insert("Mozambique","Mozambique");
|
|
_name.insert("Chile","Chile");
|
|
_name.insert("San Felix & San Ambrosio","San Felix & San Ambrosio");
|
|
_name.insert("Easter Island","Easter Is.");
|
|
_name.insert("Juan Fernandez Islands","Juan Fernandez Is.");
|
|
_name.insert("Antarctica","Antarctica");
|
|
_name.insert("Cuba","Cuba");
|
|
_name.insert("Morocco","Morocco");
|
|
_name.insert("Bolivia","Bolivia");
|
|
_name.insert("Portugal","Portugal");
|
|
_name.insert("Madeira Islands","Madeira Is.");
|
|
_name.insert("Azores","Azores");
|
|
_name.insert("Uruguay","Uruguay");
|
|
_name.insert("Sable Island","Sable Is.");
|
|
_name.insert("St. Paul Island","St. Paul Is.");
|
|
_name.insert("Angola","Angola");
|
|
_name.insert("Cape Verde","Cape Verde");
|
|
_name.insert("Comoros","Comoros");
|
|
_name.insert("Fed. Rep. of Germany","Germany");
|
|
_name.insert("Philippines","Philippines");
|
|
_name.insert("Eritrea","Eritrea");
|
|
_name.insert("Palestine","Palestine");
|
|
_name.insert("North Cook Islands","N. Cook Is.");
|
|
_name.insert("South Cook Islands","S. Cook Is.");
|
|
_name.insert("Niue","Niue");
|
|
_name.insert("Bosnia-Herzegovina","Bosnia-Herzegovina");
|
|
_name.insert("Spain","Spain");
|
|
_name.insert("Balearic Islands","Balearic Is.");
|
|
_name.insert("Canary Islands","Canary Is.");
|
|
_name.insert("Ceuta & Melilla","Ceuta & Melilla");
|
|
_name.insert("Ireland","Ireland");
|
|
_name.insert("Armenia","Armenia");
|
|
_name.insert("Liberia","Liberia");
|
|
_name.insert("Iran","Iran");
|
|
_name.insert("Moldova","Moldova");
|
|
_name.insert("Estonia","Estonia");
|
|
_name.insert("Ethiopia","Ethiopia");
|
|
_name.insert("Belarus","Belarus");
|
|
_name.insert("Kyrgyzstan","Kyrgyzstan");
|
|
_name.insert("Tajikistan","Tajikistan");
|
|
_name.insert("Turkmenistan","Turkmenistan");
|
|
_name.insert("France","France");
|
|
_name.insert("Guadeloupe","Guadeloupe");
|
|
_name.insert("Mayotte","Mayotte");
|
|
_name.insert("St. Barthelemy","St. Barthelemy");
|
|
_name.insert("New Caledonia","New Caledonia");
|
|
_name.insert("Chesterfield Islands","Chesterfield Is.");
|
|
_name.insert("Martinique","Martinique");
|
|
_name.insert("French Polynesia","Fr. Polynesia");
|
|
_name.insert("Austral Islands","Austral Is.");
|
|
_name.insert("Clipperton Island","Clipperton Is.");
|
|
_name.insert("Marquesas Islands","Marquesas Is.");
|
|
_name.insert("St. Pierre & Miquelo","St. Pierre & Miquelo");
|
|
_name.insert("Reunion Island","Reunion Is.");
|
|
_name.insert("St. Martin","St. Martin");
|
|
_name.insert("Glorioso Islands","Glorioso Is.");
|
|
_name.insert("Juan de Nova, Europa","Juan de Nova, Europa");
|
|
_name.insert("Tromelin Island","Tromelin Is.");
|
|
_name.insert("Crozet Island","Crozet Is.");
|
|
_name.insert("Kerguelen Islands","Kerguelen Is.");
|
|
_name.insert("Amsterdam & St. Paul Is.","Amsterdam & St. Paul Is.");
|
|
_name.insert("Wallis & Futuna Islands","Wallis & Futuna Is.");
|
|
_name.insert("French Guiana","Fr. Guiana");
|
|
_name.insert("England","England");
|
|
_name.insert("Isle of Man","Isle of Man");
|
|
_name.insert("Northern Ireland","N. Ireland");
|
|
_name.insert("Jersey","Jersey");
|
|
_name.insert("Shetland Islands","Shetland Is.");
|
|
_name.insert("Scotland","Scotland");
|
|
_name.insert("Guernsey","Guernsey");
|
|
_name.insert("Wales","Wales");
|
|
_name.insert("Solomon Islands","Solomon Is.");
|
|
_name.insert("Temotu Province","Temotu Province");
|
|
_name.insert("Hungary","Hungary");
|
|
_name.insert("Switzerland","Switzerland");
|
|
_name.insert("Liechtenstein","Liechtenstein");
|
|
_name.insert("Ecuador","Ecuador");
|
|
_name.insert("Galapagos Islands","Galapagos Is.");
|
|
_name.insert("Haiti","Haiti");
|
|
_name.insert("Dominican Republic","Dominican Rep.");
|
|
_name.insert("Colombia","Colombia");
|
|
_name.insert("San Andres & Providencia","San Andres & Providencia");
|
|
_name.insert("Malpelo Island","Malpelo Is.");
|
|
_name.insert("Republic of Korea","Rep. of Korea");
|
|
_name.insert("Panama","Panama");
|
|
_name.insert("Honduras","Honduras");
|
|
_name.insert("Thailand","Thailand");
|
|
_name.insert("Vatican City","Vatican City");
|
|
_name.insert("Saudi Arabia","Saudi Arabia");
|
|
_name.insert("Italy","Italy");
|
|
_name.insert("African Italy","AF Italy");
|
|
_name.insert("Sardinia","Sardinia");
|
|
_name.insert("Sicily","Sicily");
|
|
_name.insert("Djibouti","Djibouti");
|
|
_name.insert("Grenada","Grenada");
|
|
_name.insert("Guinea-Bissau","Guinea-Bissau");
|
|
_name.insert("St. Lucia","St. Lucia");
|
|
_name.insert("Dominica","Dominica");
|
|
_name.insert("St. Vincent","St. Vincent");
|
|
_name.insert("Japan","Japan");
|
|
_name.insert("Minami Torishima","Minami Torishima");
|
|
_name.insert("Ogasawara","Ogasawara");
|
|
_name.insert("Mongolia","Mongolia");
|
|
_name.insert("Svalbard","Svalbard");
|
|
_name.insert("Bear Island","Bear Is.");
|
|
_name.insert("Jan Mayen","Jan Mayen");
|
|
_name.insert("Jordan","Jordan");
|
|
_name.insert("United States","U.S.A.");
|
|
_name.insert("Guantanamo Bay","Guantanamo Bay");
|
|
_name.insert("Mariana Islands","Mariana Is.");
|
|
_name.insert("Baker & Howland Islands","Baker & Howland Is.");
|
|
_name.insert("Guam","Guam");
|
|
_name.insert("Johnston Island","Johnston Is.");
|
|
_name.insert("Midway Island","Midway Is.");
|
|
_name.insert("Palmyra & Jarvis Islands","Palmyra & Jarvis Is.");
|
|
_name.insert("Hawaii","Hawaii");
|
|
_name.insert("Kure Island","Kure Is.");
|
|
_name.insert("American Samoa","American Samoa");
|
|
_name.insert("Swains Island","Swains Is.");
|
|
_name.insert("Wake Island","Wake Is.");
|
|
_name.insert("Alaska","Alaska");
|
|
_name.insert("Navassa Island","Navassa Is.");
|
|
_name.insert("US Virgin Islands","US Virgin Is.");
|
|
_name.insert("Puerto Rico","Puerto Rico");
|
|
_name.insert("Desecheo Island","Desecheo Is.");
|
|
_name.insert("Norway","Norway");
|
|
_name.insert("Argentina","Argentina");
|
|
_name.insert("Luxembourg","Luxembourg");
|
|
_name.insert("Lithuania","Lithuania");
|
|
_name.insert("Bulgaria","Bulgaria");
|
|
_name.insert("Peru","Peru");
|
|
_name.insert("Lebanon","Lebanon");
|
|
_name.insert("Austria","Austria");
|
|
_name.insert("Finland","Finland");
|
|
_name.insert("Aland Islands","Aland Is.");
|
|
_name.insert("Market Reef","Market Reef");
|
|
_name.insert("Czech Republic","Czech Rep.");
|
|
_name.insert("Slovak Republic","Slovak Rep.");
|
|
_name.insert("Belgium","Belgium");
|
|
_name.insert("Greenland","Greenland");
|
|
_name.insert("Faroe Islands","Faroe Is.");
|
|
_name.insert("Denmark","Denmark");
|
|
_name.insert("Papua New Guinea","Papua New Guinea");
|
|
_name.insert("Aruba","Aruba");
|
|
_name.insert("DPR of Korea","DPR of Korea");
|
|
_name.insert("Netherlands","Netherlands");
|
|
_name.insert("Curacao","Curacao");
|
|
_name.insert("Bonaire","Bonaire");
|
|
_name.insert("Saba & St. Eustatius","Saba & St. Eustatius");
|
|
_name.insert("Sint Maarten","Sint Maarten");
|
|
_name.insert("Brazil","Brazil");
|
|
_name.insert("Fernando de Noronha","Fernando de Noronha");
|
|
_name.insert("St. Peter & St. Paul","St. Peter & St. Paul");
|
|
_name.insert("Trindade & Martim Vaz","Trindade & Martim Vaz");
|
|
_name.insert("Suriname","Suriname");
|
|
_name.insert("Franz Josef Land","Franz Josef Land");
|
|
_name.insert("Western Sahara","Western Sahara");
|
|
_name.insert("Bangladesh","Bangladesh");
|
|
_name.insert("Slovenia","Slovenia");
|
|
_name.insert("Seychelles","Seychelles");
|
|
_name.insert("Sao Tome & Principe","Sao Tome & Principe");
|
|
_name.insert("Sweden","Sweden");
|
|
_name.insert("Poland","Poland");
|
|
_name.insert("Sudan","Sudan");
|
|
_name.insert("Egypt","Egypt");
|
|
_name.insert("Greece","Greece");
|
|
_name.insert("Mount Athos","Mount Athos");
|
|
_name.insert("Dodecanese","Dodecanese");
|
|
_name.insert("Crete","Crete");
|
|
_name.insert("Tuvalu","Tuvalu");
|
|
_name.insert("Western Kiribati","W. Kiribati");
|
|
_name.insert("Central Kiribati","C. Kiribati");
|
|
_name.insert("Eastern Kiribati","E. Kiribati");
|
|
_name.insert("Banaba Island","Banaba Is.");
|
|
_name.insert("Somalia","Somalia");
|
|
_name.insert("San Marino","San Marino");
|
|
_name.insert("Palau","Palau");
|
|
_name.insert("Asiatic Turkey","AS Turkey");
|
|
_name.insert("European Turkey","EU Turkey");
|
|
_name.insert("Iceland","Iceland");
|
|
_name.insert("Guatemala","Guatemala");
|
|
_name.insert("Costa Rica","Costa Rica");
|
|
_name.insert("Cocos Island","Cocos Is.");
|
|
_name.insert("Cameroon","Cameroon");
|
|
_name.insert("Corsica","Corsica");
|
|
_name.insert("Central African Republic","C. African Rep.");
|
|
_name.insert("Republic of the Congo","Rep. of the Congo");
|
|
_name.insert("Gabon","Gabon");
|
|
_name.insert("Chad","Chad");
|
|
_name.insert("Cote d'Ivoire","Cote d'Ivoire");
|
|
_name.insert("Benin","Benin");
|
|
_name.insert("Mali","Mali");
|
|
_name.insert("European Russia","EU Russia");
|
|
_name.insert("Kaliningrad","Kaliningrad");
|
|
_name.insert("Asiatic Russia","AS Russia");
|
|
_name.insert("Uzbekistan","Uzbekistan");
|
|
_name.insert("Kazakhstan","Kazakhstan");
|
|
_name.insert("Ukraine","Ukraine");
|
|
_name.insert("Antigua & Barbuda","Antigua & Barbuda");
|
|
_name.insert("Belize","Belize");
|
|
_name.insert("St. Kitts & Nevis","St. Kitts & Nevis");
|
|
_name.insert("Namibia","Namibia");
|
|
_name.insert("Micronesia","Micronesia");
|
|
_name.insert("Marshall Islands","Marshall Is.");
|
|
_name.insert("Brunei Darussalam","Brunei Darussalam");
|
|
_name.insert("Canada","Canada");
|
|
_name.insert("Australia","Australia");
|
|
_name.insert("Heard Island","Heard Is.");
|
|
_name.insert("Macquarie Island","Macquarie Is.");
|
|
_name.insert("Cocos (Keeling) Islands","Cocos (Keeling) Is.");
|
|
_name.insert("Lord Howe Island","Lord Howe Is.");
|
|
_name.insert("Mellish Reef","Mellish Reef");
|
|
_name.insert("Norfolk Island","Norfolk Is.");
|
|
_name.insert("Willis Island","Willis Is.");
|
|
_name.insert("Christmas Island","Christmas Is.");
|
|
_name.insert("Anguilla","Anguilla");
|
|
_name.insert("Montserrat","Montserrat");
|
|
_name.insert("British Virgin Islands","British Virgin Is.");
|
|
_name.insert("Turks & Caicos Islands","Turks & Caicos Is.");
|
|
_name.insert("Pitcairn Island","Pitcairn Is.");
|
|
_name.insert("Ducie Island","Ducie Is.");
|
|
_name.insert("Falkland Islands","Falkland Is.");
|
|
_name.insert("South Georgia Island","S. Georgia Is.");
|
|
_name.insert("South Shetland Islands","S. Shetland Is.");
|
|
_name.insert("South Orkney Islands","S. Orkney Is.");
|
|
_name.insert("South Sandwich Islands","S. Sandwich Is.");
|
|
_name.insert("Bermuda","Bermuda");
|
|
_name.insert("Chagos Islands","Chagos Is.");
|
|
_name.insert("Hong Kong","Hong Kong");
|
|
_name.insert("India","India");
|
|
_name.insert("Andaman & Nicobar Is.","Andaman & Nicobar Is.");
|
|
_name.insert("Lakshadweep Islands","Lakshadweep Is.");
|
|
_name.insert("Mexico","Mexico");
|
|
_name.insert("Revillagigedo","Revillagigedo");
|
|
_name.insert("Burkina Faso","Burkina Faso");
|
|
_name.insert("Cambodia","Cambodia");
|
|
_name.insert("Laos","Laos");
|
|
_name.insert("Macao","Macao");
|
|
_name.insert("Myanmar","Myanmar");
|
|
_name.insert("Afghanistan","Afghanistan");
|
|
_name.insert("Indonesia","Indonesia");
|
|
_name.insert("Iraq","Iraq");
|
|
_name.insert("Vanuatu","Vanuatu");
|
|
_name.insert("Syria","Syria");
|
|
_name.insert("Latvia","Latvia");
|
|
_name.insert("Nicaragua","Nicaragua");
|
|
_name.insert("Romania","Romania");
|
|
_name.insert("El Salvador","El Salvador");
|
|
_name.insert("Serbia","Serbia");
|
|
_name.insert("Venezuela","Venezuela");
|
|
_name.insert("Aves Island","Aves Is.");
|
|
_name.insert("Zimbabwe","Zimbabwe");
|
|
_name.insert("North Macedonia","N. Macedonia");
|
|
_name.insert("Republic of Kosovo","Rep. of Kosovo");
|
|
_name.insert("Republic of South Sudan","Rep. of S. Sudan");
|
|
_name.insert("Albania","Albania");
|
|
_name.insert("Gibraltar","Gibraltar");
|
|
_name.insert("UK Base Areas on Cyprus","UK Base Areas on Cyprus");
|
|
_name.insert("St. Helena","St. Helena");
|
|
_name.insert("Ascension Island","Ascension Is.");
|
|
_name.insert("Tristan da Cunha & Gough","Tristan da Cunha & Gough");
|
|
_name.insert("Cayman Islands","Cayman Is.");
|
|
_name.insert("Tokelau Islands","Tokelau Is.");
|
|
_name.insert("New Zealand","New Zealand");
|
|
_name.insert("Chatham Islands","Chatham Is.");
|
|
_name.insert("Kermadec Islands","Kermadec Is.");
|
|
_name.insert("N.Z. Subantarctic Is.","N.Z. Subantarctic Is.");
|
|
_name.insert("Paraguay","Paraguay");
|
|
_name.insert("South Africa","S. Africa");
|
|
_name.insert("Pr. Edward & Marion Is.","Pr. Edward & Marion Is.");
|
|
}
|
|
|
|
QString CountryDat::_extractName(const QString line)
|
|
{
|
|
int s1 = line.indexOf(':');
|
|
|
|
if (s1>=0)
|
|
{
|
|
QString name = line.left(s1);
|
|
return _name.value(name,name);
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
QString CountryDat::_extractMasterPrefix(const QString line)
|
|
{
|
|
int s1 = line.lastIndexOf(' ');
|
|
int s2 = line.lastIndexOf(':');
|
|
|
|
if (s1 >= 0 && s1 < s2)
|
|
{
|
|
QString pfx = line.mid(s1, s2-s1);
|
|
return pfx.toUpper();
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
QString CountryDat::_extractContinent(const QString line)
|
|
{
|
|
int s1;
|
|
s1 = line.indexOf(':');
|
|
|
|
if (s1>=0)
|
|
{
|
|
s1 = line.indexOf(':',s1+1);
|
|
|
|
if (s1>=0)
|
|
{
|
|
s1 = line.indexOf(':',s1+1);
|
|
|
|
if (s1>=0)
|
|
{
|
|
s1 = line.indexOf(':',s1+1);
|
|
|
|
if (s1>=0)
|
|
{
|
|
QString cont = line.mid(s1-2, 2);
|
|
return cont;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
QString CountryDat::_extractITUZ(const QString line)
|
|
{
|
|
int s1;
|
|
s1 = line.indexOf(':');
|
|
|
|
if (s1>=0)
|
|
{
|
|
s1 = line.indexOf(':',s1+1);
|
|
|
|
if (s1>=0)
|
|
{
|
|
s1 = line.indexOf(':',s1+1);
|
|
|
|
if (s1>=0)
|
|
{
|
|
QString cont = line.mid(s1-2, 2);
|
|
|
|
if (cont.size() == 1) {
|
|
cont = " " + cont;
|
|
}
|
|
|
|
return cont;
|
|
}
|
|
}
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
QString CountryDat::_extractCQZ(const QString line)
|
|
{
|
|
int s1;
|
|
s1 = line.indexOf(':');
|
|
|
|
if (s1>=0)
|
|
{
|
|
s1 = line.indexOf(':',s1+1);
|
|
|
|
if (s1>=0)
|
|
{
|
|
QString cont = line.mid(s1-2, 2);
|
|
|
|
if (cont.size() == 1) {
|
|
cont = " " + cont;
|
|
}
|
|
|
|
return cont;
|
|
}
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
QString CountryDat::_removeBrackets(QString &line, const QString a, const QString b)
|
|
{
|
|
QString res = "";
|
|
int s1 = line.indexOf(a);
|
|
|
|
while (s1 >= 0)
|
|
{
|
|
int s2 = line.indexOf(b);
|
|
res += line.mid(s1+1,s2-s1-1);
|
|
line = line.left(s1) + line.mid(s2+1,-1);
|
|
s1 = line.indexOf(a);
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
QStringList CountryDat::_extractPrefix(QString &line, bool &more)
|
|
{
|
|
QString a;
|
|
line = line.remove(" \n");
|
|
line = line.replace(" ","");
|
|
a = _removeBrackets(line,"<",">");
|
|
a = _removeBrackets(line,"~","~");
|
|
int s1 = line.indexOf(';');
|
|
more = true;
|
|
|
|
if (s1 >= 0)
|
|
{
|
|
line = line.left(s1);
|
|
more = false;
|
|
}
|
|
|
|
QStringList r = line.split(',');
|
|
|
|
return r;
|
|
}
|
|
|
|
|
|
void CountryDat::load()
|
|
{
|
|
_countries.clear();
|
|
QFile inputFile(":/data/cty.dat");
|
|
|
|
if (inputFile.open(QIODevice::ReadOnly))
|
|
{
|
|
QTextStream in(&inputFile);
|
|
|
|
while (!in.atEnd())
|
|
{
|
|
QString line1 = in.readLine();
|
|
|
|
if (!in.atEnd())
|
|
{
|
|
QString line2 = in.readLine();
|
|
QString masterPrefix, country, cqz, ituz, continent;
|
|
cqz = _extractCQZ(line1);
|
|
ituz = _extractITUZ(line1);
|
|
continent = _extractContinent(line1);
|
|
masterPrefix = _extractMasterPrefix(line1).trimmed();
|
|
country = _extractName(line1).trimmed();
|
|
|
|
if (!masterPrefix.isEmpty() || !country.isEmpty())
|
|
{
|
|
bool more = true;
|
|
QStringList prefixs;
|
|
|
|
while (more)
|
|
{
|
|
QStringList p = _extractPrefix(line2,more);
|
|
prefixs += p;
|
|
|
|
if (more) {
|
|
line2 = in.readLine();
|
|
}
|
|
}
|
|
|
|
QString p,_cqz,_ituz,_continent;
|
|
|
|
foreach(p,prefixs)
|
|
{
|
|
if (!p.isEmpty())
|
|
{
|
|
_cqz = _removeBrackets(p,"(",")");
|
|
|
|
if (_cqz.isEmpty()) {
|
|
_cqz = cqz;
|
|
}
|
|
if (_cqz.size() == 1) {
|
|
_cqz = "0" + _cqz;
|
|
}
|
|
|
|
_ituz = _removeBrackets(p,"[","]");
|
|
|
|
if (_ituz.isEmpty()) {
|
|
_ituz = ituz;
|
|
}
|
|
if (_ituz.size() == 1) {
|
|
_ituz = "0" + _ituz;
|
|
}
|
|
|
|
_continent = _removeBrackets(p,"{","}");
|
|
|
|
if (_continent.isEmpty()) {
|
|
_continent = continent;
|
|
}
|
|
|
|
_countries.insert(p, CountryInfo{_continent, masterPrefix, country, _cqz, _ituz});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
inputFile.close();
|
|
}
|
|
}
|