mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-04 13:38:21 +00:00
Various fixes
This commit is contained in:
parent
a423239c18
commit
d86b655413
@ -113,6 +113,10 @@ final class ItemListRecentSessionItem: ListViewItem, ItemListItem {
|
||||
private func iconForSession(_ session: RecentAccountSession) -> UIImage? {
|
||||
let platform = session.platform.lowercased()
|
||||
let device = session.deviceModel.lowercased()
|
||||
let systemVersion = session.systemVersion.lowercased()
|
||||
if device.contains("xbox") {
|
||||
return UIImage(bundleImageName: "Settings/Devices/Xbox")
|
||||
}
|
||||
if device.contains("chrome") && !device.contains("chromebook") {
|
||||
return UIImage(bundleImageName: "Settings/Devices/Chrome")
|
||||
}
|
||||
@ -140,7 +144,7 @@ private func iconForSession(_ session: RecentAccountSession) -> UIImage? {
|
||||
if platform.contains("linux") {
|
||||
return UIImage(bundleImageName: "Settings/Devices/Linux")
|
||||
}
|
||||
if platform.contains("windows") {
|
||||
if platform.contains("windows") || systemVersion.contains("windows") {
|
||||
return UIImage(bundleImageName: "Settings/Devices/Windows")
|
||||
}
|
||||
return nil
|
||||
|
||||
@ -578,6 +578,7 @@ public func themePickerController(context: AccountContext, focusOnItemTag: Theme
|
||||
presentControllerImpl?(shareController, nil)
|
||||
})
|
||||
})))
|
||||
if !theme.theme.isDefault {
|
||||
items.append(.action(ContextMenuActionItem(text: presentationData.strings.Appearance_RemoveTheme, textColor: .destructive, icon: { theme in generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Delete"), color: theme.contextMenu.destructiveColor) }, action: { c, f in
|
||||
c.dismiss(completion: {
|
||||
let actionSheet = ActionSheetController(presentationData: presentationData)
|
||||
@ -624,6 +625,7 @@ public func themePickerController(context: AccountContext, focusOnItemTag: Theme
|
||||
presentControllerImpl?(actionSheet, nil)
|
||||
})
|
||||
})))
|
||||
}
|
||||
} else {
|
||||
items.append(.action(ContextMenuActionItem(text: strings.Theme_Context_ChangeColors, icon: { theme in generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/ApplyTheme"), color: theme.contextMenu.primaryColor)
|
||||
}, action: { c, f in
|
||||
@ -817,7 +819,7 @@ public func themePickerController(context: AccountContext, focusOnItemTag: Theme
|
||||
presentControllerImpl?(shareController, nil)
|
||||
})
|
||||
})))
|
||||
if cloudThemeExists {
|
||||
if cloudThemeExists && !cloudTheme.theme.isDefault {
|
||||
items.append(.action(ContextMenuActionItem(text: presentationData.strings.Appearance_RemoveTheme, textColor: .destructive, icon: { theme in generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Delete"), color: theme.contextMenu.destructiveColor) }, action: { c, f in
|
||||
c.dismiss(completion: {
|
||||
let actionSheet = ActionSheetController(presentationData: presentationData)
|
||||
|
||||
@ -19,6 +19,7 @@ import TelegramAnimatedStickerNode
|
||||
import ShimmerEffect
|
||||
import StickerResources
|
||||
|
||||
|
||||
private var cachedBorderImages: [String: UIImage] = [:]
|
||||
private func generateBorderImage(theme: PresentationTheme, bordered: Bool, selected: Bool) -> UIImage? {
|
||||
let key = "\(theme.list.itemBlocksBackgroundColor.hexString)_\(selected ? "s" + theme.list.itemAccentColor.hexString : theme.list.disclosureArrowColor.hexString)"
|
||||
@ -78,13 +79,11 @@ private final class ThemeGridThemeItemIconNode : ASDisplayNode {
|
||||
self.emojiContainerNode = ASDisplayNode()
|
||||
|
||||
self.imageNode = TransformImageNode()
|
||||
self.imageNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 120.0, height: 150.0))
|
||||
self.imageNode.isLayerBacked = true
|
||||
self.imageNode.cornerRadius = 8.0
|
||||
self.imageNode.clipsToBounds = true
|
||||
|
||||
self.overlayNode = ASImageNode()
|
||||
self.overlayNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 122.0, height: 152.0))
|
||||
self.overlayNode.isLayerBacked = true
|
||||
|
||||
self.textNode = TextNode()
|
||||
@ -226,13 +225,13 @@ private final class ThemeGridThemeItemIconNode : ASDisplayNode {
|
||||
self.textNode.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((90.0 - textLayout.size.width) / 2.0), y: 83.0), size: textLayout.size)
|
||||
self.textNode.isHidden = string == nil
|
||||
|
||||
self.containerNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 120.0, height: 150.0))
|
||||
self.emojiContainerNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 120.0, height: 150.0))
|
||||
self.containerNode.frame = CGRect(origin: CGPoint(), size: size)
|
||||
self.emojiContainerNode.frame = CGRect(origin: CGPoint(), size: size)
|
||||
|
||||
let _ = textApply()
|
||||
let _ = emojiApply()
|
||||
|
||||
let imageSize = CGSize(width: 120.0, height: 150.0)
|
||||
let imageSize = size
|
||||
self.imageNode.frame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: imageSize)
|
||||
let applyLayout = makeImageLayout(TransformImageArguments(corners: ImageCorners(), imageSize: imageSize, boundingSize: imageSize, intrinsicInsets: UIEdgeInsets(), emptyColor: .clear))
|
||||
applyLayout()
|
||||
@ -240,7 +239,7 @@ private final class ThemeGridThemeItemIconNode : ASDisplayNode {
|
||||
self.overlayNode.frame = self.imageNode.frame.insetBy(dx: -1.0, dy: -1.0)
|
||||
self.emojiNode.frame = CGRect(origin: CGPoint(x: 0.0, y: 79.0), size: CGSize(width: 90.0, height: 30.0))
|
||||
|
||||
let emojiFrame = CGRect(origin: CGPoint(x: 39.0, y: 98.0), size: CGSize(width: 42.0, height: 42.0))
|
||||
let emojiFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - 42.0) / 2.0), y: 98.0), size: CGSize(width: 42.0, height: 42.0))
|
||||
if let file = item.emojiFile, currentItem == nil {
|
||||
let imageApply = self.emojiImageNode.asyncLayout()(TransformImageArguments(corners: ImageCorners(), imageSize: emojiFrame.size, boundingSize: emojiFrame.size, intrinsicInsets: UIEdgeInsets()))
|
||||
imageApply()
|
||||
@ -407,11 +406,28 @@ class ThemeGridThemeItemNode: ListViewItemNode, ItemListItemNode {
|
||||
let insets: UIEdgeInsets
|
||||
let separatorHeight = UIScreenPixel
|
||||
|
||||
let itemSize = CGSize(width: 120.0, height: 150.0)
|
||||
let itemSpacing: CGFloat = 7.0
|
||||
let rows = ceil(CGFloat(item.themes.count) / 3.0)
|
||||
let minSpacing: CGFloat = 6.0
|
||||
|
||||
contentSize = CGSize(width: params.width, height: itemSpacing + rows * (itemSize.height + itemSpacing) + 2.0)
|
||||
let referenceImageSize: CGSize
|
||||
let screenWidth = min(params.width, params.availableHeight)
|
||||
if screenWidth >= 375.0 {
|
||||
referenceImageSize = CGSize(width: 110.0, height: 150.0)
|
||||
} else {
|
||||
referenceImageSize = CGSize(width: 91.0, height: 150.0)
|
||||
}
|
||||
let totalWidth = params.width - params.leftInset - params.rightInset
|
||||
let imageCount = Int((totalWidth - minSpacing) / (referenceImageSize.width + minSpacing))
|
||||
let itemSize = referenceImageSize.aspectFilled(CGSize(width: floorToScreenPixels((totalWidth - CGFloat(imageCount + 1) * minSpacing) / CGFloat(imageCount)), height: referenceImageSize.height))
|
||||
let itemSpacing = floorToScreenPixels((totalWidth - CGFloat(imageCount) * itemSize.width) / CGFloat(imageCount + 1))
|
||||
|
||||
var spacingOffset: CGFloat = 0.0
|
||||
if totalWidth - imageCount * itemSize - (imageCount + 1) * itemSpacing == 1.0 {
|
||||
spacingOffset = UIScreenPixel
|
||||
}
|
||||
|
||||
let rows = ceil(CGFloat(item.themes.count) / CGFloat(imageCount))
|
||||
|
||||
contentSize = CGSize(width: params.width, height: minSpacing + rows * (itemSize.height + itemSpacing))
|
||||
insets = itemListNeighborsGroupedInsets(neighbors)
|
||||
|
||||
let layout = ListViewItemNodeLayout(contentSize: contentSize, insets: insets)
|
||||
@ -496,9 +512,9 @@ class ThemeGridThemeItemNode: ListViewItemNode, ItemListItemNode {
|
||||
strongSelf.addSubnode(addedItemNode)
|
||||
}
|
||||
|
||||
let col = CGFloat(index % 3)
|
||||
let row = floor(CGFloat(index) / 3.0)
|
||||
let itemFrame = CGRect(origin: CGPoint(x: params.leftInset + itemSpacing + 1.0 + (itemSize.width + itemSpacing) * col, y: itemSpacing + 1.0 + (itemSize.height + itemSpacing) * row), size: itemSize)
|
||||
let col = CGFloat(index % imageCount)
|
||||
let row = floor(CGFloat(index) / CGFloat(imageCount))
|
||||
let itemFrame = CGRect(origin: CGPoint(x: params.leftInset + spacingOffset + itemSpacing + (itemSize.width + itemSpacing) * col, y: minSpacing + (itemSize.height + itemSpacing) * row), size: itemSize)
|
||||
itemNode.frame = itemFrame
|
||||
|
||||
index += 1
|
||||
|
||||
@ -1628,7 +1628,7 @@ public func themeIconImage(account: Account, accountManager: AccountManager<Tele
|
||||
if large {
|
||||
c.saveGState()
|
||||
|
||||
c.translateBy(x: -71.0, y: 66.0)
|
||||
c.translateBy(x: (drawingRect.width - 120) - 71, y: 66.0)
|
||||
c.translateBy(x: 114.0, y: 32.0)
|
||||
c.scaleBy(x: 1.0, y: -1.0)
|
||||
c.translateBy(x: 0.0, y: -32.0)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user