diff --git a/tools/chatgui/src/renamedialog.cpp b/tools/chatgui/src/renamedialog.cpp index 54ecc248..717ef802 100644 --- a/tools/chatgui/src/renamedialog.cpp +++ b/tools/chatgui/src/renamedialog.cpp @@ -71,6 +71,7 @@ RenameDialog::RenameDialog(DbManager* db, const QString& channelId, auto* saveBtn = new QPushButton(QCoreApplication::translate("ChatGui", "Save"), this); m_saveBtn = saveBtn; + m_loaded = loaded; m_saveBtn->setEnabled(m_loaded); saveBtn->setMinimumWidth(90); saveBtn->setDefault(true); saveBtn->setStyleSheet( @@ -84,14 +85,14 @@ RenameDialog::RenameDialog(DbManager* db, const QString& channelId, layout->addLayout(btnLayout); connect(this, &QDialog::finished, this, [this] { delete m_saveContext; m_saveContext = nullptr; - m_edit->setEnabled(true); m_saveBtn->setEnabled(true); + m_edit->setEnabled(true); m_saveBtn->setEnabled(m_loaded); }); } /* Результат адресован context запроса; после закрытия/удаления формы мост его не вызовет. */ void RenameDialog::finishSave(int result) { delete m_saveContext; m_saveContext = nullptr; - m_edit->setEnabled(true); m_saveBtn->setEnabled(true); + m_edit->setEnabled(true); m_saveBtn->setEnabled(m_loaded); if (!result) { accept(); return; } m_errorLabel->setText(QCoreApplication::translate("ChatGui", "Could not save member changes. Please try again.")); DEBUG_WARN(DEBUG_CATEGORY_CHAT_SYNC, "rename: save refused ch=%s node=%016llx result=%d", @@ -100,6 +101,7 @@ void RenameDialog::finishSave(int result) { void RenameDialog::onSave() { if (m_saveContext) return; + if (!m_loaded) { finishSave(-1); return; } m_errorLabel->clear(); m_edit->setEnabled(false); m_saveBtn->setEnabled(false); m_saveContext = new QObject(this); if (!gui_bridge_save_member(m_db ? m_db->m_db : nullptr, m_channelId, m_nodeId, m_edit->text().trimmed(), {}, diff --git a/tools/chatgui/src/renamedialog.h b/tools/chatgui/src/renamedialog.h index 20e7aeb0..ed35ed2c 100644 --- a/tools/chatgui/src/renamedialog.h +++ b/tools/chatgui/src/renamedialog.h @@ -31,4 +31,5 @@ private: QLabel* m_errorLabel; // Ошибка чтения/сохранения без технических подробностей. QPushButton* m_saveBtn; // Отключена до результата. QObject* m_saveContext = nullptr; // Собственный context одного запроса; удаляется при результате/закрытии. + bool m_loaded = false; // Ник успешно прочитан; при ошибке чтения сохранение запрещено. };