Add toolbar.

This commit is contained in:
Brent Simmons
2025-02-04 19:40:07 -08:00
parent d12ae5edba
commit 9301bb9961

View File

@@ -24,8 +24,34 @@ final class SidebarViewController: UICollectionViewController {
typealias DataSource = UICollectionViewDiffableDataSource<Section, SidebarViewController.SidebarItem>
private lazy var dataSource = createDataSource()
private lazy var filterButton = UIBarButtonItem(
image: AppImage.filterInactive,
style: .plain,
target: self,
action: #selector(toggleFilter(_:))
)
private lazy var settingsButton = UIBarButtonItem(
image: AppImage.settings,
style: .plain,
target: self,
action: #selector(showSettings(_:))
)
private lazy var addNewItemButton = UIBarButtonItem(systemItem: .add)
private lazy var refreshProgressItemButton = UIBarButtonItem(customView: refreshProgressView)
private lazy var refreshProgressView: RefreshProgressView = Bundle.main.loadNibNamed("RefreshProgressView", owner: self, options: nil)?[0] as! RefreshProgressView
private lazy var flexibleSpaceBarButtonItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
private lazy var toolbar = UIToolbar()
init() {
super.init(collectionViewLayout: Self.createSidebarLayout())
let configuration = UICollectionLayoutListConfiguration(appearance: .sidebar)
let layout = UICollectionViewCompositionalLayout.list(using: configuration)
super.init(collectionViewLayout: layout)
}
required init?(coder: NSCoder) {
@@ -36,17 +62,50 @@ final class SidebarViewController: UICollectionViewController {
super.viewDidLoad()
collectionView.contentInset = UIEdgeInsets(top: 10, left: 0, bottom: 0, right: 0)
title = "Feeds"
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.rightBarButtonItem = filterButton
toolbar.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(toolbar)
NSLayoutConstraint.activate([
toolbar.leadingAnchor.constraint(equalTo: view.leadingAnchor),
toolbar.trailingAnchor.constraint(equalTo: view.trailingAnchor),
toolbar.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
toolbar.heightAnchor.constraint(equalToConstant: 44)
])
let toolbarItems = [
settingsButton,
flexibleSpaceBarButtonItem,
refreshProgressItemButton,
flexibleSpaceBarButtonItem,
addNewItemButton
]
toolbar.setItems(toolbarItems, animated: false)
applySnapshot()
}
}
private extension SidebarViewController {
// MARK: - Actions
static func createSidebarLayout() -> UICollectionViewLayout {
let configuration = UICollectionLayoutListConfiguration(appearance: .sidebar)
return UICollectionViewCompositionalLayout.list(using: configuration)
// TODO: Implement actions
extension SidebarViewController {
@objc func toggleFilter(_ sender: Any) {
}
@objc func showSettings(_ sender: Any?) {
}
}
private extension SidebarViewController {
private func createDataSource() -> DataSource {
let cellRegistration = UICollectionView.CellRegistration<UICollectionViewListCell, SidebarItem> { (cell, indexPath, item) in
var content = UIListContentConfiguration.cell()