Remade supergroup convert box

This commit is contained in:
Eric Kotato 2020-05-16 10:04:30 +03:00
parent 69d433a531
commit 418c96d1cc
2 changed files with 76 additions and 0 deletions

View file

@ -426,6 +426,62 @@ void MaxInviteBox::resizeEvent(QResizeEvent *e) {
_invitationLink = myrtlrect(st::boxPadding.left(), st::boxPadding.top() + _textHeight + st::boxTextFont->height, width() - st::boxPadding.left() - st::boxPadding.right(), 2 * st::boxTextFont->height);
}
ConvertToSupergroupBox::ConvertToSupergroupBox(QWidget*, not_null<ChatData*> chat)
: _chat(chat) {
}
void ConvertToSupergroupBox::prepare() {
setTitle(tr::lng_profile_convert_title());
addButton(tr::lng_profile_convert_confirm(), [=] { convertToSupergroup(); });
addButton(tr::lng_cancel(), [=] { closeBox(); });
auto details = TextWithEntities();
const auto appendDetails = [&](TextWithEntities &&text) {
details.append(qs("\n")).append(std::move(text));
};
details.text = tr::lng_profile_convert_feature1(tr::now);
appendDetails({ tr::lng_profile_convert_feature2(tr::now) });
appendDetails({ tr::lng_profile_convert_feature3(tr::now) });
appendDetails({ tr::lng_profile_convert_feature4(tr::now) });
appendDetails({ qs("\n") + tr::lng_profile_convert_warning(tr::now, lt_bold_start, textcmdStartSemibold(), lt_bold_end, textcmdStopSemibold()) });
_text.create(this, rpl::single(std::move(details)), st::boxLabel);
_textWidth = st::boxWideWidth - st::boxPadding.left() - st::boxButtonPadding.right();
_textHeight = _text.countHeight(_textWidth);
setDimensions(st::boxWideWidth, _textHeight + st::boxPadding.bottom());
}
void ConvertToSupergroupBox::convertToSupergroup() {
MTP::send(MTPmessages_MigrateChat(_chat->inputChat), rpcDone(&ConvertToSupergroupBox::convertDone), rpcFail(&ConvertToSupergroupBox::convertFail));
}
void ConvertToSupergroupBox::convertDone(const MTPUpdates &updates) {
_chat->session().api().applyUpdates(updates);
Ui::hideLayer();
}
bool ConvertToSupergroupBox::convertFail(const RPCError &error) {
if (MTP::isDefaultHandledError(error)) return false;
Ui::hideLayer();
return true;
}
void PinMessageBox::resizeEvent(QResizeEvent *e) {
BoxContent::resizeEvent(e);
_text->moveToLeft(st::boxPadding.left(), st::boxPadding.top());
}
void ConvertToSupergroupBox::keyPressEvent(QKeyEvent *e) {
if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) {
convertToSupergroup();
} else {
BoxContent::keyPressEvent(e);
}
}
PinMessageBox::PinMessageBox(
QWidget*,
not_null<PeerData*> peer,

View file

@ -124,6 +124,26 @@ private:
};
class ConvertToSupergroupBox : public BoxContent, public RPCSender {
public:
ConvertToSupergroupBox(QWidget*, not_null<ChatData*> chat);
protected:
void prepare() override;
void resizeEvent(QResizeEvent *e) override;
void keyPressEvent(QKeyEvent *e) override;
private:
void convertToSupergroup();
void convertDone(const MTPUpdates &updates);
bool convertFail(const RPCError &error);
not_null<ChatData*> _chat;
object_ptr<Ui::FlatLabel> _text = { nullptr };
int32 _textWidth, _textHeight;
};
class PinMessageBox : public Ui::BoxContent, public RPCSender {
public:
PinMessageBox(QWidget*, not_null<PeerData*> peer, MsgId msgId);