#include "mainwindow.h"

#include <QApplication>
#include <QDir>
#include <QSettings>
#include <QStandardPaths>

// maximum level an safety!
std::unique_ptr<QSettings> settings;

// funktioniert komplett plattformunabhängig!
// sogar auf Android, wenn man wahnsinnig sein sollte!
void initialise_settings() { // sucht für die Config Datei an diversen sinnvollen Orten
    QString config_filename = "ThinkPink.ini";
    QString config_path = "";

    // priorisiert Config Datei, die direkt neben der Binary liegt, falls vorhanden
    QString prio_path = QDir(QCoreApplication::applicationDirPath()).filePath(config_filename);
    if (QFileInfo::exists(prio_path)) {
        config_path = prio_path;
    }
    else {// schaut an den gängigen Orten (abhängig vom Betriebssystem) nach der Config-Datei
        QList<QStandardPaths::StandardLocation> locations{ QStandardPaths::ConfigLocation, QStandardPaths::AppConfigLocation};
        for (long long i = 0; i < locations.size(); i++) {
            config_path = QStandardPaths::locate( locations.value(i), config_filename);
            if (config_path != "") // config found
                break;
        }
    }

    settings.reset( new QSettings( config_path, QSettings::IniFormat ) );
}

int main(int argc, char *argv[])
{
    initialise_settings();
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
