mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 21:20:31 -05:00 
			
		
		
		
	
		
			
	
	
		
			423 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			423 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								///////////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								// Copyright (C) 2021 Jon Beniston, M7RCE                                        //
							 | 
						||
| 
								 | 
							
								//                                                                               //
							 | 
						||
| 
								 | 
							
								// 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/>.          //
							 | 
						||
| 
								 | 
							
								///////////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "openaip.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const QStringList OpenAIP::m_countryCodes = {
							 | 
						||
| 
								 | 
							
								    "ad",
							 | 
						||
| 
								 | 
							
								    "ae",
							 | 
						||
| 
								 | 
							
								    "af",
							 | 
						||
| 
								 | 
							
								    "ag",
							 | 
						||
| 
								 | 
							
								    "ai",
							 | 
						||
| 
								 | 
							
								    "al",
							 | 
						||
| 
								 | 
							
								    "am",
							 | 
						||
| 
								 | 
							
								    "an",
							 | 
						||
| 
								 | 
							
								    "ao",
							 | 
						||
| 
								 | 
							
								    "aq",
							 | 
						||
| 
								 | 
							
								    "ar",
							 | 
						||
| 
								 | 
							
								    "as",
							 | 
						||
| 
								 | 
							
								    "at",
							 | 
						||
| 
								 | 
							
								    "au",
							 | 
						||
| 
								 | 
							
								    "aw",
							 | 
						||
| 
								 | 
							
								    "ax",
							 | 
						||
| 
								 | 
							
								    "az",
							 | 
						||
| 
								 | 
							
								    "ba",
							 | 
						||
| 
								 | 
							
								    "bb",
							 | 
						||
| 
								 | 
							
								    "bd",
							 | 
						||
| 
								 | 
							
								    "be",
							 | 
						||
| 
								 | 
							
								    "bf",
							 | 
						||
| 
								 | 
							
								    "bg",
							 | 
						||
| 
								 | 
							
								    "bh",
							 | 
						||
| 
								 | 
							
								    "bi",
							 | 
						||
| 
								 | 
							
								    "bj",
							 | 
						||
| 
								 | 
							
								    "bl",
							 | 
						||
| 
								 | 
							
								    "bm",
							 | 
						||
| 
								 | 
							
								    "bn",
							 | 
						||
| 
								 | 
							
								    "bo",
							 | 
						||
| 
								 | 
							
								    "bq",
							 | 
						||
| 
								 | 
							
								    "br",
							 | 
						||
| 
								 | 
							
								    "bs",
							 | 
						||
| 
								 | 
							
								    "bt",
							 | 
						||
| 
								 | 
							
								    "bv",
							 | 
						||
| 
								 | 
							
								    "bw",
							 | 
						||
| 
								 | 
							
								    "by",
							 | 
						||
| 
								 | 
							
								    "bz",
							 | 
						||
| 
								 | 
							
								    "ca",
							 | 
						||
| 
								 | 
							
								    "cc",
							 | 
						||
| 
								 | 
							
								    "cd",
							 | 
						||
| 
								 | 
							
								    "cf",
							 | 
						||
| 
								 | 
							
								    "cg",
							 | 
						||
| 
								 | 
							
								    "ch",
							 | 
						||
| 
								 | 
							
								    "ci",
							 | 
						||
| 
								 | 
							
								    "ck",
							 | 
						||
| 
								 | 
							
								    "cl",
							 | 
						||
| 
								 | 
							
								    "cm",
							 | 
						||
| 
								 | 
							
								    "cn",
							 | 
						||
| 
								 | 
							
								    "co",
							 | 
						||
| 
								 | 
							
								    "cr",
							 | 
						||
| 
								 | 
							
								    "cu",
							 | 
						||
| 
								 | 
							
								    "cv",
							 | 
						||
| 
								 | 
							
								    "cw",
							 | 
						||
| 
								 | 
							
								    "cx",
							 | 
						||
| 
								 | 
							
								    "cy",
							 | 
						||
| 
								 | 
							
								    "cz",
							 | 
						||
| 
								 | 
							
								    "de",
							 | 
						||
| 
								 | 
							
								    "dj",
							 | 
						||
| 
								 | 
							
								    "dk",
							 | 
						||
| 
								 | 
							
								    "dm",
							 | 
						||
| 
								 | 
							
								    "do",
							 | 
						||
