Replaced Ui::InformBox and Ui::ConfirmBox with GenericBox.

This commit is contained in:
23rd 2022-02-27 11:23:20 +03:00
parent d5a44a2ba4
commit 5718789d53
89 changed files with 796 additions and 733 deletions

View File

@ -2392,7 +2392,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_group_call_rtmp_key_subtitle" = "Stream Key";
"lng_group_call_rtmp_key_copy" = "Copy Stream Key";
"lng_group_call_rtmp_key_copied" = "Stream Key copied to clipboard.";
"lng_group_call_rtmp_key_warn" = "Never share your Stream Key with anyone or show it on stream!";
"lng_group_call_rtmp_key_warning" = "**Never share your Stream Key with anyone or show it on stream!**";
"lng_group_call_rtmp_info" = "To stream video with another app, enter these Server URL and Stream Key in your streaming app.\n\nOnce you start broadcasting in your streaming app, tap Start Streaming below";
"lng_group_call_rtmp_start" = "Start Streaming";
"lng_group_call_rtmp_revoke_sure" = "Are you sure you want to revoke your Server URL and Stream Key?";

View File

@ -37,7 +37,7 @@ void AttachedStickers::request(
}
if (result.v.isEmpty()) {
strongController->show(
Box<Ui::InformBox>(tr::lng_stickers_not_found(tr::now)));
Ui::MakeInformBox(tr::lng_stickers_not_found()));
return;
} else if (result.v.size() > 1) {
strongController->show(
@ -63,7 +63,7 @@ void AttachedStickers::request(
_requestId = 0;
if (const auto strongController = weak.get()) {
strongController->show(
Box<Ui::InformBox>(tr::lng_stickers_not_found(tr::now)));
Ui::MakeInformBox(tr::lng_stickers_not_found()));
}
}).send();
}

View File

