mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 22:27:20 +02:00
Fixed filling menu with send options for inline bots and autocomplete.
This commit is contained in:
parent
a6e4ac679c
commit
e1017380ec
7 changed files with 46 additions and 2 deletions
|
@ -68,6 +68,7 @@ public:
|
|||
Api::SendOptions options = Api::SendOptions()) const;
|
||||
|
||||
void setRecentInlineBotsInRows(int32 bots);
|
||||
void setSendMenuType(Fn<SendMenu::Type()> &&callback);
|
||||
void rowsUpdated();
|
||||
|
||||
rpl::producer<FieldAutocomplete::MentionChosen> mentionChosen() const;
|
||||
|
@ -121,6 +122,8 @@ private:
|
|||
|
||||
bool _previewShown = false;
|
||||
|
||||
Fn<SendMenu::Type()> _sendMenuType;
|
||||
|
||||
rpl::event_stream<FieldAutocomplete::MentionChosen> _mentionChosen;
|
||||
rpl::event_stream<FieldAutocomplete::HashtagChosen> _hashtagChosen;
|
||||
rpl::event_stream<FieldAutocomplete::BotCommandChosen> _botCommandChosen;
|
||||
|
@ -686,6 +689,10 @@ bool FieldAutocomplete::chooseSelected(ChooseMethod method) const {
|
|||
return _inner->chooseSelected(method);
|
||||
}
|
||||
|
||||
void FieldAutocomplete::setSendMenuType(Fn<SendMenu::Type()> &&callback) {
|
||||
_inner->setSendMenuType(std::move(callback));
|
||||
}
|
||||
|
||||
bool FieldAutocomplete::eventFilter(QObject *obj, QEvent *e) {
|
||||
auto hidden = isHidden();
|
||||
auto moderate = Core::App().settings().moderateModeEnabled();
|
||||
|
@ -1116,7 +1123,9 @@ void FieldAutocomplete::Inner::contextMenuEvent(QContextMenuEvent *e) {
|
|||
return;
|
||||
}
|
||||
const auto index = _sel;
|
||||
const auto type = SendMenu::Type::Scheduled;
|
||||
const auto type = _sendMenuType
|
||||
? _sendMenuType()
|
||||
: SendMenu::Type::Disabled;
|
||||
const auto method = FieldAutocomplete::ChooseMethod::ByClick;
|
||||
_menu = base::make_unique_q<Ui::PopupMenu>(this);
|
||||
|
||||
|
@ -1301,6 +1310,11 @@ void FieldAutocomplete::Inner::showPreview() {
|
|||
}
|
||||
}
|
||||
|
||||
void FieldAutocomplete::Inner::setSendMenuType(
|
||||
Fn<SendMenu::Type()> &&callback) {
|
||||
_sendMenuType = std::move(callback);
|
||||
}
|
||||
|
||||
auto FieldAutocomplete::Inner::mentionChosen() const
|
||||
-> rpl::producer<FieldAutocomplete::MentionChosen> {
|
||||
return _mentionChosen.events();
|
||||
|
|
|
@ -33,6 +33,11 @@ class DocumentMedia;
|
|||
class CloudImageView;
|
||||
} // namespace Data
|
||||
|
||||
namespace SendMenu {
|
||||
enum class Type;
|
||||
} // namespace SendMenu
|
||||
|
||||
|
||||
class FieldAutocomplete final : public Ui::RpWidget {
|
||||
public:
|
||||
FieldAutocomplete(
|
||||
|
@ -98,6 +103,7 @@ public:
|
|||
void setModerateKeyActivateCallback(Fn<bool(int)> callback) {
|
||||
_moderateKeyActivateCallback = std::move(callback);
|
||||
}
|
||||
void setSendMenuType(Fn<SendMenu::Type()> &&callback);
|
||||
|
||||
void hideFast();
|
||||
|
||||
|
|
|
@ -1120,6 +1120,8 @@ void ComposeControls::initAutocomplete() {
|
|||
});
|
||||
}, _autocomplete->lifetime());
|
||||
|
||||
_autocomplete->setSendMenuType([=] { return sendMenuType(); });
|
||||
|
||||
//_autocomplete->setModerateKeyActivateCallback([=](int key) {
|
||||
// return _keyboard->isHidden()
|
||||
// ? false
|
||||
|
@ -2187,6 +2189,7 @@ void ComposeControls::applyInlineBotQuery(
|
|||
InlineBots::ResultSelected result) {
|
||||
_inlineResultChosen.fire_copy(result);
|
||||
});
|
||||
_inlineResults->setSendMenuType([=] { return sendMenuType(); });
|
||||
_inlineResults->requesting(
|
||||
) | rpl::start_with_next([=](bool requesting) {
|
||||
_tabbedSelectorToggle->setLoading(requesting);
|
||||
|
|
|
@ -290,7 +290,9 @@ void Inner::contextMenuEvent(QContextMenuEvent *e) {
|
|||
}
|
||||
const auto row = _selected / MatrixRowShift;
|
||||
const auto column = _selected % MatrixRowShift;
|
||||
const auto type = SendMenu::Type::Scheduled;
|
||||
const auto type = _sendMenuType
|
||||
? _sendMenuType()
|
||||
: SendMenu::Type::Disabled;
|
||||
|
||||
_menu = base::make_unique_q<Ui::PopupMenu>(this);
|
||||
|
||||
|
@ -765,5 +767,9 @@ void Inner::switchPm() {
|
|||
}
|
||||
}
|
||||
|
||||
void Inner::setSendMenuType(Fn<SendMenu::Type()> &&callback) {
|
||||
_sendMenuType = std::move(callback);
|
||||
}
|
||||
|
||||
} // namespace Layout
|
||||
} // namespace InlineBots
|
||||
|
|
|
@ -40,6 +40,10 @@ class Result;
|
|||
struct ResultSelected;
|
||||
} // namespace InlineBots
|
||||
|
||||
namespace SendMenu {
|
||||
enum class Type;
|
||||
} // namespace SendMenu
|
||||
|
||||
namespace InlineBots {
|
||||
namespace Layout {
|
||||
|
||||
|
@ -87,6 +91,7 @@ public:
|
|||
void setCurrentDialogsEntryState(Dialogs::EntryState state) {
|
||||
_currentDialogsEntryState = state;
|
||||
}
|
||||
void setSendMenuType(Fn<SendMenu::Type()> &&callback);
|
||||
|
||||
// Ui::AbstractTooltipShower interface.
|
||||
QString tooltipText() const override;
|
||||
|
@ -179,6 +184,7 @@ private:
|
|||
bool _previewShown = false;
|
||||
|
||||
Fn<void(ResultSelected)> _resultSelectedCallback;
|
||||
Fn<SendMenu::Type()> _sendMenuType;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -237,6 +237,10 @@ void Widget::setResultSelectedCallback(Fn<void(ResultSelected)> callback) {
|
|||
_inner->setResultSelectedCallback(std::move(callback));
|
||||
}
|
||||
|
||||
void Widget::setSendMenuType(Fn<SendMenu::Type()> &&callback) {
|
||||
_inner->setSendMenuType(std::move(callback));
|
||||
}
|
||||
|
||||
void Widget::setCurrentDialogsEntryState(Dialogs::EntryState state) {
|
||||
_inner->setCurrentDialogsEntryState(state);
|
||||
}
|
||||
|
|
|
@ -43,6 +43,10 @@ class Result;
|
|||
struct ResultSelected;
|
||||
} // namespace InlineBots
|
||||
|
||||
namespace SendMenu {
|
||||
enum class Type;
|
||||
} // namespace SendMenu
|
||||
|
||||
namespace InlineBots {
|
||||
namespace Layout {
|
||||
|
||||
|
@ -70,6 +74,7 @@ public:
|
|||
void hideAnimated();
|
||||
|
||||
void setResultSelectedCallback(Fn<void(ResultSelected)> callback);
|
||||
void setSendMenuType(Fn<SendMenu::Type()> &&callback);
|
||||
void setCurrentDialogsEntryState(Dialogs::EntryState state);
|
||||
|
||||
[[nodiscard]] rpl::producer<bool> requesting() const {
|
||||
|
|
Loading…
Add table
Reference in a new issue