| 
								 | 
							
								    "dz",
							 | 
						||
| 
								 | 
							
								    "ec",
							 | 
						||
| 
								 | 
							
								    "ee",
							 | 
						||
| 
								 | 
							
								    "eg",
							 | 
						||
| 
								 | 
							
								    "eh",
							 | 
						||
| 
								 | 
							
								    "er",
							 | 
						||
| 
								 | 
							
								    "es",
							 | 
						||
| 
								 | 
							
								    "et",
							 | 
						||
| 
								 | 
							
								    "fi",
							 | 
						||
| 
								 | 
							
								    "fj",
							 | 
						||
| 
								 | 
							
								    "fk",
							 | 
						||
| 
								 | 
							
								    "fm",
							 | 
						||
| 
								 | 
							
								    "fo",
							 | 
						||
| 
								 | 
							
								    "fr",
							 | 
						||
| 
								 | 
							
								    "ga",
							 | 
						||
| 
								 | 
							
								    "gb",
							 | 
						||
| 
								 | 
							
								    "ge",
							 | 
						||
| 
								 | 
							
								    "gf",
							 | 
						||
| 
								 | 
							
								    "gg",
							 | 
						||
| 
								 | 
							
								    "gh",
							 | 
						||
| 
								 | 
							
								    "gi",
							 | 
						||
| 
								 | 
							
								    "gl",
							 | 
						||
| 
								 | 
							
								    "gm",
							 | 
						||
| 
								 | 
							
								    "gn",
							 | 
						||
| 
								 | 
							
								    "gp",
							 | 
						||
| 
								 | 
							
								    "gq",
							 | 
						||
| 
								 | 
							
								    "gr",
							 | 
						||
| 
								 | 
							
								    "gs",
							 | 
						||
| 
								 | 
							
								    "gt",
							 | 
						||
| 
								 | 
							
								    "gu",
							 | 
						||
| 
								 | 
							
								    "gw",
							 | 
						||
| 
								 | 
							
								    "gy",
							 | 
						||
| 
								 | 
							
								    "hk",
							 | 
						||
| 
								 | 
							
								    "hm",
							 | 
						||
| 
								 | 
							
								    "hn",
							 | 
						||
| 
								 | 
							
								    "hr",
							 | 
						||
| 
								 | 
							
								    "hu",
							 | 
						||
| 
								 | 
							
								    "id",
							 | 
						||
| 
								 | 
							
								    "ie",
							 | 
						||
| 
								 | 
							
								    "il",
							 | 
						||
| 
								 | 
							
								    "im",
							 | 
						||
| 
								 | 
							
								    "in",
							 | 
						||
| 
								 | 
							
								    "io",
							 | 
						||
| 
								 | 
							
								    "iq",
							 | 
						||
| 
								 | 
							
								    "ir",
							 | 
						||
| 
								 | 
							
								    "is",
							 | 
						||
| 
								 | 
							
								    "it",
							 | 
						||
| 
								 | 
							
								    "je",
							 | 
						||
| 
								 | 
							
								    "jm",
							 | 
						||
| 
								 | 
							
								    "jo",
							 | 
						||
| 
								 | 
							
								    "jp",
							 | 
						||
| 
								 | 
							
								    "ke",
							 | 
						||
| 
								 | 
							
								    "kg",
							 | 
						||
| 
								 | 
							
								    "kh",
							 | 
						||
| 
								 | 
							
								    "ki",
							 | 
						||
| 
								 | 
							
								    "km",
							 | 
						||
| 
								 | 
							
								    "kn",
							 | 
						||
| 
								 | 
							
								    "kp",
							 | 
						||
| 
								 | 
							
								    "kr",
							 | 
						||
| 
								 | 
							
								    "kw",
							 | 
						||
| 
								 | 
							
								    "ky",
							 | 
						||
| 
								 | 
							
								    "kz",
							 | 
						||
| 
								 | 
							
								    "la",
							 | 
						||
| 
								 | 
							
								    "lb",
							 | 
						||
| 
								 | 
							
								    "lc",
							 | 
						||
| 
								 | 
							
								    "li",
							 | 
						||
| 
								 | 
							
								    "lk",
							 | 
						||
| 
								 | 
							
								    "lr",
							 | 
						||
| 
								 | 
							
								    "ls",
							 | 
						||
