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(); return _inner->stickerChosen();
} }
auto FieldAutocomplete::choosingProcesses() const
-> rpl::producer<FieldAutocomplete::Type> {
return _scroll->scrollTopChanges() | rpl::map([=] { return _type; });
}
FieldAutocomplete::~FieldAutocomplete() = default; FieldAutocomplete::~FieldAutocomplete() = default;
void FieldAutocomplete::paintEvent(QPaintEvent *e) { void FieldAutocomplete::paintEvent(QPaintEvent *e) {

View file

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

View file

@ -360,6 +360,18 @@ HistoryWidget::HistoryWidget(
: _keyboard->moderateKeyActivate(key); : _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(); }); _fieldAutocomplete->setSendMenuType([=] { return sendMenuType(); });
if (_supportAutocomplete) { if (_supportAutocomplete) {

View file

@ -1236,6 +1236,15 @@ void ComposeControls::initAutocomplete() {
}); });
}, _autocomplete->lifetime()); }, _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->setSendMenuType([=] { return sendMenuType(); });
//_autocomplete->setModerateKeyActivateCallback([=](int key) { //_autocomplete->setModerateKeyActivateCallback([=](int key) {