--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/bmsapp.cpp Mon Feb 07 21:28:26 2022 +0100 @@ -0,0 +1,170 @@ +/** + * bmsapp.cpp is part of bmsapp. + * + * bmsapp 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, either version 3 of the License, or + * (at your option) any later version. + * + * bmsapp 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 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 "bmsapp.h" +#include "config.h" + + + +bool Bmsapp::ensureDirectoriesExist() +{ + QDir resourceDir = Bmsapp::getResourceDir(); + bool resourceDirSuccess = resourceDir.exists(); + if (!resourceDirSuccess) { + QString errMsg{ + QObject::tr("Resource directory \"%1\" is missing. Some features will be unavailable.").arg(resourceDir.path()) + }; + qCritical() << Q_FUNC_INFO << errMsg; + } + + return resourceDirSuccess; +// return resourceDirSuccess && createDir(PersistentSettings::getUserDir()); +} + + +QDir Bmsapp::getResourceDir() +{ + QString dir = qApp->applicationDirPath(); + + dir = QString(CONFIGDATADIR); + + qDebug() << "Resource dir" << dir; + return dir; +} + + + +bool Bmsapp::initialize() +{ + ensureDirectoriesExist(); + readsettings(); + + qDebug() << "Loading Database..."; + return true; +} + + + +void Bmsapp::cleanup() +{ + qDebug() << "BMSapp is cleaning up."; + writesettings(); +} + + + +void Bmsapp::readsettings() +{ + QSettings settings(QSettings::IniFormat, QSettings::UserScope, "mbse", "bmsapp"); + + settings.beginGroup("dbprod"); + dbProd.host = settings.value("host").toString(); + if (dbProd.host.isEmpty()) { + dbProd.host = "localhost"; + dbProd.port = "3306"; + dbProd.name = "bms_prod"; + dbProd.user = "nobody"; + dbProd.pass = "secret"; + dbProd.charset = "utf8"; + settings.setValue("host", dbProd.host); + settings.setValue("port", dbProd.port); + settings.setValue("name", dbProd.name); + settings.setValue("user", dbProd.user); + settings.setValue("pass", dbProd.pass); + settings.setValue("charset", dbProd.charset); + } else { + dbProd.port = settings.value("port").toString(); + dbProd.name = settings.value("name").toString(); + dbProd.user = settings.value("user").toString(); + dbProd.pass = settings.value("pass").toString(); + dbProd.charset = settings.value("charset").toString(); + } + settings.endGroup(); + qDebug() << dbProd.host << dbProd.port << dbProd.name << dbProd.pass; + + settings.beginGroup("dbdev"); + dbDev.host = settings.value("host").toString(); + if (dbDev.host.isEmpty()) { + dbDev.host = "localhost"; + dbDev.port = "3306"; + dbDev.name = "bms_dev"; + dbDev.user = "nobody"; + dbDev.pass = "secret"; + dbDev.charset = "utf8"; + settings.setValue("host", dbDev.host); + settings.setValue("port", dbDev.port); + settings.setValue("name", dbDev.name); + settings.setValue("user", dbDev.user); + settings.setValue("pass", dbDev.pass); + settings.setValue("charset", dbDev.charset); + } else { + dbDev.port = settings.value("port").toString(); + dbDev.name = settings.value("name").toString(); + dbDev.user = settings.value("user").toString(); + dbDev.pass = settings.value("pass").toString(); + dbDev.charset = settings.value("charset").toString(); + } + settings.endGroup(); + qDebug() << dbDev.host << dbDev.port << dbDev.name << dbDev.pass; +} + + + +void Bmsapp::writesettings() +{ + QSettings settings(QSettings::IniFormat, QSettings::UserScope, "mbse", "bmsapp"); + + settings.beginGroup("dbprod"); + settings.setValue("host", dbProd.host); + settings.setValue("port", dbProd.port); + settings.setValue("name", dbProd.name); + settings.setValue("user", dbProd.user); + settings.setValue("pass", dbProd.pass); + settings.setValue("charset", dbProd.charset); + settings.endGroup(); + + settings.beginGroup("dbdev"); + settings.setValue("host", dbDev.host); + settings.setValue("port", dbDev.port); + settings.setValue("name", dbDev.name); + settings.setValue("user", dbDev.user); + settings.setValue("pass", dbDev.pass); + settings.setValue("charset", dbDev.charset); + settings.endGroup(); + qDebug() << "writesettings() done."; +} + + + +int Bmsapp::run() { + + int rc = 0; + + if (! initialize()) { + cleanup(); + return 1; + } + + rc = qApp->exec(); + + cleanup(); + + qDebug() << Q_FUNC_INFO << "Cleaned up. Returning " << rc; + return rc; +} + + +