| 
								 | 
							
								    "lt",
							 | 
						||
| 
								 | 
							
								    "lu",
							 | 
						||
| 
								 | 
							
								    "lv",
							 | 
						||
| 
								 | 
							
								    "ly",
							 | 
						||
| 
								 | 
							
								    "ma",
							 | 
						||
| 
								 | 
							
								    "mc",
							 | 
						||
| 
								 | 
							
								    "md",
							 | 
						||
| 
								 | 
							
								    "me",
							 | 
						||
| 
								 | 
							
								    "mf",
							 | 
						||
| 
								 | 
							
								    "mg",
							 | 
						||
| 
								 | 
							
								    "mh",
							 | 
						||
| 
								 | 
							
								    "mk",
							 | 
						||
| 
								 | 
							
								    "ml",
							 | 
						||
| 
								 | 
							
								    "mm",
							 | 
						||
| 
								 | 
							
								    "mn",
							 | 
						||
| 
								 | 
							
								    "mo",
							 | 
						||
| 
								 | 
							
								    "mp",
							 | 
						||
| 
								 | 
							
								    "mq",
							 | 
						||
| 
								 | 
							
								    "mr",
							 | 
						||
| 
								 | 
							
								    "ms",
							 | 
						||
| 
								 | 
							
								    "mt",
							 | 
						||
| 
								 | 
							
								    "mu",
							 | 
						||
| 
								 | 
							
								    "mv",
							 | 
						||
| 
								 | 
							
								    "mw",
							 | 
						||
| 
								 | 
							
								    "mx",
							 | 
						||
| 
								 | 
							
								    "my",
							 | 
						||
| 
								 | 
							
								    "mz",
							 | 
						||
| 
								 | 
							
								    "na",
							 | 
						||
| 
								 | 
							
								    "nc",
							 | 
						||
| 
								 | 
							
								    "ne",
							 | 
						||
| 
								 | 
							
								    "nf",
							 | 
						||
| 
								 | 
							
								    "ng",
							 | 
						||
| 
								 | 
							
								    "ni",
							 | 
						||
| 
								 | 
							
								    "nl",
							 | 
						||
| 
								 | 
							
								    "no",
							 | 
						||
| 
								 | 
							
								    "np",
							 | 
						||
| 
								 | 
							
								    "nr",
							 | 
						||
| 
								 | 
							
								    "nu",
							 | 
						||
| 
								 | 
							
								    "nz",
							 | 
						||
| 
								 | 
							
								    "om",
							 | 
						||
| 
								 | 
							
								    "pa",
							 | 
						||
| 
								 | 
							
								    "pe",
							 | 
						||
| 
								 | 
							
								    "pf",
							 | 
						||
| 
								 | 
							
								    "pg",
							 | 
						||
| 
								 | 
							
								    "ph",
							 | 
						||
| 
								 | 
							
								    "pk",
							 | 
						||
| 
								 | 
							
								    "pl",
							 | 
						||
| 
								 | 
							
								    "pm",
							 | 
						||
| 
								 | 
							
								    "pn",
							 | 
						||
| 
								 | 
							
								    "pr",
							 | 
						||
| 
								 | 
							
								    "ps",
							 | 
						||
| 
								 | 
							
								    "pt",
							 | 
						||
| 
								 | 
							
								    "pw",
							 | 
						||
| 
								 | 
							
								    "py",
							 | 
						||
| 
								 | 
							
								    "qa",
							 | 
						||
| 
								 | 
							
								    "re",
							 | 
						||
| 
								 | 
							
								    "ro",
							 | 
						||
| 
								 | 
							
								    "rs",
							 | 
						||
| 
								 | 
							
								    "ru",
							 | 
						||
| 
								 | 
							
								    "rw",
							 | 
						||
| 
								 | 
							
								    "sa",
							 | 
						||
| 
								 | 
							
								    "sb",
							 | 
						||
| 
								 | 
							
								    "sc",
							 | 
						||
| 
								 | 
							
								    "sd",
							 | 
						||
| 
								 | 
							
								    "se",
							 | 
						||
| 
								 | 
							
								    "sg",
							 | 
						||
| 
								 | 
							
								    "sh",
							 | 
						||
| 
								 | 
							
								    "si",
							 | 
						||
| 
								 | 
							
								    "sj",
							 | 
						||
