int SharedMediaWidget::resizeGetHeight(int newWidth) { int newHeight = contentTop(); resizeButtons(newWidth, &newHeight); return newHeight; }
void PhoneWidget::resizeEvent(QResizeEvent *e) { Step::resizeEvent(e); _country->moveToLeft(contentLeft(), contentTop() + st::introStepFieldTop); auto phoneTop = _country->y() + _country->height() + st::introPhoneTop; _code->moveToLeft(contentLeft(), phoneTop); _phone->moveToLeft(contentLeft() + _country->width() - st::introPhone.width, phoneTop); updateSignupGeometry(); }
QMargins BlockWidget::getMargins() const { auto result = _content->getMargins(); return QMargins( result.left(), qMax(result.top() - contentTop(), 0), result.right(), qMax(result.bottom() - st::settingsBlockMarginBottom, 0)); }
void AbstractBox::resizeEvent(QResizeEvent *e) { updateButtonsPositions(); updateTitlePosition(); auto top = contentTop(); _content->resize(width(), height() - top - buttonsHeight()); _content->moveToLeft(0, top); LayerWidget::resizeEvent(e); }
int BlockWidget::resizeGetHeight(int newWidth) { int x = contentLeft(), result = contentTop(); int availw = newWidth - x; auto margins = getMargins(); _content->resizeToWidth(availw); _content->moveToLeft(margins.left() + x, margins.top() + result, newWidth); result += _content->heightNoMargins() + st::settingsBlockMarginBottom; return result; }
BlockWidget::BlockWidget(QWidget *parent, UserData *self, const QString &title) : RpWidget(parent) , _content(this) , _self(self) , _title(title) { _content->heightValue( ) | rpl::start_with_next([this](int contentHeight) { resize( width(), contentTop() + contentHeight + st::settingsBlockMarginBottom); }, lifetime()); }
int InfoWidget::resizeGetHeight(int newWidth) { int initialHeight = contentTop(); int newHeight = initialHeight; int marginLeft = st::profileBlockTextPart.margin.left(); int marginRight = st::profileBlockTextPart.margin.right(); int left = st::profileBlockTitlePosition.x(); if (_about) { int textWidth = _about->naturalWidth(); int availableWidth = newWidth - left - st::profileBlockMarginRight; int maxWidth = st::msgMaxWidth; accumulate_min(textWidth, availableWidth); accumulate_min(textWidth, st::msgMaxWidth); _about->resizeToWidth(textWidth + marginLeft + marginRight); _about->moveToLeft(left - marginLeft, newHeight - st::profileBlockTextPart.margin.top()); newHeight += _about->height(); } auto moveLabeledText = [&newHeight, left, newWidth, marginLeft, marginRight](Ui::FlatLabel *label, Ui::FlatLabel *text, Ui::FlatLabel *shortText) { if (!label) return; label->moveToLeft(left, newHeight); int textLeft = left + label->width() + st::normalFont->spacew; int textWidth = text->naturalWidth(); int availableWidth = newWidth - textLeft - st::profileBlockMarginRight; bool doesNotFit = (textWidth > availableWidth); accumulate_min(textWidth, availableWidth); accumulate_min(textWidth, st::msgMaxWidth); text->resizeToWidth(textWidth + marginLeft + marginRight); text->moveToLeft(textLeft - marginLeft, newHeight - st::profileBlockOneLineTextPart.margin.top()); if (shortText) { shortText->resizeToWidth(textWidth + marginLeft + marginRight); shortText->moveToLeft(textLeft - marginLeft, newHeight - st::profileBlockOneLineTextPart.margin.top()); if (doesNotFit) { shortText->show(); text->hide(); } else { shortText->hide(); text->show(); } } newHeight += label->height() + st::profileBlockOneLineSkip; }; moveLabeledText(_channelLinkLabel, _channelLink, _channelLinkShort); moveLabeledText(_mobileNumberLabel, _mobileNumber, nullptr); moveLabeledText(_usernameLabel, _username, nullptr); newHeight += st::profileBlockMarginBottom; return newHeight; }
int InviteLinkWidget::resizeGetHeight(int newWidth) { int newHeight = contentTop(); int marginLeft = st::profileBlockTextPart.margin.left(); int marginRight = st::profileBlockTextPart.margin.right(); int left = st::profileBlockTitlePosition.x(); if (_link) { int textWidth = _link->naturalWidth(); int availableWidth = newWidth - left - st::profileBlockMarginRight; int maxWidth = st::msgMaxWidth; accumulate_min(textWidth, availableWidth); accumulate_min(textWidth, st::msgMaxWidth); _link->resizeToWidth(textWidth + marginLeft + marginRight); _link->moveToLeft(left - marginLeft, newHeight - st::profileBlockTextPart.margin.top()); newHeight += _link->height(); } newHeight += st::profileBlockMarginBottom; return newHeight; }
int ChannelMembersWidget::resizeGetHeight(int newWidth) { int newHeight = contentTop(); auto resizeButton = [this, &newHeight, newWidth](object_ptr<Ui::LeftOutlineButton> &button) { if (!button) { return; } int left = defaultOutlineButtonLeft(); int availableWidth = newWidth - left - st::profileBlockMarginRight; accumulate_min(availableWidth, st::profileBlockOneLineWidthMax); button->resizeToWidth(availableWidth); button->moveToLeft(left, newHeight); newHeight += button->height(); }; resizeButton(_admins); resizeButton(_members); return newHeight; }
int SettingsWidget::resizeGetHeight(int newWidth) { int newHeight = contentTop() + st::profileEnableNotificationsTop; _enableNotifications->moveToLeft(st::profileBlockTitlePosition.x(), newHeight); newHeight += _enableNotifications->height() + st::profileSettingsBlockSkip; auto moveLink = [&newHeight, newWidth](Ui::LeftOutlineButton *button) { if (!button) return; int left = defaultOutlineButtonLeft(); int availableWidth = newWidth - left - st::profileBlockMarginRight; accumulate_min(availableWidth, st::profileBlockOneLineWidthMax); button->resizeToWidth(availableWidth); button->moveToLeft(left, newHeight); newHeight += button->height(); }; moveLink(_manageAdmins); moveLink(_inviteLink); newHeight += st::profileBlockMarginBottom; return newHeight; }
int AbstractBox::countFullHeight() const { return contentTop() + _maxContentHeight + buttonsHeight(); }
void PhoneWidget::updateSignupGeometry() { if (_signup) { _signup->moveToLeft(contentLeft() + st::buttonRadius, contentTop() + st::introDescriptionTop); } }
void CodeWidget::updateControlsGeometry() { _code->moveToLeft(contentLeft(), contentTop() + st::introStepFieldTop); auto linkTop = _code->y() + _code->height() + st::introLinkTop; _noTelegramCode->moveToLeft(contentLeft() + st::buttonRadius, linkTop); _callLabel->moveToLeft(contentLeft() + st::buttonRadius, linkTop); }