fix encryption toggles

This commit is contained in:
kirillpt 2020-11-27 00:55:39 +03:00
parent 5a3905b337
commit e6723884a7
2 changed files with 34 additions and 33 deletions

View File

@ -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);

View File

@ -1,3 +1,4 @@
#include "dialogs/RoomSettings.h"
#include <QApplication>
#include <QComboBox>
#include <QEvent>
@ -15,8 +16,6 @@
#include <QStandardPaths>
#include <QStyleOption>
#include <QVBoxLayout>
#include "dialogs/RoomSettings.h"
#include <mtx/responses/common.hpp>
#include <mtx/responses/media.hpp>
@ -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. <br>"
"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. <br>"
"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);
});