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[])
} }
#endif #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(); Nexus::getInstance().start();
// Run // Run

18
src/misc/settings.cpp

@ -90,6 +90,10 @@ void Settings::load()
qDebug() << "Loading settings from " + filePath; qDebug() << "Loading settings from " + filePath;
QSettings s(filePath, QSettings::IniFormat); QSettings s(filePath, QSettings::IniFormat);
s.beginGroup("Login");
autoLogin = s.value("autoLogin", false).toBool();
s.endGroup();
s.beginGroup("DHT Server"); s.beginGroup("DHT Server");
if (s.value("useCustomList").toBool()) if (s.value("useCustomList").toBool())
{ {
@ -278,6 +282,10 @@ void Settings::saveGlobal(QString path)
s.clear(); s.clear();
s.beginGroup("Login");
s.setValue("autoLogin", autoLogin);
s.endGroup();
s.beginGroup("DHT Server"); s.beginGroup("DHT Server");
s.setValue("useCustomList", useCustomDhtList); s.setValue("useCustomList", useCustomDhtList);
s.beginWriteArray("dhtServerList", dhtServerList.size()); s.beginWriteArray("dhtServerList", dhtServerList.size());
@ -1150,3 +1158,13 @@ void Settings::createSettingsDir()
if (!directory.exists() && !directory.mkpath(directory.absolutePath())) if (!directory.exists() && !directory.mkpath(directory.absolutePath()))
qCritical() << "Error while creating directory " << dir; 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:
bool getGroupchatPosition() const; bool getGroupchatPosition() const;
void setGroupchatPosition(bool value); void setGroupchatPosition(bool value);
bool getAutoLogin() const;
void setAutoLogin(bool state);
public: public:
void save(bool writePersonal = true); void save(bool writePersonal = true);
void save(QString path, bool writePersonal = true); void save(QString path, bool writePersonal = true);
@ -270,6 +273,7 @@ private:
int dhtServerId; int dhtServerId;
bool dontShowDhtDialog; bool dontShowDhtDialog;
bool autoLogin;
bool fauxOfflineMessaging; bool fauxOfflineMessaging;
bool compactLayout; bool compactLayout;
bool groupchatPosition; bool groupchatPosition;

14
src/widget/loginscreen.cpp

@ -25,6 +25,7 @@ LoginScreen::LoginScreen(QWidget *parent) :
connect(ui->loginPassword, &QLineEdit::returnPressed, this, &LoginScreen::onLogin); connect(ui->loginPassword, &QLineEdit::returnPressed, this, &LoginScreen::onLogin);
connect(ui->newPass, &QLineEdit::textChanged, this, &LoginScreen::onPasswordEdited); connect(ui->newPass, &QLineEdit::textChanged, this, &LoginScreen::onPasswordEdited);
connect(ui->newPassConfirm, &QLineEdit::textChanged, this, &LoginScreen::onPasswordEdited); connect(ui->newPassConfirm, &QLineEdit::textChanged, this, &LoginScreen::onPasswordEdited);
connect(ui->autoLoginCB, &QCheckBox::stateChanged, this, &LoginScreen::onAutoLoginToggled);
reset(); reset();
} }
@ -40,8 +41,8 @@ void LoginScreen::reset()
ui->newPass->clear(); ui->newPass->clear();
ui->newPassConfirm->clear(); ui->newPassConfirm->clear();
ui->loginPassword->clear(); ui->loginPassword->clear();
ui->loginUsernames->clear(); ui->loginUsernames->clear();
Profile::scanProfiles(); Profile::scanProfiles();
QString lastUsed = Settings::getInstance().getCurrentProfile(); QString lastUsed = Settings::getInstance().getCurrentProfile();
qDebug() << "Last used is "<<lastUsed; qDebug() << "Last used is "<<lastUsed;
@ -57,6 +58,8 @@ void LoginScreen::reset()
ui->stackedWidget->setCurrentIndex(0); ui->stackedWidget->setCurrentIndex(0);
else else
ui->stackedWidget->setCurrentIndex(1); ui->stackedWidget->setCurrentIndex(1);
ui->autoLoginCB->setChecked(Settings::getInstance().getAutoLogin());
} }
void LoginScreen::onNewProfilePageClicked() void LoginScreen::onNewProfilePageClicked()
@ -165,3 +168,12 @@ void LoginScreen::onPasswordEdited()
{ {
ui->passStrengthMeter->setValue(SetPasswordDialog::getPasswordStrength(ui->newPass->text())); 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:
void reset(); ///< Resets the UI, clears all fields void reset(); ///< Resets the UI, clears all fields
private slots: private slots:
void onAutoLoginToggled(int state);
void onLoginUsernameSelected(const QString& name); void onLoginUsernameSelected(const QString& name);
void onPasswordEdited(); void onPasswordEdited();
// Buttons to change page // Buttons to change page

12
src/widget/loginscreen.ui

@ -281,7 +281,7 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="newPage"> <widget class="QWidget" name="newPage">
<layout class="QHBoxLayout" name="horizontalLayout_5"> <layout class="QHBoxLayout" name="horizontalLayout_5">
@ -751,6 +751,16 @@ margin-bottom:5px;</string>
</property> </property>
</widget> </widget>
</item> </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> <item>
<spacer name="verticalSpacer_4"> <spacer name="verticalSpacer_4">
<property name="orientation"> <property name="orientation">

Loading…
Cancel
Save