@ -100,7 +100,7 @@ void SendBotCallbackData(
if (!message.isEmpty()) {
if (showAlert) {
Ui::show(Box<Ui::InformBox>(message));
Ui::show(Ui::MakeInformBox(message));
} else {
if (withPassword) {
Ui::hideLayer();

View File

@ -86,8 +86,7 @@ void CheckChatInvite(
}
Core::App().hideMediaView();
if (const auto strong = weak.get()) {
strong->show(
Box<Ui::InformBox>(tr::lng_group_invite_bad_link(tr::now)));
strong->show(Ui::MakeInformBox(tr::lng_group_invite_bad_link()));
}
});
}

View File

@ -86,7 +86,7 @@ void ConfirmPhone::resolve(
)).done([=] {
_checkRequestId = 0;
controller->show(
Box<Ui::InformBox>(
Ui::MakeInformBox(
tr::lng_confirm_phone_success(
tr::now,
lt_phone,
@ -120,7 +120,7 @@ void ConfirmPhone::resolve(
? tr::lng_confirm_phone_link_invalid(tr::now)
: Lang::Hard::ServerError();
controller->show(
Box<Ui::InformBox>(errorText),
Ui::MakeInformBox(errorText),
Ui::LayerOption::CloseOther);
}).handleFloodErrors().send();
}

View File

@ -149,8 +149,7 @@ void EditMessageWithUploadedMedia(
session->data().sendHistoryChangeNotifications();
if (mediaInvalid) {
Ui::show(
Box<Ui::InformBox>(
tr::lng_edit_media_invalid_file(tr::now)),
Ui::MakeInformBox(tr::lng_edit_media_invalid_file()),
Ui::LayerOption::KeepOther);
}
} else {

View File

@ -2021,7 +2021,7 @@ void Updates::feedUpdate(const MTPUpdate &update) {
} else if (d.is_popup()) {
const auto &windows = session().windows();
if (!windows.empty()) {
windows.front()->window().show(Box<Ui::InformBox>(text));
windows.front()->window().show(Ui::MakeInformBox(text));
}
} else {
session().data().serviceNotification(text, d.vmedia());

View File

@ -466,17 +466,18 @@ void ApiWrap::sendMessageFail(
uint64 randomId,
FullMsgId itemId) {
if (error.type() == qstr("PEER_FLOOD")) {
Ui::show(Box<Ui::InformBox>(
Ui::show(Ui::MakeInformBox(
PeerFloodErrorText(&session(), PeerFloodType::Send)));
} else if (error.type() == qstr("USER_BANNED_IN_CHANNEL")) {
const auto link = Ui::Text::Link(
tr::lng_cant_more_info(tr::now),
session().createInternalLinkFull(qsl("spambot")));
Ui::show(Box<Ui::InformBox>(tr::lng_error_public_groups_denied(
tr::now,
lt_more_info,
link,
Ui::Text::WithEntities)));
Ui::show(Ui::MakeInformBox(
tr::lng_error_public_groups_denied(
tr::now,
lt_more_info,
link,
Ui::Text::WithEntities)));
} else if (error.type().startsWith(qstr("SLOWMODE_WAIT_"))) {
const auto chop = qstr("SLOWMODE_WAIT_").size();
const auto left = base::StringViewMid(error.type(), chop).toInt();
@ -494,7 +495,7 @@ void ApiWrap::sendMessageFail(
Assert(peer->isUser());
if (const auto item = scheduled.lookupItem(peer->id, itemId.msg)) {
scheduled.removeSending(item);
Ui::show(Box<Ui::InformBox>(tr::lng_cant_do_this(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_cant_do_this()));
}
} else if (error.type() == qstr("CHAT_FORWARDS_RESTRICTED")) {
Ui::ShowMultilineToast({ .text = { peer->isBroadcast()
@ -1275,7 +1276,7 @@ void ApiWrap::migrateDone(
void ApiWrap::migrateFail(not_null<PeerData*> peer, const QString &error) {
if (error == u"CHANNELS_TOO_MUCH"_q) {
Ui::show(Box<Ui::InformBox>(tr::lng_migrate_error(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_migrate_error()));
}
if (auto handlers = _migrateCallbacks.take(peer)) {
for (auto &handler : *handlers) {

View File

@ -110,8 +110,11 @@ void AboutBox::showVersionHistory() {
QGuiApplication::clipboard()->setText(url);
Ui::show(Box<Ui::InformBox>("The link to the current private alpha "
"version of Telegram Desktop was copied to the clipboard."));
getDelegate()->show(
Ui::MakeInformBox(
"The link to the current private alpha "
"version of Telegram Desktop was copied to the clipboard."),
Ui::LayerOption::CloseOther);
} else {
UrlClickHandler::Open(Core::App().changelogLink());
}

View File

@ -161,11 +161,11 @@ void ShowAddParticipantsError(
*weak = Ui::show(std::move(box));
};
Ui::show(
Box<Ui::ConfirmBox>(
tr::lng_cant_invite_offer_admin(tr::now),
tr::lng_cant_invite_make_admin(tr::now),
tr::lng_cancel(tr::now),
makeAdmin),
Ui::MakeConfirmBox({
.text = tr::lng_cant_invite_offer_admin(),
.confirmed = makeAdmin,
.confirmText = tr::lng_cant_invite_make_admin(),
}),
Ui::LayerOption::KeepOther);
return;
}
@ -176,7 +176,7 @@ void ShowAddParticipantsError(
? PeerFloodType::InviteGroup
: PeerFloodType::InviteChannel;
const auto text = PeerFloodErrorText(&chat->session(), type);
Ui::show(Box<Ui::InformBox>(text), Ui::LayerOption::KeepOther);
Ui::show(Ui::MakeInformBox(text), Ui::LayerOption::KeepOther);
return;
}
const auto text = [&] {
@ -203,7 +203,7 @@ void ShowAddParticipantsError(
}
return tr::lng_failed_add_participant(tr::now);
}();
Ui::show(Box<Ui::InformBox>(text), Ui::LayerOption::KeepOther);
Ui::show(Ui::MakeInformBox(text), Ui::LayerOption::KeepOther);
}
class RevokePublicLinkBox::Inner : public TWidget {
@ -656,18 +656,18 @@ void GroupInfoBox::createGroup(
}
} else if (type == u"USERS_TOO_FEW"_q) {
controller->show(
Box<Ui::InformBox>(tr::lng_cant_invite_privacy(tr::now)),
Ui::MakeInformBox(tr::lng_cant_invite_privacy()),
Ui::LayerOption::KeepOther);
} else if (type == u"PEER_FLOOD"_q) {
controller->show(
Box<Ui::InformBox>(
Ui::MakeInformBox(
PeerFloodErrorText(
&_navigation->session(),
PeerFloodType::InviteGroup)),
Ui::LayerOption::KeepOther);
} else if (type == u"USER_RESTRICTED"_q) {
controller->show(
Box<Ui::InformBox>(tr::lng_cant_do_this(tr::now)),
Ui::MakeInformBox(tr::lng_cant_do_this()),
Ui::LayerOption::KeepOther);
}
}).send();
@ -778,11 +778,11 @@ void GroupInfoBox::createChannel(
_title->showError();
} else if (type == u"USER_RESTRICTED"_q) {
controller->show(
Box<Ui::InformBox>(tr::lng_cant_do_this(tr::now)),
Ui::MakeInformBox(tr::lng_cant_do_this()),
Ui::LayerOption::CloseOther);
} else if (type == u"CHANNELS_TOO_MUCH"_q) {
controller->show(
Box<Ui::InformBox>(tr::lng_cant_do_this(tr::now)),
Ui::MakeInformBox(tr::lng_cant_do_this()),
Ui::LayerOption::CloseOther); // TODO
}
}).send();
@ -1649,7 +1649,11 @@ void RevokePublicLinkBox::Inner::mouseReleaseEvent(QMouseEvent *e) {
}).send();
});
Ui::show(
Box<Ui::ConfirmBox>(text, confirmText, std::move(callback)),
Ui::MakeConfirmBox({
.text = text,
.confirmed = std::move(callback),
.confirmText = confirmText,
}),
Ui::LayerOption::KeepOther);
}
}

View File

@ -22,7 +22,6 @@ class Session;
} // namespace Main
namespace Ui {
class ConfirmBox;
class FlatLabel;
class InputField;
class PhoneInput;

View File

@ -176,11 +176,11 @@ void BackgroundBox::removePaper(const Data::WallPaper &paper) {
)).send();
};
_controller->show(
Box<Ui::ConfirmBox>(
tr::lng_background_sure_delete(tr::now),
tr::lng_selected_delete(tr::now),
tr::lng_cancel(tr::now),
remove),
Ui::MakeConfirmBox({
.text = tr::lng_background_sure_delete(),
.confirmed = remove,
.confirmText = tr::lng_selected_delete(),
}),
Ui::LayerOption::KeepOther);
}

View File

@ -779,8 +779,7 @@ bool BackgroundPreviewBox::Start(
return true;
}
if (!IsValidWallPaperSlug(slug)) {
controller->show(
Box<Ui::InformBox>(tr::lng_background_bad_link(tr::now)));
controller->show(Ui::MakeInformBox(tr::lng_background_bad_link()));
return false;
}
controller->session().api().requestWallPaper(slug, crl::guard(controller, [=](
@ -789,8 +788,7 @@ bool BackgroundPreviewBox::Start(
controller,
result.withUrlParams(params)));
}), crl::guard(controller, [=](const MTP::Error &error) {
controller->show(
Box<Ui::InformBox>(tr::lng_background_bad_link(tr::now)));
controller->show(Ui::MakeInformBox(tr::lng_background_bad_link()));
}));
return true;
}

View File

@ -266,12 +266,11 @@ void ChangePhoneBox::EnterPhone::sendPhoneFail(
Ui::ShowPhoneBannedError(&_controller->window(), phoneNumber);
} else if (error.type() == qstr("PHONE_NUMBER_OCCUPIED")) {
_controller->show(
Box<Ui::InformBox>(
Ui::MakeInformBox(
tr::lng_change_phone_occupied(
tr::now,
lt_phone,
Ui::FormatPhone(phoneNumber)),
tr::lng_box_ok(tr::now)),
Ui::FormatPhone(phoneNumber))),
Ui::LayerOption::CloseOther);
} else {
showError(Lang::Hard::ServerError());
@ -443,9 +442,10 @@ void ChangePhoneBox::prepare() {
Ui::LayerOption::CloseOther);
};
controller->show(
Box<Ui::ConfirmBox>(
tr::lng_change_phone_warning(tr::now),
std::move(callback)),
Ui::MakeConfirmBox({
.text = tr::lng_change_phone_warning(),
.confirmed = std::move(callback),
}),
Ui::LayerOption::CloseOther);
});
addButton(tr::lng_cancel(), [this] {

View File

@ -1139,13 +1139,14 @@ void ProxiesBoxController::ShowApplyConfirmation(
close();
};
Ui::show(
Box<Ui::ConfirmBox>(
text,
tr::lng_sure_enable(tr::now),
std::move(callback)),
Ui::MakeConfirmBox({
.text = text,
.confirmed = std::move(callback),
.confirmText = tr::lng_sure_enable(),
}),
Ui::LayerOption::KeepOther);
} else {
Ui::show(Box<Ui::InformBox>(
Ui::show(Ui::MakeInformBox(
(proxy.status() == ProxyData::Status::Unsupported
? tr::lng_proxy_unsupported(tr::now)
: tr::lng_proxy_invalid(tr::now))));

View File

@ -108,7 +108,7 @@ void StartPendingReset(
auto finish = [=](const QString &message) mutable {
if (const auto strong = weak.data()) {
if (!message.isEmpty()) {
strong->getDelegate()->show(Box<Ui::InformBox>(message));
strong->getDelegate()->show(Ui::MakeInformBox(message));
}
strong->closeBox();
}
@ -139,7 +139,7 @@ void StartPendingReset(
lt_count,
minutes);
if (const auto strong = weak.data()) {
strong->getDelegate()->show(Box<Ui::InformBox>(
strong->getDelegate()->show(Ui::MakeInformBox(
tr::lng_cloud_password_reset_later(
tr::now,
lt_duration,
@ -441,8 +441,8 @@ void PasscodeBox::recoverPasswordDone(
if (weak) {
_newPasswordSet.fire_copy(newPasswordBytes);
if (weak) {
getDelegate()->show(Box<Ui::InformBox>(
tr::lng_cloud_password_updated(tr::now)));
getDelegate()->show(Ui::MakeInformBox(
tr::lng_cloud_password_updated()));
if (weak) {
closeBox();
}
@ -458,12 +458,12 @@ void PasscodeBox::setPasswordDone(const QByteArray &newPasswordBytes) {
const auto weak = Ui::MakeWeak(this);
_newPasswordSet.fire_copy(newPasswordBytes);
if (weak) {
const auto text = _reenterPasscode->isHidden()
? tr::lng_cloud_password_removed(tr::now)
auto text = _reenterPasscode->isHidden()
? tr::lng_cloud_password_removed()
: _oldPasscode->isHidden()
? tr::lng_cloud_password_was_set(tr::now)
: tr::lng_cloud_password_updated(tr::now);
getDelegate()->show(Box<Ui::InformBox>(text));
? tr::lng_cloud_password_was_set()
: tr::lng_cloud_password_updated();
getDelegate()->show(Ui::MakeInformBox(std::move(text)));
if (weak) {
closeBox();
}
@ -559,8 +559,9 @@ void PasscodeBox::validateEmail(
const auto weak = Ui::MakeWeak(this);
_clearUnconfirmedPassword.fire({});
if (weak) {
auto box = Box<Ui::InformBox>(
Lang::Hard::EmailConfirmationExpired());
auto box = Ui::MakeInformBox({
Lang::Hard::EmailConfirmationExpired()
});
weak->getDelegate()->show(
std::move(box),
Ui::LayerOption::CloseOther);
@ -685,12 +686,12 @@ void PasscodeBox::save(bool force) {
}
if (!onlyCheck && !_recoverEmail->isHidden() && email.isEmpty() && !force) {
_skipEmailWarning = true;
_replacedBy = getDelegate()->show(
Box<Ui::ConfirmBox>(
tr::lng_cloud_password_about_recover(tr::now),
tr::lng_cloud_password_skip_email(tr::now),
st::attentionBoxButton,
crl::guard(this, [this] { save(true); })));
_replacedBy = getDelegate()->show(Ui::MakeConfirmBox({
.text = { tr::lng_cloud_password_about_recover() },
.confirmed = crl::guard(this, [this] { save(true); }),
.confirmText = tr::lng_cloud_password_skip_email(),
.confirmStyle = &st::attentionBoxButton,
}));
} else if (onlyCheck) {
submitOnlyCheckCloudPassword(old);
} else if (_oldPasscode->isHidden()) {
@ -719,14 +720,11 @@ void PasscodeBox::submitOnlyCheckCloudPassword(const QString &oldPassword) {
if (_cloudFields.turningOff && _cloudFields.notEmptyPassport) {
Assert(!_cloudFields.customCheckCallback);
const auto confirmed = [=](Fn<void()> &&close) {
send();
close();
};
getDelegate()->show(Box<Ui::ConfirmBox>(
tr::lng_cloud_password_passport_losing(tr::now),
tr::lng_continue(tr::now),
confirmed));
getDelegate()->show(Ui::MakeConfirmBox({
.text = tr::lng_cloud_password_passport_losing(),
.confirmed = [=](Fn<void()> &&close) { send(); close(); },
.confirmText = tr::lng_continue(),
}));
} else {
send();
}
@ -794,7 +792,7 @@ void PasscodeBox::requestPasswordData() {
}
void PasscodeBox::serverError() {
getDelegate()->show(Box<Ui::InformBox>(Lang::Hard::ServerError()));
getDelegate()->show(Ui::MakeInformBox(Lang::Hard::ServerError()));
closeBox();
}
@ -949,10 +947,11 @@ void PasscodeBox::suggestSecretReset(const QString &newPassword) {
resetSecret(check, newPassword, std::move(close));
});
};
getDelegate()->show(Box<Ui::ConfirmBox>(
Lang::Hard::PassportCorruptedChange(),
Lang::Hard::PassportCorruptedReset(),
std::move(resetSecretAndSave)));
getDelegate()->show(Ui::MakeConfirmBox({
.text = { Lang::Hard::PassportCorruptedChange() },
.confirmed = std::move(resetSecretAndSave),
.confirmText = Lang::Hard::PassportCorruptedReset(),
}));
}
void PasscodeBox::resetSecret(
@ -1074,18 +1073,14 @@ void PasscodeBox::recoverByEmail() {
if (!_cloudFields.hasRecovery) {
Assert(_session != nullptr);
const auto session = _session;
const auto confirmBox = std::make_shared<QPointer<BoxContent>>();
const auto reset = crl::guard(this, [=] {
StartPendingReset(session, this, [=] {
if (const auto box = *confirmBox) {
box->closeBox();
}
});
const auto reset = crl::guard(this, [=](Fn<void()> &&close) {
StartPendingReset(session, this, std::move(close));
});
*confirmBox = getDelegate()->show(Box<Ui::ConfirmBox>(
tr::lng_cloud_password_reset_no_email(tr::now),
tr::lng_cloud_password_reset_ok(tr::now),
reset));
getDelegate()->show(Ui::MakeConfirmBox({
.text = tr::lng_cloud_password_reset_no_email(tr::now),
.confirmed = reset,
.confirmText = tr::lng_cloud_password_reset_ok(tr::now),
}));
} else if (_pattern.isEmpty()) {
_pattern = "-";
_api.request(MTPauth_RequestPasswordRecovery(
@ -1155,22 +1150,20 @@ RecoverBox::RecoverBox(
_noEmailAccess.destroy();
} else {
_noEmailAccess->setClickedCallback([=] {
const auto confirmBox = std::make_shared<QPointer<BoxContent>>();
const auto reset = crl::guard(this, [=] {
const auto reset = crl::guard(this, [=](Fn<void()> &&close) {
const auto closeParent = _closeParent;
StartPendingReset(session, this, [=] {
StartPendingReset(session, this, [=, c = std::move(close)] {
if (closeParent) {
closeParent();
}
if (const auto box = *confirmBox) {
box->closeBox();
}
c();
});
});
*confirmBox = getDelegate()->show(Box<Ui::ConfirmBox>(
tr::lng_cloud_password_reset_with_email(tr::now),
tr::lng_cloud_password_reset_ok(tr::now),
reset));
getDelegate()->show(Ui::MakeConfirmBox({
.text = tr::lng_cloud_password_reset_with_email(),
.confirmed = reset,
.confirmText = tr::lng_cloud_password_reset_ok(),
}));
});
}
}
@ -1265,14 +1258,11 @@ void RecoverBox::submit() {
}
});
if (_cloudFields.notEmptyPassport) {
const auto confirmed = [=](Fn<void()> &&close) {
send();
close();
};
getDelegate()->show(Box<Ui::ConfirmBox>(
tr::lng_cloud_password_passport_losing(tr::now),
tr::lng_continue(tr::now),
confirmed));
getDelegate()->show(Ui::MakeConfirmBox({
.text = tr::lng_cloud_password_passport_losing(),
.confirmed = [=](Fn<void()> &&close) { send(); close(); },
.confirmText = tr::lng_continue(),
}));
} else {
send();
}
@ -1294,7 +1284,7 @@ void RecoverBox::proceedToClear() {
_submitRequest = 0;
_newPasswordSet.fire({});
getDelegate()->show(
Box<Ui::InformBox>(tr::lng_cloud_password_removed(tr::now)),
Ui::MakeInformBox(tr::lng_cloud_password_removed()),
Ui::LayerOption::CloseOther);
}
@ -1342,7 +1332,7 @@ void RecoverBox::checkSubmitFail(const MTP::Error &error) {
if (err == qstr("PASSWORD_EMPTY")) {
_newPasswordSet.fire(QByteArray());
getDelegate()->show(
Box<Ui::InformBox>(tr::lng_cloud_password_removed(tr::now)),
Ui::MakeInformBox(tr::lng_cloud_password_removed()),
Ui::LayerOption::CloseOther);
} else if (err == qstr("PASSWORD_RECOVERY_NA")) {
closeBox();
@ -1383,8 +1373,7 @@ RecoveryEmailValidation ConfirmRecoveryEmail(
reloads->fire({});
if (*weak) {
(*weak)->getDelegate()->show(
Box<Ui::InformBox>(
tr::lng_cloud_password_was_set(tr::now)),
Ui::MakeInformBox(tr::lng_cloud_password_was_set()),
Ui::LayerOption::CloseOther);
}
}).fail([=](const MTP::Error &error) {
@ -1396,7 +1385,7 @@ RecoveryEmailValidation ConfirmRecoveryEmail(
} else if (error.type() == qstr("EMAIL_HASH_EXPIRED")) {
cancels->fire({});
if (*weak) {
auto box = Box<Ui::InformBox>(
auto box = Ui::MakeInformBox(
Lang::Hard::EmailConfirmationExpired());
(*weak)->getDelegate()->show(
std::move(box),

View File

@ -564,7 +564,10 @@ void AddBotToGroupBoxController::shareBotGame(not_null<PeerData*> chat) {
return tr::lng_bot_sure_share_game_group(tr::now, lt_group, chat->name);
}();
Ui::show(
Box<Ui::ConfirmBox>(confirmText, std::move(send)),
Ui::MakeConfirmBox({
.text = confirmText,
.confirmed = std::move(send),
}),
Ui::LayerOption::KeepOther);
}
@ -572,7 +575,7 @@ void AddBotToGroupBoxController::addBotToGroup(not_null<PeerData*> chat) {
if (const auto megagroup = chat->asMegagroup()) {
if (!megagroup->canAddMembers()) {
Ui::show(
Box<Ui::InformBox>(tr::lng_error_cant_add_member(tr::now)),
Ui::MakeInformBox(tr::lng_error_cant_add_member()),
Ui::LayerOption::KeepOther);
return;
}
@ -582,7 +585,7 @@ void AddBotToGroupBoxController::addBotToGroup(not_null<PeerData*> chat) {
});
auto confirmText = tr::lng_bot_sure_invite(tr::now, lt_group, chat->name);
Ui::show(
Box<Ui::ConfirmBox>(confirmText, send),
Ui::MakeConfirmBox({ confirmText, send }),
Ui::LayerOption::KeepOther);
}

View File

@ -107,8 +107,7 @@ void AddParticipantsBoxController::rowClicked(not_null<PeerListRow*> row) {
} else if (count >= serverConfig.chatSizeMax
&& count < serverConfig.megagroupSizeMax) {
Ui::show(
Box<Ui::InformBox>(
tr::lng_profile_add_more_after_create(tr::now)),
Ui::MakeInformBox(tr::lng_profile_add_more_after_create()),
Ui::LayerOption::KeepOther);
}
}
@ -570,21 +569,22 @@ void AddSpecialBoxController::showAdmin(
if (canBanMembers) {
if (!sure) {
_editBox = Ui::show(
Box<Ui::ConfirmBox>(
tr::lng_sure_add_admin_unremove(tr::now),
showAdminSure),
Ui::MakeConfirmBox({
tr::lng_sure_add_admin_unremove(),
showAdminSure
}),
Ui::LayerOption::KeepOther);
return;
}
} else {
Ui::show(Box<Ui::InformBox>(
tr::lng_error_cant_add_admin_unban(tr::now)),
Ui::show(
Ui::MakeInformBox(tr::lng_error_cant_add_admin_unban()),
Ui::LayerOption::KeepOther);
return;
}
} else {
Ui::show(Box<Ui::InformBox>(
tr::lng_error_cant_add_admin_invite(tr::now)),
Ui::show(
Ui::MakeInformBox(tr::lng_error_cant_add_admin_invite()),
Ui::LayerOption::KeepOther);
return;
}
@ -593,15 +593,16 @@ void AddSpecialBoxController::showAdmin(
if (canBanMembers) {
if (!sure) {
_editBox = Ui::show(
Box<Ui::ConfirmBox>(
tr::lng_sure_add_admin_unremove(tr::now),
showAdminSure),
Ui::MakeConfirmBox({
tr::lng_sure_add_admin_unremove(),
showAdminSure
}),
Ui::LayerOption::KeepOther);
return;
}
} else {
Ui::show(Box<Ui::InformBox>(
tr::lng_error_cant_add_admin_unban(tr::now)),
Ui::show(
Ui::MakeInformBox(tr::lng_error_cant_add_admin_unban()),
Ui::LayerOption::KeepOther);
return;
}
@ -609,20 +610,20 @@ void AddSpecialBoxController::showAdmin(
// The user is not in the group yet.
if (canAddMembers) {
if (!sure) {
const auto text = ((_peer->isChat() || _peer->isMegagroup())
auto text = ((_peer->isChat() || _peer->isMegagroup())
? tr::lng_sure_add_admin_invite
: tr::lng_sure_add_admin_invite_channel)(tr::now);
: tr::lng_sure_add_admin_invite_channel)();
_editBox = Ui::show(
Box<Ui::ConfirmBox>(
text,
showAdminSure),
Ui::MakeConfirmBox({
std::move(text),
showAdminSure
}),
Ui::LayerOption::KeepOther);
return;
}
} else {
Ui::show(
Box<Ui::InformBox>(
tr::lng_error_cant_add_admin_invite(tr::now)),
Ui::MakeInformBox(tr::lng_error_cant_add_admin_invite()),
Ui::LayerOption::KeepOther);
return;
}
@ -692,15 +693,16 @@ void AddSpecialBoxController::showRestricted(
if (!_additional.isCreator(user) && _additional.canEditAdmin(user)) {
if (!sure) {
_editBox = Ui::show(
Box<Ui::ConfirmBox>(
tr::lng_sure_ban_admin(tr::now),
showRestrictedSure),
Ui::MakeConfirmBox({
tr::lng_sure_ban_admin(),
showRestrictedSure
}),
Ui::LayerOption::KeepOther);
return;
}
} else {
Ui::show(
Box<Ui::InformBox>(tr::lng_error_cant_ban_admin(tr::now)),
Ui::MakeInformBox(tr::lng_error_cant_ban_admin()),
Ui::LayerOption::KeepOther);
return;
}
@ -763,15 +765,16 @@ void AddSpecialBoxController::kickUser(
if (!_additional.isCreator(user) && _additional.canEditAdmin(user)) {
if (!sure) {
_editBox = Ui::show(
Box<Ui::ConfirmBox>(
tr::lng_sure_ban_admin(tr::now),
kickUserSure),
Ui::MakeConfirmBox({
tr::lng_sure_ban_admin(),
kickUserSure
}),
Ui::LayerOption::KeepOther);
return;
}
} else {
Ui::show(
Box<Ui::InformBox>(tr::lng_error_cant_ban_admin(tr::now)),
Ui::MakeInformBox(tr::lng_error_cant_ban_admin()),
Ui::LayerOption::KeepOther);
return;
}
@ -786,7 +789,7 @@ void AddSpecialBoxController::kickUser(
lt_user,
participant->name);
_editBox = Ui::show(
Box<Ui::ConfirmBox>(text, kickUserSure),
Ui::MakeConfirmBox({ text, kickUserSure }),
Ui::LayerOption::KeepOther);
return;
}

View File

@ -153,10 +153,11 @@ void Controller::choose(not_null<ChannelData*> chat) {
onstack(chat);
};
Ui::show(
Box<Ui::ConfirmBox>(
text,
tr::lng_manage_discussion_group_link(tr::now),
sure),
Ui::MakeConfirmBox({
.text = text,
.confirmed = sure,
.confirmText = tr::lng_manage_discussion_group_link(tr::now),
}),
Ui::LayerOption::KeepOther);
}
@ -185,10 +186,11 @@ void Controller::choose(not_null<ChatData*> chat) {
chat->session().api().migrateChat(chat, crl::guard(this, done));
};
Ui::show(
Box<Ui::ConfirmBox>(
text,
tr::lng_manage_discussion_group_link(tr::now),
sure),
Ui::MakeConfirmBox({
.text = text,
.confirmed = sure,
.confirmText = tr::lng_manage_discussion_group_link(tr::now),
}),
Ui::LayerOption::KeepOther);
}

View File

@ -456,16 +456,17 @@ void EditAdminBox::transferOwnership() {
transferOwnershipChecked();
close();
});
getDelegate()->show(Box<Ui::ConfirmBox>(
tr::lng_rights_transfer_about(
getDelegate()->show(Ui::MakeConfirmBox({
.text = tr::lng_rights_transfer_about(
tr::now,
lt_group,
Ui::Text::Bold(peer()->name),
lt_user,
Ui::Text::Bold(user()->shortName()),
Ui::Text::RichLangValue),
tr::lng_rights_transfer_sure(tr::now),
callback));
.confirmed = callback,
.confirmText = tr::lng_rights_transfer_sure(),
}));
}
}).send();
}
@ -573,7 +574,7 @@ void EditAdminBox::sendTransferRequestFrom(
|| (type == qstr("SESSION_TOO_FRESH_XXX"));
}();
const auto weak = Ui::MakeWeak(this);
getDelegate()->show(Box<Ui::InformBox>(problem));
getDelegate()->show(Ui::MakeInformBox(problem));
if (box) {
box->closeBox();
}

View File

@ -1718,10 +1718,13 @@ void ParticipantsBoxController::kickParticipant(not_null<PeerData*> participant)
lt_user,
user ? user->firstName : participant->name);
_editBox = Ui::show(
Box<Ui::ConfirmBox>(
text,
tr::lng_box_remove(tr::now),
crl::guard(this, [=] { kickParticipantSure(participant); })),
Ui::MakeConfirmBox({
.text = text,
.confirmed = crl::guard(this, [=] {
kickParticipantSure(participant);
}),
.confirmText = tr::lng_box_remove(),
}),
Ui::LayerOption::KeepOther);
}
@ -1760,13 +1763,14 @@ void ParticipantsBoxController::kickParticipantSure(
void ParticipantsBoxController::removeAdmin(not_null<UserData*> user) {
_editBox = Ui::show(
Box<Ui::ConfirmBox>(
tr::lng_profile_sure_remove_admin(
Ui::MakeConfirmBox({
.text = tr::lng_profile_sure_remove_admin(
tr::now,
lt_user,
user->firstName),
tr::lng_box_remove(tr::now),
crl::guard(this, [=] { removeAdminSure(user); })),
.confirmed = crl::guard(this, [=] { removeAdminSure(user); }),
.confirmText = tr::lng_box_remove(),
}),
Ui::LayerOption::KeepOther);
}

View File

@ -1606,11 +1606,12 @@ void Controller::deleteWithConfirmation() {
deleteChannel();
});
_navigation->parentController()->show(
Box<Ui::ConfirmBox>(
text,
tr::lng_box_delete(tr::now),
st::attentionBoxButton,
deleteCallback),
Ui::MakeConfirmBox({
.text = text,
.confirmed = deleteCallback,
.confirmText = tr::lng_box_delete(),
.confirmStyle = &st::attentionBoxButton,
}),
Ui::LayerOption::KeepOther);
}

View File

@ -943,23 +943,18 @@ void AddPermanentLinkBlock(
}
});
const auto revokeLink = crl::guard(weak, [=] {
const auto box = std::make_shared<QPointer<Ui::ConfirmBox>>();
const auto done = crl::guard(weak, [=] {
const auto close = [=] {
if (*box) {
(*box)->closeBox();
}
};
const auto done = crl::guard(weak, [=](Fn<void()> &&close) {
peer->session().api().inviteLinks().revokePermanent(
peer,
admin,
value->current().link,
close);
std::move(close));
});
*box = Ui::show(
Box<Ui::ConfirmBox>(
Ui::show(
Ui::MakeConfirmBox({
tr::lng_group_invite_about_new(tr::now),
done),
done
}),
Ui::LayerOption::KeepOther);
});
@ -1143,7 +1138,7 @@ void ShareInviteLinkBox(not_null<PeerData*> peer, const QString &link) {
}
text.append(error.first);
Ui::show(
Box<Ui::InformBox>(text),
Ui::MakeInformBox(text),
Ui::LayerOption::KeepOther);
return;
}
@ -1252,19 +1247,17 @@ void RevokeLink(
not_null<PeerData*> peer,
not_null<UserData*> admin,
const QString &link) {
const auto box = std::make_shared<QPointer<Ui::ConfirmBox>>();
const auto revoke = [=] {
const auto done = [=](const LinkData &data) {
if (*box) {
(*box)->closeBox();
}
const auto revoke = [=](Fn<void()> &&close) {
const auto done = [close = std::move(close)](const LinkData &data) {
close();
};
peer->session().api().inviteLinks().revoke(peer, admin, link, done);
};
*box = Ui::show(
Box<Ui::ConfirmBox>(
tr::lng_group_invite_revoke_about(tr::now),
revoke),
Ui::show(
Ui::MakeConfirmBox({
tr::lng_group_invite_revoke_about(),
revoke
}),
Ui::LayerOption::KeepOther);
}
@ -1272,21 +1265,18 @@ void DeleteLink(
not_null<PeerData*> peer,
not_null<UserData*> admin,
const QString &link) {
const auto box = std::make_shared<QPointer<Ui::ConfirmBox>>();
const auto sure = [=] {
const auto finish = [=] {
if (*box) {
(*box)->closeBox();
}
};
const auto sure = [=](Fn<void()> &&close) {
peer->session().api().inviteLinks().destroy(
peer,
admin,
link,
finish);
std::move(close));
};
*box = Ui::show(
Box<Ui::ConfirmBox>(tr::lng_group_invite_delete_sure(tr::now), sure),
Ui::show(
Ui::MakeConfirmBox({
tr::lng_group_invite_delete_sure(),
sure
}),
Ui::LayerOption::KeepOther);
}

View File

@ -208,22 +208,17 @@ private:
void DeleteAllRevoked(
not_null<PeerData*> peer,
not_null<UserData*> admin) {
const auto box = std::make_shared<QPointer<Ui::ConfirmBox>>();
const auto sure = [=] {
const auto finish = [=] {
if (*box) {
(*box)->closeBox();
}
};
const auto sure = [=](Fn<void()> &&close) {
peer->session().api().inviteLinks().destroyAllRevoked(
peer,
admin,
finish);
std::move(close));
};
*box = Ui::show(
Box<Ui::ConfirmBox>(
tr::lng_group_invite_delete_all_sure(tr::now),
sure),
Ui::show(
Ui::MakeConfirmBox({
tr::lng_group_invite_delete_all_sure(),
sure
}),
Ui::LayerOption::KeepOther);
}

View File

@ -56,12 +56,16 @@ void ShowPhoneBannedError(
}
};
*box = controller->show(
Box<Ui::ConfirmBox>(
tr::lng_signin_banned_text(tr::now),
tr::lng_box_ok(tr::now),
tr::lng_signin_banned_help(tr::now),
close,
[=] { SendToBannedHelp(phone); close(); }),
Ui::MakeConfirmBox({
.text = tr::lng_signin_banned_text(),
.cancelled = [=](Fn<void()> &&close) {
SendToBannedHelp(phone);
close();
},
.confirmText = tr::lng_box_ok(),
.cancelText = tr::lng_signin_banned_help(),
.strictCancel = true,
}),
Ui::LayerOption::CloseOther);
}

View File

@ -636,7 +636,7 @@ private:
Full _data;
object_ptr<Inner> _inner;
QPointer<Ui::ConfirmBox> _terminateBox;
QPointer<Ui::BoxContent> _terminateBox;
base::Timer _shortPollTimer;
@ -823,11 +823,12 @@ void SessionsContent::terminate(Fn<void()> terminateRequest, QString message) {
}
terminateRequest();
});
auto box = Box<Ui::ConfirmBox>(
message,
tr::lng_settings_reset_button(tr::now),
st::attentionBoxButton,
callback);
auto box = Ui::MakeConfirmBox({
.text = message,
.confirmed = callback,
.confirmText = tr::lng_settings_reset_button(),
.confirmStyle = &st::attentionBoxButton,
});
_terminateBox = Ui::MakeWeak(box.data());
_controller->show(std::move(box), Ui::LayerOption::KeepOther);
}

View File

@ -1257,7 +1257,7 @@ void ShareGameScoreByHash(
auto hashEncrypted = QByteArray::fromBase64(hash.toLatin1(), QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals);
if (hashEncrypted.size() <= key128Size || (hashEncrypted.size() != key128Size + 0x20)) {
controller->show(
Box<Ui::InformBox>(tr::lng_confirm_phone_link_invalid(tr::now)),
Ui::MakeInformBox(tr::lng_confirm_phone_link_invalid()),
Ui::LayerOption::CloseOther);
return;
}
@ -1285,7 +1285,7 @@ void ShareGameScoreByHash(
// Check 128 bits of SHA1() of data.
if (memcmp(dataSha1, hashEncrypted.constData(), key128Size) != 0) {
controller->show(
Box<Ui::InformBox>(tr::lng_share_wrong_user(tr::now)),
Ui::MakeInformBox(tr::lng_share_wrong_user()),
Ui::LayerOption::CloseOther);
return;
}
@ -1293,7 +1293,7 @@ void ShareGameScoreByHash(
auto hashDataInts = reinterpret_cast<uint64*>(hashData.data());
if (hashDataInts[0] != session.userId().bare) {
controller->show(
Box<Ui::InformBox>(tr::lng_share_wrong_user(tr::now)),
Ui::MakeInformBox(tr::lng_share_wrong_user()),
Ui::LayerOption::CloseOther);
return;
}
@ -1303,7 +1303,7 @@ void ShareGameScoreByHash(
if (!peerIsChannel(peerId) && channelAccessHash) {
// If there is no channel id, there should be no channel access_hash.
controller->show(
Box<Ui::InformBox>(tr::lng_share_wrong_user(tr::now)),
Ui::MakeInformBox(tr::lng_share_wrong_user()),
Ui::LayerOption::CloseOther);
return;
}
@ -1323,7 +1323,7 @@ void ShareGameScoreByHash(
FastShareMessage(item);
} else {
weak->show(
Box<Ui::InformBox>(tr::lng_edit_deleted(tr::now)),
Ui::MakeInformBox(tr::lng_edit_deleted()),
Ui::LayerOption::CloseOther);
}
});

View File

@ -288,7 +288,7 @@ void StickerSetBox::handleError(Error error) {
switch (error) {
case Error::NotFound:
_controller->show(
Box<Ui::InformBox>(tr::lng_stickers_not_found(tr::now)));
Ui::MakeInformBox(tr::lng_stickers_not_found(tr::now)));
break;
default: Unexpected("Error in StickerSetBox::handleError.");
}

View File

@ -16,7 +16,6 @@ class SessionController;
} // namespace Window
namespace Ui {
class ConfirmBox;
class PlainShadow;
} // namespace Ui

View File

@ -19,7 +19,6 @@ struct RippleAnimation;
} // namespace style
namespace Ui {
class ConfirmBox;
class PlainShadow;
class RippleAnimation;
class SettingsSlider;

View File

@ -1234,7 +1234,7 @@ void Call::handleRequestError(const QString &error) {
? Lang::Hard::CallErrorIncompatible().replace("{user}", _user->name)
: QString();
if (!inform.isEmpty()) {
Ui::show(Box<Ui::InformBox>(inform));
Ui::show(Ui::MakeInformBox(inform));
}
finish(FinishType::Failed);
}
@ -1246,7 +1246,7 @@ void Call::handleControllerError(const QString &error) {
? tr::lng_call_error_audio_io(tr::now)
: QString();
if (!inform.isEmpty()) {
Ui::show(Box<Ui::InformBox>(inform));
Ui::show(Ui::MakeInformBox(inform));
}
finish(FinishType::Failed);
}

View File

@ -191,7 +191,7 @@ void Instance::startOutgoingCall(not_null<UserData*> user, bool video) {
if (user->callsStatus() == UserData::CallsStatus::Private) {
// Request full user once more to refresh the setting in case it was changed.
user->session().api().requestFullPeer(user);
Ui::show(Box<Ui::InformBox>(
Ui::show(Ui::MakeInformBox(
tr::lng_call_error_not_available(tr::now, lt_user, user->name)));
return;
}
@ -714,13 +714,14 @@ void Instance::requestPermissionOrFail(Platform::PermissionType type, Fn<void()>
if (inGroupCall()) {
_currentGroupCall->hangup();
}
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_no_mic_permission(tr::now),
tr::lng_menu_settings(tr::now),
crl::guard(this, [=] {
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_no_mic_permission(),
.confirmed = crl::guard(this, [=] {
Platform::OpenSystemSettingsForPermission(type);
Ui::hideLayer();
})));
}),
.confirmText = tr::lng_menu_settings(),
}));
}
}

View File

@ -143,15 +143,18 @@ void StartWithBox(
}, box->lifetime());
streamKeyButton->addClickHandler([=] {
if (!state->warned && state->hidden.current()) {
showBox(Box<Ui::ConfirmBox>(
tr::lng_group_call_rtmp_key_warn(tr::now),
tr::lng_from_request_understand(tr::now),
tr::lng_close(tr::now),
[=](Fn<void()> &&close) {
showBox(Ui::MakeConfirmBox({
.text = tr::lng_group_call_rtmp_key_warning(
Ui::Text::RichLangValue),
.confirmed = [=](Fn<void()> &&close) {
state->warned = true;
state->hidden = !state->hidden.current();
close();
}));
},
.confirmText = tr::lng_from_request_understand(),
.cancelText = tr::lng_close(),
.confirmStyle = &st::attentionBoxButton,
}));
} else {
state->hidden = !state->hidden.current();
}
@ -269,13 +272,14 @@ void StartRtmpProcess::createBox() {
};
auto revoke = [=] {
const auto guard = base::make_weak(&_request->guard);
_request->showBox(Box<Ui::ConfirmBox>(
tr::lng_group_call_rtmp_revoke_sure(tr::now),
tr::lng_group_invite_context_revoke(tr::now),
crl::guard(guard, [=](Fn<void()> &&close) {
_request->showBox(Ui::MakeConfirmBox({
.text = tr::lng_group_call_rtmp_revoke_sure(),
.confirmed = crl::guard(guard, [=](Fn<void()> &&close) {
requestUrl(true);
close();
})));
}),
.confirmText = tr::lng_group_invite_context_revoke(),
}));
};
auto object = Box(
StartWithBox,

View File

@ -3512,9 +3512,9 @@ void StickersListWidget::removeMegagroupSet(bool locally) {
return;
}
_removingSetId = Data::Stickers::MegagroupSetId;
controller()->show(Box<Ui::ConfirmBox>(
tr::lng_stickers_remove_group_set(tr::now),
crl::guard(this, [this, group = _megagroupSet] {
controller()->show(Ui::MakeConfirmBox({
.text = tr::lng_stickers_remove_group_set(),
.confirmed = crl::guard(this, [this, group = _megagroupSet] {
Expects(group->mgInfo != nullptr);
if (group->mgInfo->stickerSet) {
@ -3523,10 +3523,12 @@ void StickersListWidget::removeMegagroupSet(bool locally) {
Ui::hideLayer();
_removingSetId = 0;
_checkForHide.fire({});
}), crl::guard(this, [this] {
}),
.cancelled = crl::guard(this, [this] {
_removingSetId = 0;
_checkForHide.fire({});
})));
}),
}));
}
void StickersListWidget::removeSet(uint64 setId) {
@ -3541,67 +3543,70 @@ void StickersListWidget::removeSet(uint64 setId) {
tr::now,
lt_sticker_pack,
set->title);
const auto confirm = tr::lng_stickers_remove_pack_confirm(tr::now);
controller()->show(Box<Ui::ConfirmBox>(text, confirm, crl::guard(this, [=](
Fn<void()> &&close) {
close();
const auto &sets = session().data().stickers().sets();
const auto it = sets.find(_removingSetId);
if (it != sets.cend()) {
const auto set = it->second.get();
if (set->id && set->accessHash) {
_api.request(MTPmessages_UninstallStickerSet(
MTP_inputStickerSetID(
MTP_long(set->id),
MTP_long(set->accessHash)))
).send();
} else if (!set->shortName.isEmpty()) {
_api.request(MTPmessages_UninstallStickerSet(
MTP_inputStickerSetShortName(
MTP_string(set->shortName)))
).send();
}
auto writeRecent = false;
auto &recent = session().data().stickers().getRecentPack();
for (auto i = recent.begin(); i != recent.cend();) {
if (set->stickers.indexOf(i->first) >= 0) {
i = recent.erase(i);
writeRecent = true;
} else {
++i;
controller()->show(Ui::MakeConfirmBox({
.text = text,
.confirmed = crl::guard(this, [=](Fn<void()> &&close) {
close();
const auto &sets = session().data().stickers().sets();
const auto it = sets.find(_removingSetId);
if (it != sets.cend()) {
const auto set = it->second.get();
if (set->id && set->accessHash) {
_api.request(MTPmessages_UninstallStickerSet(
MTP_inputStickerSetID(
MTP_long(set->id),
MTP_long(set->accessHash)))
).send();
} else if (!set->shortName.isEmpty()) {
_api.request(MTPmessages_UninstallStickerSet(
MTP_inputStickerSetShortName(
MTP_string(set->shortName)))
).send();
}
auto writeRecent = false;
auto &recent = session().data().stickers().getRecentPack();
for (auto i = recent.begin(); i != recent.cend();) {
if (set->stickers.indexOf(i->first) >= 0) {
i = recent.erase(i);
writeRecent = true;
} else {
++i;
}
}
set->flags &= ~SetFlag::Installed;
set->installDate = TimeId(0);
//
// Set can be in search results.
//
//if (!(set->flags & SetFlag::Featured)
// && !(set->flags & SetFlag::Special)) {
// sets.erase(it);
//}
const auto removeIndex = defaultSetsOrder().indexOf(
_removingSetId);
if (removeIndex >= 0) {
defaultSetsOrderRef().removeAt(removeIndex);
}
refreshStickers();
if (set->flags & SetFlag::Masks) {
session().local().writeInstalledMasks();
} else {
session().local().writeInstalledStickers();
}
if (writeRecent) {
session().saveSettings();
}
session().data().stickers().notifyUpdated();
}
set->flags &= ~SetFlag::Installed;
set->installDate = TimeId(0);
//
// Set can be in search results.
//
//if (!(set->flags & SetFlag::Featured)
// && !(set->flags & SetFlag::Special)) {
// sets.erase(it);
//}
const auto removeIndex = defaultSetsOrder().indexOf(
_removingSetId);
if (removeIndex >= 0) {
defaultSetsOrderRef().removeAt(removeIndex);
}
refreshStickers();
if (set->flags & SetFlag::Masks) {
session().local().writeInstalledMasks();
} else {
session().local().writeInstalledStickers();
}
if (writeRecent) {
session().saveSettings();
}
session().data().stickers().notifyUpdated();
}
_removingSetId = 0;
_checkForHide.fire({});
}), crl::guard(this, [=] {
_removingSetId = 0;
_checkForHide.fire({});
})), Ui::LayerOption::KeepOther);
_removingSetId = 0;
_checkForHide.fire({});
}),
.cancelled = crl::guard(this, [=] {
_removingSetId = 0;
_checkForHide.fire({});
}),
.confirmText = tr::lng_stickers_remove_pack_confirm(),
}), Ui::LayerOption::KeepOther);
}
const Data::StickersSetsOrder &StickersListWidget::defaultSetsOrder() const {

View File

@ -352,15 +352,17 @@ void Application::showOpenGLCrashNotification() {
Core::App().settings().setDisableOpenGL(true);
Local::writeSettings();
};
_primaryWindow->show(Box<Ui::ConfirmBox>(
_primaryWindow->show(Ui::MakeConfirmBox({
.text = ""
"There may be a problem with your graphics drivers and OpenGL. "
"Try updating your drivers.\n\n"
"OpenGL has been disabled. You can try to enable it again "
"or keep it disabled if crashes continue.",
"Enable",
"Keep Disabled",
enable,
keepDisabled));
.confirmed = enable,
.cancelled = keepDisabled,
.confirmText = "Enable",
.cancelText = "Keep Disabled",
}));
}
void Application::startDomain() {
@ -547,9 +549,12 @@ void Application::badMtprotoConfigurationError() {
settings().proxy().selected(),
MTP::ProxyData::Settings::System);
};
_badProxyDisableBox = Ui::show(Box<Ui::InformBox>(
Lang::Hard::ProxyConfigError(),
disableCallback));
_badProxyDisableBox = Ui::show(
Ui::MakeInformBox(Lang::Hard::ProxyConfigError()));
_badProxyDisableBox->boxClosing(
) | rpl::start_with_next(
disableCallback,
_badProxyDisableBox->lifetime());
}
}
@ -664,9 +669,11 @@ void Application::logoutWithChecks(Main::Account *account) {
void Application::forceLogOut(
not_null<Main::Account*> account,
const TextWithEntities &explanation) {
const auto box = Ui::show(Box<Ui::InformBox>(
explanation,
tr::lng_passcode_logout(tr::now)));
const auto box = Ui::show(Ui::MakeConfirmBox({
.text = explanation,
.confirmText = tr::lng_passcode_logout(tr::now),
.inform = true,
}));
box->setCloseByEscape(false);
box->setCloseByOutsideClick(false);
const auto weak = base::make_weak(account.get());

View File

@ -117,12 +117,13 @@ void HiddenUrlClickHandler::Open(QString url, QVariant context) {
? QString::fromUtf8(parsedUrl.toEncoded())
: ShowEncoded(displayed);
Ui::show(
Box<Ui::ConfirmBox>(
(tr::lng_open_this_link(tr::now)
Ui::MakeConfirmBox({
.text = (tr::lng_open_this_link(tr::now)
+ qsl("\n\n")
+ displayUrl),
tr::lng_open_link(tr::now),
[=] { Ui::hideLayer(); open(); }),
.confirmed = [=] { Ui::hideLayer(); open(); },
.confirmText = tr::lng_open_link(),
}),
Ui::LayerOption::KeepOther);
} else {
open();
@ -151,10 +152,11 @@ void BotGameUrlClickHandler::onClick(ClickContext context) const {
bot->session().local().markBotTrustedOpenGame(bot->id);
open();
};
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_allow_bot_pass(tr::now, lt_bot_name, _bot->name),
tr::lng_allow_bot(tr::now),
callback));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_allow_bot_pass(tr::now, lt_bot_name, _bot->name),
.confirmed = callback,
.confirmText = tr::lng_allow_bot(),
}));
}
}

View File

@ -412,12 +412,13 @@ bool HandleUnknown(
Core::UpdateApplication();
close();
};
controller->show(Box<Ui::ConfirmBox>(
text,
tr::lng_menu_update(tr::now),
callback));
controller->show(Ui::MakeConfirmBox({
.text = text,
.confirmed = callback,
.confirmText = tr::lng_menu_update(),
}));
} else {
controller->show(Box<Ui::InformBox>(text));
controller->show(Ui::MakeInformBox(text));
}
});
controller->session().api().requestDeepLinkInfo(request, callback);

View File

@ -224,8 +224,7 @@ void CloudThemes::resolve(
showPreview(controller, result);
}).fail([=](const MTP::Error &error) {
if (error.type() == qstr("THEME_FORMAT_INVALID")) {
controller->show(Box<Ui::InformBox>(
tr::lng_theme_no_desktop(tr::now)));
controller->show(Ui::MakeInformBox(tr::lng_theme_no_desktop()));
}
}).send();
}
@ -249,8 +248,7 @@ void CloudThemes::showPreview(
controller,
cloud));
} else {
controller->show(Box<Ui::InformBox>(
tr::lng_theme_no_desktop(tr::now)));
controller->show(Ui::MakeInformBox(tr::lng_theme_no_desktop()));
}
}

View File

@ -934,9 +934,10 @@ void DocumentData::handleLoaderUpdates() {
Ui::hideLayer();
save(origin, failedFileName);
};
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_download_finish_failed(tr::now),
crl::guard(&session(), retry)));
Ui::show(Ui::MakeConfirmBox({
tr::lng_download_finish_failed(),
crl::guard(&session(), retry)
}));
} else {
// Sometimes we have LOCATION_INVALID error in documents / stickers.
// Sometimes FILE_REFERENCE_EXPIRED could not be handled.

View File

@ -402,7 +402,7 @@ void Stickers::undoInstallLocally(uint64 setId) {
notifyUpdated();
Ui::show(
Box<Ui::InformBox>(tr::lng_stickers_not_found(tr::now)),
Ui::MakeInformBox(tr::lng_stickers_not_found()),
Ui::LayerOption::KeepOther);
}

View File

@ -195,7 +195,7 @@ void Paint::handleMimeData(const QMimeData *data) {
}
if (!Ui::ValidateThumbDimensions(image.width(), image.height())) {
_controllers->showBox(
Box<Ui::InformBox>(tr::lng_edit_media_invalid_file(tr::now)));
Ui::MakeInformBox(tr::lng_edit_media_invalid_file()));
return;
}

View File

@ -87,7 +87,7 @@ void PrepareProfilePhoto(
if (image.isNull()
|| (image.width() > (10 * image.height()))
|| (image.height() > (10 * image.width()))) {
controller->show(Box<Ui::InformBox>(tr::lng_bad_photo(tr::now)));
controller->show(Ui::MakeInformBox(tr::lng_bad_photo()));
return;
}
image = resizeToMinSize(

View File

@ -273,7 +273,7 @@ void PanelController::showCriticalError(const QString &text) {
}
void PanelController::showError(const QString &text) {
auto box = Box<Ui::InformBox>(text);
auto box = Ui::MakeInformBox(text);
const auto weak = Ui::MakeWeak(box.data());
const auto hidden = _panel->isHidden();
_panel->showBox(
@ -349,11 +349,12 @@ void PanelController::stopWithConfirmation(Fn<void()> callback) {
};
const auto hidden = _panel->isHidden();
const auto old = _confirmStopBox;
auto box = Box<Ui::ConfirmBox>(
tr::lng_export_sure_stop(tr::now),
tr::lng_export_stop(tr::now),
st::attentionBoxButton,
std::move(stop));
auto box = Ui::MakeConfirmBox({
.text = tr::lng_export_sure_stop(),
.confirmed = std::move(stop),
.confirmText = tr::lng_export_stop(),
.confirmStyle = &st::attentionBoxButton,
});
_confirmStopBox = box.data();
_panel->showBox(
std::move(box),

View File

@ -140,18 +140,16 @@ void activateBotCommand(
case ButtonType::RequestLocation: {
hideSingleUseKeyboard(msg);
Ui::show(Box<Ui::InformBox>(
tr::lng_bot_share_location_unavailable(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_bot_share_location_unavailable()));
} break;
case ButtonType::RequestPhone: {
hideSingleUseKeyboard(msg);
const auto msgId = msg->id;
const auto history = msg->history();
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_bot_share_phone(tr::now),
tr::lng_bot_share_phone_confirm(tr::now),
[=] {
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_bot_share_phone(),
.confirmed = [=] {
Ui::showPeerHistory(history, ShowAtTheEndMsgId);
auto action = Api::SendAction(history);
action.clearDraft = false;
@ -159,7 +157,9 @@ void activateBotCommand(
history->session().api().shareContact(
history->session().user(),
action);
}));
},
.confirmText = tr::lng_bot_share_phone_confirm(),
}));
} break;
case ButtonType::RequestPoll: {

View File

@ -1431,7 +1431,7 @@ void InnerWidget::suggestRestrictParticipant(
(*weakBox)->closeBox();
}
});
*weakBox = _controller->show(Box<Ui::ConfirmBox>(text, sure));
*weakBox = _controller->show(Ui::MakeConfirmBox({ text, sure }));
} else if (base::contains(_admins, user)) {
editRestrictions(true, ChatRestrictionsInfo());
} else {

View File

@ -328,9 +328,9 @@ Widget::Widget(
}, lifetime());
_whatIsThis->setClickedCallback([=] {
controller->show(Box<Ui::InformBox>(channel->isMegagroup()
? tr::lng_admin_log_about_text(tr::now)
: tr::lng_admin_log_about_text_channel(tr::now)));
controller->show(Ui::MakeInformBox(channel->isMegagroup()
? tr::lng_admin_log_about_text()
: tr::lng_admin_log_about_text_channel()));
});
setupShortcuts();

View File

@ -278,7 +278,7 @@ void FastShareMessage(not_null<HistoryItem*> item) {
}
text.append(error.first);
Ui::show(
Box<Ui::InformBox>(text),
Ui::MakeInformBox(text),
Ui::LayerOption::KeepOther);
return;
}

View File

@ -707,7 +707,7 @@ HistoryWidget::HistoryWidget(
const auto unavailable = _peer->computeUnavailableReason();
if (!unavailable.isEmpty()) {
controller->showBackFromStack();
controller->show(Box<Ui::InformBox>(unavailable));
controller->show(Ui::MakeInformBox(unavailable));
return;
}
}
@ -896,7 +896,7 @@ void HistoryWidget::initVoiceRecordBar() {
? Data::RestrictionError(_peer, ChatRestriction::SendMedia)
: std::nullopt;
if (error) {
controller()->show(Box<Ui::InformBox>(*error));
controller()->show(Ui::MakeInformBox(*error));
return true;
} else if (showSlowmodeError()) {
return true;
@ -3528,8 +3528,7 @@ void HistoryWidget::saveEditMsg() {
Box<DeleteMessagesBox>(item, suggestModerateActions));
return;
} else if (!left.text.isEmpty()) {
controller()->show(Box<Ui::InformBox>(
tr::lng_edit_too_long(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_too_long()));
return;
}
@ -3563,16 +3562,14 @@ void HistoryWidget::saveEditMsg() {
}
const auto &err = error.type();
if (ranges::contains(Api::kDefaultEditMessagesErrors, err)) {
controller()->show(
Box<Ui::InformBox>(tr::lng_edit_error(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_error()));
} else if (err == u"MESSAGE_NOT_MODIFIED"_q) {
cancelEdit();
} else if (err == u"MESSAGE_EMPTY"_q) {
_field->selectAll();
_field->setFocus();
} else {
controller()->show(
Box<Ui::InformBox>(tr::lng_edit_error(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_error()));
}
update();
})();
@ -3964,8 +3961,7 @@ void HistoryWidget::cornerButtonsAnimationFinish() {
void HistoryWidget::chooseAttach() {
if (_editMsgId) {
controller()->show(
Box<Ui::InformBox>(tr::lng_edit_caption_attach(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_caption_attach()));
return;
}
@ -4793,8 +4789,7 @@ bool HistoryWidget::confirmSendingFiles(
return false;
}
if (_editMsgId) {
controller()->show(
Box<Ui::InformBox>(tr::lng_edit_caption_attach(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_caption_attach()));
return false;
}
@ -6047,7 +6042,7 @@ void HistoryWidget::sendInlineResult(InlineBots::ResultSelected result) {
auto errorText = result.result->getErrorOnSend(_history);
if (!errorText.isEmpty()) {
controller()->show(Box<Ui::InformBox>(errorText));
controller()->show(Ui::MakeInformBox(errorText));
return;
}
@ -6433,7 +6428,7 @@ bool HistoryWidget::sendExistingDocument(
: std::nullopt;
if (error) {
controller()->show(
Box<Ui::InformBox>(*error),
Ui::MakeInformBox(*error),
Ui::LayerOption::KeepOther);
return false;
} else if (!_peer || !_peer->canWrite()) {
@ -6469,7 +6464,7 @@ bool HistoryWidget::sendExistingPhoto(
: std::nullopt;
if (error) {
controller()->show(
Box<Ui::InformBox>(*error),
Ui::MakeInformBox(*error),
Ui::LayerOption::KeepOther);
return false;
} else if (!_peer || !_peer->canWrite()) {
@ -6552,19 +6547,19 @@ void HistoryWidget::replyToMessage(not_null<HistoryItem*> item) {
return;
} else if (item->history() == _migrated) {
if (item->isService()) {
controller()->show(Box<Ui::InformBox>(
tr::lng_reply_cant(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_reply_cant()));
} else {
const auto itemId = item->fullId();
controller()->show(
Box<Ui::ConfirmBox>(
tr::lng_reply_cant_forward(tr::now),
tr::lng_selected_forward(tr::now),
crl::guard(this, [=] {
Ui::MakeConfirmBox({
.text = tr::lng_reply_cant_forward(),
.confirmed = crl::guard(this, [=] {
controller()->content()->setForwardDraft(
_peer->id,
{ .ids = { 1, itemId } });
})));
}),
.confirmText = tr::lng_selected_forward(),
}));
}
return;
}
@ -6615,7 +6610,7 @@ void HistoryWidget::editMessage(not_null<HistoryItem*> item) {
toggleChooseChatTheme(_peer);
} else if (_voiceRecordBar->isActive()) {
controller()->show(
Box<Ui::InformBox>(tr::lng_edit_caption_voice(tr::now)));
Ui::MakeInformBox(tr::lng_edit_caption_voice()));
return;
}
@ -7070,16 +7065,17 @@ void HistoryWidget::escape() {
} else if (_editMsgId) {
if (_replyEditMsg
&& PrepareEditText(_replyEditMsg) != _field->getTextWithTags()) {
controller()->show(Box<Ui::ConfirmBox>(
tr::lng_cancel_edit_post_sure(tr::now),
tr::lng_cancel_edit_post_yes(tr::now),
tr::lng_cancel_edit_post_no(tr::now),
crl::guard(this, [this] {
controller()->show(Ui::MakeConfirmBox({
.text = tr::lng_cancel_edit_post_sure(),
.confirmed = crl::guard(this, [this] {
if (_editMsgId) {
cancelEdit();
Ui::hideLayer();
}
})));
}),
.confirmText = tr::lng_cancel_edit_post_yes(),
.cancelText = tr::lng_cancel_edit_post_no(),
}));
} else {
cancelEdit();
}

View File

@ -811,8 +811,7 @@ rpl::producer<> ComposeControls::attachRequests() const {
_attachRequests.events()
) | rpl::filter([=] {
if (isEditingMessage()) {
_window->show(
Box<Ui::InformBox>(tr::lng_edit_caption_attach(tr::now)));
_window->show(Ui::MakeInformBox(tr::lng_edit_caption_attach()));
return false;
}
return true;
@ -1753,7 +1752,7 @@ void ComposeControls::initVoiceRecordBar() {
ChatRestriction::SendMedia)
: std::nullopt;
if (error) {
_window->show(Box<Ui::InformBox>(*error));
_window->show(Ui::MakeInformBox(*error));
return true;
} else if (_showSlowmodeError && _showSlowmodeError()) {
return true;
@ -2083,8 +2082,7 @@ void ComposeControls::editMessage(not_null<HistoryItem*> item) {
Expects(draftKeyCurrent() != Data::DraftKey::None());
if (_voiceRecordBar->isActive()) {
_window->show(Box<Ui::InformBox>(
tr::lng_edit_caption_voice(tr::now)));
_window->show(Ui::MakeInformBox(tr::lng_edit_caption_voice()));
return;
}

View File

@ -1650,13 +1650,14 @@ void VoiceRecordBar::showDiscardBox(
callback();
}
};
_controller->show(Box<Ui::ConfirmBox>(
(isListenState()
_controller->show(Ui::MakeConfirmBox({
.text = (isListenState()
? tr::lng_record_listen_cancel_sure
: tr::lng_record_lock_cancel_sure)(tr::now),
tr::lng_record_lock_discard(tr::now),
st::attentionBoxButton,
std::move(sure)));
: tr::lng_record_lock_cancel_sure)(),
.confirmed = std::move(sure),
.confirmText = tr::lng_record_lock_discard(),
.confirmStyle = &st::attentionBoxButton,
}));
_warningShown = true;
}

View File

@ -454,8 +454,8 @@ void ContactStatus::setupShareHandler(not_null<UserData*> user) {
}).send();
close();
};
_controller->window().show(Box<Ui::ConfirmBox>(
tr::lng_new_contact_share_sure(
_controller->window().show(Ui::MakeConfirmBox({
.text = tr::lng_new_contact_share_sure(
tr::now,
lt_phone,
Ui::Text::WithEntities(
@ -463,8 +463,9 @@ void ContactStatus::setupShareHandler(not_null<UserData*> user) {
lt_user,
Ui::Text::Bold(user->name),
Ui::Text::WithEntities),
tr::lng_box_ok(tr::now),
share));
.confirmed = share,
.confirmText = tr::lng_box_ok(),
}));
}, _bar.lifetime());
}
@ -509,14 +510,15 @@ void ContactStatus::setupReportHandler(not_null<PeerData*> peer) {
if (const auto user = peer->asUser()) {
peer->session().api().blockedPeers().block(user);
}
const auto text = ((peer->isChat() || peer->isMegagroup())
auto text = ((peer->isChat() || peer->isMegagroup())
? tr::lng_report_spam_sure_group
: tr::lng_report_spam_sure_channel)(tr::now);
_controller->window().show(Box<Ui::ConfirmBox>(
text,
tr::lng_report_spam_ok(tr::now),
st::attentionBoxButton,
callback));
: tr::lng_report_spam_sure_channel)();
_controller->window().show(Ui::MakeConfirmBox({
.text= std::move(text),
.confirmed = callback,
.confirmText = tr::lng_report_spam_ok(),
.confirmStyle = &st::attentionBoxButton,
}));
}, _bar.lifetime());
}

View File

@ -1036,11 +1036,12 @@ void StopPoll(not_null<Main::Session*> session, FullMsgId itemId) {
session->api().polls().close(item);
}
};
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_polls_stop_warning(tr::now),
tr::lng_polls_stop_sure(tr::now),
tr::lng_cancel(tr::now),
stop));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_polls_stop_warning(),
.confirmed = stop,
.confirmText = tr::lng_polls_stop_sure(),
.cancelText = tr::lng_cancel(),
}));
}
void AddPollActions(

View File

@ -1017,8 +1017,7 @@ void RepliesWidget::edit(
}
return;
} else if (!left.text.isEmpty()) {
controller()->show(Box<Ui::InformBox>(
tr::lng_edit_too_long(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_too_long()));
return;
}
@ -1043,15 +1042,13 @@ void RepliesWidget::edit(
const auto &err = error.type();
if (ranges::contains(Api::kDefaultEditMessagesErrors, err)) {
controller()->show(Box<Ui::InformBox>(
tr::lng_edit_error(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_error()));
} else if (err == u"MESSAGE_NOT_MODIFIED"_q) {
_composeControls->cancelEditMessage();
} else if (err == u"MESSAGE_EMPTY"_q) {
doSetInnerFocus();
} else {
controller()->show(Box<Ui::InformBox>(
tr::lng_edit_error(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_error()));
}
update();
return true;
@ -1089,7 +1086,7 @@ bool RepliesWidget::sendExistingDocument(
ChatRestriction::SendStickers);
if (error) {
controller()->show(
Box<Ui::InformBox>(*error),
Ui::MakeInformBox(*error),
Ui::LayerOption::KeepOther);
return false;
} else if (showSlowmodeError()) {
@ -1125,7 +1122,7 @@ bool RepliesWidget::sendExistingPhoto(
ChatRestriction::SendMedia);
if (error) {
controller()->show(
Box<Ui::InformBox>(*error),
Ui::MakeInformBox(*error),
Ui::LayerOption::KeepOther);
return false;
} else if (showSlowmodeError()) {
@ -1146,7 +1143,7 @@ void RepliesWidget::sendInlineResult(
not_null<UserData*> bot) {
const auto errorText = result->getErrorOnSend(_history);
if (!errorText.isEmpty()) {
controller()->show(Box<Ui::InformBox>(errorText));
controller()->show(Ui::MakeInformBox(errorText));
return;
}
sendInlineResult(result, bot, {}, std::nullopt);

View File

@ -616,8 +616,7 @@ void ScheduledWidget::edit(
}
return;
} else if (!left.text.isEmpty()) {
controller()->show(Box<Ui::InformBox>(
tr::lng_edit_too_long(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_too_long()));
return;
}
@ -642,15 +641,13 @@ void ScheduledWidget::edit(
const auto &err = error.type();
if (ranges::contains(Api::kDefaultEditMessagesErrors, err)) {
controller()->show(Box<Ui::InformBox>(
tr::lng_edit_error(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_error()));
} else if (err == u"MESSAGE_NOT_MODIFIED"_q) {
_composeControls->cancelEditMessage();
} else if (err == u"MESSAGE_EMPTY"_q) {
_composeControls->focus();
} else {
controller()->show(Box<Ui::InformBox>(
tr::lng_edit_error(tr::now)));
controller()->show(Ui::MakeInformBox(tr::lng_edit_error()));
}
update();
return true;
@ -685,7 +682,7 @@ bool ScheduledWidget::sendExistingDocument(
ChatRestriction::SendStickers);
if (error) {
controller()->show(
Box<Ui::InformBox>(*error),
Ui::MakeInformBox(*error),
Ui::LayerOption::KeepOther);
return false;
}
@ -716,7 +713,7 @@ bool ScheduledWidget::sendExistingPhoto(
ChatRestriction::SendMedia);
if (error) {
controller()->show(
Box<Ui::InformBox>(*error),
Ui::MakeInformBox(*error),
Ui::LayerOption::KeepOther);
return false;
}
@ -735,7 +732,7 @@ void ScheduledWidget::sendInlineResult(
not_null<UserData*> bot) {
const auto errorText = result->getErrorOnSend(_history);
if (!errorText.isEmpty()) {
controller()->show(Box<Ui::InformBox>(errorText));
controller()->show(Ui::MakeInformBox(errorText));
return;
}
const auto callback = [=](Api::SendOptions options) {

View File

@ -1093,11 +1093,12 @@ void ListWidget::deleteItems(SelectedItems &&items, Fn<void()> confirmed) {
confirmed();
}
};
setActionBoxWeak(window->show(Box<Ui::ConfirmBox>(
phrase,
tr::lng_box_delete(tr::now),
st::attentionBoxButton,
deleteSure)));
setActionBoxWeak(window->show(Ui::MakeConfirmBox({
.text = phrase,
.confirmed = deleteSure,
.confirmText = tr::lng_box_delete(tr::now),
.confirmStyle = &st::attentionBoxButton,
})));
} else if (auto list = collectSelectedIds(items); !list.empty()) {
auto box = Box<DeleteMessagesBox>(
&_controller->session(),

View File

@ -351,10 +351,11 @@ void CodeWidget::gotPassword(const MTPaccount_Password &result) {
Core::UpdateApplication();
close();
};
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_passport_app_out_of_date(tr::now),
tr::lng_menu_update(tr::now),
callback));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_passport_app_out_of_date(),
.confirmed = callback,
.confirmText = tr::lng_menu_update(),
}));
return;
}
goReplace<PasswordCheckWidget>(Animate::Forward);

View File

@ -311,16 +311,22 @@ void PasswordCheckWidget::toRecover() {
}).send();
}
} else {
Ui::show(Box<Ui::InformBox>(
tr::lng_signin_no_email_forgot(tr::now),
[=] { showReset(); }));
const auto box = Ui::show(
Ui::MakeInformBox(tr::lng_signin_no_email_forgot()));
box->boxClosing(
) | rpl::start_with_next([=] {
showReset();
}, box->lifetime());
}
}
void PasswordCheckWidget::toPassword() {
Ui::show(Box<Ui::InformBox>(
tr::lng_signin_cant_email_forgot(tr::now),
[=] { showReset(); }));
const auto box = Ui::show(
Ui::MakeInformBox(tr::lng_signin_cant_email_forgot()));
box->boxClosing(
) | rpl::start_with_next([=] {
showReset();
}, box->lifetime());
}
void PasswordCheckWidget::showReset() {
@ -372,10 +378,11 @@ void PasswordCheckWidget::submit() {
send();
close();
};
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_cloud_password_passport_losing(tr::now),
tr::lng_continue(tr::now),
confirmed));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_cloud_password_passport_losing(),
.confirmed = confirmed,
.confirmText = tr::lng_continue(),
}));
} else {
send();
}

View File

@ -240,7 +240,7 @@ void PhoneWidget::phoneSubmitFail(const MTP::Error &error) {
_sentRequest = 0;
auto &err = error.type();
if (err == qstr("PHONE_NUMBER_FLOOD")) {
Ui::show(Box<Ui::InformBox>(tr::lng_error_phone_flood(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_error_phone_flood()));
} else if (err == qstr("PHONE_NUMBER_INVALID")) { // show error
showPhoneError(tr::lng_bad_phone());
} else if (err == qstr("PHONE_NUMBER_BANNED")) {

View File

@ -401,10 +401,11 @@ void QrWidget::sendCheckPasswordRequest() {
Core::UpdateApplication();
close();
};
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_passport_app_out_of_date(tr::now),
tr::lng_menu_update(tr::now),
callback));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_passport_app_out_of_date(),
.confirmed = callback,
.confirmText = tr::lng_menu_update(),
}));
return;
}
goReplace<PasswordCheckWidget>(Animate::Forward);

View File

@ -130,7 +130,7 @@ void SignupWidget::nameSubmitFail(const MTP::Error &error) {
auto &err = error.type();
if (err == qstr("PHONE_NUMBER_FLOOD")) {
Ui::show(Box<Ui::InformBox>(tr::lng_error_phone_flood(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_error_phone_flood()));
} else if (err == qstr("PHONE_NUMBER_INVALID")
|| err == qstr("PHONE_NUMBER_BANNED")
|| err == qstr("PHONE_CODE_EXPIRED")

View File

@ -142,7 +142,7 @@ void Step::finish(const MTPUser &user, QImage &&photo) {
|| !user.c_user().vid().v) {
// No idea what to do here.
// We could've reset intro and MTP, but this really should not happen.
Ui::show(Box<Ui::InformBox>(
Ui::show(Ui::MakeInformBox(
"Internal error: bad user.is_self() after sign in."));
return;
}

View File

@ -237,7 +237,7 @@ void Widget::handleUpdate(const MTPUpdate &update) {
qs(data.vmessage()),
Api::EntitiesFromMTP(nullptr, data.ventities().v)
};
Ui::show(Box<Ui::InformBox>(text));
Ui::show(Ui::MakeInformBox(text));
}, [](const auto &) {});
}
@ -551,15 +551,15 @@ void Widget::resetAccount() {
lt_minutes_count,
when);
}
Ui::show(Box<Ui::InformBox>(tr::lng_signin_reset_wait(
Ui::show(Ui::MakeInformBox(tr::lng_signin_reset_wait(
tr::now,
lt_phone_number,
Ui::FormatPhone(getData()->phone),
lt_when,
when)));
} else if (type == qstr("2FA_RECENT_CONFIRM")) {
Ui::show(Box<Ui::InformBox>(
tr::lng_signin_reset_cancelled(tr::now)));
Ui::show(Ui::MakeInformBox(
tr::lng_signin_reset_cancelled()));
} else {
Ui::hideLayer();
getStep()->showError(rpl::single(Lang::Hard::ServerError()));
@ -567,11 +567,12 @@ void Widget::resetAccount() {
}).send();
});
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_signin_sure_reset(tr::now),
tr::lng_signin_reset(tr::now),
st::attentionBoxButton,
callback));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_signin_sure_reset(),
.confirmed = callback,
.confirmText = tr::lng_signin_reset(),
.confirmStyle = &st::attentionBoxButton,
}));
}
void Widget::getNearestDC() {

View File

@ -367,14 +367,14 @@ bool CloudManager::showOfferSwitchBox() {
Local::writeLangPack();
};
Ui::show(
Box<Ui::ConfirmBox>(
"Do you want to switch your language to "
Ui::MakeConfirmBox({
.text = QString("Do you want to switch your language to ")
+ language.nativeName
+ "? You can always change your language in Settings.",
"Change",
tr::lng_cancel(tr::now),
confirm,
cancel),
+ QString("? You can always change your language in Settings."),
.confirmed = confirm,
.cancelled = cancel,
.confirmText = QString("Change"),
}),
Ui::LayerOption::KeepOther);
return true;
}
@ -419,7 +419,7 @@ void CloudManager::requestLanguageAndSwitch(
Expects(!id.isEmpty());
if (LanguageIdOrDefault(_langpack.id()) == id) {
Ui::show(Box<Ui::InformBox>(tr::lng_language_already(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_language_already()));
return;
} else if (id == qstr("#custom")) {
performSwitchToCustom();
@ -464,7 +464,7 @@ void CloudManager::sendSwitchingToLanguageRequest() {
}).fail([=](const MTP::Error &error) {
_switchingToLanguageRequest = 0;
if (error.type() == "LANG_CODE_NOT_SUPPORTED") {
Ui::show(Box<Ui::InformBox>(tr::lng_language_not_found(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_language_not_found()));
}
}).send();
}
@ -502,11 +502,11 @@ void CloudManager::switchToLanguage(const Language &data) {
+ "\n\n"
+ getValue(tr::lng_sure_save_language.base);
Ui::show(
Box<Ui::ConfirmBox>(
text,
tr::lng_box_ok(tr::now),
tr::lng_cancel(tr::now),
[=] { performSwitchAndRestart(data); }),
Ui::MakeConfirmBox({
.text = text,
.confirmed = [=] { performSwitchAndRestart(data); },
.confirmText = tr::lng_box_ok(),
}),
Ui::LayerOption::KeepOther);
}).fail([=] {
_getKeysForSwitchRequestId = 0;
@ -550,16 +550,16 @@ void CloudManager::performSwitchToCustom() {
Core::Restart();
};
Ui::show(
Box<Ui::ConfirmBox>(
text,
tr::lng_box_ok(tr::now),
tr::lng_cancel(tr::now),
change),
Ui::MakeConfirmBox({
.text = text,
.confirmed = change,
.confirmText = tr::lng_box_ok(),
}),
Ui::LayerOption::KeepOther);
}
} else {
Ui::show(
Box<Ui::InformBox>(
Ui::MakeInformBox(
"Custom lang failed :(\n\nError: " + loader.errors()),
Ui::LayerOption::KeepOther);
}

View File

@ -504,7 +504,7 @@ bool MainWidget::setForwardDraft(PeerId peerId, Data::ForwardDraft &&draft) {
session().data().idsToItems(draft.ids),
true);
if (!error.isEmpty()) {
Ui::show(Box<Ui::InformBox>(error), Ui::LayerOption::KeepOther);
Ui::show(Ui::MakeInformBox(error), Ui::LayerOption::KeepOther);
return false;
}
@ -525,7 +525,7 @@ bool MainWidget::shareUrl(
const auto peer = session().data().peer(peerId);
if (!peer->canWrite()) {
Ui::show(Box<Ui::InformBox>(tr::lng_share_cant(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_share_cant()));
return false;
}
TextWithTags textWithTags = {
@ -555,7 +555,7 @@ bool MainWidget::inlineSwitchChosen(PeerId peerId, const QString &botAndQuery) {
const auto peer = session().data().peer(peerId);
if (!peer->canWrite()) {
Ui::show(Box<Ui::InformBox>(tr::lng_inline_switch_cant(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_inline_switch_cant()));
return false;
}
const auto h = peer->owner().history(peer);
@ -578,13 +578,12 @@ bool MainWidget::sendPaths(PeerId peerId) {
auto peer = session().data().peer(peerId);
if (!peer->canWrite()) {
Ui::show(Box<Ui::InformBox>(
tr::lng_forward_send_files_cant(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_forward_send_files_cant()));
return false;
} else if (const auto error = Data::RestrictionError(
peer,
ChatRestriction::SendMedia)) {
Ui::show(Box<Ui::InformBox>(*error));
Ui::show(Ui::MakeInformBox(*error));
return false;
}
Ui::showPeerHistory(peer, ShowAtTheEndMsgId);
@ -610,8 +609,7 @@ void MainWidget::onFilesOrForwardDrop(
} else {
auto peer = session().data().peer(peerId);
if (!peer->canWrite()) {
Ui::show(Box<Ui::InformBox>(
tr::lng_forward_send_files_cant(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_forward_send_files_cant()));
return;
}
Ui::showPeerHistory(peer, ShowAtTheEndMsgId);
@ -1302,7 +1300,7 @@ void MainWidget::ui_showPeerHistory(
const auto unavailable = peer->computeUnavailableReason();
if (!unavailable.isEmpty()) {
if (params.activation != anim::activation::background) {
controller()->show(Box<Ui::InformBox>(unavailable));
controller()->show(Ui::MakeInformBox(unavailable));
}
return;
}
@ -2046,7 +2044,7 @@ void MainWidget::hideAll() {
void MainWidget::showAll() {
if (cPasswordRecovered()) {
cSetPasswordRecovered(false);
Ui::show(Box<Ui::InformBox>(tr::lng_cloud_password_updated(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_cloud_password_updated()));
}
if (isOneColumn()) {
if (_sideShadow) {
@ -2643,7 +2641,7 @@ void MainWidget::activate() {
_controller,
path.mid(interpret.size()));
if (!error.isEmpty()) {
Ui::show(Box<Ui::InformBox>(error));
Ui::show(Ui::MakeInformBox(error));
}
} else {
showSendPathsLayer();

View File

@ -743,7 +743,7 @@ bool MainWindow::skipTrayClick() const {
void MainWindow::toggleDisplayNotifyFromTray() {
if (controller().locked()) {
if (!isActive()) showFromTray();
Ui::show(Box<Ui::InformBox>(tr::lng_passcode_need_unblock(tr::now)));
Ui::show(Ui::MakeInformBox(tr::lng_passcode_need_unblock()));
return;
}
if (!sessionController()) {

View File

@ -1815,13 +1815,14 @@ void OverlayWidget::deleteMedia() {
if (deletingPeerPhoto) {
if (photo) {
window->show(
Box<Ui::ConfirmBox>(
tr::lng_delete_photo_sure(tr::now),
tr::lng_box_delete(tr::now),
crl::guard(_widget, [=] {
Ui::MakeConfirmBox({
.text = tr::lng_delete_photo_sure(),
.confirmed = crl::guard(_widget, [=] {
session->api().peerPhoto().clear(photo);
Ui::hideLayer();
})),
}),
.confirmText = tr::lng_box_delete(),
}),
Ui::LayerOption::CloseOther);
}
} else if (message) {

View File

@ -765,7 +765,7 @@ std::vector<not_null<const Value*>> FormController::submitGetErrors() {
} else if (AcceptErrorRequiresRestart(error.type())) {
suggestRestart();
} else {
_view->show(Box<Ui::InformBox>(
_view->show(Ui::MakeInformBox(
Lang::Hard::SecureAcceptError() + "\n" + error.type()));
}
}).send();
@ -974,8 +974,7 @@ void FormController::checkSavedPasswordSettings(
void FormController::recoverPassword() {
if (!_password.hasRecovery) {
_view->show(Box<Ui::InformBox>(
tr::lng_signin_no_email_forgot(tr::now)));
_view->show(Ui::MakeInformBox(tr::lng_signin_no_email_forgot()));
return;
} else if (_recoverRequestId) {
return;
@ -1015,7 +1014,7 @@ void FormController::recoverPassword() {
}, box->lifetime());
}).fail([=](const MTP::Error &error) {
_recoverRequestId = 0;
_view->show(Box<Ui::InformBox>(Lang::Hard::ServerError()
_view->show(Ui::MakeInformBox(Lang::Hard::ServerError()
+ '\n'
+ error.type()));
}).send();
@ -2245,7 +2244,7 @@ void FormController::requestPhoneCall(not_null<Value*> value) {
void FormController::valueSaveShowError(
not_null<Value*> value,
const MTP::Error &error) {
_view->show(Box<Ui::InformBox>(
_view->show(Ui::MakeInformBox(
Lang::Hard::SecureSaveError() + "\n" + error.type()));
valueSaveFailed(value);
}
@ -2320,11 +2319,12 @@ void FormController::saveSecret(
void FormController::suggestRestart() {
_suggestingRestart = true;
_view->show(Box<Ui::ConfirmBox>(
tr::lng_passport_restart_sure(tr::now),
tr::lng_passport_restart(tr::now),
[=] { _controller->showPassportForm(_request); },
[=] { cancel(); }));
_view->show(Ui::MakeConfirmBox({
.text = tr::lng_passport_restart_sure(),
.confirmed = [=] { _controller->showPassportForm(_request); },
.cancelled = [=] { cancel(); },
.confirmText = tr::lng_passport_restart(),
}));
}
void FormController::requestForm() {
@ -2684,11 +2684,12 @@ bool FormController::applyPassword(PasswordSettings &&settings) {
void FormController::cancel() {
if (!_submitSuccess && _serviceErrorText.isEmpty()) {
_view->show(Box<Ui::ConfirmBox>(
tr::lng_passport_stop_sure(tr::now),
tr::lng_passport_stop(tr::now),
[=] { cancelSure(); },
[=] { cancelAbort(); }));
_view->show(Ui::MakeConfirmBox({
.text = tr::lng_passport_stop_sure(),
.confirmed = [=] { cancelSure(); },
.cancelled = [=] { cancelAbort(); },
.confirmText = tr::lng_passport_stop(),
}));
} else {
cancelSure();
}

View File

@ -710,10 +710,14 @@ void PanelController::setupPassword() {
}
void PanelController::cancelPasswordSubmit() {
show(Box<Ui::ConfirmBox>(
tr::lng_passport_stop_password_sure(tr::now),
tr::lng_passport_stop(tr::now),
[=](Fn<void()> &&close) { close(); _form->cancelPassword(); }));
show(Ui::MakeConfirmBox({
.text = tr::lng_passport_stop_password_sure(),
.confirmed = [=](Fn<void()> &&close) {
close();
_form->cancelPassword();
},
.confirmText = tr::lng_passport_stop(),
}));
}
void PanelController::validateRecoveryEmail() {
@ -887,20 +891,22 @@ void PanelController::deleteValueSure(bool withDetails) {
}
void PanelController::suggestReset(Fn<void()> callback) {
_resetBox = Ui::BoxPointer(show(Box<Ui::ConfirmBox>(
Lang::Hard::PassportCorrupted(),
Lang::Hard::PassportCorruptedReset(),
[=] { resetPassport(callback); },
[=] { cancelReset(); })).data());
_resetBox = Ui::BoxPointer(show(Ui::MakeConfirmBox({
.text = Lang::Hard::PassportCorrupted(),
.confirmed = [=] { resetPassport(callback); },
.cancelled = [=] { cancelReset(); },
.confirmText = Lang::Hard::PassportCorruptedReset(),
})).data());
}
void PanelController::resetPassport(Fn<void()> callback) {
const auto box = show(Box<Ui::ConfirmBox>(
Lang::Hard::PassportCorruptedResetSure(),
Lang::Hard::PassportCorruptedReset(),
st::attentionBoxButton,
[=] { base::take(_resetBox); callback(); },
[=] { suggestReset(callback); }));
const auto box = show(Ui::MakeConfirmBox({
.text = Lang::Hard::PassportCorruptedResetSure(),
.confirmed = [=] { base::take(_resetBox); callback(); },
.cancelled = [=] { suggestReset(callback); },
.confirmText = Lang::Hard::PassportCorruptedReset(),
.confirmStyle = &st::attentionBoxButton,
}));
_resetBox = Ui::BoxPointer(box.data());
}
@ -942,11 +948,12 @@ void PanelController::showUpdateAppBox() {
Core::UpdateApplication();
};
show(
Box<Ui::ConfirmBox>(
tr::lng_passport_app_out_of_date(tr::now),
tr::lng_menu_update(tr::now),
callback,
[=] { _form->cancelSure(); }),
Ui::MakeConfirmBox({
.text = tr::lng_passport_app_out_of_date(),
.confirmed = callback,
.cancelled = [=] { _form->cancelSure(); },
.confirmText = tr::lng_menu_update(),
}),
Ui::LayerOption::KeepOther,
anim::type::instant);
}
@ -1076,16 +1083,16 @@ void PanelController::editWithUpload(int index, int documentIndex) {
}
void PanelController::readScanError(ReadScanError error) {
show(Box<Ui::InformBox>([&] {
show(Ui::MakeInformBox([&] {
switch (error) {
case ReadScanError::FileTooLarge:
return tr::lng_passport_error_too_large(tr::now);
return tr::lng_passport_error_too_large();
case ReadScanError::BadImageSize:
return tr::lng_passport_error_bad_size(tr::now);
return tr::lng_passport_error_bad_size();
case ReadScanError::CantReadImage:
return tr::lng_passport_error_cant_read(tr::now);
return tr::lng_passport_error_cant_read();
case ReadScanError::Unknown:
return Lang::Hard::UnknownSecureScanError();
return rpl::single(Lang::Hard::UnknownSecureScanError());
}
Unexpected("Error type in PanelController::readScanError.");
}()));
@ -1402,10 +1409,11 @@ void PanelController::cancelEditScope() {
if (_panelHasUnsavedChanges && _panelHasUnsavedChanges()) {
if (!_confirmForgetChangesBox) {
_confirmForgetChangesBox = show(Box<Ui::ConfirmBox>(
tr::lng_passport_sure_cancel(tr::now),
tr::lng_continue(tr::now),
[=] { _panel->showForm(); }));
_confirmForgetChangesBox = show(Ui::MakeConfirmBox({
.text = tr::lng_passport_sure_cancel(),
.confirmed = [=] { _panel->showForm(); },
.confirmText = tr::lng_continue(),
}));
_editScopeBoxes.emplace_back(_confirmForgetChangesBox);
}
} else {

View File

@ -460,7 +460,7 @@ void AppendEmojiPacks(
auto callback = [=] {
if (document) {
if (const auto error = RestrictionToSendStickers(_controller)) {
_controller->show(Box<Ui::InformBox>(*error));
_controller->show(Ui::MakeInformBox(*error));
return true;
}
Api::SendExistingDocument(

View File

@ -400,10 +400,14 @@ void AutostartToggle(bool enabled, Fn<void(bool)> done) {
if (!requested || enabled) {
return;
} else if (const auto window = Core::App().activeWindow()) {
window->show(Box<Ui::ConfirmBox>(
tr::lng_settings_auto_start_disabled_uwp(tr::now),
tr::lng_settings_open_system_settings(tr::now),
[] { AutostartTask::OpenSettings(); Ui::hideLayer(); }));
window->show(Ui::MakeConfirmBox({
.text = tr::lng_settings_auto_start_disabled_uwp(),
.confirmed = [] {
AutostartTask::OpenSettings();
Ui::hideLayer();
},
.confirmText = tr::lng_settings_open_system_settings(),
}));
}
}); };
AutostartTask::Toggle(

View File

@ -99,10 +99,11 @@ void GroupMembersWidget::removePeer(PeerData *selectedPeer) {
currentRestrictedRights);
}
};
Ui::show(Box<Ui::ConfirmBox>(
text,
tr::lng_box_remove(tr::now),
crl::guard(&peer->session(), callback)));
Ui::show(Ui::MakeConfirmBox({
.text = text,
.confirmed = crl::guard(&peer->session(), callback),
.confirmText = tr::lng_box_remove(),
}));
}
void GroupMembersWidget::notifyPeerUpdated(const Data::PeerUpdate &update) {

View File

@ -521,8 +521,8 @@ void SetupSystemIntegrationContent(
}) | rpl::start_with_next([=](bool checked) {
if (controller->session().domain().local().hasLocalPasscode()) {
minimized->entity()->setChecked(false);
controller->show(Box<Ui::InformBox>(
tr::lng_error_start_minimized_passcoded(tr::now)));
controller->show(Ui::MakeInformBox(
tr::lng_error_start_minimized_passcoded()));
} else {
cSetStartMinimized(checked);
Local::writeSettings();
@ -638,10 +638,11 @@ void SetupANGLE(
}
Core::Restart();
});
controller->show(Box<Ui::ConfirmBox>(
tr::lng_settings_need_restart(tr::now),
tr::lng_settings_restart_now(tr::now),
confirmed));
controller->show(Ui::MakeConfirmBox({
.text = tr::lng_settings_need_restart(),
.confirmed = confirmed,
.confirmText = tr::lng_settings_restart_now(),
}));
};
SingleChoiceBox(box, {
.title = tr::lng_settings_angle_backend(),
@ -680,11 +681,12 @@ void SetupOpenGL(
const auto cancelled = crl::guard(button, [=] {
toggles->fire(!enabled);
});
controller->show(Box<Ui::ConfirmBox>(
tr::lng_settings_need_restart(tr::now),
tr::lng_settings_restart_now(tr::now),
confirmed,
cancelled));
controller->show(Ui::MakeConfirmBox({
.text = tr::lng_settings_need_restart(),
.confirmed = confirmed,
.cancelled = cancelled,
.confirmText = tr::lng_settings_restart_now(),
}));
}, container->lifetime());
}

View File

@ -293,7 +293,7 @@ void Calls::setupContent() {
Platform::SystemSettingsType::Audio);
if (!opened) {
_controller->show(
Box<Ui::InformBox>(tr::lng_linux_no_audio_prefs(tr::now)));
Ui::MakeInformBox(tr::lng_linux_no_audio_prefs()));
}
});
@ -325,10 +325,11 @@ void Calls::requestPermissionAndStartTestingMicrophone() {
Platform::PermissionType::Microphone);
Ui::hideLayer();
};
_controller->show(Box<Ui::ConfirmBox>(
tr::lng_no_mic_permission(tr::now),
tr::lng_menu_settings(tr::now),
showSystemSettings));
_controller->show(Ui::MakeConfirmBox({
.text = tr::lng_no_mic_permission(),
.confirmed = showSystemSettings,
.confirmText = tr::lng_menu_settings(),
}));
}
}

View File

@ -1208,8 +1208,8 @@ void SetupDefaultThemes(
// in Window::Theme::Revert which is called by Editor.
//
// So we check here, before we change the saved accent color.
window->show(Box<Ui::InformBox>(
tr::lng_theme_editor_cant_change_theme(tr::now)));
window->show(Ui::MakeInformBox(
tr::lng_theme_editor_cant_change_theme()));
return;
}
const auto type = chosen();
@ -1361,8 +1361,8 @@ void SetupAutoNightMode(
}) | rpl::start_with_next([=](bool checked) {
if (checked && Window::Theme::Background()->editingTheme()) {
autoNight->setChecked(false);
controller->show(Box<Ui::InformBox>(
tr::lng_theme_editor_cant_change_theme(tr::now)));
controller->show(Ui::MakeInformBox(
tr::lng_theme_editor_cant_change_theme()));
} else {
Core::App().settings().setSystemDarkModeEnabled(checked);
Core::App().saveSettingsDelayed();

View File

@ -78,9 +78,9 @@ auto GenerateCodes() {
? qsl("Do you want to disable DEBUG logs?")
: qsl("Do you want to enable DEBUG logs?\n\n"
"All network events will be logged.");
Ui::show(Box<Ui::ConfirmBox>(text, [] {
Ui::show(Ui::MakeConfirmBox({ text, [] {
Core::App().switchDebugMode();
}));
} }));
});
codes.emplace(qsl("viewlogs"), [](SessionController *window) {
File::ShowInFolder(cWorkingDir() + "log.txt");
@ -98,11 +98,11 @@ auto GenerateCodes() {
});
codes.emplace(qsl("moderate"), [](SessionController *window) {
auto text = Core::App().settings().moderateModeEnabled() ? qsl("Disable moderate mode?") : qsl("Enable moderate mode?");
Ui::show(Box<Ui::ConfirmBox>(text, [=] {
Ui::show(Ui::MakeConfirmBox({ text, [=] {
Core::App().settings().setModerateModeEnabled(!Core::App().settings().moderateModeEnabled());
Core::App().saveSettingsDelayed();
Ui::hideLayer();
}));
} }));
});
codes.emplace(qsl("getdifference"), [](SessionController *window) {
if (window) {
@ -121,11 +121,11 @@ auto GenerateCodes() {
return;
}
auto text = cUseExternalVideoPlayer() ? qsl("Use internal video player?") : qsl("Use external video player?");
Ui::show(Box<Ui::ConfirmBox>(text, [=] {
Ui::show(Ui::MakeConfirmBox({ text, [=] {
cSetUseExternalVideoPlayer(!cUseExternalVideoPlayer());
window->session().saveSettingsDelayed();
Ui::hideLayer();
}));
} }));
});
codes.emplace(qsl("endpoints"), [](SessionController *window) {
if (!Core::App().domain().started()) {
@ -138,7 +138,7 @@ auto GenerateCodes() {
if (!result.paths.isEmpty()) {
const auto loadFor = [&](not_null<Main::Account*> account) {
if (!account->mtp().dcOptions().loadFromFile(result.paths.front())) {
Ui::show(Box<Ui::InformBox>("Could not load endpoints"
Ui::show(Ui::MakeInformBox("Could not load endpoints"
" :( Errors in 'log.txt'."));
}
};
@ -188,9 +188,9 @@ auto GenerateCodes() {
#endif // !Q_OS_WIN
: qsl("Switch font engine to FreeType?");
Ui::show(Box<Ui::ConfirmBox>(text, [] {
Ui::show(Ui::MakeConfirmBox({ text, [] {
Core::App().switchFreeType();
}));
} }));
});
#endif // Q_OS_WIN || Q_OS_MAC
@ -217,7 +217,7 @@ auto GenerateCodes() {
auto track = Media::Audio::Current().createTrack();
track->fillFromFile(result.paths.front());
if (track->failed()) {
Ui::show(Box<Ui::InformBox>(
Ui::show(Ui::MakeInformBox(
"Could not audio :( Errors in 'log.txt'."));
} else {
Core::App().settings().setSoundOverride(
@ -232,7 +232,7 @@ auto GenerateCodes() {
codes.emplace(qsl("sounds_reset"), [](SessionController *window) {
Core::App().settings().clearSoundOverrides();
Core::App().saveSettingsDelayed();
Ui::show(Box<Ui::InformBox>("All sound overrides were reset."));
Ui::show(Ui::MakeInformBox("All sound overrides were reset."));
});
codes.emplace(qsl("unpacklog"), [](SessionController *window) {
FileDialog::GetOpenPath(Core::App().getFileDialogParent(), "Open crash log file", "Crash dump (*.txt)", [=](const FileDialog::OpenResult &result) {

View File

@ -53,11 +53,12 @@ void AddOption(
: nullptr;
if (restarter) {
restarter->setCallback([=] {
window->show(Box<Ui::ConfirmBox>(
tr::lng_settings_need_restart(tr::now),
tr::lng_settings_restart_now(tr::now),
tr::lng_settings_restart_later(tr::now),
[] { Core::Restart(); }));
window->show(Ui::MakeConfirmBox({
.text = tr::lng_settings_need_restart(),
.confirmed = [] { Core::Restart(); },
.confirmText = tr::lng_settings_restart_now(),
.cancelText = tr::lng_settings_restart_later(),
}));
});
}
button->toggledChanges(

View File

@ -400,11 +400,12 @@ void SetupInterfaceScale(
button,
[=] { repeatSetScale(cConfigScale(), repeatSetScale); });
});
window->show(Box<Ui::ConfirmBox>(
tr::lng_settings_need_restart(tr::now),
tr::lng_settings_restart_now(tr::now),
confirmed,
cancelled));
window->show(Ui::MakeConfirmBox({
.text = tr::lng_settings_need_restart(),
.confirmed = confirmed,
.cancelled = cancelled,
.confirmText = tr::lng_settings_restart_now(),
}));
} else if (scale != cConfigScale()) {
cSetConfigScale(scale);
Local::writeSettings();
@ -505,13 +506,14 @@ void SetupHelp(
*requestId = 0;
}).send();
});
auto box = Box<Ui::ConfirmBox>(
tr::lng_settings_ask_sure(tr::now),
tr::lng_settings_ask_ok(tr::now),
tr::lng_settings_faq_button(tr::now),
sure,
OpenFaq);
box->setStrictCancel(true);
auto box = Ui::MakeConfirmBox({
.text = tr::lng_settings_ask_sure(),
.confirmed = sure,
.cancelled = OpenFaq,
.confirmText = tr::lng_settings_ask_ok(),
.cancelText = tr::lng_settings_faq_button(),
.strictCancel = true,
});
controller->show(std::move(box));
});
}

View File

@ -595,11 +595,11 @@ void LastSeenPrivacyController::confirmSave(
Core::App().settings().setLastSeenWarningSeen(true);
Core::App().saveSettingsDelayed();
};
auto box = Box<Ui::ConfirmBox>(
tr::lng_edit_privacy_lastseen_warning(tr::now),
tr::lng_continue(tr::now),
tr::lng_cancel(tr::now),
std::move(callback));
auto box = Ui::MakeConfirmBox({
.text = tr::lng_edit_privacy_lastseen_warning(),
.confirmed = std::move(callback),
.confirmText = tr::lng_continue(),
});
Ui::show(std::move(box), Ui::LayerOption::KeepOther);
} else {
saveCallback();

View File

@ -569,11 +569,12 @@ void SetupCloudPassword(
*sent = false;
}, container->lifetime());
};
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_cloud_password_reset_cancel_sure(tr::now),
tr::lng_box_yes(tr::now),
tr::lng_box_no(tr::now),
cancel));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_cloud_password_reset_cancel_sure(),
.confirmed = cancel,
.confirmText = tr::lng_box_yes(),
.cancelText = tr::lng_box_no(),
}));
}
});
@ -931,10 +932,11 @@ object_ptr<Ui::BoxContent> CloudPasswordAppOutdatedBox() {
Core::UpdateApplication();
close();
};
return Box<Ui::ConfirmBox>(
tr::lng_passport_app_out_of_date(tr::now),
tr::lng_menu_update(tr::now),
callback);
return Ui::MakeConfirmBox({
.text = tr::lng_passport_app_out_of_date(),
.confirmed = callback,
.confirmText = tr::lng_menu_update(),
});
}
void AddPrivacyButton(

View File

@ -994,13 +994,13 @@ void FileLoadTask::process(Args &&args) {
void FileLoadTask::finish() {
if (!_result || !_result->filesize || _result->filesize < 0) {
Ui::show(
Box<Ui::InformBox>(
Ui::MakeInformBox(
tr::lng_send_image_empty(tr::now, lt_name, _filepath)),
Ui::LayerOption::KeepOther);
removeFromAlbum();
} else if (_result->filesize > kFileSizeLimit) {
Ui::show(
Box<Ui::InformBox>(
Ui::MakeInformBox(
tr::lng_send_image_too_large(tr::now, lt_name, _filepath)),
Ui::LayerOption::KeepOther);
removeFromAlbum();

View File

@ -1406,10 +1406,11 @@ void ToggleNightModeWithConfirmation(
toggle();
close();
};
window->show(Box<Ui::ConfirmBox>(
tr::lng_settings_auto_night_warning(tr::now),
tr::lng_settings_auto_night_disable(tr::now),
disableAndToggle));
window->show(Ui::MakeConfirmBox({
.text = tr::lng_settings_auto_night_warning(),
.confirmed = disableAndToggle,
.confirmText = tr::lng_settings_auto_night_disable(),
}));
}
}

View File

@ -423,8 +423,8 @@ Editor::Inner::Inner(QWidget *parent, const QString &path)
if (update.type == BackgroundUpdate::Type::TestingTheme) {
Revert();
base::call_delayed(st::slideDuration, this, [] {
Ui::show(Box<Ui::InformBox>(
tr::lng_theme_editor_cant_change_theme(tr::now)));
Ui::show(Ui::MakeInformBox(
tr::lng_theme_editor_cant_change_theme()));
});
}
}, lifetime());
@ -668,7 +668,7 @@ Editor::Editor(
[=] { save(); }));
_inner->setErrorCallback([=] {
window->show(Box<Ui::InformBox>(tr::lng_theme_editor_error(tr::now)));
window->show(Ui::MakeInformBox(tr::lng_theme_editor_error()));
// This could be from inner->_context observable notification.
// We should not destroy it while iterating in subscribers.
@ -752,14 +752,12 @@ void Editor::exportTheme() {
QFile f(path);
if (!f.open(QIODevice::WriteOnly)) {
LOG(("Theme Error: could not open zip-ed theme file '%1' for writing").arg(path));
_window->show(
Box<Ui::InformBox>(tr::lng_theme_editor_error(tr::now)));
_window->show(Ui::MakeInformBox(tr::lng_theme_editor_error()));
return;
}
if (f.write(result) != result.size()) {
LOG(("Theme Error: could not write zip-ed theme to file '%1'").arg(path));
_window->show(
Box<Ui::InformBox>(tr::lng_theme_editor_error(tr::now)));
_window->show(Ui::MakeInformBox(tr::lng_theme_editor_error()));
return;
}
Ui::Toast::Show(tr::lng_theme_editor_done(tr::now));
@ -906,10 +904,11 @@ void Editor::closeWithConfirmation() {
closeEditor();
close();
});
_window->show(Box<Ui::ConfirmBox>(
tr::lng_theme_editor_sure_close(tr::now),
tr::lng_close(tr::now),
close));
_window->show(Ui::MakeConfirmBox({
.text = tr::lng_theme_editor_sure_close(),
.confirmed = close,
.confirmText = tr::lng_close(),
}));
}
void Editor::closeEditor() {

View File

@ -655,7 +655,7 @@ void StartEditor(
? GenerateDefaultPalette()
: ParseTheme(object, true).palette;
if (palette.isEmpty() || !CopyColorsToPalette(path, palette, cloud)) {
window->show(Box<Ui::InformBox>(tr::lng_theme_editor_error(tr::now)));
window->show(Ui::MakeInformBox(tr::lng_theme_editor_error()));
return;
}
if (Core::App().settings().systemDarkModeEnabled()) {

View File

@ -622,10 +622,11 @@ void CloudList::showMenu(Element &element) {
_window->session().data().cloudThemes().remove(id);
}
};
_window->window().show(Box<Ui::ConfirmBox>(
tr::lng_theme_delete_sure(tr::now),
tr::lng_theme_delete(tr::now),
remove));
_window->window().show(Ui::MakeConfirmBox({
.text = tr::lng_theme_delete_sure(),
.confirmed = remove,
.confirmText = tr::lng_theme_delete(),
}));
}, &st::menuIconDelete);
_contextMenu->popup(QCursor::pos());
}

View File

@ -234,11 +234,12 @@ void Controller::showTermsDelete() {
}
};
show(
Box<Ui::ConfirmBox>(
tr::lng_terms_delete_warning(tr::now),
tr::lng_terms_delete_now(tr::now),
st::attentionBoxButton,
deleteByTerms),
Ui::MakeConfirmBox({
.text = tr::lng_terms_delete_warning(),
.confirmed = deleteByTerms,
.confirmText = tr::lng_terms_delete_now(),
.confirmStyle = &st::attentionBoxButton,
}),
Ui::LayerOption::KeepOther);
}
@ -403,11 +404,12 @@ void Controller::showLogoutConfirmation() {
close();
}
};
show(Box<Ui::ConfirmBox>(
tr::lng_sure_logout(tr::now),
tr::lng_settings_logout(tr::now),
st::attentionBoxButton,
callback));
show(Ui::MakeConfirmBox({
.text = tr::lng_sure_logout(),
.confirmed = callback,
.confirmText = tr::lng_settings_logout(),
.confirmStyle = &st::attentionBoxButton,
}));
}
Window::Adaptive &Controller::adaptive() const {

View File

@ -345,10 +345,11 @@ void FiltersMenu::showEditBox(FilterId id) {
}
void FiltersMenu::showRemoveBox(FilterId id) {
_session->window().show(Box<Ui::ConfirmBox>(
tr::lng_filters_remove_sure(tr::now),
tr::lng_filters_remove_yes(tr::now),
[=](Fn<void()> &&close) { close(); remove(id); }));
_session->window().show(Ui::MakeConfirmBox({
.text = tr::lng_filters_remove_sure(),
.confirmed = [=](Fn<void()> &&close) { close(); remove(id); },
.confirmText = tr::lng_filters_remove_yes(),
}));
}
void FiltersMenu::remove(FilterId id) {

View File

@ -323,11 +323,12 @@ void AddUnreadBadge(
close();
Core::App().logoutWithChecks(&session->account());
};
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_sure_logout(tr::now),
tr::lng_settings_logout(tr::now),
st::attentionBoxButton,
crl::guard(session, callback)));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_sure_logout(),
.confirmed = crl::guard(session, callback),
.confirmText = tr::lng_settings_logout(),
.confirmStyle = &st::attentionBoxButton,
}));
}, &st::menuIconLeave);
state->menu->popup(QCursor::pos());
}, raw->lifetime());
@ -1034,8 +1035,8 @@ void MainMenu::setupMenu() {
}) | rpl::start_with_next([=](bool night) {
if (Window::Theme::Background()->editingTheme()) {
_nightThemeSwitches.fire(!night);
controller->show(Box<Ui::InformBox>(
tr::lng_theme_editor_cant_change_theme(tr::now)));
controller->show(Ui::MakeInformBox(
tr::lng_theme_editor_cant_change_theme()));
return;
}
const auto weak = MakeWeak(this);

View File

@ -219,7 +219,7 @@ bool PinnedLimitReached(Dialogs::Key key, FilterId filterId) {
tr::now,
lt_count,
pinnedMax);
Ui::show(Box<Ui::InformBox>(errorText));
Ui::show(Ui::MakeInformBox(errorText));
}
return true;
}
@ -855,10 +855,11 @@ void PeerMenuDeleteContact(not_null<UserData*> user) {
user->session().api().applyUpdates(result);
}).send();
};
Ui::show(Box<Ui::ConfirmBox>(
text,
tr::lng_box_delete(tr::now),
deleteSure));
Ui::show(Ui::MakeConfirmBox({
.text = text,
.confirmed = deleteSure,
.confirmText = tr::lng_box_delete(),
}));
}
void PeerMenuShareContactBox(
@ -867,8 +868,8 @@ void PeerMenuShareContactBox(
const auto weak = std::make_shared<QPointer<PeerListBox>>();
auto callback = [=](not_null<PeerData*> peer) {
if (!peer->canWrite()) {
Ui::show(Box<Ui::InformBox>(
tr::lng_forward_share_cant(tr::now)),
Ui::show(
Ui::MakeInformBox(tr::lng_forward_share_cant()),
Ui::LayerOption::KeepOther);
return;
} else if (peer->isSelf()) {
@ -884,19 +885,25 @@ void PeerMenuShareContactBox(
auto recipient = peer->isUser()
? peer->name
: '\xAB' + peer->name + '\xBB';
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_forward_share_contact(tr::now, lt_recipient, recipient),
tr::lng_forward_send(tr::now),
[peer, user, navigation] {
const auto history = peer->owner().history(peer);
navigation->showPeerHistory(
history,
Window::SectionShow::Way::ClearStack,
ShowAtTheEndMsgId);
auto action = Api::SendAction(history);
action.clearDraft = false;
user->session().api().shareContact(user, action);
}), Ui::LayerOption::KeepOther);
Ui::show(
Ui::MakeConfirmBox({
.text = tr::lng_forward_share_contact(
tr::now,
lt_recipient,
recipient),
.confirmed = [peer, user, navigation] {
const auto history = peer->owner().history(peer);
navigation->showPeerHistory(
history,
Window::SectionShow::Way::ClearStack,
ShowAtTheEndMsgId);
auto action = Api::SendAction(history);
action.clearDraft = false;
user->session().api().shareContact(user, action);
},
.confirmText = tr::lng_forward_send(),
}),
Ui::LayerOption::KeepOther);
};
*weak = Ui::show(Box<PeerListBox>(
std::make_unique<ChooseRecipientBoxController>(
@ -1186,7 +1193,11 @@ QPointer<Ui::BoxContent> ShowSendNowMessagesBox(
}
};
return Ui::show(
Box<Ui::ConfirmBox>(text, tr::lng_send_button(tr::now), std::move(done)),
Ui::MakeConfirmBox({
.text = text,
.confirmed = std::move(done),
.confirmText = tr::lng_send_button(),
}),
Ui::LayerOption::KeepOther).data();
}
@ -1247,10 +1258,11 @@ void ToggleMessagePinned(
session->api().applyUpdates(result);
}).send();
});
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_pinned_unpin_sure(tr::now),
tr::lng_pinned_unpin(tr::now),
callback));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_pinned_unpin_sure(),
.confirmed = callback,
.confirmText = tr::lng_pinned_unpin(),
}));
}
}
@ -1278,10 +1290,11 @@ void HidePinnedBar(
session.api().requestFullPeer(peer);
}
});
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_pinned_hide_all_sure(tr::now),
tr::lng_pinned_hide_all_hide(tr::now),
callback));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_pinned_hide_all_sure(),
.confirmed = callback,
.confirmText = tr::lng_pinned_hide_all_hide(),
}));
}
void UnpinAllMessages(
@ -1305,10 +1318,11 @@ void UnpinAllMessages(
};
sendRequest(sendRequest);
});
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_pinned_unpin_all_sure(tr::now),
tr::lng_pinned_unpin(tr::now),
callback));
Ui::show(Ui::MakeConfirmBox({
.text = tr::lng_pinned_unpin_all_sure(),
.confirmed = callback,
.confirmText = tr::lng_pinned_unpin(),
}));
}
void PeerMenuAddMuteAction(
@ -1348,9 +1362,10 @@ void MenuAddMarkAsReadAllChatsAction(
MarkAsReadChatList(folder->chatsList());
}
};
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_context_mark_read_all_sure(tr::now),
std::move(boxCallback)));
Ui::show(Ui::MakeConfirmBox({
tr::lng_context_mark_read_all_sure(),
std::move(boxCallback)
}));
};
addAction(
tr::lng_context_mark_read_all(tr::now),
@ -1372,9 +1387,10 @@ void MenuAddMarkAsReadChatListAction(
MarkAsReadChatList(list());
close();
};
Ui::show(Box<Ui::ConfirmBox>(
tr::lng_context_mark_read_sure(tr::now),
std::move(boxCallback)));
Ui::show(Ui::MakeConfirmBox({
tr::lng_context_mark_read_sure(),
std::move(boxCallback)
}));
} else {
MarkAsReadChatList(list());
}

View File

@ -212,7 +212,7 @@ void SessionNavigation::resolveUsername(
}).fail([=](const MTP::Error &error) {
_resolveRequestId = 0;
if (error.code() == 400) {
show(Box<Ui::InformBox>(
show(Ui::MakeInformBox(
tr::lng_username_not_found(tr::now, lt_user, username)));
}
}).send();
@ -1127,12 +1127,14 @@ void SessionController::startOrJoinGroupCall(
using JoinConfirm = Calls::StartGroupCallArgs::JoinConfirm;
auto &calls = Core::App().calls();
const auto askConfirmation = [&](QString text, QString button) {
show(Box<Ui::ConfirmBox>(text, button, crl::guard(this, [=] {
Ui::hideLayer();
startOrJoinGroupCall(
peer,
{ args.joinHash, JoinConfirm::None });
})));
show(Ui::MakeConfirmBox({
.text = text,
.confirmed = crl::guard(this, [=, hash = args.joinHash] {
Ui::hideLayer();
startOrJoinGroupCall(peer, { hash, JoinConfirm::None });
}),
.confirmText = button,
}));
};
if (args.confirm != JoinConfirm::None && calls.inCall()) {
// Do you want to leave your active voice chat
@ -1375,12 +1377,13 @@ void SessionController::cancelUploadLayer(not_null<HistoryItem*> item) {
session().uploader().unpause();
};
show(Box<Ui::ConfirmBox>(
tr::lng_selected_cancel_sure_this(tr::now),
tr::lng_selected_upload_stop(tr::now),
tr::lng_continue(tr::now),
stopUpload,
continueUpload));
show(Ui::MakeConfirmBox({
.text = tr::lng_selected_cancel_sure_this(),
.confirmed = stopUpload,
.cancelled = continueUpload,
.confirmText = tr::lng_selected_upload_stop(),
.cancelText = tr::lng_continue(),
}));
}
void SessionController::showSection(