mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 14:17:12 +02:00
Added right button to rows of usernames list for reorder.
This commit is contained in:
parent
00df4625e2
commit
4207995ef0
3 changed files with 56 additions and 2 deletions
|
@ -28,6 +28,35 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
|
||||
#include <QtGui/QGuiApplication>
|
||||
|
||||
namespace {
|
||||
|
||||
class RightAction final : public Ui::RpWidget {
|
||||
public:
|
||||
RightAction(not_null<Ui::RpWidget*> parent);
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *e) override;
|
||||
void mousePressEvent(QMouseEvent *e) override;
|
||||
|
||||
};
|
||||
|
||||
RightAction::RightAction(not_null<Ui::RpWidget*> parent)
|
||||
: RpWidget(parent) {
|
||||
setCursor(style::cur_sizeall);
|
||||
const auto &st = st::inviteLinkThreeDots;
|
||||
resize(st.width, st.height);
|
||||
}
|
||||
|
||||
void RightAction::paintEvent(QPaintEvent *e) {
|
||||
auto p = Painter(this);
|
||||
st::usernamesReorderIcon.paintInCenter(p, rect());
|
||||
}
|
||||
|
||||
void RightAction::mousePressEvent(QMouseEvent *e) {
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
class UsernamesList::Row final : public Ui::SettingsButton {
|
||||
public:
|
||||
Row(
|
||||
|
@ -37,6 +66,7 @@ public:
|
|||
QString link);
|
||||
|
||||
[[nodiscard]] const Data::Username &username() const;
|
||||
[[nodiscard]] not_null<Ui::RpWidget*> rightAction() const;
|
||||
|
||||
int resizeGetHeight(int newWidth) override;
|
||||
|
||||
|
@ -47,6 +77,7 @@ private:
|
|||
const style::PeerListItem &_st;
|
||||
const Data::Username _data;
|
||||
const QString _status;
|
||||
const not_null<Ui::RpWidget*> _rightAction;
|
||||
const QRect _iconRect;
|
||||
std::shared_ptr<Ui::Show> _show;
|
||||
Ui::Text::String _title;
|
||||
|
@ -65,6 +96,7 @@ UsernamesList::Row::Row(
|
|||
, _status(data.active
|
||||
? tr::lng_usernames_active(tr::now)
|
||||
: tr::lng_usernames_non_active(tr::now))
|
||||
, _rightAction(Ui::CreateChild<RightAction>(this))
|
||||
, _iconRect(
|
||||
_st.photoPosition.x() + st::inviteLinkIconSkip,
|
||||
_st.photoPosition.y() + st::inviteLinkIconSkip,
|
||||
|
@ -91,12 +123,24 @@ UsernamesList::Row::Row(
|
|||
_menu->popup(QCursor::pos());
|
||||
return base::EventFilterResult::Cancel;
|
||||
});
|
||||
|
||||
_rightAction->setVisible(data.active);
|
||||
sizeValue(
|
||||
) | rpl::start_with_next([=](const QSize &s) {
|
||||
_rightAction->moveToLeft(
|
||||
s.width() - _rightAction->width() - st::inviteLinkThreeDotsSkip,
|
||||
(s.height() - _rightAction->height()) / 2);
|
||||
}, _rightAction->lifetime());
|
||||
}
|
||||
|
||||
const Data::Username &UsernamesList::Row::username() const {
|
||||
return _data;
|
||||
}
|
||||
|
||||
not_null<Ui::RpWidget*> UsernamesList::Row::rightAction() const {
|
||||
return _rightAction;
|
||||
}
|
||||
|
||||
int UsernamesList::Row::resizeGetHeight(int newWidth) {
|
||||
return _st.height;
|
||||
}
|
||||
|
@ -252,6 +296,9 @@ void UsernamesList::rebuild(const Data::Usernames &usernames) {
|
|||
}
|
||||
|
||||
_reorder = std::make_unique<Ui::VerticalLayoutReorder>(content);
|
||||
_reorder->setMouseEventProxy([=](int i) {
|
||||
return _rows[i]->rightAction();
|
||||
});
|
||||
|
||||
{
|
||||
const auto it = ranges::find_if(usernames, [&](
|
||||
|
@ -262,6 +309,10 @@ void UsernamesList::rebuild(const Data::Usernames &usernames) {
|
|||
const auto from = std::distance(begin(usernames), it);
|
||||
const auto length = std::distance(it, end(usernames));
|
||||
_reorder->addPinnedInterval(from, length);
|
||||
if (from == 1) {
|
||||
// Can't be reordered.
|
||||
_rows[0]->rightAction()->hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
_reorder->start();
|
||||
|
|
|
@ -38,10 +38,11 @@ private:
|
|||
|
||||
class Row;
|
||||
|
||||
const std::shared_ptr<Ui::Show> _show;
|
||||
const not_null<PeerData*> _peer;
|
||||
|
||||
base::unique_qptr<Ui::VerticalLayout> _container;
|
||||
std::unique_ptr<Ui::VerticalLayoutReorder> _reorder;
|
||||
std::shared_ptr<Ui::Show> _show;
|
||||
const not_null<PeerData*> _peer;
|
||||
std::vector<Row*> _rows;
|
||||
|
||||
int _reordering = 0;
|
||||
|
|
|
@ -853,6 +853,8 @@ inviteLinkQrSkip: 24px;
|
|||
inviteLinkQrMargin: margins(0px, 0px, 0px, 13px);
|
||||
inviteLinkQrValuePadding: margins(22px, 0px, 22px, 12px);
|
||||
|
||||
usernamesReorderIcon: icon {{ "stickers_reorder", dialogsMenuIconFg }};
|
||||
|
||||
infoAboutGigagroup: FlatLabel(defaultFlatLabel) {
|
||||
minWidth: 274px;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue