From 67fc24a36b65dfcc67cb38d71bd7425b0ea8b386 Mon Sep 17 00:00:00 2001 From: RadRussianRus Date: Thu, 2 Jul 2020 10:42:39 +0300 Subject: [PATCH] GIFs shared media section Mostly taken from TDesktop-x64/tdesktop. --- Telegram/Resources/icons/info_media_gif.png | Bin 0 -> 2304 bytes Telegram/Resources/icons/info_media_gif@2x.png | Bin 0 -> 2757 bytes Telegram/Resources/icons/info_media_gif@3x.png | Bin 0 -> 2769 bytes Telegram/Resources/langs/lang.strings | 7 +++++++ Telegram/Resources/langs/rewrites/ru.json | 16 +++++++++++++++- Telegram/SourceFiles/info/info.style | 1 + Telegram/SourceFiles/info/info_top_bar.cpp | 3 +++ .../SourceFiles/info/media/info_media_buttons.h | 1 + .../info/media/info_media_empty_widget.cpp | 3 +++ .../info/media/info_media_inner_widget.cpp | 1 + .../info/media/info_media_list_widget.cpp | 6 ++++++ .../info/profile/info_profile_inner_widget.cpp | 1 + 12 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 Telegram/Resources/icons/info_media_gif.png create mode 100644 Telegram/Resources/icons/info_media_gif@2x.png create mode 100644 Telegram/Resources/icons/info_media_gif@3x.png diff --git a/Telegram/Resources/icons/info_media_gif.png b/Telegram/Resources/icons/info_media_gif.png new file mode 100644 index 0000000000000000000000000000000000000000..4451f2ffd581d7660d493465c00a480913c2b7cb GIT binary patch literal 2304 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 J$-Kzq{{Z0wHevt( literal 0 HcmV?d00001 diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 9d1142980..b15eba5dc 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2559,4 +2559,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ktg_too_many_accounts_warning" = "Warning! Using too many accounts at the same time is not recommended due to higher memory comsumption and possible crashes because of it.\n\nYou sure you want to add a new account?"; "ktg_account_add_anyway" = "Add anyway"; +"ktg_media_selected_gif#one" = "{count} GIF"; +"ktg_media_selected_gif#other" = "{count} GIFs"; +"ktg_media_type_gif" = "GIFs"; +"ktg_profile_gif#one" = "{count} GIF"; +"ktg_profile_gif#other" = "{count} GIFs"; +"ktg_media_gif_empty" = "No GIFs here yet"; + // Keys finished diff --git a/Telegram/Resources/langs/rewrites/ru.json b/Telegram/Resources/langs/rewrites/ru.json index 987edec63..a759a4637 100644 --- a/Telegram/Resources/langs/rewrites/ru.json +++ b/Telegram/Resources/langs/rewrites/ru.json @@ -149,5 +149,19 @@ "ktg_group_status_owner": "вы владелец", "ktg_group_status_admin": "вы админ", "ktg_too_many_accounts_warning": "Внимание! Использование слишком большого количества аккаунтов одновременно не рекомендуется из-за высокого потребления памяти, а также возможных вылетов из-за этого.\n\nВы точно хотите добавить новый аккаунт?", - "ktg_account_add_anyway": "Всё равно добавить" + "ktg_account_add_anyway": "Всё равно добавить", + "ktg_media_selected_gif": { + "one": "{count} GIF", + "few": "{count} GIF", + "many": "{count} GIF", + "other": "{count} GIF" + }, + "ktg_media_type_gif": "GIF", + "ktg_profile_gif": { + "one": "{count} GIF", + "few": "{count} GIF", + "many": "{count} GIF", + "other": "{count} GIF" + }, + "ktg_media_gif_empty": "Здесь пока нет GIF" } diff --git a/Telegram/SourceFiles/info/info.style b/Telegram/SourceFiles/info/info.style index 7b6089319..6df3dd78c 100644 --- a/Telegram/SourceFiles/info/info.style +++ b/Telegram/SourceFiles/info/info.style @@ -354,6 +354,7 @@ infoIconActions: icon {{ "info_actions", infoIconFg }}; //infoIconFeed: icon {{ "info_feed", infoIconFg }}; infoIconMediaPhoto: icon {{ "info_media_photo", infoIconFg }}; infoIconMediaVideo: icon {{ "info_media_video", infoIconFg }}; +infoIconMediaGif: icon {{ "info_media_gif", infoIconFg }}; infoIconMediaFile: icon {{ "info_media_file", infoIconFg }}; infoIconMediaAudio: icon {{ "info_media_audio", infoIconFg }}; infoIconMediaLink: icon {{ "info_media_link", infoIconFg }}; diff --git a/Telegram/SourceFiles/info/info_top_bar.cpp b/Telegram/SourceFiles/info/info_top_bar.cpp index d01846258..d4d38fe6e 100644 --- a/Telegram/SourceFiles/info/info_top_bar.cpp +++ b/Telegram/SourceFiles/info/info_top_bar.cpp @@ -487,6 +487,7 @@ Ui::StringWithNumbers TopBar::generateSelectedText() const { switch (_selectedItems.type) { case Type::Photo: return tr::lng_media_selected_photo; case Type::Video: return tr::lng_media_selected_video; + case Type::GIF: return tr::ktg_media_selected_gif; case Type::File: return tr::lng_media_selected_file; case Type::MusicFile: return tr::lng_media_selected_song; case Type::Link: return tr::lng_media_selected_link; @@ -583,6 +584,8 @@ rpl::producer TitleValue( return tr::lng_media_type_photos(); case Section::MediaType::Video: return tr::lng_media_type_videos(); + case Section::MediaType::GIF: + return tr::ktg_media_type_gif(); case Section::MediaType::MusicFile: return tr::lng_media_type_songs(); case Section::MediaType::File: diff --git a/Telegram/SourceFiles/info/media/info_media_buttons.h b/Telegram/SourceFiles/info/media/info_media_buttons.h index eaf2154ad..972ec046c 100644 --- a/Telegram/SourceFiles/info/media/info_media_buttons.h +++ b/Telegram/SourceFiles/info/media/info_media_buttons.h @@ -31,6 +31,7 @@ inline tr::phrase MediaTextPhrase(Type type) { switch (type) { case Type::Photo: return tr::lng_profile_photos; case Type::Video: return tr::lng_profile_videos; + case Type::GIF: return tr::ktg_profile_gif; case Type::File: return tr::lng_profile_files; case Type::MusicFile: return tr::lng_profile_songs; case Type::Link: return tr::lng_profile_shared_links; diff --git a/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp b/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp index cee74a857..0f47032a6 100644 --- a/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_empty_widget.cpp @@ -38,6 +38,7 @@ void EmptyWidget::setType(Type type) { switch (_type) { case Type::Photo: return &st::infoEmptyPhoto; case Type::Video: return &st::infoEmptyVideo; + case Type::GIF: return &st::infoEmptyVideo; case Type::MusicFile: return &st::infoEmptyAudio; case Type::File: return &st::infoEmptyFile; case Type::Link: return &st::infoEmptyLink; @@ -55,6 +56,8 @@ void EmptyWidget::setSearchQuery(const QString &query) { return tr::lng_media_photo_empty(tr::now); case Type::Video: return tr::lng_media_video_empty(tr::now); + case Type::GIF: + return tr::ktg_media_gif_empty(tr::now); case Type::MusicFile: return query.isEmpty() ? tr::lng_media_song_empty(tr::now) diff --git a/Telegram/SourceFiles/info/media/info_media_inner_widget.cpp b/Telegram/SourceFiles/info/media/info_media_inner_widget.cpp index d76a43575..0644f53e9 100644 --- a/Telegram/SourceFiles/info/media/info_media_inner_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_inner_widget.cpp @@ -121,6 +121,7 @@ void InnerWidget::createTypeButtons() { addMediaButton(Type::Photo, st::infoIconMediaPhoto); addMediaButton(Type::Video, st::infoIconMediaVideo); + addMediaButton(Type::GIF, st::infoIconMediaGif); addMediaButton(Type::File, st::infoIconMediaFile); addMediaButton(Type::MusicFile, st::infoIconMediaAudio); addMediaButton(Type::Link, st::infoIconMediaLink); diff --git a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp index 7ad029129..6c34b7647 100644 --- a/Telegram/SourceFiles/info/media/info_media_list_widget.cpp +++ b/Telegram/SourceFiles/info/media/info_media_list_widget.cpp @@ -213,6 +213,7 @@ void ListWidget::Section::setHeader(not_null item) { switch (_type) { case Type::Photo: case Type::Video: + case Type::GIF: case Type::RoundFile: case Type::RoundVoiceFile: case Type::File: @@ -239,6 +240,7 @@ bool ListWidget::Section::belongsHere( switch (_type) { case Type::Photo: case Type::Video: + case Type::GIF: case Type::RoundFile: case Type::RoundVoiceFile: case Type::File: @@ -464,6 +466,7 @@ void ListWidget::Section::resizeToWidth(int newWidth) { switch (_type) { case Type::Photo: case Type::Video: + case Type::GIF: case Type::RoundFile: { _itemsLeft = st::infoMediaSkip; _itemsTop = st::infoMediaSkip; @@ -496,6 +499,7 @@ int ListWidget::Section::MinItemHeight(Type type, int width) { switch (type) { case Type::Photo: case Type::Video: + case Type::GIF: case Type::RoundFile: { auto itemsLeft = st::infoMediaSkip; auto itemsInRow = (width - itemsLeft) @@ -521,6 +525,7 @@ int ListWidget::Section::recountHeight() const { switch (_type) { case Type::Photo: case Type::Video: + case Type::GIF: case Type::RoundFile: { auto itemHeight = _itemWidth + st::infoMediaSkip; auto index = 0; @@ -905,6 +910,7 @@ std::unique_ptr ListWidget::createLayout( } return nullptr; case Type::Video: + case Type::GIF: if (const auto file = getFile()) { return std::make_unique