diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index ad5138b010..1019729980 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -6986,3 +6986,11 @@ Sorry for the inconvenience."; "AuthSessions.View.IP" = "IP Address"; "AuthSessions.View.TerminateSession" = "Terminate Session"; "AuthSessions.View.Logout" = "Log Out"; + +"Settings.ChatThemes" = "Chat Themes"; + +"Themes.Title" = "Chat Themes"; +"Themes.SelectTheme" = "Select Theme"; +"Themes.BuildOwn" = "Build Your Own Theme"; +"Themes.EditCurrentTheme" = "Edit Current Theme"; +"Themes.CreateNewTheme" = "Create a New Theme"; diff --git a/submodules/ItemListPeerActionItem/Sources/ItemListPeerActionItem.swift b/submodules/ItemListPeerActionItem/Sources/ItemListPeerActionItem.swift index de2a3ae3c8..b3ce620fd0 100644 --- a/submodules/ItemListPeerActionItem/Sources/ItemListPeerActionItem.swift +++ b/submodules/ItemListPeerActionItem/Sources/ItemListPeerActionItem.swift @@ -168,7 +168,7 @@ class ItemListPeerActionItemNode: ListViewItemNode { case .generic: verticalInset = 11.0 verticalOffset = 0.0 - leftInset = (item.icon == nil ? 16.0 : 65.0) + params.leftInset + leftInset = (item.icon == nil ? 16.0 : 59.0) + params.leftInset case .peerList: verticalInset = 14.0 verticalOffset = 0.0 diff --git a/submodules/SettingsUI/Sources/NotificationsPeerCategoryController.swift b/submodules/SettingsUI/Sources/NotificationsPeerCategoryController.swift index 2b4e87fdbd..fbcd8b10a1 100644 --- a/submodules/SettingsUI/Sources/NotificationsPeerCategoryController.swift +++ b/submodules/SettingsUI/Sources/NotificationsPeerCategoryController.swift @@ -222,7 +222,7 @@ private enum NotificationsPeerCategoryEntry: ItemListNodeEntry { case let .exceptionsHeader(_, text): return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section) case let .addException(theme, text): - return ItemListPeerActionItem(presentationData: presentationData, icon: PresentationResourcesItemList.plusIconImage(theme), title: text, sectionId: self.section, height: .generic, color: .accent, editing: false, action: { + return ItemListPeerActionItem(presentationData: presentationData, icon: PresentationResourcesItemList.plusIconImage(theme), title: text, sectionId: self.section, height: .peerList, color: .accent, editing: false, action: { arguments.addException() }) case let .exception(_, _, _, dateTimeFormat, nameDisplayOrder, peer, description, _, editing, revealed): diff --git a/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/ItemListRecentSessionItem.swift b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/ItemListRecentSessionItem.swift index 1e3473f102..fe7976ac32 100644 --- a/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/ItemListRecentSessionItem.swift +++ b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/ItemListRecentSessionItem.swift @@ -138,10 +138,10 @@ func iconForSession(_ session: RecentAccountSession) -> (UIImage?, String?) { if platform.contains("android") { return (UIImage(bundleImageName: "Settings/Devices/Android"), "device_android") } - if platform.contains("ios") || platform.contains("macos") { + if platform.contains("ios") || platform.contains("macos") || systemVersion.contains("macos") { return (UIImage(bundleImageName: "Settings/Devices/iOS"), nil) } - if platform.contains("linux") { + if platform.contains("linux") || systemVersion.contains("macos") { return (UIImage(bundleImageName: "Settings/Devices/Linux"), nil) } if platform.contains("windows") || systemVersion.contains("windows") { diff --git a/submodules/SettingsUI/Sources/ThemePickerController.swift b/submodules/SettingsUI/Sources/ThemePickerController.swift index b1c1f71a87..2945b3efd3 100644 --- a/submodules/SettingsUI/Sources/ThemePickerController.swift +++ b/submodules/SettingsUI/Sources/ThemePickerController.swift @@ -285,10 +285,10 @@ private enum ThemePickerControllerEntry: ItemListNodeEntry { private func themePickerControllerEntries(presentationData: PresentationData, presentationThemeSettings: PresentationThemeSettings, themeReference: PresentationThemeReference, availableThemes: [PresentationThemeReference], chatThemes: [PresentationThemeReference], nightMode: Bool, animatedEmojiStickers: [String: [StickerPackItem]]) -> [ThemePickerControllerEntry] { var entries: [ThemePickerControllerEntry] = [] - entries.append(.themesHeader(presentationData.theme, "Select Theme".uppercased())) + entries.append(.themesHeader(presentationData.theme, presentationData.strings.Themes_SelectTheme.uppercased())) entries.append(.themes(presentationData.theme, presentationData.strings, chatThemes, themeReference, nightMode, animatedEmojiStickers)) - entries.append(.customHeader(presentationData.theme, "Build Your Own Theme".uppercased())) + entries.append(.customHeader(presentationData.theme, presentationData.strings.Themes_BuildOwn.uppercased())) entries.append(.chatPreview(presentationData.theme, presentationData.chatWallpaper, presentationData.chatFontSize, presentationData.chatBubbleCorners, presentationData.strings, presentationData.dateTimeFormat, presentationData.nameDisplayOrder, [ChatPreviewMessageItem(outgoing: false, reply: (presentationData.strings.Appearance_PreviewReplyAuthor, presentationData.strings.Appearance_PreviewReplyText), text: presentationData.strings.Appearance_PreviewIncomingText), ChatPreviewMessageItem(outgoing: true, reply: nil, text: presentationData.strings.Appearance_PreviewOutgoingText)])) let generalThemes: [PresentationThemeReference] = availableThemes.filter { reference in @@ -333,8 +333,8 @@ private func themePickerControllerEntries(presentationData: PresentationData, pr entries.append(.accentColor(presentationData.theme, generalThemeReference, themeReference, colorThemes, colorOption)) } - entries.append(.editTheme(presentationData.theme, "Edit Current Theme")) - entries.append(.createTheme(presentationData.theme, "Create a New Theme")) + entries.append(.editTheme(presentationData.theme, presentationData.strings.Themes_EditCurrentTheme)) + entries.append(.createTheme(presentationData.theme, presentationData.strings.Themes_CreateNewTheme)) return entries } @@ -934,7 +934,7 @@ public func themePickerController(context: AccountContext, focusOnItemTag: Theme let nightMode = nightModePreview || presentationData.autoNightModeTriggered - let controllerState = ItemListControllerState(presentationData: ItemListPresentationData(presentationData), title: .text("Chat Themes"), leftNavigationButton: nil, rightNavigationButton: rightNavigationButton, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back)) + let controllerState = ItemListControllerState(presentationData: ItemListPresentationData(presentationData), title: .text(presentationData.strings.Themes_Title), leftNavigationButton: nil, rightNavigationButton: rightNavigationButton, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back)) let listState = ItemListNodeState(presentationData: ItemListPresentationData(presentationData), entries: themePickerControllerEntries(presentationData: presentationData, presentationThemeSettings: settings, themeReference: themeReference, availableThemes: availableThemes, chatThemes: chatThemes, nightMode: nightMode, animatedEmojiStickers: animatedEmojiStickers), style: .blocks, ensureVisibleItemTag: focusOnItemTag, animateChanges: false) return (controllerState, (listState, arguments)) diff --git a/submodules/SettingsUI/Sources/ThemePickerGridItem.swift b/submodules/SettingsUI/Sources/ThemePickerGridItem.swift index 1b1dd27080..8f4ad44db7 100644 --- a/submodules/SettingsUI/Sources/ThemePickerGridItem.swift +++ b/submodules/SettingsUI/Sources/ThemePickerGridItem.swift @@ -413,10 +413,10 @@ class ThemeGridThemeItemNode: ListViewItemNode, ItemListItemNode { let referenceImageSize: CGSize let screenWidth = min(params.width, params.availableHeight) - if screenWidth >= 375.0 { + if screenWidth >= 390.0 { referenceImageSize = CGSize(width: 110.0, height: 150.0) } else { - referenceImageSize = CGSize(width: 91.0, height: 150.0) + referenceImageSize = CGSize(width: 90.0, height: 150.0) } let totalWidth = params.width - params.leftInset - params.rightInset let imageCount = Int((totalWidth - minSpacing) / (referenceImageSize.width + minSpacing)) diff --git a/submodules/SettingsUI/Sources/Themes/ThemeGridControllerNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridControllerNode.swift index fad8b08ef3..47906302d9 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeGridControllerNode.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeGridControllerNode.swift @@ -614,7 +614,7 @@ final class ThemeGridControllerNode: ASDisplayNode { let minSpacing: CGFloat = 8.0 let referenceImageSize: CGSize let screenWidth = min(layout.size.width, layout.size.height) - if screenWidth >= 375.0 { + if screenWidth >= 390.0 { referenceImageSize = CGSize(width: 108.0, height: 230.0) } else { referenceImageSize = CGSize(width: 91.0, height: 161.0) diff --git a/submodules/SettingsUI/Sources/Themes/ThemeGridSearchContentNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridSearchContentNode.swift index f1d1fa9b66..bbdd356531 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeGridSearchContentNode.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeGridSearchContentNode.swift @@ -774,14 +774,14 @@ final class ThemeGridSearchContentNode: SearchDisplayControllerContentNode { let minSpacing: CGFloat = 8.0 let referenceImageSize: CGSize let screenWidth = min(layout.size.width, layout.size.height) - if screenWidth >= 375.0 { + if screenWidth >= 390.0 { referenceImageSize = CGSize(width: 108.0, height: 230.0) } else { referenceImageSize = CGSize(width: 91.0, height: 161.0) } let imageCount = Int((layout.size.width - minSpacing * 2.0) / (referenceImageSize.width + minSpacing)) - let imageSize = referenceImageSize.aspectFilled(CGSize(width: floor((layout.size.width - CGFloat(imageCount + 1) * minSpacing) / CGFloat(imageCount)), height: referenceImageSize.height)) - let spacing = floor((layout.size.width - CGFloat(imageCount) * imageSize.width) / CGFloat(imageCount + 1)) + let imageSize = referenceImageSize.aspectFilled(CGSize(width: floor((layout.size.width - layout.safeInsets.left - layout.safeInsets.right - CGFloat(imageCount + 1) * minSpacing) / CGFloat(imageCount)), height: referenceImageSize.height)) + let spacing = floor((layout.size.width - layout.safeInsets.left - layout.safeInsets.right - CGFloat(imageCount) * imageSize.width) / CGFloat(imageCount + 1)) let topInset = navigationBarHeight transition.updateFrame(node: self.dimNode, frame: CGRect(origin: CGPoint(x: 0.0, y: topInset), size: CGSize(width: layout.size.width, height: layout.size.height - topInset))) diff --git a/submodules/SettingsUI/Sources/Themes/ThemeSettingsController.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsController.swift index e7094eb133..d1a9760e22 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeSettingsController.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeSettingsController.swift @@ -342,42 +342,7 @@ private func themeSettingsControllerEntries(presentationData: PresentationData, entries.append(.chatPreview(presentationData.theme, presentationData.chatWallpaper, presentationData.chatFontSize, presentationData.chatBubbleCorners, presentationData.strings, presentationData.dateTimeFormat, presentationData.nameDisplayOrder, [ChatPreviewMessageItem(outgoing: false, reply: (presentationData.strings.Appearance_PreviewReplyAuthor, presentationData.strings.Appearance_PreviewReplyText), text: presentationData.strings.Appearance_PreviewIncomingText), ChatPreviewMessageItem(outgoing: true, reply: nil, text: presentationData.strings.Appearance_PreviewOutgoingText)])) entries.append(.themes(presentationData.theme, presentationData.strings, chatThemes, themeReference, presentationThemeSettings.automaticThemeSwitchSetting.force, animatedEmojiStickers)) -// let generalThemes: [PresentationThemeReference] = availableThemes.filter { reference in -// if case let .cloud(theme) = reference { -// return theme.theme.settings == nil -// } else { -// return true -// } -// } -// -// let generalThemeReference: PresentationThemeReference -// if case let .cloud(theme) = themeReference, let settings = theme.theme.settings { -// generalThemeReference = .builtin(PresentationBuiltinThemeReference(baseTheme: settings.baseTheme)) -// } else { -// generalThemeReference = themeReference -// } - -// entries.append(.themeItem(presentationData.theme, presentationData.strings, generalThemes, availableThemes, themeReference, presentationThemeSettings.themeSpecificAccentColors, presentationThemeSettings.themeSpecificChatWallpapers, presentationThemeSettings.themeSpecificAccentColors[themeReference.index])) -// -// if case let .builtin(builtinTheme) = generalThemeReference { -// let colorThemes = availableThemes.filter { reference in -// if case let .cloud(theme) = reference, let settings = theme.theme.settings, settings.baseTheme == builtinTheme.baseTheme { -// return true -// } else { -// return false -// } -// } -// -// var colorOption: ThemeSettingsColorOption? -// if case .builtin = themeReference { -// colorOption = presentationThemeSettings.themeSpecificAccentColors[themeReference.index].flatMap { .accentColor($0) } -// } else { -// colorOption = .theme(themeReference) -// } -// -// entries.append(.accentColor(presentationData.theme, generalThemeReference, themeReference, colorThemes, colorOption)) -// } - entries.append(.chatTheme(presentationData.theme, "Chat Themes")) + entries.append(.chatTheme(presentationData.theme, strings.Settings_ChatThemes)) entries.append(.wallpaper(presentationData.theme, strings.Settings_ChatBackground)) entries.append(.autoNight(presentationData.theme, strings.Appearance_NightTheme, presentationThemeSettings.automaticThemeSwitchSetting.force, !presentationData.autoNightModeTriggered || presentationThemeSettings.automaticThemeSwitchSetting.force)) diff --git a/submodules/TelegramPresentationData/Sources/Resources/PresentationResourcesItemList.swift b/submodules/TelegramPresentationData/Sources/Resources/PresentationResourcesItemList.swift index 21c3391e22..9c342181d0 100644 --- a/submodules/TelegramPresentationData/Sources/Resources/PresentationResourcesItemList.swift +++ b/submodules/TelegramPresentationData/Sources/Resources/PresentationResourcesItemList.swift @@ -217,7 +217,7 @@ public struct PresentationResourcesItemList { } public static func resetIcon(_ theme: PresentationTheme) -> UIImage? { - return theme.image(PresentationResourceKey.itemListEditThemeIcon.rawValue, { theme in + return theme.image(PresentationResourceKey.itemListResetIcon.rawValue, { theme in return generateTintedImage(image: UIImage(bundleImageName: "Settings/Reset"), color: theme.list.itemAccentColor) }) }