Various UI fixes

This commit is contained in:
Ilya Laktyushin 2019-06-06 15:59:34 +02:00
parent 4150d20eb0
commit 339bc3c472
17 changed files with 57 additions and 47 deletions

View File

@ -494,6 +494,7 @@ class CallListCallItemNode: ItemListRevealOptionsItemNode {
} }
if let editableControlSizeAndApply = editableControlSizeAndApply { if let editableControlSizeAndApply = editableControlSizeAndApply {
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
if strongSelf.editableControlNode == nil { if strongSelf.editableControlNode == nil {
let editableControlNode = editableControlSizeAndApply.1() let editableControlNode = editableControlSizeAndApply.1()
editableControlNode.tapped = { editableControlNode.tapped = {
@ -504,11 +505,12 @@ class CallListCallItemNode: ItemListRevealOptionsItemNode {
} }
strongSelf.editableControlNode = editableControlNode strongSelf.editableControlNode = editableControlNode
strongSelf.addSubnode(editableControlNode) strongSelf.addSubnode(editableControlNode)
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
editableControlNode.frame = editableControlFrame editableControlNode.frame = editableControlFrame
transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY))
editableControlNode.alpha = 0.0 editableControlNode.alpha = 0.0
transition.updateAlpha(node: editableControlNode, alpha: 1.0) transition.updateAlpha(node: editableControlNode, alpha: 1.0)
} else {
strongSelf.editableControlNode?.frame = editableControlFrame
} }
} else if let editableControlNode = strongSelf.editableControlNode { } else if let editableControlNode = strongSelf.editableControlNode {
var editableControlFrame = editableControlNode.frame var editableControlFrame = editableControlNode.frame

View File

@ -38,6 +38,7 @@ final class ChangePhoneNumberController: ViewController {
super.init(navigationBarPresentationData: NavigationBarPresentationData(presentationData: self.presentationData)) 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.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBar.style.style
self.title = self.presentationData.strings.ChangePhoneNumberNumber_Title self.title = self.presentationData.strings.ChangePhoneNumberNumber_Title

View File

@ -188,19 +188,21 @@ final class ChangePhoneNumberControllerNode: ASDisplayNode {
} }
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) { 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 countryButtonHeight: CGFloat = 44.0
let inputFieldsHeight: CGFloat = 44.0 let inputFieldsHeight: CGFloat = 44.0
let titleSize = self.titleNode.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, 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 navigationHeight: CGFloat = 97.0 + insets.top + navigationBarHeight
let inputHeight = countryButtonHeight + inputFieldsHeight 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.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))) 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.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.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() { func activateInput() {

View File

@ -89,6 +89,8 @@ final class ChangePhoneNumberIntroController: ViewController {
super.init(navigationBarPresentationData: NavigationBarPresentationData(presentationData: self.presentationData)) 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.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBar.style.style
self.title = phoneNumber self.title = phoneNumber

View File

@ -350,7 +350,7 @@ private final class ChatTextLinkEditAlertContentNode: AlertContentNode {
override func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) -> CGSize { override func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) -> CGSize {
var size = size 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 measureSize = CGSize(width: size.width - 16.0 * 2.0, height: CGFloat.greatestFiniteMagnitude)
let hadValidLayout = self.validLayout != nil let hadValidLayout = self.validLayout != nil

View File

@ -163,8 +163,8 @@ private struct CreatePollControllerOption: Equatable {
private struct CreatePollControllerState: Equatable { private struct CreatePollControllerState: Equatable {
var text: String = "" var text: String = ""
var options: [CreatePollControllerOption] = [CreatePollControllerOption(text: "", id: 0)] var options: [CreatePollControllerOption] = [CreatePollControllerOption(text: "", id: 0), CreatePollControllerOption(text: "", id: 1)]
var nextOptionId: Int = 1 var nextOptionId: Int = 2
var focusOptionId: Int? var focusOptionId: Int?
var optionIdWithRevealControls: Int? var optionIdWithRevealControls: Int?
} }

View File

@ -555,6 +555,7 @@ class ItemListPeerItemNode: ItemListRevealOptionsItemNode, ItemListItemNode {
} }
if let editableControlSizeAndApply = editableControlSizeAndApply { if let editableControlSizeAndApply = editableControlSizeAndApply {
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
if strongSelf.editableControlNode == nil { if strongSelf.editableControlNode == nil {
let editableControlNode = editableControlSizeAndApply.1() let editableControlNode = editableControlSizeAndApply.1()
editableControlNode.tapped = { editableControlNode.tapped = {
@ -565,11 +566,12 @@ class ItemListPeerItemNode: ItemListRevealOptionsItemNode, ItemListItemNode {
} }
strongSelf.editableControlNode = editableControlNode strongSelf.editableControlNode = editableControlNode
strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.avatarNode) strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.avatarNode)
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
editableControlNode.frame = editableControlFrame editableControlNode.frame = editableControlFrame
transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY))
editableControlNode.alpha = 0.0 editableControlNode.alpha = 0.0
transition.updateAlpha(node: editableControlNode, alpha: 1.0) transition.updateAlpha(node: editableControlNode, alpha: 1.0)
} else {
strongSelf.editableControlNode?.frame = editableControlFrame
} }
strongSelf.editableControlNode?.isHidden = !item.editing.editable strongSelf.editableControlNode?.isHidden = !item.editing.editable
} else if let editableControlNode = strongSelf.editableControlNode { } else if let editableControlNode = strongSelf.editableControlNode {

View File

@ -292,6 +292,7 @@ class ItemListRecentSessionItemNode: ItemListRevealOptionsItemNode {
} }
if let editableControlSizeAndApply = editableControlSizeAndApply { if let editableControlSizeAndApply = editableControlSizeAndApply {
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
if strongSelf.editableControlNode == nil { if strongSelf.editableControlNode == nil {
let editableControlNode = editableControlSizeAndApply.1() let editableControlNode = editableControlSizeAndApply.1()
editableControlNode.tapped = { editableControlNode.tapped = {
@ -302,11 +303,12 @@ class ItemListRecentSessionItemNode: ItemListRevealOptionsItemNode {
} }
strongSelf.editableControlNode = editableControlNode strongSelf.editableControlNode = editableControlNode
strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.titleNode) strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.titleNode)
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
editableControlNode.frame = editableControlFrame editableControlNode.frame = editableControlFrame
transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY))
editableControlNode.alpha = 0.0 editableControlNode.alpha = 0.0
transition.updateAlpha(node: editableControlNode, alpha: 1.0) transition.updateAlpha(node: editableControlNode, alpha: 1.0)
} else {
strongSelf.editableControlNode?.frame = editableControlFrame
} }
strongSelf.editableControlNode?.isHidden = !item.editable strongSelf.editableControlNode?.isHidden = !item.editable
} else if let editableControlNode = strongSelf.editableControlNode { } else if let editableControlNode = strongSelf.editableControlNode {

View File

@ -395,6 +395,7 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode {
} }
if let editableControlSizeAndApply = editableControlSizeAndApply { if let editableControlSizeAndApply = editableControlSizeAndApply {
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
if strongSelf.editableControlNode == nil { if strongSelf.editableControlNode == nil {
let editableControlNode = editableControlSizeAndApply.1() let editableControlNode = editableControlSizeAndApply.1()
editableControlNode.tapped = { editableControlNode.tapped = {
@ -405,11 +406,12 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode {
} }
strongSelf.editableControlNode = editableControlNode strongSelf.editableControlNode = editableControlNode
strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.imageNode) strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.imageNode)
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
editableControlNode.frame = editableControlFrame editableControlNode.frame = editableControlFrame
transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY))
editableControlNode.alpha = 0.0 editableControlNode.alpha = 0.0
transition.updateAlpha(node: editableControlNode, alpha: 1.0) transition.updateAlpha(node: editableControlNode, alpha: 1.0)
} else {
strongSelf.editableControlNode?.frame = editableControlFrame
} }
strongSelf.editableControlNode?.isHidden = !item.editing.editable strongSelf.editableControlNode?.isHidden = !item.editing.editable
} else if let editableControlNode = strongSelf.editableControlNode { } else if let editableControlNode = strongSelf.editableControlNode {
@ -427,11 +429,11 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode {
let reorderControlNode = reorderControlSizeAndApply.1(false) let reorderControlNode = reorderControlSizeAndApply.1(false)
strongSelf.reorderControlNode = reorderControlNode strongSelf.reorderControlNode = reorderControlNode
strongSelf.addSubnode(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 reorderControlNode.alpha = 0.0
transition.updateAlpha(node: reorderControlNode, alpha: 1.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 { } else if let reorderControlNode = strongSelf.reorderControlNode {
strongSelf.reorderControlNode = nil strongSelf.reorderControlNode = nil
transition.updateAlpha(node: reorderControlNode, alpha: 0.0, completion: { [weak reorderControlNode] _ in transition.updateAlpha(node: reorderControlNode, alpha: 0.0, completion: { [weak reorderControlNode] _ in

View File

@ -289,6 +289,7 @@ class ItemListWebsiteItemNode: ItemListRevealOptionsItemNode {
} }
if let editableControlSizeAndApply = editableControlSizeAndApply { if let editableControlSizeAndApply = editableControlSizeAndApply {
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
if strongSelf.editableControlNode == nil { if strongSelf.editableControlNode == nil {
let editableControlNode = editableControlSizeAndApply.1() let editableControlNode = editableControlSizeAndApply.1()
editableControlNode.tapped = { editableControlNode.tapped = {
@ -299,11 +300,12 @@ class ItemListWebsiteItemNode: ItemListRevealOptionsItemNode {
} }
strongSelf.editableControlNode = editableControlNode strongSelf.editableControlNode = editableControlNode
strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.titleNode) strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.titleNode)
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
editableControlNode.frame = editableControlFrame editableControlNode.frame = editableControlFrame
transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY))
editableControlNode.alpha = 0.0 editableControlNode.alpha = 0.0
transition.updateAlpha(node: editableControlNode, alpha: 1.0) transition.updateAlpha(node: editableControlNode, alpha: 1.0)
} else {
strongSelf.editableControlNode?.frame = editableControlFrame
} }
strongSelf.editableControlNode?.isHidden = false strongSelf.editableControlNode?.isHidden = false
} else if let editableControlNode = strongSelf.editableControlNode { } else if let editableControlNode = strongSelf.editableControlNode {

View File

@ -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)) transition.updateFrame(node: strongSelf.subtitleNode, frame: CGRect(origin: CGPoint(x: editingOffset + revealOffset + leftInset, y: 31.0), size: subtitleLayout.size))
if let editableControlSizeAndApply = editableControlSizeAndApply { if let editableControlSizeAndApply = editableControlSizeAndApply {
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
if strongSelf.editableControlNode == nil { if strongSelf.editableControlNode == nil {
let editableControlNode = editableControlSizeAndApply.1() let editableControlNode = editableControlSizeAndApply.1()
editableControlNode.tapped = { editableControlNode.tapped = {
@ -283,11 +284,12 @@ class LocalizationListItemNode: ItemListRevealOptionsItemNode {
} }
strongSelf.editableControlNode = editableControlNode strongSelf.editableControlNode = editableControlNode
strongSelf.addSubnode(editableControlNode) strongSelf.addSubnode(editableControlNode)
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
editableControlNode.frame = editableControlFrame editableControlNode.frame = editableControlFrame
transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY))
editableControlNode.alpha = 0.0 editableControlNode.alpha = 0.0
transition.updateAlpha(node: editableControlNode, alpha: 1.0) transition.updateAlpha(node: editableControlNode, alpha: 1.0)
} else {
strongSelf.editableControlNode?.frame = editableControlFrame
} }
strongSelf.editableControlNode?.isHidden = !item.editing.editable strongSelf.editableControlNode?.isHidden = !item.editing.editable
} else if let editableControlNode = strongSelf.editableControlNode { } else if let editableControlNode = strongSelf.editableControlNode {

View File

@ -231,11 +231,6 @@ private func notificationPeerExceptionEntries(presentationData: PresentationData
entries.append(.soundModernHeader(index: index, theme: presentationData.theme, title: presentationData.strings.Notifications_AlertTones)) entries.append(.soundModernHeader(index: index, theme: presentationData.theme, title: presentationData.strings.Notifications_AlertTones))
index += 1 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)) 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 index += 1

View File

@ -302,6 +302,7 @@ class ProxySettingsServerItemNode: ItemListRevealOptionsItemNode {
} }
if let editableControlSizeAndApply = editableControlSizeAndApply { if let editableControlSizeAndApply = editableControlSizeAndApply {
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
if strongSelf.editableControlNode == nil { if strongSelf.editableControlNode == nil {
let editableControlNode = editableControlSizeAndApply.1() let editableControlNode = editableControlSizeAndApply.1()
editableControlNode.tapped = { editableControlNode.tapped = {
@ -312,11 +313,12 @@ class ProxySettingsServerItemNode: ItemListRevealOptionsItemNode {
} }
strongSelf.editableControlNode = editableControlNode strongSelf.editableControlNode = editableControlNode
strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.titleNode) strongSelf.insertSubnode(editableControlNode, aboveSubnode: strongSelf.titleNode)
let editableControlFrame = CGRect(origin: CGPoint(x: params.leftInset + revealOffset, y: 0.0), size: editableControlSizeAndApply.0)
editableControlNode.frame = editableControlFrame editableControlNode.frame = editableControlFrame
transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY)) transition.animatePosition(node: editableControlNode, from: CGPoint(x: -editableControlFrame.size.width / 2.0, y: editableControlFrame.midY))
editableControlNode.alpha = 0.0 editableControlNode.alpha = 0.0
transition.updateAlpha(node: editableControlNode, alpha: 1.0) transition.updateAlpha(node: editableControlNode, alpha: 1.0)
} else {
strongSelf.editableControlNode?.frame = editableControlFrame
} }
strongSelf.editableControlNode?.isHidden = !item.editing.editable strongSelf.editableControlNode?.isHidden = !item.editing.editable
} else if let editableControlNode = strongSelf.editableControlNode { } else if let editableControlNode = strongSelf.editableControlNode {
@ -334,11 +336,11 @@ class ProxySettingsServerItemNode: ItemListRevealOptionsItemNode {
let reorderControlNode = reorderControlSizeAndApply.1(false) let reorderControlNode = reorderControlSizeAndApply.1(false)
strongSelf.reorderControlNode = reorderControlNode strongSelf.reorderControlNode = reorderControlNode
strongSelf.addSubnode(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 reorderControlNode.alpha = 0.0
transition.updateAlpha(node: reorderControlNode, alpha: 1.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 { } else if let reorderControlNode = strongSelf.reorderControlNode {
strongSelf.reorderControlNode = nil strongSelf.reorderControlNode = nil
transition.updateAlpha(node: reorderControlNode, alpha: 0.0, completion: { [weak reorderControlNode] _ in transition.updateAlpha(node: reorderControlNode, alpha: 0.0, completion: { [weak reorderControlNode] _ in

View File

@ -12,11 +12,6 @@ private final class SampleBufferLayerImpl: AVSampleBufferDisplayLayer {
override func action(forKey event: String) -> CAAction? { override func action(forKey event: String) -> CAAction? {
return SampleBufferLayerImplNullAction() return SampleBufferLayerImplNullAction()
} }
deinit {
var bp:Int = 0
bp += 1
}
} }
final class SampleBufferLayer { final class SampleBufferLayer {

View File

@ -55,8 +55,6 @@ final class SoftwareVideoLayerFrameManager {
func tick(timestamp: Double) { func tick(timestamp: Double) {
applyQueue.async { applyQueue.async {
if self.baseTimestamp == nil && !self.frames.isEmpty { if self.baseTimestamp == nil && !self.frames.isEmpty {
self.baseTimestamp = timestamp self.baseTimestamp = timestamp
} }

View File

@ -63,7 +63,7 @@ private enum ThemeSettingsControllerEntry: ItemListNodeEntry {
case accentColor(PresentationTheme, String, Int32) case accentColor(PresentationTheme, String, Int32)
case autoNightTheme(PresentationTheme, String, String) case autoNightTheme(PresentationTheme, String, String)
case themeListHeader(PresentationTheme, String) case themeListHeader(PresentationTheme, String)
case themeItem(PresentationTheme, PresentationStrings, [PresentationBuiltinThemeReference], PresentationBuiltinThemeReference) case themeItem(PresentationTheme, PresentationStrings, [PresentationBuiltinThemeReference], PresentationBuiltinThemeReference, UIColor?)
case iconHeader(PresentationTheme, String) case iconHeader(PresentationTheme, String)
case iconItem(PresentationTheme, PresentationStrings, [PresentationAppIcon], String?) case iconItem(PresentationTheme, PresentationStrings, [PresentationAppIcon], String?)
case otherHeader(PresentationTheme, String) case otherHeader(PresentationTheme, String)
@ -159,8 +159,8 @@ private enum ThemeSettingsControllerEntry: ItemListNodeEntry {
} else { } else {
return false return false
} }
case let .themeItem(lhsTheme, lhsStrings, lhsThemes, lhsCurrentTheme): case let .themeItem(lhsTheme, lhsStrings, lhsThemes, lhsCurrentTheme, lhsThemeAccentColor):
if case let .themeItem(rhsTheme, rhsStrings, rhsThemes, rhsCurrentTheme) = rhs, lhsTheme === rhsTheme, lhsStrings === rhsStrings, lhsThemes == rhsThemes, lhsCurrentTheme == rhsCurrentTheme { if case let .themeItem(rhsTheme, rhsStrings, rhsThemes, rhsCurrentTheme, rhsThemeAccentColor) = rhs, lhsTheme === rhsTheme, lhsStrings === rhsStrings, lhsThemes == rhsThemes, lhsCurrentTheme == rhsCurrentTheme, lhsThemeAccentColor == rhsThemeAccentColor {
return true return true
} else { } else {
return false return false
@ -246,8 +246,8 @@ private enum ThemeSettingsControllerEntry: ItemListNodeEntry {
}) })
case let .themeListHeader(theme, text): case let .themeListHeader(theme, text):
return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section)
case let .themeItem(theme, strings, themes, currentTheme): case let .themeItem(theme, strings, themes, currentTheme, themeAccentColor):
return ThemeSettingsThemeItem(theme: theme, strings: strings, sectionId: self.section, themes: themes.map { ($0, .white) }, currentTheme: currentTheme, updated: { theme in 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) arguments.selectTheme(theme.rawValue)
}) })
case let .iconHeader(theme, text): case let .iconHeader(theme, text):
@ -283,7 +283,7 @@ private func themeSettingsControllerEntries(presentationData: PresentationData,
entries.append(.themeListHeader(presentationData.theme, strings.Appearance_ColorTheme.uppercased())) entries.append(.themeListHeader(presentationData.theme, strings.Appearance_ColorTheme.uppercased()))
if case let .builtin(theme) = theme.name { 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) { if theme.name == .builtin(.day) {
@ -354,9 +354,9 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The
} else { } else {
switch index { switch index {
case 1: case 1:
wallpaper = .color(0xffffff)
case 2:
wallpaper = .color(0x000000) wallpaper = .color(0x000000)
case 2:
wallpaper = .color(0xffffff)
case 3: case 3:
wallpaper = .color(0x18222d) wallpaper = .color(0x18222d)
default: default:

View File

@ -31,7 +31,7 @@ private func generateBorderImage(theme: PresentationTheme, bordered: Bool, selec
})?.stretchableImage(withLeftCapWidth: 15, topCapHeight: 15) })?.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 return generateImage(CGSize(width: 98.0, height: 62.0), rotatedContext: { size, context in
let bounds = CGRect(origin: CGPoint(), size: size) let bounds = CGRect(origin: CGPoint(), size: size)
@ -46,7 +46,11 @@ private func generateThemeIconImage(theme: PresentationBuiltinThemeReference) ->
case .day: case .day:
background = .white background = .white
incomingBubble = UIColor(rgb: 0xd5dde6) incomingBubble = UIColor(rgb: 0xd5dde6)
outgoingBubble = UIColor(rgb: 0x007aff) if let accentColor = accentColor {
outgoingBubble = accentColor
} else {
outgoingBubble = UIColor(rgb: 0x007aff)
}
case .nightGrayscale: case .nightGrayscale:
background = UIColor(rgb: 0x000000) background = UIColor(rgb: 0x000000)
incomingBubble = UIColor(rgb: 0x1f1f1f) incomingBubble = UIColor(rgb: 0x1f1f1f)
@ -83,12 +87,12 @@ class ThemeSettingsThemeItem: ListViewItem, ItemListItem {
let theme: PresentationTheme let theme: PresentationTheme
let strings: PresentationStrings let strings: PresentationStrings
let themes: [(PresentationBuiltinThemeReference, UIColor)] let themes: [(PresentationBuiltinThemeReference, UIColor?)]
let currentTheme: PresentationBuiltinThemeReference let currentTheme: PresentationBuiltinThemeReference
let updated: (PresentationBuiltinThemeReference) -> Void let updated: (PresentationBuiltinThemeReference) -> Void
let tag: ItemListItemTag? 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.theme = theme
self.strings = strings self.strings = strings
self.themes = themes self.themes = themes
@ -297,7 +301,7 @@ class ThemeSettingsThemeItemNode: ListViewItemNode, ItemListItemNode {
var nodeOffset = nodeInset var nodeOffset = nodeInset
var i = 0 var i = 0
for (theme, color) in item.themes { for (theme, accentColor) in item.themes {
let imageNode: ThemeSettingsThemeItemIconNode let imageNode: ThemeSettingsThemeItemIconNode
if strongSelf.nodes.count > i { if strongSelf.nodes.count > i {
imageNode = strongSelf.nodes[i] imageNode = strongSelf.nodes[i]
@ -308,8 +312,7 @@ class ThemeSettingsThemeItemNode: ListViewItemNode, ItemListItemNode {
} }
let selected = theme == item.currentTheme let selected = theme == item.currentTheme
let name: String
var name = "Theme"
switch theme { switch theme {
case .dayClassic: case .dayClassic:
name = item.strings.Appearance_ThemeCarouselClassic name = item.strings.Appearance_ThemeCarouselClassic
@ -321,7 +324,7 @@ class ThemeSettingsThemeItemNode: ListViewItemNode, ItemListItemNode {
name = item.strings.Appearance_ThemeCarouselNightBlue 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) item.updated(theme)
}) })