diff --git a/Telegram/Resources/icons/folders/folder_existing_chats.png b/Telegram/Resources/icons/folders/folder_existing_chats.png new file mode 100644 index 000000000..e54a10425 Binary files /dev/null and b/Telegram/Resources/icons/folders/folder_existing_chats.png differ diff --git a/Telegram/Resources/icons/folders/folder_existing_chats@2x.png b/Telegram/Resources/icons/folders/folder_existing_chats@2x.png new file mode 100644 index 000000000..e3a73f7e1 Binary files /dev/null and b/Telegram/Resources/icons/folders/folder_existing_chats@2x.png differ diff --git a/Telegram/Resources/icons/folders/folder_existing_chats@3x.png b/Telegram/Resources/icons/folders/folder_existing_chats@3x.png new file mode 100644 index 000000000..2b37db754 Binary files /dev/null and b/Telegram/Resources/icons/folders/folder_existing_chats@3x.png differ diff --git a/Telegram/Resources/icons/folders/folder_new_chats.png b/Telegram/Resources/icons/folders/folder_new_chats.png new file mode 100644 index 000000000..03c8380d4 Binary files /dev/null and b/Telegram/Resources/icons/folders/folder_new_chats.png differ diff --git a/Telegram/Resources/icons/folders/folder_new_chats@2x.png b/Telegram/Resources/icons/folders/folder_new_chats@2x.png new file mode 100644 index 000000000..f91df7635 Binary files /dev/null and b/Telegram/Resources/icons/folders/folder_new_chats@2x.png differ diff --git a/Telegram/Resources/icons/folders/folder_new_chats@3x.png b/Telegram/Resources/icons/folders/folder_new_chats@3x.png new file mode 100644 index 000000000..d379a9e4b Binary files /dev/null and b/Telegram/Resources/icons/folders/folder_new_chats@3x.png differ diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index add970d06..c78969caa 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2238,6 +2238,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_away_schedule_custom" = "Custom Schedule"; "lng_away_custom_start" = "Start Time"; "lng_away_custom_end" = "End Time"; +"lng_away_offline_only" = "Only if Offline"; +"lng_away_offline_only_about" = "Don't send the away message if you've recently been online."; "lng_away_recipients" = "Recipients"; "lng_away_select" = "Select chats or entire chat categories for sending an away message."; "lng_away_empty_title" = "New Away Message"; diff --git a/Telegram/SourceFiles/settings/business/settings_away_message.cpp b/Telegram/SourceFiles/settings/business/settings_away_message.cpp index 739d12d2a..ae600e0de 100644 --- a/Telegram/SourceFiles/settings/business/settings_away_message.cpp +++ b/Telegram/SourceFiles/settings/business/settings_away_message.cpp @@ -48,6 +48,7 @@ private: rpl::event_stream<> _deactivateOnAttempt; rpl::variable _recipients; rpl::variable _schedule; + rpl::variable _offlineOnly; rpl::variable _enabled; }; @@ -311,6 +312,18 @@ void AwayMessage::setupContent( }); Ui::AddSkip(inner); Ui::AddDivider(inner); + Ui::AddSkip(inner); + + const auto offlineOnly = inner->add( + object_ptr( + inner, + tr::lng_away_offline_only(), + st::settingsButtonNoIcon) + )->toggleOn(rpl::single(current.offlineOnly)); + _offlineOnly = offlineOnly->toggledValue(); + + Ui::AddSkip(inner); + Ui::AddDividerText(inner, tr::lng_away_offline_only_about()); AddBusinessRecipientsSelector(inner, { .controller = controller, @@ -327,10 +340,13 @@ void AwayMessage::setupContent( } void AwayMessage::save() { - controller()->session().data().businessInfo().saveAwaySettings( + const auto session = &controller()->session(); + session->data().businessInfo().saveAwaySettings( _enabled.current() ? Data::AwaySettings{ .recipients = _recipients.current(), .schedule = _schedule.current(), + .shortcutId = LookupShortcutId(session, u"away"_q), + .offlineOnly = _offlineOnly.current(), } : Data::AwaySettings()); } diff --git a/Telegram/SourceFiles/settings/business/settings_greeting.cpp b/Telegram/SourceFiles/settings/business/settings_greeting.cpp index 43cba0763..e16cc6477 100644 --- a/Telegram/SourceFiles/settings/business/settings_greeting.cpp +++ b/Telegram/SourceFiles/settings/business/settings_greeting.cpp @@ -326,10 +326,12 @@ void Greeting::setupContent( } void Greeting::save() { - controller()->session().data().businessInfo().saveGreetingSettings( + const auto session = &controller()->session(); + session->data().businessInfo().saveGreetingSettings( _enabled.current() ? Data::GreetingSettings{ .recipients = _recipients.current(), .noActivityDays = _noActivityDays.current(), + .shortcutId = LookupShortcutId(session, u"hello"_q), } : Data::GreetingSettings()); } diff --git a/Telegram/SourceFiles/settings/business/settings_recipients_helper.cpp b/Telegram/SourceFiles/settings/business/settings_recipients_helper.cpp index 5787bb234..960c354b2 100644 --- a/Telegram/SourceFiles/settings/business/settings_recipients_helper.cpp +++ b/Telegram/SourceFiles/settings/business/settings_recipients_helper.cpp @@ -280,7 +280,7 @@ void AddBusinessRecipientsSelector( }); }, lifetime); - SetupBusinessChatsPreview(includeInner, excluded); + SetupBusinessChatsPreview(includeInner, included); includeWrap->toggleOn(data->value( ) | rpl::map([](const Data::BusinessRecipients &value) { @@ -374,4 +374,16 @@ rpl::producer ShortcutMessagesLimitValue( }); } +BusinessShortcutId LookupShortcutId( + not_null session, + const QString &name) { + const auto messages = &session->data().shortcutMessages(); + for (const auto &[id, shortcut] : messages->shortcuts().list) { + if (shortcut.name == name) { + return id; + } + } + return {}; +} + } // namespace Settings diff --git a/Telegram/SourceFiles/settings/business/settings_recipients_helper.h b/Telegram/SourceFiles/settings/business/settings_recipients_helper.h index e05f702e6..f4432ea3b 100644 --- a/Telegram/SourceFiles/settings/business/settings_recipients_helper.h +++ b/Telegram/SourceFiles/settings/business/settings_recipients_helper.h @@ -93,4 +93,8 @@ void AddBusinessRecipientsSelector( [[nodiscard]] rpl::producer ShortcutMessagesLimitValue( not_null session); +[[nodiscard]] BusinessShortcutId LookupShortcutId( + not_null session, + const QString &name); + } // namespace Settings diff --git a/Telegram/SourceFiles/window/window.style b/Telegram/SourceFiles/window/window.style index 645c78285..8afc8d243 100644 --- a/Telegram/SourceFiles/window/window.style +++ b/Telegram/SourceFiles/window/window.style @@ -303,8 +303,8 @@ windowFilterTypeBots: icon {{ "folders/folders_type_bots", historyPeerUserpicFg windowFilterTypeNoMuted: icon {{ "folders/folders_type_muted", historyPeerUserpicFg }}; windowFilterTypeNoArchived: icon {{ "folders/folders_type_archived", historyPeerUserpicFg }}; windowFilterTypeNoRead: icon {{ "folders/folders_type_read", historyPeerUserpicFg }}; -windowFilterTypeNewChats: icon {{ "folders/folders_unread", historyPeerUserpicFg }}; -windowFilterTypeExistingChats: windowFilterTypeNoRead; +windowFilterTypeNewChats: icon {{ "folders/folder_new_chats", historyPeerUserpicFg }}; +windowFilterTypeExistingChats: icon {{ "folders/folder_existing_chats", historyPeerUserpicFg }}; windowFilterChatsSectionSubtitleHeight: 28px; windowFilterChatsSectionSubtitle: FlatLabel(defaultFlatLabel) { style: TextStyle(defaultTextStyle) {