| 
								 | 
							
								    "sk",
							 | 
						||
| 
								 | 
							
								    "sl",
							 | 
						||
| 
								 | 
							
								    "sm",
							 | 
						||
| 
								 | 
							
								    "sn",
							 | 
						||
| 
								 | 
							
								    "so",
							 | 
						||
| 
								 | 
							
								    "sr",
							 | 
						||
| 
								 | 
							
								    "ss",
							 | 
						||
| 
								 | 
							
								    "st",
							 | 
						||
| 
								 | 
							
								    "sv",
							 | 
						||
| 
								 | 
							
								    "sx",
							 | 
						||
| 
								 | 
							
								    "sy",
							 | 
						||
| 
								 | 
							
								    "sz",
							 | 
						||
| 
								 | 
							
								    "tc",
							 | 
						||
| 
								 | 
							
								    "td",
							 | 
						||
| 
								 | 
							
								    "tf",
							 | 
						||
| 
								 | 
							
								    "tg",
							 | 
						||
| 
								 | 
							
								    "th",
							 | 
						||
| 
								 | 
							
								    "tj",
							 | 
						||
| 
								 | 
							
								    "tk",
							 | 
						||
| 
								 | 
							
								    "tl",
							 | 
						||
| 
								 | 
							
								    "tm",
							 | 
						||
| 
								 | 
							
								    "tn",
							 | 
						||
| 
								 | 
							
								    "to",
							 | 
						||
| 
								 | 
							
								    "tr",
							 | 
						||
| 
								 | 
							
								    "tt",
							 | 
						||
| 
								 | 
							
								    "tv",
							 | 
						||
| 
								 | 
							
								    "tw",
							 | 
						||
| 
								 | 
							
								    "tz",
							 | 
						||
| 
								 | 
							
								    "ua",
							 | 
						||
| 
								 | 
							
								    "ug",
							 | 
						||
| 
								 | 
							
								    "um",
							 | 
						||
| 
								 | 
							
								    "us",
							 | 
						||
| 
								 | 
							
								    "uy",
							 | 
						||
| 
								 | 
							
								    "uz",
							 | 
						||
| 
								 | 
							
								    "va",
							 | 
						||
| 
								 | 
							
								    "vc",
							 | 
						||
| 
								 | 
							
								    "ve",
							 | 
						||
| 
								 | 
							
								    "vg",
							 | 
						||
| 
								 | 
							
								    "vi",
							 | 
						||
| 
								 | 
							
								    "vn",
							 | 
						||
| 
								 | 
							
								    "vu",
							 | 
						||
| 
								 | 
							
								    "wf",
							 | 
						||
| 
								 | 
							
								    "ws",
							 | 
						||
| 
								 | 
							
								    "ye",
							 | 
						||
| 
								 | 
							
								    "yt",
							 | 
						||
| 
								 | 
							
								    "za",
							 | 
						||
| 
								 | 
							
								    "zm",
							 | 
						||
| 
								 | 
							
								    "zw"
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								OpenAIP::OpenAIP(QObject *parent) :
							 | 
						||
| 
								 | 
							
								    QObject(parent)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    connect(&m_dlm, &HttpDownloadManager::downloadComplete, this, &OpenAIP::downloadFinished);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								OpenAIP::~OpenAIP()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    disconnect(&m_dlm, &HttpDownloadManager::downloadComplete, this, &OpenAIP::downloadFinished);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								QString OpenAIP::getDataDir()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    // Get directory to store app data in
							 | 
						||
| 
								 | 
							
								    QStringList locations = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
							 | 
						||
| 
								 | 
							
								    // First dir is writable
							 | 
						||
