File indexing completed on 2024-05-05 04:41:02

0001 /*
0002     SPDX-FileCopyrightText: 2007 Dukju Ahn <dukjuahn@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "svnssldialog.h"
0008 
0009 #include <QDialogButtonBox>
0010 #include <QPushButton>
0011 
0012 #include <KLocalizedString>
0013 
0014 #include "ui_ssltrustdialog.h"
0015 
0016 class SvnSSLTrustDialogPrivate
0017 {
0018 public:
0019     Ui::SvnSSLTrustDialog ui;
0020     bool temporarily;
0021 };
0022 
0023 SvnSSLTrustDialog::SvnSSLTrustDialog( QWidget *parent )
0024     : QDialog( parent ), d( new SvnSSLTrustDialogPrivate )
0025 {
0026     d->ui.setupUi( this );
0027     d->temporarily = true;
0028     setWindowTitle(i18nc("@title:window", "SSL Server Certificate"));
0029     buttonBox = new QDialogButtonBox(QDialogButtonBox::Cancel);
0030     buttonBox->addButton(i18nc("@action:button", "Trust Permanently"), QDialogButtonBox::YesRole);
0031     buttonBox->addButton(i18nc("@action:button", "Trust Temporarily"), QDialogButtonBox::AcceptRole)->setDefault(true);
0032     auto layout = new QVBoxLayout();
0033     setLayout(layout);
0034     layout->addWidget(buttonBox);
0035     connect(buttonBox, &QDialogButtonBox::clicked, this, &SvnSSLTrustDialog::buttonClicked);
0036 }
0037 SvnSSLTrustDialog::~SvnSSLTrustDialog()
0038 {
0039     delete d;
0040 }
0041 
0042 void SvnSSLTrustDialog::setCertInfos( const QString& hostname,
0043                                       const QString& fingerPrint,
0044                                       const QString& validfrom,
0045                                       const QString& validuntil,
0046                                       const QString& issuerName,
0047                                       const QString& realm,
0048                                       const QStringList& failures )
0049 {
0050     if (!failures.isEmpty()) {
0051         const QString txt = QLatin1String("<ul><li>") +
0052                             failures.join(QLatin1String("</li><li>")) +
0053                             QLatin1String("</li></ul>");
0054         d->ui.reasons->setHtml( txt );
0055     }
0056 
0057     d->ui.hostname->setText( hostname );
0058     d->ui.fingerprint->setText( fingerPrint );
0059     d->ui.validUntil->setText( validuntil );
0060     d->ui.validFrom->setText( validfrom );
0061     d->ui.issuer->setText( issuerName );
0062     setWindowTitle(i18nc("@title:window", "SSL Server Certificate: %1", realm));
0063 
0064 }
0065 
0066 bool SvnSSLTrustDialog::useTemporarily()
0067 {
0068     return d->temporarily;
0069 }
0070 
0071 void SvnSSLTrustDialog::buttonClicked(QAbstractButton *button)
0072 {
0073     if (buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole)
0074     {
0075         d->temporarily = true;
0076     } else
0077     {
0078         d->temporarily = false;
0079     }
0080     accept();
0081 }
0082 
0083 #include "moc_svnssldialog.cpp"