Browse Source

refactor/fix switching profile with separate settings

pull/985/head
Dubslow 11 years ago
parent
commit
7fc7b57934
No known key found for this signature in database
GPG Key ID: 3DB8E05315C220AA
  1. 20
      src/core.cpp
  2. 7
      src/misc/settings.cpp
  3. 1
      src/misc/settings.h
  4. 3
      src/widget/widget.cpp

20
src/core.cpp

@ -1150,8 +1150,8 @@ QString Core::sanitize(QString name)
bool Core::loadConfiguration(QString path) bool Core::loadConfiguration(QString path)
{ {
loadPath = ""; // if not empty, then user forgot a password loadPath = ""; // if not empty upon return, then user forgot a password and is switching
// setting the profile is now the responsibility of the caller
QFile configurationFile(path); QFile configurationFile(path);
qDebug() << "Core::loadConfiguration: reading from " << path; qDebug() << "Core::loadConfiguration: reading from " << path;
@ -1183,17 +1183,17 @@ bool Core::loadConfiguration(QString path)
QMetaObject::invokeMethod(Widget::getInstance(), "askProfiles", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QString, profile)); QMetaObject::invokeMethod(Widget::getInstance(), "askProfiles", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QString, profile));
if (!profile.isEmpty()) if (!profile.isEmpty())
{
loadPath = QDir(Settings::getSettingsDirPath()).filePath(profile + TOX_EXT); loadPath = QDir(Settings::getSettingsDirPath()).filePath(profile + TOX_EXT);
Settings::getInstance().switchProfile(profile);
HistoryKeeper::getInstance()->resetInstance();
}
return false; return false;
} }
} }
} }
configurationFile.close(); configurationFile.close();
Settings::getInstance().setCurrentProfile(QFileInfo(path).completeBaseName());
// this is necessary for anything that doesn't call switchConfiguration, i.e.
// forgetting a password and choosing a different profile
// set GUI with user and statusmsg // set GUI with user and statusmsg
QString name = getUsername(); QString name = getUsername();
if (!name.isEmpty()) if (!name.isEmpty())
@ -1233,7 +1233,7 @@ void Core::saveConfiguration()
if (profile == "") // happens on creation of a new Tox ID if (profile == "") // happens on creation of a new Tox ID
profile = getIDString(); profile = getIDString();
Settings::getInstance().setCurrentProfile(profile); Settings::getInstance().switchProfile(profile);
} }
QString path = directory.filePath(profile + TOX_EXT); QString path = directory.filePath(profile + TOX_EXT);
@ -1266,11 +1266,7 @@ void Core::switchConfiguration(const QString& profile)
else else
loadPath = QDir(Settings::getSettingsDirPath()).filePath(profile + TOX_EXT); loadPath = QDir(Settings::getSettingsDirPath()).filePath(profile + TOX_EXT);
// the new profile needs to be set before resetting the settings, so that Settings::getInstance().switchProfile(profile);
// we don't load the old profile's profile.ini
Settings::getInstance().setCurrentProfile(profile);
Settings::getInstance().save(false); // save new profile, but don't write old profile info to newprofile.ini
Settings::resetInstance();
HistoryKeeper::getInstance()->resetInstance(); HistoryKeeper::getInstance()->resetInstance();
start(); start();

7
src/misc/settings.cpp

@ -63,6 +63,13 @@ void Settings::resetInstance()
} }
} }
void Settings::switchProfile(const QString& profile)
{
setCurrentProfile(profile);
save(false);
resetInstance();
}
void Settings::load() void Settings::load()
{ {
if (loaded) if (loaded)

1
src/misc/settings.h

@ -30,6 +30,7 @@ class Settings : public QObject
public: public:
static Settings& getInstance(); static Settings& getInstance();
static void resetInstance(); static void resetInstance();
void switchProfile(const QString& profile);
~Settings() = default; ~Settings() = default;
void executeSettingsDialog(QWidget* parent); void executeSettingsDialog(QWidget* parent);

3
src/widget/widget.cpp

@ -402,7 +402,10 @@ QString Widget::detectProfile()
if (profile.isEmpty()) if (profile.isEmpty())
return ""; return "";
else else
{
Settings::getInstance().setCurrentProfile(profile);
return dir.filePath(profile + Core::TOX_EXT); return dir.filePath(profile + Core::TOX_EXT);
}
} }
} }
else else

Loading…
Cancel
Save