mirror of https://github.com/procxx/kepka.git
Display verified badge in the info.
This commit is contained in:
parent
230c83d218
commit
3fe12f1249
Telegram/SourceFiles/info
|
@ -251,6 +251,11 @@ infoProfileNameLabel: FlatLabel(infoProfileStatusLabel) {
|
|||
linkFontOver: font(16px semibold underline);
|
||||
}
|
||||
}
|
||||
infoVerifiedCheckPosition: point(10px, 2px);
|
||||
infoVerifiedCheck: icon {
|
||||
{ "profile_verified_star", profileVerifiedCheckBg, point(0px, 0px) },
|
||||
{ "profile_verified_check", profileVerifiedCheckFg, point(4px, 4px) }
|
||||
};
|
||||
|
||||
infoProfileSkip: 12px;
|
||||
|
||||
|
|
|
@ -264,17 +264,40 @@ void Cover::initViewers() {
|
|||
using Flag = Notify::PeerUpdate::Flag;
|
||||
Notify::PeerUpdateValue(_peer, Flag::PhotoChanged)
|
||||
| rpl::start_with_next(
|
||||
[this] { this->refreshUserpicLink(); },
|
||||
[this] { refreshUserpicLink(); },
|
||||
lifetime());
|
||||
Notify::PeerUpdateValue(_peer, Flag::NameChanged)
|
||||
| rpl::start_with_next(
|
||||
[this] { this->refreshNameText(); },
|
||||
[this] { refreshNameText(); },
|
||||
lifetime());
|
||||
Notify::PeerUpdateValue(_peer,
|
||||
Flag::UserOnlineChanged | Flag::MembersChanged)
|
||||
| rpl::start_with_next(
|
||||
[this] { this->refreshStatusText(); },
|
||||
[this] { refreshStatusText(); },
|
||||
lifetime());
|
||||
VerifiedValue(_peer)
|
||||
| rpl::start_with_next(
|
||||
[this](bool verified) { setVerified(verified); },
|
||||
lifetime());
|
||||
}
|
||||
|
||||
void Cover::setVerified(bool verified) {
|
||||
if ((_verifiedCheck != nullptr) == verified) {
|
||||
return;
|
||||
}
|
||||
if (verified) {
|
||||
_verifiedCheck.create(this);
|
||||
_verifiedCheck->show();
|
||||
_verifiedCheck->resize(st::infoVerifiedCheck.size());
|
||||
_verifiedCheck->paintRequest()
|
||||
| rpl::start_with_next([check = _verifiedCheck.data()] {
|
||||
Painter p(check);
|
||||
st::infoVerifiedCheck.paint(p, 0, 0, check->width());
|
||||
}, _verifiedCheck->lifetime());
|
||||
} else {
|
||||
_verifiedCheck.destroy();
|
||||
}
|
||||
refreshNameGeometry(width());
|
||||
}
|
||||
|
||||
void Cover::initUserpicButton() {
|
||||
|
@ -338,15 +361,26 @@ Cover::~Cover() {
|
|||
}
|
||||
|
||||
void Cover::refreshNameGeometry(int newWidth) {
|
||||
auto nameLeft = st::infoProfileNameLeft;
|
||||
auto nameTop = st::infoProfileNameTop;
|
||||
auto nameWidth = newWidth
|
||||
- st::infoProfileNameLeft
|
||||
- nameLeft
|
||||
- st::infoProfileNameRight
|
||||
- toggleSkip();
|
||||
_name->resizeToWidth(nameWidth);
|
||||
_name->moveToLeft(
|
||||
st::infoProfileNameLeft,
|
||||
st::infoProfileNameTop,
|
||||
newWidth);
|
||||
if (_verifiedCheck) {
|
||||
nameWidth -= st::infoVerifiedCheckPosition.x()
|
||||
+ st::infoVerifiedCheck.width();
|
||||
}
|
||||
_name->resizeToNaturalWidth(nameWidth);
|
||||
_name->moveToLeft(nameLeft, nameTop, newWidth);
|
||||
if (_verifiedCheck) {
|
||||
auto checkLeft = nameLeft
|
||||
+ _name->width()
|
||||
+ st::infoVerifiedCheckPosition.x();
|
||||
auto checkTop = nameTop
|
||||
+ st::infoVerifiedCheckPosition.y();
|
||||
_verifiedCheck->moveToLeft(checkLeft, checkTop, newWidth);
|
||||
}
|
||||
}
|
||||
|
||||
void Cover::refreshStatusGeometry(int newWidth) {
|
||||
|
|
|
@ -81,12 +81,14 @@ private:
|
|||
void refreshStatusText();
|
||||
void refreshNameGeometry(int newWidth);
|
||||
void refreshStatusGeometry(int newWidth);
|
||||
void setVerified(bool verified);
|
||||
|
||||
not_null<PeerData*> _peer;
|
||||
int _onlineCount = 0;
|
||||
|
||||
object_ptr<::Profile::UserpicButton> _userpic;
|
||||
object_ptr<Ui::FlatLabel> _name = { nullptr };
|
||||
object_ptr<Ui::RpWidget> _verifiedCheck = { nullptr };
|
||||
object_ptr<Ui::FlatLabel> _status = { nullptr };
|
||||
//object_ptr<CoverDropArea> _dropArea = { nullptr };
|
||||
|
||||
|
|
|
@ -214,5 +214,17 @@ rpl::producer<bool> CanAddMemberValue(
|
|||
return rpl::single(false);
|
||||
}
|
||||
|
||||
rpl::producer<bool> VerifiedValue(
|
||||
not_null<PeerData*> peer) {
|
||||
if (auto user = peer->asUser()) {
|
||||
return Data::PeerFlagValue(user, MTPDuser::Flag::f_verified);
|
||||
} else if (auto channel = peer->asChannel()) {
|
||||
return Data::PeerFlagValue(
|
||||
channel,
|
||||
MTPDchannel::Flag::f_verified);
|
||||
}
|
||||
return rpl::single(false);
|
||||
}
|
||||
|
||||
} // namespace Profile
|
||||
} // namespace Info
|
||||
|
|
|
@ -73,6 +73,8 @@ rpl::producer<int> CommonGroupsCountValue(
|
|||
not_null<UserData*> user);
|
||||
rpl::producer<bool> CanAddMemberValue(
|
||||
not_null<PeerData*> peer);
|
||||
rpl::producer<bool> VerifiedValue(
|
||||
not_null<PeerData*> peer);
|
||||
|
||||
} // namespace Profile
|
||||
} // namespace Info
|
||||
|
|
Loading…
Reference in New Issue