diff --git a/iOS/MainWindow/Sidebar/SidebarViewController.swift b/iOS/MainWindow/Sidebar/SidebarViewController.swift index 49e973979..0f1cc0048 100644 --- a/iOS/MainWindow/Sidebar/SidebarViewController.swift +++ b/iOS/MainWindow/Sidebar/SidebarViewController.swift @@ -24,8 +24,34 @@ final class SidebarViewController: UICollectionViewController { typealias DataSource = UICollectionViewDiffableDataSource 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 { (cell, indexPath, item) in var content = UIListContentConfiguration.cell()