mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-21 13:53:37 +00:00
1. update style: bigger fonts and insets 2. update background blur 3. get rid of MWM prefix 4. replace the timer with the simplier dispatch async after. In this case there is no needed to create a timer for each toasts message just to add a timeout 5. reorder Toast class methods 6. replace the instance `show` method with a `static show`. Because there non needed to call show every time. We do not have stored toast that will be showed in different places thane created. Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com> Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
466 lines
15 KiB
Swift
466 lines
15 KiB
Swift
enum GlobalStyleSheet: String, CaseIterable {
|
|
case tableView = "TableView"
|
|
case tableCell = "TableCell"
|
|
case tableViewCell = "MWMTableViewCell"
|
|
case defaultTableViewCell
|
|
case tableViewHeaderFooterView = "TableViewHeaderFooterView"
|
|
case searchBar = "SearchBar"
|
|
case navigationBar = "NavigationBar"
|
|
case navigationBarItem = "NavigationBarItem"
|
|
case checkmark = "Checkmark"
|
|
case `switch` = "Switch"
|
|
case pageControl = "PageControl"
|
|
case starRatingView = "StarRatingView"
|
|
case difficultyView = "DifficultyView"
|
|
case divider = "Divider"
|
|
case solidDivider = "SolidDivider"
|
|
case background = "Background"
|
|
case pressBackground = "PressBackground"
|
|
case primaryBackground = "PrimaryBackground"
|
|
case secondaryBackground = "SecondaryBackground"
|
|
case menuBackground = "MenuBackground"
|
|
case bottomTabBarButton = "BottomTabBarButton"
|
|
case trackRecordingWidgetButton = "TrackRecordingWidgetButton"
|
|
case blackOpaqueBackground = "BlackOpaqueBackground"
|
|
case blueBackground = "BlueBackground"
|
|
case fadeBackground = "FadeBackground"
|
|
case errorBackground = "ErrorBackground"
|
|
case blackStatusBarBackground = "BlackStatusBarBackground"
|
|
case presentationBackground = "PresentationBackground"
|
|
case clearBackground = "ClearBackground"
|
|
case border = "Border"
|
|
case tabView = "TabView"
|
|
case dialogView = "DialogView"
|
|
case alertView = "AlertView"
|
|
case alertViewTextFieldContainer = "AlertViewTextFieldContainer"
|
|
case alertViewTextField = "AlertViewTextField"
|
|
case searchStatusBarView = "SearchStatusBarView"
|
|
case flatNormalButton = "FlatNormalButton"
|
|
case flatNormalButtonBig = "FlatNormalButtonBig"
|
|
case flatNormalTransButton = "FlatNormalTransButton"
|
|
case flatNormalTransButtonBig = "FlatNormalTransButtonBig"
|
|
case flatGrayTransButton = "FlatGrayTransButton"
|
|
case flatPrimaryTransButton = "FlatPrimaryTransButton"
|
|
case flatRedTransButton = "FlatRedTransButton"
|
|
case flatRedTransButtonBig = "FlatRedTransButtonBig"
|
|
case flatRedButton = "FlatRedButton"
|
|
case moreButton = "MoreButton"
|
|
case editButton = "EditButton"
|
|
case rateAppButton = "RateAppButton"
|
|
case termsOfUseLinkText = "TermsOfUseLinkText"
|
|
case termsOfUseGrayButton = "TermsOfUseGrayButton"
|
|
case badge = "Badge"
|
|
case blue = "MWMBlue"
|
|
case black = "MWMBlack"
|
|
case other = "MWMOther"
|
|
case gray = "MWMGray"
|
|
case separator = "MWMSeparator"
|
|
case white = "MWMWhite"
|
|
case datePickerView = "DatePickerView"
|
|
case valueStepperView = "ValueStepperView"
|
|
case grabber
|
|
case modalSheetBackground
|
|
case modalSheetContent
|
|
case toastBackground
|
|
case toastLabel
|
|
}
|
|
|
|
extension GlobalStyleSheet: IStyleSheet {
|
|
func styleResolverFor(colors: IColors, fonts: IFonts) -> Theme.StyleResolver {
|
|
switch self {
|
|
case .tableView:
|
|
return .add { s in
|
|
s.backgroundColor = colors.white
|
|
s.separatorColor = colors.blackDividers
|
|
s.exclusions = [String(describing: UIDatePicker.self)]
|
|
}
|
|
case .tableCell:
|
|
return .add { s in
|
|
s.backgroundColor = colors.white
|
|
s.fontColor = colors.blackPrimaryText
|
|
s.tintColor = colors.linkBlue
|
|
s.fontColorDetailed = colors.blackSecondaryText
|
|
s.backgroundColorSelected = colors.pressBackground
|
|
s.exclusions = [String(describing: UIDatePicker.self), "_UIActivityUserDefaultsActivityCell"]
|
|
}
|
|
case .tableViewCell:
|
|
return .addFrom(Self.tableCell) { s in
|
|
}
|
|
case .defaultTableViewCell:
|
|
return .add { s in
|
|
s.backgroundColor = colors.white
|
|
}
|
|
case .tableViewHeaderFooterView:
|
|
return .add { s in
|
|
s.font = fonts.medium14
|
|
s.fontColor = colors.blackSecondaryText
|
|
}
|
|
case .searchBar:
|
|
return .add { s in
|
|
s.backgroundColor = colors.white
|
|
s.barTintColor = colors.primary
|
|
s.fontColor = colors.blackPrimaryText
|
|
s.fontColorDetailed = UIColor.white
|
|
s.tintColor = colors.blackSecondaryText
|
|
}
|
|
case .navigationBar:
|
|
return .add { s in
|
|
s.barTintColor = colors.primary
|
|
s.tintColor = colors.whitePrimaryText
|
|
s.backgroundImage = UIImage()
|
|
s.shadowImage = UIImage()
|
|
s.font = fonts.header
|
|
s.fontColor = colors.whitePrimaryText
|
|
}
|
|
case .navigationBarItem:
|
|
return .add { s in
|
|
s.font = fonts.regular18
|
|
s.fontColor = colors.whitePrimaryText
|
|
s.fontColorDisabled = UIColor.lightGray
|
|
s.fontColorHighlighted = colors.whitePrimaryTextHighlighted
|
|
s.tintColor = colors.whitePrimaryText
|
|
}
|
|
case .checkmark:
|
|
return .add { s in
|
|
s.onTintColor = colors.linkBlue
|
|
s.offTintColor = colors.blackHintText
|
|
}
|
|
case .switch:
|
|
return .add { s in
|
|
s.onTintColor = colors.linkBlue
|
|
}
|
|
case .pageControl:
|
|
return .add { s in
|
|
s.pageIndicatorTintColor = colors.blackHintText
|
|
s.currentPageIndicatorTintColor = colors.blackSecondaryText
|
|
s.backgroundColor = colors.white
|
|
}
|
|
case .starRatingView:
|
|
return .add { s in
|
|
s.onTintColor = colors.ratingYellow
|
|
s.offTintColor = colors.blackDividers
|
|
}
|
|
case .difficultyView:
|
|
return .add { s in
|
|
s.colors = [colors.blackSecondaryText, colors.ratingGreen, colors.ratingYellow, colors.ratingRed]
|
|
s.offTintColor = colors.blackSecondaryText
|
|
s.backgroundColor = colors.clear
|
|
}
|
|
case .divider:
|
|
return .add { s in
|
|
s.backgroundColor = colors.blackDividers
|
|
}
|
|
case .solidDivider:
|
|
return .add { s in
|
|
s.backgroundColor = colors.solidDividers
|
|
}
|
|
case .background:
|
|
return .add { s in
|
|
s.backgroundColor = colors.white
|
|
s.backgroundColorSelected = colors.pressBackground
|
|
}
|
|
case .pressBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.pressBackground
|
|
}
|
|
case .primaryBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.primary
|
|
}
|
|
case .secondaryBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.secondary
|
|
}
|
|
case .menuBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.menuBackground
|
|
}
|
|
case .bottomTabBarButton:
|
|
return .add { s in
|
|
s.backgroundColor = colors.tabBarButtonBackground
|
|
s.tintColor = colors.blackSecondaryText
|
|
s.coloring = MWMButtonColoring.black
|
|
s.cornerRadius = .buttonDefault
|
|
s.shadowColor = UIColor(0,0,0,alpha20)
|
|
s.shadowOpacity = 1
|
|
s.shadowOffset = CGSize(width: 0, height: 1)
|
|
s.onTintColor = .red
|
|
}
|
|
case .trackRecordingWidgetButton:
|
|
return .addFrom(Self.bottomTabBarButton) { s in
|
|
s.cornerRadius = .custom(23)
|
|
}
|
|
case .blackOpaqueBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.blackOpaque
|
|
}
|
|
case .blueBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.linkBlue
|
|
}
|
|
case .fadeBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.fadeBackground
|
|
}
|
|
case .errorBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.errorPink
|
|
}
|
|
case .blackStatusBarBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.blackStatusBarBackground
|
|
}
|
|
case .presentationBackground:
|
|
return .add { s in
|
|
s.backgroundColor = UIColor.black.withAlphaComponent(alpha40)
|
|
}
|
|
case .clearBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.clear
|
|
}
|
|
case .border:
|
|
return .add { s in
|
|
s.backgroundColor = colors.border
|
|
}
|
|
case .tabView:
|
|
return .add { s in
|
|
s.backgroundColor = colors.pressBackground
|
|
s.barTintColor = colors.primary
|
|
s.tintColor = colors.white
|
|
s.fontColor = colors.whitePrimaryText
|
|
s.font = fonts.medium14
|
|
}
|
|
case .dialogView:
|
|
return .add { s in
|
|
s.cornerRadius = .buttonDefault
|
|
s.shadowRadius = 2
|
|
s.shadowColor = UIColor(0,0,0,alpha26)
|
|
s.shadowOpacity = 1
|
|
s.shadowOffset = CGSize(width: 0, height: 1)
|
|
s.backgroundColor = colors.white
|
|
s.clip = true
|
|
}
|
|
case .alertView:
|
|
return .add { s in
|
|
s.cornerRadius = .modalSheet
|
|
s.shadowRadius = 6
|
|
s.shadowColor = UIColor(0,0,0,alpha20)
|
|
s.shadowOpacity = 1
|
|
s.shadowOffset = CGSize(width: 0, height: 3)
|
|
s.backgroundColor = colors.alertBackground
|
|
s.clip = true
|
|
}
|
|
case .alertViewTextFieldContainer:
|
|
return .add { s in
|
|
s.borderColor = colors.blackDividers
|
|
s.borderWidth = 0.5
|
|
s.backgroundColor = colors.white
|
|
}
|
|
case .alertViewTextField:
|
|
return .add { s in
|
|
s.font = fonts.regular14
|
|
s.fontColor = colors.blackPrimaryText
|
|
s.tintColor = colors.blackSecondaryText
|
|
}
|
|
case .searchStatusBarView:
|
|
return .add { s in
|
|
s.backgroundColor = colors.primary
|
|
s.shadowRadius = 2
|
|
s.shadowColor = colors.blackDividers
|
|
s.shadowOpacity = 1
|
|
s.shadowOffset = CGSize(width: 0, height: 0)
|
|
}
|
|
case .flatNormalButton:
|
|
return .add { s in
|
|
s.font = fonts.medium14
|
|
s.cornerRadius = .buttonDefault
|
|
s.clip = true
|
|
s.fontColor = colors.whitePrimaryText
|
|
s.backgroundColor = colors.linkBlue
|
|
s.fontColorHighlighted = colors.whitePrimaryTextHighlighted
|
|
s.fontColorDisabled = colors.whitePrimaryTextHighlighted
|
|
s.backgroundColorHighlighted = colors.linkBlueHighlighted
|
|
}
|
|
case .flatNormalButtonBig:
|
|
return .addFrom(Self.flatNormalButton) { s in
|
|
s.font = fonts.regular17
|
|
}
|
|
case .flatNormalTransButton:
|
|
return .add { s in
|
|
s.font = fonts.medium14
|
|
s.cornerRadius = .buttonDefault
|
|
s.clip = true
|
|
s.fontColor = colors.linkBlue
|
|
s.backgroundColor = colors.clear
|
|
s.fontColorHighlighted = colors.linkBlueHighlighted
|
|
s.fontColorDisabled = colors.blackHintText
|
|
s.backgroundColorHighlighted = colors.clear
|
|
}
|
|
case .flatNormalTransButtonBig:
|
|
return .addFrom(Self.flatNormalTransButton) { s in
|
|
s.font = fonts.regular17
|
|
}
|
|
case .flatGrayTransButton:
|
|
return .add { s in
|
|
s.font = fonts.medium14
|
|
s.fontColor = colors.blackSecondaryText
|
|
s.backgroundColor = colors.clear
|
|
s.fontColorHighlighted = colors.linkBlueHighlighted
|
|
}
|
|
case .flatPrimaryTransButton:
|
|
return .add { s in
|
|
s.fontColor = colors.blackPrimaryText
|
|
s.backgroundColor = colors.clear
|
|
s.fontColorHighlighted = colors.linkBlueHighlighted
|
|
}
|
|
case .flatRedTransButton:
|
|
return .add { s in
|
|
s.font = fonts.medium14
|
|
s.fontColor = colors.red
|
|
s.backgroundColor = colors.clear
|
|
s.fontColorHighlighted = colors.red
|
|
}
|
|
case .flatRedTransButtonBig:
|
|
return .add { s in
|
|
s.font = fonts.regular17
|
|
s.fontColor = colors.red
|
|
s.backgroundColor = colors.clear
|
|
s.fontColorHighlighted = colors.red
|
|
}
|
|
case .flatRedButton:
|
|
return .add { s in
|
|
s.font = fonts.medium14
|
|
s.cornerRadius = .buttonDefault
|
|
s.fontColor = colors.whitePrimaryText
|
|
s.backgroundColor = colors.buttonRed
|
|
s.fontColorHighlighted = colors.buttonRedHighlighted
|
|
}
|
|
case .moreButton:
|
|
return .add { s in
|
|
s.fontColor = colors.linkBlue
|
|
s.fontColorHighlighted = colors.linkBlueHighlighted
|
|
s.backgroundColor = colors.clear
|
|
s.font = fonts.regular16
|
|
}
|
|
case .editButton:
|
|
return .add { s in
|
|
s.font = fonts.regular14
|
|
s.fontColor = colors.linkBlue
|
|
s.cornerRadius = .buttonDefault
|
|
s.borderColor = colors.linkBlue
|
|
s.borderWidth = 1
|
|
s.fontColorHighlighted = colors.linkBlueHighlighted
|
|
s.backgroundColor = colors.clear
|
|
}
|
|
case .rateAppButton:
|
|
return .add { s in
|
|
s.font = fonts.medium17
|
|
s.fontColor = colors.linkBlue
|
|
s.fontColorHighlighted = colors.white
|
|
s.borderColor = colors.linkBlue
|
|
s.cornerRadius = .buttonDefault
|
|
s.borderWidth = 1
|
|
s.backgroundColor = colors.clear
|
|
s.backgroundColorHighlighted = colors.linkBlue
|
|
}
|
|
case .termsOfUseLinkText:
|
|
return .add { s in
|
|
s.font = fonts.regular16
|
|
s.fontColor = colors.blackPrimaryText
|
|
|
|
s.linkAttributes = [NSAttributedString.Key.font: fonts.regular16,
|
|
NSAttributedString.Key.foregroundColor: colors.linkBlue,
|
|
NSAttributedString.Key.underlineColor: UIColor.clear]
|
|
s.textContainerInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
|
|
}
|
|
case .termsOfUseGrayButton:
|
|
return .add { s in
|
|
s.font = fonts.medium10
|
|
s.fontColor = colors.blackSecondaryText
|
|
s.fontColorHighlighted = colors.blackHintText
|
|
}
|
|
case .badge:
|
|
return .add { s in
|
|
s.round = true
|
|
s.backgroundColor = colors.downloadBadgeBackground
|
|
}
|
|
case .blue:
|
|
return .add { s in
|
|
s.tintColor = colors.linkBlue
|
|
s.coloring = MWMButtonColoring.blue
|
|
}
|
|
case .black:
|
|
return .add { s in
|
|
s.tintColor = colors.blackSecondaryText
|
|
s.coloring = MWMButtonColoring.black
|
|
}
|
|
case .other:
|
|
return .add { s in
|
|
s.tintColor = colors.white
|
|
s.coloring = MWMButtonColoring.other
|
|
}
|
|
case .gray:
|
|
return .add { s in
|
|
s.tintColor = colors.blackHintText
|
|
s.coloring = MWMButtonColoring.gray
|
|
}
|
|
case .separator:
|
|
return .add { s in
|
|
s.tintColor = colors.blackDividers
|
|
s.coloring = MWMButtonColoring.black
|
|
}
|
|
case .white:
|
|
return .add { s in
|
|
s.tintColor = colors.white
|
|
s.coloring = MWMButtonColoring.white
|
|
}
|
|
case .datePickerView:
|
|
return .add { s in
|
|
s.backgroundColor = colors.white
|
|
s.fontColor = colors.blackPrimaryText
|
|
s.fontColorSelected = colors.whitePrimaryText
|
|
s.backgroundColorSelected = colors.linkBlue
|
|
s.backgroundColorHighlighted = colors.linkBlueHighlighted
|
|
s.fontColorDisabled = colors.blackSecondaryText
|
|
}
|
|
case .valueStepperView:
|
|
return .add { s in
|
|
s.font = fonts.regular16
|
|
s.fontColor = colors.blackPrimaryText
|
|
s.coloring = MWMButtonColoring.blue
|
|
}
|
|
case .grabber:
|
|
return .addFrom(Self.background) { s in
|
|
s.cornerRadius = .grabber
|
|
}
|
|
case .modalSheetBackground:
|
|
return .add { s in
|
|
s.backgroundColor = colors.white
|
|
s.shadowColor = UIColor.black
|
|
s.shadowOffset = CGSize(width: 0, height: 1)
|
|
s.shadowOpacity = 0.3
|
|
s.shadowRadius = 6
|
|
s.cornerRadius = .modalSheet
|
|
s.clip = false
|
|
s.maskedCorners = isIPad ? [] : [.layerMinXMinYCorner, .layerMaxXMinYCorner]
|
|
}
|
|
case .modalSheetContent:
|
|
return .addFrom(Self.modalSheetBackground) { s in
|
|
s.backgroundColor = colors.clear
|
|
s.clip = true
|
|
}
|
|
case .toastBackground:
|
|
return .add { s in
|
|
s.cornerRadius = .modalSheet
|
|
s.clip = true
|
|
}
|
|
case .toastLabel:
|
|
return .add { s in
|
|
s.font = fonts.regular16
|
|
s.fontColor = colors.whitePrimaryText
|
|
s.textAlignment = .center
|
|
}
|
|
}
|
|
}
|
|
}
|