mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
72 lines
2.2 KiB
Swift
72 lines
2.2 KiB
Swift
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import UIKit
|
|
import SessionUIKit
|
|
import SessionUtilitiesKit
|
|
|
|
extension SessionCarouselView {
|
|
public struct Info {
|
|
let slices: [UIView]
|
|
let copyOfFirstSlice: UIView?
|
|
let copyOfLastSlice: UIView?
|
|
let sliceSize: CGSize
|
|
let sliceCount: Int
|
|
let shouldShowPageControl: Bool
|
|
let pageControlStyle: PageControlStyle
|
|
let shouldShowArrows: Bool
|
|
let arrowsSize: CGSize
|
|
let cornerRadius: CGFloat
|
|
|
|
// MARK: - Initialization
|
|
|
|
init(
|
|
slices: [UIView] = [],
|
|
copyOfFirstSlice: UIView? = nil,
|
|
copyOfLastSlice: UIView? = nil,
|
|
sliceSize: CGSize = .zero,
|
|
shouldShowPageControl: Bool = true,
|
|
pageControlStyle: PageControlStyle,
|
|
shouldShowArrows: Bool = true,
|
|
arrowsSize: CGSize = .zero,
|
|
cornerRadius: CGFloat = 0
|
|
) {
|
|
self.slices = slices
|
|
self.copyOfFirstSlice = copyOfFirstSlice
|
|
self.copyOfLastSlice = copyOfLastSlice
|
|
self.sliceSize = sliceSize
|
|
self.sliceCount = slices.count
|
|
self.shouldShowPageControl = shouldShowPageControl && (self.sliceCount > 1)
|
|
self.pageControlStyle = pageControlStyle
|
|
self.shouldShowArrows = shouldShowArrows && (self.sliceCount > 1)
|
|
self.arrowsSize = arrowsSize
|
|
self.cornerRadius = cornerRadius
|
|
}
|
|
}
|
|
|
|
public struct PageControlStyle {
|
|
enum DotSize: CGFloat {
|
|
case mini = 0.5
|
|
case medium = 0.8
|
|
case original = 1
|
|
}
|
|
|
|
let height: CGFloat?
|
|
let size: DotSize
|
|
let backgroundColor: UIColor
|
|
let bottomInset: CGFloat
|
|
|
|
// MARK: - Initialization
|
|
|
|
init(
|
|
height: CGFloat? = nil,
|
|
size: DotSize = .original,
|
|
backgroundColor: UIColor = .clear,
|
|
bottomInset: CGFloat = 0
|
|
) {
|
|
self.height = height
|
|
self.size = size
|
|
self.backgroundColor = backgroundColor
|
|
self.bottomInset = bottomInset
|
|
}
|
|
}
|
|
}
|