mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Add toolbar.
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user