src/bmsapp.cpp

Mon, 07 Feb 2022 21:28:26 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 07 Feb 2022 21:28:26 +0100
changeset 2
a1e435907f3a
child 3
4b95e33ee476
permissions
-rw-r--r--

Added commandline parameters. Added initial app functions. Added user configuration read/write/create.

/**
 * 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