Added 'auto connect' checkbox to connect dialog. When the main window becomes active for the first time and auto connect is set to true, it will call connectToServer at that point.

This commit is contained in:
Antony Woods 2014-08-27 21:25:11 +01:00
parent 6f319c8b63
commit b381298981
6 changed files with 66 additions and 3 deletions

View file

@ -4,6 +4,8 @@
#include <QGridLayout>
#include <QHBoxLayout>
#include <QDialogButtonBox>
#include <QDebug>
#include <iostream>
#include "dlg_connect.h"
DlgConnect::DlgConnect(QWidget *parent)
@ -32,6 +34,20 @@ DlgConnect::DlgConnect(QWidget *parent)
savePasswordCheckBox = new QCheckBox(tr("&Save password"));
savePasswordCheckBox->setChecked(settings.value("save_password", 1).toInt());
//autoConnectCheckBox = new QCheckBox(tr("A&uto connect at start"));
autoConnectCheckBox = new QCheckBox("A&uto connect at start"); // TODO needs tr()
if(savePasswordCheckBox->isChecked())
{
autoConnectCheckBox->setChecked(settings.value("auto_connect", 0).toInt());
autoConnectCheckBox->setEnabled(true);
} else {
settings.setValue("auto_connect", 0);
autoConnectCheckBox->setChecked(0);
autoConnectCheckBox->setEnabled(false);
}
connect(savePasswordCheckBox, SIGNAL(stateChanged(int)), this, SLOT(passwordSaved(int)));
QGridLayout *grid = new QGridLayout;
grid->addWidget(hostLabel, 0, 0);
grid->addWidget(hostEdit, 0, 1);
@ -42,10 +58,11 @@ DlgConnect::DlgConnect(QWidget *parent)
grid->addWidget(passwordLabel, 3, 0);
grid->addWidget(passwordEdit, 3, 1);
grid->addWidget(savePasswordCheckBox, 4, 0, 1, 2);
grid->addWidget(autoConnectCheckBox, 5, 0, 1, 2);
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(buttonBox, SIGNAL(accepted()), this, SLOT(actOk()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(actCancel()));
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(grid);
@ -57,6 +74,17 @@ DlgConnect::DlgConnect(QWidget *parent)
setMinimumWidth(300);
}
void DlgConnect::passwordSaved(int state)
{
if(!savePasswordCheckBox->isChecked())
{
autoConnectCheckBox->setChecked(0);
autoConnectCheckBox->setEnabled(false);
} else {
autoConnectCheckBox->setEnabled(true);
}
}
void DlgConnect::actOk()
{
QSettings settings;
@ -66,7 +94,17 @@ void DlgConnect::actOk()
settings.setValue("playername", playernameEdit->text());
settings.setValue("password", savePasswordCheckBox->isChecked() ? passwordEdit->text() : QString());
settings.setValue("save_password", savePasswordCheckBox->isChecked() ? 1 : 0);
settings.setValue("auto_connect", autoConnectCheckBox->isChecked() ? 1 : 0);
settings.endGroup();
accept();
}
void DlgConnect::actCancel()
{
QSettings settings;
settings.beginGroup("server");
settings.setValue("auto_connect", autoConnectCheckBox->isChecked() ? 1 : 0);
settings.endGroup();
reject();
}

View file

@ -18,10 +18,12 @@ public:
QString getPassword() const { return passwordEdit->text(); }
private slots:
void actOk();
void actCancel();
void passwordSaved(int state);
private:
QLabel *hostLabel, *portLabel, *playernameLabel, *passwordLabel;
QLineEdit *hostEdit, *portEdit, *playernameEdit, *passwordEdit;
QCheckBox *savePasswordCheckBox;
QCheckBox *savePasswordCheckBox, *autoConnectCheckBox;
};
#endif

View file

@ -48,6 +48,8 @@ SettingsCache::SettingsCache()
priceTagSource = settings->value("deckeditor/pricetagsource", 0).toInt();
ignoreUnregisteredUsers = settings->value("chat/ignore_unregistered", false).toBool();
attemptAutoConnect = settings->value("server/auto_connect", 0).toInt() == 0 ? false : true;
}
void SettingsCache::setLang(const QString &_lang)
@ -267,6 +269,12 @@ void SettingsCache::setMainWindowGeometry(const QByteArray &_mainWindowGeometry)
settings->setValue("interface/main_window_geometry", mainWindowGeometry);
}
void SettingsCache::setAutoConnect(const bool &_autoConnect)
{
attemptAutoConnect = _autoConnect;
settings->value("server/auto_connect", attemptAutoConnect ? 1 : 0);
}
void SettingsCache::copyPath(const QString &src, const QString &dst)
{
// test source && return if inexistent

View file

@ -57,6 +57,7 @@ private:
bool ignoreUnregisteredUsers;
QString picUrl;
QString picUrlHq;
bool attemptAutoConnect;
public:
SettingsCache();
const QByteArray &getMainWindowGeometry() const { return mainWindowGeometry; }
@ -93,6 +94,7 @@ public:
QString getPicUrl() const { return picUrl; }
QString getPicUrlHq() const { return picUrlHq; }
void copyPath(const QString &src, const QString &dst);
bool getAutoConnect() const { return attemptAutoConnect; }
public slots:
void setMainWindowGeometry(const QByteArray &_mainWindowGeometry);
void setLang(const QString &_lang);
@ -127,6 +129,7 @@ public slots:
void setIgnoreUnregisteredUsers(bool _ignoreUnregisteredUsers);
void setPicUrl(const QString &_picUrl);
void setPicUrlHq(const QString &_picUrlHq);
void setAutoConnect(const bool &_autoConnect);
};
extern SettingsCache *settingsCache;

View file

@ -359,7 +359,7 @@ void MainWindow::createMenus()
}
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), localServer(0)
: QMainWindow(parent), localServer(0), bHasActivated(false)
{
QPixmapCache::setCacheLimit(200000);
@ -417,5 +417,16 @@ void MainWindow::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
retranslateUi();
else if(event->type() == QEvent::ActivationChange) {
if(isActiveWindow() && !bHasActivated){
bHasActivated = true;
if(settingsCache->getAutoConnect()) {
qDebug() << "Attempting auto-connect...";
DlgConnect dlg(this);
client->connectToServer(dlg.getHost(), dlg.getPort(), dlg.getPlayerName(), dlg.getPassword());
}
}
}
QMainWindow::changeEvent(event);
}

View file

@ -71,6 +71,7 @@ private:
QThread *clientThread;
LocalServer *localServer;
bool bHasActivated;
public:
MainWindow(QWidget *parent = 0);
~MainWindow();