From 7f7d5449439e6ce3d88d99b165227c9203efe92d Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 1 Mar 2024 10:25:37 +0400 Subject: [PATCH] Show nice empty quick reply placeholder. --- Telegram/Resources/icons/chat/large_away.png | Bin 0 -> 1996 bytes .../Resources/icons/chat/large_away@2x.png | Bin 0 -> 4375 bytes .../Resources/icons/chat/large_away@3x.png | Bin 0 -> 5879 bytes .../Resources/icons/chat/large_greeting.png | Bin 0 -> 2042 bytes .../icons/chat/large_greeting@2x.png | Bin 0 -> 4529 bytes .../icons/chat/large_greeting@3x.png | Bin 0 -> 4818 bytes .../Resources/icons/chat/large_quickreply.png | Bin 0 -> 1940 bytes .../icons/chat/large_quickreply@2x.png | Bin 0 -> 4363 bytes .../icons/chat/large_quickreply@3x.png | Bin 0 -> 5764 bytes .../info/settings/info_settings_widget.cpp | 6 +- .../business/settings_quick_replies.cpp | 18 +- .../business/settings_shortcut_messages.cpp | 170 ++++++++++++++---- .../settings/settings_business.cpp | 3 +- .../settings/settings_common_session.h | 11 +- .../settings/settings_notifications_type.cpp | 3 +- .../SourceFiles/settings/settings_premium.cpp | 3 +- Telegram/SourceFiles/ui/chat/chat.style | 7 + 17 files changed, 181 insertions(+), 40 deletions(-) create mode 100644 Telegram/Resources/icons/chat/large_away.png create mode 100644 Telegram/Resources/icons/chat/large_away@2x.png create mode 100644 Telegram/Resources/icons/chat/large_away@3x.png create mode 100644 Telegram/Resources/icons/chat/large_greeting.png create mode 100644 Telegram/Resources/icons/chat/large_greeting@2x.png create mode 100644 Telegram/Resources/icons/chat/large_greeting@3x.png create mode 100644 Telegram/Resources/icons/chat/large_quickreply.png create mode 100644 Telegram/Resources/icons/chat/large_quickreply@2x.png create mode 100644 Telegram/Resources/icons/chat/large_quickreply@3x.png diff --git a/Telegram/Resources/icons/chat/large_away.png b/Telegram/Resources/icons/chat/large_away.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a943e0c0746f4ed2c041fcea764492cc1ab4c0 GIT binary patch literal 1996 zcmV;-2Q&DIP)0TXRa8Ln$njjLiO624V@( zmtY^tU=SFz4^bf@Qbd>^oK#X22tq{?W*<_sl!8W~R*amQ*`KY}ESb8YyPJF75ASPl zwyo{ld*{{n^#|w6**VX7&hMVP-Fwef9snRLLYo+_6Ikdh3S`KlK!)(SPT+S$A`v7d zC4opJ0cDupj@xa*F7<~W!o$C~5!Kpw#pAUI?d61Kn1G%}mpwVbx)v8q> zm&<|ApPd>ag4^we&!0cT$B!SuY&OI5=g;BAix*(ES~;4*Ke^3y*|B2>*45SFhYuf+ zDHKIvYild&^?FQ5NSO1v%&9<~PKPFwiLta$I2;Z10r zuAK$&^yyQSNF?)LpwVdL+EqyU`ub2Nlg(d&mo8o6+EG|677I$H()lOw#EBDJyNQ^d zo}T$7u&}U@YbV4sH8sr-ff9)XT`m{bK4?)^R>oK$Z^j~Bnwy)Uq@*OGwqs*sVcW#V z$1_QXi0SERSg~RS;|CP9?Qh+>HKHTk-QA7Z+1VH$A0M_978c_0@NjgO-Y?v^af7>4 zxVN`AY=T~|7u9MtQQVZ26r7x#jJ~~pNKH+hdw~T71ra4TIXOuy{^Q4wqpa;;7_LHk z9q-<~8*zfCPoE}^Z?RaSsBAWqlasWs4Qc&|NTpI39UTpL==mq^-@gy9U%v*w-w!+< z4^%1@)Ya8NPft%kTZ6#>)z#IcX)!{t*F$}MJ#jx;0*i}_p{1pTc(7k_I2^EH!v^^J z^=sJJw{G2nj*brS`~46b8w&scJRT1aXQxh46eyKS*uQ^2J!zD|W1jNnA$Ovd#Sy@Tz)M{#KBFf3>bYfgw+}wNzc6D_z61Z;Nx`3Es zu^8=kdq7)}NJLAZQmI6**GrUFUS1yYIKVgX-VO?d zBA~vYpn%pmcDo(CUN2FfwQJYX8jHxdLZKi&vNN1Ibt-7gt5>gv?DONt4?J|}5X$9p zOh`z;#Kgp(B_$;VSFT(cG-h#eF>!up&z_C`DXi6MX~}D7Xb4>XF)>(EQxj4DiHQju zA0J1T%Y`nN3n_|1kH>@A+1UYcVdI9nIKO`VI`PVzp|PKBN z{{DXG?Cb=W%LM{~AZT2V#{*ie7BVw4gT~pjXAd|Wj#+g)9uL~u+8`!|`I~xXvzb;u zV(VwloMC*lNjZA-XwY09Jb1uL{Gp*CTHn>Q1ZHPvvyybA)YQ}j{VHi_XkcxO`uciW z0%`AwSglq_PEMxNm5BECcG$gpcR>A?EnA?uxf$$sJNW(npY=YU4-yj-L8Vd=jkA6G zcIfQvq?IEr^XJZ;W9{gNf}$u?DwRRUkB^T>KA#`-Gl4*Wdc8j4aXx+eMECTicM1al zs#K~ds{0$8&BkP6c<gs}ByLQ3U)D)Xx zS>@TYXRO9!{f`YhIyzwE#*Ogq-8;5JvqDi(5$iEoUD7i}B9X9qv(FZTgM)0(H97)k z%E5yNabRG8Yj3kyzkdC~5eNXt=kxL8$&>iy%NMTQAtK_13l|oaz?mYENbvaarQ4$j!}#^z?K{OG^WVLIF#cE(Nhz3__t0D2f87 z(+MLZBQQKX3}&+#1_lP8x3?EO9#7DiWo2bhUS1AaSy>^+Eh;L4*49?W`E#-Y=c?@7 zxf6{>BU&t$pgVUAA7#yt6*yOW+o^U3P?{+hqrIv!p)mE176f5;eRDC8Z7?X e6NW4bWXNA5HM~dmnjmxl0000uH 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 Nx{8i+rJ_aX{{ivne4hXS literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/chat/large_greeting.png b/Telegram/Resources/icons/chat/large_greeting.png new file mode 100644 index 0000000000000000000000000000000000000000..0b1cb033e5bb043da32f96eb79eb9e1a5b72dd9f GIT binary patch literal 2042 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 Kc-cLx!2bbAtG%-T literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/chat/large_greeting@3x.png b/Telegram/Resources/icons/chat/large_greeting@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..cd08060ff30c7af15232081cf4047f41d28b63c4 GIT binary patch literal 4818 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 literal 0 HcmV?d00001 diff --git a/Telegram/SourceFiles/info/settings/info_settings_widget.cpp b/Telegram/SourceFiles/info/settings/info_settings_widget.cpp index 8a53dc553e..5bc315aa11 100644 --- a/Telegram/SourceFiles/info/settings/info_settings_widget.cpp +++ b/Telegram/SourceFiles/info/settings/info_settings_widget.cpp @@ -47,7 +47,11 @@ Widget::Widget( auto inner = _type->create( this, controller->parentController(), - scroll()); + scroll(), + controller->wrapValue( + ) | rpl::map([](Wrap wrap) { return (wrap == Wrap::Layer) + ? ::Settings::Container::Layer + : ::Settings::Container::Section; })); if (inner->hasFlexibleTopBar()) { auto filler = setInnerWidget(object_ptr(this)); filler->resize(1, 1); diff --git a/Telegram/SourceFiles/settings/business/settings_quick_replies.cpp b/Telegram/SourceFiles/settings/business/settings_quick_replies.cpp index 431dcd4e10..aac5f918c2 100644 --- a/Telegram/SourceFiles/settings/business/settings_quick_replies.cpp +++ b/Telegram/SourceFiles/settings/business/settings_quick_replies.cpp @@ -96,9 +96,8 @@ void QuickReplies::setupContent( Box(EditShortcutNameBox, QString(), crl::guard(this, submit))); }); - Ui::AddSkip(content); - Ui::AddDivider(content); - Ui::AddSkip(content); + const auto dividerWrap = content->add( + object_ptr(content)); const auto inner = content->add( object_ptr(content)); @@ -133,6 +132,18 @@ void QuickReplies::setupContent( while (old--) { delete inner->widgetAt(0); } + if (!inner->count()) { + while (dividerWrap->count()) { + delete dividerWrap->widgetAt(0); + } + } else if (!dividerWrap->count()) { + AddSkip(dividerWrap); + AddDivider(dividerWrap); + AddSkip(dividerWrap); + } + if (const auto width = content->width()) { + content->resizeToWidth(width); + } }, content->lifetime()); Ui::ResizeFitChild(this, content); @@ -170,6 +181,7 @@ void EditShortcutNameBox( box->setFocusCallback([=] { field->setFocusFast(); }); + field->selectAll(); const auto callback = [=] { const auto name = field->getLastText().trimmed(); diff --git a/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp b/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp index 8df33ebf03..b72acab4b4 100644 --- a/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp +++ b/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp @@ -27,6 +27,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/history_view_corner_buttons.h" #include "history/view/history_view_empty_list_bubble.h" #include "history/view/history_view_list_widget.h" +#include "history/view/history_view_service_message.h" #include "history/view/history_view_sticker_toast.h" #include "history/history.h" #include "history/history_item.h" @@ -51,6 +52,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_utilities.h" #include "ui/widgets/menu/menu_add_action_callback.h" #include "ui/widgets/scroll_area.h" +#include "ui/painter.h" #include "window/themes/window_theme.h" #include "window/section_widget.h" #include "window/window_session_controller.h" @@ -74,6 +76,7 @@ public: QWidget *parent, not_null controller, not_null scroll, + rpl::producer containerValue, BusinessShortcutId shortcutId); ~ShortcutMessages(); @@ -97,7 +100,7 @@ public: QRect clip) override; private: - void outerResized(QSize outer); + void outerResized(); void updateComposeControlsPosition(); // ListDelegate interface. @@ -247,6 +250,7 @@ private: const Window::SectionShow ¶ms); void showAtEnd(); void finishSending(); + void refreshEmptyText(); const not_null _controller; const not_null _session; @@ -254,6 +258,7 @@ private: const not_null _history; rpl::variable _shortcutId; rpl::variable _shortcut; + rpl::variable _container; std::shared_ptr _style; std::shared_ptr _theme; QPointer _inner; @@ -262,6 +267,14 @@ private: rpl::event_stream<> _showBackRequests; bool _skipScrollEvent = false; + QSize _inOuterResize; + QSize _pendingOuterResize; + + const style::icon *_emptyIcon = nullptr; + Ui::Text::String _emptyText; + int _emptyTextWidth = 0; + int _emptyTextHeight = 0; + rpl::variable _selectedItems = Info::SelectedItems(Storage::SharedMediaType::kCount); @@ -283,22 +296,33 @@ struct Factory final : AbstractSectionFactory { object_ptr create( not_null parent, not_null controller, - not_null scroll + not_null scroll, + rpl::producer containerValue ) const final override { return object_ptr( parent, controller, scroll, + std::move(containerValue), shortcutId); } const BusinessShortcutId shortcutId = {}; }; +[[nodiscard]] bool IsAway(const QString &shortcut) { + return (shortcut == u"away"_q); +} + +[[nodiscard]] bool IsGreeting(const QString &shortcut) { + return (shortcut == u"hello"_q); +} + ShortcutMessages::ShortcutMessages( QWidget *parent, not_null controller, not_null scroll, + rpl::producer containerValue, BusinessShortcutId shortcutId) : AbstractSection(parent) , _controller(controller) @@ -308,6 +332,7 @@ ShortcutMessages::ShortcutMessages( , _shortcutId(shortcutId) , _shortcut( _session->data().shortcutMessages().lookupShortcut(shortcutId).name) +, _container(std::move(containerValue)) , _cornerButtons( _scroll, controller->chatStyle(), @@ -345,8 +370,8 @@ ShortcutMessages::ShortcutMessages( _scroll->sizeValue() | rpl::filter([](QSize size) { return !size.isEmpty(); - }) | rpl::start_with_next([=](QSize size) { - outerResized(size); + }) | rpl::start_with_next([=] { + outerResized(); }, lifetime()); _scroll->scrolls( @@ -354,6 +379,11 @@ ShortcutMessages::ShortcutMessages( processScroll(); }, lifetime()); + _shortcut.value() | rpl::start_with_next([=] { + refreshEmptyText(); + _inner->update(); + }, lifetime()); + _inner->editMessageRequested( ) | rpl::start_with_next([=](auto fullId) { if (const auto item = _session->data().message(fullId)) { @@ -364,17 +394,6 @@ ShortcutMessages::ShortcutMessages( } }, _inner->lifetime()); - { - auto emptyInfo = base::make_unique_q( - _inner, - _style.get(), - st::msgServicePadding); - const auto emptyText = Ui::Text::Semibold( - u"give me your money.."_q); - emptyInfo->setText(emptyText); - _inner->setEmptyInfoWidget(std::move(emptyInfo)); - } - _inner->heightValue() | rpl::start_with_next([=](int height) { resize(width(), height); }, lifetime()); @@ -382,15 +401,62 @@ ShortcutMessages::ShortcutMessages( ShortcutMessages::~ShortcutMessages() = default; +void ShortcutMessages::refreshEmptyText() { + const auto &shortcut = _shortcut.current(); + const auto away = IsAway(shortcut); + const auto greeting = !away && IsGreeting(shortcut); + auto text = away + ? tr::lng_away_empty_title( + tr::now, + Ui::Text::Bold + ).append("\n\n").append(tr::lng_away_empty_about(tr::now)) + : greeting + ? tr::lng_greeting_empty_title( + tr::now, + Ui::Text::Bold + ).append("\n\n").append(tr::lng_greeting_empty_about(tr::now)) + : tr::lng_replies_empty_title( + tr::now, + Ui::Text::Bold + ).append("\n\n").append(tr::lng_replies_empty_about( + tr::now, + lt_shortcut, + Ui::Text::Bold('/' + shortcut), + Ui::Text::WithEntities)); + _emptyIcon = away + ? &st::awayEmptyIcon + : greeting + ? &st::greetingEmptyIcon + : &st::repliesEmptyIcon; + const auto padding = st::repliesEmptyPadding; + const auto minWidth = st::repliesEmptyWidth / 4; + const auto maxWidth = std::max( + minWidth + 1, + st::repliesEmptyWidth - padding.left() - padding.right()); + _emptyText = Ui::Text::String( + st::messageTextStyle, + text, + kMarkupTextOptions, + minWidth); + const auto countHeight = [&](int width) { + return _emptyText.countHeight(width); + }; + _emptyTextWidth = Ui::FindNiceTooltipWidth( + minWidth, + maxWidth, + countHeight); + _emptyTextHeight = countHeight(_emptyTextWidth); +} + Type ShortcutMessages::Id(BusinessShortcutId shortcutId) { return std::make_shared(shortcutId); } rpl::producer ShortcutMessages::title() { return _shortcut.value() | rpl::map([=](const QString &shortcut) { - return (shortcut == u"away"_q) + return IsAway(shortcut) ? tr::lng_away_title() - : (shortcut == u"hello"_q) + : IsGreeting(shortcut) ? tr::lng_greeting_title() : rpl::single('/' + shortcut); }) | rpl::flatten_latest(); @@ -497,22 +563,36 @@ bool ShortcutMessages::paintOuter( return true; } -void ShortcutMessages::outerResized(QSize outer) { - const auto contentWidth = outer.width(); +void ShortcutMessages::outerResized() { + const auto outer = _scroll->size(); + if (!_inOuterResize.isEmpty()) { + _pendingOuterResize = (_inOuterResize != outer) + ? outer + : QSize(); + return; + } + _inOuterResize = outer; - const auto newScrollTop = _scroll->isHidden() - ? std::nullopt - : _scroll->scrollTop() - ? base::make_optional(_scroll->scrollTop()) - : 0; - _skipScrollEvent = true; - _inner->resizeToWidth(contentWidth, st::boxWidth); - _skipScrollEvent = false; + do { + const auto newScrollTop = _scroll->isHidden() + ? std::nullopt + : _scroll->scrollTop() + ? base::make_optional(_scroll->scrollTop()) + : 0; + _skipScrollEvent = true; + const auto minHeight = (_container.current() == Container::Layer) + ? st::boxWidth + : _inOuterResize.height(); + _inner->resizeToWidth(_inOuterResize.width(), minHeight); + _skipScrollEvent = false; - if (!_scroll->isHidden()) { - if (newScrollTop) { + if (!_scroll->isHidden() && newScrollTop) { _scroll->scrollToY(*newScrollTop); } + _inOuterResize = base::take(_pendingOuterResize); + } while (!_inOuterResize.isEmpty()); + + if (!_scroll->isHidden()) { updateInnerVisibleArea(); } updateComposeControlsPosition(); @@ -896,8 +976,36 @@ void ShortcutMessages::listOpenDocument( } void ShortcutMessages::listPaintEmpty( - Painter &p, - const Ui::ChatPaintContext &context) { + Painter &p, + const Ui::ChatPaintContext &context) { + Expects(_emptyIcon != nullptr); + + const auto width = st::repliesEmptyWidth; + const auto padding = st::repliesEmptyPadding; + const auto height = padding.top() + + _emptyIcon->height() + + st::repliesEmptySkip + + _emptyTextHeight + + padding.bottom(); + const auto r = QRect( + (this->width() - width) / 2, + (this->height() - height) / 3, + width, + height); + HistoryView::ServiceMessagePainter::PaintBubble(p, context.st, r); + + _emptyIcon->paint( + p, + r.x() + (r.width() - _emptyIcon->width()) / 2, + r.y() + padding.top(), + this->width()); + p.setPen(st::msgServiceFg); + _emptyText.draw( + p, + r.x() + (r.width() - _emptyTextWidth) / 2, + r.y() + padding.top() + _emptyIcon->height() + st::repliesEmptySkip, + _emptyTextWidth, + style::al_top); } QString ShortcutMessages::listElementAuthorRank( diff --git a/Telegram/SourceFiles/settings/settings_business.cpp b/Telegram/SourceFiles/settings/settings_business.cpp index 0881925b57..a8792783c5 100644 --- a/Telegram/SourceFiles/settings/settings_business.cpp +++ b/Telegram/SourceFiles/settings/settings_business.cpp @@ -562,7 +562,8 @@ struct SectionFactory : AbstractSectionFactory { object_ptr create( not_null parent, not_null controller, - not_null scroll + not_null scroll, + rpl::producer containerValue ) const final override { return object_ptr(parent, controller); } diff --git a/Telegram/SourceFiles/settings/settings_common_session.h b/Telegram/SourceFiles/settings/settings_common_session.h index 2ebd1319c5..2b439bacf3 100644 --- a/Telegram/SourceFiles/settings/settings_common_session.h +++ b/Telegram/SourceFiles/settings/settings_common_session.h @@ -26,13 +26,19 @@ class SessionController; namespace Settings { +enum class Container { + Section, + Layer, +}; + class AbstractSection; struct AbstractSectionFactory { [[nodiscard]] virtual object_ptr create( not_null parent, not_null controller, - not_null scroll) const = 0; + not_null scroll, + rpl::producer containerValue) const = 0; [[nodiscard]] virtual bool hasCustomTopBar() const { return false; } @@ -45,7 +51,8 @@ struct SectionFactory : AbstractSectionFactory { object_ptr create( not_null parent, not_null controller, - not_null scroll + not_null scroll, + rpl::producer containerValue ) const final override { return object_ptr(parent, controller); } diff --git a/Telegram/SourceFiles/settings/settings_notifications_type.cpp b/Telegram/SourceFiles/settings/settings_notifications_type.cpp index 717627573e..802a82ee6f 100644 --- a/Telegram/SourceFiles/settings/settings_notifications_type.cpp +++ b/Telegram/SourceFiles/settings/settings_notifications_type.cpp @@ -44,7 +44,8 @@ struct Factory : AbstractSectionFactory { object_ptr create( not_null parent, not_null controller, - not_null scroll + not_null scroll, + rpl::producer containerValue ) const final override { return object_ptr(parent, controller, type); } diff --git a/Telegram/SourceFiles/settings/settings_premium.cpp b/Telegram/SourceFiles/settings/settings_premium.cpp index ec17c8aaca..809b8ba8ee 100644 --- a/Telegram/SourceFiles/settings/settings_premium.cpp +++ b/Telegram/SourceFiles/settings/settings_premium.cpp @@ -1268,7 +1268,8 @@ struct SectionFactory : AbstractSectionFactory { object_ptr create( not_null parent, not_null controller, - not_null scroll + not_null scroll, + rpl::producer containerValue ) const final override { return object_ptr(parent, controller); } diff --git a/Telegram/SourceFiles/ui/chat/chat.style b/Telegram/SourceFiles/ui/chat/chat.style index 4ec9954a5e..b4217d85ba 100644 --- a/Telegram/SourceFiles/ui/chat/chat.style +++ b/Telegram/SourceFiles/ui/chat/chat.style @@ -1044,6 +1044,13 @@ premiumRequiredWidth: 186px; premiumRequiredIcon: icon{{ "chat/large_lockedchat", msgServiceFg }}; premiumRequiredCircle: 60px; +repliesEmptyIcon: icon{{ "chat/large_quickreply", msgServiceFg }}; +greetingEmptyIcon: icon{{ "chat/large_greeting", msgServiceFg }}; +awayEmptyIcon: icon{{ "chat/large_away", msgServiceFg }}; +repliesEmptyWidth: 264px; +repliesEmptySkip: 16px; +repliesEmptyPadding: margins(10px, 20px, 10px, 16px); + boostMessageIcon: icon {{ "stories/boost_mini", windowFg }}; boostMessageIconPadding: margins(0px, 2px, 0px, 0px); boostsMessageIcon: icon {{ "stories/boosts_mini", windowFg }};