aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/settings/SettingsSendMail.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/settings/SettingsSendMail.cpp')
-rw-r--r--src/ui/settings/SettingsSendMail.cpp287
1 files changed, 160 insertions, 127 deletions
diff --git a/src/ui/settings/SettingsSendMail.cpp b/src/ui/settings/SettingsSendMail.cpp
index 2518991d..bbcf74bc 100644
--- a/src/ui/settings/SettingsSendMail.cpp
+++ b/src/ui/settings/SettingsSendMail.cpp
@@ -28,126 +28,174 @@
#include "smtp/SmtpMime"
#endif
+#include "ui/settings/GlobalSettingStation.h"
+#include "ui_SendMailSettings.h"
+
namespace GpgFrontend::UI {
SendMailTab::SendMailTab(QWidget* parent)
- : QWidget(parent),
- appPath(qApp->applicationDirPath()),
- settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini",
- QSettings::IniFormat) {
- enableCheckBox = new QCheckBox(_("Enable"));
- enableCheckBox->setTristate(false);
-
- smtpAddress = new QLineEdit();
- username = new QLineEdit();
- password = new QLineEdit();
- password->setEchoMode(QLineEdit::Password);
-
- portSpin = new QSpinBox();
- portSpin->setMinimum(1);
- portSpin->setMaximum(65535);
- connectionTypeComboBox = new QComboBox();
- connectionTypeComboBox->addItem("None");
- connectionTypeComboBox->addItem("SSL");
- connectionTypeComboBox->addItem("TLS");
- connectionTypeComboBox->addItem("STARTTLS");
-
- defaultSender = new QLineEdit();
- ;
- checkConnectionButton = new QPushButton(_("Check Connection"));
-
- auto generalGroupBox = new QGroupBox(_("General"));
- auto connectGroupBox = new QGroupBox(_("Connection"));
- auto preferenceGroupBox = new QGroupBox(_("Preference"));
-
- auto generalLayout = new QGridLayout();
- generalLayout->addWidget(enableCheckBox);
-
- auto connectLayout = new QGridLayout();
- connectLayout->addWidget(new QLabel(_("SMTP Address")), 1, 0);
- connectLayout->addWidget(smtpAddress, 1, 1, 1, 4);
- connectLayout->addWidget(new QLabel(_("Username")), 2, 0);
- connectLayout->addWidget(username, 2, 1, 1, 4);
- connectLayout->addWidget(new QLabel(_("Password")), 3, 0);
- connectLayout->addWidget(password, 3, 1, 1, 4);
- connectLayout->addWidget(new QLabel(_("Port")), 4, 0);
- connectLayout->addWidget(portSpin, 4, 1, 1, 1);
- connectLayout->addWidget(new QLabel(_("Connection Security")), 5, 0);
- connectLayout->addWidget(connectionTypeComboBox, 5, 1, 1, 1);
- connectLayout->addWidget(checkConnectionButton, 6, 0);
-
- auto preferenceLayout = new QGridLayout();
-
- preferenceLayout->addWidget(new QLabel(_("Default Sender")), 0, 0);
- preferenceLayout->addWidget(defaultSender, 0, 1, 1, 4);
-
- generalGroupBox->setLayout(generalLayout);
- connectGroupBox->setLayout(connectLayout);
- preferenceGroupBox->setLayout(preferenceLayout);
-
- auto vBox = new QVBoxLayout();
- vBox->addWidget(generalGroupBox);
- vBox->addWidget(connectGroupBox);
- vBox->addWidget(preferenceGroupBox);
- vBox->addStretch(0);
-
- connect(enableCheckBox, SIGNAL(stateChanged(int)), this,
- SLOT(slotCheckBoxSetEnableDisable(int)));
-
- this->setLayout(vBox);
+ : QWidget(parent), ui(std::make_shared<Ui_SendMailSettings>()) {
+ ui->setupUi(this);
+
+ connect(ui->enableCheckBox, &QCheckBox::stateChanged, this, [=](int state) {
+ ui->smtpServerAddressEdit->setDisabled(state != Qt::Checked);
+ ui->portSpin->setDisabled(state != Qt::Checked);
+ ui->connextionSecurityComboBox->setDisabled(state != Qt::Checked);
+
+ ui->identityCheckBox->setDisabled(state != Qt::Checked);
+ ui->usernameEdit->setDisabled(state != Qt::Checked);
+ ui->passwordEdit->setDisabled(state != Qt::Checked);
+
+ ui->defaultSenderEmailEdit->setDisabled(state != Qt::Checked);
+ ui->checkConnectionButton->setDisabled(state != Qt::Checked);
+ ui->senTestMailButton->setDisabled(state != Qt::Checked);
+ });
+
+ connect(ui->checkConnectionButton, &QPushButton::clicked, this,
+ &SendMailTab::slotCheckConnection);
+
+ connect(ui->identityCheckBox, &QCheckBox::stateChanged, this, [=](int state) {
+ ui->usernameEdit->setDisabled(state != Qt::Checked);
+ ui->passwordEdit->setDisabled(state != Qt::Checked);
+ });
+
setSettings();
}
-/**********************************
- * Read the settings from config
- * and set the buttons and checkboxes
- * appropriately
- **********************************/
void SendMailTab::setSettings() {
- if (settings.value("sendMail/enable", false).toBool())
- enableCheckBox->setCheckState(Qt::Checked);
- else {
- enableCheckBox->setCheckState(Qt::Unchecked);
- smtpAddress->setDisabled(true);
- username->setDisabled(true);
- password->setDisabled(true);
- portSpin->setDisabled(true);
- connectionTypeComboBox->setDisabled(true);
- defaultSender->setDisabled(true);
- checkConnectionButton->setDisabled(true);
- }
-
- smtpAddress->setText(
- settings.value("sendMail/smtpAddress", QString()).toString());
- username->setText(settings.value("sendMail/username", QString()).toString());
- password->setText(settings.value("sendMail/password", QString()).toString());
- portSpin->setValue(settings.value("sendMail/port", 25).toInt());
- connectionTypeComboBox->setCurrentText(
- settings.value("sendMail/connectionType", "None").toString());
- defaultSender->setText(
- settings.value("sendMail/defaultSender", QString()).toString());
+ auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+
+ ui->enableCheckBox->setCheckState(Qt::Unchecked);
+ try {
+ bool smtp_enable = settings.lookup("smtp.enable");
+ if (smtp_enable) ui->enableCheckBox->setCheckState(Qt::Checked);
+ } catch (...) {
+ LOG(ERROR) << _("Setting Operation Error") << _("save_key_checked");
+ }
+
+ ui->identityCheckBox->setCheckState(Qt::Unchecked);
+ try {
+ bool identity_enable = settings.lookup("smtp.identity_enable");
+ if (identity_enable) ui->identityCheckBox->setCheckState(Qt::Checked);
+ } catch (...) {
+ LOG(ERROR) << _("Setting Operation Error") << _("identity_enable");
+ }
+
+ try {
+ std::string mail_address = settings.lookup("smtp.mail_address");
+ ui->smtpServerAddressEdit->setText(mail_address.c_str());
+ } catch (...) {
+ LOG(ERROR) << _("Setting Operation Error") << _("mail_address");
+ }
+
+ try {
+ std::string std_username = settings.lookup("smtp.username");
+ ui->usernameEdit->setText(std_username.c_str());
+ } catch (...) {
+ LOG(ERROR) << _("Setting Operation Error") << _("username");
+ }
+
+ try {
+ std::string std_password = settings.lookup("smtp.password");
+ ui->passwordEdit->setText(std_password.c_str());
+ } catch (...) {
+ LOG(ERROR) << _("Setting Operation Error") << _("password");
+ }
+
+ try {
+ int port = settings.lookup("smtp.port");
+ ui->portSpin->setValue(port);
+ } catch (...) {
+ LOG(ERROR) << _("Setting Operation Error") << _("port");
+ }
+
+ ui->connextionSecurityComboBox->setCurrentText("None");
+ try {
+ std::string connection_type = settings.lookup("smtp.connection_type");
+ ui->connextionSecurityComboBox->setCurrentText(connection_type.c_str());
+ } catch (...) {
+ LOG(ERROR) << _("Setting Operation Error") << _("connection_type");
+ }
+
+ try {
+ std::string default_sender = settings.lookup("smtp.default_sender");
+ ui->defaultSenderEmailEdit->setText(default_sender.c_str());
+ } catch (...) {
+ LOG(ERROR) << _("Setting Operation Error") << _("default_sender");
+ }
}
-/***********************************
- * get the values of the buttons and
- * write them to settings-file
- *************************************/
void SendMailTab::applySettings() {
- settings.setValue("sendMail/smtpAddress", smtpAddress->text());
- settings.setValue("sendMail/username", username->text());
- settings.setValue("sendMail/password", password->text());
- settings.setValue("sendMail/port", portSpin->value());
- settings.setValue("sendMail/connectionType",
- connectionTypeComboBox->currentText());
- settings.setValue("sendMail/defaultSender", defaultSender->text());
-
- settings.setValue("sendMail/enable", enableCheckBox->isChecked());
+ auto& settings =
+ GpgFrontend::UI::GlobalSettingStation::GetInstance().GetUISettings();
+
+ if (!settings.exists("smtp") ||
+ settings.lookup("smtp").getType() != libconfig::Setting::TypeGroup)
+ settings.add("smtp", libconfig::Setting::TypeGroup);
+
+ auto& smtp = settings["smtp"];
+
+ if (!smtp.exists("mail_address"))
+ smtp.add("mail_address", libconfig::Setting::TypeString) =
+ ui->smtpServerAddressEdit->text().toStdString();
+ else {
+ smtp["mail_address"] = ui->smtpServerAddressEdit->text().toStdString();
+ }
+
+ if (!smtp.exists("username"))
+ smtp.add("username", libconfig::Setting::TypeString) =
+ ui->usernameEdit->text().toStdString();
+ else {
+ smtp["username"] = ui->usernameEdit->text().toStdString();
+ }
+
+ if (!smtp.exists("password"))
+ smtp.add("password", libconfig::Setting::TypeString) =
+ ui->passwordEdit->text().toStdString();
+ else {
+ smtp["password"] = ui->passwordEdit->text().toStdString();
+ }
+
+ if (!smtp.exists("port"))
+ smtp.add("port", libconfig::Setting::TypeInt) = ui->portSpin->value();
+ else {
+ smtp["port"] = ui->portSpin->value();
+ }
+
+ if (!smtp.exists("connection_type"))
+ smtp.add("connection_type", libconfig::Setting::TypeString) =
+ ui->connextionSecurityComboBox->currentText().toStdString();
+ else {
+ smtp["connection_type"] =
+ ui->connextionSecurityComboBox->currentText().toStdString();
+ }
+
+ if (!smtp.exists("default_sender"))
+ smtp.add("default_sender", libconfig::Setting::TypeString) =
+ ui->defaultSenderEmailEdit->text().toStdString();
+ else {
+ smtp["default_sender"] = ui->defaultSenderEmailEdit->text().toStdString();
+ }
+
+ if (!smtp.exists("identity_enable"))
+ smtp.add("identity_enable", libconfig::Setting::TypeBoolean) =
+ ui->identityCheckBox->isChecked();
+ else {
+ smtp["identity_enable"] = ui->identityCheckBox->isChecked();
+ }
+
+ if (!smtp.exists("enable"))
+ smtp.add("enable", libconfig::Setting::TypeBoolean) =
+ ui->enableCheckBox->isChecked();
+ else {
+ smtp["enable"] = ui->enableCheckBox->isChecked();
+ }
}
#ifdef SMTP_SUPPORT
void SendMailTab::slotCheckConnection() {
SmtpClient::ConnectionType connectionType;
- const auto selectedConnType = connectionTypeComboBox->currentText();
+ const auto selectedConnType = ui->connextionSecurityComboBox->currentText();
if (selectedConnType == "SSL") {
connectionType = SmtpClient::ConnectionType::SslConnection;
} else if (selectedConnType == "TLS" || selectedConnType == "STARTTLS") {
@@ -156,10 +204,13 @@ void SendMailTab::slotCheckConnection() {
connectionType = SmtpClient::ConnectionType::TcpConnection;
}
- SmtpClient smtp(smtpAddress->text(), portSpin->value(), connectionType);
+ SmtpClient smtp(ui->smtpServerAddressEdit->text(), ui->portSpin->value(),
+ connectionType);
- smtp.setUser(username->text());
- smtp.setPassword(password->text());
+ if (ui->identityCheckBox->isChecked()) {
+ smtp.setUser(ui->usernameEdit->text());
+ smtp.setPassword(ui->passwordEdit->text());
+ }
bool if_success = true;
@@ -178,24 +229,6 @@ void SendMailTab::slotCheckConnection() {
}
#endif
-void SendMailTab::slotCheckBoxSetEnableDisable(int state) {
- if (state == Qt::Checked) {
- smtpAddress->setEnabled(true);
- username->setEnabled(true);
- password->setEnabled(true);
- portSpin->setEnabled(true);
- connectionTypeComboBox->setEnabled(true);
- defaultSender->setEnabled(true);
- checkConnectionButton->setEnabled(true);
- } else {
- smtpAddress->setDisabled(true);
- username->setDisabled(true);
- password->setDisabled(true);
- portSpin->setDisabled(true);
- connectionTypeComboBox->setDisabled(true);
- defaultSender->setDisabled(true);
- checkConnectionButton->setDisabled(true);
- }
-}
+void SendMailTab::slotCheckBoxSetEnableDisable(int state) {}
} // namespace GpgFrontend::UI