diff --git a/Telegram/SourceFiles/boxes/gift_premium_box.cpp b/Telegram/SourceFiles/boxes/gift_premium_box.cpp index 0f8aa249c7..dbad50cac5 100644 --- a/Telegram/SourceFiles/boxes/gift_premium_box.cpp +++ b/Telegram/SourceFiles/boxes/gift_premium_box.cpp @@ -41,8 +41,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "window/window_session_controller.h" #include "styles/style_boxes.h" #include "styles/style_giveaway.h" -#include "styles/style_layers.h" #include "styles/style_info.h" +#include "styles/style_layers.h" #include "styles/style_premium.h" #include diff --git a/Telegram/SourceFiles/info/boosts/create_giveaway_box.cpp b/Telegram/SourceFiles/info/boosts/create_giveaway_box.cpp index 0d0ebc1de2..27b9a49f7f 100644 --- a/Telegram/SourceFiles/info/boosts/create_giveaway_box.cpp +++ b/Telegram/SourceFiles/info/boosts/create_giveaway_box.cpp @@ -73,19 +73,20 @@ void CreateGiveawayBox( bar->setMinimumHeight(st::infoLayerTopBarHeight); bar->resize(bar->width(), bar->maximumHeight()); - Settings::AddSkip(box->verticalLayout()); - Settings::AddDivider(box->verticalLayout()); - Settings::AddSkip(box->verticalLayout()); + const auto container = box->verticalLayout(); + const auto &padding = st::giveawayGiftCodeCoverDividerPadding; + Settings::AddSkip(container, padding.top()); + Settings::AddDivider(container); + Settings::AddSkip(container, padding.bottom()); const auto close = Ui::CreateChild( - box->verticalLayout().get(), + container.get(), st::boxTitleClose); - close->setClickedCallback([=] { - box->closeBox(); - }); + close->setClickedCallback([=] { box->closeBox(); }); box->widthValue( ) | rpl::start_with_next([=](int) { - close->moveToRight(0, 0); + const auto &pos = st::giveawayGiftCodeCoverClosePosition; + close->moveToRight(pos.x(), pos.y()); }, box->lifetime()); } @@ -197,9 +198,12 @@ void CreateGiveawayBox( }); } - Settings::AddSkip(contentWrap->entity()); - Settings::AddDivider(contentWrap->entity()); - Settings::AddSkip(contentWrap->entity()); + { + const auto &padding = st::giveawayGiftCodeTypeDividerPadding; + Settings::AddSkip(contentWrap->entity(), padding.top()); + Settings::AddDivider(contentWrap->entity()); + Settings::AddSkip(contentWrap->entity(), padding.bottom()); + } const auto randomWrap = contentWrap->entity()->add( object_ptr>( @@ -245,12 +249,12 @@ void CreateGiveawayBox( rightLabel->moveToRight(st::boxRowPadding.right(), p.y()); }, rightLabel->lifetime()); - Settings::AddSkip(sliderContainer); - Settings::AddSkip(sliderContainer); + const auto &padding = st::giveawayGiftCodeSliderPadding; + Settings::AddSkip(sliderContainer, padding.top()); const auto slider = sliderContainer->add( object_ptr(sliderContainer, st::settingsScale), st::boxRowPadding); - Settings::AddSkip(sliderContainer); + Settings::AddSkip(sliderContainer, padding.bottom()); slider->resize(slider->width(), st::settingsScale.seekSize.height()); slider->setPseudoDiscrete( availablePresets.size(), @@ -275,7 +279,9 @@ void CreateGiveawayBox( + x + st::settingsScale.seekSize.width() / 2 - floatLabel->width() / 2, - slider->y() - floatLabel->height()); + slider->y() + - floatLabel->height() + - st::giveawayGiftCodeSliderFloatSkip); break; } } @@ -295,7 +301,8 @@ void CreateGiveawayBox( object_ptr(randomWrap)); Settings::AddSubsectionTitle( channelsContainer, - tr::lng_giveaway_channels_title()); + tr::lng_giveaway_channels_title(), + st::giveawayGiftCodeChannelsSubsectionPadding); struct ListState final { ListState(not_null p) : controller(p) { @@ -326,7 +333,7 @@ void CreateGiveawayBox( Settings::AddButton( channelsContainer, tr::lng_giveaway_channels_add(), - st::settingsButtonActive, + st::giveawayGiftCodeChannelsAddButton, { &st::settingsIconAdd, IconType::Round, &st::windowBgActive } )->setClickedCallback([=] { auto initBox = [=](not_null peersBox) { @@ -352,56 +359,12 @@ void CreateGiveawayBox( Ui::LayerOption::KeepOther); }); - Settings::AddSkip(channelsContainer); + const auto &padding = st::giveawayGiftCodeChannelsDividerPadding; + Settings::AddSkip(channelsContainer, padding.top()); Settings::AddDividerText( channelsContainer, tr::lng_giveaway_channels_about()); - Settings::AddSkip(channelsContainer); - } - - { - const auto dateContainer = randomWrap->entity()->add( - object_ptr(randomWrap)); - Settings::AddSubsectionTitle( - dateContainer, - tr::lng_giveaway_date_title()); - - state->dateValue = ThreeDaysAfterToday().toSecsSinceEpoch(); - const auto button = Settings::AddButtonWithLabel( - dateContainer, - tr::lng_giveaway_date(), - state->dateValue.value() | rpl::map( - base::unixtime::parse - ) | rpl::map(Ui::FormatDateTime), - st::defaultSettingsButton); - - button->setClickedCallback([=] { - constexpr auto kSevenDays = 3600 * 24 * 7; - box->uiShow()->showBox(Box([=](not_null b) { - Ui::ChooseDateTimeBox(b, { - .title = tr::lng_giveaway_date_select(), - .submit = tr::lng_settings_save(), - .done = [=](TimeId time) { - state->dateValue = time; - b->closeBox(); - }, - .min = QDateTime::currentSecsSinceEpoch, - .time = state->dateValue.current(), - .max = [=] { - return QDateTime::currentSecsSinceEpoch() - + kSevenDays; - }, - }); - })); - }); - - Settings::AddSkip(dateContainer); - Settings::AddDividerText( - dateContainer, - tr::lng_giveaway_date_about( - lt_count, - state->sliderValue.value() | tr::to_count())); - Settings::AddSkip(dateContainer); + Settings::AddSkip(channelsContainer, padding.bottom()); } const auto membersGroup = std::make_shared(); @@ -488,6 +451,52 @@ void CreateGiveawayBox( Settings::AddSkip(countriesContainer); } + { + const auto dateContainer = randomWrap->entity()->add( + object_ptr(randomWrap)); + Settings::AddSubsectionTitle( + dateContainer, + tr::lng_giveaway_date_title(), + st::giveawayGiftCodeChannelsSubsectionPadding); + + state->dateValue = ThreeDaysAfterToday().toSecsSinceEpoch(); + const auto button = Settings::AddButtonWithLabel( + dateContainer, + tr::lng_giveaway_date(), + state->dateValue.value() | rpl::map( + base::unixtime::parse + ) | rpl::map(Ui::FormatDateTime), + st::defaultSettingsButton); + + button->setClickedCallback([=] { + constexpr auto kSevenDays = 3600 * 24 * 7; + box->uiShow()->showBox(Box([=](not_null b) { + Ui::ChooseDateTimeBox(b, { + .title = tr::lng_giveaway_date_select(), + .submit = tr::lng_settings_save(), + .done = [=](TimeId time) { + state->dateValue = time; + b->closeBox(); + }, + .min = QDateTime::currentSecsSinceEpoch, + .time = state->dateValue.current(), + .max = [=] { + return QDateTime::currentSecsSinceEpoch() + + kSevenDays; + }, + }); + })); + }); + + Settings::AddSkip(dateContainer); + Settings::AddDividerText( + dateContainer, + tr::lng_giveaway_date_about( + lt_count, + state->sliderValue.value() | tr::to_count())); + Settings::AddSkip(dateContainer); + } + const auto durationGroup = std::make_shared(0); const auto listOptions = contentWrap->entity()->add( object_ptr(box)); @@ -499,7 +508,8 @@ void CreateGiveawayBox( listOptions, tr::lng_giveaway_duration_title( lt_count, - rpl::single(amountUsers) | tr::to_count())); + rpl::single(amountUsers) | tr::to_count()), + st::giveawayGiftCodeChannelsSubsectionPadding); Ui::Premium::AddGiftOptions( listOptions, durationGroup, @@ -507,6 +517,8 @@ void CreateGiveawayBox( st::giveawayGiftCodeGiftOption, true); + Settings::AddSkip(listOptions); + auto terms = object_ptr( listOptions, tr::lng_premium_gift_terms( diff --git a/Telegram/SourceFiles/info/boosts/giveaway/giveaway.style b/Telegram/SourceFiles/info/boosts/giveaway/giveaway.style index d04b3bf6c5..db9ad6f042 100644 --- a/Telegram/SourceFiles/info/boosts/giveaway/giveaway.style +++ b/Telegram/SourceFiles/info/boosts/giveaway/giveaway.style @@ -8,6 +8,27 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL using "ui/basic.style"; using "boxes/boxes.style"; using "ui/effects/premium.style"; +using "statistics/statistics.style"; + +giveawayTypeListItem: PeerListItem(defaultPeerListItem) { + height: 52px; + photoPosition: point(58px, 6px); + namePosition: point(110px, 8px); + statusPosition: point(110px, 28px); + photoSize: 42px; +} +giveawayUserpic: icon {{ "boosts/filled_gift", windowFgActive }}; +giveawayUserpicSkip: 1px; +giveawayUserpicGroup: icon {{ "limits/groups", windowFgActive }}; +giveawayRadioPosition: point(21px, 16px); + +giveawayGiftCodeCountryButton: SettingsButton(reportReasonButton) { +} +giveawayGiftCodeCountrySelect: MultiSelect(defaultMultiSelect) { +} + +giveawayGiftCodeChannelDeleteIcon: icon {{ "dialogs/dialogs_cancel_search", dialogsMenuIconFg }}; +giveawayGiftCodeChannelDeleteIconOver: icon {{ "dialogs/dialogs_cancel_search", dialogsMenuIconFgOver }}; giveawayLoadingLabel: FlatLabel(membersAbout) { } @@ -94,6 +115,33 @@ giveawayGiftCodeCover: PremiumCover(userPremiumCover) { } } } +giveawayGiftCodeCoverClosePosition: point(5px, 0px); +giveawayGiftCodeCoverDividerPadding: margins(0px, 11px, 0px, 5px); +giveawayGiftCodeTypeDividerPadding: margins(0px, 7px, 0px, 5px); +giveawayGiftCodeSliderPadding: margins(0px, 24px, 0px, 10px); +giveawayGiftCodeSliderFloatSkip: 6px; +giveawayGiftCodeChannelsSubsectionPadding: margins(0px, -1px, 0px, -4px); + +giveawayGiftCodeChannelsPeerList: PeerList(boostsListBox) { + padding: margins(0px, 7px, 0px, 0px); +} +giveawayGiftCodeMembersPeerList: PeerList(defaultPeerList) { + item: PeerListItem(defaultPeerListItem) { + height: 50px; + namePosition: point(62px, 7px); + statusPosition: point(62px, 27px); + } +} +giveawayRadioMembersPosition: point(21px, 14px); + +giveawayGiftCodeChannelsAddButton: SettingsButton(defaultSettingsButton) { + textFg: lightButtonFg; + textFgOver: lightButtonFgOver; + padding: margins(70px, 10px, 22px, 8px); + iconLeft: 28px; +} +giveawayGiftCodeChannelsDividerPadding: margins(0px, 5px, 0px, 5px); + giveawayGiftCodeFooter: FlatLabel(defaultFlatLabel) { align: align(top); textFg: windowBoldFg; diff --git a/Telegram/SourceFiles/info/boosts/giveaway/giveaway_list_controllers.cpp b/Telegram/SourceFiles/info/boosts/giveaway/giveaway_list_controllers.cpp index 57cfe1b33d..b6307e32a8 100644 --- a/Telegram/SourceFiles/info/boosts/giveaway/giveaway_list_controllers.cpp +++ b/Telegram/SourceFiles/info/boosts/giveaway/giveaway_list_controllers.cpp @@ -17,7 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/boxes/confirm_box.h" #include "ui/effects/ripple_animation.h" #include "ui/painter.h" -#include "styles/style_statistics.h" +#include "styles/style_giveaway.h" namespace Giveaway { namespace { @@ -53,9 +53,10 @@ QSize ChannelRow::rightActionSize() const { } QMargins ChannelRow::rightActionMargins() const { + const auto itemHeight = st::giveawayGiftCodeChannelsPeerList.item.height; return QMargins( 0, - (st::defaultPeerListItem.height - rightActionSize().height()) / 2, + (itemHeight - rightActionSize().height()) / 2, st::giveawayRadioPosition.x() / 2, 0); } @@ -239,6 +240,8 @@ std::unique_ptr MyChannelsListController::createRow( SelectedChannelsListController::SelectedChannelsListController( not_null peer) : _peer(peer) { + PeerListController::setStyleOverrides( + &st::giveawayGiftCodeChannelsPeerList); } void SelectedChannelsListController::setTopStatus(rpl::producer s) { diff --git a/Telegram/SourceFiles/info/boosts/giveaway/giveaway_type_row.cpp b/Telegram/SourceFiles/info/boosts/giveaway/giveaway_type_row.cpp index 25a71a00a7..db1fedb087 100644 --- a/Telegram/SourceFiles/info/boosts/giveaway/giveaway_type_row.cpp +++ b/Telegram/SourceFiles/info/boosts/giveaway/giveaway_type_row.cpp @@ -13,7 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_options.h" #include "ui/widgets/checkbox.h" #include "styles/style_boxes.h" -#include "styles/style_statistics.h" +#include "styles/style_giveaway.h" namespace Giveaway { @@ -28,7 +28,7 @@ GiveawayTypeRow::GiveawayTypeRow( , _type(type) , _st((_type == Type::SpecificUsers || _type == Type::Random) ? st::giveawayTypeListItem - : st::defaultPeerListItem) + : st::giveawayGiftCodeMembersPeerList.item) , _userpic( Ui::EmptyUserpic::UserpicColor((_type == Type::SpecificUsers) ? kColorIndexSpecific @@ -112,9 +112,10 @@ void GiveawayTypeRow::addRadio( _type, QString(), st); - radio->moveToLeft( - st::giveawayRadioPosition.x(), - st::giveawayRadioPosition.y()); + const auto pos = (_type == Type::SpecificUsers || _type == Type::Random) + ? st::giveawayRadioPosition + : st::giveawayRadioMembersPosition; + radio->moveToLeft(pos.x(), pos.y()); radio->setAttribute(Qt::WA_TransparentForMouseEvents); radio->show(); } diff --git a/Telegram/SourceFiles/statistics/statistics.style b/Telegram/SourceFiles/statistics/statistics.style index ba72e5973f..c631a4f304 100644 --- a/Telegram/SourceFiles/statistics/statistics.style +++ b/Telegram/SourceFiles/statistics/statistics.style @@ -148,23 +148,3 @@ getBoostsButton: SettingsButton(reportReasonButton) { textFgOver: lightButtonFg; } getBoostsButtonIcon: icon {{ "menu/gift_premium", lightButtonFg }}; - -giveawayTypeListItem: PeerListItem(defaultPeerListItem) { - height: 52px; - photoPosition: point(58px, 6px); - namePosition: point(110px, 8px); - statusPosition: point(110px, 28px); - photoSize: 42px; -} -giveawayUserpic: icon {{ "boosts/filled_gift", windowFgActive }}; -giveawayUserpicSkip: 1px; -giveawayUserpicGroup: icon {{ "limits/groups", windowFgActive }}; -giveawayRadioPosition: point(21px, 16px); - -giveawayGiftCodeCountryButton: SettingsButton(reportReasonButton) { -} -giveawayGiftCodeCountrySelect: MultiSelect(defaultMultiSelect) { -} - -giveawayGiftCodeChannelDeleteIcon: icon {{ "dialogs/dialogs_cancel_search", dialogsMenuIconFg }}; -giveawayGiftCodeChannelDeleteIconOver: icon {{ "dialogs/dialogs_cancel_search", dialogsMenuIconFgOver }};