mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
770 lines
38 KiB
Swift
770 lines
38 KiB
Swift
import Foundation
|
|
import UIKit
|
|
import Display
|
|
|
|
public enum PresentationThemeParsingError: Error {
|
|
case generic
|
|
}
|
|
|
|
public final class PresentationThemeColorPlaceholder {
|
|
|
|
}
|
|
|
|
public final class PresentationThemeRootTabBar {
|
|
public let backgroundColor: UIColor
|
|
public let separatorColor: UIColor
|
|
public let iconColor: UIColor
|
|
public let selectedIconColor: UIColor
|
|
public let textColor: UIColor
|
|
public let selectedTextColor: UIColor
|
|
public let badgeBackgroundColor: UIColor
|
|
public let badgeStrokeColor: UIColor
|
|
public let badgeTextColor: UIColor
|
|
|
|
public init(backgroundColor: UIColor, separatorColor: UIColor, iconColor: UIColor, selectedIconColor: UIColor, textColor: UIColor, selectedTextColor: UIColor, badgeBackgroundColor: UIColor, badgeStrokeColor: UIColor, badgeTextColor: UIColor) {
|
|
self.backgroundColor = backgroundColor
|
|
self.separatorColor = separatorColor
|
|
self.iconColor = iconColor
|
|
self.selectedIconColor = selectedIconColor
|
|
self.textColor = textColor
|
|
self.selectedTextColor = selectedTextColor
|
|
self.badgeBackgroundColor = badgeBackgroundColor
|
|
self.badgeStrokeColor = badgeStrokeColor
|
|
self.badgeTextColor = badgeTextColor
|
|
}
|
|
}
|
|
|
|
public enum PresentationThemeStatusBarStyle: Int32 {
|
|
case black = 0
|
|
case white = 1
|
|
|
|
var style: StatusBarStyle {
|
|
switch self {
|
|
case .black:
|
|
return .Black
|
|
case .white:
|
|
return .White
|
|
}
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeRootNavigationStatusBar {
|
|
public let style: PresentationThemeStatusBarStyle
|
|
|
|
public init(style: PresentationThemeStatusBarStyle) {
|
|
self.style = style
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeRootNavigationBar {
|
|
public let buttonColor: UIColor
|
|
public let primaryTextColor: UIColor
|
|
public let secondaryTextColor: UIColor
|
|
public let controlColor: UIColor
|
|
public let accentTextColor: UIColor
|
|
public let backgroundColor: UIColor
|
|
public let separatorColor: UIColor
|
|
public let badgeBackgroundColor: UIColor
|
|
public let badgeStrokeColor: UIColor
|
|
public let badgeTextColor: UIColor
|
|
|
|
public init(buttonColor: UIColor, primaryTextColor: UIColor, secondaryTextColor: UIColor, controlColor: UIColor, accentTextColor: UIColor, backgroundColor: UIColor, separatorColor: UIColor, badgeBackgroundColor: UIColor, badgeStrokeColor: UIColor, badgeTextColor: UIColor) {
|
|
self.buttonColor = buttonColor
|
|
self.primaryTextColor = primaryTextColor
|
|
self.secondaryTextColor = secondaryTextColor
|
|
self.controlColor = controlColor
|
|
self.accentTextColor = accentTextColor
|
|
self.backgroundColor = backgroundColor
|
|
self.separatorColor = separatorColor
|
|
self.badgeBackgroundColor = badgeBackgroundColor
|
|
self.badgeStrokeColor = badgeStrokeColor
|
|
self.badgeTextColor = badgeTextColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeExpandedNotificationNavigationBar {
|
|
public let backgroundColor: UIColor
|
|
public let primaryTextColor: UIColor
|
|
public let controlColor: UIColor
|
|
public let separatorColor: UIColor
|
|
|
|
init(backgroundColor: UIColor, primaryTextColor: UIColor, controlColor: UIColor, separatorColor: UIColor) {
|
|
self.backgroundColor = backgroundColor
|
|
self.primaryTextColor = primaryTextColor
|
|
self.controlColor = controlColor
|
|
self.separatorColor = separatorColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeActiveNavigationSearchBar {
|
|
public let backgroundColor: UIColor
|
|
public let accentColor: UIColor
|
|
public let inputFillColor: UIColor
|
|
public let inputTextColor: UIColor
|
|
public let inputPlaceholderTextColor: UIColor
|
|
public let inputIconColor: UIColor
|
|
public let inputClearButtonColor: UIColor
|
|
public let separatorColor: UIColor
|
|
|
|
public init(backgroundColor: UIColor, accentColor: UIColor, inputFillColor: UIColor, inputTextColor: UIColor, inputPlaceholderTextColor: UIColor, inputIconColor: UIColor, inputClearButtonColor: UIColor, separatorColor: UIColor) {
|
|
self.backgroundColor = backgroundColor
|
|
self.accentColor = accentColor
|
|
self.inputFillColor = inputFillColor
|
|
self.inputTextColor = inputTextColor
|
|
self.inputPlaceholderTextColor = inputPlaceholderTextColor
|
|
self.inputIconColor = inputIconColor
|
|
self.inputClearButtonColor = inputClearButtonColor
|
|
self.separatorColor = separatorColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeRootController {
|
|
public let statusBar: PresentationThemeRootNavigationStatusBar
|
|
public let tabBar: PresentationThemeRootTabBar
|
|
public let navigationBar: PresentationThemeRootNavigationBar
|
|
public let activeNavigationSearchBar: PresentationThemeActiveNavigationSearchBar
|
|
|
|
public init(statusBar: PresentationThemeRootNavigationStatusBar, tabBar: PresentationThemeRootTabBar, navigationBar: PresentationThemeRootNavigationBar, activeNavigationSearchBar: PresentationThemeActiveNavigationSearchBar) {
|
|
self.statusBar = statusBar
|
|
self.tabBar = tabBar
|
|
self.navigationBar = navigationBar
|
|
self.activeNavigationSearchBar = activeNavigationSearchBar
|
|
}
|
|
}
|
|
|
|
public enum PresentationThemeExpandedNotificationBackgroundType: Int32 {
|
|
case light
|
|
case dark
|
|
}
|
|
|
|
public final class PresentationThemeExpandedNotification {
|
|
public let backgroundType: PresentationThemeExpandedNotificationBackgroundType
|
|
public let navigationBar: PresentationThemeExpandedNotificationNavigationBar
|
|
|
|
public init(backgroundType: PresentationThemeExpandedNotificationBackgroundType, navigationBar: PresentationThemeExpandedNotificationNavigationBar) {
|
|
self.backgroundType = backgroundType
|
|
self.navigationBar = navigationBar
|
|
}
|
|
}
|
|
|
|
public enum PresentationThemeActionSheetBackgroundType: Int32 {
|
|
case light
|
|
case dark
|
|
}
|
|
|
|
public final class PresentationThemeActionSheet {
|
|
public let dimColor: UIColor
|
|
public let backgroundType: PresentationThemeActionSheetBackgroundType
|
|
public let opaqueItemBackgroundColor: UIColor
|
|
public let itemBackgroundColor: UIColor
|
|
public let opaqueItemHighlightedBackgroundColor: UIColor
|
|
public let itemHighlightedBackgroundColor: UIColor
|
|
public let opaqueItemSeparatorColor: UIColor
|
|
public let standardActionTextColor: UIColor
|
|
public let destructiveActionTextColor: UIColor
|
|
public let disabledActionTextColor: UIColor
|
|
public let primaryTextColor: UIColor
|
|
public let secondaryTextColor: UIColor
|
|
public let controlAccentColor: UIColor
|
|
public let inputBackgroundColor: UIColor
|
|
public let inputPlaceholderColor: UIColor
|
|
public let inputTextColor: UIColor
|
|
public let inputClearButtonColor: UIColor
|
|
public let checkContentColor: UIColor
|
|
|
|
init(dimColor: UIColor, backgroundType: PresentationThemeActionSheetBackgroundType, opaqueItemBackgroundColor: UIColor, itemBackgroundColor: UIColor, opaqueItemHighlightedBackgroundColor: UIColor, itemHighlightedBackgroundColor: UIColor, standardActionTextColor: UIColor, opaqueItemSeparatorColor: UIColor, destructiveActionTextColor: UIColor, disabledActionTextColor: UIColor, primaryTextColor: UIColor, secondaryTextColor: UIColor, controlAccentColor: UIColor, inputBackgroundColor: UIColor, inputPlaceholderColor: UIColor, inputTextColor: UIColor, inputClearButtonColor: UIColor, checkContentColor: UIColor) {
|
|
self.dimColor = dimColor
|
|
self.backgroundType = backgroundType
|
|
self.opaqueItemBackgroundColor = opaqueItemBackgroundColor
|
|
self.itemBackgroundColor = itemBackgroundColor
|
|
self.opaqueItemHighlightedBackgroundColor = opaqueItemHighlightedBackgroundColor
|
|
self.itemHighlightedBackgroundColor = itemHighlightedBackgroundColor
|
|
self.opaqueItemSeparatorColor = opaqueItemSeparatorColor
|
|
self.standardActionTextColor = standardActionTextColor
|
|
self.destructiveActionTextColor = destructiveActionTextColor
|
|
self.disabledActionTextColor = disabledActionTextColor
|
|
self.primaryTextColor = primaryTextColor
|
|
self.secondaryTextColor = secondaryTextColor
|
|
self.controlAccentColor = controlAccentColor
|
|
self.inputBackgroundColor = inputBackgroundColor
|
|
self.inputPlaceholderColor = inputPlaceholderColor
|
|
self.inputTextColor = inputTextColor
|
|
self.inputClearButtonColor = inputClearButtonColor
|
|
self.checkContentColor = checkContentColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeSwitch {
|
|
public let frameColor: UIColor
|
|
public let handleColor: UIColor
|
|
public let contentColor: UIColor
|
|
|
|
public init(frameColor: UIColor, handleColor: UIColor, contentColor: UIColor) {
|
|
self.frameColor = frameColor
|
|
self.handleColor = handleColor
|
|
self.contentColor = contentColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeItemDisclosureAction {
|
|
public let fillColor: UIColor
|
|
public let foregroundColor: UIColor
|
|
|
|
init(fillColor: UIColor, foregroundColor: UIColor) {
|
|
self.fillColor = fillColor
|
|
self.foregroundColor = foregroundColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeCheck {
|
|
public let strokeColor: UIColor
|
|
public let fillColor: UIColor
|
|
public let foregroundColor: UIColor
|
|
|
|
init(strokeColor: UIColor, fillColor: UIColor, foregroundColor: UIColor) {
|
|
self.strokeColor = strokeColor
|
|
self.fillColor = fillColor
|
|
self.foregroundColor = foregroundColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeItemDisclosureActions {
|
|
public let neutral1: PresentationThemeItemDisclosureAction
|
|
public let neutral2: PresentationThemeItemDisclosureAction
|
|
public let destructive: PresentationThemeItemDisclosureAction
|
|
public let constructive: PresentationThemeItemDisclosureAction
|
|
public let accent: PresentationThemeItemDisclosureAction
|
|
public let warning: PresentationThemeItemDisclosureAction
|
|
|
|
public init(neutral1: PresentationThemeItemDisclosureAction, neutral2: PresentationThemeItemDisclosureAction, destructive: PresentationThemeItemDisclosureAction, constructive: PresentationThemeItemDisclosureAction, accent: PresentationThemeItemDisclosureAction, warning: PresentationThemeItemDisclosureAction) {
|
|
self.neutral1 = neutral1
|
|
self.neutral2 = neutral2
|
|
self.destructive = destructive
|
|
self.constructive = constructive
|
|
self.accent = accent
|
|
self.warning = warning
|
|
}
|
|
}
|
|
|
|
public final class PresentationInputFieldTheme {
|
|
public let backgroundColor: UIColor
|
|
public let placeholderColor: UIColor
|
|
public let primaryColor: UIColor
|
|
|
|
public init(backgroundColor: UIColor, placeholderColor: UIColor, primaryColor: UIColor) {
|
|
self.backgroundColor = backgroundColor
|
|
self.placeholderColor = placeholderColor
|
|
self.primaryColor = primaryColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeList {
|
|
public let blocksBackgroundColor: UIColor
|
|
public let plainBackgroundColor: UIColor
|
|
public let itemPrimaryTextColor: UIColor
|
|
public let itemSecondaryTextColor: UIColor
|
|
public let itemDisabledTextColor: UIColor
|
|
public let itemAccentColor: UIColor
|
|
public let itemDestructiveColor: UIColor
|
|
public let itemPlaceholderTextColor: UIColor
|
|
public let itemBlocksBackgroundColor: UIColor
|
|
public let itemHighlightedBackgroundColor: UIColor
|
|
public let itemBlocksSeparatorColor: UIColor
|
|
public let itemPlainSeparatorColor: UIColor
|
|
public let disclosureArrowColor: UIColor
|
|
public let sectionHeaderTextColor: UIColor
|
|
public let freeTextColor: UIColor
|
|
public let freeTextErrorColor: UIColor
|
|
public let freeTextSuccessColor: UIColor
|
|
public let freeMonoIcon: UIColor
|
|
public let itemSwitchColors: PresentationThemeSwitch
|
|
public let itemDisclosureActions: PresentationThemeItemDisclosureActions
|
|
public let itemCheckColors: PresentationThemeCheck
|
|
public let controlSecondaryColor: UIColor
|
|
public let freeInputField: PresentationInputFieldTheme
|
|
|
|
public init(blocksBackgroundColor: UIColor, plainBackgroundColor: UIColor, itemPrimaryTextColor: UIColor, itemSecondaryTextColor: UIColor, itemDisabledTextColor: UIColor, itemAccentColor: UIColor, itemDestructiveColor: UIColor, itemPlaceholderTextColor: UIColor, itemBlocksBackgroundColor: UIColor, itemHighlightedBackgroundColor: UIColor, itemBlocksSeparatorColor: UIColor, itemPlainSeparatorColor: UIColor, disclosureArrowColor: UIColor, sectionHeaderTextColor: UIColor, freeTextColor: UIColor, freeTextErrorColor: UIColor, freeTextSuccessColor: UIColor, freeMonoIcon: UIColor, itemSwitchColors: PresentationThemeSwitch, itemDisclosureActions: PresentationThemeItemDisclosureActions, itemCheckColors: PresentationThemeCheck, controlSecondaryColor: UIColor, freeInputField: PresentationInputFieldTheme) {
|
|
self.blocksBackgroundColor = blocksBackgroundColor
|
|
self.plainBackgroundColor = plainBackgroundColor
|
|
self.itemPrimaryTextColor = itemPrimaryTextColor
|
|
self.itemSecondaryTextColor = itemSecondaryTextColor
|
|
self.itemDisabledTextColor = itemDisabledTextColor
|
|
self.itemAccentColor = itemAccentColor
|
|
self.itemDestructiveColor = itemDestructiveColor
|
|
self.itemPlaceholderTextColor = itemPlaceholderTextColor
|
|
self.itemBlocksBackgroundColor = itemBlocksBackgroundColor
|
|
self.itemHighlightedBackgroundColor = itemHighlightedBackgroundColor
|
|
self.itemBlocksSeparatorColor = itemBlocksSeparatorColor
|
|
self.itemPlainSeparatorColor = itemPlainSeparatorColor
|
|
self.disclosureArrowColor = disclosureArrowColor
|
|
self.sectionHeaderTextColor = sectionHeaderTextColor
|
|
self.freeTextColor = freeTextColor
|
|
self.freeTextErrorColor = freeTextErrorColor
|
|
self.freeTextSuccessColor = freeTextSuccessColor
|
|
self.freeMonoIcon = freeMonoIcon
|
|
self.itemSwitchColors = itemSwitchColors
|
|
self.itemDisclosureActions = itemDisclosureActions
|
|
self.itemCheckColors = itemCheckColors
|
|
self.controlSecondaryColor = controlSecondaryColor
|
|
self.freeInputField = freeInputField
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeChatList {
|
|
public let backgroundColor: UIColor
|
|
public let itemSeparatorColor: UIColor
|
|
public let itemBackgroundColor: UIColor
|
|
public let pinnedItemBackgroundColor: UIColor
|
|
public let itemHighlightedBackgroundColor: UIColor
|
|
public let titleColor: UIColor
|
|
public let secretTitleColor: UIColor
|
|
public let dateTextColor: UIColor
|
|
public let authorNameColor: UIColor
|
|
public let messageTextColor: UIColor
|
|
public let messageDraftTextColor: UIColor
|
|
public let checkmarkColor: UIColor
|
|
public let pendingIndicatorColor: UIColor
|
|
public let muteIconColor: UIColor
|
|
public let unreadBadgeActiveBackgroundColor: UIColor
|
|
public let unreadBadgeActiveTextColor: UIColor
|
|
public let unreadBadgeInactiveBackgroundColor: UIColor
|
|
public let unreadBadgeInactiveTextColor: UIColor
|
|
public let pinnedBadgeColor: UIColor
|
|
public let pinnedSearchBarColor: UIColor
|
|
public let regularSearchBarColor: UIColor
|
|
public let sectionHeaderFillColor: UIColor
|
|
public let sectionHeaderTextColor: UIColor
|
|
public let searchBarKeyboardColor: PresentationThemeKeyboardColor
|
|
public let verifiedIconFillColor: UIColor
|
|
public let verifiedIconForegroundColor: UIColor
|
|
public let secretIconColor: UIColor
|
|
|
|
init(backgroundColor: UIColor, itemSeparatorColor: UIColor, itemBackgroundColor: UIColor, pinnedItemBackgroundColor: UIColor, itemHighlightedBackgroundColor: UIColor, titleColor: UIColor, secretTitleColor: UIColor, dateTextColor: UIColor, authorNameColor: UIColor, messageTextColor: UIColor, messageDraftTextColor: UIColor, checkmarkColor: UIColor, pendingIndicatorColor: UIColor, muteIconColor: UIColor, unreadBadgeActiveBackgroundColor: UIColor, unreadBadgeActiveTextColor: UIColor, unreadBadgeInactiveBackgroundColor: UIColor, unreadBadgeInactiveTextColor: UIColor, pinnedBadgeColor: UIColor, pinnedSearchBarColor: UIColor, regularSearchBarColor: UIColor, sectionHeaderFillColor: UIColor, sectionHeaderTextColor: UIColor, searchBarKeyboardColor: PresentationThemeKeyboardColor, verifiedIconFillColor: UIColor, verifiedIconForegroundColor: UIColor, secretIconColor: UIColor) {
|
|
self.backgroundColor = backgroundColor
|
|
self.itemSeparatorColor = itemSeparatorColor
|
|
self.itemBackgroundColor = itemBackgroundColor
|
|
self.pinnedItemBackgroundColor = pinnedItemBackgroundColor
|
|
self.itemHighlightedBackgroundColor = itemHighlightedBackgroundColor
|
|
self.titleColor = titleColor
|
|
self.secretTitleColor = secretTitleColor
|
|
self.dateTextColor = dateTextColor
|
|
self.authorNameColor = authorNameColor
|
|
self.messageTextColor = messageTextColor
|
|
self.messageDraftTextColor = messageDraftTextColor
|
|
self.checkmarkColor = checkmarkColor
|
|
self.pendingIndicatorColor = pendingIndicatorColor
|
|
self.muteIconColor = muteIconColor
|
|
self.unreadBadgeActiveBackgroundColor = unreadBadgeActiveBackgroundColor
|
|
self.unreadBadgeActiveTextColor = unreadBadgeActiveTextColor
|
|
self.unreadBadgeInactiveBackgroundColor = unreadBadgeInactiveBackgroundColor
|
|
self.unreadBadgeInactiveTextColor = unreadBadgeInactiveTextColor
|
|
self.pinnedBadgeColor = pinnedBadgeColor
|
|
self.pinnedSearchBarColor = pinnedSearchBarColor
|
|
self.regularSearchBarColor = regularSearchBarColor
|
|
self.sectionHeaderFillColor = sectionHeaderFillColor
|
|
self.sectionHeaderTextColor = sectionHeaderTextColor
|
|
self.searchBarKeyboardColor = searchBarKeyboardColor
|
|
self.verifiedIconFillColor = verifiedIconFillColor
|
|
self.verifiedIconForegroundColor = verifiedIconForegroundColor
|
|
self.secretIconColor = secretIconColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeChatBubble {
|
|
public let incomingFillColor: UIColor
|
|
public let incomingFillHighlightedColor: UIColor
|
|
public let incomingStrokeColor: UIColor
|
|
|
|
public let outgoingFillColor: UIColor
|
|
public let outgoingFillHighlightedColor: UIColor
|
|
public let outgoingStrokeColor: UIColor
|
|
|
|
public let freeformFillColor: UIColor
|
|
public let freeformFillHighlightedColor: UIColor
|
|
public let freeformStrokeColor: UIColor
|
|
|
|
public let infoFillColor: UIColor
|
|
public let infoStrokeColor: UIColor
|
|
|
|
public let incomingPrimaryTextColor: UIColor
|
|
public let incomingSecondaryTextColor: UIColor
|
|
public let incomingLinkTextColor: UIColor
|
|
public let incomingLinkHighlightColor: UIColor
|
|
public let outgoingPrimaryTextColor: UIColor
|
|
public let outgoingSecondaryTextColor: UIColor
|
|
public let outgoingLinkTextColor: UIColor
|
|
public let outgoingLinkHighlightColor: UIColor
|
|
public let infoPrimaryTextColor: UIColor
|
|
public let infoLinkTextColor: UIColor
|
|
|
|
public let incomingAccentTextColor: UIColor
|
|
public let outgoingAccentTextColor: UIColor
|
|
|
|
public let incomingAccentControlColor: UIColor
|
|
public let outgoingAccentControlColor: UIColor
|
|
public let incomingMediaActiveControlColor: UIColor
|
|
public let outgoingMediaActiveControlColor: UIColor
|
|
public let incomingMediaInactiveControlColor: UIColor
|
|
public let outgoingMediaInactiveControlColor: UIColor
|
|
|
|
public let outgoingCheckColor: UIColor
|
|
public let incomingPendingActivityColor: UIColor
|
|
public let outgoingPendingActivityColor: UIColor
|
|
|
|
public let mediaDateAndStatusFillColor: UIColor
|
|
public let mediaDateAndStatusTextColor: UIColor
|
|
|
|
public let incomingFileTitleColor: UIColor
|
|
public let outgoingFileTitleColor: UIColor
|
|
public let incomingFileDescriptionColor: UIColor
|
|
public let outgoingFileDescriptionColor: UIColor
|
|
public let incomingFileDurationColor: UIColor
|
|
public let outgoingFileDurationColor: UIColor
|
|
|
|
public let shareButtonFillColor: UIColor
|
|
public let shareButtonStrokeColor: UIColor
|
|
public let shareButtonForegroundColor: UIColor
|
|
|
|
public let mediaOverlayControlBackgroundColor: UIColor
|
|
public let mediaOverlayControlForegroundColor: UIColor
|
|
|
|
public let actionButtonsIncomingFillColor: UIColor
|
|
public let actionButtonsIncomingStrokeColor: UIColor
|
|
public let actionButtonsIncomingTextColor: UIColor
|
|
|
|
public let actionButtonsOutgoingFillColor: UIColor
|
|
public let actionButtonsOutgoingStrokeColor: UIColor
|
|
public let actionButtonsOutgoingTextColor: UIColor
|
|
|
|
public let selectionControlBorderColor: UIColor
|
|
public let selectionControlFillColor: UIColor
|
|
public let selectionControlForegroundColor: UIColor
|
|
|
|
public init(incomingFillColor: UIColor, incomingFillHighlightedColor: UIColor, incomingStrokeColor: UIColor, outgoingFillColor: UIColor, outgoingFillHighlightedColor: UIColor, outgoingStrokeColor: UIColor, freeformFillColor: UIColor, freeformFillHighlightedColor: UIColor, freeformStrokeColor: UIColor, infoFillColor: UIColor, infoStrokeColor: UIColor, incomingPrimaryTextColor: UIColor, incomingSecondaryTextColor: UIColor, incomingLinkTextColor: UIColor, incomingLinkHighlightColor: UIColor, outgoingPrimaryTextColor: UIColor, outgoingSecondaryTextColor: UIColor, outgoingLinkTextColor: UIColor, outgoingLinkHighlightColor: UIColor, infoPrimaryTextColor: UIColor, infoLinkTextColor: UIColor, incomingAccentTextColor: UIColor, outgoingAccentTextColor: UIColor, incomingAccentControlColor: UIColor, outgoingAccentControlColor: UIColor, incomingMediaActiveControlColor: UIColor, outgoingMediaActiveControlColor: UIColor, incomingMediaInactiveControlColor: UIColor, outgoingMediaInactiveControlColor: UIColor, outgoingCheckColor: UIColor, incomingPendingActivityColor: UIColor, outgoingPendingActivityColor: UIColor, mediaDateAndStatusFillColor: UIColor, mediaDateAndStatusTextColor: UIColor, incomingFileTitleColor: UIColor, outgoingFileTitleColor: UIColor, incomingFileDescriptionColor: UIColor, outgoingFileDescriptionColor: UIColor, incomingFileDurationColor: UIColor, outgoingFileDurationColor: UIColor, shareButtonFillColor: UIColor, shareButtonStrokeColor: UIColor, shareButtonForegroundColor: UIColor, mediaOverlayControlBackgroundColor: UIColor, mediaOverlayControlForegroundColor: UIColor, actionButtonsIncomingFillColor: UIColor, actionButtonsIncomingStrokeColor: UIColor, actionButtonsIncomingTextColor: UIColor, actionButtonsOutgoingFillColor: UIColor, actionButtonsOutgoingStrokeColor: UIColor, actionButtonsOutgoingTextColor: UIColor, selectionControlBorderColor: UIColor, selectionControlFillColor: UIColor, selectionControlForegroundColor: UIColor) {
|
|
self.incomingFillColor = incomingFillColor
|
|
self.incomingFillHighlightedColor = incomingFillHighlightedColor
|
|
self.incomingStrokeColor = incomingStrokeColor
|
|
self.outgoingFillColor = outgoingFillColor
|
|
self.outgoingFillHighlightedColor = outgoingFillHighlightedColor
|
|
self.outgoingStrokeColor = outgoingStrokeColor
|
|
self.freeformFillColor = freeformFillColor
|
|
self.freeformFillHighlightedColor = freeformFillHighlightedColor
|
|
self.freeformStrokeColor = freeformStrokeColor
|
|
self.infoFillColor = infoFillColor
|
|
self.infoStrokeColor = infoStrokeColor
|
|
|
|
self.incomingPrimaryTextColor = incomingPrimaryTextColor
|
|
self.incomingSecondaryTextColor = incomingSecondaryTextColor
|
|
self.incomingLinkTextColor = incomingLinkTextColor
|
|
self.incomingLinkHighlightColor = incomingLinkHighlightColor
|
|
self.outgoingPrimaryTextColor = outgoingPrimaryTextColor
|
|
self.outgoingSecondaryTextColor = outgoingSecondaryTextColor
|
|
self.outgoingLinkTextColor = outgoingLinkTextColor
|
|
self.outgoingLinkHighlightColor = outgoingLinkHighlightColor
|
|
self.infoPrimaryTextColor = infoPrimaryTextColor
|
|
self.infoLinkTextColor = infoLinkTextColor
|
|
|
|
self.incomingAccentTextColor = incomingAccentTextColor
|
|
self.outgoingAccentTextColor = outgoingAccentTextColor
|
|
self.incomingAccentControlColor = incomingAccentControlColor
|
|
self.outgoingAccentControlColor = outgoingAccentControlColor
|
|
|
|
self.incomingMediaActiveControlColor = incomingMediaActiveControlColor
|
|
self.outgoingMediaActiveControlColor = outgoingMediaActiveControlColor
|
|
self.incomingMediaInactiveControlColor = incomingMediaInactiveControlColor
|
|
self.outgoingMediaInactiveControlColor = outgoingMediaInactiveControlColor
|
|
|
|
self.outgoingCheckColor = outgoingCheckColor
|
|
self.incomingPendingActivityColor = incomingPendingActivityColor
|
|
self.outgoingPendingActivityColor = outgoingPendingActivityColor
|
|
self.mediaDateAndStatusFillColor = mediaDateAndStatusFillColor
|
|
self.mediaDateAndStatusTextColor = mediaDateAndStatusTextColor
|
|
|
|
self.incomingFileTitleColor = incomingFileTitleColor
|
|
self.outgoingFileTitleColor = outgoingFileTitleColor
|
|
self.incomingFileDescriptionColor = incomingFileDescriptionColor
|
|
self.outgoingFileDescriptionColor = outgoingFileDescriptionColor
|
|
self.incomingFileDurationColor = incomingFileDurationColor
|
|
self.outgoingFileDurationColor = outgoingFileDurationColor
|
|
|
|
self.shareButtonFillColor = shareButtonFillColor
|
|
self.shareButtonStrokeColor = shareButtonStrokeColor
|
|
self.shareButtonForegroundColor = shareButtonForegroundColor
|
|
|
|
self.mediaOverlayControlBackgroundColor = mediaOverlayControlBackgroundColor
|
|
self.mediaOverlayControlForegroundColor = mediaOverlayControlForegroundColor
|
|
|
|
self.actionButtonsIncomingFillColor = actionButtonsIncomingFillColor
|
|
self.actionButtonsIncomingStrokeColor = actionButtonsIncomingStrokeColor
|
|
self.actionButtonsIncomingTextColor = actionButtonsIncomingTextColor
|
|
|
|
self.actionButtonsOutgoingFillColor = actionButtonsOutgoingFillColor
|
|
self.actionButtonsOutgoingStrokeColor = actionButtonsOutgoingStrokeColor
|
|
self.actionButtonsOutgoingTextColor = actionButtonsOutgoingTextColor
|
|
|
|
self.selectionControlBorderColor = selectionControlBorderColor
|
|
self.selectionControlFillColor = selectionControlFillColor
|
|
self.selectionControlForegroundColor = selectionControlForegroundColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeServiceMessage {
|
|
public let serviceMessageFillColor: UIColor
|
|
public let serviceMessagePrimaryTextColor: UIColor
|
|
public let serviceMessageLinkHighlightColor: UIColor
|
|
|
|
public let unreadBarFillColor: UIColor
|
|
public let unreadBarStrokeColor: UIColor
|
|
public let unreadBarTextColor: UIColor
|
|
|
|
public let dateFillStaticColor: UIColor
|
|
public let dateFillFloatingColor: UIColor
|
|
public let dateTextColor: UIColor
|
|
|
|
public init(serviceMessageFillColor: UIColor, serviceMessagePrimaryTextColor: UIColor, serviceMessageLinkHighlightColor: UIColor, unreadBarFillColor: UIColor, unreadBarStrokeColor: UIColor, unreadBarTextColor: UIColor, dateFillStaticColor: UIColor, dateFillFloatingColor: UIColor, dateTextColor: UIColor) {
|
|
self.serviceMessageFillColor = serviceMessageFillColor
|
|
self.serviceMessagePrimaryTextColor = serviceMessagePrimaryTextColor
|
|
self.serviceMessageLinkHighlightColor = serviceMessageLinkHighlightColor
|
|
self.unreadBarFillColor = unreadBarFillColor
|
|
self.unreadBarStrokeColor = unreadBarStrokeColor
|
|
self.unreadBarTextColor = unreadBarTextColor
|
|
self.dateFillStaticColor = dateFillStaticColor
|
|
self.dateFillFloatingColor = dateFillFloatingColor
|
|
self.dateTextColor = dateTextColor
|
|
}
|
|
}
|
|
|
|
public enum PresentationThemeKeyboardColor: Int32 {
|
|
case light = 0
|
|
case dark = 1
|
|
|
|
public var keyboardAppearance: UIKeyboardAppearance {
|
|
switch self {
|
|
case .light:
|
|
return .default
|
|
case .dark:
|
|
return .dark
|
|
}
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeChatInputPanelMediaRecordingControl {
|
|
public let buttonColor: UIColor
|
|
public let micLevelColor: UIColor
|
|
public let activeIconColor: UIColor
|
|
public let panelControlFillColor: UIColor
|
|
public let panelControlStrokeColor: UIColor
|
|
public let panelControlContentPrimaryColor: UIColor
|
|
public let panelControlContentAccentColor: UIColor
|
|
|
|
init(buttonColor: UIColor, micLevelColor: UIColor, activeIconColor: UIColor, panelControlFillColor: UIColor, panelControlStrokeColor: UIColor, panelControlContentPrimaryColor: UIColor, panelControlContentAccentColor: UIColor) {
|
|
self.buttonColor = buttonColor
|
|
self.micLevelColor = micLevelColor
|
|
self.activeIconColor = activeIconColor
|
|
self.panelControlFillColor = panelControlFillColor
|
|
self.panelControlStrokeColor = panelControlStrokeColor
|
|
self.panelControlContentPrimaryColor = panelControlContentPrimaryColor
|
|
self.panelControlContentAccentColor = panelControlContentAccentColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeChatInputPanel {
|
|
public let panelBackgroundColor: UIColor
|
|
public let panelStrokeColor: UIColor
|
|
public let panelControlAccentColor: UIColor
|
|
public let panelControlColor: UIColor
|
|
public let panelControlDisabledColor: UIColor
|
|
public let panelControlDestructiveColor: UIColor
|
|
public let inputBackgroundColor: UIColor
|
|
public let inputStrokeColor: UIColor
|
|
public let inputPlaceholderColor: UIColor
|
|
public let inputTextColor: UIColor
|
|
public let inputControlColor: UIColor
|
|
public let actionControlFillColor: UIColor
|
|
public let actionControlForegroundColor: UIColor
|
|
public let primaryTextColor: UIColor
|
|
public let secondaryTextColor: UIColor
|
|
public let mediaRecordingDotColor: UIColor
|
|
public let keyboardColor: PresentationThemeKeyboardColor
|
|
public let mediaRecordingControl: PresentationThemeChatInputPanelMediaRecordingControl
|
|
|
|
public init(panelBackgroundColor: UIColor, panelStrokeColor: UIColor, panelControlAccentColor: UIColor, panelControlColor: UIColor, panelControlDisabledColor: UIColor, panelControlDestructiveColor: UIColor, inputBackgroundColor: UIColor, inputStrokeColor: UIColor, inputPlaceholderColor: UIColor, inputTextColor: UIColor, inputControlColor: UIColor, actionControlFillColor: UIColor, actionControlForegroundColor: UIColor, primaryTextColor: UIColor, secondaryTextColor: UIColor, mediaRecordingDotColor: UIColor, keyboardColor: PresentationThemeKeyboardColor, mediaRecordingControl: PresentationThemeChatInputPanelMediaRecordingControl) {
|
|
self.panelBackgroundColor = panelBackgroundColor
|
|
self.panelStrokeColor = panelStrokeColor
|
|
self.panelControlAccentColor = panelControlAccentColor
|
|
self.panelControlColor = panelControlColor
|
|
self.panelControlDisabledColor = panelControlDisabledColor
|
|
self.panelControlDestructiveColor = panelControlDestructiveColor
|
|
self.inputBackgroundColor = inputBackgroundColor
|
|
self.inputStrokeColor = inputStrokeColor
|
|
self.inputPlaceholderColor = inputPlaceholderColor
|
|
self.inputTextColor = inputTextColor
|
|
self.inputControlColor = inputControlColor
|
|
self.actionControlFillColor = actionControlFillColor
|
|
self.actionControlForegroundColor = actionControlForegroundColor
|
|
self.primaryTextColor = primaryTextColor
|
|
self.secondaryTextColor = secondaryTextColor
|
|
self.mediaRecordingDotColor = mediaRecordingDotColor
|
|
self.keyboardColor = keyboardColor
|
|
self.mediaRecordingControl = mediaRecordingControl
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeInputMediaPanel {
|
|
public let panelSerapatorColor: UIColor
|
|
public let panelIconColor: UIColor
|
|
public let panelHighlightedIconBackgroundColor: UIColor
|
|
public let stickersBackgroundColor: UIColor
|
|
public let stickersSectionTextColor: UIColor
|
|
public let stickersSearchBackgroundColor: UIColor
|
|
public let stickersSearchPlaceholderColor: UIColor
|
|
public let stickersSearchPrimaryColor: UIColor
|
|
public let stickersSearchControlColor: UIColor
|
|
public let gifsBackgroundColor: UIColor
|
|
|
|
public init(panelSerapatorColor: UIColor, panelIconColor: UIColor, panelHighlightedIconBackgroundColor: UIColor, stickersBackgroundColor: UIColor, stickersSectionTextColor: UIColor, stickersSearchBackgroundColor: UIColor, stickersSearchPlaceholderColor: UIColor, stickersSearchPrimaryColor: UIColor, stickersSearchControlColor: UIColor, gifsBackgroundColor: UIColor) {
|
|
self.panelSerapatorColor = panelSerapatorColor
|
|
self.panelIconColor = panelIconColor
|
|
self.panelHighlightedIconBackgroundColor = panelHighlightedIconBackgroundColor
|
|
self.stickersBackgroundColor = stickersBackgroundColor
|
|
self.stickersSectionTextColor = stickersSectionTextColor
|
|
self.stickersSearchBackgroundColor = stickersSearchBackgroundColor
|
|
self.stickersSearchPlaceholderColor = stickersSearchPlaceholderColor
|
|
self.stickersSearchPrimaryColor = stickersSearchPrimaryColor
|
|
self.stickersSearchControlColor = stickersSearchControlColor
|
|
self.gifsBackgroundColor = gifsBackgroundColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeInputButtonPanel {
|
|
public let panelSerapatorColor: UIColor
|
|
public let panelBackgroundColor: UIColor
|
|
public let buttonFillColor: UIColor
|
|
public let buttonStrokeColor: UIColor
|
|
public let buttonHighlightedFillColor: UIColor
|
|
public let buttonHighlightedStrokeColor: UIColor
|
|
public let buttonTextColor: UIColor
|
|
|
|
public init(panelSerapatorColor: UIColor, panelBackgroundColor: UIColor, buttonFillColor: UIColor, buttonStrokeColor: UIColor, buttonHighlightedFillColor: UIColor, buttonHighlightedStrokeColor: UIColor, buttonTextColor: UIColor) {
|
|
self.panelSerapatorColor = panelSerapatorColor
|
|
self.panelBackgroundColor = panelBackgroundColor
|
|
self.buttonFillColor = buttonFillColor
|
|
self.buttonStrokeColor = buttonStrokeColor
|
|
self.buttonHighlightedFillColor = buttonHighlightedFillColor
|
|
self.buttonHighlightedStrokeColor = buttonHighlightedStrokeColor
|
|
self.buttonTextColor = buttonTextColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeChatHistoryNavigation {
|
|
public let fillColor: UIColor
|
|
public let strokeColor: UIColor
|
|
public let foregroundColor: UIColor
|
|
public let badgeBackgroundColor: UIColor
|
|
public let badgeStrokeColor: UIColor
|
|
public let badgeTextColor: UIColor
|
|
|
|
public init(fillColor: UIColor, strokeColor: UIColor, foregroundColor: UIColor, badgeBackgroundColor: UIColor, badgeStrokeColor: UIColor, badgeTextColor: UIColor) {
|
|
self.fillColor = fillColor
|
|
self.strokeColor = strokeColor
|
|
self.foregroundColor = foregroundColor
|
|
self.badgeBackgroundColor = badgeBackgroundColor
|
|
self.badgeStrokeColor = badgeStrokeColor
|
|
self.badgeTextColor = badgeTextColor
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeChat {
|
|
public let bubble: PresentationThemeChatBubble
|
|
public let serviceMessage: PresentationThemeServiceMessage
|
|
public let inputPanel: PresentationThemeChatInputPanel
|
|
public let inputMediaPanel: PresentationThemeInputMediaPanel
|
|
public let inputButtonPanel: PresentationThemeInputButtonPanel
|
|
public let historyNavigation: PresentationThemeChatHistoryNavigation
|
|
|
|
public init(bubble: PresentationThemeChatBubble, serviceMessage: PresentationThemeServiceMessage, inputPanel: PresentationThemeChatInputPanel, inputMediaPanel: PresentationThemeInputMediaPanel, inputButtonPanel: PresentationThemeInputButtonPanel, historyNavigation: PresentationThemeChatHistoryNavigation) {
|
|
self.bubble = bubble
|
|
self.serviceMessage = serviceMessage
|
|
self.inputPanel = inputPanel
|
|
self.inputMediaPanel = inputMediaPanel
|
|
self.inputButtonPanel = inputButtonPanel
|
|
self.historyNavigation = historyNavigation
|
|
}
|
|
}
|
|
|
|
public final class PresentationThemeInAppNotification {
|
|
public let fillColor: UIColor
|
|
public let primaryTextColor: UIColor
|
|
|
|
public let expandedNotification: PresentationThemeExpandedNotification
|
|
|
|
public init(fillColor: UIColor, primaryTextColor: UIColor, expandedNotification: PresentationThemeExpandedNotification) {
|
|
self.fillColor = fillColor
|
|
self.primaryTextColor = primaryTextColor
|
|
self.expandedNotification = expandedNotification
|
|
}
|
|
}
|
|
|
|
public enum PresentationThemeBuiltinName {
|
|
case dayClassic
|
|
case day
|
|
case nightGrayscale
|
|
case nightAccent
|
|
}
|
|
|
|
public enum PresentationThemeName: Equatable {
|
|
case builtin(PresentationThemeBuiltinName)
|
|
case custom(String)
|
|
|
|
public static func ==(lhs: PresentationThemeName, rhs: PresentationThemeName) -> Bool {
|
|
switch lhs {
|
|
case let .builtin(name):
|
|
if case .builtin(name) = rhs {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
case let .custom(name):
|
|
if case .custom(name) = rhs {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public final class PresentationTheme {
|
|
public let name: PresentationThemeName
|
|
public let overallDarkAppearance: Bool
|
|
public let allowsCustomWallpapers: Bool
|
|
public let rootController: PresentationThemeRootController
|
|
public let list: PresentationThemeList
|
|
public let chatList: PresentationThemeChatList
|
|
public let chat: PresentationThemeChat
|
|
public let actionSheet: PresentationThemeActionSheet
|
|
public let inAppNotification: PresentationThemeInAppNotification
|
|
|
|
public let resourceCache: PresentationsResourceCache = PresentationsResourceCache()
|
|
|
|
public init(name: PresentationThemeName, overallDarkAppearance: Bool, allowsCustomWallpapers: Bool, rootController: PresentationThemeRootController, list: PresentationThemeList, chatList: PresentationThemeChatList, chat: PresentationThemeChat, actionSheet: PresentationThemeActionSheet, inAppNotification: PresentationThemeInAppNotification) {
|
|
self.name = name
|
|
self.overallDarkAppearance = overallDarkAppearance
|
|
self.allowsCustomWallpapers = allowsCustomWallpapers
|
|
self.rootController = rootController
|
|
self.list = list
|
|
self.chatList = chatList
|
|
self.chat = chat
|
|
self.actionSheet = actionSheet
|
|
self.inAppNotification = inAppNotification
|
|
}
|
|
|
|
public func image(_ key: Int32, _ generate: (PresentationTheme) -> UIImage?) -> UIImage? {
|
|
return self.resourceCache.image(key, self, generate)
|
|
}
|
|
|
|
public func object(_ key: Int32, _ generate: (PresentationTheme) -> AnyObject?) -> AnyObject? {
|
|
return self.resourceCache.object(key, self, generate)
|
|
}
|
|
}
|