Browse Source

Implment auto-login

pull/1816/head
tux3 10 years ago
parent
commit
276f411ad2
No known key found for this signature in database
GPG Key ID: 7E086DD661263264
  1. 12
      src/main.cpp
  2. 18
      src/misc/settings.cpp
  3. 4
      src/misc/settings.h
  4. 14
      src/widget/loginscreen.cpp
  5. 1
      src/widget/loginscreen.h
  6. 12
      src/widget/loginscreen.ui

12
src/main.cpp

@ -249,6 +249,18 @@ int main(int argc, char *argv[]) @@ -249,6 +249,18 @@ int main(int argc, char *argv[])
}
#endif
// Autologin
if (Settings::getInstance().getAutoLogin())
{
QString profileName = Settings::getInstance().getCurrentProfile();
if (Profile::exists(profileName) && !Profile::isEncrypted(profileName))
{
Profile* profile = Profile::loadProfile(profileName);
if (profile)
Nexus::getInstance().setProfile(profile);
}
}
Nexus::getInstance().start();
// Run

18
src/misc/settings.cpp

@ -90,6 +90,10 @@ void Settings::load() @@ -90,6 +90,10 @@ void Settings::load()
qDebug() << "Loading settings from " + filePath;
QSettings s(filePath, QSettings::IniFormat);
s.beginGroup("Login");
autoLogin = s.value("autoLogin", false).toBool();
s.endGroup();
s.beginGroup("DHT Server");
if (s.value("useCustomList").toBool())
{
@ -278,6 +282,10 @@ void Settings::saveGlobal(QString path) @@ -278,6 +282,10 @@ void Settings::saveGlobal(QString path)
s.clear();
s.beginGroup("Login");
s.setValue("autoLogin", autoLogin);
s.endGroup();
s.beginGroup("DHT Server");
s.setValue("useCustomList", useCustomDhtList);
s.beginWriteArray("dhtServerList", dhtServerList.size());
@ -1150,3 +1158,13 @@ void Settings::createSettingsDir() @@ -1150,3 +1158,13 @@ void Settings::createSettingsDir()
if (!directory.exists() && !directory.mkpath(directory.absolutePath()))
qCritical() << "Error while creating directory " << dir;
}
bool Settings::getAutoLogin() const
{
return autoLogin;
}
void Settings::setAutoLogin(bool state)
{
autoLogin = state;
}

4
src/misc/settings.h

@ -245,6 +245,9 @@ public: @@ -245,6 +245,9 @@ public:
bool getGroupchatPosition() const;
void setGroupchatPosition(bool value);
bool getAutoLogin() const;
void setAutoLogin(bool state);
public:
void save(bool writePersonal = true);
void save(QString path, bool writePersonal = true);
@ -270,6 +273,7 @@ private: @@ -270,6 +273,7 @@ private:
int dhtServerId;
bool dontShowDhtDialog;
bool autoLogin;
bool fauxOfflineMessaging;
bool compactLayout;
bool groupchatPosition;

14
src/widget/loginscreen.cpp

@ -25,6 +25,7 @@ LoginScreen::LoginScreen(QWidget *parent) : @@ -25,6 +25,7 @@ LoginScreen::LoginScreen(QWidget *parent) :
connect(ui->loginPassword, &QLineEdit::returnPressed, this, &LoginScreen::onLogin);
connect(ui->newPass, &QLineEdit::textChanged, this, &LoginScreen::onPasswordEdited);
connect(ui->newPassConfirm, &QLineEdit::textChanged, this, &LoginScreen::onPasswordEdited);
connect(ui->autoLoginCB, &QCheckBox::stateChanged, this, &LoginScreen::onAutoLoginToggled);
reset();
}
@ -40,8 +41,8 @@ void LoginScreen::reset() @@ -40,8 +41,8 @@ void LoginScreen::reset()
ui->newPass->clear();
ui->newPassConfirm->clear();
ui->loginPassword->clear();
ui->loginUsernames->clear();
Profile::scanProfiles();
QString lastUsed = Settings::getInstance().getCurrentProfile();
qDebug() << "Last used is "<<lastUsed;
@ -57,6 +58,8 @@ void LoginScreen::reset() @@ -57,6 +58,8 @@ void LoginScreen::reset()
ui->stackedWidget->setCurrentIndex(0);
else
ui->stackedWidget->setCurrentIndex(1);
ui->autoLoginCB->setChecked(Settings::getInstance().getAutoLogin());
}
void LoginScreen::onNewProfilePageClicked()
@ -165,3 +168,12 @@ void LoginScreen::onPasswordEdited() @@ -165,3 +168,12 @@ void LoginScreen::onPasswordEdited()
{
ui->passStrengthMeter->setValue(SetPasswordDialog::getPasswordStrength(ui->newPass->text()));
}
void LoginScreen::onAutoLoginToggled(int state)
{
Qt::CheckState cstate = static_cast<Qt::CheckState>(state);
if (cstate == Qt::CheckState::Unchecked)
Settings::getInstance().setAutoLogin(false);
else
Settings::getInstance().setAutoLogin(true);
}

1
src/widget/loginscreen.h

@ -17,6 +17,7 @@ public: @@ -17,6 +17,7 @@ public:
void reset(); ///< Resets the UI, clears all fields
private slots:
void onAutoLoginToggled(int state);
void onLoginUsernameSelected(const QString& name);
void onPasswordEdited();
// Buttons to change page

12
src/widget/loginscreen.ui

@ -281,7 +281,7 @@ @@ -281,7 +281,7 @@
<bool>true</bool>
</property>
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="newPage">
<layout class="QHBoxLayout" name="horizontalLayout_5">
@ -751,6 +751,16 @@ margin-bottom:5px;</string> @@ -751,6 +751,16 @@ margin-bottom:5px;</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="autoLoginCB">
<property name="toolTip">
<string>If the profile does not have a password, qTox can skip the login screen</string>
</property>
<property name="text">
<string>Login automatically</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">

Loading…
Cancel
Save