src/bmsapp.cpp

changeset 2
a1e435907f3a
child 3
4b95e33ee476
--- /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;
+}
+
+
+

mercurial