From bfc748cd310d514e4335207867748f2a55ef92c6 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 31 May 2018 15:20:28 +0300 Subject: [PATCH] Pass modifiers inside InputField submitted signal. Also use non-MOC connections for all InputFields. Also use Ctrl/Cmd + Enter to submit fast share box. Fixes #4769. --- .../SourceFiles/boxes/add_contact_box.cpp | 88 +++++++++---------- Telegram/SourceFiles/boxes/add_contact_box.h | 46 +++------- .../SourceFiles/boxes/change_phone_box.cpp | 12 +-- .../SourceFiles/boxes/confirm_phone_box.cpp | 12 +-- .../SourceFiles/boxes/confirm_phone_box.h | 6 +- .../SourceFiles/boxes/edit_caption_box.cpp | 10 +-- Telegram/SourceFiles/boxes/edit_color_box.cpp | 48 +++++----- Telegram/SourceFiles/boxes/edit_color_box.h | 8 +- Telegram/SourceFiles/boxes/passcode_box.cpp | 76 ++++++++-------- Telegram/SourceFiles/boxes/passcode_box.h | 24 +++-- Telegram/SourceFiles/boxes/peer_list_box.cpp | 2 +- .../boxes/peers/edit_peer_info_box.cpp | 4 +- Telegram/SourceFiles/boxes/rate_call_box.cpp | 13 +-- Telegram/SourceFiles/boxes/rate_call_box.h | 11 +-- Telegram/SourceFiles/boxes/report_box.cpp | 14 +-- Telegram/SourceFiles/boxes/report_box.h | 11 +-- Telegram/SourceFiles/boxes/send_files_box.cpp | 15 ++-- Telegram/SourceFiles/boxes/share_box.cpp | 9 +- Telegram/SourceFiles/boxes/stickers_box.cpp | 4 +- Telegram/SourceFiles/boxes/username_box.cpp | 20 ++--- Telegram/SourceFiles/boxes/username_box.h | 17 ++-- .../chat_helpers/gifs_list_widget.cpp | 8 +- .../chat_helpers/stickers_list_widget.cpp | 6 +- .../admin_log/history_admin_log_section.cpp | 16 ++-- .../SourceFiles/history/history_widget.cpp | 6 +- Telegram/SourceFiles/history/history_widget.h | 3 +- Telegram/SourceFiles/passcodewidget.cpp | 16 ++-- Telegram/SourceFiles/passcodewidget.h | 10 +-- Telegram/SourceFiles/ui/countryinput.cpp | 2 +- .../SourceFiles/ui/widgets/input_fields.cpp | 6 +- .../SourceFiles/ui/widgets/input_fields.h | 6 +- .../SourceFiles/ui/widgets/multi_select.cpp | 23 +++-- .../SourceFiles/ui/widgets/multi_select.h | 18 ++-- .../window/notifications_manager_default.cpp | 22 ++--- .../window/notifications_manager_default.h | 10 +-- .../window/themes/window_theme_editor.cpp | 2 +- 36 files changed, 272 insertions(+), 332 deletions(-) diff --git a/Telegram/SourceFiles/boxes/add_contact_box.cpp b/Telegram/SourceFiles/boxes/add_contact_box.cpp index 6618191329..b83696c731 100644 --- a/Telegram/SourceFiles/boxes/add_contact_box.cpp +++ b/Telegram/SourceFiles/boxes/add_contact_box.cpp @@ -122,9 +122,9 @@ void AddContactBox::prepare() { } updateButtons(); - connect(_first, SIGNAL(submitted(bool)), this, SLOT(onSubmit())); - connect(_last, SIGNAL(submitted(bool)), this, SLOT(onSubmit())); - connect(_phone, SIGNAL(submitted(bool)), this, SLOT(onSubmit())); + connect(_first, &Ui::InputField::submitted, [=] { submit(); }); + connect(_last, &Ui::InputField::submitted, [=] { submit(); }); + connect(_phone, &Ui::PhoneInput::submitted, [=] { submit(); }); setDimensions(st::boxWideWidth, st::contactPadding.top() + _first->height() + st::contactSkip + _last->height() + st::contactPhoneSkip + _phone->height() + st::contactPadding.bottom() + st::boxPadding.bottom()); } @@ -170,21 +170,21 @@ void AddContactBox::resizeEvent(QResizeEvent *e) { } } -void AddContactBox::onSubmit() { +void AddContactBox::submit() { if (_first->hasFocus()) { _last->setFocus(); } else if (_last->hasFocus()) { if (_phone->isEnabled()) { _phone->setFocus(); } else { - onSave(); + save(); } } else if (_phone->hasFocus()) { - onSave(); + save(); } } -void AddContactBox::onSave() { +void AddContactBox::save() { if (_addRequest) return; auto firstName = TextUtilities::PrepareForSending(_first->getLastText()); @@ -274,7 +274,7 @@ void AddContactBox::onSaveUserDone(const MTPcontacts_ImportedContacts &res) { closeBox(); } -void AddContactBox::onRetry() { +void AddContactBox::retry() { _addRequest = 0; _contactId = 0; showChildren(); @@ -291,9 +291,9 @@ void AddContactBox::onRetry() { void AddContactBox::updateButtons() { clearButtons(); if (_retrying) { - addButton(langFactory(lng_try_other_contact), [this] { onRetry(); }); + addButton(langFactory(lng_try_other_contact), [this] { retry(); }); } else { - addButton(langFactory(_user ? lng_settings_save : lng_add_contact), [this] { onSave(); }); + addButton(langFactory(_user ? lng_settings_save : lng_add_contact), [this] { save(); }); addButton(langFactory(lng_cancel), [this] { closeBox(); }); } } @@ -335,14 +335,14 @@ void GroupInfoBox::prepare() { _description->setInstantReplacesEnabled( Global::ReplaceEmojiValue()); - connect(_description, SIGNAL(resized()), this, SLOT(onDescriptionResized())); - connect(_description, SIGNAL(submitted(bool)), this, SLOT(onNext())); - connect(_description, SIGNAL(cancelled()), this, SLOT(onClose())); + connect(_description, &Ui::InputField::resized, [=] { descriptionResized(); }); + connect(_description, &Ui::InputField::submitted, [=] { submit(); }); + connect(_description, &Ui::InputField::cancelled, [=] { closeBox(); }); } - connect(_title, SIGNAL(submitted(bool)), this, SLOT(onNameSubmit())); + connect(_title, &Ui::InputField::submitted, [=] { submitName(); }); - addButton(langFactory(_creating == CreatingGroupChannel ? lng_create_group_create : lng_create_group_next), [this] { onNext(); }); + addButton(langFactory(_creating == CreatingGroupChannel ? lng_create_group_create : lng_create_group_next), [this] { submit(); }); addButton(langFactory(_fromTypeChoose ? lng_create_group_back : lng_cancel), [this] { closeBox(); }); updateMaxHeight(); @@ -373,14 +373,14 @@ void GroupInfoBox::resizeEvent(QResizeEvent *e) { } } -void GroupInfoBox::onNameSubmit() { +void GroupInfoBox::submitName() { if (_title->getLastText().trimmed().isEmpty()) { _title->setFocus(); _title->showError(); } else if (_description) { _description->setFocus(); } else { - onNext(); + submit(); } } @@ -460,7 +460,7 @@ void GroupInfoBox::createGroup(not_null selectUsersBox, const QStr }).send(); } -void GroupInfoBox::onNext() { +void GroupInfoBox::submit() { if (_creationRequestId) return; auto title = TextUtilities::PrepareForSending(_title->getLastText()); @@ -560,7 +560,7 @@ void GroupInfoBox::createChannel(const QString &title, const QString &descriptio }).send(); } -void GroupInfoBox::onDescriptionResized() { +void GroupInfoBox::descriptionResized() { updateMaxHeight(); update(); } @@ -598,14 +598,14 @@ void SetupChannelBox::prepare() { _checkRequestId = MTP::send(MTPchannels_CheckUsername(_channel->inputChannel, MTP_string("preston")), RPCDoneHandlerPtr(), rpcFail(&SetupChannelBox::onFirstCheckFail)); - addButton(langFactory(lng_settings_save), [this] { onSave(); }); - addButton(langFactory(_existing ? lng_cancel : lng_create_group_skip), [this] { closeBox(); }); + addButton(langFactory(lng_settings_save), [=] { save(); }); + addButton(langFactory(_existing ? lng_cancel : lng_create_group_skip), [=] { closeBox(); }); - connect(_link, SIGNAL(changed()), this, SLOT(onChange())); + connect(_link, &Ui::MaskedInputField::changed, [=] { handleChange(); }); _link->setVisible(_privacyGroup->value() == Privacy::Public); _checkTimer.setSingleShot(true); - connect(&_checkTimer, SIGNAL(timeout()), this, SLOT(onCheck())); + connect(&_checkTimer, &QTimer::timeout, [=] { check(); }); _privacyGroup->setChangedCallback([this](Privacy value) { privacyChanged(value); }); subscribe(Notify::PeerUpdated(), Notify::PeerUpdatedHandler(Notify::PeerUpdate::Flag::InviteLinkChanged, [this](const Notify::PeerUpdate &update) { @@ -644,7 +644,7 @@ void SetupChannelBox::keyPressEvent(QKeyEvent *e) { _link->setFocus(); _link->showError(); } else { - onSave(); + save(); } } } else { @@ -733,7 +733,7 @@ void SetupChannelBox::updateSelected(const QPoint &cursorGlobalPosition) { } } -void SetupChannelBox::onSave() { +void SetupChannelBox::save() { if (_privacyGroup->value() == Privacy::Private) { if (_existing) { _sentUsername = QString(); @@ -756,7 +756,7 @@ void SetupChannelBox::onSave() { _saveRequestId = MTP::send(MTPchannels_UpdateUsername(_channel->inputChannel, MTP_string(_sentUsername)), rpcDone(&SetupChannelBox::onUpdateDone), rpcFail(&SetupChannelBox::onUpdateFail)); } -void SetupChannelBox::onChange() { +void SetupChannelBox::handleChange() { QString name = _link->text().trimmed(); if (name.isEmpty()) { if (!_errorText.isEmpty() || !_goodText.isEmpty()) { @@ -793,7 +793,7 @@ void SetupChannelBox::onChange() { } } -void SetupChannelBox::onCheck() { +void SetupChannelBox::check() { if (_checkRequestId) { MTP::cancel(_checkRequestId); } @@ -816,7 +816,7 @@ void SetupChannelBox::privacyChanged(Privacy value) { Ui::show(Box(base::lambda_guarded(this, [this] { _tooMuchUsernames = false; _privacyGroup->setValue(Privacy::Public); - onCheck(); + check(); })), LayerOption::KeepOther); return; } @@ -952,16 +952,16 @@ void EditNameBox::prepare() { newHeight += st::boxPadding.bottom() + st::contactPadding.bottom(); setDimensions(st::boxWideWidth, newHeight); - addButton(langFactory(lng_settings_save), [this] { save(); }); - addButton(langFactory(lng_cancel), [this] { closeBox(); }); + addButton(langFactory(lng_settings_save), [=] { save(); }); + addButton(langFactory(lng_cancel), [=] { closeBox(); }); if (_invertOrder) { setTabOrder(_last, _first); } _first->setMaxLength(kMaxGroupChannelTitle); _last->setMaxLength(kMaxGroupChannelTitle); - connect(_first, &Ui::InputField::submitted, this, [this] { submit(); }); - connect(_last, &Ui::InputField::submitted, this, [this] { submit(); }); + connect(_first, &Ui::InputField::submitted, [=] { submit(); }); + connect(_last, &Ui::InputField::submitted, [=] { submit(); }); } void EditNameBox::setInnerFocus() { @@ -1081,9 +1081,9 @@ void EditBioBox::prepare() { auto cursor = _bio->textCursor(); cursor.setPosition(_bio->getLastText().size()); _bio->setTextCursor(cursor); - connect(_bio, &Ui::InputField::submitted, this, [this](bool ctrlShiftEnter) { save(); }); - connect(_bio, &Ui::InputField::resized, this, [this] { updateMaxHeight(); }); - connect(_bio, &Ui::InputField::changed, this, [this] { handleBioUpdated(); }); + connect(_bio, &Ui::InputField::submitted, [=] { save(); }); + connect(_bio, &Ui::InputField::resized, [=] { updateMaxHeight(); }); + connect(_bio, &Ui::InputField::changed, [=] { handleBioUpdated(); }); _bio->setInstantReplaces(Ui::InstantReplaces::Default()); _bio->setInstantReplacesEnabled(Global::ReplaceEmojiValue()); handleBioUpdated(); @@ -1154,7 +1154,7 @@ EditChannelBox::EditChannelBox(QWidget*, not_null channel) void EditChannelBox::prepare() { setTitle(langFactory(_channel->isMegagroup() ? lng_edit_group : lng_edit_channel_title)); - addButton(langFactory(lng_settings_save), [this] { onSave(); }); + addButton(langFactory(lng_settings_save), [this] { save(); }); addButton(langFactory(lng_cancel), [this] { closeBox(); }); subscribe(Notify::PeerUpdated(), Notify::PeerUpdatedHandler(Notify::PeerUpdate::Flag::NameChanged, [this](const Notify::PeerUpdate &update) { @@ -1172,11 +1172,11 @@ void EditChannelBox::prepare() { _description->setInstantReplaces(Ui::InstantReplaces::Default()); _description->setInstantReplacesEnabled(Global::ReplaceEmojiValue()); - connect(_description, SIGNAL(resized()), this, SLOT(onDescriptionResized())); - connect(_description, SIGNAL(submitted(bool)), this, SLOT(onSave())); - connect(_description, SIGNAL(cancelled()), this, SLOT(onClose())); + connect(_description, &Ui::InputField::resized, [=] { descriptionResized(); }); + connect(_description, &Ui::InputField::submitted, [=] { save(); }); + connect(_description, &Ui::InputField::cancelled, [=] { closeBox(); }); - connect(_publicLink, SIGNAL(clicked()), this, SLOT(onPublicLink())); + _publicLink->addClickHandler([=] { setupPublicLink(); }); _publicLink->setVisible(_channel->canEditUsername()); _sign->setVisible(canEditSignatures()); _inviteEverybody->setVisible(canEditInvites()); @@ -1192,7 +1192,7 @@ void EditChannelBox::setInnerFocus() { void EditChannelBox::keyPressEvent(QKeyEvent *e) { if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) { if (_title->hasFocus()) { - onSave(); + save(); } } else { BoxContent::keyPressEvent(e); @@ -1204,7 +1204,7 @@ void EditChannelBox::handleChannelNameChange() { _sign->setChecked(_channel->addsSignature()); } -void EditChannelBox::onDescriptionResized() { +void EditChannelBox::descriptionResized() { updateMaxHeight(); update(); } @@ -1268,7 +1268,7 @@ void EditChannelBox::paintEvent(QPaintEvent *e) { } } -void EditChannelBox::onSave() { +void EditChannelBox::save() { if (_saveTitleRequestId || _saveDescriptionRequestId || _saveSignRequestId || _saveInvitesRequestId) return; auto title = TextUtilities::PrepareForSending(_title->getLastText()); @@ -1287,7 +1287,7 @@ void EditChannelBox::onSave() { } } -void EditChannelBox::onPublicLink() { +void EditChannelBox::setupPublicLink() { Ui::show( Box(_channel, true), LayerOption::KeepOther); diff --git a/Telegram/SourceFiles/boxes/add_contact_box.h b/Telegram/SourceFiles/boxes/add_contact_box.h index c13517585c..b35fe4a0eb 100644 --- a/Telegram/SourceFiles/boxes/add_contact_box.h +++ b/Telegram/SourceFiles/boxes/add_contact_box.h @@ -36,8 +36,6 @@ enum class PeerFloodType { QString PeerFloodErrorText(PeerFloodType type); class AddContactBox : public BoxContent, public RPCSender { - Q_OBJECT - public: AddContactBox(QWidget*, QString fname = QString(), QString lname = QString(), QString phone = QString()); AddContactBox(QWidget*, UserData *user); @@ -50,12 +48,10 @@ protected: void setInnerFocus() override; -private slots: - void onSubmit(); - void onSave(); - void onRetry(); - private: + void submit(); + void retry(); + void save(); void updateButtons(); void onImportDone(const MTPcontacts_ImportedContacts &res); @@ -79,8 +75,6 @@ private: }; class GroupInfoBox : public BoxContent, private MTP::Sender { - Q_OBJECT - public: GroupInfoBox(QWidget*, CreatingGroupType creating, bool fromTypeChoose); @@ -90,18 +84,13 @@ protected: void resizeEvent(QResizeEvent *e) override; -private slots: - void onNext(); - void onNameSubmit(); - void onDescriptionResized(); - void onClose() { - closeBox(); - } - private: void createChannel(const QString &title, const QString &description); void createGroup(not_null selectUsersBox, const QString &title, const std::vector> &users); + void submitName(); + void submit(); + void descriptionResized(); void updateMaxHeight(); void updateSelected(const QPoint &cursorGlobalPosition); @@ -119,8 +108,6 @@ private: }; class SetupChannelBox : public BoxContent, public RPCSender { - Q_OBJECT - public: SetupChannelBox(QWidget*, ChannelData *channel, bool existing = false); @@ -136,11 +123,6 @@ protected: void mousePressEvent(QMouseEvent *e) override; void leaveEventHook(QEvent *e) override; -private slots: - void onSave(); - void onChange(); - void onCheck(); - private: enum class Privacy { Public, @@ -149,6 +131,9 @@ private: void privacyChanged(Privacy value); void updateSelected(const QPoint &cursorGlobalPosition); void showAddContactsToChannelBox() const; + void handleChange(); + void check(); + void save(); void onUpdateDone(const MTPBool &result); bool onUpdateFail(const RPCError &error); @@ -239,8 +224,6 @@ private: }; class EditChannelBox : public BoxContent, public RPCSender { - Q_OBJECT - public: EditChannelBox(QWidget*, not_null channel); @@ -252,19 +235,14 @@ protected: void resizeEvent(QResizeEvent *e) override; void paintEvent(QPaintEvent *e) override; -private slots: - void onSave(); - void onDescriptionResized(); - void onPublicLink(); - void onClose() { - closeBox(); - } - private: void updateMaxHeight(); bool canEditSignatures() const; bool canEditInvites() const; void handleChannelNameChange(); + void descriptionResized(); + void setupPublicLink(); + void save(); void onSaveTitleDone(const MTPUpdates &result); void onSaveDescriptionDone(const MTPBool &result); diff --git a/Telegram/SourceFiles/boxes/change_phone_box.cpp b/Telegram/SourceFiles/boxes/change_phone_box.cpp index 2e5293dbab..b6a97e0a3c 100644 --- a/Telegram/SourceFiles/boxes/change_phone_box.cpp +++ b/Telegram/SourceFiles/boxes/change_phone_box.cpp @@ -125,7 +125,7 @@ void ChangePhoneBox::EnterPhone::prepare() { _phone->resize(st::boxWidth - 2 * st::boxPadding.left(), _phone->height()); _phone->moveToLeft(st::boxPadding.left(), st::boxLittleSkip); - connect(_phone, &Ui::PhoneInput::submitted, this, [this] { submit(); }); + connect(_phone, &Ui::PhoneInput::submitted, [=] { submit(); }); auto description = object_ptr(this, lang(lng_change_phone_new_description), Ui::FlatLabel::InitType::Simple, st::changePhoneLabel); auto errorSkip = st::boxLittleSkip + st::changePhoneError.style.font->height; @@ -225,12 +225,12 @@ void ChangePhoneBox::EnterCode::prepare() { auto phoneValue = QString(); _code.create(this, st::defaultInputField, langFactory(lng_change_phone_code_title), phoneValue); - _code->setAutoSubmit(_codeLength, [this] { submit(); }); - _code->setChangedCallback([this] { hideError(); }); + _code->setAutoSubmit(_codeLength, [=] { submit(); }); + _code->setChangedCallback([=] { hideError(); }); _code->resize(st::boxWidth - 2 * st::boxPadding.left(), _code->height()); _code->moveToLeft(st::boxPadding.left(), description->bottomNoMargins()); - connect(_code, &Ui::InputField::submitted, this, [this] { submit(); }); + connect(_code, &Ui::InputField::submitted, [=] { submit(); }); setDimensions(st::boxWidth, countHeight()); @@ -239,8 +239,8 @@ void ChangePhoneBox::EnterCode::prepare() { updateCall(); } - addButton(langFactory(lng_change_phone_new_submit), [this] { submit(); }); - addButton(langFactory(lng_cancel), [this] { closeBox(); }); + addButton(langFactory(lng_change_phone_new_submit), [=] { submit(); }); + addButton(langFactory(lng_cancel), [=] { closeBox(); }); } int ChangePhoneBox::EnterCode::countHeight() { diff --git a/Telegram/SourceFiles/boxes/confirm_phone_box.cpp b/Telegram/SourceFiles/boxes/confirm_phone_box.cpp index 88596e6910..e3687a3b09 100644 --- a/Telegram/SourceFiles/boxes/confirm_phone_box.cpp +++ b/Telegram/SourceFiles/boxes/confirm_phone_box.cpp @@ -198,17 +198,17 @@ void ConfirmPhoneBox::prepare() { _about->setMarkedText(aboutText); _code.create(this, st::confirmPhoneCodeField, langFactory(lng_code_ph)); - _code->setAutoSubmit(_sentCodeLength, [this] { onSendCode(); }); - _code->setChangedCallback([this] { showError(QString()); }); + _code->setAutoSubmit(_sentCodeLength, [=] { sendCode(); }); + _code->setChangedCallback([=] { showError(QString()); }); setTitle(langFactory(lng_confirm_phone_title)); - addButton(langFactory(lng_confirm_phone_send), [this] { onSendCode(); }); - addButton(langFactory(lng_cancel), [this] { closeBox(); }); + addButton(langFactory(lng_confirm_phone_send), [=] { sendCode(); }); + addButton(langFactory(lng_cancel), [=] { closeBox(); }); setDimensions(st::boxWidth, st::usernamePadding.top() + _code->height() + st::usernameSkip + _about->height() + st::usernameSkip); - connect(_code, SIGNAL(submitted(bool)), this, SLOT(onSendCode())); + connect(_code, &Ui::InputField::submitted, [=] { sendCode(); }); showChildren(); } @@ -217,7 +217,7 @@ void ConfirmPhoneBox::callDone(const MTPauth_SentCode &result) { _call.callDone(); } -void ConfirmPhoneBox::onSendCode() { +void ConfirmPhoneBox::sendCode() { if (_sendCodeRequestId) { return; } diff --git a/Telegram/SourceFiles/boxes/confirm_phone_box.h b/Telegram/SourceFiles/boxes/confirm_phone_box.h index eccfb3dc2b..170f6128f9 100644 --- a/Telegram/SourceFiles/boxes/confirm_phone_box.h +++ b/Telegram/SourceFiles/boxes/confirm_phone_box.h @@ -82,16 +82,11 @@ private: }; class ConfirmPhoneBox : public BoxContent, public RPCSender { - Q_OBJECT - public: static void start(const QString &phone, const QString &hash); ~ConfirmPhoneBox(); -private slots: - void onSendCode(); - protected: void prepare() override; void setInnerFocus() override; @@ -103,6 +98,7 @@ private: ConfirmPhoneBox(QWidget*, const QString &phone, const QString &hash); friend class object_ptr; + void sendCode(); void sendCall(); void checkPhoneAndHash(); diff --git a/Telegram/SourceFiles/boxes/edit_caption_box.cpp b/Telegram/SourceFiles/boxes/edit_caption_box.cpp index 12d3fbdee6..fcadf78a29 100644 --- a/Telegram/SourceFiles/boxes/edit_caption_box.cpp +++ b/Telegram/SourceFiles/boxes/edit_caption_box.cpp @@ -194,13 +194,9 @@ void EditCaptionBox::prepare() { addButton(langFactory(lng_cancel), [this] { closeBox(); }); updateBoxSize(); - connect(_field, &Ui::InputField::submitted, this, [this] { save(); }); - connect(_field, &Ui::InputField::cancelled, this, [this] { - closeBox(); - }); - connect(_field, &Ui::InputField::resized, this, [this] { - captionResized(); - }); + connect(_field, &Ui::InputField::submitted, [=] { save(); }); + connect(_field, &Ui::InputField::cancelled, [=] { closeBox(); }); + connect(_field, &Ui::InputField::resized, [=] { captionResized(); }); auto cursor = _field->textCursor(); cursor.movePosition(QTextCursor::End); diff --git a/Telegram/SourceFiles/boxes/edit_color_box.cpp b/Telegram/SourceFiles/boxes/edit_color_box.cpp index 2f36fbacb9..bc89751221 100644 --- a/Telegram/SourceFiles/boxes/edit_color_box.cpp +++ b/Telegram/SourceFiles/boxes/edit_color_box.cpp @@ -630,34 +630,36 @@ EditColorBox::EditColorBox(QWidget*, const QString &title, QColor current) : Box } void EditColorBox::prepare() { - setTitle([this] { return _title; }); + setTitle([=] { return _title; }); - connect(_hueField, SIGNAL(changed()), this, SLOT(onFieldChanged())); - connect(_saturationField, SIGNAL(changed()), this, SLOT(onFieldChanged())); - connect(_brightnessField, SIGNAL(changed()), this, SLOT(onFieldChanged())); - connect(_redField, SIGNAL(changed()), this, SLOT(onFieldChanged())); - connect(_greenField, SIGNAL(changed()), this, SLOT(onFieldChanged())); - connect(_blueField, SIGNAL(changed()), this, SLOT(onFieldChanged())); - connect(_result, SIGNAL(changed()), this, SLOT(onFieldChanged())); + const auto changed = [=] { fieldChanged(); }; + connect(_hueField, &Ui::MaskedInputField::changed, changed); + connect(_saturationField, &Ui::MaskedInputField::changed, changed); + connect(_brightnessField, &Ui::MaskedInputField::changed, changed); + connect(_redField, &Ui::MaskedInputField::changed, changed); + connect(_greenField, &Ui::MaskedInputField::changed, changed); + connect(_blueField, &Ui::MaskedInputField::changed, changed); + connect(_result, &Ui::MaskedInputField::changed, changed); - connect(_hueField, SIGNAL(submitted(bool)), this, SLOT(onFieldSubmitted())); - connect(_saturationField, SIGNAL(submitted(bool)), this, SLOT(onFieldSubmitted())); - connect(_brightnessField, SIGNAL(submitted(bool)), this, SLOT(onFieldSubmitted())); - connect(_redField, SIGNAL(submitted(bool)), this, SLOT(onFieldSubmitted())); - connect(_greenField, SIGNAL(submitted(bool)), this, SLOT(onFieldSubmitted())); - connect(_blueField, SIGNAL(submitted(bool)), this, SLOT(onFieldSubmitted())); - connect(_result, SIGNAL(submitted(bool)), this, SLOT(onFieldSubmitted())); + const auto submitted = [=] { fieldSubmitted(); }; + connect(_hueField, &Ui::MaskedInputField::submitted, submitted); + connect(_saturationField, &Ui::MaskedInputField::submitted, submitted); + connect(_brightnessField, &Ui::MaskedInputField::submitted, submitted); + connect(_redField, &Ui::MaskedInputField::submitted, submitted); + connect(_greenField, &Ui::MaskedInputField::submitted, submitted); + connect(_blueField, &Ui::MaskedInputField::submitted, submitted); + connect(_result, &Ui::MaskedInputField::submitted, submitted); - addButton(langFactory(lng_settings_save), [this] { saveColor(); }); - addButton(langFactory(lng_cancel), [this] { closeBox(); }); + addButton(langFactory(lng_settings_save), [=] { saveColor(); }); + addButton(langFactory(lng_cancel), [=] { closeBox(); }); auto height = st::colorEditSkip + st::colorPickerSize + st::colorEditSkip + st::colorSliderWidth + st::colorEditSkip; setDimensions(st::colorEditWidth, height); - subscribe(_picker->changed(), [this] { updateFromControls(); }); - subscribe(_hueSlider->changed(), [this] { updateFromControls(); }); - subscribe(_opacitySlider->changed(), [this] { updateFromControls(); }); - subscribe(boxClosing, [this] { + subscribe(_picker->changed(), [=] { updateFromControls(); }); + subscribe(_hueSlider->changed(), [=] { updateFromControls(); }); + subscribe(_opacitySlider->changed(), [=] { updateFromControls(); }); + subscribe(boxClosing, [=] { if (_cancelCallback) { _cancelCallback(); } @@ -670,7 +672,7 @@ void EditColorBox::setInnerFocus() { _result->selectAll(); } -void EditColorBox::onFieldChanged() { +void EditColorBox::fieldChanged() { auto emitter = sender(); auto checkHSVSender = [this, emitter](QObject *field) { if (emitter == field) { @@ -693,7 +695,7 @@ void EditColorBox::onFieldChanged() { } } -void EditColorBox::onFieldSubmitted() { +void EditColorBox::fieldSubmitted() { Ui::MaskedInputField *fields[] = { _hueField, _saturationField, diff --git a/Telegram/SourceFiles/boxes/edit_color_box.h b/Telegram/SourceFiles/boxes/edit_color_box.h index 7749748c32..0a83ba08cc 100644 --- a/Telegram/SourceFiles/boxes/edit_color_box.h +++ b/Telegram/SourceFiles/boxes/edit_color_box.h @@ -10,8 +10,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "boxes/abstract_box.h" class EditColorBox : public BoxContent { - Q_OBJECT - public: EditColorBox(QWidget*, const QString &title, QColor current = QColor(255, 255, 255)); @@ -37,12 +35,10 @@ protected: void setInnerFocus() override; -private slots: - void onFieldChanged(); - void onFieldSubmitted(); - private: void saveColor(); + void fieldChanged(); + void fieldSubmitted(); void updateFromColor(QColor color); void updateControlsFromColor(); diff --git a/Telegram/SourceFiles/boxes/passcode_box.cpp b/Telegram/SourceFiles/boxes/passcode_box.cpp index 73191635fe..f8df692a1c 100644 --- a/Telegram/SourceFiles/boxes/passcode_box.cpp +++ b/Telegram/SourceFiles/boxes/passcode_box.cpp @@ -43,8 +43,8 @@ PasscodeBox::PasscodeBox(QWidget*, const QByteArray &newSalt, const QByteArray & } void PasscodeBox::prepare() { - addButton(langFactory(_turningOff ? lng_passcode_remove_button : lng_settings_save), [this] { onSave(); }); - addButton(langFactory(lng_cancel), [this] { closeBox(); }); + addButton(langFactory(_turningOff ? lng_passcode_remove_button : lng_settings_save), [=] { save(); }); + addButton(langFactory(lng_cancel), [=] { closeBox(); }); _about.setRichText(st::passcodeTextStyle, lang(_cloudPwd ? lng_cloud_password_about : lng_passcode_about)); _aboutHeight = _about.countHeight(st::boxWidth - st::boxPadding.left() * 1.5); @@ -65,19 +65,20 @@ void PasscodeBox::prepare() { } } - connect(_oldPasscode, SIGNAL(changed()), this, SLOT(onOldChanged())); - connect(_newPasscode, SIGNAL(changed()), this, SLOT(onNewChanged())); - connect(_reenterPasscode, SIGNAL(changed()), this, SLOT(onNewChanged())); - connect(_passwordHint, SIGNAL(changed()), this, SLOT(onNewChanged())); - connect(_recoverEmail, SIGNAL(changed()), this, SLOT(onEmailChanged())); + connect(_oldPasscode, &Ui::MaskedInputField::changed, [=] { oldChanged(); }); + connect(_newPasscode, &Ui::MaskedInputField::changed, [=] { newChanged(); }); + connect(_reenterPasscode, &Ui::MaskedInputField::changed, [=] { newChanged(); }); + connect(_passwordHint, &Ui::InputField::changed, [=] { newChanged(); }); + connect(_recoverEmail, &Ui::InputField::changed, [=] { emailChanged(); }); - connect(_oldPasscode, SIGNAL(submitted(bool)), this, SLOT(onSubmit())); - connect(_newPasscode, SIGNAL(submitted(bool)), this, SLOT(onSubmit())); - connect(_reenterPasscode, SIGNAL(submitted(bool)), this, SLOT(onSubmit())); - connect(_passwordHint, SIGNAL(submitted(bool)), this, SLOT(onSubmit())); - connect(_recoverEmail, SIGNAL(submitted(bool)), this, SLOT(onSubmit())); + const auto fieldSubmit = [=] { submit(); }; + connect(_oldPasscode, &Ui::MaskedInputField::submitted, fieldSubmit); + connect(_newPasscode, &Ui::MaskedInputField::submitted, fieldSubmit); + connect(_reenterPasscode, &Ui::MaskedInputField::submitted, fieldSubmit); + connect(_passwordHint, &Ui::InputField::submitted, fieldSubmit); + connect(_recoverEmail, &Ui::InputField::submitted, fieldSubmit); - connect(_recover, SIGNAL(clicked()), this, SLOT(onRecoverByEmail())); + _recover->addClickHandler([=] { recoverByEmail(); }); bool has = _cloudPwd ? (!_curSalt.isEmpty()) : Global::LocalPasscode(); _oldPasscode->setVisible(_turningOff || has); @@ -88,11 +89,11 @@ void PasscodeBox::prepare() { _recoverEmail->setVisible(!_turningOff && _cloudPwd && _curSalt.isEmpty()); } -void PasscodeBox::onSubmit() { +void PasscodeBox::submit() { bool has = _cloudPwd ? (!_curSalt.isEmpty()) : Global::LocalPasscode(); if (_oldPasscode->hasFocus()) { if (_turningOff) { - onSave(); + save(); } else { _newPasscode->setFocus(); } @@ -110,16 +111,16 @@ void PasscodeBox::onSubmit() { } else if (!_passwordHint->isHidden()) { _passwordHint->setFocus(); } else { - onSave(); + save(); } } else if (_passwordHint->hasFocus()) { if (_recoverEmail->isHidden()) { - onSave(); + save(); } else { _recoverEmail->setFocus(); } } else if (_recoverEmail->hasFocus()) { - onSave(); + save(); } } @@ -226,7 +227,7 @@ bool PasscodeBox::setPasswordFail(const RPCError &error) { emit reloadPassword(); closeBox(); } else { - onBadOldPasscode(); + badOldPasscode(); } } else if (err == qstr("NEW_PASSWORD_BAD")) { _newPasscode->setFocus(); @@ -248,7 +249,7 @@ bool PasscodeBox::setPasswordFail(const RPCError &error) { return true; } -void PasscodeBox::onSave(bool force) { +void PasscodeBox::save(bool force) { if (_setRequest) return; QString old = _oldPasscode->text(), pwd = _newPasscode->text(), conf = _reenterPasscode->text(); @@ -268,7 +269,7 @@ void PasscodeBox::onSave(bool force) { } else { cSetPasscodeBadTries(cPasscodeBadTries() + 1); cSetPasscodeLastTry(getms(true)); - onBadOldPasscode(); + badOldPasscode(); return; } } @@ -306,7 +307,7 @@ void PasscodeBox::onSave(bool force) { if (!_recoverEmail->isHidden() && email.isEmpty() && !force) { _skipEmailWarning = true; _replacedBy = Ui::show(Box(lang(lng_cloud_password_about_recover), lang(lng_cloud_password_skip_email), st::attentionBoxButton, base::lambda_guarded(this, [this] { - onSave(true); + save(true); })), LayerOption::KeepOther); } else { QByteArray newPasswordData = pwd.isEmpty() ? QByteArray() : (_newSalt + pwd.toUtf8() + _newSalt); @@ -337,7 +338,7 @@ void PasscodeBox::onSave(bool force) { } } -void PasscodeBox::onBadOldPasscode() { +void PasscodeBox::badOldPasscode() { _oldPasscode->selectAll(); _oldPasscode->setFocus(); _oldPasscode->showError(); @@ -348,7 +349,7 @@ void PasscodeBox::onBadOldPasscode() { update(); } -void PasscodeBox::onOldChanged() { +void PasscodeBox::oldChanged() { if (!_oldError.isEmpty()) { _oldError = QString(); if (_hasRecovery && _hintText.isEmpty()) { @@ -358,21 +359,21 @@ void PasscodeBox::onOldChanged() { } } -void PasscodeBox::onNewChanged() { +void PasscodeBox::newChanged() { if (!_newError.isEmpty()) { _newError = QString(); update(); } } -void PasscodeBox::onEmailChanged() { +void PasscodeBox::emailChanged() { if (!_emailError.isEmpty()) { _emailError = QString(); update(); } } -void PasscodeBox::onRecoverByEmail() { +void PasscodeBox::recoverByEmail() { if (_pattern.isEmpty()) { _pattern = "-"; MTP::send(MTPauth_RequestPasswordRecovery(), rpcDone(&PasscodeBox::recoverStarted), rpcFail(&PasscodeBox::recoverStartFail)); @@ -381,18 +382,19 @@ void PasscodeBox::onRecoverByEmail() { } } -void PasscodeBox::onRecoverExpired() { +void PasscodeBox::recoverExpired() { _pattern = QString(); } void PasscodeBox::recover() { if (_pattern == "-") return; - _replacedBy = Ui::show( + const auto box = Ui::show( Box(_pattern), LayerOption::KeepOther); - connect(_replacedBy, SIGNAL(reloadPassword()), this, SIGNAL(reloadPassword())); - connect(_replacedBy, SIGNAL(recoveryExpired()), this, SLOT(onRecoverExpired())); + connect(box, &RecoverBox::reloadPassword, this, &PasscodeBox::reloadPassword); + connect(box, &RecoverBox::recoveryExpired, this, &PasscodeBox::recoverExpired); + _replacedBy = box; } void PasscodeBox::recoverStarted(const MTPauth_PasswordRecovery &result) { @@ -416,13 +418,13 @@ RecoverBox::RecoverBox(QWidget*, const QString &pattern) void RecoverBox::prepare() { setTitle(langFactory(lng_signin_recover_title)); - addButton(langFactory(lng_passcode_submit), [this] { onSubmit(); }); - addButton(langFactory(lng_cancel), [this] { closeBox(); }); + addButton(langFactory(lng_passcode_submit), [=] { submit(); }); + addButton(langFactory(lng_cancel), [=] { closeBox(); }); setDimensions(st::boxWidth, st::passcodePadding.top() + st::passcodePadding.bottom() + st::passcodeTextLine + _recoverCode->height() + st::passcodeTextLine); - connect(_recoverCode, SIGNAL(changed()), this, SLOT(onCodeChanged())); - connect(_recoverCode, SIGNAL(submitted(bool)), this, SLOT(onSubmit())); + connect(_recoverCode, &Ui::InputField::changed, [=] { codeChanged(); }); + connect(_recoverCode, &Ui::InputField::submitted, [=] { submit(); }); } void RecoverBox::paintEvent(QPaintEvent *e) { @@ -452,7 +454,7 @@ void RecoverBox::setInnerFocus() { _recoverCode->setFocusFast(); } -void RecoverBox::onSubmit() { +void RecoverBox::submit() { if (_submitRequest) return; QString code = _recoverCode->getLastText().trimmed(); @@ -465,7 +467,7 @@ void RecoverBox::onSubmit() { _submitRequest = MTP::send(MTPauth_RecoverPassword(MTP_string(code)), rpcDone(&RecoverBox::codeSubmitDone, true), rpcFail(&RecoverBox::codeSubmitFail)); } -void RecoverBox::onCodeChanged() { +void RecoverBox::codeChanged() { _error = QString(); update(); } diff --git a/Telegram/SourceFiles/boxes/passcode_box.h b/Telegram/SourceFiles/boxes/passcode_box.h index b86a447a49..f339d27d8a 100644 --- a/Telegram/SourceFiles/boxes/passcode_box.h +++ b/Telegram/SourceFiles/boxes/passcode_box.h @@ -22,16 +22,6 @@ public: PasscodeBox(QWidget*, bool turningOff); PasscodeBox(QWidget*, const QByteArray &newSalt, const QByteArray &curSalt, bool hasRecovery, const QString &hint, bool turningOff = false); -private slots: - void onSave(bool force = false); - void onBadOldPasscode(); - void onOldChanged(); - void onNewChanged(); - void onEmailChanged(); - void onRecoverByEmail(); - void onRecoverExpired(); - void onSubmit(); - signals: void reloadPassword(); @@ -43,7 +33,15 @@ protected: void resizeEvent(QResizeEvent *e) override; private: + void submit(); void closeReplacedBy(); + void oldChanged(); + void newChanged(); + void emailChanged(); + void save(bool force = false); + void badOldPasscode(); + void recoverByEmail(); + void recoverExpired(); void setPasswordDone(const MTPBool &result); bool setPasswordFail(const RPCError &error); @@ -84,10 +82,6 @@ class RecoverBox : public BoxContent, public RPCSender { public: RecoverBox(QWidget*, const QString &pattern); -public slots: - void onSubmit(); - void onCodeChanged(); - signals: void reloadPassword(); void recoveryExpired(); @@ -100,6 +94,8 @@ protected: void resizeEvent(QResizeEvent *e) override; private: + void submit(); + void codeChanged(); void codeSubmitDone(bool recover, const MTPauth_Authorization &result); bool codeSubmitFail(const RPCError &error); diff --git a/Telegram/SourceFiles/boxes/peer_list_box.cpp b/Telegram/SourceFiles/boxes/peer_list_box.cpp index 46ddaba993..1b1b6cb169 100644 --- a/Telegram/SourceFiles/boxes/peer_list_box.cpp +++ b/Telegram/SourceFiles/boxes/peer_list_box.cpp @@ -46,7 +46,7 @@ void PeerListBox::createMultiSelect() { ) | rpl::start_with_next( [this] { updateScrollSkips(); }, lifetime()); - _select->entity()->setSubmittedCallback([this](bool chtrlShiftEnter) { content()->submitted(); }); + _select->entity()->setSubmittedCallback([this](Qt::KeyboardModifiers) { content()->submitted(); }); _select->entity()->setQueryChangedCallback([this](const QString &query) { searchQueryChanged(query); }); _select->entity()->setItemRemovedCallback([this](uint64 itemId) { if (auto peer = App::peerLoaded(itemId)) { diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp index f99bf4f80d..1625aff656 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp @@ -308,7 +308,7 @@ object_ptr Controller::createTitleEdit() { QObject::connect( result->entity(), &Ui::InputField::submitted, - [this] { submitTitle(); }); + [=] { submitTitle(); }); _controls.title = result->entity(); return std::move(result); @@ -339,7 +339,7 @@ object_ptr Controller::createDescriptionEdit() { QObject::connect( result->entity(), &Ui::InputField::submitted, - [this] { submitDescription(); }); + [=] { submitDescription(); }); _controls.description = result->entity(); return std::move(result); diff --git a/Telegram/SourceFiles/boxes/rate_call_box.cpp b/Telegram/SourceFiles/boxes/rate_call_box.cpp index 9babfefd51..e80bdb4316 100644 --- a/Telegram/SourceFiles/boxes/rate_call_box.cpp +++ b/Telegram/SourceFiles/boxes/rate_call_box.cpp @@ -60,7 +60,7 @@ void RateCallBox::ratingChanged(int value) { Expects(value > 0 && value <= kMaxRating); if (!_rating) { clearButtons(); - addButton(langFactory(lng_send_button), [this] { onSend(); }); + addButton(langFactory(lng_send_button), [this] { send(); }); addButton(langFactory(lng_cancel), [this] { closeBox(); }); } _rating = value; @@ -82,9 +82,9 @@ void RateCallBox::ratingChanged(int value) { _comment->resize(width() - (st::callRatingPadding.left() + st::callRatingPadding.right()), _comment->height()); updateMaxHeight(); - connect(_comment, SIGNAL(resized()), this, SLOT(onCommentResized())); - connect(_comment, SIGNAL(submitted(bool)), this, SLOT(onSend())); - connect(_comment, SIGNAL(cancelled()), this, SLOT(onClose())); + connect(_comment, &Ui::InputField::resized, [=] { commentResized(); }); + connect(_comment, &Ui::InputField::submitted, [=] { send(); }); + connect(_comment, &Ui::InputField::cancelled, [=] { closeBox(); }); } _comment->setFocusFast(); } else if (_comment) { @@ -101,13 +101,14 @@ void RateCallBox::setInnerFocus() { } } -void RateCallBox::onCommentResized() { +void RateCallBox::commentResized() { updateMaxHeight(); update(); } -void RateCallBox::onSend() { +void RateCallBox::send() { Expects(_rating > 0 && _rating <= kMaxRating); + if (_requestId) { return; } diff --git a/Telegram/SourceFiles/boxes/rate_call_box.h b/Telegram/SourceFiles/boxes/rate_call_box.h index e187e7ea21..6eeeee7f7f 100644 --- a/Telegram/SourceFiles/boxes/rate_call_box.h +++ b/Telegram/SourceFiles/boxes/rate_call_box.h @@ -17,18 +17,9 @@ class IconButton; } // namespace Ui class RateCallBox : public BoxContent, private MTP::Sender { - Q_OBJECT - public: RateCallBox(QWidget*, uint64 callId, uint64 callAccessHash); -private slots: - void onSend(); - void onCommentResized(); - void onClose() { - closeBox(); - } - protected: void prepare() override; void setInnerFocus() override; @@ -38,6 +29,8 @@ protected: private: void updateMaxHeight(); void ratingChanged(int value); + void send(); + void commentResized(); uint64 _callId = 0; uint64 _callAccessHash = 0; diff --git a/Telegram/SourceFiles/boxes/report_box.cpp b/Telegram/SourceFiles/boxes/report_box.cpp index 5b5cee6fef..04c8fba2c9 100644 --- a/Telegram/SourceFiles/boxes/report_box.cpp +++ b/Telegram/SourceFiles/boxes/report_box.cpp @@ -39,8 +39,8 @@ void ReportBox::prepare() { } }())); - addButton(langFactory(lng_report_button), [this] { onReport(); }); - addButton(langFactory(lng_cancel), [this] { closeBox(); }); + addButton(langFactory(lng_report_button), [=] { report(); }); + addButton(langFactory(lng_cancel), [=] { closeBox(); }); _reasonGroup = std::make_shared>( Reason::Spam); @@ -93,9 +93,9 @@ void ReportBox::reasonChanged(Reason reason) { _reasonOtherText->resize(width() - (st::boxPadding.left() + st::boxOptionListPadding.left() + st::boxPadding.right()), _reasonOtherText->height()); updateMaxHeight(); - connect(_reasonOtherText, SIGNAL(resized()), this, SLOT(onReasonResized())); - connect(_reasonOtherText, SIGNAL(submitted(bool)), this, SLOT(onReport())); - connect(_reasonOtherText, SIGNAL(cancelled()), this, SLOT(onClose())); + connect(_reasonOtherText, &Ui::InputField::resized, [=] { reasonResized(); }); + connect(_reasonOtherText, &Ui::InputField::submitted, [=] { report(); }); + connect(_reasonOtherText, &Ui::InputField::cancelled, [=] { closeBox(); }); } _reasonOtherText->setFocusFast(); } else if (_reasonOtherText) { @@ -112,12 +112,12 @@ void ReportBox::setInnerFocus() { } } -void ReportBox::onReasonResized() { +void ReportBox::reasonResized() { updateMaxHeight(); update(); } -void ReportBox::onReport() { +void ReportBox::report() { if (_requestId) return; if (_reasonOtherText && _reasonOtherText->getLastText().trimmed().isEmpty()) { diff --git a/Telegram/SourceFiles/boxes/report_box.h b/Telegram/SourceFiles/boxes/report_box.h index 38b71151f3..efdb6d90e4 100644 --- a/Telegram/SourceFiles/boxes/report_box.h +++ b/Telegram/SourceFiles/boxes/report_box.h @@ -18,19 +18,10 @@ class InputField; } // namespace Ui class ReportBox : public BoxContent, public RPCSender { - Q_OBJECT - public: ReportBox(QWidget*, not_null peer); ReportBox(QWidget*, not_null peer, MessageIdsList ids); -private slots: - void onReport(); - void onReasonResized(); - void onClose() { - closeBox(); - } - protected: void prepare() override; void setInnerFocus() override; @@ -45,7 +36,9 @@ private: Other, }; void reasonChanged(Reason reason); + void reasonResized(); void updateMaxHeight(); + void report(); void reportDone(const MTPBool &result); bool reportFail(const RPCError &error); diff --git a/Telegram/SourceFiles/boxes/send_files_box.cpp b/Telegram/SourceFiles/boxes/send_files_box.cpp index 862df52210..0faaf81e4b 100644 --- a/Telegram/SourceFiles/boxes/send_files_box.cpp +++ b/Telegram/SourceFiles/boxes/send_files_box.cpp @@ -1558,17 +1558,18 @@ void SendFilesBox::applyAlbumOrder() { void SendFilesBox::setupCaption() { _caption->setMaxLength(MaxPhotoCaption); _caption->setSubmitSettings(Ui::InputField::SubmitSettings::Both); - connect(_caption, &Ui::InputField::resized, this, [this] { + connect(_caption, &Ui::InputField::resized, [=] { captionResized(); }); - connect(_caption, &Ui::InputField::submitted, this, [this]( - bool ctrlShiftEnter) { + connect(_caption, &Ui::InputField::submitted, [=]( + Qt::KeyboardModifiers modifiers) { + const auto ctrlShiftEnter = modifiers.testFlag(Qt::ShiftModifier) + && (modifiers.testFlag(Qt::ControlModifier) + || modifiers.testFlag(Qt::MetaModifier)); send(ctrlShiftEnter); }); - connect(_caption, &Ui::InputField::cancelled, this, [this] { - closeBox(); - }); - _caption->setMimeDataHook([this]( + connect(_caption, &Ui::InputField::cancelled, [=] { closeBox(); }); + _caption->setMimeDataHook([=]( not_null data, Ui::InputField::MimeAction action) { if (action == Ui::InputField::MimeAction::Check) { diff --git a/Telegram/SourceFiles/boxes/share_box.cpp b/Telegram/SourceFiles/boxes/share_box.cpp index 6a11e076ec..0a3962d803 100644 --- a/Telegram/SourceFiles/boxes/share_box.cpp +++ b/Telegram/SourceFiles/boxes/share_box.cpp @@ -61,7 +61,14 @@ void ShareBox::prepare() { } }); _select->setResizedCallback([this] { updateScrollSkips(); }); - _select->setSubmittedCallback([this](bool) { _inner->onSelectActive(); }); + _select->setSubmittedCallback([this](Qt::KeyboardModifiers modifiers) { + if (modifiers.testFlag(Qt::ControlModifier) + || modifiers.testFlag(Qt::MetaModifier)) { + onSubmit(); + } else { + _inner->onSelectActive(); + } + }); connect(_inner, SIGNAL(searchByUsername()), this, SLOT(onNeedSearchByUsername())); _inner->setPeerSelectedChangedCallback([this](PeerData *peer, bool checked) { onPeerSelectedChanged(peer, checked); diff --git a/Telegram/SourceFiles/boxes/stickers_box.cpp b/Telegram/SourceFiles/boxes/stickers_box.cpp index 170468b95a..0ac8228698 100644 --- a/Telegram/SourceFiles/boxes/stickers_box.cpp +++ b/Telegram/SourceFiles/boxes/stickers_box.cpp @@ -610,14 +610,14 @@ StickersBox::Inner::Inner(QWidget *parent, not_null megagroup) : T connect( _megagroupSetField, &Ui::MaskedInputField::changed, - [this] { + [=] { _megagroupSetAddressChangedTimer.callOnce( kHandleMegagroupSetAddressChangeTimeout); }); connect( _megagroupSetField, &Ui::MaskedInputField::submitted, - [this] { + [=] { _megagroupSetAddressChangedTimer.cancel(); handleMegagroupSetAddressChange(); }); diff --git a/Telegram/SourceFiles/boxes/username_box.cpp b/Telegram/SourceFiles/boxes/username_box.cpp index b13b5a9280..45eb821b5b 100644 --- a/Telegram/SourceFiles/boxes/username_box.cpp +++ b/Telegram/SourceFiles/boxes/username_box.cpp @@ -35,18 +35,18 @@ void UsernameBox::prepare() { setTitle(langFactory(lng_username_title)); - addButton(langFactory(lng_settings_save), [this] { onSave(); }); - addButton(langFactory(lng_cancel), [this] { closeBox(); }); + addButton(langFactory(lng_settings_save), [=] { save(); }); + addButton(langFactory(lng_cancel), [=] { closeBox(); }); - connect(_username, SIGNAL(changed()), this, SLOT(onChanged())); - connect(_username, SIGNAL(submitted(bool)), this, SLOT(onSave())); - connect(_link, SIGNAL(clicked()), this, SLOT(onLinkClick())); + connect(_username, &Ui::MaskedInputField::changed, [=] { changed(); }); + connect(_username, &Ui::MaskedInputField::submitted, [=] { save(); }); + _link->addClickHandler([=] { linkClick(); }); _about.setRichText(st::usernameTextStyle, lang(lng_username_about)); setDimensions(st::boxWidth, st::usernamePadding.top() + _username->height() + st::usernameSkip + _about.countHeight(st::boxWidth - st::usernamePadding.left()) + 3 * st::usernameTextStyle.lineHeight + st::usernamePadding.bottom()); _checkTimer->setSingleShot(true); - connect(_checkTimer, SIGNAL(timeout()), this, SLOT(onCheck())); + connect(_checkTimer, &QTimer::timeout, [=] { check(); }); updateLinkText(); } @@ -96,14 +96,14 @@ void UsernameBox::resizeEvent(QResizeEvent *e) { _link->moveToLeft(st::usernamePadding.left(), linky + st::usernameTextStyle.lineHeight + ((st::usernameTextStyle.lineHeight - st::boxTextFont->height) / 2)); } -void UsernameBox::onSave() { +void UsernameBox::save() { if (_saveRequestId) return; _sentUsername = getName(); _saveRequestId = MTP::send(MTPaccount_UpdateUsername(MTP_string(_sentUsername)), rpcDone(&UsernameBox::onUpdateDone), rpcFail(&UsernameBox::onUpdateFail)); } -void UsernameBox::onCheck() { +void UsernameBox::check() { if (_checkRequestId) { MTP::cancel(_checkRequestId); } @@ -118,7 +118,7 @@ void UsernameBox::onCheck() { } } -void UsernameBox::onChanged() { +void UsernameBox::changed() { updateLinkText(); QString name = getName(); if (name.isEmpty()) { @@ -156,7 +156,7 @@ void UsernameBox::onChanged() { } } -void UsernameBox::onLinkClick() { +void UsernameBox::linkClick() { Application::clipboard()->setText(Messenger::Instance().createInternalLinkFull(getName())); Ui::Toast::Show(lang(lng_username_copied)); } diff --git a/Telegram/SourceFiles/boxes/username_box.h b/Telegram/SourceFiles/boxes/username_box.h index ff9d8fa6bf..931913a8f0 100644 --- a/Telegram/SourceFiles/boxes/username_box.h +++ b/Telegram/SourceFiles/boxes/username_box.h @@ -15,8 +15,6 @@ class LinkButton; } // namespace Ui class UsernameBox : public BoxContent, public RPCSender { - Q_OBJECT - public: UsernameBox(QWidget*); @@ -27,14 +25,6 @@ protected: void paintEvent(QPaintEvent *e) override; void resizeEvent(QResizeEvent *e) override; -private slots: - void onSave(); - - void onCheck(); - void onChanged(); - - void onLinkClick(); - private: void onUpdateDone(const MTPUser &result); bool onUpdateFail(const RPCError &error); @@ -42,6 +32,13 @@ private: void onCheckDone(const MTPBool &result); bool onCheckFail(const RPCError &error); + void save(); + + void check(); + void changed(); + + void linkClick(); + QString getName() const; void updateLinkText(); diff --git a/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp b/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp index 8d3a9dc9e6..5edc054319 100644 --- a/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp +++ b/Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp @@ -63,23 +63,23 @@ GifsListWidget::Footer::Footer(not_null parent) : InnerFooter(p , _pan(parent) , _field(this, st::gifsSearchField, langFactory(lng_gifs_search)) , _cancel(this, st::gifsSearchCancel) { - connect(_field, &Ui::InputField::submitted, this, [this](bool ctrlShiftEnter) { + connect(_field, &Ui::InputField::submitted, [=] { _pan->sendInlineRequest(); }); - connect(_field, &Ui::InputField::cancelled, this, [this] { + connect(_field, &Ui::InputField::cancelled, [=] { if (_field->getLastText().isEmpty()) { emit _pan->cancelled(); } else { _field->setText(QString()); } }); - connect(_field, &Ui::InputField::changed, this, [this] { + connect(_field, &Ui::InputField::changed, [=] { _cancel->toggle( !_field->getLastText().isEmpty(), anim::type::normal); _pan->searchForGifs(_field->getLastText()); }); - _cancel->setClickedCallback([this] { + _cancel->setClickedCallback([=] { _field->setText(QString()); }); } diff --git a/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp b/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp index fa3966251e..82e167ed43 100644 --- a/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp +++ b/Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp @@ -195,11 +195,11 @@ void StickersListWidget::Footer::initSearch() { _searchField->setText(QString()); } }; - connect(_searchField, &Ui::InputField::submitted, this, [this](bool ctrlShiftEnter) { + connect(_searchField, &Ui::InputField::submitted, [=] { _pan->sendSearchRequest(); }); - connect(_searchField, &Ui::InputField::cancelled, this, cancelSearch); - connect(_searchField, &Ui::InputField::changed, this, [this] { + connect(_searchField, &Ui::InputField::cancelled, cancelSearch); + connect(_searchField, &Ui::InputField::changed, [=] { _pan->searchForSets(_searchField->getLastText()); }); _searchCancel->setClickedCallback(cancelSearch); diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp index 8625b40103..8f2bb86bed 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_section.cpp @@ -106,15 +106,15 @@ FixedBar::FixedBar( , _cancel(this, st::historyAdminLogCancelSearch) , _filter(this, langFactory(lng_admin_log_filter), st::topBarButton) { _backButton->moveToLeft(0, 0); - _backButton->setClickedCallback([this] { goBack(); }); - _filter->setClickedCallback([this] { showFilterSignal.notify(); }); - _search->setClickedCallback([this] { showSearch(); }); - _cancel->setClickedCallback([this] { cancelSearch(); }); + _backButton->setClickedCallback([=] { goBack(); }); + _filter->setClickedCallback([=] { showFilterSignal.notify(); }); + _search->setClickedCallback([=] { showSearch(); }); + _cancel->setClickedCallback([=] { cancelSearch(); }); _field->hide(); - connect(_field, &Ui::FlatInput::cancelled, this, [this] { cancelSearch(); }); - connect(_field, &Ui::FlatInput::changed, this, [this] { searchUpdated(); }); - connect(_field, &Ui::FlatInput::submitted, this, [this] { applySearch(); }); - _searchTimer.setCallback([this] { applySearch(); }); + connect(_field, &Ui::FlatInput::cancelled, [=] { cancelSearch(); }); + connect(_field, &Ui::FlatInput::changed, [=] { searchUpdated(); }); + connect(_field, &Ui::FlatInput::submitted, [=] { applySearch(); }); + _searchTimer.setCallback([=] { applySearch(); }); _cancel->hide(anim::type::instant); } diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 7b0b815338..00a14372ab 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -455,7 +455,7 @@ HistoryWidget::HistoryWidget( connect(_botStart, SIGNAL(clicked()), this, SLOT(onBotStart())); connect(_joinChannel, SIGNAL(clicked()), this, SLOT(onJoinChannel())); connect(_muteUnmute, SIGNAL(clicked()), this, SLOT(onMuteUnmute())); - connect(_field, SIGNAL(submitted(bool)), this, SLOT(onSend())); + connect(_field, &Ui::InputField::submitted, [=] { send(); }); connect(_field, SIGNAL(cancelled()), this, SLOT(onCancel())); connect(_field, SIGNAL(tabbed()), this, SLOT(onFieldTabbed())); connect(_field, SIGNAL(resized()), this, SLOT(onFieldResize())); @@ -2989,7 +2989,7 @@ void HistoryWidget::hideSelectorControlsAnimated() { } } -void HistoryWidget::onSend() { +void HistoryWidget::send() { if (!_history) return; if (_editMsgId) { @@ -3254,7 +3254,7 @@ void HistoryWidget::sendButtonClicked() { if (type == Ui::SendButton::Type::Cancel) { onInlineBotCancel(); } else if (type != Ui::SendButton::Type::Record) { - onSend(); + send(); } } diff --git a/Telegram/SourceFiles/history/history_widget.h b/Telegram/SourceFiles/history/history_widget.h index 49b3b30948..2a44b09491 100644 --- a/Telegram/SourceFiles/history/history_widget.h +++ b/Telegram/SourceFiles/history/history_widget.h @@ -433,8 +433,6 @@ public slots: void preloadHistoryIfNeeded(); private slots: - void onSend(); - void onHashtagOrBotCommandInsert(QString str, FieldAutocomplete::ChooseMethod method); void onMentionInsert(UserData *user); void onInlineBotCancel(); @@ -449,6 +447,7 @@ private: using TabbedSelector = ChatHelpers::TabbedSelector; using DragState = Storage::MimeDataState; + void send(); void handlePendingHistoryUpdate(); void fullPeerUpdated(PeerData *peer); void toggleTabbedSelectorMode(); diff --git a/Telegram/SourceFiles/passcodewidget.cpp b/Telegram/SourceFiles/passcodewidget.cpp index 56af74c3f2..e60c23aca1 100644 --- a/Telegram/SourceFiles/passcodewidget.cpp +++ b/Telegram/SourceFiles/passcodewidget.cpp @@ -23,16 +23,16 @@ PasscodeWidget::PasscodeWidget(QWidget *parent) : TWidget(parent) , _passcode(this, st::passcodeInput, langFactory(lng_passcode_ph)) , _submit(this, langFactory(lng_passcode_submit), st::passcodeSubmit) , _logout(this, lang(lng_passcode_logout)) { - connect(_passcode, SIGNAL(changed()), this, SLOT(onChanged())); - connect(_passcode, SIGNAL(submitted(bool)), this, SLOT(onSubmit())); + connect(_passcode, &Ui::MaskedInputField::changed, [=] { changed(); }); + connect(_passcode, &Ui::MaskedInputField::submitted, [=] { submit(); }); - _submit->setClickedCallback([this] { onSubmit(); }); + _submit->setClickedCallback([=] { submit(); }); _logout->setClickedCallback([] { App::wnd()->onLogout(); }); show(); } -void PasscodeWidget::onSubmit() { +void PasscodeWidget::submit() { if (_passcode->text().isEmpty()) { _passcode->showError(); return; @@ -51,7 +51,7 @@ void PasscodeWidget::onSubmit() { } else { cSetPasscodeBadTries(cPasscodeBadTries() + 1); cSetPasscodeLastTry(getms(true)); - onError(); + error(); return; } } else { @@ -67,20 +67,20 @@ void PasscodeWidget::onSubmit() { } else { cSetPasscodeBadTries(cPasscodeBadTries() + 1); cSetPasscodeLastTry(getms(true)); - onError(); + error(); return; } } } -void PasscodeWidget::onError() { +void PasscodeWidget::error() { _error = lang(lng_passcode_wrong); _passcode->selectAll(); _passcode->showError(); update(); } -void PasscodeWidget::onChanged() { +void PasscodeWidget::changed() { if (!_error.isEmpty()) { _error = QString(); update(); diff --git a/Telegram/SourceFiles/passcodewidget.h b/Telegram/SourceFiles/passcodewidget.h index b109afc3a0..e6f1d5c82b 100644 --- a/Telegram/SourceFiles/passcodewidget.h +++ b/Telegram/SourceFiles/passcodewidget.h @@ -14,8 +14,6 @@ class RoundButton; } // namespace Ui class PasscodeWidget : public TWidget { - Q_OBJECT - public: PasscodeWidget(QWidget *parent); @@ -27,13 +25,11 @@ protected: void paintEvent(QPaintEvent *e) override; void resizeEvent(QResizeEvent *e) override; -public slots: - void onError(); - void onChanged(); - void onSubmit(); - private: void animationCallback(); + void changed(); + void submit(); + void error(); void showAll(); void hideAll(); diff --git a/Telegram/SourceFiles/ui/countryinput.cpp b/Telegram/SourceFiles/ui/countryinput.cpp index dfdd100859..caf29431d1 100644 --- a/Telegram/SourceFiles/ui/countryinput.cpp +++ b/Telegram/SourceFiles/ui/countryinput.cpp @@ -208,7 +208,7 @@ void CountrySelectBox::prepare() { _select->resizeToWidth(st::boxWidth); _select->setQueryChangedCallback([this](const QString &query) { onFilterUpdate(query); }); - _select->setSubmittedCallback([this](bool) { onSubmit(); }); + _select->setSubmittedCallback([this](Qt::KeyboardModifiers) { onSubmit(); }); _inner = setInnerWidget(object_ptr(this), st::countriesScroll, _select->height()); diff --git a/Telegram/SourceFiles/ui/widgets/input_fields.cpp b/Telegram/SourceFiles/ui/widgets/input_fields.cpp index 57cf4b09fa..efdba8c73d 100644 --- a/Telegram/SourceFiles/ui/widgets/input_fields.cpp +++ b/Telegram/SourceFiles/ui/widgets/input_fields.cpp @@ -1010,7 +1010,7 @@ void FlatInput::keyPressEvent(QKeyEvent *e) { if (e->key() == Qt::Key_Escape) { emit cancelled(); } else if (e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter) { - emit submitted(ctrl && shift); + emit submitted(e->modifiers()); #ifdef Q_OS_MAC } else if (e->key() == Qt::Key_E && e->modifiers().testFlag(Qt::ControlModifier)) { auto selected = selectedText(); @@ -2249,7 +2249,7 @@ void InputField::keyPressEventInner(QKeyEvent *e) { && revertFormatReplace()) { e->accept(); } else if (enter && enterSubmit) { - emit submitted(ctrl && shift); + emit submitted(e->modifiers()); } else if (e->key() == Qt::Key_Escape) { e->ignore(); emit cancelled(); @@ -3505,7 +3505,7 @@ void MaskedInputField::keyPressEvent(QKeyEvent *e) { e->ignore(); emit cancelled(); } else if (e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter) { - emit submitted(ctrl && shift); + emit submitted(e->modifiers()); #ifdef Q_OS_MAC } else if (e->key() == Qt::Key_E && e->modifiers().testFlag(Qt::ControlModifier)) { auto selected = selectedText(); diff --git a/Telegram/SourceFiles/ui/widgets/input_fields.h b/Telegram/SourceFiles/ui/widgets/input_fields.h index 92bfbe1c63..10db179f7d 100644 --- a/Telegram/SourceFiles/ui/widgets/input_fields.h +++ b/Telegram/SourceFiles/ui/widgets/input_fields.h @@ -67,7 +67,7 @@ public slots: signals: void changed(); void cancelled(); - void submitted(bool ctrlShiftEnter); + void submitted(Qt::KeyboardModifiers); void focused(); void blurred(); @@ -298,7 +298,7 @@ private slots: signals: void changed(); - void submitted(bool ctrlShiftEnter); + void submitted(Qt::KeyboardModifiers); void cancelled(); void tabbed(); void focused(); @@ -518,7 +518,7 @@ public slots: signals: void changed(); void cancelled(); - void submitted(bool ctrlShiftEnter); + void submitted(Qt::KeyboardModifiers); void focused(); void blurred(); diff --git a/Telegram/SourceFiles/ui/widgets/multi_select.cpp b/Telegram/SourceFiles/ui/widgets/multi_select.cpp index 0d374b6843..57749affbb 100644 --- a/Telegram/SourceFiles/ui/widgets/multi_select.cpp +++ b/Telegram/SourceFiles/ui/widgets/multi_select.cpp @@ -289,7 +289,7 @@ void MultiSelect::setQueryChangedCallback(base::lambda callback) { +void MultiSelect::setSubmittedCallback(base::lambda callback) { _inner->setSubmittedCallback(std::move(callback)); } @@ -359,17 +359,17 @@ MultiSelect::Inner::Inner(QWidget *parent, const style::MultiSelect &st, base::l , _field(this, _st.field, std::move(placeholder)) , _cancel(this, _st.fieldCancel) { _field->customUpDown(true); - connect(_field, SIGNAL(focused()), this, SLOT(onFieldFocused())); - connect(_field, SIGNAL(changed()), this, SLOT(onQueryChanged())); - connect(_field, SIGNAL(submitted(bool)), this, SLOT(onSubmitted(bool))); - _cancel->setClickedCallback([this] { + connect(_field, &Ui::InputField::focused, [=] { fieldFocused(); }); + connect(_field, &Ui::InputField::changed, [=] { queryChanged(); }); + connect(_field, &Ui::InputField::submitted, this, &Inner::submitted); + _cancel->setClickedCallback([=] { clearQuery(); _field->setFocus(); }); setMouseTracking(true); } -void MultiSelect::Inner::onQueryChanged() { +void MultiSelect::Inner::queryChanged() { auto query = getQuery(); _cancel->toggle(!query.isEmpty(), anim::type::normal); updateFieldGeometry(); @@ -400,7 +400,8 @@ void MultiSelect::Inner::setQueryChangedCallback(base::lambda callback) { +void MultiSelect::Inner::setSubmittedCallback( + base::lambda callback) { _submittedCallback = std::move(callback); } @@ -563,7 +564,13 @@ void MultiSelect::Inner::keyPressEvent(QKeyEvent *e) { } } -void MultiSelect::Inner::onFieldFocused() { +void MultiSelect::Inner::submitted(Qt::KeyboardModifiers modifiers) { + if (_submittedCallback) { + _submittedCallback(modifiers); + } +} + +void MultiSelect::Inner::fieldFocused() { setActiveItem(-1, ChangeActiveWay::SkipSetFocus); } diff --git a/Telegram/SourceFiles/ui/widgets/multi_select.h b/Telegram/SourceFiles/ui/widgets/multi_select.h index 403bf67ef5..8127fac02e 100644 --- a/Telegram/SourceFiles/ui/widgets/multi_select.h +++ b/Telegram/SourceFiles/ui/widgets/multi_select.h @@ -25,7 +25,7 @@ public: void clearQuery(); void setQueryChangedCallback(base::lambda callback); - void setSubmittedCallback(base::lambda callback); + void setSubmittedCallback(base::lambda callback); void setResizedCallback(base::lambda callback); enum class AddItemWay { @@ -79,7 +79,7 @@ public: void clearQuery(); void setQueryChangedCallback(base::lambda callback); - void setSubmittedCallback(base::lambda callback); + void setSubmittedCallback(base::lambda callback); void addItemInBunch(std::unique_ptr item); void finishItemsBunch(AddItemWay way); @@ -105,16 +105,10 @@ protected: void mousePressEvent(QMouseEvent *e) override; void keyPressEvent(QKeyEvent *e) override; -private slots: - void onQueryChanged(); - void onSubmitted(bool ctrlShiftEnter) { - if (_submittedCallback) { - _submittedCallback(ctrlShiftEnter); - } - } - void onFieldFocused(); - private: + void submitted(Qt::KeyboardModifiers modifiers); + void queryChanged(); + void fieldFocused(); void computeItemsGeometry(int newWidth); void updateItemsGeometry(); void updateFieldGeometry(); @@ -159,7 +153,7 @@ private: Animation _height; base::lambda _queryChangedCallback; - base::lambda _submittedCallback; + base::lambda _submittedCallback; base::lambda _itemRemovedCallback; base::lambda _resizedCallback; diff --git a/Telegram/SourceFiles/window/notifications_manager_default.cpp b/Telegram/SourceFiles/window/notifications_manager_default.cpp index 510b65ceb6..89155a6683 100644 --- a/Telegram/SourceFiles/window/notifications_manager_default.cpp +++ b/Telegram/SourceFiles/window/notifications_manager_default.cpp @@ -495,7 +495,7 @@ Notification::Notification(Manager *manager, History *history, PeerData *peer, P updateNotifyDisplay(); _hideTimer.setSingleShot(true); - connect(&_hideTimer, SIGNAL(timeout()), this, SLOT(onHideByTimer())); + connect(&_hideTimer, &QTimer::timeout, [=] { startHiding(); }); _close->setClickedCallback([this] { unlinkHistoryInManager(); @@ -576,15 +576,11 @@ bool Notification::checkLastInput(bool hasReplyingNotifications) { return false; } -void Notification::onReplyResize() { +void Notification::replyResized() { changeHeight(st::notifyMinHeight + _replyArea->height() + st::notifyBorderWidth); } -void Notification::onReplySubmit(bool ctrlShiftEnter) { - sendReply(); -} - -void Notification::onReplyCancel() { +void Notification::replyCancel() { unlinkHistoryInManager(); } @@ -777,9 +773,9 @@ void Notification::showReplyField() { // Catch mouse press event to activate the window. QCoreApplication::instance()->installEventFilter(this); - connect(_replyArea, SIGNAL(resized()), this, SLOT(onReplyResize())); - connect(_replyArea, SIGNAL(submitted(bool)), this, SLOT(onReplySubmit(bool))); - connect(_replyArea, SIGNAL(cancelled()), this, SLOT(onReplyCancel())); + connect(_replyArea, &Ui::InputField::resized, [=] { replyResized(); }); + connect(_replyArea, &Ui::InputField::submitted, [=] { sendReply(); }); + connect(_replyArea, &Ui::InputField::cancelled, [=] { replyCancel(); }); _replySend.create(this, st::notifySendReply); _replySend->moveToRight(st::notifyBorderWidth, st::notifyMinHeight); @@ -788,7 +784,7 @@ void Notification::showReplyField() { toggleActionButtons(false); - onReplyResize(); + replyResized(); update(); } @@ -868,10 +864,6 @@ void Notification::stopHiding() { Widget::hideStop(); } -void Notification::onHideByTimer() { - startHiding(); -} - HideAllButton::HideAllButton(Manager *manager, QPoint startPosition, int shift, Direction shiftDirection) : Widget(manager, startPosition, shift, shiftDirection) { setCursor(style::cur_pointer); diff --git a/Telegram/SourceFiles/window/notifications_manager_default.h b/Telegram/SourceFiles/window/notifications_manager_default.h index 8f3b978413..cea8b3744e 100644 --- a/Telegram/SourceFiles/window/notifications_manager_default.h +++ b/Telegram/SourceFiles/window/notifications_manager_default.h @@ -164,8 +164,6 @@ protected: }; class Notification : public Widget { - Q_OBJECT - public: Notification(Manager *manager, History *history, PeerData *peer, PeerData *author, HistoryItem *item, int forwardedCount, QPoint startPosition, int shift, Direction shiftDirection); @@ -194,16 +192,12 @@ protected: void mousePressEvent(QMouseEvent *e) override; bool eventFilter(QObject *o, QEvent *e) override; -private slots: - void onHideByTimer(); - void onReplyResize(); - void onReplySubmit(bool ctrlShiftEnter); - void onReplyCancel(); - private: void refreshLang(); void updateReplyGeometry(); bool canReply() const; + void replyResized(); + void replyCancel(); void unlinkHistoryInManager(); void toggleActionButtons(bool visible); diff --git a/Telegram/SourceFiles/window/themes/window_theme_editor.cpp b/Telegram/SourceFiles/window/themes/window_theme_editor.cpp index a1feff1470..76469c1713 100644 --- a/Telegram/SourceFiles/window/themes/window_theme_editor.cpp +++ b/Telegram/SourceFiles/window/themes/window_theme_editor.cpp @@ -720,7 +720,7 @@ Editor::Editor(QWidget*, const QString &path) _select->resizeToWidth(st::windowMinWidth); _select->setQueryChangedCallback([this](const QString &query) { _inner->filterRows(query); _scroll->scrollToY(0); }); - _select->setSubmittedCallback([this](bool) { _inner->chooseRow(); }); + _select->setSubmittedCallback([this](Qt::KeyboardModifiers) { _inner->chooseRow(); }); _inner->prepare(); resizeToWidth(st::windowMinWidth);