Added saving local text before editing scheduled message.

This commit is contained in:
23rd 2020-06-01 15:23:19 +03:00
parent 58281023bc
commit 8320feea10
2 changed files with 33 additions and 4 deletions

View File

@ -79,6 +79,10 @@ FieldHeader::FieldHeader(QWidget *parent, not_null<Data::Session*> data)
Ui::DialogTextOptions());
}
}, lifetime());
_cancel->addClickHandler([=] {
_editMsgId = nullptr;
});
}
void FieldHeader::paintEvent(QPaintEvent *e) {
@ -303,11 +307,32 @@ void ComposeControls::init() {
}, _wrap->lifetime());
_header->editMsgId(
) | rpl::start_with_next([=] {
) | rpl::start_with_next([=](auto item) {
updateHeight();
updateSendButtonType();
if (_header->isEditingMessage()) {
setTextFromEditingMessage(item);
} else {
setText(_localSavedText);
_localSavedText = {};
}
}, _wrap->lifetime());
}
void ComposeControls::setTextFromEditingMessage(not_null<HistoryItem*> item) {
if (!_header->isEditingMessage()) {
return;
}
_localSavedText = getTextWithAppliedMarkdown();
const auto t = item->originalText();
const auto text = TextWithTags{
t.text,
TextUtilities::ConvertEntitiesToTextTags(t.entities)
};
setText(text);
}
void ComposeControls::initField() {
_field->setMaxHeight(st::historyComposeFieldMaxHeight);
_field->setSubmitSettings(Core::App().settings().sendSubmitWay());
@ -369,13 +394,13 @@ void ComposeControls::initSendButton() {
void ComposeControls::updateSendButtonType() {
using Type = Ui::SendButton::Type;
const auto type = [&] {
//if (_editMsgId) {
// return Type::Save;
if (_header->isEditingMessage()) {
return Type::Save;
//} else if (_isInlineBot) {
// return Type::Cancel;
//} else if (showRecordButton()) {
// return Type::Record;
//}
}
return Type::Schedule;
}();
_send->setType(type);

View File

@ -115,6 +115,8 @@ private:
void setTabbedPanel(std::unique_ptr<ChatHelpers::TabbedPanel> panel);
void setText(const TextWithTags &text);
void setTextFromEditingMessage(not_null<HistoryItem*> item);
const not_null<QWidget*> _parent;
const not_null<Window::SessionController*> _window;
History *_history = nullptr;
@ -137,6 +139,8 @@ private:
rpl::event_stream<not_null<PhotoData*>> _photoChosen;
rpl::event_stream<ChatHelpers::TabbedSelector::InlineChosen> _inlineResultChosen;
TextWithTags _localSavedText;
//bool _recording = false;
//bool _inField = false;
//bool _inReplyEditForward = false;