/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-2016 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#include "identityeditwidget.h"
-#include <QDesktopServices>
#include <QDragEnterEvent>
#include <QDropEvent>
#include <QFileDialog>
+#include <QIcon>
+#include <QMimeData>
#include <QUrl>
+#include <QMessageBox>
+
+#if QT_VERSION < 0x050000
+# include <QDesktopServices>
+#else
+# include <QStandardPaths>
+#endif
#include "client.h"
-#include "iconloader.h"
IdentityEditWidget::IdentityEditWidget(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
- ui.addNick->setIcon(SmallIcon("list-add"));
- ui.deleteNick->setIcon(SmallIcon("edit-delete"));
- ui.renameNick->setIcon(SmallIcon("edit-rename"));
- ui.nickUp->setIcon(SmallIcon("go-up"));
- ui.nickDown->setIcon(SmallIcon("go-down"));
+ ui.addNick->setIcon(QIcon::fromTheme("list-add"));
+ ui.deleteNick->setIcon(QIcon::fromTheme("edit-delete"));
+ ui.renameNick->setIcon(QIcon::fromTheme("edit-rename"));
+ ui.nickUp->setIcon(QIcon::fromTheme("go-up"));
+ ui.nickDown->setIcon(QIcon::fromTheme("go-down"));
// We need to know whenever the state of input widgets changes...
connect(ui.realName, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
void IdentityEditWidget::saveToIdentity(CertIdentity *id)
{
+ QRegExp linebreaks = QRegExp("[\\r\\n]");
id->setRealName(ui.realName->text());
QStringList nicks;
for (int i = 0; i < ui.nicknameList->count(); i++) {
id->setNicks(nicks);
id->setAwayNick(ui.awayNick->text());
id->setAwayNickEnabled(true);
- id->setAwayReason(ui.awayReason->text());
+ id->setAwayReason(ui.awayReason->text().remove(linebreaks));
id->setAwayReasonEnabled(true);
id->setAutoAwayEnabled(ui.autoAwayEnabled->isChecked());
id->setAutoAwayTime(ui.autoAwayTime->value());
- id->setAutoAwayReason(ui.autoAwayReason->text());
+ id->setAutoAwayReason(ui.autoAwayReason->text().remove(linebreaks));
id->setAutoAwayReasonEnabled(ui.autoAwayReasonEnabled->isChecked());
id->setDetachAwayEnabled(ui.detachAwayEnabled->isChecked());
- id->setDetachAwayReason(ui.detachAwayReason->text());
+ id->setDetachAwayReason(ui.detachAwayReason->text().remove(linebreaks));
id->setDetachAwayReasonEnabled(true);
id->setIdent(ui.ident->text());
- id->setKickReason(ui.kickReason->text());
- id->setPartReason(ui.partReason->text());
- id->setQuitReason(ui.quitReason->text());
+ id->setKickReason(ui.kickReason->text().remove(linebreaks));
+ id->setPartReason(ui.partReason->text().remove(linebreaks));
+ id->setQuitReason(ui.quitReason->text().remove(linebreaks));
#ifdef HAVE_SSL
id->setSslKey(QSslKey(ui.keyTypeLabel->property("sslKey").toByteArray(), (QSsl::KeyAlgorithm)(ui.keyTypeLabel->property("sslKeyType").toInt())));
id->setSslCert(QSslCertificate(ui.certOrgLabel->property("sslCert").toByteArray()));
if (isCert) {
QSslCertificate cert = certByFilename(filename);
- if (cert.isValid())
+ if (!cert.isNull())
showCertState(cert);
}
else {
QSslKey key;
if (ui.keyTypeLabel->property("sslKey").toByteArray().isEmpty())
- key = keyByFilename(QFileDialog::getOpenFileName(this, tr("Load a Key"), QDesktopServices::storageLocation(QDesktopServices::HomeLocation)));
+ key = keyByFilename(QFileDialog::getOpenFileName(this, tr("Load a Key"),
+#if QT_VERSION < 0x050000
+ QDesktopServices::storageLocation(QDesktopServices::HomeLocation)));
+#else
+ QStandardPaths::writableLocation(QStandardPaths::HomeLocation)));
+#endif
showKeyState(key);
emit widgetHasChanged();
goto returnKey;
}
}
+ QMessageBox::information(this, tr("Failed to read key"), tr("Failed to read the key file. It is either incompatible or invalid. Note that the key file must not have a passphrase."));
returnKey:
return key;
}
QSslCertificate cert;
if (ui.certOrgLabel->property("sslCert").toByteArray().isEmpty())
- cert = certByFilename(QFileDialog::getOpenFileName(this, tr("Load a Certificate"), QDesktopServices::storageLocation(QDesktopServices::HomeLocation)));
-
+ cert = certByFilename(QFileDialog::getOpenFileName(this, tr("Load a Certificate"),
+#if QT_VERSION < 0x050000
+ QDesktopServices::storageLocation(QDesktopServices::HomeLocation)));
+#else
+ QStandardPaths::writableLocation(QStandardPaths::HomeLocation)));
+#endif
showCertState(cert);
emit widgetHasChanged();
}
for (int i = 0; i < 2; i++) {
cert = QSslCertificate(certRaw, (QSsl::EncodingFormat)i);
- if (cert.isValid())
+ if (!cert.isNull())
break;
}
return cert;
void IdentityEditWidget::showCertState(const QSslCertificate &cert)
{
- if (!cert.isValid()) {
+ if (cert.isNull()) {
ui.certOrgLabel->setText(tr("No Certificate loaded"));
ui.certCNameLabel->setText(tr("No Certificate loaded"));
ui.clearOrLoadCertButton->setText(tr("Load"));
}
else {
+#if QT_VERSION < 0x050000
ui.certOrgLabel->setText(cert.subjectInfo(QSslCertificate::Organization));
ui.certCNameLabel->setText(cert.subjectInfo(QSslCertificate::CommonName));
+#else
+ ui.certOrgLabel->setText(cert.subjectInfo(QSslCertificate::Organization).join(", "));
+ ui.certCNameLabel->setText(cert.subjectInfo(QSslCertificate::CommonName).join(", "));
+#endif
ui.clearOrLoadCertButton->setText(tr("Clear"));
}
ui.certOrgLabel->setProperty("sslCert", cert.toPem());