mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
Server Connect Remade (#2452)
* Save multiple server configurations * Each server has its own password/port storage Close #2452
This commit is contained in:
parent
37b43f9916
commit
4cfcca33db
9 changed files with 280 additions and 58 deletions
|
|
@ -14,6 +14,7 @@
|
|||
#include <QPushButton>
|
||||
#include "dlg_connect.h"
|
||||
#include "settingscache.h"
|
||||
#include "userconnection_information.h"
|
||||
|
||||
DlgConnect::DlgConnect(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
|
|
@ -22,21 +23,16 @@ DlgConnect::DlgConnect(QWidget *parent)
|
|||
previousHosts = new QComboBox(this);
|
||||
previousHosts->installEventFilter(new DeleteHighlightedItemWhenShiftDelPressedEventFilter);
|
||||
|
||||
QStringList previousHostList = settingsCache->servers().getPreviousHostList();
|
||||
if (previousHostList.isEmpty()) {
|
||||
previousHostList << "cockatrice.woogerworks.com";
|
||||
previousHostList << "chickatrice.net";
|
||||
previousHostList << "mtg.tetrarch.co";
|
||||
previousHostList << "cockatric.es";
|
||||
}
|
||||
previousHosts->addItems(previousHostList);
|
||||
previousHosts->setCurrentIndex(settingsCache->servers().getPrevioushostindex());
|
||||
rebuildComboBoxList();
|
||||
|
||||
newHostButton = new QRadioButton(tr("New Host"), this);
|
||||
|
||||
saveLabel = new QLabel(tr("Name:"));
|
||||
saveEdit = new QLineEdit(settingsCache->servers().getSaveName());
|
||||
saveLabel->setBuddy(saveEdit);
|
||||
|
||||
hostLabel = new QLabel(tr("&Host:"));
|
||||
hostEdit = new QLineEdit();
|
||||
hostEdit->setPlaceholderText(tr("Enter host name"));
|
||||
hostEdit = new QLineEdit(settingsCache->servers().getHostname());
|
||||
hostLabel->setBuddy(hostEdit);
|
||||
|
||||
portLabel = new QLabel(tr("&Port:"));
|
||||
|
|
@ -58,11 +54,13 @@ DlgConnect::DlgConnect(QWidget *parent)
|
|||
autoConnectCheckBox = new QCheckBox(tr("A&uto connect"));
|
||||
autoConnectCheckBox->setToolTip(tr("Automatically connect to the most recent login when Cockatrice opens"));
|
||||
|
||||
if(savePasswordCheckBox->isChecked())
|
||||
if (savePasswordCheckBox->isChecked())
|
||||
{
|
||||
autoConnectCheckBox->setChecked(settingsCache->servers().getAutoConnect());
|
||||
autoConnectCheckBox->setEnabled(true);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
settingsCache->servers().setAutoConnect(0);
|
||||
autoConnectCheckBox->setChecked(0);
|
||||
autoConnectCheckBox->setEnabled(false);
|
||||
|
|
@ -85,11 +83,13 @@ DlgConnect::DlgConnect(QWidget *parent)
|
|||
connectionLayout->addWidget(previousHostButton, 0, 1);
|
||||
connectionLayout->addWidget(previousHosts, 1, 1);
|
||||
connectionLayout->addWidget(newHostButton, 2, 1);
|
||||
connectionLayout->addWidget(hostLabel, 3, 0);
|
||||
connectionLayout->addWidget(hostEdit, 3, 1);
|
||||
connectionLayout->addWidget(portLabel, 4, 0);
|
||||
connectionLayout->addWidget(portEdit, 4, 1);
|
||||
connectionLayout->addWidget(autoConnectCheckBox, 5, 1);
|
||||
connectionLayout->addWidget(saveLabel, 3, 0);
|
||||
connectionLayout->addWidget(saveEdit, 3, 1);
|
||||
connectionLayout->addWidget(hostLabel, 4, 0);
|
||||
connectionLayout->addWidget(hostEdit, 4, 1);
|
||||
connectionLayout->addWidget(portLabel, 5, 0);
|
||||
connectionLayout->addWidget(portEdit, 5, 1);
|
||||
connectionLayout->addWidget(autoConnectCheckBox, 6, 1);
|
||||
|
||||
QGridLayout *buttons = new QGridLayout;
|
||||
buttons->addWidget(btnOk, 0, 0);
|
||||
|
|
@ -132,24 +132,85 @@ DlgConnect::DlgConnect(QWidget *parent)
|
|||
previousHostButton->setChecked(true);
|
||||
else
|
||||
newHostButton->setChecked(true);
|
||||
|
||||
connect(previousHosts, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(updateDisplayInfo(const QString &)));
|
||||
|
||||
playernameEdit->setFocus();
|
||||
}
|
||||
|
||||
void DlgConnect::actSaveConfig()
|
||||
{
|
||||
if (!settingsCache->servers().updateExistingServer(saveEdit->text(), hostEdit->text(), portEdit->text(), playernameEdit->text(), passwordEdit->text(), savePasswordCheckBox->isChecked()))
|
||||
settingsCache->servers().addNewServer(saveEdit->text(), hostEdit->text(), portEdit->text(), playernameEdit->text(), passwordEdit->text(), savePasswordCheckBox->isChecked());
|
||||
|
||||
rebuildComboBoxList();
|
||||
}
|
||||
|
||||
void DlgConnect::rebuildComboBoxList()
|
||||
{
|
||||
previousHosts->clear();
|
||||
|
||||
UserConnection_Information uci;
|
||||
savedHostList = uci.getServerInfo();
|
||||
|
||||
if (savedHostList.size() == 1)
|
||||
{
|
||||
settingsCache->servers().addNewServer("Woogerworks Cockatrice", "cockatrice.woogerworks.com", "4747", "", "", false);
|
||||
settingsCache->servers().addNewServer("Chickatrice Cockatrice", "chickatrice.net", "4747", "", "", false);
|
||||
settingsCache->servers().addNewServer("Cockatric.es Cockatrice", "cockatric.es", "4747", "", "", false);
|
||||
settingsCache->servers().addNewServer("Tetrarch Cockatrice", "mtg.tetrarch.co", "4747", "", "", false);
|
||||
}
|
||||
savedHostList = uci.getServerInfo();
|
||||
|
||||
int i = 0;
|
||||
foreach (UserConnection_Information tmp, savedHostList)
|
||||
{
|
||||
QString saveName = tmp.getSaveName();
|
||||
if (saveName.size())
|
||||
{
|
||||
previousHosts->addItem(saveName);
|
||||
|
||||
if (settingsCache->servers().getPrevioushostName() == saveName)
|
||||
previousHosts->setCurrentIndex(i);
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DlgConnect::previousHostSelected(bool state) {
|
||||
if (state) {
|
||||
hostLabel->setDisabled(true);
|
||||
hostEdit->setDisabled(true);
|
||||
previousHosts->setDisabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
void DlgConnect::updateDisplayInfo(const QString &saveName)
|
||||
{
|
||||
UserConnection_Information uci;
|
||||
QStringList data = uci.getServerInfo(saveName);
|
||||
|
||||
if (saveEdit == nullptr)
|
||||
return;
|
||||
|
||||
saveEdit->setText(data.at(0));
|
||||
hostEdit->setText(data.at(1));
|
||||
portEdit->setText(data.at(2));
|
||||
playernameEdit->setText(data.at(3));
|
||||
passwordEdit->setText(data.at(4));
|
||||
savePasswordCheckBox->setChecked(data.at(5) == "1" ? true : false);
|
||||
}
|
||||
|
||||
void DlgConnect::newHostSelected(bool state) {
|
||||
if (state) {
|
||||
hostEdit->setDisabled(false);
|
||||
hostLabel->setDisabled(false);
|
||||
if (state)
|
||||
{
|
||||
previousHosts->setDisabled(true);
|
||||
saveEdit->clear();
|
||||
saveEdit->setPlaceholderText("New Menu Name");
|
||||
}
|
||||
else
|
||||
{
|
||||
rebuildComboBoxList();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -167,26 +228,15 @@ void DlgConnect::passwordSaved(int state)
|
|||
|
||||
void DlgConnect::actOk()
|
||||
{
|
||||
settingsCache->servers().setPort(portEdit->text());
|
||||
settingsCache->servers().setPlayerName(playernameEdit->text());
|
||||
settingsCache->servers().setPassword(savePasswordCheckBox->isChecked() ? passwordEdit->text() : QString());
|
||||
settingsCache->servers().setSavePassword(savePasswordCheckBox->isChecked() ? 1 : 0);
|
||||
settingsCache->servers().setAutoConnect(autoConnectCheckBox->isChecked() ? 1 : 0);
|
||||
settingsCache->servers().setPreviousHostLogin(previousHostButton->isChecked() ? 1 : 0);
|
||||
|
||||
QStringList hostList;
|
||||
if (newHostButton->isChecked())
|
||||
if (!hostEdit->text().trimmed().isEmpty())
|
||||
hostList << hostEdit->text();
|
||||
|
||||
for (int i = 0; i < previousHosts->count(); i++)
|
||||
if(!previousHosts->itemText(i).trimmed().isEmpty())
|
||||
hostList << previousHosts->itemText(i);
|
||||
|
||||
settingsCache->servers().setPreviousHostList(hostList);
|
||||
settingsCache->servers().setPrevioushostindex(previousHosts->currentIndex());
|
||||
settingsCache->servers().addNewServer(saveEdit->text(), hostEdit->text(), portEdit->text(), playernameEdit->text(), passwordEdit->text(), savePasswordCheckBox->isChecked());
|
||||
else
|
||||
settingsCache->servers().updateExistingServer(saveEdit->text(), hostEdit->text(), portEdit->text(), playernameEdit->text(), passwordEdit->text(), savePasswordCheckBox->isChecked());
|
||||
|
||||
if(playernameEdit->text().isEmpty())
|
||||
settingsCache->servers().setPrevioushostName(saveEdit->text());
|
||||
settingsCache->servers().setAutoConnect(autoConnectCheckBox->isChecked() ? 1 : 0);
|
||||
|
||||
if (playernameEdit->text().isEmpty())
|
||||
{
|
||||
QMessageBox::critical(this, tr("Connect Warning"), tr("The player name can't be empty."));
|
||||
return;
|
||||
|
|
@ -197,7 +247,7 @@ void DlgConnect::actOk()
|
|||
|
||||
|
||||
QString DlgConnect::getHost() const {
|
||||
return previousHostButton->isChecked() ? previousHosts->currentText() : hostEdit->text();
|
||||
return hostEdit->text();
|
||||
}
|
||||
|
||||
void DlgConnect::actCancel()
|
||||
|
|
@ -225,4 +275,5 @@ void DlgConnect::actForgotPassword()
|
|||
{
|
||||
emit sigStartForgotPasswordRequest();
|
||||
reject();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue