summary refs log tree commit diff
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-09-08 12:29:49 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-09-08 13:20:54 +0300
commit19626dbb105e31bc3bedaa8921e846e366b3a5ef (patch)
tree7997fd3c8fcf86218c109fd918f0d57574e1e92e
parenti18n: Update Polish translation (#430) (diff)
downloadnheko-19626dbb105e31bc3bedaa8921e846e366b3a5ef.tar.xz
Small refactoring on the EditModal
-rw-r--r--src/dialogs/RoomSettings.cpp122
-rw-r--r--src/dialogs/RoomSettings.h25
2 files changed, 80 insertions, 67 deletions
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_;