TM-SGNL-iOS/SignalUI/ViewControllers/OWSTableSection.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

88 lines
2.2 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
import UIKit
public class OWSTableSection {
public private(set) var items: [OWSTableItem]
public var itemCount: Int { items.count }
public var headerTitle: String?
public var footerTitle: String?
public var headerAttributedTitle: NSAttributedString?
public var footerAttributedTitle: NSAttributedString?
public var headerTextViewDelegate: UITextViewDelegate?
public var footerTextViewDelegate: UITextViewDelegate?
public var customHeaderView: UIView?
public var customHeaderHeight: CGFloat?
public var customFooterView: UIView?
public var customFooterHeight: CGFloat?
public var hasBackground = true
public var hasSeparators = true
public var separatorInsetLeading: CGFloat?
public var separatorInsetTrailing: CGFloat?
public var shouldDisableCellSelection = false
public init(title: String?, items: [OWSTableItem], footerTitle: String? = nil) {
self.headerTitle = title
self.items = items
self.footerTitle = footerTitle
}
public convenience init() {
self.init(title: nil, items: [])
}
public convenience init(title: String?) {
self.init(title: title, items: [])
}
public convenience init(items: [OWSTableItem]) {
self.init(title: nil, items: items)
}
public convenience init(
title: String,
footerView: UIView
) {
self.init(title: title)
self.customFooterView = footerView
}
public convenience init(
items: [OWSTableItem],
headerView: UIView
) {
self.init(items: items)
self.customHeaderView = headerView
}
public convenience init(
header: (() -> UIView?),
footer: (() -> UIView?) = {nil}
) {
self.init(title: nil, items: [])
self.customHeaderView = header()
self.customFooterView = footer()
}
public func add(_ item: OWSTableItem) {
items.append(item)
}
public func add<T: Sequence>(items: T) where T.Element == OWSTableItem {
self.items.append(contentsOf: items)
}
}