diff --git a/core.cpp b/core.cpp index 150a94c0f..3a57db0d2 100644 --- a/core.cpp +++ b/core.cpp @@ -732,6 +732,7 @@ QString Core::sanitize(QString name) void Core::loadConfiguration(QString path) { // note to self: this really needs refactoring into the GUI, making the path mandatory here // but for now it's bedtime + // also loadFriends/clearFriends is borked as fuck if (path == "") { // read from settings whose profile? @@ -784,28 +785,35 @@ void Core::loadConfiguration(QString path) loadFriends(); } -void Core::saveConfiguration(QString path) +void Core::saveConfiguration() +{ + QString dir = Settings::getSettingsDirPath(); + QDir directory(dir); + if (!directory.exists() && !directory.mkpath(directory.absolutePath())) { + qCritical() << "Error while creating directory " << dir; + return; + } + + QString profile = Settings::getInstance().getCurrentProfile(); + if (profile == "") + { // no profile active; this should only happen on startup, if at all + profile = sanitize(getUsername()); + Settings::getInstance().setCurrentProfile(profile); + } + + QString path = dir + profile + TOX_EXT; + QFileInfo info(path); + if (!info.exists()) // fall back to old school 'data' + path = dir + '/' + CONFIG_FILE_NAME; +} + +void Core::saveConfiguration(const QString& path) { if (!tox) { qWarning() << "Core::saveConfiguration: Tox not started, aborting!"; return; } - - if (path == "") - { - QString dir = Settings::getSettingsDirPath(); - QDir directory(dir); - if (!directory.exists() && !directory.mkpath(directory.absolutePath())) { - qCritical() << "Error while creating directory " << dir; - return; - } - - path = dir + Settings::getInstance().getCurrentProfile() + TOX_EXT; - QFileInfo info(dir); - if (!info.exists()) // fall back to old school 'data' - path = dir + '/' + CONFIG_FILE_NAME; - } QSaveFile configurationFile(path); if (!configurationFile.open(QIODevice::WriteOnly)) { diff --git a/core.h b/core.h index 30a9bd270..3467ef15c 100644 --- a/core.h +++ b/core.h @@ -124,8 +124,10 @@ public: void quitGroupChat(int groupId) const; void dispatchVideoFrame(vpx_image img) const; - void saveConfiguration(QString path = ""); - void loadConfiguration(QString path = ""); + void saveConfiguration(); + void saveConfiguration(const QString& path); + void loadConfiguration(QString path); + static QString sanitize(QString name); QString getUsername(); diff --git a/settings.cpp b/settings.cpp index 62a208df6..96eb9ae15 100644 --- a/settings.cpp +++ b/settings.cpp @@ -81,7 +81,7 @@ void Settings::load() enableIPv6 = s.value("enableIPv6", true).toBool(); useTranslations = s.value("useTranslations", true).toBool(); makeToxPortable = s.value("makeToxPortable", false).toBool(); - currentProfile = s.value("currentProfile", ".data").toString(); + currentProfile = s.value("currentProfile", "").toString(); s.endGroup(); s.beginGroup("Widgets");