From 339bc3c47210e118a21046742a3b4b69cdfb1427 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 6 Jun 2019 15:59:34 +0200 Subject: [PATCH] Various UI fixes --- TelegramUI/CallListCallItem.swift | 4 +++- TelegramUI/ChangePhoneNumberController.swift | 1 + .../ChangePhoneNumberControllerNode.swift | 12 +++++++----- .../ChangePhoneNumberIntroController.swift | 2 ++ TelegramUI/ChatTextLinkEditController.swift | 2 +- TelegramUI/CreatePollController.swift | 4 ++-- TelegramUI/ItemListPeerItem.swift | 4 +++- TelegramUI/ItemListRecentSessionItem.swift | 4 +++- TelegramUI/ItemListStickerPackItem.swift | 8 +++++--- TelegramUI/ItemListWebsiteItem.swift | 4 +++- TelegramUI/LocalizationListItem.swift | 4 +++- ...ificationExceptionSettingsController.swift | 5 ----- TelegramUI/ProxySettingsServerItem.swift | 8 +++++--- TelegramUI/SampleBufferPool.swift | 5 ----- .../SoftwareVideoLayerFrameManager.swift | 2 -- TelegramUI/ThemeSettingsController.swift | 16 ++++++++-------- TelegramUI/ThemeSettingsThemeItem.swift | 19 +++++++++++-------- 17 files changed, 57 insertions(+), 47 deletions(-) diff --git a/TelegramUI/CallListCallItem.swift b/TelegramUI/CallListCallItem.swift index 35c1c6ac60..f090c2ab35 100644 --- a/TelegramUI/CallListCallItem.swift +++ b/TelegramUI/CallListCallItem.swift @@ -494,6 +494,7 @@ class CallListCallItemNode: ItemListRevealOptionsItemNode { } if let editableControlSizeAndApply = editableControlSizeAndApply { + let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) if strongSelf.editableControlNode == nil { let editableControlNode = editableControlSizeAndApply.1() editableControlNode.tapped = { @@ -504,11 +505,12 @@ class CallListCallItemNode: ItemListRevealOptionsItemNode { } strongSelf.editableControlNode = editableControlNode strongSelf.addSubnode(editableControlNode) - let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) editableControlNode.frame = editableControlFrame transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) editableControlNode.alpha = 0.0 transition.updateAlpha(node: editableControlNode, alpha: 1.0) + } else { + strongSelf.editableControlNode?.frame = editableControlFrame } } else if let editableControlNode = strongSelf.editableControlNode { var editableControlFrame = editableControlNode.frame diff --git a/TelegramUI/ChangePhoneNumberController.swift b/TelegramUI/ChangePhoneNumberController.swift index add572aa79..c7ba9d64d6 100644 --- a/TelegramUI/ChangePhoneNumberController.swift +++ b/TelegramUI/ChangePhoneNumberController.swift @@ -38,6 +38,7 @@ final class ChangePhoneNumberController: ViewController { super.init(navigationBarPresentationData: NavigationBarPresentationData(presentationData: self.presentationData)) + self.supportedOrientations = ViewControllerSupportedOrientations(regularSize: .all, compactSize: .portrait) self.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBar.style.style self.title = self.presentationData.strings.ChangePhoneNumberNumber_Title diff --git a/TelegramUI/ChangePhoneNumberControllerNode.swift b/TelegramUI/ChangePhoneNumberControllerNode.swift index 54f4274d5c..18729fe0cd 100644 --- a/TelegramUI/ChangePhoneNumberControllerNode.swift +++ b/TelegramUI/ChangePhoneNumberControllerNode.swift @@ -188,19 +188,21 @@ final class ChangePhoneNumberControllerNode: ASDisplayNode { } func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) { - let insets = layout.insets(options: [.statusBar, .input]) + var insets = layout.insets(options: [.statusBar, .input]) + insets.left = layout.safeInsets.left + insets.right = layout.safeInsets.right let countryButtonHeight: CGFloat = 44.0 let inputFieldsHeight: CGFloat = 44.0 - let titleSize = self.titleNode.measure(CGSize(width: layout.size.width - 28.0, height: CGFloat.greatestFiniteMagnitude)) - let noticeSize = self.noticeNode.measure(CGSize(width: layout.size.width - 28.0, height: CGFloat.greatestFiniteMagnitude)) + let titleSize = self.titleNode.measure(CGSize(width: layout.size.width - 28.0 - insets.left - insets .right, height: CGFloat.greatestFiniteMagnitude)) + let noticeSize = self.noticeNode.measure(CGSize(width: layout.size.width - 28.0 - insets.left - insets.right, height: CGFloat.greatestFiniteMagnitude)) let navigationHeight: CGFloat = 97.0 + insets.top + navigationBarHeight let inputHeight = countryButtonHeight + inputFieldsHeight - transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: 15.0, y: navigationHeight - titleSize.height - 8.0), size: titleSize)) + transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: 15.0 + insets.left, y: navigationHeight - titleSize.height - 8.0), size: titleSize)) transition.updateFrame(node: self.countryButton, frame: CGRect(origin: CGPoint(x: 0.0, y: navigationHeight), size: CGSize(width: layout.size.width, height: 44.0 + 6.0))) transition.updateFrame(node: self.phoneBackground, frame: CGRect(origin: CGPoint(x: 0.0, y: navigationHeight + 44.0), size: CGSize(width: layout.size.width, height: 44.0))) @@ -214,7 +216,7 @@ final class ChangePhoneNumberControllerNode: ASDisplayNode { transition.updateFrame(node: self.phoneInputNode.countryCodeField, frame: countryCodeFrame.offsetBy(dx: -phoneInputFrame.minX, dy: -phoneInputFrame.minY)) transition.updateFrame(node: self.phoneInputNode.numberField, frame: numberFrame.offsetBy(dx: -phoneInputFrame.minX, dy: -phoneInputFrame.minY)) - transition.updateFrame(node: self.noticeNode, frame: CGRect(origin: CGPoint(x: 15.0, y: navigationHeight + inputHeight + 8.0), size: noticeSize)) + transition.updateFrame(node: self.noticeNode, frame: CGRect(origin: CGPoint(x: 15.0 + insets.left, y: navigationHeight + inputHeight + 8.0), size: noticeSize)) } func activateInput() { diff --git a/TelegramUI/ChangePhoneNumberIntroController.swift b/TelegramUI/ChangePhoneNumberIntroController.swift index 7ee88444e0..1dbe42e8a0 100644 --- a/TelegramUI/ChangePhoneNumberIntroController.swift +++ b/TelegramUI/ChangePhoneNumberIntroController.swift @@ -89,6 +89,8 @@ final class ChangePhoneNumberIntroController: ViewController { super.init(navigationBarPresentationData: NavigationBarPresentationData(presentationData: self.presentationData)) + self.supportedOrientations = ViewControllerSupportedOrientations(regularSize: .all, compactSize: .portrait) + self.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBar.style.style self.title = phoneNumber diff --git a/TelegramUI/ChatTextLinkEditController.swift b/TelegramUI/ChatTextLinkEditController.swift index 7e0072ea74..4935d7d59b 100644 --- a/TelegramUI/ChatTextLinkEditController.swift +++ b/TelegramUI/ChatTextLinkEditController.swift @@ -350,7 +350,7 @@ private final class ChatTextLinkEditAlertContentNode: AlertContentNode { override func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) -> CGSize { var size = size - size.width = min(size.width , 270.0) + size.width = min(size.width, 270.0) let measureSize = CGSize(width: size.width - 16.0 * 2.0, height: CGFloat.greatestFiniteMagnitude) let hadValidLayout = self.validLayout != nil diff --git a/TelegramUI/CreatePollController.swift b/TelegramUI/CreatePollController.swift index 2d88ea1156..8ecae9d4c6 100644 --- a/TelegramUI/CreatePollController.swift +++ b/TelegramUI/CreatePollController.swift @@ -163,8 +163,8 @@ private struct CreatePollControllerOption: Equatable { private struct CreatePollControllerState: Equatable { var text: String = "" - var options: [CreatePollControllerOption] = [CreatePollControllerOption(text: "", id: 0)] - var nextOptionId: Int = 1 + var options: [CreatePollControllerOption] = [CreatePollControllerOption(text: "", id: 0), CreatePollControllerOption(text: "", id: 1)] + var nextOptionId: Int = 2 var focusOptionId: Int? var optionIdWithRevealControls: Int? } diff --git a/TelegramUI/ItemListPeerItem.swift b/TelegramUI/ItemListPeerItem.swift index ac989107d0..a68196e6cc 100644 --- a/TelegramUI/ItemListPeerItem.swift +++ b/TelegramUI/ItemListPeerItem.swift @@ -555,6 +555,7 @@ class ItemListPeerItemNode: ItemListRevealOptionsItemNode, ItemListItemNode { } if let editableControlSizeAndApply = editableControlSizeAndApply { + let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) if strongSelf.editableControlNode == nil { let editableControlNode = editableControlSizeAndApply.1() editableControlNode.tapped = { @@ -565,11 +566,12 @@ class ItemListPeerItemNode: ItemListRevealOptionsItemNode, ItemListItemNode { } strongSelf.editableControlNode = editableControlNode strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.avatarNode) - let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) editableControlNode.frame = editableControlFrame transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) editableControlNode.alpha = 0.0 transition.updateAlpha(node: editableControlNode, alpha: 1.0) + } else { + strongSelf.editableControlNode?.frame = editableControlFrame } strongSelf.editableControlNode?.isHidden = !item.editing.editable } else if let editableControlNode = strongSelf.editableControlNode { diff --git a/TelegramUI/ItemListRecentSessionItem.swift b/TelegramUI/ItemListRecentSessionItem.swift index c179f1ea9a..98391f7e79 100644 --- a/TelegramUI/ItemListRecentSessionItem.swift +++ b/TelegramUI/ItemListRecentSessionItem.swift @@ -292,6 +292,7 @@ class ItemListRecentSessionItemNode: ItemListRevealOptionsItemNode { } if let editableControlSizeAndApply = editableControlSizeAndApply { + let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) if strongSelf.editableControlNode == nil { let editableControlNode = editableControlSizeAndApply.1() editableControlNode.tapped = { @@ -302,11 +303,12 @@ class ItemListRecentSessionItemNode: ItemListRevealOptionsItemNode { } strongSelf.editableControlNode = editableControlNode strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.titleNode) - let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) editableControlNode.frame = editableControlFrame transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) editableControlNode.alpha = 0.0 transition.updateAlpha(node: editableControlNode, alpha: 1.0) + } else { + strongSelf.editableControlNode?.frame = editableControlFrame } strongSelf.editableControlNode?.isHidden = !item.editable } else if let editableControlNode = strongSelf.editableControlNode { diff --git a/TelegramUI/ItemListStickerPackItem.swift b/TelegramUI/ItemListStickerPackItem.swift index f23ed9e16b..b9f38c0283 100644 --- a/TelegramUI/ItemListStickerPackItem.swift +++ b/TelegramUI/ItemListStickerPackItem.swift @@ -395,6 +395,7 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { } if let editableControlSizeAndApply = editableControlSizeAndApply { + let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) if strongSelf.editableControlNode == nil { let editableControlNode = editableControlSizeAndApply.1() editableControlNode.tapped = { @@ -405,11 +406,12 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { } strongSelf.editableControlNode = editableControlNode strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.imageNode) - let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) editableControlNode.frame = editableControlFrame transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) editableControlNode.alpha = 0.0 transition.updateAlpha(node: editableControlNode, alpha: 1.0) + } else { + strongSelf.editableControlNode?.frame = editableControlFrame } strongSelf.editableControlNode?.isHidden = !item.editing.editable } else if let editableControlNode = strongSelf.editableControlNode { @@ -427,11 +429,11 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { let reorderControlNode = reorderControlSizeAndApply.1(false) strongSelf.reorderControlNode = reorderControlNode strongSelf.addSubnode(reorderControlNode) - let reorderControlFrame = CGRect(origin: CGPoint(x: params.width + revealOffset - params.rightInset - reorderControlSizeAndApply.0.width, y: 0.0), size: reorderControlSizeAndApply.0) - reorderControlNode.frame = reorderControlFrame reorderControlNode.alpha = 0.0 transition.updateAlpha(node: reorderControlNode, alpha: 1.0) } + let reorderControlFrame = CGRect(origin: CGPoint(x: params.width + revealOffset - params.rightInset - reorderControlSizeAndApply.0.width, y: 0.0), size: reorderControlSizeAndApply.0) + strongSelf.reorderControlNode?.frame = reorderControlFrame } else if let reorderControlNode = strongSelf.reorderControlNode { strongSelf.reorderControlNode = nil transition.updateAlpha(node: reorderControlNode, alpha: 0.0, completion: { [weak reorderControlNode] _ in diff --git a/TelegramUI/ItemListWebsiteItem.swift b/TelegramUI/ItemListWebsiteItem.swift index 31c7c8f248..1e1d3a98a2 100644 --- a/TelegramUI/ItemListWebsiteItem.swift +++ b/TelegramUI/ItemListWebsiteItem.swift @@ -289,6 +289,7 @@ class ItemListWebsiteItemNode: ItemListRevealOptionsItemNode { } if let editableControlSizeAndApply = editableControlSizeAndApply { + let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) if strongSelf.editableControlNode == nil { let editableControlNode = editableControlSizeAndApply.1() editableControlNode.tapped = { @@ -299,11 +300,12 @@ class ItemListWebsiteItemNode: ItemListRevealOptionsItemNode { } strongSelf.editableControlNode = editableControlNode strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.titleNode) - let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) editableControlNode.frame = editableControlFrame transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) editableControlNode.alpha = 0.0 transition.updateAlpha(node: editableControlNode, alpha: 1.0) + } else { + strongSelf.editableControlNode?.frame = editableControlFrame } strongSelf.editableControlNode?.isHidden = false } else if let editableControlNode = strongSelf.editableControlNode { diff --git a/TelegramUI/LocalizationListItem.swift b/TelegramUI/LocalizationListItem.swift index 6d1549ce96..93580c74f3 100644 --- a/TelegramUI/LocalizationListItem.swift +++ b/TelegramUI/LocalizationListItem.swift @@ -273,6 +273,7 @@ class LocalizationListItemNode: ItemListRevealOptionsItemNode { transition.updateFrame(node: strongSelf.subtitleNode, frame: CGRect(origin: CGPoint(x: editingOffset + revealOffset + leftInset, y: 31.0), size: subtitleLayout.size)) if let editableControlSizeAndApply = editableControlSizeAndApply { + let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) if strongSelf.editableControlNode == nil { let editableControlNode = editableControlSizeAndApply.1() editableControlNode.tapped = { @@ -283,11 +284,12 @@ class LocalizationListItemNode: ItemListRevealOptionsItemNode { } strongSelf.editableControlNode = editableControlNode strongSelf.addSubnode(editableControlNode) - let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) editableControlNode.frame = editableControlFrame transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) editableControlNode.alpha = 0.0 transition.updateAlpha(node: editableControlNode, alpha: 1.0) + } else { + strongSelf.editableControlNode?.frame = editableControlFrame } strongSelf.editableControlNode?.isHidden = !item.editing.editable } else if let editableControlNode = strongSelf.editableControlNode { diff --git a/TelegramUI/NotificationExceptionSettingsController.swift b/TelegramUI/NotificationExceptionSettingsController.swift index 5c16394275..3adc8cc048 100644 --- a/TelegramUI/NotificationExceptionSettingsController.swift +++ b/TelegramUI/NotificationExceptionSettingsController.swift @@ -231,11 +231,6 @@ private func notificationPeerExceptionEntries(presentationData: PresentationData entries.append(.soundModernHeader(index: index, theme: presentationData.theme, title: presentationData.strings.Notifications_AlertTones)) index += 1 - if state.selectedSound == .default { - var bp:Int = 0 - bp += 1 - } - entries.append(.default(index: index, section: .soundModern, theme: presentationData.theme, text: localizedPeerNotificationSoundString(strings: presentationData.strings, sound: .default, default: state.defaultSound), selected: state.selectedSound == .default)) index += 1 diff --git a/TelegramUI/ProxySettingsServerItem.swift b/TelegramUI/ProxySettingsServerItem.swift index 0fd64463a8..a5d1232561 100644 --- a/TelegramUI/ProxySettingsServerItem.swift +++ b/TelegramUI/ProxySettingsServerItem.swift @@ -302,6 +302,7 @@ class ProxySettingsServerItemNode: ItemListRevealOptionsItemNode { } if let editableControlSizeAndApply = editableControlSizeAndApply { + let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) if strongSelf.editableControlNode == nil { let editableControlNode = editableControlSizeAndApply.1() editableControlNode.tapped = { @@ -312,11 +313,12 @@ class ProxySettingsServerItemNode: ItemListRevealOptionsItemNode { } strongSelf.editableControlNode = editableControlNode strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.titleNode) - let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0) editableControlNode.frame = editableControlFrame transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) editableControlNode.alpha = 0.0 transition.updateAlpha(node: editableControlNode, alpha: 1.0) + } else { + strongSelf.editableControlNode?.frame = editableControlFrame } strongSelf.editableControlNode?.isHidden = !item.editing.editable } else if let editableControlNode = strongSelf.editableControlNode { @@ -334,11 +336,11 @@ class ProxySettingsServerItemNode: ItemListRevealOptionsItemNode { let reorderControlNode = reorderControlSizeAndApply.1(false) strongSelf.reorderControlNode = reorderControlNode strongSelf.addSubnode(reorderControlNode) - let reorderControlFrame = CGRect(origin: CGPoint(x: params.width + revealOffset - params.rightInset - reorderControlSizeAndApply.0.width, y: 0.0), size: reorderControlSizeAndApply.0) - reorderControlNode.frame = reorderControlFrame reorderControlNode.alpha = 0.0 transition.updateAlpha(node: reorderControlNode, alpha: 1.0) } + let reorderControlFrame = CGRect(origin: CGPoint(x: params.width + revealOffset - params.rightInset - reorderControlSizeAndApply.0.width, y: 0.0), size: reorderControlSizeAndApply.0) + strongSelf.reorderControlNode?.frame = reorderControlFrame } else if let reorderControlNode = strongSelf.reorderControlNode { strongSelf.reorderControlNode = nil transition.updateAlpha(node: reorderControlNode, alpha: 0.0, completion: { [weak reorderControlNode] _ in diff --git a/TelegramUI/SampleBufferPool.swift b/TelegramUI/SampleBufferPool.swift index d3822a30e2..d0c40a1e12 100644 --- a/TelegramUI/SampleBufferPool.swift +++ b/TelegramUI/SampleBufferPool.swift @@ -12,11 +12,6 @@ private final class SampleBufferLayerImpl: AVSampleBufferDisplayLayer { override func action(forKey event: String) -> CAAction? { return SampleBufferLayerImplNullAction() } - - deinit { - var bp:Int = 0 - bp += 1 - } } final class SampleBufferLayer { diff --git a/TelegramUI/SoftwareVideoLayerFrameManager.swift b/TelegramUI/SoftwareVideoLayerFrameManager.swift index e6f5f94cb9..68484700a7 100644 --- a/TelegramUI/SoftwareVideoLayerFrameManager.swift +++ b/TelegramUI/SoftwareVideoLayerFrameManager.swift @@ -55,8 +55,6 @@ final class SoftwareVideoLayerFrameManager { func tick(timestamp: Double) { applyQueue.async { - - if self.baseTimestamp == nil && !self.frames.isEmpty { self.baseTimestamp = timestamp } diff --git a/TelegramUI/ThemeSettingsController.swift b/TelegramUI/ThemeSettingsController.swift index 4b5474cd36..785f4ebea3 100644 --- a/TelegramUI/ThemeSettingsController.swift +++ b/TelegramUI/ThemeSettingsController.swift @@ -63,7 +63,7 @@ private enum ThemeSettingsControllerEntry: ItemListNodeEntry { case accentColor(PresentationTheme, String, Int32) case autoNightTheme(PresentationTheme, String, String) case themeListHeader(PresentationTheme, String) - case themeItem(PresentationTheme, PresentationStrings, [PresentationBuiltinThemeReference], PresentationBuiltinThemeReference) + case themeItem(PresentationTheme, PresentationStrings, [PresentationBuiltinThemeReference], PresentationBuiltinThemeReference, UIColor?) case iconHeader(PresentationTheme, String) case iconItem(PresentationTheme, PresentationStrings, [PresentationAppIcon], String?) case otherHeader(PresentationTheme, String) @@ -159,8 +159,8 @@ private enum ThemeSettingsControllerEntry: ItemListNodeEntry { } else { return false } - case let .themeItem(lhsTheme, lhsStrings, lhsThemes, lhsCurrentTheme): - if case let .themeItem(rhsTheme, rhsStrings, rhsThemes, rhsCurrentTheme) = rhs, lhsTheme === rhsTheme, lhsStrings === rhsStrings, lhsThemes == rhsThemes, lhsCurrentTheme == rhsCurrentTheme { + case let .themeItem(lhsTheme, lhsStrings, lhsThemes, lhsCurrentTheme, lhsThemeAccentColor): + if case let .themeItem(rhsTheme, rhsStrings, rhsThemes, rhsCurrentTheme, rhsThemeAccentColor) = rhs, lhsTheme === rhsTheme, lhsStrings === rhsStrings, lhsThemes == rhsThemes, lhsCurrentTheme == rhsCurrentTheme, lhsThemeAccentColor == rhsThemeAccentColor { return true } else { return false @@ -246,8 +246,8 @@ private enum ThemeSettingsControllerEntry: ItemListNodeEntry { }) case let .themeListHeader(theme, text): return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) - case let .themeItem(theme, strings, themes, currentTheme): - return ThemeSettingsThemeItem(theme: theme, strings: strings, sectionId: self.section, themes: themes.map { ($0, .white) }, currentTheme: currentTheme, updated: { theme in + case let .themeItem(theme, strings, themes, currentTheme, themeAccentColor): + return ThemeSettingsThemeItem(theme: theme, strings: strings, sectionId: self.section, themes: themes.map { ($0, $0 == .day ? themeAccentColor : nil) }, currentTheme: currentTheme, updated: { theme in arguments.selectTheme(theme.rawValue) }) case let .iconHeader(theme, text): @@ -283,7 +283,7 @@ private func themeSettingsControllerEntries(presentationData: PresentationData, entries.append(.themeListHeader(presentationData.theme, strings.Appearance_ColorTheme.uppercased())) if case let .builtin(theme) = theme.name { - entries.append(.themeItem(presentationData.theme, presentationData.strings, [.dayClassic, .day, .nightAccent, .nightGrayscale], theme.reference)) + entries.append(.themeItem(presentationData.theme, presentationData.strings, [.dayClassic, .day, .nightAccent, .nightGrayscale], theme.reference, themeAccentColor != nil ? UIColor(rgb: UInt32(bitPattern: themeAccentColor!)) : nil)) } if theme.name == .builtin(.day) { @@ -354,9 +354,9 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The } else { switch index { case 1: - wallpaper = .color(0xffffff) - case 2: wallpaper = .color(0x000000) + case 2: + wallpaper = .color(0xffffff) case 3: wallpaper = .color(0x18222d) default: diff --git a/TelegramUI/ThemeSettingsThemeItem.swift b/TelegramUI/ThemeSettingsThemeItem.swift index 22fc83ff4c..351368bd0c 100644 --- a/TelegramUI/ThemeSettingsThemeItem.swift +++ b/TelegramUI/ThemeSettingsThemeItem.swift @@ -31,7 +31,7 @@ private func generateBorderImage(theme: PresentationTheme, bordered: Bool, selec })?.stretchableImage(withLeftCapWidth: 15, topCapHeight: 15) } -private func generateThemeIconImage(theme: PresentationBuiltinThemeReference) -> UIImage { +private func generateThemeIconImage(theme: PresentationBuiltinThemeReference, accentColor: UIColor?) -> UIImage { return generateImage(CGSize(width: 98.0, height: 62.0), rotatedContext: { size, context in let bounds = CGRect(origin: CGPoint(), size: size) @@ -46,7 +46,11 @@ private func generateThemeIconImage(theme: PresentationBuiltinThemeReference) -> case .day: background = .white incomingBubble = UIColor(rgb: 0xd5dde6) - outgoingBubble = UIColor(rgb: 0x007aff) + if let accentColor = accentColor { + outgoingBubble = accentColor + } else { + outgoingBubble = UIColor(rgb: 0x007aff) + } case .nightGrayscale: background = UIColor(rgb: 0x000000) incomingBubble = UIColor(rgb: 0x1f1f1f) @@ -83,12 +87,12 @@ class ThemeSettingsThemeItem: ListViewItem, ItemListItem { let theme: PresentationTheme let strings: PresentationStrings - let themes: [(PresentationBuiltinThemeReference, UIColor)] + let themes: [(PresentationBuiltinThemeReference, UIColor?)] let currentTheme: PresentationBuiltinThemeReference let updated: (PresentationBuiltinThemeReference) -> Void let tag: ItemListItemTag? - init(theme: PresentationTheme, strings: PresentationStrings, sectionId: ItemListSectionId, themes: [(PresentationBuiltinThemeReference, UIColor)], currentTheme: PresentationBuiltinThemeReference, updated: @escaping (PresentationBuiltinThemeReference) -> Void, tag: ItemListItemTag? = nil) { + init(theme: PresentationTheme, strings: PresentationStrings, sectionId: ItemListSectionId, themes: [(PresentationBuiltinThemeReference, UIColor?)], currentTheme: PresentationBuiltinThemeReference, updated: @escaping (PresentationBuiltinThemeReference) -> Void, tag: ItemListItemTag? = nil) { self.theme = theme self.strings = strings self.themes = themes @@ -297,7 +301,7 @@ class ThemeSettingsThemeItemNode: ListViewItemNode, ItemListItemNode { var nodeOffset = nodeInset var i = 0 - for (theme, color) in item.themes { + for (theme, accentColor) in item.themes { let imageNode: ThemeSettingsThemeItemIconNode if strongSelf.nodes.count > i { imageNode = strongSelf.nodes[i] @@ -308,8 +312,7 @@ class ThemeSettingsThemeItemNode: ListViewItemNode, ItemListItemNode { } let selected = theme == item.currentTheme - - var name = "Theme" + let name: String switch theme { case .dayClassic: name = item.strings.Appearance_ThemeCarouselClassic @@ -321,7 +324,7 @@ class ThemeSettingsThemeItemNode: ListViewItemNode, ItemListItemNode { name = item.strings.Appearance_ThemeCarouselNightBlue } - imageNode.setup(theme: item.theme, icon: generateThemeIconImage(theme: theme), title: NSAttributedString(string: name, font: textFont, textColor: selected ? item.theme.list.itemAccentColor : item.theme.list.itemPrimaryTextColor, paragraphAlignment: .center), bordered: true, selected: selected, action: { + imageNode.setup(theme: item.theme, icon: generateThemeIconImage(theme: theme, accentColor: accentColor), title: NSAttributedString(string: name, font: textFont, textColor: selected ? item.theme.list.itemAccentColor : item.theme.list.itemPrimaryTextColor, paragraphAlignment: .center), bordered: true, selected: selected, action: { item.updated(theme) })