mirror-chatterino2/src/widgets/dialogs/IrcConnectionEditor.cpp

94 lines
3.1 KiB
C++
Raw Normal View History

2019-09-08 18:06:43 +02:00
#include "IrcConnectionEditor.hpp"
#include "ui_IrcConnectionEditor.h"
namespace chatterino {
IrcConnectionEditor::IrcConnectionEditor(const IrcServerData &data, bool isAdd,
QWidget *parent)
: QDialog(parent, Qt::WindowStaysOnTopHint)
, ui_(new Ui::IrcConnectionEditor)
, data_(data)
2019-09-08 18:06:43 +02:00
{
this->ui_->setupUi(this);
2019-09-08 18:06:43 +02:00
this->setWindowTitle(QString(isAdd ? "Add " : "Edit ") + "Irc Connection");
QObject::connect(this->ui_->userNameLineEdit, &QLineEdit::textChanged, this,
[this](const QString &text) {
this->ui_->nickNameLineEdit->setPlaceholderText(text);
this->ui_->realNameLineEdit->setPlaceholderText(text);
});
this->ui_->serverLineEdit->setText(data.host);
this->ui_->portSpinBox->setValue(data.port);
this->ui_->securityCheckBox->setChecked(data.ssl);
this->ui_->userNameLineEdit->setText(data.user);
this->ui_->nickNameLineEdit->setText(data.nick);
this->ui_->realNameLineEdit->setText(data.real);
2019-09-14 18:38:09 +02:00
this->ui_->connectCommandsEditor->setPlainText(
data.connectCommands.join('\n'));
2019-09-14 20:45:01 +02:00
data.getPassword(this, [this](const QString &password) {
this->ui_->passwordLineEdit->setText(password);
});
2019-09-14 18:38:09 +02:00
2019-09-15 11:35:17 +02:00
this->ui_->loginMethodComboBox->setCurrentIndex([&] {
switch (data.authType)
{
case IrcAuthType::Custom:
return 1;
case IrcAuthType::Pass:
return 2;
default:
return 0;
}
}());
2019-09-14 22:58:53 +02:00
QObject::connect(this->ui_->loginMethodComboBox,
qOverload<int>(&QComboBox::currentIndexChanged), this,
[this](int index) {
2019-09-15 11:35:17 +02:00
if (index == 1) // Custom
2019-09-14 22:58:53 +02:00
{
2019-09-15 11:35:17 +02:00
this->ui_->connectCommandsEditor->setFocus();
2019-09-14 22:58:53 +02:00
}
});
2019-09-14 18:38:09 +02:00
QFont font("Monospace");
font.setStyleHint(QFont::TypeWriter);
this->ui_->connectCommandsEditor->setFont(font);
2019-09-14 22:58:53 +02:00
}
2019-09-08 18:06:43 +02:00
IrcConnectionEditor::~IrcConnectionEditor()
{
delete ui_;
2019-09-08 18:06:43 +02:00
}
IrcServerData IrcConnectionEditor::data()
{
auto data = this->data_;
data.host = this->ui_->serverLineEdit->text();
data.port = this->ui_->portSpinBox->value();
data.ssl = this->ui_->securityCheckBox->isChecked();
data.user = this->ui_->userNameLineEdit->text();
data.nick = this->ui_->nickNameLineEdit->text();
data.real = this->ui_->realNameLineEdit->text();
2019-09-14 18:38:09 +02:00
data.connectCommands =
this->ui_->connectCommandsEditor->toPlainText().split('\n');
2019-09-14 20:45:01 +02:00
data.setPassword(this->ui_->passwordLineEdit->text());
2019-09-15 11:35:17 +02:00
data.authType = [this] {
switch (this->ui_->loginMethodComboBox->currentIndex())
{
case 1:
return IrcAuthType::Custom;
case 2:
return IrcAuthType::Pass;
default:
return IrcAuthType::Anonymous;
}
}();
return data;
}
} // namespace chatterino