Swiftgram/TelegramUI/DefaultPresentationTheme.swift
2017-10-03 15:57:32 +03:00

244 lines
9.8 KiB
Swift

import Foundation
import UIKit
private let accentColor: UIColor = UIColor(rgb: 0x007ee5)
private let destructiveColor: UIColor = UIColor(rgb: 0xff3b30)
private let rootStatusBar = PresentationThemeRootNavigationStatusBar(
style: .black
)
private let rootTabBar = PresentationThemeRootTabBar(
backgroundColor: UIColor(rgb: 0xf7f7f7),
separatorColor: UIColor(rgb: 0xa3a3a3),
iconColor: UIColor(rgb: 0x929292),
selectedIconColor: accentColor,
textColor: UIColor(rgb: 0x929292),
selectedTextColor: accentColor,
badgeBackgroundColor: UIColor(rgb: 0xff3b30),
badgeTextColor: .white
)
private let rootNavigationBar = PresentationThemeRootNavigationBar(
buttonColor: accentColor,
primaryTextColor: .black,
secondaryTextColor: UIColor(rgb: 0x787878),
controlColor: UIColor(rgb: 0x7e8791),
accentTextColor: accentColor,
backgroundColor: UIColor(red: 0.968626451, green: 0.968626451, blue: 0.968626451, alpha: 1.0),
separatorColor: UIColor(red: 0.6953125, green: 0.6953125, blue: 0.6953125, alpha: 1.0),
badgeBackgroundColor: UIColor(rgb: 0xff3b30),
badgeTextColor: .white
)
private let activeNavigationSearchBar = PresentationThemeActiveNavigationSearchBar(
backgroundColor: .white,
accentColor: accentColor,
inputFillColor: UIColor(rgb: 0xe9e9e9),
inputTextColor: .black,
inputPlaceholderTextColor: UIColor(rgb: 0x8e8e93),
inputIconColor: UIColor(rgb: 0x8e8e93),
inputClearButtonColor: UIColor(rgb: 0x7b7b81),
separatorColor: UIColor(red: 0.6953125, green: 0.6953125, blue: 0.6953125, alpha: 1.0)
)
private let rootController = PresentationThemeRootController(
statusBar: rootStatusBar,
tabBar: rootTabBar,
navigationBar: rootNavigationBar,
activeNavigationSearchBar: activeNavigationSearchBar
)
private let switchColors = PresentationThemeSwitch(
frameColor: UIColor(rgb: 0xe0e0e0),
handleColor: UIColor(rgb: 0xffffff),
contentColor: UIColor(rgb: 0x42d451)
)
private let list = PresentationThemeList(
blocksBackgroundColor: UIColor(rgb: 0xefeff4),
plainBackgroundColor: .white,
itemPrimaryTextColor: .black,
itemSecondaryTextColor: UIColor(rgb: 0x8e8e93),
itemDisabledTextColor: UIColor(rgb: 0x8e8e93),
itemAccentColor: accentColor,
itemDestructiveColor: destructiveColor,
itemPlaceholderTextColor: UIColor(rgb: 0xc8c8ce),
itemBackgroundColor: .white,
itemHighlightedBackgroundColor: UIColor(rgb: 0xd9d9d9),
itemSeparatorColor: UIColor(rgb: 0xc8c7cc),
disclosureArrowColor: UIColor(rgb: 0xbab9be),
sectionHeaderTextColor: UIColor(rgb: 0x6d6d72),
freeTextColor: UIColor(rgb: 0x6d6d72),
freeTextErrorColor: UIColor(rgb: 0xcf3030),
freeTextSuccessColor: UIColor(rgb: 0x26972c),
itemSwitchColors: switchColors
)
private let chatList = PresentationThemeChatList(
backgroundColor: .white,
itemSeparatorColor: UIColor(rgb: 0xc8c7cc),
itemBackgroundColor: .white,
pinnedItemBackgroundColor: UIColor(rgb: 0xf7f7f7),
itemHighlightedBackgroundColor: UIColor(rgb: 0xd9d9d9),
titleColor: .black,
secretTitleColor: UIColor(rgb: 0x00a629),
dateTextColor: UIColor(rgb: 0x8e8e93),
authorNameColor: .black,
messageTextColor: UIColor(rgb: 0x8e8e93),
messageDraftTextColor: UIColor(rgb: 0xdd4b39),
checkmarkColor: UIColor(rgb: 0x21c004),
pendingIndicatorColor: UIColor(rgb: 0x8e8e93),
muteIconColor: UIColor(rgb: 0xa7a7ad),
unreadBadgeActiveBackgroundColor: accentColor,
unreadBadgeActiveTextColor: .white,
unreadBadgeInactiveBackgroundColor: UIColor(rgb: 0xb6b6bb),
unreadBadgeInactiveTextColor: .white,
pinnedBadgeColor: UIColor(rgb: 0x939399),
pinnedSearchBarColor: UIColor(rgb: 0xe5e5e5),
regularSearchBarColor: UIColor(rgb: 0xe9e9e9),
sectionHeaderFillColor: UIColor(rgb: 0xf7f7f7),
sectionHeaderTextColor: UIColor(rgb: 0x8e8e93),
searchBarKeyboardColor: .light
)
private let bubble = PresentationThemeChatBubble(
incomingFillColor: UIColor(rgb: 0xffffff),
incomingFillHighlightedColor: UIColor(rgb: 0xd9f4ff),
incomingStrokeColor: UIColor(rgb: 0x86A9C9, alpha: 0.5),
outgoingFillColor: UIColor(rgb: 0xE1FFC7),
outgoingFillHighlightedColor: UIColor(rgb: 0xc8ffa6),
outgoingStrokeColor: UIColor(rgb: 0x86A9C9, alpha: 0.5),
freeformFillColor: UIColor(rgb: 0xffffff),
freeformFillHighlightedColor: UIColor(rgb: 0xd9f4ff),
freeformStrokeColor: UIColor(rgb: 0x86A9C9, alpha: 0.5),
infoFillColor: UIColor(rgb: 0xffffff),
infoStrokeColor: UIColor(rgb: 0x86A9C9, alpha: 0.5),
incomingPrimaryTextColor: UIColor(rgb: 0x000000),
incomingSecondaryTextColor: UIColor(rgb: 0x525252, alpha: 0.6),
incomingLinkTextColor: UIColor(rgb: 0x004bad),
incomingLinkHighlightColor: accentColor.withAlphaComponent(0.3),
outgoingPrimaryTextColor: UIColor(rgb: 0x000000),
outgoingSecondaryTextColor: UIColor(rgb: 0x008c09, alpha: 0.8),
outgoingLinkTextColor: UIColor(rgb: 0x004bad),
outgoingLinkHighlightColor: accentColor.withAlphaComponent(0.3),
infoPrimaryTextColor: UIColor(rgb: 0x000000),
infoLinkTextColor: UIColor(rgb: 0x004bad),
incomingAccentColor: UIColor(rgb: 0x3ca7fe),
outgoingAccentColor: UIColor(rgb: 0x00a700),
outgoingCheckColor: UIColor(rgb: 0x19C700),
incomingPendingActivityColor: UIColor(rgb: 0x525252, alpha: 0.6),
outgoingPendingActivityColor: UIColor(rgb: 0x42b649),
mediaDateAndStatusFillColor: UIColor(white: 0.0, alpha: 0.5),
mediaDateAndStatusTextColor: .white,
incomingFileTitleColor: UIColor(rgb: 0x0b8bed),
outgoingFileTitleColor: UIColor(rgb: 0x3faa3c),
incomingFileDescriptionColor: UIColor(rgb: 0x999999),
outgoingFileDescriptionColor: UIColor(rgb: 0x6fb26a),
incomingFileDurationColor: UIColor(rgb: 0x525252, alpha: 0.6),
outgoingFileDurationColor: UIColor(rgb: 0x008c09, alpha: 0.8),
shareButtonFillColor: UIColor(rgb: 0x748391, alpha: 0.45),
shareButtonForegroundColor: .white,
mediaOverlayControlBackgroundColor: UIColor(white: 0.0, alpha: 0.6),
mediaOverlayControlForegroundColor: UIColor(white: 1.0, alpha: 1.0),
actionButtonsFillColor: UIColor(rgb: 0x596E89),
actionButtonsTextColor: .white
)
private let serviceMessage = PresentationThemeServiceMessage(
serviceMessageFillColor: UIColor(rgb: 0x748391, alpha: 0.45),
serviceMessagePrimaryTextColor: .white,
serviceMessageLinkHighlightColor: UIColor(rgb: 0x748391, alpha: 0.25),
unreadBarFillColor: UIColor(white: 1.0, alpha: 0.9),
unreadBarStrokeColor: UIColor(white: 0.0, alpha: 0.2),
unreadBarTextColor: UIColor(rgb: 0x86868d),
dateFillStaticColor: UIColor(rgb: 0x748391, alpha: 0.45),
dateFillFloatingColor: UIColor(rgb: 0x939fab, alpha: 0.5),
dateTextColor: .white
)
private let inputPanelMediaRecordingControl = PresentationThemeChatInputPanelMediaRecordingControl(
buttonColor: accentColor,
micLevelColor: accentColor.withAlphaComponent(0.2),
activeIconColor: .white,
panelControlFillColor: UIColor(rgb: 0xf7f7f7),
panelControlStrokeColor: UIColor(rgb: 0xb2b2b2),
panelControlContentPrimaryColor: UIColor(rgb: 0x9597a0),
panelControlContentAccentColor: accentColor
)
private let inputPanel = PresentationThemeChatInputPanel(
panelBackgroundColor: UIColor(rgb: 0xf2f4f6),
panelStrokeColor: UIColor(rgb: 0xbdc2c7),
panelControlAccentColor: accentColor,
panelControlColor: UIColor(rgb: 0x727b87),
panelControlDisabledColor: UIColor(rgb: 0x727b87, alpha: 0.5),
panelControlDestructiveColor: UIColor(rgb: 0xff3b30),
inputBackgroundColor: UIColor(rgb: 0xffffff),
inputStrokeColor: UIColor(rgb: 0xd3d6da),
inputPlaceholderColor: UIColor(rgb: 0xbebec0),
inputTextColor: .black,
inputControlColor: UIColor(rgb: 0x9099A2, alpha: 0.6),
primaryTextColor: .black,
mediaRecordingDotColor: UIColor(rgb: 0xed2521),
keyboardColor: .light,
mediaRecordingControl: inputPanelMediaRecordingControl
)
private let inputMediaPanel = PresentationThemeInputMediaPanel(
panelSerapatorColor: UIColor(rgb: 0xBEC2C6),
panelIconColor: UIColor(rgb: 0x9099A2),
panelHighlightedIconBackgroundColor: UIColor(rgb: 0x9099A2, alpha: 0.2),
stickersBackgroundColor: UIColor(rgb: 0xE8EBF0),
stickersSectionTextColor: UIColor(rgb: 0x9099A2),
gifsBackgroundColor: .white
)
private let inputButtonPanel = PresentationThemeInputButtonPanel(
panelSerapatorColor: UIColor(rgb: 0xBEC2C6),
panelBackgroundColor: UIColor(rgb: 0xdee2e6),
buttonFillColor: .white,
buttonStrokeColor: UIColor(rgb: 0xc3c7c9),
buttonHighlightedFillColor: UIColor(rgb: 0xa8b3c0),
buttonHighlightedStrokeColor: UIColor(rgb: 0xc3c7c9),
buttonTextColor: .black
)
private let historyNavigation = PresentationThemeChatHistoryNavigation(
fillColor: .white,
strokeColor: UIColor(rgb: 0x000000, alpha: 0.15),
foregroundColor: UIColor(rgb: 0x88888D),
badgeBackgroundColor: accentColor,
badgeTextColor: .white
)
private let chat = PresentationThemeChat(
bubble: bubble,
serviceMessage: serviceMessage,
inputPanel: inputPanel,
inputMediaPanel: inputMediaPanel,
inputButtonPanel: inputButtonPanel,
historyNavigation: historyNavigation
)
private let actionSheet = PresentationThemeActionSheet(
dimColor: UIColor(white: 0.0, alpha: 0.4),
backgroundType: .light,
itemBackgroundColor: UIColor(white: 1.0, alpha: 0.8),
itemHighlightedBackgroundColor: UIColor(white: 0.9, alpha: 0.7),
standardActionTextColor: accentColor,
destructiveActionTextColor: destructiveColor,
disabledActionTextColor: UIColor(rgb: 0x4d4d4d),
primaryTextColor: .black,
secondaryTextColor: UIColor(rgb: 0x5e5e5e),
controlAccentColor: accentColor
)
let defaultPresentationTheme = PresentationTheme(
rootController: rootController,
list: list,
chatList: chatList,
chat: chat,
actionSheet: actionSheet
)