From e6723884a7d32f5ab9b8caae25f602b705934363 Mon Sep 17 00:00:00 2001 From: kirillpt Date: Fri, 27 Nov 2020 00:55:39 +0300 Subject: [PATCH] fix encryption toggles --- src/dialogs/CreateRoom.cpp | 1 - src/dialogs/RoomSettings.cpp | 66 +++++++++++++++++++----------------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/src/dialogs/CreateRoom.cpp b/src/dialogs/CreateRoom.cpp index b5dc5247..459405ce 100644 --- a/src/dialogs/CreateRoom.cpp +++ b/src/dialogs/CreateRoom.cpp @@ -81,7 +81,6 @@ CreateRoom::CreateRoom(QWidget *parent) directToggle_->setActiveColor(QColor("#38A3D8")); directToggle_->setInactiveColor(QColor("gray")); directToggle_->setState(false); - directToggle_->setChecked(false); auto directLayout = new QHBoxLayout; directLayout->setContentsMargins(0, 10, 0, 10); diff --git a/src/dialogs/RoomSettings.cpp b/src/dialogs/RoomSettings.cpp index 30da0eac..e6c9c58c 100644 --- a/src/dialogs/RoomSettings.cpp +++ b/src/dialogs/RoomSettings.cpp @@ -1,3 +1,4 @@ +#include "dialogs/RoomSettings.h" #include #include #include @@ -15,8 +16,6 @@ #include #include #include - -#include "dialogs/RoomSettings.h" #include #include @@ -405,34 +404,6 @@ RoomSettings::RoomSettings(const QString &room_id, QWidget *parent) auto encryptionLabel = new QLabel(tr("Encryption"), this); encryptionToggle_ = new Toggle(this); - connect(encryptionToggle_, &Toggle::toggled, this, [this](bool isOn) { - if (!isOn) - return; - - QMessageBox msgBox; - msgBox.setIcon(QMessageBox::Question); - msgBox.setWindowTitle(tr("End-to-End Encryption")); - msgBox.setText(tr( - "Encryption is currently experimental and things might break unexpectedly.
" - "Please take note that it can't be disabled afterwards.")); - msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); - msgBox.setDefaultButton(QMessageBox::Save); - int ret = msgBox.exec(); - - switch (ret) { - case QMessageBox::Ok: { - encryptionToggle_->setState(true); - encryptionToggle_->setEnabled(true); - enableEncryption(); - break; - } - default: { - encryptionToggle_->setState(false); - encryptionToggle_->setEnabled(false); - break; - } - } - }); auto encryptionOptionLayout = new QHBoxLayout; encryptionOptionLayout->setMargin(0); @@ -456,10 +427,39 @@ RoomSettings::RoomSettings(const QString &room_id, QWidget *parent) keyRequestsLayout->addWidget(keyRequestsLabel, Qt::AlignBottom | Qt::AlignLeft); keyRequestsLayout->addWidget(keyRequestsToggle_, 0, Qt::AlignBottom | Qt::AlignRight); + connect(encryptionToggle_, &Toggle::toggled, this, [this, keyRequestsLabel](bool isOn) { + if (!isOn || usesEncryption_) + return; + + QMessageBox msgBox; + msgBox.setIcon(QMessageBox::Question); + msgBox.setWindowTitle(tr("End-to-End Encryption")); + msgBox.setText(tr( + "Encryption is currently experimental and things might break unexpectedly.
" + "Please take note that it can't be disabled afterwards.")); + msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + msgBox.setDefaultButton(QMessageBox::Save); + int ret = msgBox.exec(); + + switch (ret) { + case QMessageBox::Ok: { + encryptionToggle_->setState(true); + encryptionToggle_->setEnabled(false); + enableEncryption(); + keyRequestsToggle_->show(); + keyRequestsLabel->show(); + break; + } + default: { + break; + } + } + }); + // Disable encryption button. if (usesEncryption_) { encryptionToggle_->setState(true); - encryptionToggle_->setEnabled(true); + encryptionToggle_->setEnabled(false); keyRequestsToggle_->setState(utils::respondsToKeyRequests(room_id_)); } else { @@ -544,7 +544,9 @@ RoomSettings::RoomSettings(const QString &room_id, QWidget *parent) connect(this, &RoomSettings::enableEncryptionError, this, [this](const QString &msg) { encryptionToggle_->setState(false); - encryptionToggle_->setEnabled(false); + keyRequestsToggle_->setState(false); + keyRequestsToggle_->setEnabled(false); + keyRequestsToggle_->hide(); emit ChatPage::instance()->showNotification(msg); });