+AccountId CoreConnectDlg::findFreeAccountId() {
+ for(AccountId i = 1;; i++) {
+ if(!accounts.contains(i) && i != _internalAccountId)
+ return i;
+ }
+}
+
+/*****************************************************************************************
+ * CoreAccountEditDlg
+ *****************************************************************************************/
+CoreAccountEditDlg::CoreAccountEditDlg(AccountId id, const QVariantMap &acct, const QStringList &_existing, QWidget *parent)
+ : QDialog(parent)
+{
+ ui.setupUi(this);
+ ui.useSsl->setIcon(SmallIcon("document-encrypt"));
+
+ existing = _existing;
+ if(id.isValid()) {
+ account = acct;
+
+ existing.removeAll(acct["AccountName"].toString());
+ ui.host->setText(acct["Host"].toString());
+ ui.port->setValue(acct["Port"].toUInt());
+ ui.accountName->setText(acct["AccountName"].toString());
+#ifdef HAVE_SSL
+ ui.useSsl->setChecked(acct["useSsl"].toBool());
+#else
+ ui.useSsl->setChecked(false);
+ ui.useSsl->setEnabled(false);
+#endif
+ ui.useProxy->setChecked(acct["useProxy"].toBool());
+ ui.proxyHost->setText(acct["proxyHost"].toString());
+ ui.proxyPort->setValue(acct["proxyPort"].toUInt());
+ ui.proxyType->setCurrentIndex(acct["proxyType"].toInt() == QNetworkProxy::Socks5Proxy ? 0 : 1);
+ ui.proxyUser->setText(acct["proxyUser"].toString());
+ ui.proxyPassword->setText(acct["proxyPassword"].toString());
+ } else {
+ setWindowTitle(tr("Add Core Account"));
+#ifndef HAVE_SSL
+ ui.useSsl->setChecked(false);
+ ui.useSsl->setEnabled(false);
+#endif
+ }
+}
+
+QVariantMap CoreAccountEditDlg::accountData() {
+ account["AccountName"] = ui.accountName->text().trimmed();
+ account["Host"] = ui.host->text().trimmed();
+ account["Port"] = ui.port->value();
+ account["useSsl"] = ui.useSsl->isChecked();
+ account["useProxy"] = ui.useProxy->isChecked();
+ account["proxyHost"] = ui.proxyHost->text().trimmed();
+ account["proxyPort"] = ui.proxyPort->value();
+ account["proxyType"] = ui.proxyType->currentIndex() == 0 ? QNetworkProxy::Socks5Proxy : QNetworkProxy::HttpProxy;
+ account["proxyUser"] = ui.proxyUser->text().trimmed();
+ account["proxyPassword"] = ui.proxyPassword->text().trimmed();
+ return account;
+}
+
+void CoreAccountEditDlg::setWidgetStates() {
+ bool ok = !ui.accountName->text().trimmed().isEmpty() && !existing.contains(ui.accountName->text()) && !ui.host->text().isEmpty();
+ ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(ok);
+}
+
+void CoreAccountEditDlg::on_host_textChanged(const QString &text) {
+ Q_UNUSED(text);
+ setWidgetStates();
+}
+
+void CoreAccountEditDlg::on_accountName_textChanged(const QString &text) {
+ Q_UNUSED(text);
+ setWidgetStates();
+}
+
+
+
+// ========================================
+// SslCertDisplayDialog
+// ========================================
+#ifdef HAVE_SSL
+SslCertDisplayDialog::SslCertDisplayDialog(const QString &host, const QSslCertificate &cert, QWidget *parent)
+ : QDialog(parent)
+{
+ setWindowTitle(tr("SSL Certificate used by %1").arg(host));
+
+ QVBoxLayout *mainLayout = new QVBoxLayout(this);
+
+ QGroupBox *issuerBox = new QGroupBox(tr("Issuer Info"), this);
+ QFormLayout *issuerLayout = new QFormLayout(issuerBox);
+ issuerLayout->addRow(tr("Organization:"), new QLabel(cert.issuerInfo(QSslCertificate::Organization), this));
+ issuerLayout->addRow(tr("Locality Name:"), new QLabel(cert.issuerInfo(QSslCertificate::LocalityName), this));
+ issuerLayout->addRow(tr("Organizational Unit Name:"), new QLabel(cert.issuerInfo(QSslCertificate::OrganizationalUnitName), this));
+ issuerLayout->addRow(tr("Country Name:"), new QLabel(cert.issuerInfo(QSslCertificate::CountryName), this));
+ issuerLayout->addRow(tr("State or Province Name:"), new QLabel(cert.issuerInfo(QSslCertificate::StateOrProvinceName), this));
+ mainLayout->addWidget(issuerBox);
+
+ QGroupBox *subjectBox = new QGroupBox(tr("Subject Info"), this);
+ QFormLayout *subjectLayout = new QFormLayout(subjectBox);
+ subjectLayout->addRow(tr("Organization:"), new QLabel(cert.subjectInfo(QSslCertificate::Organization), this));
+ subjectLayout->addRow(tr("Locality Name:"), new QLabel(cert.subjectInfo(QSslCertificate::LocalityName), this));
+ subjectLayout->addRow(tr("Organizational Unit Name:"), new QLabel(cert.subjectInfo(QSslCertificate::OrganizationalUnitName), this));
+ subjectLayout->addRow(tr("Country Name:"), new QLabel(cert.subjectInfo(QSslCertificate::CountryName), this));
+ subjectLayout->addRow(tr("State or Province Name:"), new QLabel(cert.subjectInfo(QSslCertificate::StateOrProvinceName), this));
+ mainLayout->addWidget(subjectBox);
+
+ QGroupBox *additionalBox = new QGroupBox(tr("Additional Info"), this);
+ QFormLayout *additionalLayout = new QFormLayout(additionalBox);
+ additionalLayout->addRow(tr("Valid From:"), new QLabel(cert.effectiveDate().toString(), this));
+ additionalLayout->addRow(tr("Valid To:"), new QLabel(cert.expiryDate().toString(), this));
+ QStringList hostnames = cert.alternateSubjectNames().values(QSsl::DnsEntry);
+ for(int i = 0; i < hostnames.count(); i++) {
+ additionalLayout->addRow(tr("Hostname %1:").arg(i + 1), new QLabel(hostnames[i], this));
+ }
+ QStringList mailaddresses = cert.alternateSubjectNames().values(QSsl::EmailEntry);
+ for(int i = 0; i < mailaddresses.count(); i++) {
+ additionalLayout->addRow(tr("E-Mail Address %1:").arg(i + 1), new QLabel(mailaddresses[i], this));
+ }
+ additionalLayout->addRow(tr("Digest:"), new QLabel(QString(prettyDigest(cert.digest()))));
+ mainLayout->addWidget(additionalBox);
+
+
+ QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok, Qt::Horizontal, this);
+ mainLayout->addWidget(buttonBox);
+
+ connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
+ connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));