refactored layer methods

This commit is contained in:
John Preston 2015-12-07 21:09:05 +03:00
parent e312adb786
commit 6222876ac4
30 changed files with 248 additions and 249 deletions

View File

@ -445,7 +445,7 @@ void Application::onSwitchDebugMode() {
f.write("1"); f.write("1");
f.close(); f.close();
} }
App::wnd()->hideLayer(); Ui::hideLayer();
} }
} }

View File

@ -84,7 +84,7 @@ void AboutBox::onVersion() {
App::app()->clipboard()->setText(url); App::app()->clipboard()->setText(url);
App::showLayer(new InformBox("The link to the current private beta version of Telegram Desktop was copied to the clipboard.")); Ui::showLayer(new InformBox("The link to the current private beta version of Telegram Desktop was copied to the clipboard."));
} else { } else {
QDesktopServices::openUrl(qsl("https://desktop.telegram.org/?_hash=changelog")); QDesktopServices::openUrl(qsl("https://desktop.telegram.org/?_hash=changelog"));
} }

View File

@ -236,7 +236,7 @@ void AddContactBox::onImportDone(const MTPcontacts_ImportedContacts &res) {
} }
if (uid) { if (uid) {
App::main()->addNewContact(uid); App::main()->addNewContact(uid);
App::wnd()->hideLayer(); Ui::hideLayer();
} else { } else {
_save.hide(); _save.hide();
_first.hide(); _first.hide();
@ -336,7 +336,7 @@ void NewGroupBox::resizeEvent(QResizeEvent *e) {
} }
void NewGroupBox::onNext() { void NewGroupBox::onNext() {
App::wnd()->replaceLayer(new GroupInfoBox(_group.checked() ? CreatingGroupGroup : CreatingGroupChannel, true)); Ui::showLayer(new GroupInfoBox(_group.checked() ? CreatingGroupGroup : CreatingGroupChannel, true), KeepOtherLayers);
} }
GroupInfoBox::GroupInfoBox(CreatingGroupType creating, bool fromTypeChoose) : AbstractBox(), GroupInfoBox::GroupInfoBox(CreatingGroupType creating, bool fromTypeChoose) : AbstractBox(),
@ -498,7 +498,7 @@ void GroupInfoBox::onNext() {
return; return;
} }
if (_creating == CreatingGroupGroup) { if (_creating == CreatingGroupGroup) {
App::wnd()->replaceLayer(new ContactsBox(title, _photoBig)); Ui::showLayer(new ContactsBox(title, _photoBig), KeepOtherLayers);
} else { } else {
bool mega = false; bool mega = false;
int32 flags = mega ? MTPchannels_CreateChannel::flag_megagroup : MTPchannels_CreateChannel::flag_broadcast; int32 flags = mega ? MTPchannels_CreateChannel::flag_megagroup : MTPchannels_CreateChannel::flag_broadcast;
@ -551,7 +551,7 @@ void GroupInfoBox::exportDone(const MTPExportedChatInvite &result) {
if (result.type() == mtpc_chatInviteExported) { if (result.type() == mtpc_chatInviteExported) {
_createdChannel->invitationUrl = qs(result.c_chatInviteExported().vlink); _createdChannel->invitationUrl = qs(result.c_chatInviteExported().vlink);
} }
App::wnd()->showLayer(new SetupChannelBox(_createdChannel)); Ui::showLayer(new SetupChannelBox(_createdChannel));
} }
void GroupInfoBox::onDescriptionResized() { void GroupInfoBox::onDescriptionResized() {
@ -595,7 +595,7 @@ void GroupInfoBox::onPhoto() {
} }
PhotoCropBox *box = new PhotoCropBox(img, (_creating == CreatingGroupChannel) ? peerFromChannel(0) : peerFromChat(0)); PhotoCropBox *box = new PhotoCropBox(img, (_creating == CreatingGroupChannel) ? peerFromChannel(0) : peerFromChat(0));
connect(box, SIGNAL(ready(const QImage&)), this, SLOT(onPhotoReady(const QImage&))); connect(box, SIGNAL(ready(const QImage&)), this, SLOT(onPhotoReady(const QImage&)));
App::wnd()->replaceLayer(box); Ui::showLayer(box, KeepOtherLayers);
} }
void GroupInfoBox::onPhotoReady(const QImage &img) { void GroupInfoBox::onPhotoReady(const QImage &img) {
@ -787,7 +787,7 @@ bool SetupChannelBox::animStep_goodFade(float64 ms) {
void SetupChannelBox::closePressed() { void SetupChannelBox::closePressed() {
if (!_existing) { if (!_existing) {
App::wnd()->showLayer(new ContactsBox(_channel)); Ui::showLayer(new ContactsBox(_channel));
} }
} }
@ -872,7 +872,7 @@ void SetupChannelBox::onPrivacyChange() {
if (_public.checked()) { if (_public.checked()) {
if (_tooMuchUsernames) { if (_tooMuchUsernames) {
_private.setChecked(true); _private.setChecked(true);
App::wnd()->replaceLayer(new InformBox(lang(lng_channels_too_much_public))); Ui::showLayer(new InformBox(lang(lng_channels_too_much_public)), KeepOtherLayers);
return; return;
} }
_link.show(); _link.show();
@ -933,7 +933,7 @@ bool SetupChannelBox::onCheckFail(const RPCError &error) {
QString err(error.type()); QString err(error.type());
if (err == "CHANNELS_ADMIN_PUBLIC_TOO_MUCH") { if (err == "CHANNELS_ADMIN_PUBLIC_TOO_MUCH") {
if (_existing) { if (_existing) {
App::wnd()->showLayer(new InformBox(lang(lng_channels_too_much_public_existing))); Ui::showLayer(new InformBox(lang(lng_channels_too_much_public_existing)));
} else { } else {
_tooMuchUsernames = true; _tooMuchUsernames = true;
_private.setChecked(true); _private.setChecked(true);
@ -961,7 +961,7 @@ bool SetupChannelBox::onFirstCheckFail(const RPCError &error) {
QString err(error.type()); QString err(error.type());
if (err == "CHANNELS_ADMIN_PUBLIC_TOO_MUCH") { if (err == "CHANNELS_ADMIN_PUBLIC_TOO_MUCH") {
if (_existing) { if (_existing) {
App::wnd()->showLayer(new InformBox(lang(lng_channels_too_much_public_existing))); Ui::showLayer(new InformBox(lang(lng_channels_too_much_public_existing)));
} else { } else {
_tooMuchUsernames = true; _tooMuchUsernames = true;
_private.setChecked(true); _private.setChecked(true);
@ -1269,7 +1269,7 @@ void EditChannelBox::onSave() {
} }
void EditChannelBox::onPublicLink() { void EditChannelBox::onPublicLink() {
App::wnd()->replaceLayer(new SetupChannelBox(_channel, true)); Ui::showLayer(new SetupChannelBox(_channel, true), KeepOtherLayers);
} }
void EditChannelBox::saveDescription() { void EditChannelBox::saveDescription() {

View File

@ -94,7 +94,7 @@ void ConfirmBox::mouseReleaseEvent(QMouseEvent *e) {
_lastMousePos = e->globalPos(); _lastMousePos = e->globalPos();
updateHover(); updateHover();
if (textlnkOver() && textlnkOver() == textlnkDown()) { if (textlnkOver() && textlnkOver() == textlnkDown()) {
App::wnd()->hideLayer(); Ui::hideLayer();
textlnkOver()->onClick(e->button()); textlnkOver()->onClick(e->button());
} }
textlnkDown(TextLinkPtr()); textlnkDown(TextLinkPtr());
@ -184,7 +184,7 @@ void ConfirmLinkBox::onOpenLink() {
} else { } else {
TextLink(_url).onClick(Qt::LeftButton); TextLink(_url).onClick(Qt::LeftButton);
} }
App::wnd()->hideLayer(); Ui::hideLayer();
} }
MaxInviteBox::MaxInviteBox(const QString &link) : AbstractBox(st::boxWidth), MaxInviteBox::MaxInviteBox(const QString &link) : AbstractBox(st::boxWidth),

View File

@ -228,7 +228,7 @@ void ContactsInner::onAddBot() {
} else { } else {
App::main()->addParticipants(_addToPeer, QVector<UserData*>(1, _bot)); App::main()->addParticipants(_addToPeer, QVector<UserData*>(1, _bot));
} }
App::wnd()->hideLayer(); Ui::hideLayer();
App::main()->showPeerHistory(_addToPeer->id, ShowAtUnreadMsgId); App::main()->showPeerHistory(_addToPeer->id, ShowAtUnreadMsgId);
} }
@ -269,9 +269,9 @@ bool ContactsInner::addAdminFail(const RPCError &error, mtpRequestId req) {
_addAdminRequestId = 0; _addAdminRequestId = 0;
if (_addAdminBox) _addAdminBox->onClose(); if (_addAdminBox) _addAdminBox->onClose();
if (error.type() == "USERS_TOO_MUCH") { if (error.type() == "USERS_TOO_MUCH") {
App::wnd()->replaceLayer(new MaxInviteBox(_channel->invitationUrl)); Ui::showLayer(new MaxInviteBox(_channel->invitationUrl), KeepOtherLayers);
} else if (error.type() == "ADMINS_TOO_MUCH") { } else if (error.type() == "ADMINS_TOO_MUCH") {
App::wnd()->replaceLayer(new InformBox(lang(lng_channel_admins_too_much))); Ui::showLayer(new InformBox(lang(lng_channel_admins_too_much)), KeepOtherLayers);
} else { } else {
emit adminAdded(); emit adminAdded();
} }
@ -292,7 +292,7 @@ void ContactsInner::peerUpdated(PeerData *peer) {
inited = true; inited = true;
} }
if (!_chat->canEdit()) { if (!_chat->canEdit()) {
App::wnd()->hideLayer(); Ui::hideLayer();
} else if (!_chat->participants.isEmpty()) { } else if (!_chat->participants.isEmpty()) {
for (ContactsData::iterator i = _contactsData.begin(), e = _contactsData.end(); i != e; ++i) { for (ContactsData::iterator i = _contactsData.begin(), e = _contactsData.end(); i != e; ++i) {
delete i.value(); delete i.value();
@ -741,16 +741,16 @@ void ContactsInner::chooseParticipant() {
_addAdminBox = new ConfirmBox(lng_channel_admin_sure(lt_user, _addAdmin->firstName)); _addAdminBox = new ConfirmBox(lng_channel_admin_sure(lt_user, _addAdmin->firstName));
connect(_addAdminBox, SIGNAL(confirmed()), this, SLOT(onAddAdmin())); connect(_addAdminBox, SIGNAL(confirmed()), this, SLOT(onAddAdmin()));
connect(_addAdminBox, SIGNAL(destroyed(QObject*)), this, SLOT(onNoAddAdminBox(QObject*))); connect(_addAdminBox, SIGNAL(destroyed(QObject*)), this, SLOT(onNoAddAdminBox(QObject*)));
App::wnd()->replaceLayer(_addAdminBox); Ui::showLayer(_addAdminBox, KeepOtherLayers);
} else if (bot() && (peer->isChat() || peer->isMegagroup())) { } else if (bot() && (peer->isChat() || peer->isMegagroup())) {
_addToPeer = peer; _addToPeer = peer;
ConfirmBox *box = new ConfirmBox(lng_bot_sure_invite(lt_group, peer->name)); ConfirmBox *box = new ConfirmBox(lng_bot_sure_invite(lt_group, peer->name));
connect(box, SIGNAL(confirmed()), this, SLOT(onAddBot())); connect(box, SIGNAL(confirmed()), this, SLOT(onAddBot()));
App::wnd()->replaceLayer(box); Ui::showLayer(box, KeepOtherLayers);
} else { } else {
App::wnd()->hideSettings(true); App::wnd()->hideSettings(true);
App::main()->choosePeer(peer->id, ShowAtUnreadMsgId); App::main()->choosePeer(peer->id, ShowAtUnreadMsgId);
App::wnd()->hideLayer(); Ui::hideLayer();
} }
} }
} }
@ -1590,7 +1590,7 @@ void ContactsBox::onInvite() {
App::main()->addParticipants(_inner.chat() ? (PeerData*)_inner.chat() : _inner.channel(), users); App::main()->addParticipants(_inner.chat() ? (PeerData*)_inner.chat() : _inner.channel(), users);
if (_inner.chat()) { if (_inner.chat()) {
App::wnd()->hideLayer(); Ui::hideLayer();
App::main()->showPeerHistory(_inner.chat()->id, ShowAtTheEndMsgId); App::main()->showPeerHistory(_inner.chat()->id, ShowAtTheEndMsgId);
} else { } else {
onClose(); onClose();
@ -1713,7 +1713,7 @@ void ContactsBox::onScroll() {
} }
void ContactsBox::creationDone(const MTPUpdates &updates) { void ContactsBox::creationDone(const MTPUpdates &updates) {
App::wnd()->hideLayer(); Ui::hideLayer();
App::main()->sentUpdatesReceived(updates); App::main()->sentUpdatesReceived(updates);
const QVector<MTPChat> *v = 0; const QVector<MTPChat> *v = 0;
@ -1749,7 +1749,7 @@ bool ContactsBox::creationFail(const RPCError &error) {
_filter.showError(); _filter.showError();
return true; return true;
} else if (error.type() == "PEER_FLOOD") { } else if (error.type() == "PEER_FLOOD") {
App::wnd()->replaceLayer(new InformBox(lng_cant_invite_not_contact(lt_more_info, textcmdLink(qsl("https://telegram.org/faq?_hash=can-39t-send-messages-to-non-contacts"), lang(lng_cant_more_info))))); Ui::showLayer(new InformBox(lng_cant_invite_not_contact(lt_more_info, textcmdLink(qsl("https://telegram.org/faq?_hash=can-39t-send-messages-to-non-contacts"), lang(lng_cant_more_info)))), KeepOtherLayers);
return true; return true;
} }
return false; return false;
@ -1872,7 +1872,7 @@ void MembersInner::mouseReleaseEvent(QMouseEvent *e) {
_kickBox = new ConfirmBox((_filter == MembersFilterRecent ? (_channel->isMegagroup() ? lng_profile_sure_kick : lng_profile_sure_kick_channel) : lng_profile_sure_kick_admin)(lt_user, _kickConfirm->firstName)); _kickBox = new ConfirmBox((_filter == MembersFilterRecent ? (_channel->isMegagroup() ? lng_profile_sure_kick : lng_profile_sure_kick_channel) : lng_profile_sure_kick_admin)(lt_user, _kickConfirm->firstName));
connect(_kickBox, SIGNAL(confirmed()), this, SLOT(onKickConfirm())); connect(_kickBox, SIGNAL(confirmed()), this, SLOT(onKickConfirm()));
connect(_kickBox, SIGNAL(destroyed(QObject*)), this, SLOT(onKickBoxDestroyed(QObject*))); connect(_kickBox, SIGNAL(destroyed(QObject*)), this, SLOT(onKickBoxDestroyed(QObject*)));
App::wnd()->replaceLayer(_kickBox); Ui::showLayer(_kickBox, KeepOtherLayers);
} }
_kickDown = -1; _kickDown = -1;
} }
@ -1993,7 +1993,7 @@ void MembersInner::chooseParticipant() {
} }
if (_sel < 0 || _sel >= _rows.size()) return; if (_sel < 0 || _sel >= _rows.size()) return;
if (PeerData *peer = _rows[_sel]) { if (PeerData *peer = _rows[_sel]) {
App::wnd()->hideLayer(); Ui::hideLayer();
App::main()->showPeerProfile(peer, ShowAtUnreadMsgId); App::main()->showPeerProfile(peer, ShowAtUnreadMsgId);
} }
} }
@ -2199,7 +2199,7 @@ void MembersInner::membersReceived(const MTPchannels_ChannelParticipants &result
bool MembersInner::membersFailed(const RPCError &error, mtpRequestId req) { bool MembersInner::membersFailed(const RPCError &error, mtpRequestId req) {
if (mtpIsFlood(error)) return false; if (mtpIsFlood(error)) return false;
App::wnd()->hideLayer(); Ui::hideLayer();
return true; return true;
} }
@ -2298,16 +2298,16 @@ void MembersBox::onScroll() {
void MembersBox::onAdd() { void MembersBox::onAdd() {
if (_inner.filter() == MembersFilterRecent && _inner.channel()->count >= (_inner.channel()->isMegagroup() ? cMaxMegaGroupCount() : cMaxGroupCount())) { if (_inner.filter() == MembersFilterRecent && _inner.channel()->count >= (_inner.channel()->isMegagroup() ? cMaxMegaGroupCount() : cMaxGroupCount())) {
App::wnd()->replaceLayer(new MaxInviteBox(_inner.channel()->invitationUrl)); Ui::showLayer(new MaxInviteBox(_inner.channel()->invitationUrl), KeepOtherLayers);
return; return;
} }
ContactsBox *box = new ContactsBox(_inner.channel(), _inner.filter(), _inner.already()); ContactsBox *box = new ContactsBox(_inner.channel(), _inner.filter(), _inner.already());
if (_inner.filter() == MembersFilterRecent) { if (_inner.filter() == MembersFilterRecent) {
App::wnd()->showLayer(box); Ui::showLayer(box);
} else { } else {
_addBox = box; _addBox = box;
connect(_addBox, SIGNAL(adminAdded()), this, SLOT(onAdminAdded())); connect(_addBox, SIGNAL(adminAdded()), this, SLOT(onAdminAdded()));
App::wnd()->replaceLayer(_addBox); Ui::showLayer(_addBox, KeepOtherLayers);
} }
} }

View File

@ -84,16 +84,16 @@ void LanguageBox::mousePressEvent(QMouseEvent *e) {
for (int32 i = 1; i < languageCount; ++i) { for (int32 i = 1; i < languageCount; ++i) {
LangLoaderPlain loader(qsl(":/langs/lang_") + LanguageCodes[i] + qsl(".strings"), LangLoaderRequest(lngkeys_cnt)); LangLoaderPlain loader(qsl(":/langs/lang_") + LanguageCodes[i] + qsl(".strings"), LangLoaderRequest(lngkeys_cnt));
if (!loader.errors().isEmpty()) { if (!loader.errors().isEmpty()) {
App::wnd()->showLayer(new InformBox(qsl("Lang \"") + LanguageCodes[i] + qsl("\" error :(\n\nError: ") + loader.errors())); Ui::showLayer(new InformBox(qsl("Lang \"") + LanguageCodes[i] + qsl("\" error :(\n\nError: ") + loader.errors()));
return; return;
} else if (!loader.warnings().isEmpty()) { } else if (!loader.warnings().isEmpty()) {
QString warn = loader.warnings(); QString warn = loader.warnings();
if (warn.size() > 256) warn = warn.mid(0, 254) + qsl(".."); if (warn.size() > 256) warn = warn.mid(0, 254) + qsl("..");
App::wnd()->showLayer(new InformBox(qsl("Lang \"") + LanguageCodes[i] + qsl("\" warnings :(\n\nWarnings: ") + warn)); Ui::showLayer(new InformBox(qsl("Lang \"") + LanguageCodes[i] + qsl("\" warnings :(\n\nWarnings: ") + warn));
return; return;
} }
} }
App::wnd()->showLayer(new InformBox(qsl("Everything seems great in all %1 languages!").arg(languageCount - 1))); Ui::showLayer(new InformBox(qsl("Everything seems great in all %1 languages!").arg(languageCount - 1)));
} }
} }
@ -124,7 +124,7 @@ void LanguageBox::onChange() {
ConfirmBox *box = new ConfirmBox(text, save, st::defaultBoxButton, cancel); ConfirmBox *box = new ConfirmBox(text, save, st::defaultBoxButton, cancel);
connect(box, SIGNAL(confirmed()), this, SLOT(onSave())); connect(box, SIGNAL(confirmed()), this, SLOT(onSave()));
connect(box, SIGNAL(closed()), this, SLOT(onRestore())); connect(box, SIGNAL(closed()), this, SLOT(onRestore()));
App::wnd()->replaceLayer(box); Ui::showLayer(box, KeepOtherLayers);
} }
} }
} }

View File

@ -280,7 +280,7 @@ void PasscodeBox::setPasswordDone(const MTPBool &result) {
_setRequest = 0; _setRequest = 0;
emit reloadPassword(); emit reloadPassword();
ConfirmBox *box = new InformBox(lang(_reenterPasscode.isHidden() ? lng_cloud_password_removed : (_oldPasscode.isHidden() ? lng_cloud_password_was_set : lng_cloud_password_updated))); ConfirmBox *box = new InformBox(lang(_reenterPasscode.isHidden() ? lng_cloud_password_removed : (_oldPasscode.isHidden() ? lng_cloud_password_was_set : lng_cloud_password_updated)));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
bool PasscodeBox::setPasswordFail(const RPCError &error) { bool PasscodeBox::setPasswordFail(const RPCError &error) {
@ -308,7 +308,7 @@ bool PasscodeBox::setPasswordFail(const RPCError &error) {
_recoverEmail.showError(); _recoverEmail.showError();
update(); update();
} else if (err == "EMAIL_UNCONFIRMED") { } else if (err == "EMAIL_UNCONFIRMED") {
App::wnd()->showLayer(new InformBox(lang(lng_cloud_password_almost))); Ui::showLayer(new InformBox(lang(lng_cloud_password_almost)));
emit reloadPassword(); emit reloadPassword();
} else if (mtpIsFlood(error)) { } else if (mtpIsFlood(error)) {
if (_oldPasscode.isHidden()) return false; if (_oldPasscode.isHidden()) return false;
@ -385,7 +385,7 @@ void PasscodeBox::onSave(bool force) {
_replacedBy = new ConfirmBox(lang(lng_cloud_password_about_recover), lang(lng_cloud_password_skip_email), st::attentionBoxButton); _replacedBy = new ConfirmBox(lang(lng_cloud_password_about_recover), lang(lng_cloud_password_skip_email), st::attentionBoxButton);
connect(_replacedBy, SIGNAL(confirmed()), this, SLOT(onForceNoMail())); connect(_replacedBy, SIGNAL(confirmed()), this, SLOT(onForceNoMail()));
connect(_replacedBy, SIGNAL(destroyed(QObject*)), this, SLOT(onBoxDestroyed(QObject*))); connect(_replacedBy, SIGNAL(destroyed(QObject*)), this, SLOT(onBoxDestroyed(QObject*)));
App::wnd()->replaceLayer(_replacedBy); Ui::showLayer(_replacedBy, KeepOtherLayers);
} else { } else {
QByteArray newPasswordData = pwd.isEmpty() ? QByteArray() : (_newSalt + pwd.toUtf8() + _newSalt); QByteArray newPasswordData = pwd.isEmpty() ? QByteArray() : (_newSalt + pwd.toUtf8() + _newSalt);
QByteArray newPasswordHash = pwd.isEmpty() ? QByteArray() : QByteArray(32, Qt::Uninitialized); QByteArray newPasswordHash = pwd.isEmpty() ? QByteArray() : QByteArray(32, Qt::Uninitialized);
@ -481,7 +481,7 @@ void PasscodeBox::recover() {
connect(_replacedBy, SIGNAL(reloadPassword()), this, SIGNAL(reloadPassword())); connect(_replacedBy, SIGNAL(reloadPassword()), this, SIGNAL(reloadPassword()));
connect(_replacedBy, SIGNAL(recoveryExpired()), this, SLOT(onRecoverExpired())); connect(_replacedBy, SIGNAL(recoveryExpired()), this, SLOT(onRecoverExpired()));
connect(_replacedBy, SIGNAL(destroyed(QObject*)), this, SLOT(onBoxDestroyed(QObject*))); connect(_replacedBy, SIGNAL(destroyed(QObject*)), this, SLOT(onBoxDestroyed(QObject*)));
App::wnd()->replaceLayer(_replacedBy); Ui::showLayer(_replacedBy, KeepOtherLayers);
} }
void PasscodeBox::recoverStarted(const MTPauth_PasswordRecovery &result) { void PasscodeBox::recoverStarted(const MTPauth_PasswordRecovery &result) {
@ -583,7 +583,7 @@ void RecoverBox::codeSubmitDone(bool recover, const MTPauth_Authorization &resul
_submitRequest = 0; _submitRequest = 0;
emit reloadPassword(); emit reloadPassword();
App::wnd()->showLayer(new InformBox(lang(lng_cloud_password_removed))); Ui::showLayer(new InformBox(lang(lng_cloud_password_removed)));
} }
bool RecoverBox::codeSubmitFail(const RPCError &error) { bool RecoverBox::codeSubmitFail(const RPCError &error) {
@ -592,7 +592,7 @@ bool RecoverBox::codeSubmitFail(const RPCError &error) {
const QString &err = error.type(); const QString &err = error.type();
if (err == "PASSWORD_EMPTY") { if (err == "PASSWORD_EMPTY") {
emit reloadPassword(); emit reloadPassword();
App::wnd()->showLayer(new InformBox(lang(lng_cloud_password_removed))); Ui::showLayer(new InformBox(lang(lng_cloud_password_removed)));
return true; return true;
} else if (err == "PASSWORD_RECOVERY_NA") { } else if (err == "PASSWORD_RECOVERY_NA") {
onClose(); onClose();

View File

@ -115,7 +115,7 @@ void SessionsInner::onTerminate() {
_terminateBox = new ConfirmBox(lang(lng_settings_reset_one_sure), lang(lng_settings_reset_button), st::attentionBoxButton); _terminateBox = new ConfirmBox(lang(lng_settings_reset_one_sure), lang(lng_settings_reset_button), st::attentionBoxButton);
connect(_terminateBox, SIGNAL(confirmed()), this, SLOT(onTerminateSure())); connect(_terminateBox, SIGNAL(confirmed()), this, SLOT(onTerminateSure()));
connect(_terminateBox, SIGNAL(destroyed(QObject*)), this, SLOT(onNoTerminateBox(QObject*))); connect(_terminateBox, SIGNAL(destroyed(QObject*)), this, SLOT(onNoTerminateBox(QObject*)));
App::wnd()->replaceLayer(_terminateBox); Ui::showLayer(_terminateBox, KeepOtherLayers);
} }
} }
} }
@ -138,7 +138,7 @@ void SessionsInner::onTerminateAll() {
_terminateBox = new ConfirmBox(lang(lng_settings_reset_sure), lang(lng_settings_reset_button), st::attentionBoxButton); _terminateBox = new ConfirmBox(lang(lng_settings_reset_sure), lang(lng_settings_reset_button), st::attentionBoxButton);
connect(_terminateBox, SIGNAL(confirmed()), this, SLOT(onTerminateAllSure())); connect(_terminateBox, SIGNAL(confirmed()), this, SLOT(onTerminateAllSure()));
connect(_terminateBox, SIGNAL(destroyed(QObject*)), this, SLOT(onNoTerminateBox(QObject*))); connect(_terminateBox, SIGNAL(destroyed(QObject*)), this, SLOT(onNoTerminateBox(QObject*)));
App::wnd()->replaceLayer(_terminateBox); Ui::showLayer(_terminateBox, KeepOtherLayers);
} }
void SessionsInner::onTerminateAllSure() { void SessionsInner::onTerminateAllSure() {

View File

@ -67,7 +67,7 @@ void StickerSetInner::gotSet(const MTPmessages_StickerSet &set) {
} }
if (_pack.isEmpty()) { if (_pack.isEmpty()) {
App::wnd()->showLayer(new InformBox(lang(lng_stickers_not_found))); Ui::showLayer(new InformBox(lang(lng_stickers_not_found)));
} else { } else {
int32 rows = _pack.size() / StickerPanPerRow + ((_pack.size() % StickerPanPerRow) ? 1 : 0); int32 rows = _pack.size() / StickerPanPerRow + ((_pack.size() % StickerPanPerRow) ? 1 : 0);
resize(st::stickersPadding.left() + StickerPanPerRow * st::stickersSize.width(), st::stickersPadding.top() + rows * st::stickersSize.height() + st::stickersPadding.bottom()); resize(st::stickersPadding.left() + StickerPanPerRow * st::stickersSize.width(), st::stickersPadding.top() + rows * st::stickersSize.height() + st::stickersPadding.bottom());
@ -82,7 +82,7 @@ bool StickerSetInner::failedSet(const RPCError &error) {
_loaded = true; _loaded = true;
App::wnd()->showLayer(new InformBox(lang(lng_stickers_not_found))); Ui::showLayer(new InformBox(lang(lng_stickers_not_found)));
return true; return true;
} }
@ -115,13 +115,13 @@ void StickerSetInner::installDone(const MTPBool &result) {
cSetStickersHash(stickersCountHash()); cSetStickersHash(stickersCountHash());
Local::writeStickers(); Local::writeStickers();
emit installed(_setId); emit installed(_setId);
App::wnd()->hideLayer(); Ui::hideLayer();
} }
bool StickerSetInner::installFailed(const RPCError &error) { bool StickerSetInner::installFailed(const RPCError &error) {
if (mtpIsFlood(error)) return false; if (mtpIsFlood(error)) return false;
App::wnd()->showLayer(new InformBox(lang(lng_stickers_not_found))); Ui::showLayer(new InformBox(lang(lng_stickers_not_found)));
return true; return true;
} }
@ -252,7 +252,7 @@ void StickerSetBox::onAddStickers() {
void StickerSetBox::onShareStickers() { void StickerSetBox::onShareStickers() {
QString url = qsl("https://telegram.me/addstickers/") + _inner.shortName(); QString url = qsl("https://telegram.me/addstickers/") + _inner.shortName();
QApplication::clipboard()->setText(url); QApplication::clipboard()->setText(url);
App::wnd()->showLayer(new InformBox(lang(lng_stickers_copied))); Ui::showLayer(new InformBox(lang(lng_stickers_copied)));
} }
void StickerSetBox::onUpdateButtons() { void StickerSetBox::onUpdateButtons() {

View File

@ -675,12 +675,12 @@ void DialogsInner::onContextClearHistory() {
_menuActionPeer = _menuPeer; _menuActionPeer = _menuPeer;
ConfirmBox *box = new ConfirmBox(_menuPeer->isUser() ? lng_sure_delete_history(lt_contact, _menuPeer->name) : lng_sure_delete_group_history(lt_group, _menuPeer->name), lang(lng_box_delete), st::attentionBoxButton); ConfirmBox *box = new ConfirmBox(_menuPeer->isUser() ? lng_sure_delete_history(lt_contact, _menuPeer->name) : lng_sure_delete_group_history(lt_group, _menuPeer->name), lang(lng_box_delete), st::attentionBoxButton);
connect(box, SIGNAL(confirmed()), this, SLOT(onContextClearHistorySure())); connect(box, SIGNAL(confirmed()), this, SLOT(onContextClearHistorySure()));
App::showLayer(box); Ui::showLayer(box);
} }
void DialogsInner::onContextClearHistorySure() { void DialogsInner::onContextClearHistorySure() {
if (!_menuActionPeer || _menuActionPeer->isChannel()) return; if (!_menuActionPeer || _menuActionPeer->isChannel()) return;
App::wnd()->hideLayer(); Ui::hideLayer();
App::main()->clearHistory(_menuActionPeer); App::main()->clearHistory(_menuActionPeer);
} }
@ -690,13 +690,13 @@ void DialogsInner::onContextDeleteAndLeave() {
_menuActionPeer = _menuPeer; _menuActionPeer = _menuPeer;
ConfirmBox *box = new ConfirmBox(_menuPeer->isUser() ? lng_sure_delete_history(lt_contact, _menuPeer->name) : (_menuPeer->isChat() ? lng_sure_delete_and_exit(lt_group, _menuPeer->name) : lang(_menuPeer->isMegagroup() ? lng_sure_leave_group : lng_sure_leave_channel)), lang(_menuPeer->isUser() ? lng_box_delete : lng_box_leave), _menuPeer->isChannel() ? st::defaultBoxButton : st::attentionBoxButton); ConfirmBox *box = new ConfirmBox(_menuPeer->isUser() ? lng_sure_delete_history(lt_contact, _menuPeer->name) : (_menuPeer->isChat() ? lng_sure_delete_and_exit(lt_group, _menuPeer->name) : lang(_menuPeer->isMegagroup() ? lng_sure_leave_group : lng_sure_leave_channel)), lang(_menuPeer->isUser() ? lng_box_delete : lng_box_leave), _menuPeer->isChannel() ? st::defaultBoxButton : st::attentionBoxButton);
connect(box, SIGNAL(confirmed()), this, SLOT(onContextDeleteAndLeaveSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onContextDeleteAndLeaveSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void DialogsInner::onContextDeleteAndLeaveSure() { void DialogsInner::onContextDeleteAndLeaveSure() {
if (!_menuActionPeer) return; if (!_menuActionPeer) return;
App::wnd()->hideLayer(); Ui::hideLayer();
App::main()->showDialogs(); App::main()->showDialogs();
if (_menuActionPeer->isUser()) { if (_menuActionPeer->isUser()) {
App::main()->deleteConversation(_menuActionPeer); App::main()->deleteConversation(_menuActionPeer);
@ -2556,11 +2556,11 @@ DialogsIndexed &DialogsWidget::dialogsList() {
} }
void DialogsWidget::onAddContact() { void DialogsWidget::onAddContact() {
App::wnd()->replaceLayer(new AddContactBox()); Ui::showLayer(new AddContactBox(), KeepOtherLayers);
} }
void DialogsWidget::onNewGroup() { void DialogsWidget::onNewGroup() {
App::wnd()->showLayer(new NewGroupBox()); Ui::showLayer(new NewGroupBox());
} }
bool DialogsWidget::onCancelSearch() { bool DialogsWidget::onCancelSearch() {

View File

@ -1737,7 +1737,7 @@ void StickerPanInner::updateSelected() {
} }
void StickerPanInner::onSettings() { void StickerPanInner::onSettings() {
App::showLayer(new StickersBox()); Ui::showLayer(new StickersBox());
} }
void StickerPanInner::onPreview() { void StickerPanInner::onPreview() {
@ -2147,7 +2147,7 @@ void EmojiPan::mousePressEvent(QMouseEvent *e) {
updateSelected(); updateSelected();
if (_iconOver == _icons.size()) { if (_iconOver == _icons.size()) {
App::showLayer(new StickersBox()); Ui::showLayer(new StickersBox());
} else { } else {
_iconDown = _iconOver; _iconDown = _iconOver;
_iconsMouseDown = _iconsMousePos; _iconsMouseDown = _iconsMousePos;
@ -2672,12 +2672,12 @@ void EmojiPan::onRemoveSet(quint64 setId) {
ConfirmBox *box = new ConfirmBox(lng_stickers_remove_pack(lt_sticker_pack, it->title), lang(lng_box_remove)); ConfirmBox *box = new ConfirmBox(lng_stickers_remove_pack(lt_sticker_pack, it->title), lang(lng_box_remove));
connect(box, SIGNAL(confirmed()), this, SLOT(onRemoveSetSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onRemoveSetSure()));
connect(box, SIGNAL(destroyed(QObject*)), this, SLOT(onDelayedHide())); connect(box, SIGNAL(destroyed(QObject*)), this, SLOT(onDelayedHide()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
} }
void EmojiPan::onRemoveSetSure() { void EmojiPan::onRemoveSetSure() {
App::wnd()->hideLayer(); Ui::hideLayer();
StickerSets::iterator it = cRefStickerSets().find(_removingSetId); StickerSets::iterator it = cRefStickerSets().find(_removingSetId);
if (it != cRefStickerSets().cend() && !(it->flags & MTPDstickerSet::flag_official)) { if (it != cRefStickerSets().cend() && !(it->flags & MTPDstickerSet::flag_official)) {
if (it->id && it->access) { if (it->id && it->access) {

View File

@ -66,18 +66,6 @@ namespace App {
if (Window *win = wnd()) win->showSettings(); if (Window *win = wnd()) win->showSettings();
} }
void showLayer(LayeredWidget *widget, bool forceFast) {
if (Window *w = wnd()) w->showLayer(widget, forceFast);
}
void replaceLayer(LayeredWidget *widget) {
if (Window *w = wnd()) w->replaceLayer(widget);
}
void showLayerLast(LayeredWidget *widget) {
if (Window *w = wnd()) w->showLayerLast(widget);
}
} }
namespace Ui { namespace Ui {
@ -90,6 +78,19 @@ namespace Ui {
if (MainWidget *m = App::main()) m->ui_hideStickerPreview(); if (MainWidget *m = App::main()) m->ui_hideStickerPreview();
} }
void showLayer(LayeredWidget *box, ShowLayerOptions options) {
if (Window *w = App::wnd()) w->ui_showLayer(box, options);
}
void hideLayer(bool fast) {
if (Window *w = App::wnd()) w->ui_showLayer(0, ShowLayerOptions(CloseOtherLayers) | (fast ? ForceFastShowLayer : AnimatedShowLayer));
}
bool isLayerShown() {
if (Window *w = App::wnd()) return w->ui_isLayerShown();
return false;
}
} }
namespace Notify { namespace Notify {

View File

@ -34,9 +34,6 @@ namespace App {
bool forward(const PeerId &peer, ForwardWhatMessages what); bool forward(const PeerId &peer, ForwardWhatMessages what);
void removeDialog(History *history); void removeDialog(History *history);
void showSettings(); void showSettings();
void showLayer(LayeredWidget *w, bool forceFast = false);
void replaceLayer(LayeredWidget *w);
void showLayerLast(LayeredWidget *w);
}; };
@ -45,6 +42,10 @@ namespace Ui { // it doesn't allow me to use UI :(
void showStickerPreview(DocumentData *sticker); void showStickerPreview(DocumentData *sticker);
void hideStickerPreview(); void hideStickerPreview();
void showLayer(LayeredWidget *box, ShowLayerOptions options = CloseOtherLayers);
void hideLayer(bool fast = false);
bool isLayerShown();
}; };
namespace Notify { namespace Notify {

View File

@ -137,7 +137,7 @@ void CountryInput::mousePressEvent(QMouseEvent *e) {
if (_active) { if (_active) {
CountrySelectBox *box = new CountrySelectBox(); CountrySelectBox *box = new CountrySelectBox();
connect(box, SIGNAL(countryChosen(const QString&)), this, SLOT(onChooseCountry(const QString&))); connect(box, SIGNAL(countryChosen(const QString&)), this, SLOT(onChooseCountry(const QString&)));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
} }
@ -152,7 +152,7 @@ void CountryInput::leaveEvent(QEvent *e) {
} }
void CountryInput::onChooseCode(const QString &code) { void CountryInput::onChooseCode(const QString &code) {
App::wnd()->hideLayer(); Ui::hideLayer();
if (code.length()) { if (code.length()) {
CountriesByCode::const_iterator i = _countriesByCode.constFind(code); CountriesByCode::const_iterator i = _countriesByCode.constFind(code);
if (i != _countriesByCode.cend()) { if (i != _countriesByCode.cend()) {
@ -169,7 +169,7 @@ void CountryInput::onChooseCode(const QString &code) {
} }
bool CountryInput::onChooseCountry(const QString &iso) { bool CountryInput::onChooseCountry(const QString &iso) {
App::wnd()->hideLayer(); Ui::hideLayer();
CountriesByISO2::const_iterator i = _countriesByISO2.constFind(iso); CountriesByISO2::const_iterator i = _countriesByISO2.constFind(iso);
const CountryInfo *info = (i == _countriesByISO2.cend()) ? 0 : (*i); const CountryInfo *info = (i == _countriesByISO2.cend()) ? 0 : (*i);

View File

@ -916,7 +916,7 @@ void EmailLink::onClick(Qt::MouseButton button) const {
} }
void CustomTextLink::onClick(Qt::MouseButton button) const { void CustomTextLink::onClick(Qt::MouseButton button) const {
App::wnd()->showLayer(new ConfirmLinkBox(text())); Ui::showLayer(new ConfirmLinkBox(text()));
} }
void MentionLink::onClick(Qt::MouseButton button) const { void MentionLink::onClick(Qt::MouseButton button) const {

View File

@ -3772,7 +3772,7 @@ bool HistoryWidget::messagesFailed(const RPCError &error, mtpRequestId requestId
if (error.type() == qstr("CHANNEL_PRIVATE")) { if (error.type() == qstr("CHANNEL_PRIVATE")) {
PeerData *was = _peer; PeerData *was = _peer;
App::main()->showDialogs(); App::main()->showDialogs();
App::wnd()->showLayer(new InformBox(lang((was && was->isMegagroup()) ? lng_group_not_accessible : lng_channel_not_accessible))); Ui::showLayer(new InformBox(lang((was && was->isMegagroup()) ? lng_group_not_accessible : lng_channel_not_accessible)));
return true; return true;
} }
@ -4289,7 +4289,7 @@ bool HistoryWidget::joinFail(const RPCError &error, mtpRequestId req) {
if (_unblockRequest == req) _unblockRequest = 0; if (_unblockRequest == req) _unblockRequest = 0;
if (error.type() == qstr("CHANNEL_PRIVATE")) { if (error.type() == qstr("CHANNEL_PRIVATE")) {
App::wnd()->showLayer(new InformBox(lang((_peer && _peer->isMegagroup()) ? lng_group_not_accessible : lng_channel_not_accessible))); Ui::showLayer(new InformBox(lang((_peer && _peer->isMegagroup()) ? lng_group_not_accessible : lng_channel_not_accessible)));
return true; return true;
} }
return false; return false;
@ -5223,7 +5223,7 @@ void HistoryWidget::shareContactWithConfirm(const QString &phone, const QString
App::wnd()->activateWindow(); App::wnd()->activateWindow();
_confirmWithTextId = 0xFFFFFFFFFFFFFFFFL; _confirmWithTextId = 0xFFFFFFFFFFFFFFFFL;
App::wnd()->showLayer(new PhotoSendBox(phone, fname, lname, replyTo)); Ui::showLayer(new PhotoSendBox(phone, fname, lname, replyTo));
} }
void HistoryWidget::confirmSendFile(const FileLoadResultPtr &file, bool ctrlShiftEnter) { void HistoryWidget::confirmSendFile(const FileLoadResultPtr &file, bool ctrlShiftEnter) {
@ -5498,14 +5498,14 @@ void HistoryWidget::onAudioFailed(const FullMsgId &newId) {
void HistoryWidget::onReportSpamClicked() { void HistoryWidget::onReportSpamClicked() {
ConfirmBox *box = new ConfirmBox(lang(_peer->isUser() ? lng_report_spam_sure : ((_peer->isChat() || _peer->isMegagroup()) ? lng_report_spam_sure_group : lng_report_spam_sure_channel)), lang(lng_report_spam_ok), st::attentionBoxButton); ConfirmBox *box = new ConfirmBox(lang(_peer->isUser() ? lng_report_spam_sure : ((_peer->isChat() || _peer->isMegagroup()) ? lng_report_spam_sure_group : lng_report_spam_sure_channel)), lang(lng_report_spam_ok), st::attentionBoxButton);
connect(box, SIGNAL(confirmed()), this, SLOT(onReportSpamSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onReportSpamSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
_clearPeer = _peer; _clearPeer = _peer;
} }
void HistoryWidget::onReportSpamSure() { void HistoryWidget::onReportSpamSure() {
if (_reportSpamRequest) return; if (_reportSpamRequest) return;
App::wnd()->hideLayer(); Ui::hideLayer();
if (_clearPeer->isUser()) MTP::send(MTPcontacts_Block(_clearPeer->asUser()->inputUser), rpcDone(&HistoryWidget::blockDone, _clearPeer), RPCFailHandlerPtr(), 0, 5); if (_clearPeer->isUser()) MTP::send(MTPcontacts_Block(_clearPeer->asUser()->inputUser), rpcDone(&HistoryWidget::blockDone, _clearPeer), RPCFailHandlerPtr(), 0, 5);
_reportSpamRequest = MTP::send(MTPmessages_ReportSpam(_clearPeer->input), rpcDone(&HistoryWidget::reportSpamDone, _clearPeer), rpcFail(&HistoryWidget::reportSpamFail)); _reportSpamRequest = MTP::send(MTPmessages_ReportSpam(_clearPeer->input), rpcDone(&HistoryWidget::reportSpamDone, _clearPeer), rpcFail(&HistoryWidget::reportSpamFail));
} }
@ -6144,7 +6144,7 @@ void HistoryWidget::onReplyToMessage() {
box = new ConfirmBox(lang(lng_reply_cant_forward), lang(lng_selected_forward)); box = new ConfirmBox(lang(lng_reply_cant_forward), lang(lng_selected_forward));
connect(box, SIGNAL(confirmed()), this, SLOT(onForwardHere())); connect(box, SIGNAL(confirmed()), this, SLOT(onForwardHere()));
} }
App::showLayer(box); Ui::showLayer(box);
} }
return; return;
} }
@ -6457,7 +6457,7 @@ void HistoryWidget::onDeleteSelectedSure() {
if (App::main() && App::main()->peer() == peer()) { if (App::main() && App::main()->peer() == peer()) {
App::main()->itemResized(0); App::main()->itemResized(0);
} }
App::wnd()->hideLayer(); Ui::hideLayer();
for (QMap<PeerData*, QVector<MTPint> >::const_iterator i = ids.cbegin(), e = ids.cend(); i != e; ++i) { for (QMap<PeerData*, QVector<MTPint> >::const_iterator i = ids.cbegin(), e = ids.cend(); i != e; ++i) {
App::main()->deleteMessages(i.key(), i.value()); App::main()->deleteMessages(i.key(), i.value());
@ -6481,7 +6481,7 @@ void HistoryWidget::onDeleteContextSure() {
if (App::main() && (App::main()->peer() == h->peer || (App::main()->peer() && h->peer->migrateTo() == App::main()->peer()))) { if (App::main() && (App::main()->peer() == h->peer || (App::main()->peer() && h->peer->migrateTo() == App::main()->peer()))) {
App::main()->itemResized(0); App::main()->itemResized(0);
} }
App::wnd()->hideLayer(); Ui::hideLayer();
if (wasOnServer) { if (wasOnServer) {
App::main()->deleteMessages(h->peer, toDelete); App::main()->deleteMessages(h->peer, toDelete);
@ -6544,7 +6544,7 @@ void HistoryWidget::updateTopBarSelection() {
App::main()->topBar()->showSelected(_selCount > 0 ? _selCount : 0, (selectedForDelete == selectedForForward)); App::main()->topBar()->showSelected(_selCount > 0 ? _selCount : 0, (selectedForDelete == selectedForForward));
updateControlsVisibility(); updateControlsVisibility();
updateListSize(); updateListSize();
if (!App::wnd()->layerShown() && !App::passcoded()) { if (!Ui::isLayerShown() && !App::passcoded()) {
if (_selCount || (_list && _list->wasSelectedText()) || _recording || isBotStart() || isBlocked() || !_canSendMessages) { if (_selCount || (_list && _list->wasSelectedText()) || _recording || isBotStart() || isBlocked() || !_canSendMessages) {
_list->setFocus(); _list->setFocus();
} else { } else {

View File

@ -289,14 +289,14 @@ void IntroPwdCheck::onToRecover() {
update(); update();
} else { } else {
ConfirmBox *box = new InformBox(lang(lng_signin_no_email_forgot)); ConfirmBox *box = new InformBox(lang(lng_signin_no_email_forgot));
App::wnd()->showLayer(box); Ui::showLayer(box);
connect(box, SIGNAL(destroyed(QObject*)), this, SLOT(onToReset())); connect(box, SIGNAL(destroyed(QObject*)), this, SLOT(onToReset()));
} }
} }
void IntroPwdCheck::onToPassword() { void IntroPwdCheck::onToPassword() {
ConfirmBox *box = new InformBox(lang(lng_signin_cant_email_forgot)); ConfirmBox *box = new InformBox(lang(lng_signin_cant_email_forgot));
App::wnd()->showLayer(box); Ui::showLayer(box);
connect(box, SIGNAL(destroyed(QObject*)), this, SLOT(onToReset())); connect(box, SIGNAL(destroyed(QObject*)), this, SLOT(onToReset()));
} }
@ -319,7 +319,7 @@ void IntroPwdCheck::onReset() {
if (sentRequest) return; if (sentRequest) return;
ConfirmBox *box = new ConfirmBox(lang(lng_signin_sure_reset), lang(lng_signin_reset), st::attentionBoxButton); ConfirmBox *box = new ConfirmBox(lang(lng_signin_sure_reset), lang(lng_signin_reset), st::attentionBoxButton);
connect(box, SIGNAL(confirmed()), this, SLOT(onResetSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onResetSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void IntroPwdCheck::onResetSure() { void IntroPwdCheck::onResetSure() {
@ -335,7 +335,7 @@ bool IntroPwdCheck::deleteFail(const RPCError &error) {
} }
void IntroPwdCheck::deleteDone(const MTPBool &v) { void IntroPwdCheck::deleteDone(const MTPBool &v) {
App::wnd()->hideLayer(); Ui::hideLayer();
intro()->onIntroNext(); intro()->onIntroNext();
} }

View File

@ -90,7 +90,7 @@ void IntroSignup::mousePressEvent(QMouseEvent *e) {
} }
PhotoCropBox *box = new PhotoCropBox(img, PeerId(0)); PhotoCropBox *box = new PhotoCropBox(img, PeerId(0));
connect(box, SIGNAL(ready(const QImage &)), this, SLOT(onPhotoReady(const QImage &))); connect(box, SIGNAL(ready(const QImage &)), this, SLOT(onPhotoReady(const QImage &)));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
} }

View File

@ -409,23 +409,23 @@ void FileLoadTask::process() {
void FileLoadTask::finish() { void FileLoadTask::finish() {
if (!_result || !_result->filesize) { if (!_result || !_result->filesize) {
if (_result) App::main()->onSendFileCancel(_result); if (_result) App::main()->onSendFileCancel(_result);
App::wnd()->replaceLayer(new InformBox(lang(lng_send_image_empty))); Ui::showLayer(new InformBox(lang(lng_send_image_empty)), KeepOtherLayers);
return; return;
} }
if (_result->filesize == -1) { // dir if (_result->filesize == -1) { // dir
App::main()->onSendFileCancel(_result); App::main()->onSendFileCancel(_result);
App::wnd()->replaceLayer(new InformBox(lng_send_folder(lt_name, QFileInfo(_filepath).dir().dirName()))); Ui::showLayer(new InformBox(lng_send_folder(lt_name, QFileInfo(_filepath).dir().dirName())), KeepOtherLayers);
return; return;
} }
if (_result->filesize > MaxUploadDocumentSize) { if (_result->filesize > MaxUploadDocumentSize) {
App::main()->onSendFileCancel(_result); App::main()->onSendFileCancel(_result);
App::wnd()->replaceLayer(new InformBox(lang(lng_send_image_too_large))); Ui::showLayer(new InformBox(lang(lng_send_image_too_large)), KeepOtherLayers);
return; return;
} }
if (App::main()) { if (App::main()) {
bool confirm = (_confirm == FileLoadAlwaysConfirm) || (_result->photo.type() != mtpc_photoEmpty && _confirm != FileLoadNeverConfirm); bool confirm = (_confirm == FileLoadAlwaysConfirm) || (_result->photo.type() != mtpc_photoEmpty && _confirm != FileLoadNeverConfirm);
if (confirm) { if (confirm) {
App::wnd()->showLayerLast(new PhotoSendBox(_result)); Ui::showLayer(new PhotoSendBox(_result), ShowAfterOtherLayers);
} else { } else {
if (_result->type == PrepareAuto) { if (_result->type == PrepareAuto) {
_result->type = (_result->photo.type() != mtpc_photoEmpty) ? PreparePhoto : PrepareDocument; _result->type = (_result->photo.type() != mtpc_photoEmpty) ? PreparePhoto : PrepareDocument;

View File

@ -89,18 +89,18 @@ void TopBarWidget::onInfoClicked() {
void TopBarWidget::onAddContact() { void TopBarWidget::onAddContact() {
PeerData *p = App::main() ? App::main()->profilePeer() : 0; PeerData *p = App::main() ? App::main()->profilePeer() : 0;
UserData *u = p ? p->asUser() : 0; UserData *u = p ? p->asUser() : 0;
if (u) App::wnd()->showLayer(new AddContactBox(u->firstName, u->lastName, u->phone.isEmpty() ? App::phoneFromSharedContact(peerToUser(u->id)) : u->phone)); if (u) Ui::showLayer(new AddContactBox(u->firstName, u->lastName, u->phone.isEmpty() ? App::phoneFromSharedContact(peerToUser(u->id)) : u->phone));
} }
void TopBarWidget::onEdit() { void TopBarWidget::onEdit() {
PeerData *p = App::main() ? App::main()->profilePeer() : 0; PeerData *p = App::main() ? App::main()->profilePeer() : 0;
if (p) { if (p) {
if (p->isChannel()) { if (p->isChannel()) {
App::wnd()->showLayer(new EditChannelBox(p->asChannel())); Ui::showLayer(new EditChannelBox(p->asChannel()));
} else if (p->isChat()) { } else if (p->isChat()) {
App::wnd()->showLayer(new EditNameTitleBox(p)); Ui::showLayer(new EditNameTitleBox(p));
} else if (p->isUser()) { } else if (p->isUser()) {
App::wnd()->showLayer(new AddContactBox(p->asUser())); Ui::showLayer(new AddContactBox(p->asUser()));
} }
} }
} }
@ -111,7 +111,7 @@ void TopBarWidget::onDeleteContact() {
if (u) { if (u) {
ConfirmBox *box = new ConfirmBox(lng_sure_delete_contact(lt_contact, p->name), lang(lng_box_delete)); ConfirmBox *box = new ConfirmBox(lng_sure_delete_contact(lt_contact, p->name), lang(lng_box_delete));
connect(box, SIGNAL(confirmed()), this, SLOT(onDeleteContactSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onDeleteContactSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
} }
@ -120,7 +120,7 @@ void TopBarWidget::onDeleteContactSure() {
UserData *u = p ? p->asUser() : 0; UserData *u = p ? p->asUser() : 0;
if (u) { if (u) {
App::main()->showDialogs(); App::main()->showDialogs();
App::wnd()->hideLayer(); Ui::hideLayer();
MTP::send(MTPcontacts_DeleteContact(u->inputUser), App::main()->rpcDone(&MainWidget::deletedContact, u)); MTP::send(MTPcontacts_DeleteContact(u->inputUser), App::main()->rpcDone(&MainWidget::deletedContact, u));
} }
} }
@ -131,7 +131,7 @@ void TopBarWidget::onDeleteAndExit() {
if (c) { if (c) {
ConfirmBox *box = new ConfirmBox(lng_sure_delete_and_exit(lt_group, p->name), lang(lng_box_leave), st::attentionBoxButton); ConfirmBox *box = new ConfirmBox(lng_sure_delete_and_exit(lt_group, p->name), lang(lng_box_leave), st::attentionBoxButton);
connect(box, SIGNAL(confirmed()), this, SLOT(onDeleteAndExitSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onDeleteAndExitSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
} }
@ -140,7 +140,7 @@ void TopBarWidget::onDeleteAndExitSure() {
ChatData *c = p ? p->asChat() : 0; ChatData *c = p ? p->asChat() : 0;
if (c) { if (c) {
App::main()->showDialogs(); App::main()->showDialogs();
App::wnd()->hideLayer(); Ui::hideLayer();
MTP::send(MTPmessages_DeleteChatUser(c->inputChat, App::self()->inputUser), App::main()->rpcDone(&MainWidget::deleteHistoryAfterLeave, p), App::main()->rpcFail(&MainWidget::leaveChatFailed, p)); MTP::send(MTPmessages_DeleteChatUser(c->inputChat, App::self()->inputUser), App::main()->rpcDone(&MainWidget::deleteHistoryAfterLeave, p), App::main()->rpcFail(&MainWidget::leaveChatFailed, p));
} }
} }
@ -480,7 +480,7 @@ MainWidget::MainWidget(Window *window) : TWidget(window)
bool MainWidget::onForward(const PeerId &peer, ForwardWhatMessages what) { bool MainWidget::onForward(const PeerId &peer, ForwardWhatMessages what) {
PeerData *p = App::peer(peer); PeerData *p = App::peer(peer);
if (!peer || (p->isChannel() && !p->asChannel()->canPublish() && p->asChannel()->isBroadcast()) || (p->isChat() && !p->asChat()->canWrite()) || (p->isUser() && p->asUser()->access == UserNoAccess)) { if (!peer || (p->isChannel() && !p->asChannel()->canPublish() && p->asChannel()->isBroadcast()) || (p->isChat() && !p->asChat()->canWrite()) || (p->isUser() && p->asUser()->access == UserNoAccess)) {
App::wnd()->showLayer(new InformBox(lang(lng_forward_cant))); Ui::showLayer(new InformBox(lang(lng_forward_cant)));
return false; return false;
} }
history.cancelReply(); history.cancelReply();
@ -514,7 +514,7 @@ bool MainWidget::onForward(const PeerId &peer, ForwardWhatMessages what) {
bool MainWidget::onShareUrl(const PeerId &peer, const QString &url, const QString &text) { bool MainWidget::onShareUrl(const PeerId &peer, const QString &url, const QString &text) {
PeerData *p = App::peer(peer); PeerData *p = App::peer(peer);
if (!peer || (p->isChannel() && !p->asChannel()->canPublish() && p->asChannel()->isBroadcast()) || (p->isChat() && !p->asChat()->canWrite()) || (p->isUser() && p->asUser()->access == UserNoAccess)) { if (!peer || (p->isChannel() && !p->asChannel()->canPublish() && p->asChannel()->isBroadcast()) || (p->isChat() && !p->asChat()->canWrite()) || (p->isUser() && p->asUser()->access == UserNoAccess)) {
App::wnd()->showLayer(new InformBox(lang(lng_share_cant))); Ui::showLayer(new InformBox(lang(lng_share_cant)));
return false; return false;
} }
History *h = App::history(peer); History *h = App::history(peer);
@ -837,7 +837,7 @@ void MainWidget::deleteLayer(int32 selectedCount) {
} else { } else {
connect(box, SIGNAL(confirmed()), overview ? overview : static_cast<QWidget*>(&history), SLOT(onDeleteSelectedSure())); connect(box, SIGNAL(confirmed()), overview ? overview : static_cast<QWidget*>(&history), SLOT(onDeleteSelectedSure()));
} }
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void MainWidget::shareContactLayer(UserData *contact) { void MainWidget::shareContactLayer(UserData *contact) {
@ -853,13 +853,13 @@ bool MainWidget::selectingPeer(bool withConfirm) {
} }
void MainWidget::offerPeer(PeerId peer) { void MainWidget::offerPeer(PeerId peer) {
App::wnd()->hideLayer(); Ui::hideLayer();
if (_hider->offerPeer(peer) && !cWideMode()) { if (_hider->offerPeer(peer) && !cWideMode()) {
_forwardConfirm = new ConfirmBox(_hider->offeredText(), lang(lng_forward_send)); _forwardConfirm = new ConfirmBox(_hider->offeredText(), lang(lng_forward_send));
connect(_forwardConfirm, SIGNAL(confirmed()), _hider, SLOT(forward())); connect(_forwardConfirm, SIGNAL(confirmed()), _hider, SLOT(forward()));
connect(_forwardConfirm, SIGNAL(cancelled()), this, SLOT(onForwardCancel())); connect(_forwardConfirm, SIGNAL(cancelled()), this, SLOT(onForwardCancel()));
connect(_forwardConfirm, SIGNAL(destroyed(QObject*)), this, SLOT(onForwardCancel(QObject*))); connect(_forwardConfirm, SIGNAL(destroyed(QObject*)), this, SLOT(onForwardCancel(QObject*)));
App::wnd()->showLayer(_forwardConfirm); Ui::showLayer(_forwardConfirm);
} }
} }
@ -1012,7 +1012,7 @@ bool MainWidget::addParticipantFail(UserData *user, const RPCError &error) {
} else if (error.type() == "PEER_FLOOD") { } else if (error.type() == "PEER_FLOOD") {
text = lng_cant_invite_not_contact(lt_more_info, textcmdLink(qsl("https://telegram.org/faq?_hash=can-39t-send-messages-to-non-contacts"), lang(lng_cant_more_info))); text = lng_cant_invite_not_contact(lt_more_info, textcmdLink(qsl("https://telegram.org/faq?_hash=can-39t-send-messages-to-non-contacts"), lang(lng_cant_more_info)));
} }
App::wnd()->showLayer(new InformBox(text)); Ui::showLayer(new InformBox(text));
return false; return false;
} }
@ -1026,13 +1026,13 @@ bool MainWidget::addParticipantsFail(ChannelData *channel, const RPCError &error
} else if (error.type() == "PEER_FLOOD") { } else if (error.type() == "PEER_FLOOD") {
text = lng_cant_invite_not_contact(lt_more_info, textcmdLink(qsl("https://telegram.org/faq?_hash=can-39t-send-messages-to-non-contacts"), lang(lng_cant_more_info))); text = lng_cant_invite_not_contact(lt_more_info, textcmdLink(qsl("https://telegram.org/faq?_hash=can-39t-send-messages-to-non-contacts"), lang(lng_cant_more_info)));
} }
App::wnd()->showLayer(new InformBox(text)); Ui::showLayer(new InformBox(text));
return false; return false;
} }
void MainWidget::kickParticipant(ChatData *chat, UserData *user) { void MainWidget::kickParticipant(ChatData *chat, UserData *user) {
MTP::send(MTPmessages_DeleteChatUser(chat->inputChat, user->inputUser), rpcDone(&MainWidget::sentUpdatesReceived), rpcFail(&MainWidget::kickParticipantFail, chat)); MTP::send(MTPmessages_DeleteChatUser(chat->inputChat, user->inputUser), rpcDone(&MainWidget::sentUpdatesReceived), rpcFail(&MainWidget::kickParticipantFail, chat));
App::wnd()->hideLayer(); Ui::hideLayer();
showPeerHistory(chat->id, ShowAtTheEndMsgId); showPeerHistory(chat->id, ShowAtTheEndMsgId);
} }
@ -1131,7 +1131,7 @@ bool MainWidget::sendMessageFail(const RPCError &error) {
if (mtpIsFlood(error)) return false; if (mtpIsFlood(error)) return false;
if (error.type() == qsl("PEER_FLOOD")) { if (error.type() == qsl("PEER_FLOOD")) {
App::wnd()->showLayer(new InformBox(lng_cant_send_to_not_contact(lt_more_info, textcmdLink(qsl("https://telegram.org/faq?_hash=can-39t-send-messages-to-non-contacts"), lang(lng_cant_more_info))))); Ui::showLayer(new InformBox(lng_cant_send_to_not_contact(lt_more_info, textcmdLink(qsl("https://telegram.org/faq?_hash=can-39t-send-messages-to-non-contacts"), lang(lng_cant_more_info)))));
return true; return true;
} }
return false; return false;
@ -1639,7 +1639,7 @@ void MainWidget::loadFailed(mtpFileLoader *loader, bool started, const char *ret
} else { } else {
connect(box, SIGNAL(confirmed()), this, SLOT(onDownloadPathSettings())); connect(box, SIGNAL(confirmed()), this, SLOT(onDownloadPathSettings()));
} }
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void MainWidget::onDownloadPathSettings() { void MainWidget::onDownloadPathSettings() {
@ -1649,7 +1649,7 @@ void MainWidget::onDownloadPathSettings() {
if (App::wnd() && App::wnd()->settingsWidget()) { if (App::wnd() && App::wnd()->settingsWidget()) {
connect(box, SIGNAL(closed()), App::wnd()->settingsWidget(), SLOT(onDownloadPathEdited())); connect(box, SIGNAL(closed()), App::wnd()->settingsWidget(), SLOT(onDownloadPathEdited()));
} }
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void MainWidget::videoLoadFailed(mtpFileLoader *loader, bool started) { void MainWidget::videoLoadFailed(mtpFileLoader *loader, bool started) {
@ -1659,7 +1659,7 @@ void MainWidget::videoLoadFailed(mtpFileLoader *loader, bool started) {
} }
void MainWidget::videoLoadRetry() { void MainWidget::videoLoadRetry() {
App::wnd()->hideLayer(); Ui::hideLayer();
VideoData *video = App::video(failedObjId); VideoData *video = App::video(failedObjId);
if (video) video->save(failedFileName); if (video) video->save(failedFileName);
} }
@ -1818,7 +1818,7 @@ void MainWidget::audioLoadFailed(mtpFileLoader *loader, bool started) {
} }
void MainWidget::audioLoadRetry() { void MainWidget::audioLoadRetry() {
App::wnd()->hideLayer(); Ui::hideLayer();
AudioData *audio = App::audio(failedObjId); AudioData *audio = App::audio(failedObjId);
if (audio) audio->save(failedFileName); if (audio) audio->save(failedFileName);
} }
@ -1913,7 +1913,7 @@ void MainWidget::documentLoadFailed(mtpFileLoader *loader, bool started) {
} }
void MainWidget::documentLoadRetry() { void MainWidget::documentLoadRetry() {
App::wnd()->hideLayer(); Ui::hideLayer();
DocumentData *document = App::document(failedObjId); DocumentData *document = App::document(failedObjId);
if (document) document->save(failedFileName); if (document) document->save(failedFileName);
} }
@ -2282,7 +2282,7 @@ void MainWidget::showPeerHistory(quint64 peerId, qint32 showAtMsgId, bool back)
PeerData *wasActivePeer = activePeer(); PeerData *wasActivePeer = activePeer();
App::wnd()->hideLayer(); Ui::hideLayer();
if (_hider) { if (_hider) {
_hider->startHide(); _hider->startHide();
_hider = 0; _hider = 0;
@ -2741,13 +2741,13 @@ void MainWidget::hideAll() {
void MainWidget::showAll() { void MainWidget::showAll() {
if (cPasswordRecovered()) { if (cPasswordRecovered()) {
cSetPasswordRecovered(false); cSetPasswordRecovered(false);
App::wnd()->showLayer(new InformBox(lang(lng_signin_password_removed))); Ui::showLayer(new InformBox(lang(lng_signin_password_removed)));
} }
if (cWideMode()) { if (cWideMode()) {
if (_hider) { if (_hider) {
_hider->show(); _hider->show();
if (_forwardConfirm) { if (_forwardConfirm) {
App::wnd()->hideLayer(true); Ui::hideLayer(true);
_forwardConfirm = 0; _forwardConfirm = 0;
} }
} }
@ -2770,7 +2770,7 @@ void MainWidget::showAll() {
_forwardConfirm = new ConfirmBox(_hider->offeredText(), lang(lng_forward_send)); _forwardConfirm = new ConfirmBox(_hider->offeredText(), lang(lng_forward_send));
connect(_forwardConfirm, SIGNAL(confirmed()), _hider, SLOT(forward())); connect(_forwardConfirm, SIGNAL(confirmed()), _hider, SLOT(forward()));
connect(_forwardConfirm, SIGNAL(cancelled()), this, SLOT(onForwardCancel())); connect(_forwardConfirm, SIGNAL(cancelled()), this, SLOT(onForwardCancel()));
App::wnd()->showLayer(_forwardConfirm, true); Ui::showLayer(_forwardConfirm, ForceFastShowLayer);
} }
} }
if (selectingPeer()) { if (selectingPeer()) {
@ -3541,7 +3541,7 @@ void MainWidget::openPeerByName(const QString &username, bool toProfile, const Q
if (toProfile) { if (toProfile) {
if (peer->isUser() && peer->asUser()->botInfo && !peer->asUser()->botInfo->cantJoinGroups && !startToken.isEmpty()) { if (peer->isUser() && peer->asUser()->botInfo && !peer->asUser()->botInfo->cantJoinGroups && !startToken.isEmpty()) {
peer->asUser()->botInfo->startGroupToken = startToken; peer->asUser()->botInfo->startGroupToken = startToken;
App::wnd()->showLayer(new ContactsBox(peer->asUser())); Ui::showLayer(new ContactsBox(peer->asUser()));
} else if (peer->isChannel()) { } else if (peer->isChannel()) {
showPeerHistory(peer->id, ShowAtUnreadMsgId); showPeerHistory(peer->id, ShowAtUnreadMsgId);
} else { } else {
@ -3571,7 +3571,7 @@ void MainWidget::stickersBox(const MTPInputStickerSet &set) {
App::wnd()->hideMediaview(); App::wnd()->hideMediaview();
StickerSetBox *box = new StickerSetBox(set); StickerSetBox *box = new StickerSetBox(set);
connect(box, SIGNAL(installed(uint64)), this, SLOT(onStickersInstalled(uint64))); connect(box, SIGNAL(installed(uint64)), this, SLOT(onStickersInstalled(uint64)));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void MainWidget::onStickersInstalled(uint64 setId) { void MainWidget::onStickersInstalled(uint64 setId) {
@ -3605,7 +3605,7 @@ bool MainWidget::contentOverlapped(const QRect &globalRect) {
} }
void MainWidget::usernameResolveDone(QPair<bool, QString> toProfileStartToken, const MTPcontacts_ResolvedPeer &result) { void MainWidget::usernameResolveDone(QPair<bool, QString> toProfileStartToken, const MTPcontacts_ResolvedPeer &result) {
App::wnd()->hideLayer(); Ui::hideLayer();
if (result.type() != mtpc_contacts_resolvedPeer) return; if (result.type() != mtpc_contacts_resolvedPeer) return;
const MTPDcontacts_resolvedPeer &d(result.c_contacts_resolvedPeer()); const MTPDcontacts_resolvedPeer &d(result.c_contacts_resolvedPeer());
@ -3618,7 +3618,7 @@ void MainWidget::usernameResolveDone(QPair<bool, QString> toProfileStartToken, c
if (toProfileStartToken.first) { if (toProfileStartToken.first) {
if (peer->isUser() && peer->asUser()->botInfo && !peer->asUser()->botInfo->cantJoinGroups && !toProfileStartToken.second.isEmpty()) { if (peer->isUser() && peer->asUser()->botInfo && !peer->asUser()->botInfo->cantJoinGroups && !toProfileStartToken.second.isEmpty()) {
peer->asUser()->botInfo->startGroupToken = toProfileStartToken.second; peer->asUser()->botInfo->startGroupToken = toProfileStartToken.second;
App::wnd()->showLayer(new ContactsBox(peer->asUser())); Ui::showLayer(new ContactsBox(peer->asUser()));
} else if (peer->isChannel()) { } else if (peer->isChannel()) {
showPeerHistory(peer->id, ShowAtUnreadMsgId); showPeerHistory(peer->id, ShowAtUnreadMsgId);
} else { } else {
@ -3640,7 +3640,7 @@ bool MainWidget::usernameResolveFail(QString name, const RPCError &error) {
if (mtpIsFlood(error)) return false; if (mtpIsFlood(error)) return false;
if (error.code() == 400) { if (error.code() == 400) {
App::wnd()->showLayer(new InformBox(lng_username_not_found(lt_user, name))); Ui::showLayer(new InformBox(lng_username_not_found(lt_user, name)));
} }
return true; return true;
} }
@ -3652,7 +3652,7 @@ void MainWidget::inviteCheckDone(QString hash, const MTPChatInvite &invite) {
ConfirmBox *box = new ConfirmBox(((d.is_channel() && !d.is_megagroup()) ? lng_group_invite_want_join_channel : lng_group_invite_want_join)(lt_title, qs(d.vtitle)), lang(lng_group_invite_join)); ConfirmBox *box = new ConfirmBox(((d.is_channel() && !d.is_megagroup()) ? lng_group_invite_want_join_channel : lng_group_invite_want_join)(lt_title, qs(d.vtitle)), lang(lng_group_invite_join));
_inviteHash = hash; _inviteHash = hash;
connect(box, SIGNAL(confirmed()), this, SLOT(onInviteImport())); connect(box, SIGNAL(confirmed()), this, SLOT(onInviteImport()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} break; } break;
case mtpc_chatInviteAlready: { case mtpc_chatInviteAlready: {
@ -3669,7 +3669,7 @@ bool MainWidget::inviteCheckFail(const RPCError &error) {
if (mtpIsFlood(error)) return false; if (mtpIsFlood(error)) return false;
if (error.code() == 400) { if (error.code() == 400) {
App::wnd()->showLayer(new InformBox(lang(lng_group_invite_bad_link))); Ui::showLayer(new InformBox(lang(lng_group_invite_bad_link)));
} }
return true; return true;
} }
@ -3682,7 +3682,7 @@ void MainWidget::onInviteImport() {
void MainWidget::inviteImportDone(const MTPUpdates &updates) { void MainWidget::inviteImportDone(const MTPUpdates &updates) {
App::main()->sentUpdatesReceived(updates); App::main()->sentUpdatesReceived(updates);
App::wnd()->hideLayer(); Ui::hideLayer();
const QVector<MTPChat> *v = 0; const QVector<MTPChat> *v = 0;
switch (updates.type()) { switch (updates.type()) {
case mtpc_updates: v = &updates.c_updates().vchats.c_vector().v; break; case mtpc_updates: v = &updates.c_updates().vchats.c_vector().v; break;
@ -3702,7 +3702,7 @@ bool MainWidget::inviteImportFail(const RPCError &error) {
if (mtpIsFlood(error)) return false; if (mtpIsFlood(error)) return false;
if (error.code() == 400) { if (error.code() == 400) {
App::wnd()->showLayer(new InformBox(lang(error.type() == qsl("USERS_TOO_MUCH") ? lng_group_invite_no_room : lng_group_invite_bad_link))); Ui::showLayer(new InformBox(lang(error.type() == qsl("USERS_TOO_MUCH") ? lng_group_invite_no_room : lng_group_invite_bad_link)));
} }
return true; return true;
} }
@ -3915,7 +3915,7 @@ void MainWidget::activate() {
} else { } else {
dialogs.activate(); dialogs.activate();
} }
} else if (App::wnd() && !App::wnd()->layerShown()) { } else if (App::wnd() && !Ui::isLayerShown()) {
if (!cSendPaths().isEmpty()) { if (!cSendPaths().isEmpty()) {
forwardLayer(-1); forwardLayer(-1);
} else if (history.peer()) { } else if (history.peer()) {
@ -4519,7 +4519,7 @@ void MainWidget::feedUpdate(const MTPUpdate &update) {
case mtpc_updateServiceNotification: { case mtpc_updateServiceNotification: {
const MTPDupdateServiceNotification &d(update.c_updateServiceNotification()); const MTPDupdateServiceNotification &d(update.c_updateServiceNotification());
if (mtpIsTrue(d.vpopup)) { if (mtpIsTrue(d.vpopup)) {
App::wnd()->showLayer(new InformBox(qs(d.vmessage))); Ui::showLayer(new InformBox(qs(d.vmessage)));
} else { } else {
App::wnd()->serviceNotification(qs(d.vmessage), d.vmedia); App::wnd()->serviceNotification(qs(d.vmessage), d.vmedia);
} }

View File

@ -486,7 +486,7 @@ void MediaView::showSaveMsgFile() {
void MediaView::close() { void MediaView::close() {
if (_menu) _menu->hideMenu(true); if (_menu) _menu->hideMenu(true);
if (App::wnd()) { if (App::wnd()) {
App::wnd()->hideLayer(true); Ui::hideLayer(true);
} }
} }

View File

@ -2875,7 +2875,7 @@ void OverviewWidget::updateTopBarSelection() {
App::main()->topBar()->showSelected(_selCount > 0 ? _selCount : 0, (selectedForDelete == selectedForForward)); App::main()->topBar()->showSelected(_selCount > 0 ? _selCount : 0, (selectedForDelete == selectedForForward));
App::main()->topBar()->update(); App::main()->topBar()->update();
} }
if (App::wnd() && !App::wnd()->layerShown()) { if (App::wnd() && !Ui::isLayerShown()) {
_inner.activate(); _inner.activate();
} }
update(); update();
@ -3127,7 +3127,7 @@ void OverviewWidget::onDeleteSelectedSure() {
if (App::main() && App::main()->peer() == peer()) { if (App::main() && App::main()->peer() == peer()) {
App::main()->itemResized(0); App::main()->itemResized(0);
} }
App::wnd()->hideLayer(); Ui::hideLayer();
for (QMap<PeerData*, QVector<MTPint> >::const_iterator i = ids.cbegin(), e = ids.cend(); i != e; ++i) { for (QMap<PeerData*, QVector<MTPint> >::const_iterator i = ids.cbegin(), e = ids.cend(); i != e; ++i) {
App::main()->deleteMessages(i.key(), i.value()); App::main()->deleteMessages(i.key(), i.value());
@ -3151,7 +3151,7 @@ void OverviewWidget::onDeleteContextSure() {
if (App::main() && (App::main()->peer() == h->peer || (App::main()->peer() && App::main()->peer() == h->peer->migrateTo()))) { if (App::main() && (App::main()->peer() == h->peer || (App::main()->peer() && App::main()->peer() == h->peer->migrateTo()))) {
App::main()->itemResized(0); App::main()->itemResized(0);
} }
App::wnd()->hideLayer(); Ui::hideLayer();
if (wasOnServer) { if (wasOnServer) {
App::main()->deleteMessages(h->peer, toDelete); App::main()->deleteMessages(h->peer, toDelete);

View File

@ -232,7 +232,7 @@ void ProfileInner::onShareContact() {
} }
void ProfileInner::onInviteToGroup() { void ProfileInner::onInviteToGroup() {
App::wnd()->showLayer(new ContactsBox(_peerUser)); Ui::showLayer(new ContactsBox(_peerUser));
} }
void ProfileInner::onSendMessage() { void ProfileInner::onSendMessage() {
@ -302,36 +302,35 @@ void ProfileInner::onUpdatePhoto() {
} }
PhotoCropBox *box = new PhotoCropBox(img, _peer); PhotoCropBox *box = new PhotoCropBox(img, _peer);
connect(box, SIGNAL(closed()), this, SLOT(onPhotoUpdateStart())); connect(box, SIGNAL(closed()), this, SLOT(onPhotoUpdateStart()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void ProfileInner::onClearHistory() { void ProfileInner::onClearHistory() {
if (_peerChannel) return; if (_peerChannel) return;
ConfirmBox *box = new ConfirmBox(_peer->isUser() ? lng_sure_delete_history(lt_contact, _peer->name) : lng_sure_delete_group_history(lt_group, _peer->name), lang(lng_box_delete), st::attentionBoxButton); ConfirmBox *box = new ConfirmBox(_peer->isUser() ? lng_sure_delete_history(lt_contact, _peer->name) : lng_sure_delete_group_history(lt_group, _peer->name), lang(lng_box_delete), st::attentionBoxButton);
connect(box, SIGNAL(confirmed()), this, SLOT(onClearHistorySure())); connect(box, SIGNAL(confirmed()), this, SLOT(onClearHistorySure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void ProfileInner::onClearHistorySure() { void ProfileInner::onClearHistorySure() {
App::wnd()->hideLayer(); Ui::hideLayer();
App::main()->clearHistory(_peer); App::main()->clearHistory(_peer);
} }
void ProfileInner::onDeleteConversation() { void ProfileInner::onDeleteConversation() {
ConfirmBox *box = new ConfirmBox(_peer->isUser() ? lng_sure_delete_history(lt_contact, _peer->name) : (_peer->isChat() ? lng_sure_delete_and_exit(lt_group, _peer->name) : lang(_peer->isMegagroup() ? lng_sure_leave_group : lng_sure_leave_channel)), lang(_peer->isUser() ? lng_box_delete : lng_box_leave), _peer->isChannel() ? st::defaultBoxButton : st::attentionBoxButton); ConfirmBox *box = new ConfirmBox(_peer->isUser() ? lng_sure_delete_history(lt_contact, _peer->name) : (_peer->isChat() ? lng_sure_delete_and_exit(lt_group, _peer->name) : lang(_peer->isMegagroup() ? lng_sure_leave_group : lng_sure_leave_channel)), lang(_peer->isUser() ? lng_box_delete : lng_box_leave), _peer->isChannel() ? st::defaultBoxButton : st::attentionBoxButton);
connect(box, SIGNAL(confirmed()), this, SLOT(onDeleteConversationSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onDeleteConversationSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void ProfileInner::onDeleteConversationSure() { void ProfileInner::onDeleteConversationSure() {
Ui::hideLayer();
if (_peerUser) { if (_peerUser) {
App::main()->deleteConversation(_peer); App::main()->deleteConversation(_peer);
} else if (_peerChat) { } else if (_peerChat) {
App::wnd()->hideLayer();
App::main()->showDialogs(); App::main()->showDialogs();
MTP::send(MTPmessages_DeleteChatUser(_peerChat->inputChat, App::self()->inputUser), App::main()->rpcDone(&MainWidget::deleteHistoryAfterLeave, _peer), App::main()->rpcFail(&MainWidget::leaveChatFailed, _peer)); MTP::send(MTPmessages_DeleteChatUser(_peerChat->inputChat, App::self()->inputUser), App::main()->rpcDone(&MainWidget::deleteHistoryAfterLeave, _peer), App::main()->rpcFail(&MainWidget::leaveChatFailed, _peer));
} else if (_peerChannel) { } else if (_peerChannel) {
App::wnd()->hideLayer();
App::main()->showDialogs(); App::main()->showDialogs();
if (_peerChannel->migrateFrom()) { if (_peerChannel->migrateFrom()) {
App::main()->deleteConversation(_peerChannel->migrateFrom()); App::main()->deleteConversation(_peerChannel->migrateFrom());
@ -344,12 +343,12 @@ void ProfileInner::onDeleteChannel() {
if (!_peerChannel) return; if (!_peerChannel) return;
ConfirmBox *box = new ConfirmBox(lang(_peer->isMegagroup() ? lng_sure_delete_group : lng_sure_delete_channel), lang(lng_box_delete), st::attentionBoxButton); ConfirmBox *box = new ConfirmBox(lang(_peer->isMegagroup() ? lng_sure_delete_group : lng_sure_delete_channel), lang(lng_box_delete), st::attentionBoxButton);
connect(box, SIGNAL(confirmed()), this, SLOT(onDeleteChannelSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onDeleteChannelSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void ProfileInner::onDeleteChannelSure() { void ProfileInner::onDeleteChannelSure() {
if (_peerChannel) { if (_peerChannel) {
App::wnd()->hideLayer(); Ui::hideLayer();
App::main()->showDialogs(); App::main()->showDialogs();
if (_peerChannel->migrateFrom()) { if (_peerChannel->migrateFrom()) {
App::main()->deleteConversation(_peerChannel->migrateFrom()); App::main()->deleteConversation(_peerChannel->migrateFrom());
@ -382,13 +381,13 @@ bool ProfileInner::blockFail(const RPCError &error) {
void ProfileInner::onAddParticipant() { void ProfileInner::onAddParticipant() {
if (_peerChat) { if (_peerChat) {
App::wnd()->showLayer(new ContactsBox(_peerChat, MembersFilterRecent)); Ui::showLayer(new ContactsBox(_peerChat, MembersFilterRecent));
} else if (_peerChannel && _peerChannel->mgInfo) { } else if (_peerChannel && _peerChannel->mgInfo) {
MembersAlreadyIn already; MembersAlreadyIn already;
for (MegagroupInfo::LastParticipants::const_iterator i = _peerChannel->mgInfo->lastParticipants.cbegin(), e = _peerChannel->mgInfo->lastParticipants.cend(); i != e; ++i) { for (MegagroupInfo::LastParticipants::const_iterator i = _peerChannel->mgInfo->lastParticipants.cbegin(), e = _peerChannel->mgInfo->lastParticipants.cend(); i != e; ++i) {
already.insert(*i, true); already.insert(*i, true);
} }
App::wnd()->showLayer(new ContactsBox(_peerChannel, MembersFilterRecent, already)); Ui::showLayer(new ContactsBox(_peerChannel, MembersFilterRecent, already));
} }
} }
@ -397,7 +396,7 @@ void ProfileInner::onMigrate() {
ConfirmBox *box = new ConfirmBox(lang(lng_profile_migrate_sure)); ConfirmBox *box = new ConfirmBox(lang(lng_profile_migrate_sure));
connect(box, SIGNAL(confirmed()), this, SLOT(onMigrateSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onMigrateSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void ProfileInner::onMigrateSure() { void ProfileInner::onMigrateSure() {
@ -459,7 +458,7 @@ void ProfileInner::onInvitationLink() {
if (!_peerChat && !_peerChannel) return; if (!_peerChat && !_peerChannel) return;
QApplication::clipboard()->setText(_peerChat ? _peerChat->invitationUrl : (_peerChannel ? _peerChannel->invitationUrl : QString())); QApplication::clipboard()->setText(_peerChat ? _peerChat->invitationUrl : (_peerChannel ? _peerChannel->invitationUrl : QString()));
App::wnd()->showLayer(new InformBox(lang(lng_group_invite_copied))); Ui::showLayer(new InformBox(lang(lng_group_invite_copied)));
} }
void ProfileInner::onPublicLink() { void ProfileInner::onPublicLink() {
@ -467,22 +466,22 @@ void ProfileInner::onPublicLink() {
if (_peerChannel->isPublic()) { if (_peerChannel->isPublic()) {
QApplication::clipboard()->setText(qsl("https://telegram.me/") + _peerChannel->username); QApplication::clipboard()->setText(qsl("https://telegram.me/") + _peerChannel->username);
App::wnd()->showLayer(new InformBox(lang(lng_channel_public_link_copied))); Ui::showLayer(new InformBox(lang(lng_channel_public_link_copied)));
} else { } else {
App::wnd()->showLayer(new SetupChannelBox(_peerChannel, true)); Ui::showLayer(new SetupChannelBox(_peerChannel, true));
} }
} }
void ProfileInner::onMembers() { void ProfileInner::onMembers() {
if (!_peerChannel) return; if (!_peerChannel) return;
App::wnd()->showLayer(new MembersBox(_peerChannel, MembersFilterRecent)); Ui::showLayer(new MembersBox(_peerChannel, MembersFilterRecent));
} }
void ProfileInner::onAdmins() { void ProfileInner::onAdmins() {
if (_peerChannel) { if (_peerChannel) {
App::wnd()->showLayer(new MembersBox(_peerChannel, MembersFilterAdmins)); Ui::showLayer(new MembersBox(_peerChannel, MembersFilterAdmins));
} else if (_peerChat) { } else if (_peerChat) {
App::wnd()->showLayer(new ContactsBox(_peerChat, MembersFilterAdmins)); Ui::showLayer(new ContactsBox(_peerChat, MembersFilterAdmins));
} }
} }
@ -491,7 +490,7 @@ void ProfileInner::onCreateInvitationLink() {
ConfirmBox *box = new ConfirmBox(lang(((_peerChat && _peerChat->invitationUrl.isEmpty()) || (_peerChannel && _peerChannel->invitationUrl.isEmpty())) ? lng_group_invite_about : lng_group_invite_about_new)); ConfirmBox *box = new ConfirmBox(lang(((_peerChat && _peerChat->invitationUrl.isEmpty()) || (_peerChannel && _peerChannel->invitationUrl.isEmpty())) ? lng_group_invite_about : lng_group_invite_about_new));
connect(box, SIGNAL(confirmed()), this, SLOT(onCreateInvitationLinkSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onCreateInvitationLinkSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void ProfileInner::onCreateInvitationLinkSure() { void ProfileInner::onCreateInvitationLinkSure() {
@ -514,7 +513,7 @@ void ProfileInner::chatInviteDone(const MTPExportedChatInvite &result) {
updateInvitationLink(); updateInvitationLink();
showAll(); showAll();
resizeEvent(0); resizeEvent(0);
App::wnd()->hideLayer(); Ui::hideLayer();
} }
void ProfileInner::onFullPeerUpdated(PeerData *peer) { void ProfileInner::onFullPeerUpdated(PeerData *peer) {
@ -1075,7 +1074,7 @@ void ProfileInner::mouseReleaseEvent(QMouseEvent *e) {
_kickConfirm = _kickOver; _kickConfirm = _kickOver;
ConfirmBox *box = new ConfirmBox(lng_profile_sure_kick(lt_user, _kickOver->firstName), lang(lng_box_remove)); ConfirmBox *box = new ConfirmBox(lng_profile_sure_kick(lt_user, _kickOver->firstName), lang(lng_box_remove));
connect(box, SIGNAL(confirmed()), this, SLOT(onKickConfirm())); connect(box, SIGNAL(confirmed()), this, SLOT(onKickConfirm()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
if (textlnkDown()) { if (textlnkDown()) {
TextLinkPtr lnk = textlnkDown(); TextLinkPtr lnk = textlnkDown();
@ -1104,7 +1103,7 @@ void ProfileInner::onKickConfirm() {
if (_peerChat) { if (_peerChat) {
App::main()->kickParticipant(_peerChat, _kickConfirm); App::main()->kickParticipant(_peerChat, _kickConfirm);
} else if (_peerChannel) { } else if (_peerChannel) {
App::wnd()->hideLayer(); Ui::hideLayer();
App::api()->kickParticipant(_peerChannel, _kickConfirm); App::api()->kickParticipant(_peerChannel, _kickConfirm);
} }
} }
@ -1236,7 +1235,7 @@ bool ProfileInner::updateMediaLinks(int32 *addToScroll) {
} }
void ProfileInner::migrateDone(const MTPUpdates &updates) { void ProfileInner::migrateDone(const MTPUpdates &updates) {
App::wnd()->hideLayer(); Ui::hideLayer();
App::main()->sentUpdatesReceived(updates); App::main()->sentUpdatesReceived(updates);
const QVector<MTPChat> *v = 0; const QVector<MTPChat> *v = 0;
switch (updates.type()) { switch (updates.type()) {
@ -1262,7 +1261,7 @@ void ProfileInner::migrateDone(const MTPUpdates &updates) {
bool ProfileInner::migrateFail(const RPCError &error) { bool ProfileInner::migrateFail(const RPCError &error) {
if (mtpIsFlood(error)) return false; if (mtpIsFlood(error)) return false;
App::wnd()->hideLayer(); Ui::hideLayer();
return true; return true;
} }

View File

@ -783,14 +783,14 @@ void SettingsInner::keyPressEvent(QKeyEvent *e) {
QString text = cDebug() ? qsl("Do you want to disable DEBUG logs?") : qsl("Do you want to enable DEBUG logs?\n\nAll network events will be logged."); QString text = cDebug() ? qsl("Do you want to disable DEBUG logs?") : qsl("Do you want to enable DEBUG logs?\n\nAll network events will be logged.");
ConfirmBox *box = new ConfirmBox(text); ConfirmBox *box = new ConfirmBox(text);
connect(box, SIGNAL(confirmed()), App::app(), SLOT(onSwitchDebugMode())); connect(box, SIGNAL(confirmed()), App::app(), SLOT(onSwitchDebugMode()));
App::wnd()->showLayer(box); Ui::showLayer(box);
from = size; from = size;
break; break;
} else if (str == qstr("testmode")) { } else if (str == qstr("testmode")) {
QString text = cTestMode() ? qsl("Do you want to disable TEST mode?") : qsl("Do you want to enable TEST mode?\n\nYou will be switched to test cloud."); QString text = cTestMode() ? qsl("Do you want to disable TEST mode?") : qsl("Do you want to enable TEST mode?\n\nYou will be switched to test cloud.");
ConfirmBox *box = new ConfirmBox(text); ConfirmBox *box = new ConfirmBox(text);
connect(box, SIGNAL(confirmed()), App::app(), SLOT(onSwitchTestMode())); connect(box, SIGNAL(confirmed()), App::app(), SLOT(onSwitchTestMode()));
App::wnd()->showLayer(box); Ui::showLayer(box);
from = size; from = size;
break; break;
} else if (str == qstr("loadlang")) { } else if (str == qstr("loadlang")) {
@ -831,7 +831,7 @@ void SettingsInner::mousePressEvent(QMouseEvent *e) {
return; return;
} }
if (QRect(_uploadPhoto.x() + st::setNameLeft, st::setTop + st::setNameTop, qMin(_uploadPhoto.width() - int(st::setNameLeft), _nameText.maxWidth()), st::setNameFont->height).contains(e->pos())) { if (QRect(_uploadPhoto.x() + st::setNameLeft, st::setTop + st::setNameTop, qMin(_uploadPhoto.width() - int(st::setNameLeft), _nameText.maxWidth()), st::setNameFont->height).contains(e->pos())) {
App::wnd()->showLayer(new EditNameTitleBox(self())); Ui::showLayer(new EditNameTitleBox(self()));
} else if (QRect(_left, st::setTop, st::setPhotoSize, st::setPhotoSize).contains(e->pos())) { } else if (QRect(_left, st::setTop, st::setPhotoSize, st::setPhotoSize).contains(e->pos())) {
if (_photoLink) { if (_photoLink) {
App::photo(self()->photoId)->full->load(); App::photo(self()->photoId)->full->load();
@ -1178,12 +1178,12 @@ void SettingsInner::onUpdatePhoto() {
} }
PhotoCropBox *box = new PhotoCropBox(img, self()); PhotoCropBox *box = new PhotoCropBox(img, self());
connect(box, SIGNAL(closed()), this, SLOT(onPhotoUpdateStart())); connect(box, SIGNAL(closed()), this, SLOT(onPhotoUpdateStart()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onShowSessions() { void SettingsInner::onShowSessions() {
SessionsBox *box = new SessionsBox(); SessionsBox *box = new SessionsBox();
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onAskQuestion() { void SettingsInner::onAskQuestion() {
@ -1192,7 +1192,7 @@ void SettingsInner::onAskQuestion() {
ConfirmBox *box = new ConfirmBox(lang(lng_settings_ask_sure), lang(lng_settings_ask_ok), st::defaultBoxButton, lang(lng_settings_faq_button)); ConfirmBox *box = new ConfirmBox(lang(lng_settings_ask_sure), lang(lng_settings_ask_ok), st::defaultBoxButton, lang(lng_settings_faq_button));
connect(box, SIGNAL(confirmed()), this, SLOT(onAskQuestionSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onAskQuestionSure()));
connect(box, SIGNAL(cancelPressed()), this, SLOT(onTelegramFAQ())); connect(box, SIGNAL(cancelPressed()), this, SLOT(onTelegramFAQ()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onAskQuestionSure() { void SettingsInner::onAskQuestionSure() {
@ -1217,9 +1217,9 @@ void SettingsInner::chooseCustomLang() {
cancel = result.value(lng_cancel, langOriginal(lng_cancel)); cancel = result.value(lng_cancel, langOriginal(lng_cancel));
ConfirmBox *box = new ConfirmBox(text, save, st::defaultBoxButton, cancel); ConfirmBox *box = new ConfirmBox(text, save, st::defaultBoxButton, cancel);
connect(box, SIGNAL(confirmed()), this, SLOT(onSaveTestLang())); connect(box, SIGNAL(confirmed()), this, SLOT(onSaveTestLang()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} else { } else {
App::wnd()->showLayer(new InformBox("Custom lang failed :(\n\nError: " + loader.errors())); Ui::showLayer(new InformBox("Custom lang failed :(\n\nError: " + loader.errors()));
} }
} }
} }
@ -1228,7 +1228,7 @@ void SettingsInner::onChangeLanguage() {
if ((_changeLanguage.clickModifiers() & Qt::ShiftModifier) && (_changeLanguage.clickModifiers() & Qt::AltModifier)) { if ((_changeLanguage.clickModifiers() & Qt::ShiftModifier) && (_changeLanguage.clickModifiers() & Qt::AltModifier)) {
chooseCustomLang(); chooseCustomLang();
} else { } else {
App::wnd()->showLayer(new LanguageBox()); Ui::showLayer(new LanguageBox());
} }
} }
@ -1293,19 +1293,19 @@ void SettingsInner::onRestartNow() {
void SettingsInner::onPasscode() { void SettingsInner::onPasscode() {
PasscodeBox *box = new PasscodeBox(); PasscodeBox *box = new PasscodeBox();
connect(box, SIGNAL(closed()), this, SLOT(passcodeChanged())); connect(box, SIGNAL(closed()), this, SLOT(passcodeChanged()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onPasscodeOff() { void SettingsInner::onPasscodeOff() {
PasscodeBox *box = new PasscodeBox(true); PasscodeBox *box = new PasscodeBox(true);
connect(box, SIGNAL(closed()), this, SLOT(passcodeChanged())); connect(box, SIGNAL(closed()), this, SLOT(passcodeChanged()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onPassword() { void SettingsInner::onPassword() {
PasscodeBox *box = new PasscodeBox(_newPasswordSalt, _curPasswordSalt, _hasPasswordRecovery, _curPasswordHint); PasscodeBox *box = new PasscodeBox(_newPasswordSalt, _curPasswordSalt, _hasPasswordRecovery, _curPasswordHint);
connect(box, SIGNAL(reloadPassword()), this, SLOT(onReloadPassword())); connect(box, SIGNAL(reloadPassword()), this, SLOT(onReloadPassword()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onPasswordOff() { void SettingsInner::onPasswordOff() {
@ -1319,7 +1319,7 @@ void SettingsInner::onPasswordOff() {
} else { } else {
PasscodeBox *box = new PasscodeBox(_newPasswordSalt, _curPasswordSalt, _hasPasswordRecovery, _curPasswordHint, true); PasscodeBox *box = new PasscodeBox(_newPasswordSalt, _curPasswordSalt, _hasPasswordRecovery, _curPasswordHint, true);
connect(box, SIGNAL(reloadPassword()), this, SLOT(onReloadPassword())); connect(box, SIGNAL(reloadPassword()), this, SLOT(onReloadPassword()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
} }
@ -1332,19 +1332,19 @@ void SettingsInner::onReloadPassword(Qt::ApplicationState state) {
void SettingsInner::onAutoLock() { void SettingsInner::onAutoLock() {
AutoLockBox *box = new AutoLockBox(); AutoLockBox *box = new AutoLockBox();
connect(box, SIGNAL(closed()), this, SLOT(passcodeChanged())); connect(box, SIGNAL(closed()), this, SLOT(passcodeChanged()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onConnectionType() { void SettingsInner::onConnectionType() {
ConnectionBox *box = new ConnectionBox(); ConnectionBox *box = new ConnectionBox();
connect(box, SIGNAL(closed()), this, SLOT(updateConnectionType()), Qt::QueuedConnection); connect(box, SIGNAL(closed()), this, SLOT(updateConnectionType()), Qt::QueuedConnection);
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onUsername() { void SettingsInner::onUsername() {
UsernameBox *box = new UsernameBox(); UsernameBox *box = new UsernameBox();
connect(box, SIGNAL(closed()), this, SLOT(usernameChanged())); connect(box, SIGNAL(closed()), this, SLOT(usernameChanged()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onWorkmodeTray() { void SettingsInner::onWorkmodeTray() {
@ -1445,7 +1445,7 @@ void SettingsInner::setScale(DBIScale newScale) {
if (cEvalScale(cConfigScale()) != cEvalScale(cRealScale())) { if (cEvalScale(cConfigScale()) != cEvalScale(cRealScale())) {
ConfirmBox *box = new ConfirmBox(lang(lng_settings_need_restart), lang(lng_settings_restart_now), st::defaultBoxButton, lang(lng_settings_restart_later)); ConfirmBox *box = new ConfirmBox(lang(lng_settings_need_restart), lang(lng_settings_restart_now), st::defaultBoxButton, lang(lng_settings_restart_later));
connect(box, SIGNAL(confirmed()), this, SLOT(onRestartNow())); connect(box, SIGNAL(confirmed()), this, SLOT(onRestartNow()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
} }
@ -1528,11 +1528,11 @@ void SettingsInner::onReplaceEmojis() {
} }
void SettingsInner::onViewEmojis() { void SettingsInner::onViewEmojis() {
App::showLayer(new EmojiBox()); Ui::showLayer(new EmojiBox());
} }
void SettingsInner::onStickers() { void SettingsInner::onStickers() {
App::showLayer(new StickersBox()); Ui::showLayer(new StickersBox());
} }
void SettingsInner::onEnterSend() { void SettingsInner::onEnterSend() {
@ -1553,7 +1553,7 @@ void SettingsInner::onCtrlEnterSend() {
void SettingsInner::onBackFromGallery() { void SettingsInner::onBackFromGallery() {
BackgroundBox *box = new BackgroundBox(); BackgroundBox *box = new BackgroundBox();
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onBackFromFile() { void SettingsInner::onBackFromFile() {
@ -1631,7 +1631,7 @@ void SettingsInner::onDontAskDownloadPath() {
void SettingsInner::onDownloadPathEdit() { void SettingsInner::onDownloadPathEdit() {
DownloadPathBox *box = new DownloadPathBox(); DownloadPathBox *box = new DownloadPathBox();
connect(box, SIGNAL(closed()), this, SLOT(onDownloadPathEdited())); connect(box, SIGNAL(closed()), this, SLOT(onDownloadPathEdited()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onDownloadPathEdited() { void SettingsInner::onDownloadPathEdited() {
@ -1650,11 +1650,11 @@ void SettingsInner::onDownloadPathEdited() {
void SettingsInner::onDownloadPathClear() { void SettingsInner::onDownloadPathClear() {
ConfirmBox *box = new ConfirmBox(lang(lng_sure_clear_downloads)); ConfirmBox *box = new ConfirmBox(lang(lng_sure_clear_downloads));
connect(box, SIGNAL(confirmed()), this, SLOT(onDownloadPathClearSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onDownloadPathClearSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void SettingsInner::onDownloadPathClearSure() { void SettingsInner::onDownloadPathClearSure() {
App::wnd()->hideLayer(); Ui::hideLayer();
App::wnd()->tempDirDelete(Local::ClearManagerDownloads); App::wnd()->tempDirDelete(Local::ClearManagerDownloads);
_tempDirClearState = TempDirClearing; _tempDirClearState = TempDirClearing;
showAll(); showAll();

View File

@ -1042,7 +1042,7 @@ void PeerLink::onClick(Qt::MouseButton button) const {
if (button == Qt::LeftButton && App::main()) { if (button == Qt::LeftButton && App::main()) {
if (peer() && peer()->isChannel() && App::main()->historyPeer() != peer()) { if (peer() && peer()->isChannel() && App::main()->historyPeer() != peer()) {
if (!peer()->asChannel()->isPublic() && !peer()->asChannel()->amIn()) { if (!peer()->asChannel()->isPublic() && !peer()->asChannel()->amIn()) {
App::wnd()->showLayer(new InformBox(lang((peer()->isMegagroup()) ? lng_group_not_accessible : lng_channel_not_accessible))); Ui::showLayer(new InformBox(lang((peer()->isMegagroup()) ? lng_group_not_accessible : lng_channel_not_accessible)));
} else { } else {
App::main()->showPeerHistory(peer()->id, ShowAtUnreadMsgId); App::main()->showPeerHistory(peer()->id, ShowAtUnreadMsgId);
} }

View File

@ -143,12 +143,12 @@ void TitleWidget::onContacts() {
if (App::wnd() && App::wnd()->isHidden()) App::wnd()->showFromTray(); if (App::wnd() && App::wnd()->isHidden()) App::wnd()->showFromTray();
if (!App::self()) return; if (!App::self()) return;
App::wnd()->showLayer(new ContactsBox()); Ui::showLayer(new ContactsBox());
} }
void TitleWidget::onAbout() { void TitleWidget::onAbout() {
if (App::wnd() && App::wnd()->isHidden()) App::wnd()->showFromTray(); if (App::wnd() && App::wnd()->isHidden()) App::wnd()->showFromTray();
App::wnd()->showLayer(new AboutBox()); Ui::showLayer(new AboutBox());
} }
TitleWidget::~TitleWidget() { TitleWidget::~TitleWidget() {
@ -365,7 +365,7 @@ void TitleWidget::maximizedChanged(bool maximized, bool force) {
} }
HitTestType TitleWidget::hitTest(const QPoint &p) { HitTestType TitleWidget::hitTest(const QPoint &p) {
if (App::wnd() && App::wnd()->layerShown()) return HitTestNone; if (App::wnd() && Ui::isLayerShown()) return HitTestNone;
int x(p.x()), y(p.y()), w(width()), h(height()); int x(p.x()), y(p.y()), w(width()), h(height());
if (cWideMode() && hider && x >= App::main()->dlgsWidth()) return HitTestNone; if (cWideMode() && hider && x >= App::main()->dlgsWidth()) return HitTestNone;

View File

@ -443,3 +443,13 @@ enum ForwardWhatMessages {
ForwardPressedMessage, ForwardPressedMessage,
ForwardPressedLinkMessage ForwardPressedLinkMessage
}; };
enum ShowLayerOption {
CloseOtherLayers = 0x00,
KeepOtherLayers = 0x01,
ShowAfterOtherLayers = 0x03,
AnimatedShowLayer = 0x00,
ForceFastShowLayer = 0x04,
};
typedef QFlags<ShowLayerOption> ShowLayerOptions;

View File

@ -474,7 +474,7 @@ QWidget *Window::filedialogParent() {
} }
void Window::clearWidgets() { void Window::clearWidgets() {
hideLayer(true); Ui::hideLayer(true);
if (_passcode) { if (_passcode) {
_passcode->hide(); _passcode->hide();
_passcode->deleteLater(); _passcode->deleteLater();
@ -679,7 +679,7 @@ void Window::showSettings() {
if (isHidden()) showFromTray(); if (isHidden()) showFromTray();
App::wnd()->hideLayer(); Ui::hideLayer();
if (settings) { if (settings) {
return hideSettings(); return hideSettings();
} }
@ -774,49 +774,65 @@ void Window::showPhoto(const PhotoLink *lnk, HistoryItem *item) {
} }
void Window::showPhoto(PhotoData *photo, HistoryItem *item) { void Window::showPhoto(PhotoData *photo, HistoryItem *item) {
hideLayer(true); Ui::hideLayer(true);
_mediaView->showPhoto(photo, item); _mediaView->showPhoto(photo, item);
_mediaView->activateWindow(); _mediaView->activateWindow();
_mediaView->setFocus(); _mediaView->setFocus();
} }
void Window::showPhoto(PhotoData *photo, PeerData *peer) { void Window::showPhoto(PhotoData *photo, PeerData *peer) {
hideLayer(true); Ui::hideLayer(true);
_mediaView->showPhoto(photo, peer); _mediaView->showPhoto(photo, peer);
_mediaView->activateWindow(); _mediaView->activateWindow();
_mediaView->setFocus(); _mediaView->setFocus();
} }
void Window::showDocument(DocumentData *doc, HistoryItem *item) { void Window::showDocument(DocumentData *doc, HistoryItem *item) {
hideLayer(true); Ui::hideLayer(true);
_mediaView->showDocument(doc, item); _mediaView->showDocument(doc, item);
_mediaView->activateWindow(); _mediaView->activateWindow();
_mediaView->setFocus(); _mediaView->setFocus();
} }
void Window::showLayer(LayeredWidget *w, bool forceFast) { void Window::ui_showLayer(LayeredWidget *box, ShowLayerOptions options) {
bool fast = forceFast || layerShown(); if (box) {
hideLayer(true); bool fast = (options.testFlag(ForceFastShowLayer)) || Ui::isLayerShown();
layerBg = new BackgroundWidget(this, w); if (layerBg) {
if (fast) { if (options.testFlag(KeepOtherLayers)) {
layerBg->showFast(); if (options.testFlag(ShowAfterOtherLayers)) {
layerBg->showLayerLast(box);
return;
} else {
layerBg->replaceInner(box);
return;
}
} else {
layerBg->onClose();
layerBg->hide();
layerBg->deleteLater();
layerBg = 0;
}
}
layerBg = new BackgroundWidget(this, box);
if (fast) {
layerBg->showFast();
}
} else {
if (layerBg) {
layerBg->onClose();
if (options.testFlag(ForceFastShowLayer)) {
layerBg->hide();
layerBg->deleteLater();
layerBg = 0;
}
}
hideMediaview();
} }
} }
void Window::replaceLayer(LayeredWidget *w) { bool Window::ui_isLayerShown() {
if (layerBg) { return !!layerBg;
layerBg->replaceInner(w);
} else {
layerBg = new BackgroundWidget(this, w);
}
}
void Window::showLayerLast(LayeredWidget *w) {
if (layerBg) {
layerBg->showLayerLast(w);
} else {
layerBg = new BackgroundWidget(this, w);
}
} }
void Window::showConnecting(const QString &text, const QString &reconnect) { void Window::showConnecting(const QString &text, const QString &reconnect) {
@ -843,29 +859,6 @@ void Window::hideConnecting() {
if (settings) settings->update(); if (settings) settings->update();
} }
void Window::hideLayer(bool fast) {
if (layerBg) {
layerBg->onClose();
if (fast) {
layerBg->hide();
layerBg->deleteLater();
layerBg = 0;
}
}
hideMediaview();
}
bool Window::hideInnerLayer() {
if (layerBg) {
return layerBg->onInnerClose();
}
return true;
}
bool Window::layerShown() {
return !!layerBg;
}
bool Window::historyIsActive() const { bool Window::historyIsActive() const {
return isActive(false) && main && main->historyIsActive() && (!settings || !settings->isVisible()); return isActive(false) && main && main->historyIsActive() && (!settings || !settings->isVisible());
} }
@ -1090,13 +1083,13 @@ void Window::onShowAddContact() {
void Window::onShowNewGroup() { void Window::onShowNewGroup() {
if (isHidden()) showFromTray(); if (isHidden()) showFromTray();
if (main) replaceLayer(new GroupInfoBox(CreatingGroupGroup, false)); if (main) Ui::showLayer(new GroupInfoBox(CreatingGroupGroup, false), KeepOtherLayers);
} }
void Window::onShowNewChannel() { void Window::onShowNewChannel() {
if (isHidden()) showFromTray(); if (isHidden()) showFromTray();
if (main) replaceLayer(new GroupInfoBox(CreatingGroupChannel, false)); if (main) Ui::showLayer(new GroupInfoBox(CreatingGroupChannel, false), KeepOtherLayers);
} }
void Window::onLogout() { void Window::onLogout() {
@ -1104,7 +1097,7 @@ void Window::onLogout() {
ConfirmBox *box = new ConfirmBox(lang(lng_sure_logout), lang(lng_settings_logout), st::attentionBoxButton); ConfirmBox *box = new ConfirmBox(lang(lng_sure_logout), lang(lng_settings_logout), st::attentionBoxButton);
connect(box, SIGNAL(confirmed()), this, SLOT(onLogoutSure())); connect(box, SIGNAL(confirmed()), this, SLOT(onLogoutSure()));
App::wnd()->showLayer(box); Ui::showLayer(box);
} }
void Window::onLogoutSure() { void Window::onLogoutSure() {
@ -1198,7 +1191,7 @@ void Window::toggleTray(QSystemTrayIcon::ActivationReason reason) {
void Window::toggleDisplayNotifyFromTray() { void Window::toggleDisplayNotifyFromTray() {
if (App::passcoded()) { if (App::passcoded()) {
if (!isActive()) showFromTray(); if (!isActive()) showFromTray();
showLayer(new InformBox(lang(lng_passcode_need_unblock))); Ui::showLayer(new InformBox(lang(lng_passcode_need_unblock)));
return; return;
} }
cSetDesktopNotify(!cDesktopNotify()); cSetDesktopNotify(!cDesktopNotify());
@ -1781,9 +1774,7 @@ void Window::sendPaths() {
if (settings) { if (settings) {
hideSettings(); hideSettings();
} else { } else {
if (layerShown()) { Ui::hideLayer();
hideLayer();
}
if (main) { if (main) {
main->activate(); main->activate();
} }

View File

@ -182,14 +182,8 @@ public:
void showPhoto(PhotoData *photo, PeerData *item); void showPhoto(PhotoData *photo, PeerData *item);
void showDocument(DocumentData *doc, HistoryItem *item); void showDocument(DocumentData *doc, HistoryItem *item);
void showLayer(LayeredWidget *w, bool forceFast = false); void ui_showLayer(LayeredWidget *box, ShowLayerOptions options);
void replaceLayer(LayeredWidget *w); bool ui_isLayerShown();
void showLayerLast(LayeredWidget *w);
void hideLayer(bool fast = false);
bool hideInnerLayer();
bool layerShown();
bool historyIsActive() const; bool historyIsActive() const;

View File

@ -89,6 +89,7 @@ SOURCES += \
./SourceFiles/autoupdater.cpp \ ./SourceFiles/autoupdater.cpp \
./SourceFiles/dialogswidget.cpp \ ./SourceFiles/dialogswidget.cpp \
./SourceFiles/dropdown.cpp \ ./SourceFiles/dropdown.cpp \
./SourceFiles/facades.cpp \
./SourceFiles/fileuploader.cpp \ ./SourceFiles/fileuploader.cpp \
./SourceFiles/history.cpp \ ./SourceFiles/history.cpp \
./SourceFiles/historywidget.cpp \ ./SourceFiles/historywidget.cpp \
@ -112,6 +113,7 @@ SOURCES += \
./SourceFiles/types.cpp \ ./SourceFiles/types.cpp \
./SourceFiles/window.cpp \ ./SourceFiles/window.cpp \
./SourceFiles/mtproto/mtp.cpp \ ./SourceFiles/mtproto/mtp.cpp \
./SourceFiles/mtproto/mtpAuthKey.cpp \
./SourceFiles/mtproto/mtpConnection.cpp \ ./SourceFiles/mtproto/mtpConnection.cpp \
./SourceFiles/mtproto/mtpCoreTypes.cpp \ ./SourceFiles/mtproto/mtpCoreTypes.cpp \
./SourceFiles/mtproto/mtpDC.cpp \ ./SourceFiles/mtproto/mtpDC.cpp \
@ -175,6 +177,7 @@ HEADERS += \
./SourceFiles/countries.h \ ./SourceFiles/countries.h \
./SourceFiles/dialogswidget.h \ ./SourceFiles/dialogswidget.h \
./SourceFiles/dropdown.h \ ./SourceFiles/dropdown.h \
./SourceFiles/facades.h \
./SourceFiles/fileuploader.h \ ./SourceFiles/fileuploader.h \
./SourceFiles/history.h \ ./SourceFiles/history.h \
./SourceFiles/historywidget.h \ ./SourceFiles/historywidget.h \