diff --git a/src/dialogs/RoomSettings.cpp b/src/dialogs/RoomSettings.cpp
index 4e56b130..a9739f3e 100644
--- a/src/dialogs/RoomSettings.cpp
+++ b/src/dialogs/RoomSettings.cpp
@@ -90,77 +90,69 @@ EditModal::EditModal(const QString &roomId, QWidget *parent)
labelLayout->addWidget(errorField_);
layout->addLayout(labelLayout);
- connect(applyBtn_, &QPushButton::clicked, [this]() {
- // Check if the values are changed from the originals.
- auto newName = nameInput_->text().trimmed();
- auto newTopic = topicInput_->text().trimmed();
+ connect(applyBtn_, &QPushButton::clicked, this, &EditModal::applyClicked);
+ connect(cancelBtn_, &QPushButton::clicked, this, &EditModal::close);
- errorField_->hide();
+ auto window = QApplication::activeWindow();
+ auto center = window->frameGeometry().center();
+ move(center.x() - (width() * 0.5), center.y() - (height() * 0.5));
+}
- if (newName == initialName_ && newTopic == initialTopic_) {
- close();
- return;
- }
+void
+EditModal::applyClicked()
+{
+ // Check if the values are changed from the originals.
+ auto newName = nameInput_->text().trimmed();
+ auto newTopic = topicInput_->text().trimmed();
- using namespace mtx::events;
- auto proxy = std::make_shared<ThreadProxy>();
- connect(proxy.get(), &ThreadProxy::topicEventSent, this, [this]() {
- errorField_->hide();
- close();
- });
- connect(
- proxy.get(), &ThreadProxy::nameEventSent, this, [this](const QString &newName) {
- errorField_->hide();
- emit nameChanged(newName);
- close();
- });
- connect(proxy.get(), &ThreadProxy::error, this, [this](const QString &msg) {
- errorField_->setText(msg);
- errorField_->show();
- });
+ errorField_->hide();
- if (newName != initialName_ && !newName.isEmpty()) {
- state::Name body;
- body.name = newName.toStdString();
-
- http::client()->send_state_event<state::Name, EventType::RoomName>(
- roomId_.toStdString(),
- body,
- [proxy, newName](const mtx::responses::EventId &,
- mtx::http::RequestErr err) {
- if (err) {
- emit proxy->error(
- QString::fromStdString(err->matrix_error.error));
- return;
- }
-
- emit proxy->nameEventSent(newName);
- });
- }
+ if (newName == initialName_ && newTopic == initialTopic_) {
+ close();
+ return;
+ }
- if (newTopic != initialTopic_ && !newTopic.isEmpty()) {
- state::Topic body;
- body.topic = newTopic.toStdString();
-
- http::client()->send_state_event<state::Topic, EventType::RoomTopic>(
- roomId_.toStdString(),
- body,
- [proxy](const mtx::responses::EventId &, mtx::http::RequestErr err) {
- if (err) {
- emit proxy->error(
- QString::fromStdString(err->matrix_error.error));
- return;
- }
-
- emit proxy->topicEventSent();
- });
- }
- });
- connect(cancelBtn_, &QPushButton::clicked, this, &EditModal::close);
+ using namespace mtx::events;
+ auto proxy = std::make_shared<ThreadProxy>();
+ connect(proxy.get(), &ThreadProxy::topicEventSent, this, &EditModal::topicEventSent);
+ connect(proxy.get(), &ThreadProxy::nameEventSent, this, &EditModal::nameEventSent);
+ connect(proxy.get(), &ThreadProxy::error, this, &EditModal::error);
+
+ if (newName != initialName_ && !newName.isEmpty()) {
+ state::Name body;
+ body.name = newName.toStdString();
+
+ http::client()->send_state_event<state::Name, EventType::RoomName>(
+ roomId_.toStdString(),
+ body,
+ [proxy, newName](const mtx::responses::EventId &, mtx::http::RequestErr err) {
+ if (err) {
+ emit proxy->error(
+ QString::fromStdString(err->matrix_error.error));
+ return;
+ }
+
+ emit proxy->nameEventSent(newName);
+ });
+ }
- auto window = QApplication::activeWindow();
- auto center = window->frameGeometry().center();
- move(center.x() - (width() * 0.5), center.y() - (height() * 0.5));
+ if (newTopic != initialTopic_ && !newTopic.isEmpty()) {
+ state::Topic body;
+ body.topic = newTopic.toStdString();
+
+ http::client()->send_state_event<state::Topic, EventType::RoomTopic>(
+ roomId_.toStdString(),
+ body,
+ [proxy](const mtx::responses::EventId &, mtx::http::RequestErr err) {
+ if (err) {
+ emit proxy->error(
+ QString::fromStdString(err->matrix_error.error));
+ return;
+ }
+
+ emit proxy->topicEventSent();
+ });
+ }
}
void
diff --git a/src/dialogs/RoomSettings.h b/src/dialogs/RoomSettings.h
index dd729250..c2c81cdb 100644
--- a/src/dialogs/RoomSettings.h
+++ b/src/dialogs/RoomSettings.h
@@ -3,6 +3,7 @@
#include <QEvent>
#include <QFrame>
#include <QImage>
+#include <QLabel>
#include "Cache.h"
@@ -12,8 +13,6 @@ class QComboBox;
class QHBoxLayout;
class QShowEvent;
class LoadingIndicator;
-class QLabel;
-class QLabel;
class QLayout;
class QPixmap;
class TextField;
@@ -69,6 +68,28 @@ public:
signals:
void nameChanged(const QString &roomName);
+private slots:
+ void topicEventSent()
+ {
+ errorField_->hide();
+ close();
+ }
+
+ void nameEventSent(const QString &name)
+ {
+ errorField_->hide();
+ emit nameChanged(name);
+ close();
+ }
+
+ void error(const QString &msg)
+ {
+ errorField_->setText(msg);
+ errorField_->show();
+ }
+
+ void applyClicked();
+
private:
QString roomId_;
QString initialName_;
|