mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
refactor(Settings): Save loaded profile automatically
It's invalid to save a different profile than was loaded, so no need to require the profile to be passed in again on save. Removes dependence on Nexus singleton for Nexus::getProfile.
This commit is contained in:
parent
a1f7c71feb
commit
6c6620ffc1
@ -387,7 +387,7 @@ Profile::~Profile()
|
||||
}
|
||||
|
||||
onSaveToxSave();
|
||||
settings.savePersonal(this);
|
||||
settings.savePersonal();
|
||||
settings.sync();
|
||||
ProfileLocker::assertLock(paths);
|
||||
assert(ProfileLocker::getCurLockName() == name);
|
||||
|
@ -278,7 +278,7 @@ void Settings::updateProfileData(Profile* profile, const QCommandLineParser* par
|
||||
}
|
||||
setCurrentProfile(profile->getName());
|
||||
saveGlobal();
|
||||
loadPersonal(profile->getName(), profile->getPasskey(), newProfile);
|
||||
loadPersonal(*profile, newProfile);
|
||||
if (parser) {
|
||||
applyCommandLineOptions(*parser);
|
||||
}
|
||||
@ -467,22 +467,23 @@ bool Settings::applyCommandLineOptions(const QCommandLineParser& parser)
|
||||
return true;
|
||||
}
|
||||
|
||||
void Settings::loadPersonal(QString profileName, const ToxEncrypt* passKey, bool newProfile)
|
||||
void Settings::loadPersonal(const Profile& profile, bool newProfile)
|
||||
{
|
||||
QMutexLocker locker{&bigLock};
|
||||
|
||||
loadedProfile = &profile;
|
||||
QDir dir(paths.getSettingsDirPath());
|
||||
QString filePath = dir.filePath(globalSettingsFile);
|
||||
|
||||
// load from a profile specific friend data list if possible
|
||||
QString tmp = dir.filePath(profileName + ".ini");
|
||||
QString tmp = dir.filePath(profile.getName() + ".ini");
|
||||
if (QFile(tmp).exists()) { // otherwise, filePath remains the global file
|
||||
filePath = tmp;
|
||||
}
|
||||
|
||||
qDebug() << "Loading personal settings from" << filePath;
|
||||
|
||||
SettingsSerializer ps(filePath, passKey);
|
||||
SettingsSerializer ps(filePath, profile.getPasskey());
|
||||
ps.load();
|
||||
friendLst.clear();
|
||||
|
||||
@ -746,26 +747,17 @@ void Settings::saveGlobal()
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Asynchronous, saves the current profile.
|
||||
* @brief Asynchronous, saves the profile.
|
||||
*/
|
||||
void Settings::savePersonal()
|
||||
{
|
||||
savePersonal(Nexus::getProfile());
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Asynchronous, saves the profile.
|
||||
* @param profile Profile to save.
|
||||
*/
|
||||
void Settings::savePersonal(Profile* profile)
|
||||
{
|
||||
if (!profile) {
|
||||
if (!loadedProfile) {
|
||||
qDebug() << "Could not save personal settings because there is no active profile";
|
||||
return;
|
||||
}
|
||||
QMetaObject::invokeMethod(this, "savePersonal",
|
||||
Q_ARG(QString, profile->getName()),
|
||||
Q_ARG(const ToxEncrypt*, profile->getPasskey()));
|
||||
Q_ARG(QString, loadedProfile->getName()),
|
||||
Q_ARG(const ToxEncrypt*, loadedProfile->getPasskey()));
|
||||
}
|
||||
|
||||
void Settings::savePersonal(QString profileName, const ToxEncrypt* passkey)
|
||||
|
@ -158,10 +158,9 @@ public:
|
||||
void createPersonal(const QString& basename) const;
|
||||
|
||||
void savePersonal();
|
||||
void savePersonal(Profile* profile);
|
||||
|
||||
void loadGlobal();
|
||||
void loadPersonal(QString profileName, const ToxEncrypt* passKey, bool newProfile);
|
||||
void loadPersonal(const Profile& profile, bool newProfile);
|
||||
|
||||
void resetToDefault();
|
||||
|
||||
@ -718,4 +717,5 @@ private:
|
||||
int globalSettingsVersion = 0;
|
||||
int personalSettingsVersion = 0;
|
||||
IMessageBoxManager& messageBoxManager;
|
||||
const Profile* loadedProfile = nullptr;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user