mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
90 lines
4.4 KiB
Swift
90 lines
4.4 KiB
Swift
import Foundation
|
|
import UIKit
|
|
import AsyncDisplayKit
|
|
import Display
|
|
import Postbox
|
|
import TelegramCore
|
|
import SyncCore
|
|
import SwiftSignalKit
|
|
import TelegramPresentationData
|
|
import AppBundle
|
|
|
|
final class ThemeGridSelectionPanelNode: ASDisplayNode {
|
|
private let deleteButton: UIButton
|
|
private let shareButton: UIButton
|
|
|
|
private var validLayout: (width: CGFloat, leftInset: CGFloat, rightInset: CGFloat, maxHeight: CGFloat, metrics: LayoutMetrics)?
|
|
|
|
private var theme: PresentationTheme
|
|
|
|
var selectedIndices = Set<Int64>() {
|
|
didSet {
|
|
if oldValue != self.selectedIndices {
|
|
self.deleteButton.isEnabled = !self.selectedIndices.isEmpty
|
|
self.shareButton.isEnabled = !self.selectedIndices.isEmpty
|
|
}
|
|
}
|
|
}
|
|
|
|
var controllerInteraction: ThemeGridControllerInteraction?
|
|
|
|
init(theme: PresentationTheme) {
|
|
self.theme = theme
|
|
|
|
self.deleteButton = UIButton()
|
|
self.deleteButton.isEnabled = false
|
|
self.shareButton = UIButton()
|
|
self.shareButton.isEnabled = false
|
|
|
|
self.deleteButton.setImage(generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionTrash"), color: theme.chat.inputPanel.panelControlAccentColor), for: [.normal])
|
|
self.deleteButton.setImage(generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionTrash"), color: theme.chat.inputPanel.panelControlDisabledColor), for: [.disabled])
|
|
self.shareButton.setImage(generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionForward"), color: theme.chat.inputPanel.panelControlAccentColor), for: [.normal])
|
|
self.shareButton.setImage(generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionForward"), color: theme.chat.inputPanel.panelControlDisabledColor), for: [.disabled])
|
|
|
|
super.init()
|
|
|
|
self.view.addSubview(self.deleteButton)
|
|
self.view.addSubview(self.shareButton)
|
|
|
|
self.deleteButton.addTarget(self, action: #selector(self.deleteButtonPressed), for: [.touchUpInside])
|
|
self.shareButton.addTarget(self, action: #selector(self.shareButtonPressed), for: [.touchUpInside])
|
|
}
|
|
|
|
func updateTheme(theme: PresentationTheme) {
|
|
if self.theme !== theme {
|
|
self.theme = theme
|
|
|
|
self.deleteButton.setImage(generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionTrash"), color: theme.chat.inputPanel.panelControlAccentColor), for: [.normal])
|
|
self.deleteButton.setImage(generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionTrash"), color: theme.chat.inputPanel.panelControlDisabledColor), for: [.disabled])
|
|
self.shareButton.setImage(generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionForward"), color: theme.chat.inputPanel.panelControlAccentColor), for: [.normal])
|
|
self.shareButton.setImage(generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Accessory Panels/MessageSelectionForward"), color: theme.chat.inputPanel.panelControlDisabledColor), for: [.disabled])
|
|
}
|
|
}
|
|
|
|
@objc func deleteButtonPressed() {
|
|
self.controllerInteraction?.deleteSelectedWallpapers()
|
|
}
|
|
|
|
@objc func shareButtonPressed() {
|
|
self.controllerInteraction?.shareSelectedWallpapers()
|
|
}
|
|
|
|
private func defaultHeight(metrics: LayoutMetrics) -> CGFloat {
|
|
if case .regular = metrics.widthClass, case .regular = metrics.heightClass {
|
|
return 49.0
|
|
} else {
|
|
return 45.0
|
|
}
|
|
}
|
|
|
|
func updateLayout(width: CGFloat, leftInset: CGFloat, rightInset: CGFloat, maxHeight: CGFloat, transition: ContainedViewLayoutTransition, metrics: LayoutMetrics) -> CGFloat {
|
|
self.validLayout = (width, leftInset, rightInset, maxHeight, metrics)
|
|
|
|
let panelHeight = defaultHeight(metrics: metrics)
|
|
self.deleteButton.frame = CGRect(origin: CGPoint(x: leftInset, y: 0.0), size: CGSize(width: 53.0, height: panelHeight))
|
|
self.shareButton.frame = CGRect(origin: CGPoint(x: width - rightInset - 57.0, y: 0.0), size: CGSize(width: 57.0, height: panelHeight))
|
|
|
|
return panelHeight
|
|
}
|
|
}
|