| 
								 | 
							
								    return locations[0];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								QString OpenAIP::getAirspaceFilename(int i)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return getAirspaceFilename(m_countryCodes[i]);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								QString OpenAIP::getAirspaceFilename(const QString& countryCode)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return getDataDir() + "/" + countryCode + "_asp.xml";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								QString OpenAIP::getAirspaceURL(int i)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    if (i < m_countryCodes.size()) {
							 | 
						||
| 
								 | 
							
								        return QString(OPENAIP_AIRSPACE_URL).arg(m_countryCodes[i]);
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        return QString();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OpenAIP::downloadAirspaces()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    m_countryIndex = 0;
							 | 
						||
| 
								 | 
							
								    downloadAirspace();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OpenAIP::downloadAirspace()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    QString filename = getAirspaceFilename(m_countryIndex);
							 | 
						||
| 
								 | 
							
								    QString urlString = getAirspaceURL(m_countryIndex);
							 | 
						||
| 
								 | 
							
								    QUrl dbURL(urlString);
							 | 
						||
| 
								 | 
							
								    qDebug() << "OpenAIP::downloadAirspace: Downloading " << urlString;
							 | 
						||
| 
								 | 
							
								    emit downloadingURL(urlString);
							 | 
						||
| 
								 | 
							
								    m_dlm.download(dbURL, filename);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								QString OpenAIP::getNavAidsFilename(int i)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return getNavAidsFilename(m_countryCodes[i]);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								QString OpenAIP::getNavAidsFilename(const QString& countryCode)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return getDataDir() + "/" + countryCode + "_nav.xml";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								QString OpenAIP::getNavAidsURL(int i)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    if (i < m_countryCodes.size()) {
							 | 
						||
| 
								 | 
							
								        return QString(OPENAIP_NAVAIDS_URL).arg(m_countryCodes[i]);
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        return QString();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OpenAIP::downloadNavAids()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    m_countryIndex = 0;
							 | 
						||
| 
								 | 
							
								    downloadNavAid();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OpenAIP::downloadNavAid()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    QString filename = getNavAidsFilename(m_countryIndex);
							 | 
						||
| 
								 | 
							
								    QString urlString = getNavAidsURL(m_countryIndex);
							 | 
						||
| 
								 | 
							
								    QUrl dbURL(urlString);
							 | 
						||
| 
								 | 
							
								    qDebug() << "OpenAIP::downloadNavAid: Downloading " << urlString;
							 | 
						||
| 
								 | 
							
								    emit downloadingURL(urlString);
							 | 
						||
| 
								 | 
							
								    m_dlm.download(dbURL, filename);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OpenAIP::downloadFinished(const QString& filename, bool success)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    // Not all countries have corresponding files, so we should expect some errors
							 | 
						||
| 
								 | 
							
								    if (!success) {
							 | 
						||
| 
								 | 
							
								        qDebug() << "OpenAIP::downloadFinished: Failed: " << filename;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (filename == getNavAidsFilename(m_countryIndex))
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        m_countryIndex++;
							 | 
						||
| 
								 | 
							
								        if (m_countryIndex < m_countryCodes.size()) {
							 | 
						||
| 
								 | 
							
								            downloadNavAid();
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            emit downloadNavAidsFinished();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else if (filename == getAirspaceFilename(m_countryIndex))
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        m_countryIndex++;
							 | 
						||
| 
								 | 
							
								        if (m_countryIndex < m_countryCodes.size()) {
							 | 
						||
| 
								 | 
							
								            downloadAirspace();
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            emit downloadAirspaceFinished();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        qDebug() << "OpenAIP::downloadFinished: Unexpected filename: " << filename;
							 | 
						||
| 
								 | 
							
								        emit downloadError(QString("Unexpected filename: %1").arg(filename));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Read airspaces for all countries
							 | 
						||
| 
								 | 
							
								QList<Airspace *> OpenAIP::readAirspaces()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    QList<Airspace *> airspaces;
							 | 
						||
| 
								 | 
							
								    for (const auto& countryCode : m_countryCodes) {
							 | 
						||
| 
								 | 
							
								        airspaces.append(readAirspaces(countryCode));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return airspaces;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Read airspaces for a single country
							 | 
						||
| 
								 | 
							
								QList<Airspace *> OpenAIP::readAirspaces(const QString& countryCode)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return Airspace::readXML(getAirspaceFilename(countryCode));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Read NavAids for all countries
							 | 
						||
| 
								 | 
							
								QList<NavAid *> OpenAIP::readNavAids()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    QList<NavAid *> navAids;
							 | 
						||
| 
								 | 
							
								    for (const auto& countryCode : m_countryCodes) {
							 | 
						||
| 
								 | 
							
								        navAids.append(readNavAids(countryCode));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return navAids;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Read NavAids for a single country
							 | 
						||
| 
								 | 
							
								QList<NavAid *> OpenAIP::readNavAids(const QString& countryCode)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return NavAid::readXML(getNavAidsFilename(countryCode));
							 | 
						||
| 
								 | 
							
								}
							 |