diff --git a/src/db/databasemanager.cpp b/src/db/databasemanager.cpp index 31147b6cb..04f486100 100644 --- a/src/db/databasemanager.cpp +++ b/src/db/databasemanager.cpp @@ -177,11 +177,13 @@ DatabaseManager::DatabaseManager(MainWindow *parent) SqlDatabase::addDatabase(DATABASE_TYPE, DATABASE_NAME); SqlDatabase::addDatabase(DATABASE_TYPE, DATABASE_NAME_NAV); + SqlDatabase::addDatabase(DATABASE_TYPE, DATABASE_NAME_MORA); SqlDatabase::addDatabase(DATABASE_TYPE, DATABASE_NAME_DLG_INFO_TEMP); SqlDatabase::addDatabase(DATABASE_TYPE, DATABASE_NAME_TEMP); databaseSim = new SqlDatabase(DATABASE_NAME); databaseNav = new SqlDatabase(DATABASE_NAME_NAV); + databaseMora = new SqlDatabase(DATABASE_NAME_MORA); if(mainWindow != nullptr) { @@ -226,11 +228,13 @@ DatabaseManager::~DatabaseManager() delete databaseSim; delete databaseNav; + delete databaseMora; delete databaseUser; delete databaseOnline; SqlDatabase::removeDatabase(DATABASE_NAME); SqlDatabase::removeDatabase(DATABASE_NAME_NAV); + SqlDatabase::removeDatabase(DATABASE_NAME_MORA); SqlDatabase::removeDatabase(DATABASE_NAME_USER); SqlDatabase::removeDatabase(DATABASE_NAME_DLG_INFO_TEMP); SqlDatabase::removeDatabase(DATABASE_NAME_TEMP); @@ -823,6 +827,7 @@ void DatabaseManager::openAllDatabases() { QString simDbFile = buildDatabaseFileName(currentFsType); QString navDbFile = buildDatabaseFileNameAppDirOrSettings(FsPaths::NAVIGRAPH); + QString moraDbFile = buildDatabaseFileNameAppDirOrSettings(FsPaths::NAVIGRAPH); if(navDatabaseStatus == dm::NAVDATABASE_ALL) simDbFile = navDbFile; @@ -832,6 +837,7 @@ void DatabaseManager::openAllDatabases() openDatabaseFile(databaseSim, simDbFile, true /* readonly */, true /* createSchema */); openDatabaseFile(databaseNav, navDbFile, true /* readonly */, true /* createSchema */); + openDatabaseFile(databaseMora, moraDbFile, true /* readonly */, true /* createSchema */); } void DatabaseManager::openDatabaseFile(atools::sql::SqlDatabase *db, const QString& file, bool readonly, @@ -931,6 +937,7 @@ void DatabaseManager::closeDatabases() { closeDatabaseFile(databaseSim); closeDatabaseFile(databaseNav); + closeDatabaseFile(databaseMora); } void DatabaseManager::closeDatabaseFile(atools::sql::SqlDatabase *db) @@ -963,6 +970,11 @@ atools::sql::SqlDatabase *DatabaseManager::getDatabaseNav() return databaseNav; } +atools::sql::SqlDatabase *DatabaseManager::getDatabaseMora() +{ + return databaseMora; +} + void DatabaseManager::run() { qDebug() << Q_FUNC_INFO; diff --git a/src/db/databasemanager.h b/src/db/databasemanager.h index b943bde3c..fde90edf9 100644 --- a/src/db/databasemanager.h +++ b/src/db/databasemanager.h @@ -97,7 +97,8 @@ class DatabaseManager : void openAllDatabases(); /* Open a writeable database for userpoints or online network data. Automatic transactions are off. */ - void openWriteableDatabase(atools::sql::SqlDatabase *database, const QString& name, const QString& displayName, bool backup); + void openWriteableDatabase(atools::sql::SqlDatabase *database, const QString& name, const QString& displayName, + bool backup); void closeUserDatabase(); void closeOnlineDatabase(); @@ -111,6 +112,9 @@ class DatabaseManager : /* Get navaid database or same as above if it does not exist */ atools::sql::SqlDatabase *getDatabaseNav(); + /* Get nav database for MORA data */ + atools::sql::SqlDatabase *getDatabaseMora(); + /* * Insert actions for switching between installed flight simulators. * Actions have to be freed by the caller and are connected to switchSim @@ -230,6 +234,9 @@ class DatabaseManager : /* Navaid database e.g. from Navigraph */ const QString DATABASE_NAME_NAV = "LNMDBNAV"; + /* MORA database e.g. from Navigraph */ + const QString DATABASE_NAME_MORA = "LNMDBMORA"; + /* Userpoint database */ const QString DATABASE_NAME_USER = "LNMDBUSER"; @@ -247,6 +254,7 @@ class DatabaseManager : // Need a pointer since it has to be deleted before the destructor is left atools::sql::SqlDatabase *databaseSim = nullptr /* Database for simulator content */, *databaseNav = nullptr /* Database for third party navigation data */, + *databaseMora = nullptr /* Database for MORA data - always nav */, *databaseUser = nullptr /* Database for user data */, *databaseOnline = nullptr /* Database for network online data */; diff --git a/src/navapp.cpp b/src/navapp.cpp index fd11dada3..98560baac 100644 --- a/src/navapp.cpp +++ b/src/navapp.cpp @@ -113,7 +113,7 @@ void NavApp::init(MainWindow *mainWindowParam) magDecReader = new atools::fs::common::MagDecReader(); magDecReader->readFromTable(*databaseManager->getDatabaseSim()); - moraReader = new atools::fs::common::MoraReader(databaseManager->getDatabaseNav()); + moraReader = new atools::fs::common::MoraReader(databaseManager->getDatabaseMora()); moraReader->readFromTable(); vehicleIcons = new VehicleIcons(); @@ -302,7 +302,7 @@ void NavApp::postDatabaseLoad() databaseMetaNav = new atools::fs::db::DatabaseMeta(getDatabaseNav()); magDecReader->readFromTable(*getDatabaseSim()); - moraReader->readFromTable(*getDatabaseNav()); + moraReader->readFromTable(*getDatabaseMora()); airportQuerySim->initQueries(); airportQueryNav->initQueries(); @@ -474,6 +474,11 @@ atools::sql::SqlDatabase *NavApp::getDatabaseNav() return getDatabaseManager()->getDatabaseNav(); } +atools::sql::SqlDatabase *NavApp::getDatabaseMora() +{ + return getDatabaseManager()->getDatabaseMora(); +} + atools::fs::userdata::UserdataManager *NavApp::getUserdataManager() { return databaseManager->getUserdataManager(); diff --git a/src/navapp.h b/src/navapp.h index bff4035a4..33885a6f1 100644 --- a/src/navapp.h +++ b/src/navapp.h @@ -182,6 +182,9 @@ class NavApp : /* External update from navaids or same as above */ static atools::sql::SqlDatabase *getDatabaseNav(); + /* Always navdatabase */ + static atools::sql::SqlDatabase *getDatabaseMora(); + static atools::fs::userdata::UserdataManager *getUserdataManager(); static UserdataIcons *getUserdataIcons(); static UserdataSearch *getUserdataSearch();