X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fqtui%2Fsettingspages%2Fidentityeditwidget.cpp;h=684dc61609dcef9a2ab4469359d59912d0f809d3;hb=8d736eb601e79e8fe1a866eb67e626b33f651d7a;hp=9b4c0ba7f25c537be3f41ba7071e57a1f9791b8b;hpb=9f91e0dd3c4eb5c2e2dedfc8d36a068d433d51b1;p=quassel.git diff --git a/src/qtui/settingspages/identityeditwidget.cpp b/src/qtui/settingspages/identityeditwidget.cpp index 9b4c0ba7..684dc616 100644 --- a/src/qtui/settingspages/identityeditwidget.cpp +++ b/src/qtui/settingspages/identityeditwidget.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -35,17 +34,18 @@ #endif #include "client.h" +#include "icon.h" IdentityEditWidget::IdentityEditWidget(QWidget *parent) : QWidget(parent) { ui.setupUi(this); - 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")); + ui.addNick->setIcon(icon::get("list-add")); + ui.deleteNick->setIcon(icon::get("edit-delete")); + ui.renameNick->setIcon(icon::get("edit-rename")); + ui.nickUp->setIcon(icon::get("go-up")); + ui.nickDown->setIcon(icon::get("go-down")); // We need to know whenever the state of input widgets changes... connect(ui.realName, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged())); @@ -392,7 +392,16 @@ QSslKey IdentityEditWidget::keyByFilename(const QString &filename) keyFile.close(); for (int i = 0; i < 2; i++) { +#if QT_VERSION >= 0x050500 + // On Qt5.5+, support QSsl::KeyAlgorithm::Rsa (1), QSsl::KeyAlgorithm::Dsa (2), and QSsl::KeyAlgorithm::Ec (3) + for (int j = 1; j < 4; j++) { +#elif QT_VERSION >= 0x050000 + // On Qt5.0-Qt5.4, support QSsl::KeyAlgorithm::Rsa (1) and QSsl::KeyAlgorithm::Dsa (2) (Ec wasn't added until 5.5) + for (int j = 1; j < 3; j++) { +#else + // On Qt4, support QSsl::KeyAlgorithm::Rsa (0) and QSsl::KeyAlgorithm::Dsa (1) (Qt4 uses different indices for the values) for (int j = 0; j < 2; j++) { +#endif key = QSslKey(keyRaw, (QSsl::KeyAlgorithm)j, (QSsl::EncodingFormat)i); if (!key.isNull()) goto returnKey; @@ -400,6 +409,12 @@ QSslKey IdentityEditWidget::keyByFilename(const QString &filename) } 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: +#if QT_VERSION >= 0x050500 + if(!key.isNull() && key.algorithm() == QSsl::KeyAlgorithm::Ec && !Client::isCoreFeatureEnabled(Quassel::Feature::EcdsaCertfpKeys)) { + QMessageBox::information(this, tr("Core does not support ECDSA keys"), tr("You loaded an ECDSA key, but the core does not support ECDSA keys. Please contact the core administrator.")); + key.clear(); + } +#endif return key; } @@ -415,11 +430,16 @@ void IdentityEditWidget::showKeyState(const QSslKey &key) case QSsl::Rsa: ui.keyTypeLabel->setText(tr("RSA")); break; +#if QT_VERSION >= 0x050500 + case QSsl::Ec: + ui.keyTypeLabel->setText(tr("ECDSA")); + break; +#endif case QSsl::Dsa: ui.keyTypeLabel->setText(tr("DSA")); break; default: - ui.keyTypeLabel->setText(tr("No Key loaded")); + ui.keyTypeLabel->setText(tr("Invalid key or no key loaded")); } ui.clearOrLoadKeyButton->setText(tr("Clear")); }