mirror of https://github.com/procxx/kepka.git
Display user Bio in profile.
This commit is contained in:
parent
34d2e78308
commit
7ff175a81e
|
@ -105,6 +105,10 @@ profileBlockOneLineTextPart: FlatLabel(profileBlockTextPart) {
|
||||||
width: 0px; // No need to set minWidth in one-line text.
|
width: 0px; // No need to set minWidth in one-line text.
|
||||||
maxHeight: 20px;
|
maxHeight: 20px;
|
||||||
}
|
}
|
||||||
|
profileBioLabel: FlatLabel(profileBlockOneLineTextPart) {
|
||||||
|
width: 120px;
|
||||||
|
maxHeight: 0px;
|
||||||
|
}
|
||||||
profileBlockOneLineSkip: 9px;
|
profileBlockOneLineSkip: 9px;
|
||||||
profileBlockOneLineWidthMax: 240px;
|
profileBlockOneLineWidthMax: 240px;
|
||||||
|
|
||||||
|
|
|
@ -110,10 +110,11 @@ int InfoWidget::resizeGetHeight(int newWidth) {
|
||||||
text->show();
|
text->show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
newHeight += label->height() + st::profileBlockOneLineSkip;
|
newHeight += qMax(label->height(), text->height() - st::profileBlockTextPart.margin.top() - st::profileBlockTextPart.margin.bottom()) + st::profileBlockOneLineSkip;
|
||||||
};
|
};
|
||||||
moveLabeledText(_channelLinkLabel, _channelLink, _channelLinkShort);
|
moveLabeledText(_channelLinkLabel, _channelLink, _channelLinkShort);
|
||||||
moveLabeledText(_mobileNumberLabel, _mobileNumber, nullptr);
|
moveLabeledText(_mobileNumberLabel, _mobileNumber, nullptr);
|
||||||
|
moveLabeledText(_bioLabel, _bio, nullptr);
|
||||||
moveLabeledText(_usernameLabel, _username, nullptr);
|
moveLabeledText(_usernameLabel, _username, nullptr);
|
||||||
|
|
||||||
newHeight += st::profileBlockMarginBottom;
|
newHeight += st::profileBlockMarginBottom;
|
||||||
|
@ -135,7 +136,7 @@ void InfoWidget::refreshLabels() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void InfoWidget::refreshVisibility() {
|
void InfoWidget::refreshVisibility() {
|
||||||
setVisible(_about || _mobileNumber || _username || _channelLink);
|
setVisible(_about || _mobileNumber || _username || _bio || _channelLink);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InfoWidget::refreshAbout() {
|
void InfoWidget::refreshAbout() {
|
||||||
|
@ -149,18 +150,33 @@ void InfoWidget::refreshAbout() {
|
||||||
};
|
};
|
||||||
|
|
||||||
_about.destroy();
|
_about.destroy();
|
||||||
|
_bioLabel.destroy();
|
||||||
|
_bio.destroy();
|
||||||
auto aboutText = TextWithEntities { TextUtilities::Clean(getAboutText()) };
|
auto aboutText = TextWithEntities { TextUtilities::Clean(getAboutText()) };
|
||||||
|
auto displayAsBio = false;
|
||||||
|
if (auto user = peer()->asUser()) {
|
||||||
|
if (!user->botInfo) {
|
||||||
|
displayAsBio = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (displayAsBio) {
|
||||||
|
aboutText.text = TextUtilities::SingleLine(aboutText.text);
|
||||||
|
}
|
||||||
if (!aboutText.text.isEmpty()) {
|
if (!aboutText.text.isEmpty()) {
|
||||||
_about.create(this, st::profileBlockTextPart);
|
if (displayAsBio) {
|
||||||
_about->show();
|
setLabeledText(&_bioLabel, lang(lng_profile_bio), &_bio, aboutText, st::profileBioLabel, QString());
|
||||||
|
} else {
|
||||||
|
_about.create(this, st::profileBlockTextPart);
|
||||||
|
_about->show();
|
||||||
|
|
||||||
TextUtilities::ParseEntities(aboutText, TextParseLinks | TextParseMentions | TextParseHashtags | TextParseBotCommands);
|
TextUtilities::ParseEntities(aboutText, TextParseLinks | TextParseMentions | TextParseHashtags | TextParseBotCommands);
|
||||||
_about->setMarkedText(aboutText);
|
_about->setMarkedText(aboutText);
|
||||||
_about->setSelectable(true);
|
_about->setSelectable(true);
|
||||||
_about->setClickHandlerHook([this](const ClickHandlerPtr &handler, Qt::MouseButton button) {
|
_about->setClickHandlerHook([this](const ClickHandlerPtr &handler, Qt::MouseButton button) {
|
||||||
BotCommandClickHandler::setPeerForCommand(peer());
|
BotCommandClickHandler::setPeerForCommand(peer());
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +189,7 @@ void InfoWidget::refreshMobileNumber() {
|
||||||
phoneText.text = App::phoneFromSharedContact(peerToUser(user->id));
|
phoneText.text = App::phoneFromSharedContact(peerToUser(user->id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setLabeledText(&_mobileNumberLabel, lang(lng_profile_mobile_number), &_mobileNumber, phoneText, lang(lng_profile_copy_phone));
|
setSingleLineLabeledText(&_mobileNumberLabel, lang(lng_profile_mobile_number), &_mobileNumber, phoneText, lang(lng_profile_copy_phone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void InfoWidget::refreshUsername() {
|
void InfoWidget::refreshUsername() {
|
||||||
|
@ -183,7 +199,7 @@ void InfoWidget::refreshUsername() {
|
||||||
usernameText.text = '@' + user->username;
|
usernameText.text = '@' + user->username;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setLabeledText(&_usernameLabel, lang(lng_profile_username), &_username, usernameText, lang(lng_context_copy_mention));
|
setSingleLineLabeledText(&_usernameLabel, lang(lng_profile_username), &_username, usernameText, lang(lng_context_copy_mention));
|
||||||
}
|
}
|
||||||
|
|
||||||
void InfoWidget::refreshChannelLink() {
|
void InfoWidget::refreshChannelLink() {
|
||||||
|
@ -197,29 +213,39 @@ void InfoWidget::refreshChannelLink() {
|
||||||
channelLinkTextShort.entities.push_back(EntityInText(EntityInTextCustomUrl, 0, channelLinkTextShort.text.size(), Messenger::Instance().createInternalLinkFull(channel->username)));
|
channelLinkTextShort.entities.push_back(EntityInText(EntityInTextCustomUrl, 0, channelLinkTextShort.text.size(), Messenger::Instance().createInternalLinkFull(channel->username)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setLabeledText(nullptr, lang(lng_profile_link), &_channelLink, channelLinkText, QString());
|
setSingleLineLabeledText(nullptr, lang(lng_profile_link), &_channelLink, channelLinkText, QString());
|
||||||
setLabeledText(&_channelLinkLabel, lang(lng_profile_link), &_channelLinkShort, channelLinkTextShort, QString());
|
setSingleLineLabeledText(&_channelLinkLabel, lang(lng_profile_link), &_channelLinkShort, channelLinkTextShort, QString());
|
||||||
if (_channelLinkShort) {
|
if (_channelLinkShort) {
|
||||||
_channelLinkShort->setExpandLinksMode(ExpandLinksUrlOnly);
|
_channelLinkShort->setExpandLinksMode(ExpandLinksUrlOnly);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void InfoWidget::setLabeledText(object_ptr<Ui::FlatLabel> *labelWidget, const QString &label,
|
void InfoWidget::setLabeledText(object_ptr<Ui::FlatLabel> *labelWidget, const QString &label,
|
||||||
object_ptr<Ui::FlatLabel> *textWidget, const TextWithEntities &textWithEntities, const QString ©Text) {
|
object_ptr<Ui::FlatLabel> *textWidget, const TextWithEntities &textWithEntities,
|
||||||
|
const style::FlatLabel &st, const QString ©Text) {
|
||||||
if (labelWidget) labelWidget->destroy();
|
if (labelWidget) labelWidget->destroy();
|
||||||
textWidget->destroy();
|
textWidget->destroy();
|
||||||
if (textWithEntities.text.isEmpty()) return;
|
if (textWithEntities.text.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (labelWidget) {
|
if (labelWidget) {
|
||||||
labelWidget->create(this, label, Ui::FlatLabel::InitType::Simple, st::profileBlockLabel);
|
labelWidget->create(this, label, Ui::FlatLabel::InitType::Simple, st::profileBlockLabel);
|
||||||
(*labelWidget)->show();
|
(*labelWidget)->show();
|
||||||
}
|
}
|
||||||
textWidget->create(this, QString(), Ui::FlatLabel::InitType::Simple, st::profileBlockOneLineTextPart);
|
textWidget->create(this, QString(), Ui::FlatLabel::InitType::Simple, st);
|
||||||
(*textWidget)->show();
|
(*textWidget)->show();
|
||||||
(*textWidget)->setMarkedText(textWithEntities);
|
(*textWidget)->setMarkedText(textWithEntities);
|
||||||
(*textWidget)->setContextCopyText(copyText);
|
(*textWidget)->setContextCopyText(copyText);
|
||||||
(*textWidget)->setSelectable(true);
|
(*textWidget)->setSelectable(true);
|
||||||
(*textWidget)->setDoubleClickSelectsParagraph(true);
|
}
|
||||||
|
|
||||||
|
void InfoWidget::setSingleLineLabeledText(object_ptr<Ui::FlatLabel> *labelWidget, const QString &label,
|
||||||
|
object_ptr<Ui::FlatLabel> *textWidget, const TextWithEntities &textWithEntities, const QString ©Text) {
|
||||||
|
setLabeledText(labelWidget, label, textWidget, textWithEntities, st::profileBlockOneLineTextPart, copyText);
|
||||||
|
if (*textWidget) {
|
||||||
|
(*textWidget)->setDoubleClickSelectsParagraph(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Profile
|
} // namespace Profile
|
||||||
|
|
|
@ -22,6 +22,10 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
|
||||||
|
|
||||||
#include "profile/profile_block_widget.h"
|
#include "profile/profile_block_widget.h"
|
||||||
|
|
||||||
|
namespace style {
|
||||||
|
struct FlatLabel;
|
||||||
|
} // namespace style
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class FlatLabel;
|
class FlatLabel;
|
||||||
} // namespace Ui
|
} // namespace Ui
|
||||||
|
@ -55,6 +59,9 @@ private:
|
||||||
|
|
||||||
// labelWidget may be nullptr.
|
// labelWidget may be nullptr.
|
||||||
void setLabeledText(object_ptr<Ui::FlatLabel> *labelWidget, const QString &label,
|
void setLabeledText(object_ptr<Ui::FlatLabel> *labelWidget, const QString &label,
|
||||||
|
object_ptr<Ui::FlatLabel> *textWidget, const TextWithEntities &textWithEntities,
|
||||||
|
const style::FlatLabel &st, const QString ©Text);
|
||||||
|
void setSingleLineLabeledText(object_ptr<Ui::FlatLabel> *labelWidget, const QString &label,
|
||||||
object_ptr<Ui::FlatLabel> *textWidget, const TextWithEntities &textWithEntities, const QString ©Text);
|
object_ptr<Ui::FlatLabel> *textWidget, const TextWithEntities &textWithEntities, const QString ©Text);
|
||||||
|
|
||||||
object_ptr<Ui::FlatLabel> _about = { nullptr };
|
object_ptr<Ui::FlatLabel> _about = { nullptr };
|
||||||
|
@ -63,6 +70,8 @@ private:
|
||||||
object_ptr<Ui::FlatLabel> _channelLinkShort = { nullptr };
|
object_ptr<Ui::FlatLabel> _channelLinkShort = { nullptr };
|
||||||
object_ptr<Ui::FlatLabel> _mobileNumberLabel = { nullptr };
|
object_ptr<Ui::FlatLabel> _mobileNumberLabel = { nullptr };
|
||||||
object_ptr<Ui::FlatLabel> _mobileNumber = { nullptr };
|
object_ptr<Ui::FlatLabel> _mobileNumber = { nullptr };
|
||||||
|
object_ptr<Ui::FlatLabel> _bioLabel = { nullptr };
|
||||||
|
object_ptr<Ui::FlatLabel> _bio = { nullptr };
|
||||||
object_ptr<Ui::FlatLabel> _usernameLabel = { nullptr };
|
object_ptr<Ui::FlatLabel> _usernameLabel = { nullptr };
|
||||||
object_ptr<Ui::FlatLabel> _username = { nullptr };
|
object_ptr<Ui::FlatLabel> _username = { nullptr };
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue