Swiftgram/submodules/InstantPageUI/Sources/InstantPageSettingsItemTheme.swift
2021-10-06 00:06:33 +04:00

104 lines
3.6 KiB
Swift

import Foundation
import UIKit
import Display
import TelegramPresentationData
import TelegramUIPreferences
final class InstantPageSettingsItemTheme: Equatable {
let listBackgroundColor: UIColor
let itemBackgroundColor: UIColor
let itemHighlightedBackgroundColor: UIColor
let separatorColor: UIColor
let primaryColor: UIColor
let secondaryColor: UIColor
let accentColor: UIColor
init(listBackgroundColor: UIColor, itemBackgroundColor: UIColor, itemHighlightedBackgroundColor: UIColor, separatorColor: UIColor, primaryColor: UIColor, secondaryColor: UIColor, accentColor: UIColor) {
self.listBackgroundColor = listBackgroundColor
self.itemBackgroundColor = itemBackgroundColor
self.itemHighlightedBackgroundColor = itemHighlightedBackgroundColor
self.separatorColor = separatorColor
self.primaryColor = primaryColor
self.secondaryColor = secondaryColor
self.accentColor = accentColor
}
static func ==(lhs: InstantPageSettingsItemTheme, rhs: InstantPageSettingsItemTheme) -> Bool {
if !lhs.listBackgroundColor.isEqual(rhs.listBackgroundColor) {
return false
}
if !lhs.itemBackgroundColor.isEqual(rhs.itemBackgroundColor) {
return false
}
if !lhs.itemHighlightedBackgroundColor.isEqual(rhs.itemHighlightedBackgroundColor) {
return false
}
if !lhs.separatorColor.isEqual(rhs.separatorColor) {
return false
}
if !lhs.primaryColor.isEqual(rhs.primaryColor) {
return false
}
if !lhs.secondaryColor.isEqual(rhs.secondaryColor) {
return false
}
if !lhs.accentColor.isEqual(rhs.accentColor) {
return false
}
return true
}
static func themeFor(_ type: InstantPageThemeType) -> InstantPageSettingsItemTheme {
switch type {
case .light:
return lightTheme
case .sepia:
return sepiaTheme
case .gray:
return grayTheme
case .dark:
return darkTheme
}
}
}
private let lightTheme = InstantPageSettingsItemTheme(
listBackgroundColor: UIColor(rgb: 0xefeff4),
itemBackgroundColor: .white,
itemHighlightedBackgroundColor: UIColor(rgb: 0xd9d9d9),
separatorColor: UIColor(rgb: 0xc8c7cc),
primaryColor: .black,
secondaryColor: UIColor(rgb: 0xa8a8a8),
accentColor: UIColor(rgb: 0x007aff)
)
private let sepiaTheme = InstantPageSettingsItemTheme(
listBackgroundColor: UIColor(rgb: 0xefeff4),
itemBackgroundColor: .white,
itemHighlightedBackgroundColor: UIColor(rgb: 0xd9d9d9),
separatorColor: UIColor(rgb: 0xc8c7cc),
primaryColor: .black,
secondaryColor: UIColor(rgb: 0xb7b7b7),
accentColor: UIColor(rgb: 0xb06900)
)
private let grayTheme = InstantPageSettingsItemTheme(
listBackgroundColor: UIColor(rgb: 0xefeff4),
itemBackgroundColor: .white,
itemHighlightedBackgroundColor: UIColor(rgb: 0xd9d9d9),
separatorColor: UIColor(rgb: 0xc8c7cc),
primaryColor: .black,
secondaryColor: UIColor(rgb: 0xb6b6b6),
accentColor: UIColor(rgb: 0xc7c7c7)
)
private let darkTheme = InstantPageSettingsItemTheme(
listBackgroundColor: UIColor(rgb: 0x232323),
itemBackgroundColor: UIColor(rgb: 0x1a1a1a),
itemHighlightedBackgroundColor: UIColor(rgb: 0x4c4c4c),
separatorColor: UIColor(rgb: 0x151515),
primaryColor: UIColor(rgb: 0x878787),
secondaryColor: UIColor(rgb: 0xa6a6a6),
accentColor: UIColor(rgb: 0xbfc0c2)
)