summaryrefslogtreecommitdiffstats
path: root/kio/kssl/ksslcertdlg.cc
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch)
tree5ac38a06f3dde268dc7927dc155896926aaf7012 /kio/kssl/ksslcertdlg.cc
downloadtdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz
tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kio/kssl/ksslcertdlg.cc')
-rw-r--r--kio/kssl/ksslcertdlg.cc174
1 files changed, 174 insertions, 0 deletions
diff --git a/kio/kssl/ksslcertdlg.cc b/kio/kssl/ksslcertdlg.cc
new file mode 100644
index 000000000..a61285d87
--- /dev/null
+++ b/kio/kssl/ksslcertdlg.cc
@@ -0,0 +1,174 @@
+/* This file is part of the KDE project
+ *
+ * Copyright (C) 2001-2003 George Staikos <staikos@kde.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "ksslcertdlg.h"
+
+#include <kssl.h>
+
+#include <qlayout.h>
+#include <qradiobutton.h>
+#include <qcheckbox.h>
+#include <qlistview.h>
+#include <qframe.h>
+#include <qlabel.h>
+
+#include <kapplication.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <kglobalsettings.h>
+#include <kpushbutton.h>
+#include <kstdguiitem.h>
+#include <kseparator.h>
+#include <kdebug.h>
+
+
+class KSSLCertDlg::KSSLCertDlgPrivate {
+private:
+ friend class KSSLCertDlg;
+ QLabel *p_message;
+ QPushButton *p_pb_dontsend;
+ bool p_send_flag;
+};
+
+KSSLCertDlg::KSSLCertDlg(QWidget *parent, const char *name, bool modal)
+ : KDialog(parent, name, modal), d(new KSSLCertDlgPrivate) {
+
+ QBoxLayout * grid = new QVBoxLayout( this, KDialog::marginHint(),
+ KDialog::spacingHint() );
+
+ d->p_message = new QLabel(QString::null, this);
+ grid->addWidget(d->p_message);
+ setHost(_host);
+
+ _certs = new QListView(this);
+ _certs->addColumn(i18n("Certificate"));
+ _certs->setResizeMode(QListView::LastColumn);
+ QFontMetrics fm( KGlobalSettings::generalFont() );
+ _certs->setMinimumHeight(4*fm.height());
+ grid->addWidget(_certs);
+
+ _save = new QCheckBox(i18n("Save selection for this host."), this);
+ grid->addWidget(_save);
+
+ grid->addWidget(new KSeparator(KSeparator::HLine, this));
+
+ QBoxLayout * h = new QHBoxLayout( grid );
+ h->insertStretch(0);
+
+ _ok = new KPushButton(i18n("Send certificate"), this);
+ h->addWidget(_ok);
+ connect(_ok, SIGNAL(clicked()), SLOT(slotSend()));
+
+ d->p_pb_dontsend = new KPushButton(i18n("Do not send a certificate"), this);
+ h->addWidget(d->p_pb_dontsend);
+ connect(d->p_pb_dontsend, SIGNAL(clicked()), SLOT(slotDont()));
+
+#ifndef QT_NO_WIDGET_TOPEXTRA
+ setCaption(i18n("KDE SSL Certificate Dialog"));
+#endif
+}
+
+
+KSSLCertDlg::~KSSLCertDlg() {
+ delete d;
+}
+
+
+void KSSLCertDlg::setup(QStringList certs, bool saveChecked, bool sendChecked) {
+ setupDialog(certs, saveChecked, sendChecked);
+}
+
+void KSSLCertDlg::setupDialog(const QStringList& certs, bool saveChecked, bool sendChecked) {
+ _save->setChecked(saveChecked);
+ d->p_send_flag = sendChecked;
+
+ if (sendChecked)
+ _ok->setDefault(true); // "do send" is the "default action".
+ else
+ d->p_pb_dontsend->setDefault(true); // "do not send" is the "default action".
+
+ for (QStringList::ConstIterator i = certs.begin(); i != certs.end(); ++i) {
+ if ((*i).isEmpty())
+ continue;
+
+ new QListViewItem(_certs, *i);
+ }
+
+ _certs->setSelected(_certs->firstChild(), true);
+}
+
+
+bool KSSLCertDlg::saveChoice() {
+ return _save->isChecked();
+}
+
+
+bool KSSLCertDlg::wantsToSend() {
+ return d->p_send_flag;
+}
+
+
+QString KSSLCertDlg::getChoice() {
+ QListViewItem *selected = _certs->selectedItem();
+ if (selected && d->p_send_flag)
+ return selected->text(0);
+ else
+ return QString::null;
+}
+
+
+void KSSLCertDlg::setHost(const QString& host) {
+ _host = host;
+ d->p_message->setText(i18n("The server <b>%1</b> requests a certificate.<p>"
+ "Select a certificate to use from the list below:")
+ .arg(_host));
+}
+
+
+void KSSLCertDlg::slotSend() {
+ d->p_send_flag = true;
+ accept();
+}
+
+
+void KSSLCertDlg::slotDont() {
+ d->p_send_flag = false;
+ reject();
+}
+
+
+QDataStream& operator<<(QDataStream& s, const KSSLCertDlgRet& r) {
+ s << Q_INT8(r.ok?1:0) << r.choice << Q_INT8(r.save?1:0) << Q_INT8(r.send?1:0);
+ return s;
+}
+
+
+QDataStream& operator>>(QDataStream& s, KSSLCertDlgRet& r) {
+Q_INT8 tmp;
+ s >> tmp; r.ok = (tmp == 1);
+ s >> r.choice;
+ s >> tmp; r.save = (tmp == 1);
+ s >> tmp; r.send = (tmp == 1);
+ return s;
+}
+
+
+#include "ksslcertdlg.moc"
+