mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Single-click change Send As.
This commit is contained in:
parent
773755d70e
commit
ad52c0cb16
1 changed files with 16 additions and 16 deletions
|
@ -34,13 +34,14 @@ public:
|
||||||
void prepare() override;
|
void prepare() override;
|
||||||
void rowClicked(not_null<PeerListRow*> row) override;
|
void rowClicked(not_null<PeerListRow*> row) override;
|
||||||
|
|
||||||
[[nodiscard]] not_null<PeerData*> selected() const;
|
[[nodiscard]] rpl::producer<not_null<PeerData*>> clicked() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<PeerListRow> createRow(not_null<PeerData*> peer);
|
std::unique_ptr<PeerListRow> createRow(not_null<PeerData*> peer);
|
||||||
|
|
||||||
std::vector<not_null<PeerData*>> _list;
|
std::vector<not_null<PeerData*>> _list;
|
||||||
not_null<PeerData*> _selected;
|
not_null<PeerData*> _selected;
|
||||||
|
rpl::event_stream<not_null<PeerData*>> _clicked;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -92,15 +93,11 @@ void ListController::rowClicked(not_null<PeerListRow*> row) {
|
||||||
if (peer == _selected) {
|
if (peer == _selected) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto previous = delegate()->peerListFindRow(_selected->id.value);
|
_clicked.fire_copy(peer);
|
||||||
Assert(previous != nullptr);
|
|
||||||
delegate()->peerListSetRowChecked(previous, false);
|
|
||||||
delegate()->peerListSetRowChecked(row, true);
|
|
||||||
_selected = peer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
not_null<PeerData*> ListController::selected() const {
|
rpl::producer<not_null<PeerData*>> ListController::clicked() const {
|
||||||
return _selected;
|
return _clicked.events();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
@ -131,19 +128,22 @@ void ChooseSendAsBox(
|
||||||
controller->setStyleOverrides(
|
controller->setStyleOverrides(
|
||||||
&st::peerListJoinAsList,
|
&st::peerListJoinAsList,
|
||||||
nullptr);
|
nullptr);
|
||||||
|
|
||||||
|
controller->clicked(
|
||||||
|
) | rpl::start_with_next([=](not_null<PeerData*> peer) {
|
||||||
|
const auto weak = MakeWeak(box);
|
||||||
|
done(peer);
|
||||||
|
if (weak) {
|
||||||
|
box->closeBox();
|
||||||
|
}
|
||||||
|
}, box->lifetime());
|
||||||
|
|
||||||
const auto content = box->addRow(
|
const auto content = box->addRow(
|
||||||
object_ptr<PeerListContent>(box, controller),
|
object_ptr<PeerListContent>(box, controller),
|
||||||
style::margins());
|
style::margins());
|
||||||
delegate->setContent(content);
|
delegate->setContent(content);
|
||||||
controller->setDelegate(delegate);
|
controller->setDelegate(delegate);
|
||||||
box->addButton(tr::lng_settings_save(), [=] {
|
box->addButton(tr::lng_box_done(), [=] { box->closeBox(); });
|
||||||
const auto weak = MakeWeak(box);
|
|
||||||
done(controller->selected());
|
|
||||||
if (weak) {
|
|
||||||
box->closeBox();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
box->addButton(tr::lng_cancel(), [=] { box->closeBox(); });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetupSendAsButton(
|
void SetupSendAsButton(
|
||||||
|
|
Loading…
Add table
Reference in a new issue