From 416b3aff167a6aaa93961e5d0f11ae8886e73ea2 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Sun, 28 Apr 2019 17:19:11 +0400 Subject: [PATCH] UI fixes --- TelegramUI.xcodeproj/project.pbxproj | 84 +++++----- TelegramUI/AnimationNode.swift | 5 + TelegramUI/ChatController.swift | 8 +- TelegramUI/ChatListItem.swift | 26 +-- TelegramUI/ChatMessageStickerItemNode.swift | 29 ++-- TelegramUI/DefaultPresentationTheme.swift | 2 +- TelegramUI/GalleryController.swift | 17 +- TelegramUI/ItemListRevealOptionsNode.swift | 12 +- TelegramUI/Markdown.swift | 3 + TelegramUI/PasscodeEntryController.swift | 70 +++++--- TelegramUI/PasscodeEntryControllerNode.swift | 65 +++++++- TelegramUI/PasscodeEntryInputFieldNode.swift | 8 +- TelegramUI/PasscodeEntryKeyboardNode.swift | 107 ++---------- TelegramUI/PasscodeLayout.swift | 153 ++++++++++++++++++ TelegramUI/PasscodeOptionsController.swift | 73 ++------- TelegramUI/PasscodeSetupController.swift | 4 + TelegramUI/PasscodeSetupControllerNode.swift | 97 +++++++---- .../Resources/Animations/anim_archive.json | 1 + .../Resources/Animations/anim_delete.json | 1 + .../Resources/Animations/anim_hide.json | 1 + .../Resources/Animations/anim_mute.json | 1 + TelegramUI/Resources/Animations/anim_pin.json | 1 + .../Resources/Animations/anim_read.json | 1 + .../Resources/Animations/anim_unarchive.json | 1 + .../Resources/Animations/anim_unmute.json | 1 + .../Resources/Animations/anim_unpin.json | 1 + .../Resources/Animations/anim_unread.json | 1 + TelegramUI/Resources/Animations/archive.json | 1 - TelegramUI/Resources/Animations/delete.json | 1 - TelegramUI/Resources/Animations/hide.json | 1 - TelegramUI/Resources/Animations/mute.json | 1 - TelegramUI/Resources/Animations/pin.json | 1 - TelegramUI/Resources/Animations/read.json | 1 - .../Resources/Animations/unarchive.json | 1 - TelegramUI/Resources/Animations/unmute.json | 1 - TelegramUI/Resources/Animations/unpin.json | 1 - TelegramUI/Resources/Animations/unread.json | 1 - TelegramUI/SearchBarPlaceholderNode.swift | 6 + TelegramUI/TelegramController.swift | 21 ++- 39 files changed, 492 insertions(+), 318 deletions(-) create mode 100644 TelegramUI/PasscodeLayout.swift create mode 100644 TelegramUI/Resources/Animations/anim_archive.json create mode 100644 TelegramUI/Resources/Animations/anim_delete.json create mode 100644 TelegramUI/Resources/Animations/anim_hide.json create mode 100644 TelegramUI/Resources/Animations/anim_mute.json create mode 100644 TelegramUI/Resources/Animations/anim_pin.json create mode 100644 TelegramUI/Resources/Animations/anim_read.json create mode 100644 TelegramUI/Resources/Animations/anim_unarchive.json create mode 100644 TelegramUI/Resources/Animations/anim_unmute.json create mode 100644 TelegramUI/Resources/Animations/anim_unpin.json create mode 100644 TelegramUI/Resources/Animations/anim_unread.json delete mode 100755 TelegramUI/Resources/Animations/archive.json delete mode 100755 TelegramUI/Resources/Animations/delete.json delete mode 100644 TelegramUI/Resources/Animations/hide.json delete mode 100755 TelegramUI/Resources/Animations/mute.json delete mode 100755 TelegramUI/Resources/Animations/pin.json delete mode 100755 TelegramUI/Resources/Animations/read.json delete mode 100755 TelegramUI/Resources/Animations/unarchive.json delete mode 100755 TelegramUI/Resources/Animations/unmute.json delete mode 100755 TelegramUI/Resources/Animations/unpin.json delete mode 100755 TelegramUI/Resources/Animations/unread.json diff --git a/TelegramUI.xcodeproj/project.pbxproj b/TelegramUI.xcodeproj/project.pbxproj index 3a90a1df7b..3b98179190 100644 --- a/TelegramUI.xcodeproj/project.pbxproj +++ b/TelegramUI.xcodeproj/project.pbxproj @@ -33,6 +33,17 @@ 0941A9A0210B057200EBE194 /* OpenInActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0941A99F210B057200EBE194 /* OpenInActionSheetController.swift */; }; 0941A9A4210B0E2E00EBE194 /* OpenInAppIconResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0941A9A3210B0E2E00EBE194 /* OpenInAppIconResources.swift */; }; 0941A9A6210B822D00EBE194 /* OpenInOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0941A9A5210B822D00EBE194 /* OpenInOptions.swift */; }; + 094735032275B62B00EA2312 /* PasscodeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094735022275B62B00EA2312 /* PasscodeLayout.swift */; }; + 0947350E2275D72100EA2312 /* anim_hide.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735042275D71F00EA2312 /* anim_hide.json */; }; + 0947350F2275D72100EA2312 /* anim_unread.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735052275D72000EA2312 /* anim_unread.json */; }; + 094735102275D72100EA2312 /* anim_read.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735062275D72000EA2312 /* anim_read.json */; }; + 094735112275D72100EA2312 /* anim_archive.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735072275D72000EA2312 /* anim_archive.json */; }; + 094735122275D72100EA2312 /* anim_mute.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735082275D72000EA2312 /* anim_mute.json */; }; + 094735132275D72100EA2312 /* anim_delete.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735092275D72000EA2312 /* anim_delete.json */; }; + 094735142275D72100EA2312 /* anim_unarchive.json in Resources */ = {isa = PBXBuildFile; fileRef = 0947350A2275D72000EA2312 /* anim_unarchive.json */; }; + 094735152275D72100EA2312 /* anim_unpin.json in Resources */ = {isa = PBXBuildFile; fileRef = 0947350B2275D72000EA2312 /* anim_unpin.json */; }; + 094735162275D72100EA2312 /* anim_unmute.json in Resources */ = {isa = PBXBuildFile; fileRef = 0947350C2275D72100EA2312 /* anim_unmute.json */; }; + 094735172275D72100EA2312 /* anim_pin.json in Resources */ = {isa = PBXBuildFile; fileRef = 0947350D2275D72100EA2312 /* anim_pin.json */; }; 0947FCAE224043450086741C /* SettingsSearchRecentItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0947FCAD224043450086741C /* SettingsSearchRecentItem.swift */; }; 0947FCB0224055990086741C /* StringHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0947FCAF224055990086741C /* StringHash.swift */; }; 0952D1752176DEB500194860 /* NotificationMuteSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0952D1742176DEB500194860 /* NotificationMuteSettingsController.swift */; }; @@ -129,16 +140,6 @@ 09DE2F292269D5E30045E975 /* PrivacyIntroControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F282269D5E30045E975 /* PrivacyIntroControllerNode.swift */; }; 09E2D9EF226F1AFA00EA0AA4 /* Emoji.mapping in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9ED226F1AF300EA0AA4 /* Emoji.mapping */; }; 09E2D9F1226F214000EA0AA4 /* EmojiResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E2D9F0226F214000EA0AA4 /* EmojiResources.swift */; }; - 09E2DA0422720C4400EA0AA4 /* archive.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9FA22720A6000EA0AA4 /* archive.json */; }; - 09E2DA0522720C4400EA0AA4 /* delete.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9F522720A5F00EA0AA4 /* delete.json */; }; - 09E2DA0622720C4400EA0AA4 /* mute.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9F922720A6000EA0AA4 /* mute.json */; }; - 09E2DA0722720C4400EA0AA4 /* pin.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9F822720A5F00EA0AA4 /* pin.json */; }; - 09E2DA0822720C4400EA0AA4 /* read.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9F722720A5F00EA0AA4 /* read.json */; }; - 09E2DA0922720C4400EA0AA4 /* unarchive.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9F422720A5F00EA0AA4 /* unarchive.json */; }; - 09E2DA0A22720C4400EA0AA4 /* unmute.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9F622720A5F00EA0AA4 /* unmute.json */; }; - 09E2DA0B22720C4400EA0AA4 /* unpin.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9F222720A5E00EA0AA4 /* unpin.json */; }; - 09E2DA0C22720C4400EA0AA4 /* unread.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9F322720A5E00EA0AA4 /* unread.json */; }; - 09E2DA0F2273258700EA0AA4 /* hide.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2DA0D2273245300EA0AA4 /* hide.json */; }; 09E2DA112273340E00EA0AA4 /* AnimationNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E2DA102273340E00EA0AA4 /* AnimationNode.swift */; }; 09E2DA132273367900EA0AA4 /* archiveAvatar.json in Resources */ = {isa = PBXBuildFile; fileRef = 09E2DA122273367900EA0AA4 /* archiveAvatar.json */; }; 09E4A801223AE1B30038140F /* PeerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E4A800223AE1B30038140F /* PeerType.swift */; }; @@ -1215,6 +1216,17 @@ 0941A99F210B057200EBE194 /* OpenInActionSheetController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenInActionSheetController.swift; sourceTree = ""; }; 0941A9A3210B0E2E00EBE194 /* OpenInAppIconResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenInAppIconResources.swift; sourceTree = ""; }; 0941A9A5210B822D00EBE194 /* OpenInOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenInOptions.swift; sourceTree = ""; }; + 094735022275B62B00EA2312 /* PasscodeLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeLayout.swift; sourceTree = ""; }; + 094735042275D71F00EA2312 /* anim_hide.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_hide.json; sourceTree = ""; }; + 094735052275D72000EA2312 /* anim_unread.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unread.json; sourceTree = ""; }; + 094735062275D72000EA2312 /* anim_read.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_read.json; sourceTree = ""; }; + 094735072275D72000EA2312 /* anim_archive.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_archive.json; sourceTree = ""; }; + 094735082275D72000EA2312 /* anim_mute.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_mute.json; sourceTree = ""; }; + 094735092275D72000EA2312 /* anim_delete.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_delete.json; sourceTree = ""; }; + 0947350A2275D72000EA2312 /* anim_unarchive.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unarchive.json; sourceTree = ""; }; + 0947350B2275D72000EA2312 /* anim_unpin.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unpin.json; sourceTree = ""; }; + 0947350C2275D72100EA2312 /* anim_unmute.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unmute.json; sourceTree = ""; }; + 0947350D2275D72100EA2312 /* anim_pin.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_pin.json; sourceTree = ""; }; 0947FCAD224043450086741C /* SettingsSearchRecentItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsSearchRecentItem.swift; sourceTree = ""; }; 0947FCAF224055990086741C /* StringHash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringHash.swift; sourceTree = ""; }; 0952D1742176DEB500194860 /* NotificationMuteSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationMuteSettingsController.swift; sourceTree = ""; }; @@ -1315,16 +1327,6 @@ 09DE2F282269D5E30045E975 /* PrivacyIntroControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyIntroControllerNode.swift; sourceTree = ""; }; 09E2D9ED226F1AF300EA0AA4 /* Emoji.mapping */ = {isa = PBXFileReference; lastKnownFileType = file; name = Emoji.mapping; path = TelegramUI/Resources/Emoji.mapping; sourceTree = ""; }; 09E2D9F0226F214000EA0AA4 /* EmojiResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiResources.swift; sourceTree = ""; }; - 09E2D9F222720A5E00EA0AA4 /* unpin.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = unpin.json; sourceTree = ""; }; - 09E2D9F322720A5E00EA0AA4 /* unread.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = unread.json; sourceTree = ""; }; - 09E2D9F422720A5F00EA0AA4 /* unarchive.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = unarchive.json; sourceTree = ""; }; - 09E2D9F522720A5F00EA0AA4 /* delete.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = delete.json; sourceTree = ""; }; - 09E2D9F622720A5F00EA0AA4 /* unmute.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = unmute.json; sourceTree = ""; }; - 09E2D9F722720A5F00EA0AA4 /* read.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = read.json; sourceTree = ""; }; - 09E2D9F822720A5F00EA0AA4 /* pin.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = pin.json; sourceTree = ""; }; - 09E2D9F922720A6000EA0AA4 /* mute.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = mute.json; sourceTree = ""; }; - 09E2D9FA22720A6000EA0AA4 /* archive.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = archive.json; sourceTree = ""; }; - 09E2DA0D2273245300EA0AA4 /* hide.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = hide.json; sourceTree = ""; }; 09E2DA102273340E00EA0AA4 /* AnimationNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimationNode.swift; sourceTree = ""; }; 09E2DA122273367900EA0AA4 /* archiveAvatar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = archiveAvatar.json; sourceTree = ""; }; 09E4A800223AE1B30038140F /* PeerType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerType.swift; sourceTree = ""; }; @@ -2522,17 +2524,17 @@ 09310D13213BC5DE0020033A /* Animations */ = { isa = PBXGroup; children = ( + 094735072275D72000EA2312 /* anim_archive.json */, + 094735092275D72000EA2312 /* anim_delete.json */, + 094735042275D71F00EA2312 /* anim_hide.json */, + 094735082275D72000EA2312 /* anim_mute.json */, + 0947350D2275D72100EA2312 /* anim_pin.json */, + 094735062275D72000EA2312 /* anim_read.json */, + 0947350A2275D72000EA2312 /* anim_unarchive.json */, + 0947350C2275D72100EA2312 /* anim_unmute.json */, + 0947350B2275D72000EA2312 /* anim_unpin.json */, + 094735052275D72000EA2312 /* anim_unread.json */, 09E2DA122273367900EA0AA4 /* archiveAvatar.json */, - 09E2D9FA22720A6000EA0AA4 /* archive.json */, - 09E2D9F522720A5F00EA0AA4 /* delete.json */, - 09E2DA0D2273245300EA0AA4 /* hide.json */, - 09E2D9F922720A6000EA0AA4 /* mute.json */, - 09E2D9F822720A5F00EA0AA4 /* pin.json */, - 09E2D9F722720A5F00EA0AA4 /* read.json */, - 09E2D9F422720A5F00EA0AA4 /* unarchive.json */, - 09E2D9F622720A5F00EA0AA4 /* unmute.json */, - 09E2D9F222720A5E00EA0AA4 /* unpin.json */, - 09E2D9F322720A5E00EA0AA4 /* unread.json */, 09310D1A213BC5DE0020033A /* anim_ungroup.json */, 09310D1B213BC5DE0020033A /* anim_group.json */, ); @@ -2743,6 +2745,7 @@ 09F215A522649C3000AEDF6D /* PasscodeLockIconNode.swift */, 09F215AC2264DC4500AEDF6D /* PasscodeSetupController.swift */, 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */, + 094735022275B62B00EA2312 /* PasscodeLayout.swift */, ); name = Passcode; sourceTree = ""; @@ -5223,28 +5226,32 @@ buildActionMask = 2147483647; files = ( 09874E4F21078FA100E190B8 /* Generic.html in Resources */, - 09E2DA0822720C4400EA0AA4 /* read.json in Resources */, 09874E5021078FA100E190B8 /* GenericUserScript.js in Resources */, 09874E5121078FA100E190B8 /* Instagram.html in Resources */, 09874E5221078FA100E190B8 /* Twitch.html in Resources */, 09874E5321078FA100E190B8 /* TwitchUserScript.js in Resources */, + 094735122275D72100EA2312 /* anim_mute.json in Resources */, 09874E5421078FA100E190B8 /* Vimeo.html in Resources */, 09874E5521078FA100E190B8 /* VimeoUserScript.js in Resources */, - 09E2DA0422720C4400EA0AA4 /* archive.json in Resources */, 09874E5621078FA100E190B8 /* Youtube.html in Resources */, 09874E5721078FA100E190B8 /* YoutubeUserScript.js in Resources */, + 094735172275D72100EA2312 /* anim_pin.json in Resources */, + 094735112275D72100EA2312 /* anim_archive.json in Resources */, D0EB42051F3143AB00838FE6 /* LegacyComponentsResources.bundle in Resources */, D0E9BAA21F056F4C00F079A4 /* stp_card_discover@3x.png in Resources */, D0E9BAB01F056F4C00F079A4 /* stp_card_mastercard@3x.png in Resources */, 09310D32213ED5FC0020033A /* anim_ungroup.json in Resources */, 09E2D9EF226F1AFA00EA0AA4 /* Emoji.mapping in Resources */, D0955FB521912B6000F89427 /* PresentationStrings.mapping in Resources */, + 0947350F2275D72100EA2312 /* anim_unread.json in Resources */, D0E9BAA31F056F4C00F079A4 /* stp_card_discover_template@2x.png in Resources */, D0E9BAB51F056F4C00F079A4 /* stp_card_visa@2x.png in Resources */, D0E9BA941F056F4C00F079A4 /* stp_card_amex_template@3x.png in Resources */, D0E9BA961F056F4C00F079A4 /* stp_card_applepay@3x.png in Resources */, D0F9720F1FFE4BD5002595C8 /* notification.caf in Resources */, 09310D33213ED5FC0020033A /* anim_group.json in Resources */, + 094735162275D72100EA2312 /* anim_unmute.json in Resources */, + 094735102275D72100EA2312 /* anim_read.json in Resources */, D0E9BA9A1F056F4C00F079A4 /* stp_card_cvc@3x.png in Resources */, D0E9BA921F056F4C00F079A4 /* stp_card_amex@3x.png in Resources */, D0E9BA9F1F056F4C00F079A4 /* stp_card_diners_template@2x.png in Resources */, @@ -5255,30 +5262,25 @@ D0E9BAB71F056F4C00F079A4 /* stp_card_visa_template@2x.png in Resources */, D0E9BA951F056F4C00F079A4 /* stp_card_applepay@2x.png in Resources */, D0E9BAA01F056F4C00F079A4 /* stp_card_diners_template@3x.png in Resources */, + 094735132275D72100EA2312 /* anim_delete.json in Resources */, + 094735142275D72100EA2312 /* anim_unarchive.json in Resources */, D0E9BAAA1F056F4C00F079A4 /* stp_card_form_front@3x.png in Resources */, D0E9BA971F056F4C00F079A4 /* stp_card_applepay_template@2x.png in Resources */, D0E9BAB41F056F4C00F079A4 /* stp_card_placeholder_template@3x.png in Resources */, - 09E2DA0B22720C4400EA0AA4 /* unpin.json in Resources */, D0E9BAA71F056F4C00F079A4 /* stp_card_form_back@2x.png in Resources */, D0E9BAB11F056F4C00F079A4 /* stp_card_mastercard_template@2x.png in Resources */, - 09E2DA0522720C4400EA0AA4 /* delete.json in Resources */, - 09E2DA0C22720C4400EA0AA4 /* unread.json in Resources */, - 09E2DA0622720C4400EA0AA4 /* mute.json in Resources */, D0E9BA9D1F056F4C00F079A4 /* stp_card_diners@2x.png in Resources */, D0E9BAAF1F056F4C00F079A4 /* stp_card_mastercard@2x.png in Resources */, - 09E2DA0922720C4400EA0AA4 /* unarchive.json in Resources */, D0C12A1D1F33A85600B3F66D /* ChatWallpaperBuiltin0.jpg in Resources */, D0E9BAAC1F056F4C00F079A4 /* stp_card_jcb@3x.png in Resources */, D0E9BA911F056F4C00F079A4 /* stp_card_amex@2x.png in Resources */, - 09E2DA0A22720C4400EA0AA4 /* unmute.json in Resources */, D0E9BA931F056F4C00F079A4 /* stp_card_amex_template@2x.png in Resources */, D0E9BAA91F056F4C00F079A4 /* stp_card_form_front@2x.png in Resources */, - 09E2DA0722720C4400EA0AA4 /* pin.json in Resources */, D0E9BAA41F056F4C00F079A4 /* stp_card_discover_template@3x.png in Resources */, D0E9BAA81F056F4C00F079A4 /* stp_card_form_back@3x.png in Resources */, D0E9BAA11F056F4C00F079A4 /* stp_card_discover@2x.png in Resources */, - 09E2DA0F2273258700EA0AA4 /* hide.json in Resources */, D0E9B9EA1F00853C00F079A4 /* PhoneCountries.txt in Resources */, + 094735152275D72100EA2312 /* anim_unpin.json in Resources */, D0E9BAB31F056F4C00F079A4 /* stp_card_placeholder_template@2x.png in Resources */, D0E9BAAE1F056F4C00F079A4 /* stp_card_jcb_template@3x.png in Resources */, D0E9BAAB1F056F4C00F079A4 /* stp_card_jcb@2x.png in Resources */, @@ -5286,6 +5288,7 @@ D0E9BA9C1F056F4C00F079A4 /* stp_card_cvc_amex@3x.png in Resources */, D0E9BA991F056F4C00F079A4 /* stp_card_cvc@2x.png in Resources */, D0471B541EFD8ECA0074D609 /* currencies.json in Resources */, + 0947350E2275D72100EA2312 /* anim_hide.json in Resources */, D0E9BAB21F056F4C00F079A4 /* stp_card_mastercard_template@3x.png in Resources */, D0E9BA981F056F4C00F079A4 /* stp_card_applepay_template@3x.png in Resources */, D0E9BAA51F056F4C00F079A4 /* stp_card_form_applepay@2x.png in Resources */, @@ -5978,6 +5981,7 @@ D00701A22029F6D0006B9E34 /* TGMimeTypeMap.m in Sources */, D0BE30412061B80100FBE6D8 /* SecureIdAuthController.swift in Sources */, D0EC6DD31EB9F58900EBF1C3 /* MentionChatInputPanelItem.swift in Sources */, + 094735032275B62B00EA2312 /* PasscodeLayout.swift in Sources */, D0EC6DD41EB9F58900EBF1C3 /* CommandChatInputContextPanelNode.swift in Sources */, D0EC6DD51EB9F58900EBF1C3 /* CommandChatInputPanelItem.swift in Sources */, D0EC6DD61EB9F58900EBF1C3 /* VerticalListContextResultsChatInputContextPanelNode.swift in Sources */, diff --git a/TelegramUI/AnimationNode.swift b/TelegramUI/AnimationNode.swift index 34ea01f048..8f6b5884ca 100644 --- a/TelegramUI/AnimationNode.swift +++ b/TelegramUI/AnimationNode.swift @@ -12,6 +12,8 @@ final class AnimationNode : ASDisplayNode { } } + private var colorCallbacks: [LOTColorValueCallback] = [] + var played = false var completion: (() -> Void)? @@ -27,7 +29,10 @@ final class AnimationNode : ASDisplayNode { view.backgroundColor = .clear view.isOpaque = false + view.logHierarchyKeypaths() + let colorCallback = LOTColorValueCallback(color: color.cgColor) + self.colorCallbacks.append(colorCallback) if let keysToColor = keysToColor { for key in keysToColor { view.setValueDelegate(colorCallback, for: LOTKeypath(string: "\(key).Color")) diff --git a/TelegramUI/ChatController.swift b/TelegramUI/ChatController.swift index c8f5241ab3..54e45276ef 100644 --- a/TelegramUI/ChatController.swift +++ b/TelegramUI/ChatController.swift @@ -4207,7 +4207,7 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal let controller = legacyAttachmentMenu(context: strongSelf.context, peer: peer, editMediaOptions: editMediaOptions, saveEditedPhotos: settings.storeEditedPhotos, allowGrouping: true, theme: strongSelf.presentationData.theme, strings: strongSelf.presentationData.strings, parentController: legacyController, recentlyUsedInlineBots: strongSelf.recentlyUsedInlineBotsValue, initialCaption: inputText.string, openGallery: { self?.presentMediaPicker(fileMode: false, editingMedia: editMediaOptions != nil, completion: { signals in if !inputText.string.isEmpty { - strongSelf.clearInputText() + //strongSelf.clearInputText() } if editMediaOptions != nil { self?.editMessageMediaWithLegacySignals(signals) @@ -4225,7 +4225,7 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal strongSelf.enqueueMediaMessages(signals: signals) } if !inputText.string.isEmpty { - strongSelf.clearInputText() + //strongSelf.clearInputText() } } }, recognizedQRCode: { [weak self] code in @@ -4246,7 +4246,7 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal self?.presentPollCreation() }, sendMessagesWithSignals: { [weak self] signals in if !inputText.string.isEmpty { - strongSelf.clearInputText() + //strongSelf.clearInputText() } if editMediaOptions != nil { self?.editMessageMediaWithLegacySignals(signals!) @@ -4399,7 +4399,7 @@ public final class ChatController: TelegramController, KeyShortcutResponder, Gal controller.completionBlock = { [weak legacyController, weak self] signals in if let strongSelf = self { if !inputText.string.isEmpty { - strongSelf.clearInputText() + //strongSelf.clearInputText() } } diff --git a/TelegramUI/ChatListItem.swift b/TelegramUI/ChatListItem.swift index 60ced915a0..9192a4e187 100644 --- a/TelegramUI/ChatListItem.swift +++ b/TelegramUI/ChatListItem.swift @@ -151,19 +151,19 @@ private let textFont = Font.regular(15.0) private let dateFont = Font.regular(14.0) private let badgeFont = Font.regular(14.0) -private let pinIcon = ItemListRevealOptionIcon.animation(animation: "pin", offset: 0.0, keysToColor: nil, flip: false) -private let unpinIcon = ItemListRevealOptionIcon.animation(animation: "unpin", offset: 0.0, keysToColor: ["close.close.Stroke 2"], flip: false) -private let muteIcon = ItemListRevealOptionIcon.animation(animation: "mute", offset: 0.0, keysToColor: ["close.close.Stroke 2"], flip: false) -private let unmuteIcon = ItemListRevealOptionIcon.animation(animation: "unmute", offset: 0.0, keysToColor: ["close.close.Stroke 2"], flip: false) -private let deleteIcon = ItemListRevealOptionIcon.animation(animation: "delete", offset: 0.0, keysToColor: ["BinTex1.BinTex1.Fill 1", "BinTex2.BinTex2.Fill 1", "BinTex3.BinTex3.Fill 1"], flip: false) -private let groupIcon = ItemListRevealOptionIcon.animation(animation: "anim_group", offset: 0.0, keysToColor: nil, flip: false) -private let ungroupIcon = ItemListRevealOptionIcon.animation(animation: "anim_ungroup", offset: 0.0, keysToColor: nil, flip: false) -private let readIcon = ItemListRevealOptionIcon.animation(animation: "read", offset: 0.0, keysToColor: ["Oval.Oval.Stroke 1"], flip: false) -private let unreadIcon = ItemListRevealOptionIcon.animation(animation: "unread", offset: 0.0, keysToColor: ["Oval.Oval.Stroke 1"], flip: false) -private let archiveIcon = ItemListRevealOptionIcon.animation(animation: "archive", offset: 1.0, keysToColor: ["box2.box2.Fill 1"], flip: false) -private let unarchiveIcon = ItemListRevealOptionIcon.animation(animation: "unarchive", offset: 1.0, keysToColor: ["box2.box2.Fill 1"], flip: false) -private let hideIcon = ItemListRevealOptionIcon.animation(animation: "hide", offset: 0.0, keysToColor: ["Rectangle.Rectangle.Fill 1"], flip: false) -private let unhideIcon = ItemListRevealOptionIcon.animation(animation: "hide", offset: 0.0, keysToColor: ["Rectangle.Rectangle.Fill 1"], flip: true) +private let pinIcon = ItemListRevealOptionIcon.animation(animation: "anim_pin", scale: 0.33333, offset: 0.0, keysToColor: nil, flip: false) +private let unpinIcon = ItemListRevealOptionIcon.animation(animation: "anim_unpin", scale: 0.33333, offset: 0.0, keysToColor: ["un Outlines.Group 1.Stroke 1"], flip: false) +private let muteIcon = ItemListRevealOptionIcon.animation(animation: "anim_mute", scale: 0.33333, offset: 0.0, keysToColor: ["un Outlines.Group 1.Stroke 1"], flip: false) +private let unmuteIcon = ItemListRevealOptionIcon.animation(animation: "anim_unmute", scale: 0.33333, offset: 0.0, keysToColor: nil, flip: false) +private let deleteIcon = ItemListRevealOptionIcon.animation(animation: "anim_delete", scale: 0.33333, offset: 0.0, keysToColor: nil, flip: false) +private let groupIcon = ItemListRevealOptionIcon.animation(animation: "anim_group", scale: 0.33333, offset: 0.0, keysToColor: nil, flip: false) +private let ungroupIcon = ItemListRevealOptionIcon.animation(animation: "anim_ungroup", scale: 0.33333, offset: 0.0, keysToColor: nil, flip: false) +private let readIcon = ItemListRevealOptionIcon.animation(animation: "anim_read", scale: 0.33333, offset: 0.0, keysToColor: nil, flip: false) +private let unreadIcon = ItemListRevealOptionIcon.animation(animation: "anim_unread", scale: 0.33333, offset: 0.0, keysToColor: ["Oval.Oval.Stroke 1"], flip: false) +private let archiveIcon = ItemListRevealOptionIcon.animation(animation: "anim_archive", scale: 0.33333, offset: 2.0, keysToColor: ["box2.box2.Fill 1"], flip: false) +private let unarchiveIcon = ItemListRevealOptionIcon.animation(animation: "anim_unarchive", scale: 0.16214, offset: -9.0, keysToColor: ["box2.box2.Fill 1"], flip: false) +private let hideIcon = ItemListRevealOptionIcon.animation(animation: "anim_hide", scale: 0.33333, offset: 0.0, keysToColor: ["Path 2.Path 2.Fill 1"], flip: false) +private let unhideIcon = ItemListRevealOptionIcon.animation(animation: "anim_hide", scale: 0.33333, offset: 0.0, keysToColor: ["Path 2.Path 2.Fill 1"], flip: true) private enum RevealOptionKey: Int32 { case pin diff --git a/TelegramUI/ChatMessageStickerItemNode.swift b/TelegramUI/ChatMessageStickerItemNode.swift index 96a91eb192..4825f21598 100644 --- a/TelegramUI/ChatMessageStickerItemNode.swift +++ b/TelegramUI/ChatMessageStickerItemNode.swift @@ -137,7 +137,6 @@ class ChatMessageStickerItemNode: ChatMessageItemView { var textLayoutAndApply: (TextNodeLayout, () -> TextNode)? var isEmoji = false if !item.message.text.isEmpty && item.message.text.containsOnlyEmoji && item.presentationData.largeEmoji { - //imageSize = CGSize(width: CGFloat(item.message.text.emojis) * 52.0 + CGFloat(item.message.text.emojis - 1) * 12.0) let attributedText = NSAttributedString(string: item.message.text, font: item.presentationData.messageEmojiFont1, textColor: .black) textLayoutAndApply = textLayout(TextNodeLayoutArguments(attributedString: attributedText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: 180.0, height: 90.0), alignment: .natural)) @@ -372,6 +371,19 @@ class ChatMessageStickerItemNode: ChatMessageItemView { transition.updateFrame(node: strongSelf.imageNode, frame: updatedImageFrame) imageApply() + dateAndStatusApply(false) + + var dateOffset = CGPoint(x: dateAndStatusSize.width + 4.0, y: dateAndStatusSize.height + 16.0) + if isEmoji { + if incoming { + dateOffset.x = 12.0 + } else { + dateOffset.y = 12.0 + } + } + let dateAndStatusFrame = CGRect(origin: CGPoint(x: max(displayLeftInset, updatedImageFrame.maxX - dateOffset.x), y: updatedImageFrame.maxY - dateOffset.y), size: dateAndStatusSize) + transition.updateFrame(node: strongSelf.dateAndStatusNode, frame: dateAndStatusFrame) + if let updatedShareButtonNode = updatedShareButtonNode { if updatedShareButtonNode !== strongSelf.shareButtonNode { if let shareButtonNode = strongSelf.shareButtonNode { @@ -390,19 +402,12 @@ class ChatMessageStickerItemNode: ChatMessageItemView { } if let shareButtonNode = strongSelf.shareButtonNode { - transition.updateFrame(node: shareButtonNode, frame: CGRect(origin: CGPoint(x: updatedImageFrame.maxX + 8.0, y: updatedImageFrame.maxY - 30.0 - 10.0), size: CGSize(width: 29.0, height: 29.0))) - } - - dateAndStatusApply(false) - var dateOffset: CGPoint = CGPoint(x: dateAndStatusSize.width + 4.0, y: dateAndStatusSize.height + 16.0) - if isEmoji { - if incoming { - dateOffset.x = 12.0 - } else { - dateOffset.y = 12.0 + var shareButtonFrame = CGRect(origin: CGPoint(x: updatedImageFrame.maxX + 8.0, y: updatedImageFrame.maxY - 30.0 - 10.0), size: CGSize(width: 29.0, height: 29.0)) + if isEmoji && incoming { + shareButtonFrame.origin.x = dateAndStatusFrame.maxX + 8.0 } + transition.updateFrame(node: shareButtonNode, frame: shareButtonFrame) } - transition.updateFrame(node: strongSelf.dateAndStatusNode, frame: CGRect(origin: CGPoint(x: max(displayLeftInset, updatedImageFrame.maxX - dateOffset.x), y: updatedImageFrame.maxY - dateOffset.y), size: dateAndStatusSize)) if let updatedReplyBackgroundNode = updatedReplyBackgroundNode { if strongSelf.replyBackgroundNode == nil { diff --git a/TelegramUI/DefaultPresentationTheme.swift b/TelegramUI/DefaultPresentationTheme.swift index c7bd65592f..d07aee83d8 100644 --- a/TelegramUI/DefaultPresentationTheme.swift +++ b/TelegramUI/DefaultPresentationTheme.swift @@ -3,7 +3,7 @@ import UIKit private func makeDefaultPresentationTheme(accentColor: UIColor, serviceBackgroundColor: UIColor, day: Bool) -> PresentationTheme { let destructiveColor: UIColor = UIColor(rgb: 0xff3b30) - let constructiveColor: UIColor = UIColor(rgb: 0x00d740) + let constructiveColor: UIColor = UIColor(rgb: 0x2bb443) let secretColor: UIColor = UIColor(rgb: 0x00B12C) let rootStatusBar = PresentationThemeRootNavigationStatusBar( diff --git a/TelegramUI/GalleryController.swift b/TelegramUI/GalleryController.swift index 5f51f91a81..699ef3c5c4 100644 --- a/TelegramUI/GalleryController.swift +++ b/TelegramUI/GalleryController.swift @@ -320,7 +320,7 @@ class GalleryController: ViewController { private let centralItemTitle = Promise() private let centralItemTitleView = Promise() private let centralItemRightBarButtonItem = Promise() - private let centralItemRightBarButtonItems = Promise<[UIBarButtonItem]?>() + private let centralItemRightBarButtonItems = Promise<[UIBarButtonItem]?>(nil) private let centralItemNavigationStyle = Promise() private let centralItemFooterContentNode = Promise() private let centralItemAttributesDisposable = DisposableSet(); @@ -501,12 +501,15 @@ class GalleryController: ViewController { self?.navigationItem.titleView = titleView })) - self.centralItemAttributesDisposable.add(self.centralItemRightBarButtonItem.get().start(next: { [weak self] rightBarButtonItem in - self?.navigationItem.rightBarButtonItem = rightBarButtonItem - })) - - self.centralItemAttributesDisposable.add(self.centralItemRightBarButtonItems.get().start(next: { [weak self] rightBarButtonItems in - self?.navigationItem.rightBarButtonItems = rightBarButtonItems + self.centralItemAttributesDisposable.add(combineLatest(self.centralItemRightBarButtonItem.get(), self.centralItemRightBarButtonItems.get()).start(next: { [weak self] rightBarButtonItem, rightBarButtonItems in + if let rightBarButtonItem = rightBarButtonItem { + self?.navigationItem.rightBarButtonItem = rightBarButtonItem + } else if let rightBarButtonItems = rightBarButtonItems { + self?.navigationItem.rightBarButtonItems = rightBarButtonItems + } else { + self?.navigationItem.rightBarButtonItem = nil + self?.navigationItem.rightBarButtonItems = nil + } })) self.centralItemAttributesDisposable.add(self.centralItemFooterContentNode.get().start(next: { [weak self] footerContentNode in diff --git a/TelegramUI/ItemListRevealOptionsNode.swift b/TelegramUI/ItemListRevealOptionsNode.swift index c291367bcf..17c03e80e5 100644 --- a/TelegramUI/ItemListRevealOptionsNode.swift +++ b/TelegramUI/ItemListRevealOptionsNode.swift @@ -5,7 +5,7 @@ import Display enum ItemListRevealOptionIcon: Equatable { case none case image(image: UIImage) - case animation(animation: String, offset: CGFloat, keysToColor: [String]?, flip: Bool) + case animation(animation: String, scale: CGFloat, offset: CGFloat, keysToColor: [String]?, flip: Bool) public static func ==(lhs: ItemListRevealOptionIcon, rhs: ItemListRevealOptionIcon) -> Bool { switch lhs { @@ -21,8 +21,8 @@ enum ItemListRevealOptionIcon: Equatable { } else { return false } - case let .animation(lhsAnimation, lhsOffset, lhsKeysToColor, lhsFlip): - if case let .animation(rhsAnimation, rhsOffset, rhsKeysToColor, rhsFlip) = rhs, lhsAnimation == rhsAnimation, lhsOffset == rhsOffset, lhsKeysToColor == rhsKeysToColor, lhsFlip == rhsFlip { + case let .animation(lhsAnimation, lhsScale, lhsOffset, lhsKeysToColor, lhsFlip): + if case let .animation(rhsAnimation, rhsScale, rhsOffset, rhsKeysToColor, rhsFlip) = rhs, lhsAnimation == rhsAnimation, lhsScale == rhsScale, lhsOffset == rhsOffset, lhsKeysToColor == rhsKeysToColor, lhsFlip == rhsFlip { return true } else { return false @@ -91,9 +91,9 @@ private final class ItemListRevealOptionNode: ASDisplayNode { self.iconNode = iconNode self.animationNode = nil - case let .animation(animation, offset, keysToColor, flip): + case let .animation(animation, scale, offset, keysToColor, flip): self.iconNode = nil - self.animationNode = AnimationNode(animation: animation, keysToColor: keysToColor, color: color, scale: 0.16214) + self.animationNode = AnimationNode(animation: animation, keysToColor: keysToColor, color: color, scale: scale) if flip { self.animationNode!.transform = CATransform3DMakeScale(1.0, -1.0, 1.0) } @@ -175,7 +175,7 @@ private final class ItemListRevealOptionNode: ASDisplayNode { } if let animationNode = self.animationNode, let imageSize = animationNode.preferredSize() { - let iconOffset: CGFloat = -11.0 + self.animationNodeOffset + let iconOffset: CGFloat = -2.0 + self.animationNodeOffset let titleIconSpacing: CGFloat = 11.0 let iconFrame = CGRect(origin: CGPoint(x: contentRect.minX + floor((baseSize.width - imageSize.width + sideInset) / 2.0), y: contentRect.midY - imageSize.height / 2.0 + iconOffset), size: imageSize) if animateAdditive { diff --git a/TelegramUI/Markdown.swift b/TelegramUI/Markdown.swift index e20d4f3590..ae17cea52e 100644 --- a/TelegramUI/Markdown.swift +++ b/TelegramUI/Markdown.swift @@ -108,6 +108,9 @@ func parseMarkdownIntoAttributedString(_ string: String, attributes: MarkdownAtt remainingRange = NSMakeRange(range.location + 1, remainingRange.length - 1) } } else { + if result.string.hasSuffix("\\") { + result.deleteCharacters(in: NSMakeRange(result.string.count - 1, 1)) + } result.append(NSAttributedString(string: nsString.substring(with: NSMakeRange(remainingRange.location, 1)), attributes: bodyAttributes)) remainingRange = NSMakeRange(range.location + 1, remainingRange.length - 1) } diff --git a/TelegramUI/PasscodeEntryController.swift b/TelegramUI/PasscodeEntryController.swift index 7d615fe682..bd67d8ed30 100644 --- a/TelegramUI/PasscodeEntryController.swift +++ b/TelegramUI/PasscodeEntryController.swift @@ -64,11 +64,7 @@ final public class PasscodeEntryController: ViewController { let passcodeType: PasscodeEntryFieldType switch self.challengeData { case let .numericalPassword(value, _, _): - if value.count == 6 { - passcodeType = .digits6 - } else { - passcodeType = .digits4 - } + passcodeType = value.count == 6 ? .digits6 : .digits4 default: passcodeType = .alphanumeric } @@ -81,6 +77,15 @@ final public class PasscodeEntryController: ViewController { self.displayNode = PasscodeEntryControllerNode(context: self.context, theme: self.presentationData.theme, strings: self.presentationData.strings, wallpaper: self.presentationData.chatWallpaper, passcodeType: passcodeType, biometricsType: biometricsType, statusBar: self.statusBar) self.displayNodeDidLoad() + let _ = (self.context.sharedContext.accountManager.transaction({ transaction -> AccessChallengeAttempts? in + return transaction.getAccessChallengeData().attempts + }) |> deliverOnMainQueue).start(next: { [weak self] attempts in + guard let strongSelf = self else { + return + } + strongSelf.controllerNode.updateInvalidAttempts(attempts) + }) + self.controllerNode.checkPasscode = { [weak self] passcode in guard let strongSelf = self else { return @@ -98,26 +103,47 @@ final public class PasscodeEntryController: ViewController { if succeed { let _ = (strongSelf.context.sharedContext.accountManager.transaction { transaction -> Void in - let data = transaction.getAccessChallengeData().withUpdatedAutolockDeadline(nil) + var data = transaction.getAccessChallengeData().withUpdatedAutolockDeadline(nil) + switch data { + case .none: + break + case let .numericalPassword(value, timeout, _): + data = .numericalPassword(value: value, timeout: timeout, attempts: nil) + case let .plaintextPassword(value, timeout, _): + data = .plaintextPassword(value: value, timeout: timeout, attempts: nil) + } transaction.setAccessChallengeData(data) }).start() } else { -// let _ = strongSelf.context.sharedContext.accountManager.transaction({ transaction -> Void in -// var attempts: AccessChallengeAttempts? -// if let attemptData = attemptData { -// attempts = AccessChallengeAttempts(count: Int32(attemptData.numberOfInvalidAttempts), timestamp: Int32(attemptData.dateOfLastInvalidAttempt)) -// } -// var data = transaction.getAccessChallengeData() -// switch data { -// case .none: -// break -// case let .numericalPassword(value, timeout, _): -// data = .numericalPassword(value: value, timeout: timeout, attempts: attempts) -// case let .plaintextPassword(value, timeout, _): -// data = .plaintextPassword(value: value, timeout: timeout, attempts: attempts) -// } -// transaction.setAccessChallengeData(data) -// }).start() + let _ = (strongSelf.context.sharedContext.accountManager.transaction({ transaction -> AccessChallengeAttempts in + var data = transaction.getAccessChallengeData() + let updatedAttempts: AccessChallengeAttempts + if let attempts = data.attempts { + var count = attempts.count + 1 + if count > 6 { + count = 1 + } + updatedAttempts = AccessChallengeAttempts(count: count, timestamp: Int32(CFAbsoluteTimeGetCurrent())) + } else { + updatedAttempts = AccessChallengeAttempts(count: 1, timestamp: Int32(CFAbsoluteTimeGetCurrent())) + } + switch data { + case .none: + break + case let .numericalPassword(value, timeout, _): + data = .numericalPassword(value: value, timeout: timeout, attempts: updatedAttempts) + case let .plaintextPassword(value, timeout, _): + data = .plaintextPassword(value: value, timeout: timeout, attempts: updatedAttempts) + } + transaction.setAccessChallengeData(data) + + return updatedAttempts + }) + |> deliverOnMainQueue).start(next: { [weak self] attempts in + if let strongSelf = self { + strongSelf.controllerNode.updateInvalidAttempts(attempts, animated: true) + } + }) strongSelf.controllerNode.animateError() } diff --git a/TelegramUI/PasscodeEntryControllerNode.swift b/TelegramUI/PasscodeEntryControllerNode.swift index 287e9d41e0..c7f4e89a53 100644 --- a/TelegramUI/PasscodeEntryControllerNode.swift +++ b/TelegramUI/PasscodeEntryControllerNode.swift @@ -2,9 +2,11 @@ import Foundation import Display import AsyncDisplayKit import SwiftSignalKit +import Postbox import TelegramCore private let titleFont = Font.regular(20.0) +private let subtitleFont = Font.regular(17.0) private let buttonFont = Font.regular(17.0) final class PasscodeEntryControllerNode: ASDisplayNode { @@ -28,6 +30,8 @@ final class PasscodeEntryControllerNode: ASDisplayNode { private let biometricButtonNode: HighlightableButtonNode private let effectView: UIVisualEffectView + private var invalidAttempts: AccessChallengeAttempts? + private let hapticFeedback = HapticFeedback() private var validLayout: ContainerViewLayout? @@ -67,7 +71,14 @@ final class PasscodeEntryControllerNode: ASDisplayNode { self?.inputFieldNode.append(character) } self.inputFieldNode.complete = { [weak self] passcode in - self?.checkPasscode?(passcode) + guard let strongSelf = self else { + return + } + if strongSelf.shouldWaitBeforeNextAttempt() { + strongSelf.animateError() + } else { + strongSelf.checkPasscode?(passcode) + } } self.deleteButtonNode.setTitle(strings.Common_Delete, with: buttonFont, with: .white, for: .normal) @@ -146,6 +157,43 @@ final class PasscodeEntryControllerNode: ASDisplayNode { } } + private func shouldWaitBeforeNextAttempt() -> Bool { + if let attempts = self.invalidAttempts { + let waitInterval: Int32 = 60 + if attempts.count >= 6 { + if Int32(CFAbsoluteTimeGetCurrent()) - attempts.timestamp < waitInterval { + return true + } else { + return false + } + } else { + return false + } + } else { + return false + } + } + + func updateInvalidAttempts(_ attempts: AccessChallengeAttempts?, animated: Bool = false) { + self.invalidAttempts = attempts + if let attempts = attempts { + let text: NSAttributedString + if attempts.count >= 6 { + if self.shouldWaitBeforeNextAttempt() { + text = NSAttributedString(string: self.strings.PasscodeSettings_TryAgainIn1Minute, font: subtitleFont, textColor: .white) + } else { + text = NSAttributedString(string: "") + } + } else { + text = NSAttributedString(string: self.strings.PasscodeSettings_FailedAttempts(attempts.count), font: subtitleFont, textColor: .white) + } + + self.subtitleNode.setAttributedText(text, animation: animated ? .crossFade : .none, completion: {}) + } else { + self.subtitleNode.setAttributedText(NSAttributedString(string: ""), animation: animated ? .crossFade : .none, completion: {}) + } + } + func initialAppearance() { self.titleNode.setAttributedText(NSAttributedString(string: self.strings.Passcode_AppLockedAlert.replacingOccurrences(of: "\n", with: " "), font: titleFont, textColor: .white), animation: .none, completion: { Queue.mainQueue().after(2.0, { @@ -170,17 +218,21 @@ final class PasscodeEntryControllerNode: ASDisplayNode { self.statusBar.layer.removeAnimation(forKey: "opacity") self.statusBar.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.3) + self.subtitleNode.isHidden = true self.inputFieldNode.isHidden = true self.keyboardNode.isHidden = true self.deleteButtonNode.isHidden = true self.biometricButtonNode.isHidden = true self.titleNode.setAttributedText(NSAttributedString(string: self.strings.Passcode_AppLockedAlert.replacingOccurrences(of: "\n", with: " "), font: titleFont, textColor: .white), animation: .slideIn, completion: { + self.subtitleNode.isHidden = false self.inputFieldNode.isHidden = false self.keyboardNode.isHidden = false self.deleteButtonNode.isHidden = false self.biometricButtonNode.isHidden = false + self.subtitleNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.25) + self.inputFieldNode.animateIn() self.keyboardNode.animateIn() var biometricDelay = 0.3 @@ -229,13 +281,18 @@ final class PasscodeEntryControllerNode: ASDisplayNode { let iconSize = CGSize(width: 35.0, height: 37.0) transition.updateFrame(node: self.iconNode, frame: CGRect(origin: CGPoint(x: floor((layout.size.width - iconSize.width) / 2.0) + 6.0, y: layout.insets(options: .statusBar).top + 15.0), size: iconSize)) - let inputFieldFrame = self.inputFieldNode.updateLayout(layout: layout, transition: transition) + let passcodeLayout = PasscodeLayout(layout: layout) + + let inputFieldFrame = self.inputFieldNode.updateLayout(layout: passcodeLayout, transition: transition) transition.updateFrame(node: self.inputFieldNode, frame: CGRect(origin: CGPoint(), size: layout.size)) let titleSize = self.titleNode.updateLayout(layout: layout, transition: transition) - transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 162.0), size: titleSize)) + transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: 0.0, y: passcodeLayout.titleOffset), size: titleSize)) - let (keyboardFrame, keyboardButtonSize) = self.keyboardNode.updateLayout(layout: layout, transition: transition) + let subtitleSize = self.subtitleNode.updateLayout(layout: layout, transition: transition) + transition.updateFrame(node: self.subtitleNode, frame: CGRect(origin: CGPoint(x: 0.0, y: inputFieldFrame.maxY + passcodeLayout.subtitleOffset), size: subtitleSize)) + + let (keyboardFrame, keyboardButtonSize) = self.keyboardNode.updateLayout(layout: passcodeLayout, transition: transition) transition.updateFrame(node: self.keyboardNode, frame: CGRect(origin: CGPoint(), size: layout.size)) switch self.passcodeType { diff --git a/TelegramUI/PasscodeEntryInputFieldNode.swift b/TelegramUI/PasscodeEntryInputFieldNode.swift index aa2c434a72..f4e4724e0b 100644 --- a/TelegramUI/PasscodeEntryInputFieldNode.swift +++ b/TelegramUI/PasscodeEntryInputFieldNode.swift @@ -126,7 +126,7 @@ final class PasscodeEntryInputFieldNode: ASDisplayNode, UITextFieldDelegate { private let borderNode: ASImageNode private let dotNodes: [PasscodeEntryDotNode] - private var validLayout: ContainerViewLayout? + private var validLayout: PasscodeLayout? var complete: ((String) -> Void)? @@ -277,7 +277,7 @@ final class PasscodeEntryInputFieldNode: ASDisplayNode, UITextFieldDelegate { } } - func updateLayout(layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) -> CGRect { + func updateLayout(layout: PasscodeLayout, transition: ContainedViewLayoutTransition) -> CGRect { self.validLayout = layout let fieldAlpha: CGFloat @@ -291,7 +291,7 @@ final class PasscodeEntryInputFieldNode: ASDisplayNode, UITextFieldDelegate { transition.updateAlpha(node: self.textFieldNode, alpha: fieldAlpha) transition.updateAlpha(node: self.borderNode, alpha: fieldAlpha) - let origin = CGPoint(x: floor((layout.size.width - dotDiameter * 6 - dotSpacing * 5) / 2.0), y: 206.0) + let origin = CGPoint(x: floor((layout.layout.size.width - dotDiameter * 6 - dotSpacing * 5) / 2.0), y: layout.inputFieldOffset) for i in 0 ..< self.dotNodes.count { let node = self.dotNodes[i] let dotAlpha: CGFloat @@ -310,7 +310,7 @@ final class PasscodeEntryInputFieldNode: ASDisplayNode, UITextFieldDelegate { } let inset: CGFloat = 50.0 - let fieldFrame = CGRect(x: inset, y: origin.y, width: layout.size.width - inset * 2.0, height: fieldHeight) + let fieldFrame = CGRect(x: inset, y: origin.y, width: layout.layout.size.width - inset * 2.0, height: fieldHeight) transition.updateFrame(node: self.borderNode, frame: fieldFrame) transition.updateFrame(node: self.textFieldNode, frame: fieldFrame.insetBy(dx: 13.0, dy: 0.0)) if let background = self.background { diff --git a/TelegramUI/PasscodeEntryKeyboardNode.swift b/TelegramUI/PasscodeEntryKeyboardNode.swift index 4933a68a09..0d82d1cbf2 100644 --- a/TelegramUI/PasscodeEntryKeyboardNode.swift +++ b/TelegramUI/PasscodeEntryKeyboardNode.swift @@ -238,124 +238,37 @@ final class PasscodeEntryKeyboardNode: ASDisplayNode { } } - func updateLayout(layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) -> (CGRect, CGSize) { - let buttonSize: CGFloat - let horizontalSecond: CGFloat - let horizontalThird: CGFloat - let verticalSecond: CGFloat - let verticalThird: CGFloat - let verticalFourth: CGFloat - let size: CGSize - let offset: CGFloat - - let metrics = DeviceMetrics.forScreenSize(layout.size) - if let metrics = metrics { - switch metrics { - case .iPhone4: - buttonSize = 75.0 - horizontalSecond = 95.0 - horizontalThird = 190.0 - verticalSecond = 88.0 - verticalThird = 176.0 - verticalFourth = 264.0 - size = CGSize(width: 265.0, height: 339.0) - offset = 0.0 - case .iPhone5: - buttonSize = 75.0 - horizontalSecond = 95.0 - horizontalThird = 190.0 - verticalSecond = 88.0 - verticalThird = 176.0 - verticalFourth = 264.0 - size = CGSize(width: 265.0, height: 339.0) - offset = 0.0 - case .iPhone6: - buttonSize = 75.0 - horizontalSecond = 103.0 - horizontalThird = 206.0 - verticalSecond = 90.0 - verticalThird = 180.0 - verticalFourth = 270.0 - size = CGSize(width: 281.0, height: 345.0) - offset = 0.0 - case .iPhone6Plus: - buttonSize = 75.0 - horizontalSecond = 103.0 - horizontalThird = 206.0 - verticalSecond = 90.0 - verticalThird = 180.0 - verticalFourth = 270.0 - size = CGSize(width: 281.0, height: 345.0) - offset = 0.0 - case .iPhoneX: - buttonSize = 75.0 - horizontalSecond = 103.0 - horizontalThird = 206.0 - verticalSecond = 91.0 - verticalThird = 182.0 - verticalFourth = 273.0 - size = CGSize(width: 281.0, height: 348.0) - offset = 294.0 - case .iPhoneXSMax: - buttonSize = 85.0 - horizontalSecond = 115.0 - horizontalThird = 230.0 - verticalSecond = 100.0 - verticalThird = 200.0 - verticalFourth = 300.0 - size = CGSize(width: 315.0, height: 385.0) - offset = 329.0 - case .iPad, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen: - buttonSize = 81.0 - horizontalSecond = 106.0 - horizontalThird = 212.0 - verticalSecond = 101.0 - verticalThird = 202.0 - verticalFourth = 303.0 - size = CGSize(width: 293.0, height: 384.0) - offset = 0.0 - } - } else { - buttonSize = 75.0 - horizontalSecond = 95.0 - horizontalThird = 190.0 - verticalSecond = 88.0 - verticalThird = 176.0 - verticalFourth = 264.0 - size = CGSize(width: 265.0, height: 339.0) - offset = 0.0 - } - - let origin = CGPoint(x: floor((layout.size.width - size.width) / 2.0), y: offset) + func updateLayout(layout: PasscodeLayout, transition: ContainedViewLayoutTransition) -> (CGRect, CGSize) { + let origin = CGPoint(x: floor((layout.layout.size.width - layout.keyboard.size.width) / 2.0), y: layout.keyboard.topOffset) if let subnodes = self.subnodes { for i in 0 ..< subnodes.count { var origin = origin if i % 3 == 0 { origin.x += 0.0 } else if (i % 3 == 1) { - origin.x += horizontalSecond + origin.x += layout.keyboard.horizontalSecond } else { - origin.x += horizontalThird + origin.x += layout.keyboard.horizontalThird } if i / 3 == 0 { origin.y += 0.0 } else if i / 3 == 1 { - origin.y += verticalSecond + origin.y += layout.keyboard.verticalSecond } else if i / 3 == 2 { - origin.y += verticalThird + origin.y += layout.keyboard.verticalThird } else if i / 3 == 3 { - origin.x += horizontalSecond - origin.y += verticalFourth + origin.x += layout.keyboard.horizontalSecond + origin.y += layout.keyboard.verticalFourth } - transition.updateFrame(node: subnodes[i], frame: CGRect(origin: origin, size: CGSize(width: buttonSize, height: buttonSize))) + transition.updateFrame(node: subnodes[i], frame: CGRect(origin: origin, size: CGSize(width: layout.keyboard.buttonSize, height: layout.keyboard.buttonSize))) } } - return (CGRect(origin: origin, size: size), CGSize(width: buttonSize, height: buttonSize)) + return (CGRect(origin: origin, size: layout.keyboard.size), CGSize(width: layout.keyboard.buttonSize, height: layout.keyboard.buttonSize)) } override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { diff --git a/TelegramUI/PasscodeLayout.swift b/TelegramUI/PasscodeLayout.swift new file mode 100644 index 0000000000..00c433f515 --- /dev/null +++ b/TelegramUI/PasscodeLayout.swift @@ -0,0 +1,153 @@ +import Foundation +import Display + +struct PasscodeKeyboardLayout { + let buttonSize: CGFloat + let horizontalSecond: CGFloat + let horizontalThird: CGFloat + let verticalSecond: CGFloat + let verticalThird: CGFloat + let verticalFourth: CGFloat + let size: CGSize + let topOffset: CGFloat + + fileprivate init(metrics: DeviceMetrics?) { + if let metrics = metrics { + switch metrics { + case .iPhone4: + self.buttonSize = 75.0 + self.horizontalSecond = 95.0 + self.horizontalThird = 190.0 + self.verticalSecond = 88.0 + self.verticalThird = 176.0 + self.verticalFourth = 264.0 + self.size = CGSize(width: 265.0, height: 339.0) + self.topOffset = 0.0 + case .iPhone5: + self.buttonSize = 75.0 + self.horizontalSecond = 95.0 + self.horizontalThird = 190.0 + self.verticalSecond = 88.0 + self.verticalThird = 176.0 + self.verticalFourth = 264.0 + self.size = CGSize(width: 265.0, height: 339.0) + self.topOffset = 0.0 + case .iPhone6: + self.buttonSize = 75.0 + self.horizontalSecond = 103.0 + self.horizontalThird = 206.0 + self.verticalSecond = 90.0 + self.verticalThird = 180.0 + self.verticalFourth = 270.0 + self.size = CGSize(width: 281.0, height: 348.0) + self.topOffset = 0.0 + case .iPhone6Plus: + self.buttonSize = 85.0 + self.horizontalSecond = 115.0 + self.horizontalThird = 230.0 + self.verticalSecond = 100.0 + self.verticalThird = 200.0 + self.verticalFourth = 300.0 + self.size = CGSize(width: 315.0, height: 385.0) + self.topOffset = 226.0 + case .iPhoneX: + self.buttonSize = 75.0 + self.horizontalSecond = 103.0 + self.horizontalThird = 206.0 + self.verticalSecond = 91.0 + self.verticalThird = 182.0 + self.verticalFourth = 273.0 + self.size = CGSize(width: 281.0, height: 348.0) + self.topOffset = 294.0 + case .iPhoneXSMax: + self.buttonSize = 85.0 + self.horizontalSecond = 115.0 + self.horizontalThird = 230.0 + self.verticalSecond = 100.0 + self.verticalThird = 200.0 + self.verticalFourth = 300.0 + self.size = CGSize(width: 315.0, height: 385.0) + self.topOffset = 329.0 + case .iPad, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen: + self.buttonSize = 81.0 + self.horizontalSecond = 106.0 + self.horizontalThird = 212.0 + self.verticalSecond = 101.0 + self.verticalThird = 202.0 + self.verticalFourth = 303.0 + self.size = CGSize(width: 293.0, height: 384.0) + self.topOffset = 0.0 + } + } else { + self.buttonSize = 75.0 + self.horizontalSecond = 95.0 + self.horizontalThird = 190.0 + self.verticalSecond = 88.0 + self.verticalThird = 176.0 + self.verticalFourth = 264.0 + self.size = CGSize(width: 265.0, height: 339.0) + self.topOffset = 0.0 + } + } +} + +struct PasscodeLayout { + let layout: ContainerViewLayout + let keyboard: PasscodeKeyboardLayout + let titleOffset: CGFloat + let subtitleOffset: CGFloat + let inputFieldOffset: CGFloat + + init(layout: ContainerViewLayout) { + self.layout = layout + + let metrics = DeviceMetrics.forScreenSize(layout.size) + self.keyboard = PasscodeKeyboardLayout(metrics: metrics) + if let metrics = metrics { + switch metrics { + case .iPhone4: + self.titleOffset = 0.0 + self.subtitleOffset = 0.0 + self.inputFieldOffset = 0.0 + case .iPhone5: + self.titleOffset = 0.0 + self.subtitleOffset = 0.0 + self.inputFieldOffset = 0.0 + case .iPhone6: + self.titleOffset = 0.0 + self.subtitleOffset = 0.0 + self.inputFieldOffset = 0.0 + case .iPhone6Plus: + self.titleOffset = 112.0 + self.subtitleOffset = -6.0 + self.inputFieldOffset = 156.0 + case .iPhoneX: + self.titleOffset = 162.0 + self.subtitleOffset = 0.0 + self.inputFieldOffset = 206.0 + case .iPhoneXSMax: + self.titleOffset = 180.0 + self.subtitleOffset = 0.0 + self.inputFieldOffset = 226.0 + case .iPad, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen: + self.titleOffset = 0.0 + self.subtitleOffset = 0.0 + self.inputFieldOffset = 0.0 + } + } else { + self.titleOffset = 100.0 + self.subtitleOffset = 0.0 + self.inputFieldOffset = 140.0 + } + } + + init(layout: ContainerViewLayout, titleOffset: CGFloat, subtitleOffset: CGFloat, inputFieldOffset: CGFloat) { + self.layout = layout + + let metrics = DeviceMetrics.forScreenSize(layout.size) + self.keyboard = PasscodeKeyboardLayout(metrics: metrics) + self.titleOffset = titleOffset + self.subtitleOffset = subtitleOffset + self.inputFieldOffset = inputFieldOffset + } +} diff --git a/TelegramUI/PasscodeOptionsController.swift b/TelegramUI/PasscodeOptionsController.swift index e528d1f893..92d5ed6687 100644 --- a/TelegramUI/PasscodeOptionsController.swift +++ b/TelegramUI/PasscodeOptionsController.swift @@ -497,72 +497,23 @@ public func passcodeOptionsAccessController(context: AccountContext, animateIn: }) return controller } else { - completion(true) - return nil -// let controller = PasscodeSetupController(context: context, mode: .entry(challenge)) -// return controller - - var attemptData: TGPasscodeEntryAttemptData? - if let attempts = challenge.attempts { - attemptData = TGPasscodeEntryAttemptData(numberOfInvalidAttempts: Int(attempts.count), dateOfLastInvalidAttempt: Double(attempts.timestamp)) - } - var dismissImpl: (() -> Void)? - - let presentationData = context.sharedContext.currentPresentationData.with { $0 } - - let legacyController = LegacyController(presentation: LegacyControllerPresentation.modal(animateIn: true), theme: presentationData.theme) - let mode: TGPasscodeEntryControllerMode - switch challenge { - case .none, .numericalPassword: - mode = TGPasscodeEntryControllerModeVerifySimple - case .plaintextPassword: - mode = TGPasscodeEntryControllerModeVerifyComplex - } - let controller = TGPasscodeEntryController(context: legacyController.context, style: TGPasscodeEntryControllerStyleDefault, mode: mode, cancelEnabled: true, allowTouchId: false, attemptData: attemptData, completion: { value in - if value != nil { - completion(false) - } - dismissImpl?() - })! - controller.checkCurrentPasscode = { value in - if let value = value { - switch challenge { + let controller = PasscodeSetupController(context: context, mode: .entry(challenge)) + controller.check = { passcode in + var succeed = false + switch challenge { case .none: - return true + succeed = true case let .numericalPassword(code, _, _): - return value == code + succeed = passcode == code case let .plaintextPassword(code, _, _): - return value == code - } - } else { - return false + succeed = passcode == code } + if succeed { + completion(true) + } + return succeed } - controller.updateAttemptData = { attemptData in - let _ = context.sharedContext.accountManager.transaction({ transaction -> Void in - var attempts: AccessChallengeAttempts? - if let attemptData = attemptData { - attempts = AccessChallengeAttempts(count: Int32(attemptData.numberOfInvalidAttempts), timestamp: Int32(attemptData.dateOfLastInvalidAttempt)) - } - var data = transaction.getAccessChallengeData() - switch data { - case .none: - break - case let .numericalPassword(value, timeout, _): - data = .numericalPassword(value: value, timeout: timeout, attempts: attempts) - case let .plaintextPassword(value, timeout, _): - data = .plaintextPassword(value: value, timeout: timeout, attempts: attempts) - } - transaction.setAccessChallengeData(data) - }).start() - } - legacyController.bind(controller: controller) - legacyController.supportedOrientations = ViewControllerSupportedOrientations(regularSize: .portrait, compactSize: .portrait) - legacyController.statusBar.statusBarStyle = .White - dismissImpl = { [weak legacyController] in - legacyController?.dismiss() - } - return legacyController + return controller } } } diff --git a/TelegramUI/PasscodeSetupController.swift b/TelegramUI/PasscodeSetupController.swift index 24d9162be1..06f467991c 100644 --- a/TelegramUI/PasscodeSetupController.swift +++ b/TelegramUI/PasscodeSetupController.swift @@ -19,6 +19,7 @@ final class PasscodeSetupController: ViewController { private var mode: PasscodeSetupControllerMode var complete: ((String, Bool) -> Void)? + var check: ((String) -> Bool)? private let hapticFeedback = HapticFeedback() @@ -116,6 +117,9 @@ final class PasscodeSetupController: ViewController { strongSelf.complete?(passcode, numerical) } } + self.controllerNode.checkPasscode = { [weak self] passcode in + return self?.check?(passcode) ?? false + } } override func viewWillAppear(_ animated: Bool) { diff --git a/TelegramUI/PasscodeSetupControllerNode.swift b/TelegramUI/PasscodeSetupControllerNode.swift index 02dcedb1f9..52ad207c4f 100644 --- a/TelegramUI/PasscodeSetupControllerNode.swift +++ b/TelegramUI/PasscodeSetupControllerNode.swift @@ -43,6 +43,7 @@ final class PasscodeSetupControllerNode: ASDisplayNode { } var selectPasscodeMode: (() -> Void)? + var checkPasscode: ((String) -> Bool)? var complete: ((String, Bool) -> Void)? var updateNextAction: ((Bool) -> Void)? @@ -59,11 +60,23 @@ final class PasscodeSetupControllerNode: ASDisplayNode { self.titleNode = ASTextNode() self.titleNode.isUserInteractionEnabled = false self.titleNode.displaysAsynchronously = false - self.titleNode.attributedText = NSAttributedString(string: self.presentationData.strings.EnterPasscode_EnterNewPasscodeNew, font: Font.regular(17.0), textColor: self.presentationData.theme.list.itemPrimaryTextColor) - self.inputFieldNode = PasscodeEntryInputFieldNode(color: self.presentationData.theme.list.itemPrimaryTextColor, fieldType: .digits6, keyboardAppearance: self.presentationData.theme.chatList.searchBarKeyboardColor.keyboardAppearance) + let passcodeType: PasscodeEntryFieldType + switch self.mode { + case let .entry(challenge): + switch challenge { + case let .numericalPassword(value, _, _): + passcodeType = value.count == 6 ? .digits6 : .digits4 + default: + passcodeType = .alphanumeric + } + case .setup: + passcodeType = .digits6 + } + + self.inputFieldNode = PasscodeEntryInputFieldNode(color: self.presentationData.theme.list.itemPrimaryTextColor, fieldType: passcodeType, keyboardAppearance: self.presentationData.theme.chatList.searchBarKeyboardColor.keyboardAppearance) self.inputFieldBackgroundNode = ASImageNode() - self.inputFieldBackgroundNode.alpha = 0.0 + self.inputFieldBackgroundNode.alpha = passcodeType == .alphanumeric ? 1.0 : 0.0 self.inputFieldBackgroundNode.contentMode = .scaleToFill self.inputFieldBackgroundNode.image = generateFieldBackground(backgroundColor: self.presentationData.theme.list.itemBlocksBackgroundColor, borderColor: self.presentationData.theme.list.itemBlocksSeparatorColor) @@ -85,6 +98,16 @@ final class PasscodeSetupControllerNode: ASDisplayNode { self.wrapperNode.addSubnode(self.inputFieldNode) self.wrapperNode.addSubnode(self.modeButtonNode) + let text: String + switch self.mode { + case .entry: + self.modeButtonNode.isHidden = true + text = self.presentationData.strings.EnterPasscode_EnterPasscode + case .setup: + text = self.presentationData.strings.EnterPasscode_EnterNewPasscodeNew + } + self.titleNode.attributedText = NSAttributedString(string: text, font: Font.regular(17.0), textColor: self.presentationData.theme.list.itemPrimaryTextColor) + self.inputFieldNode.complete = { [weak self] passcode in self?.activateNext() } @@ -99,7 +122,8 @@ final class PasscodeSetupControllerNode: ASDisplayNode { self.wrapperNode.frame = CGRect(x: 0.0, y: 0.0, width: layout.size.width, height: layout.size.height) - let inputFieldFrame = self.inputFieldNode.updateLayout(layout: layout, transition: transition) + let passcodeLayout = PasscodeLayout(layout: layout, titleOffset: 0.0, subtitleOffset: 0.0, inputFieldOffset: floor(insets.top + navigationBarHeight + (layout.size.height - navigationBarHeight - insets.top - insets.bottom - 38.0) / 2.0)) + let inputFieldFrame = self.inputFieldNode.updateLayout(layout: passcodeLayout, transition: transition) transition.updateFrame(node: self.inputFieldNode, frame: CGRect(origin: CGPoint(), size: layout.size)) transition.updateFrame(node: self.inputFieldBackgroundNode, frame: CGRect(x: 0.0, y: inputFieldFrame.minY - 6.0, width: layout.size.width, height: 48.0)) @@ -137,38 +161,45 @@ final class PasscodeSetupControllerNode: ASDisplayNode { return } - if let previousPasscode = self.previousPasscode { - if self.currentPasscode == previousPasscode { - var numerical = false - if case let .setup(type) = mode { - if case .alphanumeric = type { + switch self.mode { + case .entry: + if !(self.checkPasscode?(self.currentPasscode) ?? false) { + self.animateError() + } + case .setup: + if let previousPasscode = self.previousPasscode { + if self.currentPasscode == previousPasscode { + var numerical = false + if case let .setup(type) = mode { + if case .alphanumeric = type { + } else { + numerical = true + } + } + self.complete?(self.currentPasscode, numerical) } else { - numerical = true + self.animateError() + } + } else { + self.previousPasscode = self.currentPasscode + + if let snapshotView = self.wrapperNode.view.snapshotContentTree() { + snapshotView.frame = self.wrapperNode.frame + self.wrapperNode.view.superview?.insertSubview(snapshotView, aboveSubview: self.wrapperNode.view) + snapshotView.layer.animatePosition(from: CGPoint(), to: CGPoint(x: -self.wrapperNode.bounds.width, y: 0.0), duration: 0.25, removeOnCompletion: false, additive: true, completion : { [weak snapshotView] _ in + snapshotView?.removeFromSuperview() + }) + self.wrapperNode.layer.animatePosition(from: CGPoint(x: self.wrapperNode.bounds.width, y: 0.0), to: CGPoint(), duration: 0.25, additive: true) + + self.inputFieldNode.reset(animated: false) + self.titleNode.attributedText = NSAttributedString(string: self.presentationData.strings.EnterPasscode_RepeatNewPasscode, font: Font.regular(16.0), textColor: self.presentationData.theme.list.itemPrimaryTextColor) + self.modeButtonNode.isHidden = true + + if let validLayout = self.validLayout { + self.containerLayoutUpdated(validLayout, navigationBarHeight: 0.0, transition: .immediate) + } } } - self.complete?(self.currentPasscode, numerical) - } else { - self.animateError() - } - } else { - self.previousPasscode = self.currentPasscode - - if let snapshotView = self.wrapperNode.view.snapshotContentTree() { - snapshotView.frame = self.wrapperNode.frame - self.wrapperNode.view.superview?.insertSubview(snapshotView, aboveSubview: self.wrapperNode.view) - snapshotView.layer.animatePosition(from: CGPoint(), to: CGPoint(x: -self.wrapperNode.bounds.width, y: 0.0), duration: 0.25, removeOnCompletion: false, additive: true, completion : { [weak snapshotView] _ in - snapshotView?.removeFromSuperview() - }) - self.wrapperNode.layer.animatePosition(from: CGPoint(x: self.wrapperNode.bounds.width, y: 0.0), to: CGPoint(), duration: 0.25, additive: true) - - self.inputFieldNode.reset(animated: false) - self.titleNode.attributedText = NSAttributedString(string: self.presentationData.strings.EnterPasscode_RepeatNewPasscode, font: Font.regular(16.0), textColor: self.presentationData.theme.list.itemPrimaryTextColor) - self.modeButtonNode.isHidden = true - - if let validLayout = self.validLayout { - self.containerLayoutUpdated(validLayout, navigationBarHeight: 0.0, transition: .immediate) - } - } } } diff --git a/TelegramUI/Resources/Animations/anim_archive.json b/TelegramUI/Resources/Animations/anim_archive.json new file mode 100644 index 0000000000..832dacf3a3 --- /dev/null +++ b/TelegramUI/Resources/Animations/anim_archive.json @@ -0,0 +1 @@ +{"v":"5.5.1","fr":60,"ip":0,"op":30,"w":228,"h":228,"nm":"Archiveic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"box3","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[30]},{"t":20,"s":[0]}],"ix":10},"p":{"a":0,"k":[30.5,-39,0],"ix":2},"a":{"a":0,"k":[30.5,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.1,0],[0,0],[0,-1.1],[0,0],[0,0],[0,0]],"o":[[0,0],[1.1,0],[0,0],[0,0],[0,0],[0,-1.1]],"v":[[-11,-3],[11,-3],[13,-1],[13,3],[-13,3],[-13,-1]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"box2","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-13.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[10,3],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":1,"ix":4},"nm":"Rectangle Outline 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.662744998932,0.662744998932,0.678430974483,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"box1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[114,93,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15,"s":[110,110,100]},{"t":20,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[1.1,0],[0,0],[0,1.1]],"o":[[0,0],[0,0],[0,1.1],[0,0],[-1.1,0],[0,0]],"v":[[-12,-9],[12,-9],[12,7],[10,9],[-10,9],[-12,7]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/anim_delete.json b/TelegramUI/Resources/Animations/anim_delete.json new file mode 100644 index 0000000000..23b20fd472 --- /dev/null +++ b/TelegramUI/Resources/Animations/anim_delete.json @@ -0,0 +1 @@ +{"v":"5.1.2","fr":60,"ip":0,"op":3600,"w":228,"h":228,"nm":"delete","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"bin2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[114,94,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.872,-0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_0p872_0p333_0","0p833_0p872_0p333_0","0p833_-0p667_0p333_0"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.426,0.426,0.833]},"n":["0p667_1_0p167_0p426","0p667_1_0p167_0p426","0p667_1_0p167_0p833"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":25}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-3.112,0],[0,0],[-0.269,3.1],[0,0]],"o":[[0,0],[0.269,3.1],[0,0],[3.113,0],[0,0],[0,0]],"v":[[-27,-34.5],[-21.476,29.02],[-15.499,34.5],[15.499,34.5],[21.476,29.02],[27,-34.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,1.057],[-1.884,32.041],[-1.107,0],[0,-1.057],[1.885,-32.041],[1.107,0]],"o":[[0,-0.038],[0.065,-1.105],[1.057,0],[0,0.038],[-0.065,1.105],[-1.058,0]],"v":[[8.586,23.086],[11.413,-25.032],[13.5,-27],[15.414,-25.086],[12.587,23.032],[10.5,25]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,1.105],[0,0],[-1.105,0],[0,-1.105],[0,0],[1.105,0]],"o":[[0,0],[0,-1.105],[1.105,0],[0,0],[0,1.105],[-1.105,0]],"v":[[-2,23],[-2,-25],[0,-27],[2,-25],[2,23],[0,25]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0.065,1.105],[0,0],[-1.057,0],[-0.066,-1.105],[0,0],[1.057,0]],"o":[[0,0],[-0.004,-1.17],[1.107,0],[0,0],[0.004,1.17],[-1.107,0]],"v":[[-12.587,23.032],[-15.411,-24.973],[-13.5,-27],[-11.412,-25.032],[-8.589,22.973],[-10.5,25]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256,256.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":6,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"bin1 Outlines","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[45],"e":[0]},{"t":15}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[270,180,0],"e":[256,211.923,0],"to":[-2.33333325386047,5.32055473327637,0],"ti":[2.33333325386047,-5.32055473327637,0]},{"t":15}],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":0,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":25}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.542,-0.903],[0,0],[0,0],[0,-3.314],[0,0],[3.314,0],[0,0],[0,0],[1.054,0]],"o":[[-1.054,0],[0,0],[0,0],[-3.314,0],[0,0],[0,-3.314],[0,0],[0,0],[-0.542,-0.903],[0,0]],"v":[[-7.301,-6],[-9.874,-4.544],[-12.6,0],[-24,0],[-30,6],[30,6],[24,0],[12.6,0],[9.874,-4.544],[7.301,-6]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256,256],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-130,"op":3600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/anim_hide.json b/TelegramUI/Resources/Animations/anim_hide.json new file mode 100644 index 0000000000..b972f4c361 --- /dev/null +++ b/TelegramUI/Resources/Animations/anim_hide.json @@ -0,0 +1 @@ +{"v":"5.5.1","fr":60,"ip":0,"op":30,"w":228,"h":228,"nm":"Hide","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Path 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[114,79.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15,"s":[110,110,100]},{"t":20,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11,0],[11,0]],"c":false},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.2,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Path 2","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0.57,0],[0.06,-0.56],[0,0],[0,0],[0,0],[-0.56,0],[-0.07,0.56]],"o":[[0,0],[0,0],[0,0],[-0.06,-0.56],[-0.57,0],[0,0],[0,0],[0,0],[0.07,0.56],[0.56,0],[0,0]],"v":[[1.09,-3.5],[12,-3.5],[12,3.5],[1.1,3.5],[0,2.5],[-1.1,3.5],[-12,3.5],[-12,-3.5],[-1.09,-3.5],[0,-2.5],[1.09,-3.5]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741176470588,0.741176470588,0.760784313725,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Path","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[0,-4,0],"to":[0,-0.167,0],"ti":[0,-1.167,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[0,-5,0],"to":[0,1.167,0],"ti":[0,-1.333,0]},{"t":20,"s":[0,3,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.6,0],[0,0.61],[0,0],[0,0],[0.41,0.45],[-0.45,0.41],[0,0],[-0.42,-0.39],[0,0],[0.41,-0.45],[0.45,0.41]],"o":[[0,0],[0,0.61],[-0.61,0],[0,0],[0,0],[-0.44,0.41],[-0.41,-0.45],[0,0],[0.42,-0.39],[0,0],[0.44,0.41],[-0.41,0.45],[0,0]],"v":[[1.103,-8],[1.103,10.5],[0.003,11.6],[-1.097,10.5],[-1.097,-8],[-3.927,-5.4],[-5.477,-5.47],[-5.407,-7.02],[-0.747,-11.31],[0.743,-11.31],[5.413,-7.02],[5.473,-5.47],[3.923,-5.4]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/anim_mute.json b/TelegramUI/Resources/Animations/anim_mute.json new file mode 100644 index 0000000000..a8d3b47c04 --- /dev/null +++ b/TelegramUI/Resources/Animations/anim_mute.json @@ -0,0 +1 @@ +{"v":"5.1.2","fr":60,"ip":0,"op":3600,"w":228,"h":228,"nm":"mute","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"un Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[117.875,88.875,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.863,0.863,-0.19]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_0p863_0p333_0","0p833_0p863_0p333_0","0p833_-0p19_0p333_0"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.365,0.365,0.476]},"n":["0p667_1_0p167_0p365","0p667_1_0p167_0p365","0p667_1_0p167_0p476"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":14,"s":[115,115,100],"e":[100,100,100]},{"t":25}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-34,-34],[-33.992,-34]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-34,-34],[34,34]],"c":false}]},{"t":15}],"ix":2,"x":"var $bm_rt;\n$bm_rt = content('Group 1').content('Path 1').path;"},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":10,"nm":"Stroke 2","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.584313750267,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[256,256],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"mute Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[111,88.781,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.863,0.863,-12.69]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_0p863_0p333_0","0p833_0p863_0p333_0","0p833_-12p69_0p333_0"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.365,0.365,5.476]},"n":["0p667_1_0p167_0p365","0p667_1_0p167_0p365","0p667_1_0p167_5p476"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":14,"s":[115,115,100],"e":[100,100,100]},{"t":25}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.995,-0.904],[0,0],[0.746,0],[0,0],[0,-3.866],[0,0],[-3.866,0],[0,0],[-0.552,-0.503],[0,0],[-2.006,2.207],[0,1.343],[0,0],[2.982,0]],"o":[[0,0],[-0.552,0.502],[0,0],[-3.866,0],[0,0],[0,3.866],[0,0],[0.746,0],[0,0],[2.207,2.007],[0.903,-0.995],[0,0],[0,-2.982],[-1.343,0]],"v":[[16.967,-36.589],[-6.142,-15.581],[-8.16,-14.801],[-19,-14.801],[-26,-7.801],[-26,7.199],[-19,14.199],[-8.16,14.199],[-6.142,14.98],[16.967,35.987],[24.596,35.625],[26,31.992],[26,-32.594],[20.6,-37.994]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256,256.994],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/anim_pin.json b/TelegramUI/Resources/Animations/anim_pin.json new file mode 100644 index 0000000000..adb1491446 --- /dev/null +++ b/TelegramUI/Resources/Animations/anim_pin.json @@ -0,0 +1 @@ +{"v":"5.1.2","fr":60,"ip":0,"op":3600,"w":228,"h":228,"nm":"pinchat","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"pin Outlines","sr":1,"ks":{"o":{"a":0,"k":99,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[113.656,86.516,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.872,-10.015]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_0p872_0p333_0","0p833_0p872_0p333_0","0p833_-10p015_0p333_0"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.426,0.426,5.508]},"n":["0p667_1_0p167_0p426","0p667_1_0p167_0p426","0p667_1_0p167_5p508"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":24}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.682,-2.385],[0,0],[7.227,-5.009],[0.494,-0.402],[0.078,-0.079],[-1.265,-1.266],[0,0],[-0.087,-0.07],[-1.129,1.388],[-0.211,0.297],[2.361,8.281],[0,0],[3.76,3.76],[0,0],[2.035,0]],"o":[[0,0],[-8.176,-2.331],[-0.37,0.258],[-0.086,0.07],[-1.265,1.265],[0,0],[0.079,0.078],[1.388,1.129],[0.312,-0.384],[5.172,-7.273],[0,0],[4.348,-3.067],[0,0],[-1.701,-1.701],[-2.465,0]],"v":[[10.943,-36.491],[-1.24,-19.219],[-25.643,-15.202],[-26.94,-14.213],[-27.187,-13.99],[-27.187,-9.408],[8.801,26.579],[9.049,26.802],[13.607,26.332],[14.391,25.311],[18.607,0.628],[35.879,-11.556],[36.955,-23.925],[23.313,-37.567],[17.514,-40.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40.714,40.1],[-7.985,15.793],[-16.406,7.372]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.714,257.1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/anim_read.json b/TelegramUI/Resources/Animations/anim_read.json new file mode 100644 index 0000000000..de017a73ed --- /dev/null +++ b/TelegramUI/Resources/Animations/anim_read.json @@ -0,0 +1 @@ +{"v":"4.5.6","fr":60,"ip":0,"op":30,"w":228,"h":228,"ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Combined Shape","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[114,89.499,0]},"a":{"a":0,"k":[40,38.499,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":0,"s":[0,0,100],"e":[110,110,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":15,"s":[110,110,100],"e":[100,100,100]},{"t":20}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-3.39,0],[0,19.29],[22.09,0],[0,-19.28],[-9.1,-6.4],[2.59,-3.82],[-1.62,-0.65],[-4.27,2.3],[-1.31,-0.29]],"o":[[22.09,0],[0,-19.28],[-22.09,0],[0,11],[1.17,0.82],[-2.6,3.82],[1,0.4],[6.1,-3.28],[3.14,0.69]],"v":[[40,69.85],[80,34.92],[40,0],[0,34.92],[14.45,61.34],[14.1,70.53],[9.89,76.75],[21.07,75.05],[30.18,68.79]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":30,"st":0,"bm":0,"sr":1}]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/anim_unarchive.json b/TelegramUI/Resources/Animations/anim_unarchive.json new file mode 100644 index 0000000000..8105c51653 --- /dev/null +++ b/TelegramUI/Resources/Animations/anim_unarchive.json @@ -0,0 +1 @@ +{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Unarchive","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"box2","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[0,-9,0],"to":[0,3.833,0],"ti":[0,-3.833,0]},{"t":15,"s":[0,14,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[10,3],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":1,"ix":4},"nm":"Rectangle Outline 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.662745098039,0.662745098039,0.678431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"box1","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,18,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[1.1,0],[0,0],[0,1.1]],"o":[[0,0],[0,0],[0,1.1],[0,0],[-1.1,0],[0,0]],"v":[[-12,-9],[12,-9],[12,7],[10,9],[-10,9],[-12,7]],"c":true}]},{"t":15,"s":[{"i":[[0,0],[0,0],[0,0],[1.1,0],[0,0],[0,1.1]],"o":[[0,0],[0,0],[0,1.1],[0,0],[-1.1,0],[0,0]],"v":[[-12,-5.167],[12,-5.167],[12,7],[10,9],[-10,9],[-12,7]],"c":true}]}],"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Path 2","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.067,"y":1},"o":{"x":0.936,"y":0},"t":0,"s":[0,28.621,0],"to":[0,-13.167,0],"ti":[0,13.167,0]},{"t":15,"s":[0,-50.379,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.1,0.09],[0,0],[-0.2,-0.2],[0,0],[0.19,-0.2],[0.13,0],[0,0],[0,0],[0.28,0],[0,0],[0,0.28],[0,0],[0,0],[0,0.28]],"o":[[0,0],[0.19,-0.2],[0,0],[0.19,0.19],[-0.09,0.09],[0,0],[0,0],[0,0.28],[0,0],[-0.27,0],[0,0],[0,0],[-0.28,0],[0,-0.13]],"v":[[-5.143,0.544],[-0.353,-4.246],[0.357,-4.246],[5.147,0.544],[5.147,1.254],[4.797,1.394],[1.997,1.394],[1.997,3.894],[1.497,4.394],[-1.503,4.394],[-2.003,3.894],[-2.003,1.394],[-4.793,1.394],[-5.293,0.894]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15,"s":[110,110,100]},{"t":20,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/anim_unmute.json b/TelegramUI/Resources/Animations/anim_unmute.json new file mode 100644 index 0000000000..f1059e9a2d --- /dev/null +++ b/TelegramUI/Resources/Animations/anim_unmute.json @@ -0,0 +1 @@ +{"v":"5.1.2","fr":60,"ip":0,"op":3600,"w":228,"h":228,"nm":"unmute","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"vol1 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[120,90,0],"e":[131,90,0],"to":[1.83333337306976,0,0],"ti":[-1.83333337306976,0,0]},{"t":10}],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.872,-11.778]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_0p872_0p333_0","0p833_0p872_0p333_0","0p833_-11p778_0p333_0"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.426,0.426,6.389]},"n":["0p667_1_0p167_0p426","0p667_1_0p167_0p426","0p667_1_0p167_6p389"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":25}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.577,-0.531],[0.016,-0.789],[0,0],[-0.516,-0.561],[0,-5.477],[4.174,-4.561],[0.014,-0.704],[0,0],[-0.631,-0.578],[-1.119,1.223],[0,7.023],[5.163,5.605],[0.809,0]],"o":[[-0.627,0.576],[0,0],[0.015,0.706],[4.17,4.526],[0,5.479],[-0.513,0.56],[0,0],[0.016,0.793],[1.222,1.118],[5.16,-5.636],[0,-7.025],[-0.592,-0.641],[-0.726,0]],"v":[[-5.533,-19.371],[-6.5,-17.224],[-6.5,-17.104],[-5.707,-15.133],[0.5,-0.19],[-5.713,14.81],[-6.5,16.777],[-6.5,16.892],[-5.526,19.048],[-1.287,18.859],[6.5,-0.19],[-1.293,-19.198],[-3.501,-20.165]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[255.5,256.165],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"vol2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[120,90,0],"e":[146,90,0],"to":[4.33333349227905,0,0],"ti":[-4.33333349227905,0,0]},{"t":12}],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.872,-11.778]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_0p872_0p333_0","0p833_0p872_0p333_0","0p833_-11p778_0p333_0"],"t":2,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.426,0.426,6.389]},"n":["0p667_1_0p167_0p426","0p667_1_0p167_0p426","0p667_1_0p167_6p389"],"t":12,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":17,"s":[115,115,100],"e":[100,100,100]},{"t":27}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.56,-0.468],[-1.06,-1.273],[0,-8.078],[6.916,-8.351],[-1.276,-1.057],[-1.057,1.275],[0,9.591],[7.755,9.312],[0.861,0]],"o":[[-1.274,1.06],[6.912,8.299],[0,8.082],[-1.057,1.276],[1.276,1.056],[7.751,-9.362],[0,-9.592],[-0.593,-0.713],[-0.675,0]],"v":[[-7.235,-28.988],[-7.622,-24.763],[2.684,-0.221],[-7.627,24.404],[-7.229,28.628],[-3.005,28.23],[8.684,-0.221],[-3.011,-28.603],[-5.319,-29.684]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[255.316,256.684],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3600,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"vol3 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":4,"s":[120,89.062,0],"e":[162,89.062,0],"to":[7,0,0],"ti":[-7,0,0]},{"t":14}],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.872,-11.778]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_0p872_0p333_0","0p833_0p872_0p333_0","0p833_-11p778_0p333_0"],"t":4,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.426,0.426,6.389]},"n":["0p667_1_0p167_0p426","0p667_1_0p167_0p426","0p667_1_0p167_6p389"],"t":14,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":19,"s":[115,115,100],"e":[100,100,100]},{"t":29}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.563,-0.475],[-1.067,-1.267],[0,-12.342],[9.568,-11.435],[-1.27,-1.063],[-0.665,-0.01],[0,0],[-0.582,0.697],[0,13.826],[10.437,12.396],[0.855,0]],"o":[[-1.268,1.066],[9.564,11.36],[0,12.345],[-1.063,1.271],[0.549,0.459],[0,0],[0.842,-0.013],[10.432,-12.468],[0,-13.827],[-0.593,-0.705],[-0.683,0]],"v":[[-9.25,-39.794],[-9.613,-35.568],[4.682,-0.056],[-9.619,35.575],[-9.243,39.801],[-7.364,40.5],[-7.274,40.5],[-5.017,39.425],[10.682,-0.056],[-5.024,-39.432],[-7.319,-40.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[255.318,256.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"mute Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[100,88.781,0],"e":[85,88.781,0],"to":[-2.5,0,0],"ti":[2.5,0,0]},{"t":10}],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.872,-11.778]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_0p872_0p333_0","0p833_0p872_0p333_0","0p833_-11p778_0p333_0"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.426,0.426,6.389]},"n":["0p667_1_0p167_0p426","0p667_1_0p167_0p426","0p667_1_0p167_6p389"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":25}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.995,-0.904],[0,0],[0.746,0],[0,0],[0,-3.866],[0,0],[-3.866,0],[0,0],[-0.552,-0.503],[0,0],[-2.006,2.207],[0,1.343],[0,0],[2.982,0]],"o":[[0,0],[-0.552,0.502],[0,0],[-3.866,0],[0,0],[0,3.866],[0,0],[0.746,0],[0,0],[2.207,2.007],[0.903,-0.995],[0,0],[0,-2.982],[-1.343,0]],"v":[[16.967,-36.589],[-6.142,-15.581],[-8.16,-14.801],[-19,-14.801],[-26,-7.801],[-26,7.199],[-19,14.199],[-8.16,14.199],[-6.142,14.98],[16.967,35.987],[24.596,35.625],[26,31.992],[26,-32.594],[20.6,-37.994]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256,256.994],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/anim_unpin.json b/TelegramUI/Resources/Animations/anim_unpin.json new file mode 100644 index 0000000000..3a0750f7a8 --- /dev/null +++ b/TelegramUI/Resources/Animations/anim_unpin.json @@ -0,0 +1 @@ +{"v":"5.1.2","fr":60,"ip":0,"op":3600,"w":228,"h":228,"nm":"unpinpinchat","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"un Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[118,84.062,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.872,0.872,-11.778]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_0p872_0p333_0","0p833_0p872_0p333_0","0p833_-11p778_0p333_0"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.426,0.426,6.389]},"n":["0p667_1_0p167_0p426","0p667_1_0p167_0p426","0p667_1_0p167_6p389"],"t":10,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":24}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":5,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-34,-34],[-33.992,-34]],"c":false}],"e":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-34,-34],[34,34]],"c":false}]},{"t":15}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":10,"nm":"Stroke 2","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"st","c":{"a":0,"k":[0.097999999102,0.57599995931,0.980000035903,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":15,"ix":5},"lc":2,"lj":1,"ml":10,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[256,256],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"pin Outlines","sr":1,"ks":{"o":{"a":0,"k":99,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[113.656,86.516,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.859,0.859,-13.056]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p833_0p859_0p333_0","0p833_0p859_0p333_0","0p833_-13p056_0p333_0"],"t":0,"s":[0,0,100],"e":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.341,0.341,5.111]},"n":["0p667_1_0p167_0p341","0p667_1_0p167_0p341","0p667_1_0p167_5p111"],"t":11,"s":[100,100,100],"e":[115,115,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_1_0p333_0"],"t":15,"s":[115,115,100],"e":[100,100,100]},{"t":24}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.682,-2.385],[0,0],[7.227,-5.009],[0.494,-0.402],[0.078,-0.079],[-1.265,-1.266],[0,0],[-0.087,-0.07],[-1.129,1.388],[-0.211,0.297],[2.361,8.281],[0,0],[3.76,3.76],[0,0],[2.035,0]],"o":[[0,0],[-8.176,-2.331],[-0.37,0.258],[-0.086,0.07],[-1.265,1.265],[0,0],[0.079,0.078],[1.388,1.129],[0.312,-0.384],[5.172,-7.273],[0,0],[4.348,-3.067],[0,0],[-1.701,-1.701],[-2.465,0]],"v":[[10.943,-36.491],[-1.24,-19.219],[-25.643,-15.202],[-26.94,-14.213],[-27.187,-13.99],[-27.187,-9.408],[8.801,26.579],[9.049,26.802],[13.607,26.332],[14.391,25.311],[18.607,0.628],[35.879,-11.556],[36.955,-23.925],[23.313,-37.567],[17.514,-40.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-40.714,40.1],[-7.985,15.793],[-16.406,7.372]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.714,257.1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/anim_unread.json b/TelegramUI/Resources/Animations/anim_unread.json new file mode 100644 index 0000000000..b648c6da3f --- /dev/null +++ b/TelegramUI/Resources/Animations/anim_unread.json @@ -0,0 +1 @@ +{"v":"4.5.6","fr":60,"ip":0,"op":30,"w":228,"h":228,"ddd":0,"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Oval","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[144,60,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":10,"s":[0,0,100],"e":[110,110,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":19,"s":[110,110,100],"e":[100,100,100]},{"t":24}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[24,24]},"p":{"a":0,"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"st","c":{"a":0,"k":[0.13,0.58,0.98,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5.333},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":30,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Combined Shape","ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[114,89.499,0]},"a":{"a":0,"k":[40,38.499,0]},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p667_1_0p167_0p167","0p667_1_0p167_0p167","0p667_0p667_0p167_0p167"],"t":0,"s":[0,0,100],"e":[110,110,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,0.667]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0.333]},"n":["0p667_1_0p333_0","0p667_1_0p333_0","0p667_0p667_0p333_0p333"],"t":15,"s":[110,110,100],"e":[100,100,100]},{"t":20}]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-3.39,0],[0,19.29],[22.09,0],[0,-19.28],[-9.1,-6.4],[2.59,-3.82],[-1.62,-0.65],[-4.27,2.3],[-1.31,-0.29]],"o":[[22.09,0],[0,-19.28],[-22.09,0],[0,11],[1.17,0.82],[-2.6,3.82],[1,0.4],[6.1,-3.28],[3.14,0.69]],"v":[[40,69.85],[80,34.92],[40,0],[0,34.92],[14.45,61.34],[14.1,70.53],[9.89,76.75],[21.07,75.05],[30.18,68.79]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":30,"st":0,"bm":0,"sr":1}]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/archive.json b/TelegramUI/Resources/Animations/archive.json deleted file mode 100755 index 2464ee2126..0000000000 --- a/TelegramUI/Resources/Animations/archive.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Archive","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"box3","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22,"s":[-10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[5]},{"t":36,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[0,-65,0],"to":[0,0.932,0],"ti":[0,-2.239,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[0,-85,0],"to":[0,0.817,0],"ti":[0,-1.967,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":16,"s":[0,-60,0],"to":[0,0.838,0],"ti":[0,-0.449,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":22,"s":[0,-75,0],"to":[0,1.429,0],"ti":[0,-2.755,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":28,"s":[0,-60,0],"to":[0,1.416,0],"ti":[0,0.204,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":32,"s":[0,-65,0],"to":[0,-0.33,0],"ti":[0,-0.384,0]},{"t":36,"s":[0,-60,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.086,0.086,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,-0.183]},"t":0,"s":[92,92,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.1,0],[0,0],[0,-1.1],[0,0],[0,0],[0,0]],"o":[[0,0],[1.1,0],[0,0],[0,0],[0,0],[0,-1.1]],"v":[[-11,-3],[11,-3],[13,-1],[13,3],[-13,3],[-13,-1]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"box2","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-9,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.086,0.086,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,15.476]},"t":0,"s":[50,50,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[10,3],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":1,"ix":4},"nm":"Rect Outline 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.662745098039,0.662745098039,0.678431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"box1","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,18,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[1.1,0],[0,0],[0,1.1]],"o":[[0,0],[0,0],[0,1.1],[0,0],[-1.1,0],[0,0]],"v":[[-12,-9],[12,-9],[12,7],[10,9],[-10,9],[-12,7]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.203,0.203,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/delete.json b/TelegramUI/Resources/Animations/delete.json deleted file mode 100755 index 61b73687ea..0000000000 --- a/TelegramUI/Resources/Animations/delete.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Delete","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"BinTex3","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-25.05,15,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.086,0.086,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.02,-0.37],[0,0],[-0.37,0.02],[0.02,0.37],[0,0],[0.37,-0.02]],"o":[[0,0],[0.02,0.36],[0.36,-0.02],[0,0],[-0.02,-0.36],[-0.36,0.02]],"v":[[-1.165,-7.955],[-0.165,8.045],[0.545,8.665],[1.165,7.955],[0.165,-8.045],[-0.545,-8.665]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078014374,0.21960799396,0.141176000237,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"BinTex3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"BinTex2","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[24.93,15,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.086,0.086,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.02,-0.36],[0,0],[-0.36,-0.02],[-0.02,0.36],[0,0],[0.36,0.02]],"o":[[0,0],[-0.02,0.37],[0.37,0.02],[0,0],[0.02,-0.37],[-0.37,-0.02]],"v":[[-0.165,-8.045],[-1.165,7.955],[-0.545,8.665],[0.165,8.045],[1.165,-7.955],[0.545,-8.665]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078014374,0.21960799396,0.141176000237,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"BinTex2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"BinTex1","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,15,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.086,0.086,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.36],[0,-0.01],[-0.36,0],[0,0.36],[0,0],[0.37,0]],"o":[[0,0],[0,0.36],[0.37,0],[0,-0.01],[0,-0.36],[-0.36,0]],"v":[[-0.665,-8.005],[-0.665,8.005],[-0.005,8.665],[0.665,8.005],[0.665,-8.005],[-0.005,-8.665]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078014374,0.21960799396,0.141176000237,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"BinTex1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Bin2","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22,"s":[-10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[5]},{"t":36,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[0,-77,0],"to":[0,-2.5,0],"ti":[0,-0.833,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[0,-92,0],"to":[0,0.833,0],"ti":[0,-0.833,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":16,"s":[0,-72,0],"to":[0,0.833,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":22,"s":[0,-87,0],"to":[0,0,0],"ti":[0,-1.667,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":28,"s":[0,-72,0],"to":[0,1.667,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":32,"s":[0,-77,0],"to":[0,0,0],"ti":[0,-0.833,0]},{"t":36,"s":[0,-72,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.086,0.086,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[92,92,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.55,0],[0,0],[-0.09,0.17],[0,0],[-0.38,0],[0,0],[-0.17,-0.34],[0,0],[-0.19,0],[0,0],[0,-0.55],[0,0]],"o":[[0,0],[0,-0.55],[0,0],[0.19,0],[0,0],[0.17,-0.34],[0,0],[0.38,0],[0,0],[0.09,0.17],[0,0],[0.55,0],[0,0],[0,0]],"v":[[-10,2],[-10,1],[-9,0],[-4.31,0],[-3.86,-0.28],[-3.28,-1.45],[-2.38,-2],[2.38,-2],[3.28,-1.45],[3.86,-0.28],[4.31,0],[9,0],[10,1],[10,2]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bin2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Bin1","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,15,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[1.03,0],[0,0],[0.09,1.04]],"o":[[0,0],[0,0],[-0.09,1.04],[0,0],[-1.03,0],[0,0]],"v":[[-9,-11.5],[9,-11.5],[7.16,9.67],[5.17,11.5],[-5.17,11.5],[-7.16,9.67]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bin1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.203,0.203,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/hide.json b/TelegramUI/Resources/Animations/hide.json deleted file mode 100644 index a13b568fa5..0000000000 --- a/TelegramUI/Resources/Animations/hide.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Hide","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Path 22","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-12,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-10,0],[10,0]],"c":false},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path 22","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Rectangle","parent":4,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-12,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.28,0],[0,0],[0,0.28],[0,0],[0,0],[0,0],[0.28,0],[0,0],[0,-0.28],[0,0]],"o":[[0,0],[0,0.28],[0,0],[0.28,0],[0,0],[0,0],[0,0],[0,-0.28],[0,0],[-0.28,0],[0,0],[0,0]],"v":[[-7,-3],[-2,-3],[-1.5,-2.5],[1.5,-2.5],[2,-3],[7,-3],[7,3],[2,3],[1.5,2.5],[-1.5,2.5],[-2,3],[-7,3]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.847000002861,0.847000002861,0.847000002861,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Path 19","parent":4,"tt":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.551,"y":0},"t":5,"s":[0,85.639,0],"to":[0,-15.667,0],"ti":[0,15.667,0]},{"t":35,"s":[0,-8.361,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,-100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.27,0],[0,0],[0,-0.28],[0,0],[0,0],[-0.09,-0.1],[0.19,-0.19],[0,0],[0.19,0.19],[0,0],[0,0.13],[-0.28,0],[0,0]],"o":[[0,-0.28],[0,0],[0.28,0],[0,0],[0,0],[0.13,0],[0.19,0.19],[0,0],[-0.2,0.19],[0,0],[-0.1,-0.09],[0,-0.28],[0,0],[0,0]],"v":[[-2.003,-10.896],[-1.503,-11.396],[1.497,-11.396],[1.997,-10.896],[1.997,5.604],[4.797,5.604],[5.147,5.754],[5.147,6.454],[0.357,11.254],[-0.353,11.254],[-5.143,6.454],[-5.293,6.104],[-4.793,5.604],[-2.003,5.604]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path 19","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.203,0.203,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/mute.json b/TelegramUI/Resources/Animations/mute.json deleted file mode 100755 index 8f7678a92e..0000000000 --- a/TelegramUI/Resources/Animations/mute.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Mute","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"close","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[147,153,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.5,-12.5],[12.5,12.5]],"c":false},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078014374,0.584313988686,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 2","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"close","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.084],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[0]},{"t":24,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Cut Outlines 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Bell2","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.084],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[-10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":25,"s":[-10]},{"i":{"x":[0.433],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[5]},{"t":36,"s":[0]}],"ix":10},"p":{"a":0,"k":[0,-68.75,0],"ix":2},"a":{"a":0,"k":[0,-62.75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0.07],[-1.1,0],[0,-1.1],[0.01,-0.07],[0,-4.29],[0,0],[-2.58,-2.5],[0,0],[0.23,-0.24],[0.16,0],[0,0],[0,0.33],[-0.11,0.11],[0,2.15],[0,0],[-4.02,0.91]],"o":[[-0.01,-0.07],[0,-1.1],[1.11,0],[0,0.07],[4.02,0.91],[0,0],[0,2.15],[0,0],[0.24,0.23],[-0.11,0.11],[0,0],[-0.33,0],[0,-0.16],[2.58,-2.5],[0,0],[0,-4.29],[0,0]],"v":[[-1.984,-9.78],[-2.004,-10],[-0.004,-12],[1.996,-10],[1.986,-9.78],[8.996,-1],[8.996,4],[12.866,10.97],[12.866,10.97],[12.886,11.82],[12.456,12],[-12.454,12],[-13.054,11.4],[-12.874,10.97],[-9.004,4],[-9.004,-1],[-1.984,-9.78]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Bell1","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[-0.002,86.993,0],"to":[-6.333,0,0],"ti":[-5.833,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[-38.002,86.993,0],"to":[5.833,0,0],"ti":[0.333,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[34.998,86.993,0],"to":[-0.333,0,0],"ti":[-0.5,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":18,"s":[-40.002,86.993,0],"to":[0.5,0,0],"ti":[-4.167,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[37.998,86.993,0],"to":[4.167,0,0],"ti":[6.333,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[-15.002,86.993,0],"to":[-6.333,0,0],"ti":[-2.5,0,0]},{"t":36,"s":[0,86.993,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.086,0.086,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,24.275]},"t":0,"s":[50,50,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.86,0],[-0.45,1.73]],"o":[[0.44,1.73],[1.87,0],[0,0]],"v":[[-3.874,-1.501],[-0.004,1.499],[3.876,-1.501]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.203,0.203,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/pin.json b/TelegramUI/Resources/Animations/pin.json deleted file mode 100755 index f407f9ea9a..0000000000 --- a/TelegramUI/Resources/Animations/pin.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Pin","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"pin","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.9,-0.911,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-5.36,2.422],[-2.42,5.362],[-13.85,13.852]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.49,0.34],[-2.85,-0.81],[0,0],[-1.31,-1.31],[0,0],[1.52,-1.08],[0,0],[1.8,-2.54],[0,0]],"o":[[0,0],[2.52,-1.75],[0,0],[1.08,-1.52],[0,0],[1.32,1.31],[0,0],[0.82,2.89],[-0.33,0.45],[0,0]],"v":[[-10.289,-3.988],[-8.889,-5.158],[-0.369,-6.558],[3.881,-12.588],[8.201,-12.968],[12.961,-8.198],[12.591,-3.878],[6.561,0.372],[5.091,8.992],[3.991,10.282]],"c":true},"ix":2},"nm":"Outline 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":2,"nm":"Combine 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"pin","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.203,0.203,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/read.json b/TelegramUI/Resources/Animations/read.json deleted file mode 100755 index 15e52801cb..0000000000 --- a/TelegramUI/Resources/Animations/read.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Read","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Oval","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[60,-63,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.736,0.736,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,-6.667]},"t":0,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.891,0.891,0.333],"y":[0,0,0]},"t":12,"s":[100,100,100]},{"t":24,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[8,8],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Outline 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.125489994884,0.580392003059,0.980391979218,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Path","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,3,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.98,1.32],[-0.17,1.31],[0,4.1],[-7.73,0],[0,-6.73],[7.73,0],[0.97,0.19]],"o":[[0,0],[0,0],[0.7,-0.95],[-3.57,-2.2],[0,-6.73],[7.73,0],[0,6.73],[-1.03,0],[-2.52,2.92]],"v":[[-10.09,13.5],[-10.42,13.5],[-9.44,12.18],[-8.11,8.61],[-14,-1.32],[0,-13.5],[14,-1.32],[0,10.87],[-3.01,10.58]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.203,0.203,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/unarchive.json b/TelegramUI/Resources/Animations/unarchive.json deleted file mode 100755 index da8955a1af..0000000000 --- a/TelegramUI/Resources/Animations/unarchive.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Unarchive","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"box2","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.072,"y":1},"o":{"x":0.933,"y":0},"t":20,"s":[0,-9,0],"to":[0,3.833,0],"ti":[0,-3.833,0]},{"t":35,"s":[0,14,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.086,0.086,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,15.476]},"t":0,"s":[50,50,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[10,3],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":1,"ix":4},"nm":"Rectangle Outline 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.662745098039,0.662745098039,0.678431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"box1","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,18,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.064,"y":1},"o":{"x":0.936,"y":0},"t":20,"s":[{"i":[[0,0],[0,0],[0,0],[1.1,0],[0,0],[0,1.1]],"o":[[0,0],[0,0],[0,1.1],[0,0],[-1.1,0],[0,0]],"v":[[-12,-9],[12,-9],[12,7],[10,9],[-10,9],[-12,7]],"c":true}]},{"t":35,"s":[{"i":[[0,0],[0,0],[0,0],[1.1,0],[0,0],[0,1.1]],"o":[[0,0],[0,0],[0,1.1],[0,0],[-1.1,0],[0,0]],"v":[[-12,-5.167],[12,-5.167],[12,7],[10,9],[-10,9],[-12,7]],"c":true}]}],"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"box3","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":0},"o":{"x":0.167,"y":0.167},"t":0,"s":[0,-60,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.432,"y":0},"t":12,"s":[0,-60,0],"to":[0,1.117,0],"ti":[0,-1.952,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.69,"y":0},"t":18,"s":[0,-75,0],"to":[0,11.441,0],"ti":[0,-6.549,0]},{"t":26,"s":[0,20,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,7.818]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"t":12,"s":[100,100,100]},{"t":24,"s":[50,50,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.1,0],[0,0],[0,-1.1],[0,0],[0,0],[0,0]],"o":[[0,0],[1.1,0],[0,0],[0,0],[0,0],[0,-1.1]],"v":[[-11,-3],[11,-3],[13,-1],[13,3],[-13,3],[-13,-1]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Path 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.067,"y":1},"o":{"x":0.936,"y":0},"t":20,"s":[144,172.621,0],"to":[0,-13.167,0],"ti":[0,13.167,0]},{"t":35,"s":[144,93.621,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.1,0.09],[0,0],[-0.2,-0.2],[0,0],[0.19,-0.2],[0.13,0],[0,0],[0,0],[0.28,0],[0,0],[0,0.28],[0,0],[0,0],[0,0.28]],"o":[[0,0],[0.19,-0.2],[0,0],[0.19,0.19],[-0.09,0.09],[0,0],[0,0],[0,0.28],[0,0],[-0.27,0],[0,0],[0,0],[-0.28,0],[0,-0.13]],"v":[[-5.143,0.544],[-0.353,-4.246],[0.357,-4.246],[5.147,0.544],[5.147,1.254],[4.797,1.394],[1.997,1.394],[1.997,3.894],[1.497,4.394],[-1.503,4.394],[-2.003,3.894],[-2.003,1.394],[-4.793,1.394],[-5.293,0.894]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.203,0.203,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/unmute.json b/TelegramUI/Resources/Animations/unmute.json deleted file mode 100755 index a09c8874c7..0000000000 --- a/TelegramUI/Resources/Animations/unmute.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Unmute","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"close","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[3,9,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.5,-12.5],[12.5,12.5]],"c":false},"ix":2},"nm":"Контур 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Обводка 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078014374,0.584313988686,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Обводка 2","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Преобразовать"}],"nm":"close","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.083],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"t":18,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Обрезать контуры 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Bell2","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.084],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[-10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[15]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":25,"s":[-10]},{"i":{"x":[0.433],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[5]},{"t":36,"s":[0]}],"ix":10},"p":{"a":0,"k":[0,-68.75,0],"ix":2},"a":{"a":0,"k":[0,-62.75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0.07],[-1.1,0],[0,-1.1],[0.01,-0.07],[0,-4.29],[0,0],[-2.58,-2.5],[0,0],[0.23,-0.24],[0.16,0],[0,0],[0,0.33],[-0.11,0.11],[0,2.15],[0,0],[-4.02,0.91]],"o":[[-0.01,-0.07],[0,-1.1],[1.11,0],[0,0.07],[4.02,0.91],[0,0],[0,2.15],[0,0],[0.24,0.23],[-0.11,0.11],[0,0],[-0.33,0],[0,-0.16],[2.58,-2.5],[0,0],[0,-4.29],[0,0]],"v":[[-1.984,-9.78],[-2.004,-10],[-0.004,-12],[1.996,-10],[1.986,-9.78],[8.996,-1],[8.996,4],[12.866,10.97],[12.866,10.97],[12.886,11.82],[12.456,12],[-12.454,12],[-13.054,11.4],[-12.874,10.97],[-9.004,4],[-9.004,-1],[-1.984,-9.78]],"c":true},"ix":2},"nm":"Контур 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Преобразовать"}],"nm":"Path","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Bell1","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[-0.002,86.993,0],"to":[-6.333,0,0],"ti":[-5.833,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[-38.002,86.993,0],"to":[5.833,0,0],"ti":[0.333,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[34.998,86.993,0],"to":[-0.333,0,0],"ti":[-0.5,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":18,"s":[-40.002,86.993,0],"to":[0.5,0,0],"ti":[-4.167,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[37.998,86.993,0],"to":[4.167,0,0],"ti":[6.333,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":30,"s":[-15.002,86.993,0],"to":[-6.333,0,0],"ti":[-2.5,0,0]},{"t":36,"s":[0,86.993,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.086,0.086,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,24.275]},"t":0,"s":[50,50,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.86,0],[-0.45,1.73]],"o":[[0.44,1.73],[1.87,0],[0,0]],"v":[[-3.874,-1.501],[-0.004,1.499],[3.876,-1.501]],"c":true},"ix":2},"nm":"Контур 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Заливка 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Преобразовать"}],"nm":"Path","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.203,0.203,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/unpin.json b/TelegramUI/Resources/Animations/unpin.json deleted file mode 100755 index 6ff91df4e6..0000000000 --- a/TelegramUI/Resources/Animations/unpin.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Unpin","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"close","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[147,141,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.5,-12.5],[12.5,12.5]],"c":false},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"st","c":{"a":0,"k":[0.239215999842,0.823529005051,0.341176003218,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 2","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"close","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.084],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[0]},{"t":24,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Cut 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"pin","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.9,-0.911,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-5.36,2.422],[-2.42,5.362],[-13.85,13.852]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.49,0.34],[-2.85,-0.81],[0,0],[-1.31,-1.31],[0,0],[1.52,-1.08],[0,0],[1.8,-2.54],[0,0]],"o":[[0,0],[2.52,-1.75],[0,0],[1.08,-1.52],[0,0],[1.32,1.31],[0,0],[0.82,2.89],[-0.33,0.45],[0,0]],"v":[[-10.289,-3.988],[-8.889,-5.158],[-0.369,-6.558],[3.881,-12.588],[8.201,-12.968],[12.961,-8.198],[12.591,-3.878],[6.561,0.372],[5.091,8.992],[3.991,10.282]],"c":true},"ix":2},"nm":"Outline 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":2,"nm":"Combine 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"pin","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.203,0.203,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,4.762]},"t":0,"s":[50,50,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/Resources/Animations/unread.json b/TelegramUI/Resources/Animations/unread.json deleted file mode 100755 index 9880b81731..0000000000 --- a/TelegramUI/Resources/Animations/unread.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.1","fr":60,"ip":0,"op":60,"w":288,"h":288,"nm":"Unread","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Oval","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[204,84,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,18.333]},"t":12,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":20,"s":[110,110,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":27,"s":[95,95,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[8,8],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Outline 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.125489994884,0.580392003059,0.980391979218,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Oval","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Path","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,3,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.98,1.32],[-0.17,1.31],[0,4.1],[-7.73,0],[0,-6.73],[7.73,0],[0.97,0.19]],"o":[[0,0],[0,0],[0.7,-0.95],[-3.57,-2.2],[0,-6.73],[7.73,0],[0,6.73],[-1.03,0],[-2.52,2.92]],"v":[[-10.09,13.5],[-10.42,13.5],[-9.44,12.18],[-8.11,8.61],[-14,-1.32],[0,-13.5],[14,-1.32],[0,10.87],[-3.01,10.58]],"c":true},"ix":2},"nm":"Outline 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[600,600],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Path","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"scale","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[144,144,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.203,0.203,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[50,50,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/TelegramUI/SearchBarPlaceholderNode.swift b/TelegramUI/SearchBarPlaceholderNode.swift index 6e157e2edd..37d8c46f03 100644 --- a/TelegramUI/SearchBarPlaceholderNode.swift +++ b/TelegramUI/SearchBarPlaceholderNode.swift @@ -155,6 +155,12 @@ class SearchBarPlaceholderNode: ASDisplayNode { let outerAlpha = min(0.3, expansionProgress) / 0.3 let cornerRadius = min(strongSelf.fieldStyle.cornerDiameter / 2.0, height / 2.0) + if !transition.isAnimated { + strongSelf.backgroundNode.layer.removeAnimation(forKey: "cornerRadius") + strongSelf.backgroundNode.layer.removeAnimation(forKey: "position") + strongSelf.backgroundNode.layer.removeAnimation(forKey: "bounds") + strongSelf.backgroundNode.layer.removeAnimation(forKey: "opacity") + } transition.updateCornerRadius(node: strongSelf.backgroundNode, cornerRadius: cornerRadius) transition.updateAlpha(node: strongSelf.backgroundNode, alpha: outerAlpha) transition.updateFrame(node: strongSelf.backgroundNode, frame: CGRect(origin: CGPoint(), size: CGSize(width: constrainedSize.width, height: height))) diff --git a/TelegramUI/TelegramController.swift b/TelegramUI/TelegramController.swift index ce0a11e01d..5c1d0764fb 100644 --- a/TelegramUI/TelegramController.swift +++ b/TelegramUI/TelegramController.swift @@ -423,14 +423,20 @@ public class TelegramController: ViewController { mediaAccessoryPanelHidden = size != layout.metrics.widthClass } - if let (item, previousItem, nextItem, _, type, _) = self.playlistStateAndType, !mediaAccessoryPanelHidden { + if let (item, previousItem, nextItem, order, type, _) = self.playlistStateAndType, !mediaAccessoryPanelHidden { let panelHeight = MediaNavigationAccessoryHeaderNode.minimizedHeight let panelFrame = CGRect(origin: CGPoint(x: 0.0, y: navigationHeight.isZero ? -panelHeight : (navigationHeight + additionalHeight + UIScreenPixel)), size: CGSize(width: layout.size.width, height: panelHeight)) if let (mediaAccessoryPanel, mediaType) = self.mediaAccessoryPanel, mediaType == type { transition.updateFrame(layer: mediaAccessoryPanel.layer, frame: panelFrame) mediaAccessoryPanel.updateLayout(size: panelFrame.size, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right, transition: transition) - mediaAccessoryPanel.containerNode.headerNode.playbackItems = (item, previousItem, nextItem) - + switch order { + case .regular: + mediaAccessoryPanel.containerNode.headerNode.playbackItems = (item, previousItem, nextItem) + case .reversed: + mediaAccessoryPanel.containerNode.headerNode.playbackItems = (item, nextItem, previousItem) + case .random: + mediaAccessoryPanel.containerNode.headerNode.playbackItems = (item, nil, nil) + } let delayedStatus = self.context.sharedContext.mediaManager.globalMediaPlayerState |> mapToSignal { value -> Signal<(Account, SharedMediaPlayerItemPlaybackStateOrLoading, MediaManagerPlayerType)?, NoError> in guard let value = value else { @@ -596,7 +602,14 @@ public class TelegramController: ViewController { } self.mediaAccessoryPanel = (mediaAccessoryPanel, type) mediaAccessoryPanel.updateLayout(size: panelFrame.size, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right, transition: .immediate) - mediaAccessoryPanel.containerNode.headerNode.playbackItems = (item, previousItem, nextItem) + switch order { + case .regular: + mediaAccessoryPanel.containerNode.headerNode.playbackItems = (item, previousItem, nextItem) + case .reversed: + mediaAccessoryPanel.containerNode.headerNode.playbackItems = (item, nextItem, previousItem) + case .random: + mediaAccessoryPanel.containerNode.headerNode.playbackItems = (item, nil, nil) + } mediaAccessoryPanel.containerNode.headerNode.playbackStatus = self.context.sharedContext.mediaManager.globalMediaPlayerState |> map { state -> MediaPlayerStatus in if let stateOrLoading = state?.1, case let .state(state) = stateOrLoading {