Improve peer list decorate widgets.

This commit is contained in:
John Preston 2023-04-04 18:51:09 +04:00
parent 1ffbc122e1
commit 09de881036
2 changed files with 30 additions and 23 deletions

View File

@ -1221,18 +1221,14 @@ void PeerListContent::setSearchNoResults(object_ptr<Ui::FlatLabel> noResults) {
}
}
void PeerListContent::setAboveWidget(object_ptr<TWidget> widget) {
void PeerListContent::setAboveWidget(object_ptr<Ui::RpWidget> widget) {
_aboveWidget = std::move(widget);
if (_aboveWidget) {
_aboveWidget->setParent(this);
}
initDecorateWidget(_aboveWidget.data());
}
void PeerListContent::setAboveSearchWidget(object_ptr<TWidget> widget) {
void PeerListContent::setAboveSearchWidget(object_ptr<Ui::RpWidget> widget) {
_aboveSearchWidget = std::move(widget);
if (_aboveSearchWidget) {
_aboveSearchWidget->setParent(this);
}
initDecorateWidget(_aboveSearchWidget.data());
}
void PeerListContent::setHideEmpty(bool hide) {
@ -1240,10 +1236,20 @@ void PeerListContent::setHideEmpty(bool hide) {
resizeToWidth(width());
}
void PeerListContent::setBelowWidget(object_ptr<TWidget> widget) {
void PeerListContent::setBelowWidget(object_ptr<Ui::RpWidget> widget) {
_belowWidget = std::move(widget);
if (_belowWidget) {
_belowWidget->setParent(this);
initDecorateWidget(_belowWidget.data());
}
void PeerListContent::initDecorateWidget(Ui::RpWidget *widget) {
if (widget) {
widget->setParent(this);
widget->events(
) | rpl::filter([=](not_null<QEvent*> e) {
return (e->type() == QEvent::Enter) && widget->isVisible();
}) | rpl::start_with_next([=] {
mouseLeftGeometry();
}, widget->lifetime());
}
}

View File

@ -298,9 +298,9 @@ public:
virtual void peerListSetHideEmpty(bool hide) = 0;
virtual void peerListSetDescription(object_ptr<Ui::FlatLabel> description) = 0;
virtual void peerListSetSearchNoResults(object_ptr<Ui::FlatLabel> noResults) = 0;
virtual void peerListSetAboveWidget(object_ptr<TWidget> aboveWidget) = 0;
virtual void peerListSetAboveSearchWidget(object_ptr<TWidget> aboveWidget) = 0;
virtual void peerListSetBelowWidget(object_ptr<TWidget> belowWidget) = 0;
virtual void peerListSetAboveWidget(object_ptr<Ui::RpWidget> aboveWidget) = 0;
virtual void peerListSetAboveSearchWidget(object_ptr<Ui::RpWidget> aboveWidget) = 0;
virtual void peerListSetBelowWidget(object_ptr<Ui::RpWidget> belowWidget) = 0;
virtual void peerListMouseLeftGeometry() = 0;
virtual void peerListSetSearchMode(PeerListSearchMode mode) = 0;
virtual void peerListAppendRow(std::unique_ptr<PeerListRow> row) = 0;
@ -618,9 +618,9 @@ public:
void setDescription(object_ptr<Ui::FlatLabel> description);
void setSearchLoading(object_ptr<Ui::FlatLabel> loading);
void setSearchNoResults(object_ptr<Ui::FlatLabel> noResults);
void setAboveWidget(object_ptr<TWidget> widget);
void setAboveSearchWidget(object_ptr<TWidget> widget);
void setBelowWidget(object_ptr<TWidget> width);
void setAboveWidget(object_ptr<Ui::RpWidget> widget);
void setAboveSearchWidget(object_ptr<Ui::RpWidget> widget);
void setBelowWidget(object_ptr<Ui::RpWidget> width);
void setHideEmpty(bool hide);
void refreshRows();
@ -781,6 +781,7 @@ private:
void clearAllContent();
void handleMouseMove(QPoint globalPosition);
void mousePressReleased(Qt::MouseButton button);
void initDecorateWidget(Ui::RpWidget *widget);
const style::PeerList &_st;
not_null<PeerListController*> _controller;
@ -815,9 +816,9 @@ private:
int _aboveHeight = 0;
int _belowHeight = 0;
bool _hideEmpty = false;
object_ptr<TWidget> _aboveWidget = { nullptr };
object_ptr<TWidget> _aboveSearchWidget = { nullptr };
object_ptr<TWidget> _belowWidget = { nullptr };
object_ptr<Ui::RpWidget> _aboveWidget = { nullptr };
object_ptr<Ui::RpWidget> _aboveSearchWidget = { nullptr };
object_ptr<Ui::RpWidget> _belowWidget = { nullptr };
object_ptr<Ui::FlatLabel> _description = { nullptr };
object_ptr<Ui::FlatLabel> _searchNoResults = { nullptr };
object_ptr<Ui::FlatLabel> _searchLoading = { nullptr };
@ -901,13 +902,13 @@ public:
void peerListSetSearchNoResults(object_ptr<Ui::FlatLabel> noResults) override {
_content->setSearchNoResults(std::move(noResults));
}
void peerListSetAboveWidget(object_ptr<TWidget> aboveWidget) override {
void peerListSetAboveWidget(object_ptr<Ui::RpWidget> aboveWidget) override {
_content->setAboveWidget(std::move(aboveWidget));
}
void peerListSetAboveSearchWidget(object_ptr<TWidget> aboveWidget) override {
void peerListSetAboveSearchWidget(object_ptr<Ui::RpWidget> aboveWidget) override {
_content->setAboveSearchWidget(std::move(aboveWidget));
}
void peerListSetBelowWidget(object_ptr<TWidget> belowWidget) override {
void peerListSetBelowWidget(object_ptr<Ui::RpWidget> belowWidget) override {
_content->setBelowWidget(std::move(belowWidget));
}
void peerListSetSearchMode(PeerListSearchMode mode) override {