Added choosing sticker action to field autocomplete.

This commit is contained in:
23rd 2021-09-01 01:22:31 +03:00
parent 4550b2a315
commit 59977da2b4
4 changed files with 33 additions and 6 deletions

View file

@ -199,6 +199,11 @@ auto FieldAutocomplete::stickerChosen() const
return _inner->stickerChosen();
}
auto FieldAutocomplete::choosingProcesses() const
-> rpl::producer<FieldAutocomplete::Type> {
return _scroll->scrollTopChanges() | rpl::map([=] { return _type; });
}
FieldAutocomplete::~FieldAutocomplete() = default;
void FieldAutocomplete::paintEvent(QPaintEvent *e) {

View file

@ -87,6 +87,12 @@ public:
Api::SendOptions options;
ChooseMethod method;
};
enum class Type {
Mentions,
Hashtags,
BotCommands,
Stickers,
};
bool chooseSelected(ChooseMethod method) const;
@ -111,6 +117,7 @@ public:
rpl::producer<HashtagChosen> hashtagChosen() const;
rpl::producer<BotCommandChosen> botCommandChosen() const;
rpl::producer<StickerChosen> stickerChosen() const;
rpl::producer<Type> choosingProcesses() const;
public Q_SLOTS:
void showAnimated();
@ -176,12 +183,6 @@ private:
ChannelData *_channel = nullptr;
EmojiPtr _emoji;
uint64 _stickersSeed = 0;
enum class Type {
Mentions,
Hashtags,
BotCommands,
Stickers,
};
Type _type = Type::Mentions;
QString _filter;
QRect _boundings;

View file

@ -360,6 +360,18 @@ HistoryWidget::HistoryWidget(
: _keyboard->moderateKeyActivate(key);
});
_fieldAutocomplete->choosingProcesses(
) | rpl::start_with_next([=](FieldAutocomplete::Type type) {
if (!_history) {
return;
}
if (type == FieldAutocomplete::Type::Stickers) {
session().sendProgressManager().update(
_history,
Api::SendProgressType::ChooseSticker);
}
}, lifetime());
_fieldAutocomplete->setSendMenuType([=] { return sendMenuType(); });
if (_supportAutocomplete) {

View file

@ -1236,6 +1236,15 @@ void ComposeControls::initAutocomplete() {
});
}, _autocomplete->lifetime());
_autocomplete->choosingProcesses(
) | rpl::start_with_next([=](FieldAutocomplete::Type type) {
if (type == FieldAutocomplete::Type::Stickers) {
_sendActionUpdates.fire({
.type = Api::SendProgressType::ChooseSticker,
});
}
}, _autocomplete->lifetime());
_autocomplete->setSendMenuType([=] { return sendMenuType(); });
//_autocomplete->setModerateKeyActivateCallback([=](int key) {