diff --git a/Telegram/Resources/icons/info/edit/links_copy.png b/Telegram/Resources/icons/info/edit/links_copy.png new file mode 100644 index 000000000..15e6cde28 Binary files /dev/null and b/Telegram/Resources/icons/info/edit/links_copy.png differ diff --git a/Telegram/Resources/icons/info/edit/links_copy@2x.png b/Telegram/Resources/icons/info/edit/links_copy@2x.png new file mode 100644 index 000000000..9b5433497 Binary files /dev/null and b/Telegram/Resources/icons/info/edit/links_copy@2x.png differ diff --git a/Telegram/Resources/icons/info/edit/links_copy@3x.png b/Telegram/Resources/icons/info/edit/links_copy@3x.png new file mode 100644 index 000000000..5c702a8e3 Binary files /dev/null and b/Telegram/Resources/icons/info/edit/links_copy@3x.png differ diff --git a/Telegram/Resources/icons/info/edit/links_share.png b/Telegram/Resources/icons/info/edit/links_share.png new file mode 100644 index 000000000..78ca22f8d Binary files /dev/null and b/Telegram/Resources/icons/info/edit/links_share.png differ diff --git a/Telegram/Resources/icons/info/edit/links_share@2x.png b/Telegram/Resources/icons/info/edit/links_share@2x.png new file mode 100644 index 000000000..451f63322 Binary files /dev/null and b/Telegram/Resources/icons/info/edit/links_share@2x.png differ diff --git a/Telegram/Resources/icons/info/edit/links_share@3x.png b/Telegram/Resources/icons/info/edit/links_share@3x.png new file mode 100644 index 000000000..af03170f6 Binary files /dev/null and b/Telegram/Resources/icons/info/edit/links_share@3x.png differ diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp index 03b58acdc..a7e2fad86 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp @@ -12,8 +12,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_session.h" #include "api/api_invite_links.h" #include "ui/wrap/vertical_layout.h" +#include "ui/wrap/padding_wrap.h" #include "ui/widgets/popup_menu.h" #include "ui/controls/invite_link_label.h" +#include "ui/controls/invite_link_buttons.h" #include "ui/toast/toast.h" #include "lang/lang_keys.h" #include "apiwrap.h" @@ -88,4 +90,9 @@ void AddPermanentLinkBlock( label->clicks( ) | rpl::start_with_next(copyLink, label->lifetime()); + + AddCopyShareLinkButtons( + container, + copyLink, + shareLink); } diff --git a/Telegram/SourceFiles/info/info.style b/Telegram/SourceFiles/info/info.style index 5dce0cf3e..534caccde 100644 --- a/Telegram/SourceFiles/info/info.style +++ b/Telegram/SourceFiles/info/info.style @@ -848,4 +848,20 @@ inviteLinkThreeDots: IconButton(defaultIconButton) { rippleAreaSize: 0px; } -inviteLinkFieldPadding: margins(22px, 7px, 22px, 9px); +inviteLinkFieldPadding: margins(22px, 7px, 22px, 14px); + +inviteLinkButton: RoundButton(defaultActiveButton) { + height: 36px; + textTop: 9px; +} +inviteLinkButtonsPadding: margins(22px, 0px, 22px, 0px); +inviteLinkButtonsSkip: 10px; +inviteLinkCopy: RoundButton(inviteLinkButton) { + icon: icon {{ "info/edit/links_copy", activeButtonFg }}; + iconOver: icon {{ "info/edit/links_copy", activeButtonFgOver }}; + iconPosition: point(-1px, 2px); +} +inviteLinkShare: RoundButton(inviteLinkCopy) { + icon: icon {{ "info/edit/links_share", activeButtonFg }}; + iconOver: icon {{ "info/edit/links_share", activeButtonFgOver }}; +} diff --git a/Telegram/SourceFiles/ui/controls/invite_link_buttons.cpp b/Telegram/SourceFiles/ui/controls/invite_link_buttons.cpp new file mode 100644 index 000000000..233ee0f51 --- /dev/null +++ b/Telegram/SourceFiles/ui/controls/invite_link_buttons.cpp @@ -0,0 +1,50 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#include "ui/controls/invite_link_buttons.h" + +#include "ui/widgets/buttons.h" +#include "ui/wrap/vertical_layout.h" +#include "ui/wrap/padding_wrap.h" +#include "lang/lang_keys.h" +#include "styles/style_info.h" + +namespace Ui { + +void AddCopyShareLinkButtons( + not_null container, + Fn copyLink, + Fn shareLink) { + const auto wrap = container->add( + object_ptr( + container, + st::inviteLinkButton.height), + st::inviteLinkButtonsPadding); + const auto copy = CreateChild( + wrap, + tr::lng_group_invite_copy(), + st::inviteLinkCopy); + copy->setTextTransform(RoundButton::TextTransform::NoTransform); + copy->setClickedCallback(copyLink); + const auto share = CreateChild( + wrap, + tr::lng_group_invite_share(), + st::inviteLinkShare); + share->setTextTransform(RoundButton::TextTransform::NoTransform); + share->setClickedCallback(shareLink); + + wrap->widthValue( + ) | rpl::start_with_next([=](int width) { + const auto buttonWidth = (width - st::inviteLinkButtonsSkip) / 2; + copy->setFullWidth(buttonWidth); + share->setFullWidth(buttonWidth); + copy->moveToLeft(0, 0, width); + share->moveToRight(0, 0, width); + }, wrap->lifetime()); +} + +} // namespace Ui diff --git a/Telegram/SourceFiles/ui/controls/invite_link_buttons.h b/Telegram/SourceFiles/ui/controls/invite_link_buttons.h new file mode 100644 index 000000000..aa637dbb9 --- /dev/null +++ b/Telegram/SourceFiles/ui/controls/invite_link_buttons.h @@ -0,0 +1,19 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#pragma once + +namespace Ui { + +class VerticalLayout; + +void AddCopyShareLinkButtons( + not_null container, + Fn copyLink, + Fn shareLink); + +} // namespace Ui diff --git a/Telegram/cmake/td_ui.cmake b/Telegram/cmake/td_ui.cmake index af6fce641..fd12d7f3a 100644 --- a/Telegram/cmake/td_ui.cmake +++ b/Telegram/cmake/td_ui.cmake @@ -88,6 +88,8 @@ PRIVATE ui/chat/pinned_bar.h ui/controls/emoji_button.cpp ui/controls/emoji_button.h + ui/controls/invite_link_buttons.cpp + ui/controls/invite_link_buttons.h ui/controls/invite_link_label.cpp ui/controls/invite_link_label.h ui/controls/send_button.cpp