#include "mainwindow.h" #include #include #include #include // dieser unique Pointer ist absolut genial, weil er mir erlaubt, die User-spezifischen Einstellungen zu Farben und Grid-Größe // an das Mainwindow weiter zu reichen, noch *bevor* das Mainwindow überhaupt initialisiert ist! std::unique_ptr 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 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(); }