From 38c74bf2cf3038bc827a3698c36cab292ba3108e Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 14 Jul 2025 09:54:32 +0300 Subject: [PATCH] Added lottie icon and button to dialogs widget when dialogs are empty. --- Telegram/Resources/animations/no_chats.tgs | Bin 0 -> 9165 bytes Telegram/Resources/langs/lang.strings | 3 + .../Resources/qrc/telegram/animations.qrc | 1 + Telegram/SourceFiles/dialogs/dialogs.style | 11 +++ .../dialogs/dialogs_inner_widget.cpp | 74 +++++++++++++++++- .../dialogs/dialogs_inner_widget.h | 4 + 6 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 Telegram/Resources/animations/no_chats.tgs diff --git a/Telegram/Resources/animations/no_chats.tgs b/Telegram/Resources/animations/no_chats.tgs new file mode 100644 index 0000000000000000000000000000000000000000..a30673b48a78214db91093f003aff85859e8767e GIT binary patch literal 9165 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 X>#2GGv4UM3t>OOx_r9|+yFdW|XoA4I literal 0 HcmV?d00001 diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index d8566d25f5..cfeb51a1eb 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -434,6 +434,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_dlg_new_channel_name" = "Channel name"; "lng_dlg_new_bot_name" = "Bot name"; "lng_no_chats" = "Your chats will be here"; +"lng_no_conversations" = "You have no\nconversations yet."; +"lng_no_conversations_button" = "New Message"; +"lng_no_conversations_subtitle" = "Your contacts on Telegram"; "lng_no_chats_filter" = "No chats currently belong to this folder."; "lng_no_saved_sublists" = "You can save messages from other chats here."; "lng_contacts_loading" = "Loading..."; diff --git a/Telegram/Resources/qrc/telegram/animations.qrc b/Telegram/Resources/qrc/telegram/animations.qrc index 9beaa522d3..cc9c2313ed 100644 --- a/Telegram/Resources/qrc/telegram/animations.qrc +++ b/Telegram/Resources/qrc/telegram/animations.qrc @@ -38,6 +38,7 @@ ../../animations/edit_peers/topics_tabs.tgs ../../animations/edit_peers/topics_list.tgs ../../animations/edit_peers/direct_messages.tgs + ../../animations/no_chats.tgs ../../animations/dice/dice_idle.tgs ../../animations/dice/dart_idle.tgs diff --git a/Telegram/SourceFiles/dialogs/dialogs.style b/Telegram/SourceFiles/dialogs/dialogs.style index babbf4027a..b3e2eceea0 100644 --- a/Telegram/SourceFiles/dialogs/dialogs.style +++ b/Telegram/SourceFiles/dialogs/dialogs.style @@ -244,6 +244,17 @@ dialogsEmptyLabel: FlatLabel(defaultFlatLabel) { align: align(top); textFg: windowSubTextFg; } +dialogEmptyButton: RoundButton(defaultActiveButton) { +} +dialogEmptyButtonSkip: 12px; +dialogEmptyButtonLabel: FlatLabel(defaultFlatLabel) { + style: TextStyle(defaultTextStyle) { + font: font(boxFontSize semibold); + } + minWidth: 32px; + align: align(top); + textFg: windowFg; +} dialogsMenuToggle: IconButton { width: 40px; diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index 85e395cdb8..e812c8173a 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -31,6 +31,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_utilities.h" #include "ui/text/text_options.h" #include "ui/dynamic_thumbnails.h" +#include "ui/vertical_list.h" #include "ui/painter.h" #include "ui/rect.h" #include "ui/ui_utility.h" @@ -58,8 +59,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/options.h" #include "lang/lang_keys.h" #include "lottie/lottie_icon.h" -#include "mainwindow.h" -#include "mainwidget.h" +#include "settings/settings_common.h" #include "storage/storage_account.h" #include "apiwrap.h" #include "main/main_session.h" @@ -80,6 +80,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "api/api_chat_filters.h" #include "base/qt/qt_common_adapters.h" #include "styles/style_dialogs.h" +#include "styles/style_boxes.h" #include "styles/style_chat.h" // popupMenuExpandedSeparator #include "styles/style_chat_helpers.h" #include "styles/style_color_indices.h" @@ -4075,9 +4076,18 @@ void InnerWidget::refreshEmpty() { if (state == EmptyState::None) { _emptyState = state; _empty.destroy(); + _emptyList.destroy(); + _emptyButton.destroy(); return; } else if (_emptyState == state) { _empty->setVisible(_state == WidgetState::Default); + if (_emptyList) { + _emptyList->setVisible(_state == WidgetState::Default); + _empty->setVisible(!_emptyList->isVisible()); + } + if (_emptyButton) { + _emptyButton->setVisible(_state == WidgetState::Default); + } return; } _emptyState = state; @@ -4108,7 +4118,6 @@ void InnerWidget::refreshEmpty() { return result; }); _empty.create(this, std::move(full), st::dialogsEmptyLabel); - resizeEmpty(); _empty->overrideLinkClickHandler([=] { if (_emptyState == EmptyState::NoContacts) { _controller->showAddContact(); @@ -4120,6 +4129,58 @@ void InnerWidget::refreshEmpty() { } }); _empty->setVisible(_state == WidgetState::Default); + + if (state == EmptyState::NoContacts) { + const auto isListVisible = _state == WidgetState::Default; + _emptyList.create(this); + _emptyList->setVisible(isListVisible); + + auto icon = ::Settings::CreateLottieIcon( + _emptyList, + { + .name = u"no_chats"_q, + .sizeOverride = Size(st::changePhoneIconSize), + }); + const auto iconWidget = _emptyList->add( + object_ptr>(_emptyList, std::move(icon.widget))); + Ui::AddSkip(_emptyList); + const auto label = _emptyList->add( + object_ptr( + _emptyList, + tr::lng_no_conversations(), + st::dialogEmptyButtonLabel)); + if (_state == WidgetState::Default) { + icon.animate(anim::repeat::once); + } + _emptyButton.create( + this, + tr::lng_no_conversations_button(), + st::dialogEmptyButton); + _emptyButton->setTextTransform( + Ui::RoundButton::TextTransform::NoTransform); + _emptyButton->setVisible(isListVisible); + _emptyButton->setClickedCallback([=, window = _controller] { + window->show(PrepareContactsBox(window)); + }); + geometryValue() | rpl::start_with_next([=](const QRect &r) { + const auto top = r.height() + - _emptyButton->height() + - st::dialogEmptyButtonSkip; + _emptyButton->moveToLeft(st::dialogEmptyButtonSkip, top); + }, _emptyButton->lifetime()); + geometryValue() | rpl::start_with_next([=](const QRect &r) { + const auto bottom = _emptyButton + ? (_emptyButton->height() + st::dialogEmptyButtonSkip) + : 0; + _emptyList->moveToLeft( + 0, + ((r.height() - bottom) - _emptyList->height()) / 2); + }, _emptyList->lifetime()); + + _empty->setVisible(!_emptyList->isVisible()); + } + + resizeEmpty(); } void InnerWidget::resizeEmpty() { @@ -4128,6 +4189,13 @@ void InnerWidget::resizeEmpty() { _empty->resizeToWidth(width() - 2 * skip); _empty->move(skip, (st::dialogsEmptyHeight - _empty->height()) / 2); } + if (_emptyList) { + _emptyList->resizeToWidth(width()); + } + if (_emptyButton) { + const auto skip = st::dialogEmptyButtonSkip; + _emptyButton->resizeToWidth(width() - 2 * skip); + } if (_searchEmpty) { _searchEmpty->resizeToWidth(width()); _searchEmpty->move(0, searchedOffset()); diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h index c3c4a6b033..e54955ee2e 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.h @@ -43,6 +43,8 @@ namespace Ui { class IconButton; class PopupMenu; class FlatLabel; +class VerticalLayout; +class RoundButton; struct ScrollToRequest; namespace Controls { enum class QuickDialogAction; @@ -619,6 +621,8 @@ private: object_ptr _searchEmpty = { nullptr }; SearchState _searchEmptyState; object_ptr _empty = { nullptr }; + object_ptr _emptyList = { nullptr }; + object_ptr _emptyButton = { nullptr }; Ui::DraggingScrollManager _draggingScroll;