NetNewsWire/iOS/ShareExtension/ShareFolderPickerController.swift

79 lines
2.4 KiB
Swift
Raw Normal View History

2019-09-12 19:33:05 +02:00
//
// ShareFolderPickerController.swift
// NetNewsWire iOS Share Extension
//
// Created by Maurice Parker on 9/12/19.
// Copyright © 2019 Ranchero Software. All rights reserved.
//
import UIKit
import Account
import Core
2019-09-12 19:33:05 +02:00
protocol ShareFolderPickerControllerDelegate: AnyObject {
2024-05-04 07:55:29 +02:00
@MainActor func shareFolderPickerDidSelect(_ container: ExtensionContainer)
2019-09-12 19:33:05 +02:00
}
class ShareFolderPickerController: UITableViewController {
var containers: [ExtensionContainer]?
var selectedContainerID: ContainerIdentifier?
2019-09-12 19:33:05 +02:00
weak var delegate: ShareFolderPickerControllerDelegate?
override func viewDidLoad() {
tableView.register(UINib(nibName: "ShareFolderPickerAccountCell", bundle: Bundle.main), forCellReuseIdentifier: "AccountCell")
tableView.register(UINib(nibName: "ShareFolderPickerFolderCell", bundle: Bundle.main), forCellReuseIdentifier: "FolderCell")
2019-09-12 19:33:05 +02:00
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return containers?.count ?? 0
2019-09-12 19:33:05 +02:00
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let container = containers?[indexPath.row]
let cell: ShareFolderPickerCell = {
if container is ExtensionAccount {
return tableView.dequeueReusableCell(withIdentifier: "AccountCell", for: indexPath) as! ShareFolderPickerCell
} else {
return tableView.dequeueReusableCell(withIdentifier: "FolderCell", for: indexPath) as! ShareFolderPickerCell
}
}()
if let account = container as? ExtensionAccount {
cell.icon.image = AppAsset.accountImage(for: account.type)
} else {
cell.icon.image = AppAsset.folderIcon.image
}
cell.label?.text = container?.name ?? ""
if let containerID = container?.containerID, containerID == selectedContainerID {
2019-09-12 19:33:05 +02:00
cell.accessoryType = .checkmark
2019-09-22 23:04:21 +02:00
} else {
cell.accessoryType = .none
2019-09-12 19:33:05 +02:00
}
return cell
2019-09-12 19:33:05 +02:00
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
guard let container = containers?[indexPath.row] else { return }
if let account = container as? ExtensionAccount, account.disallowFeedInRootFolder {
tableView.selectRow(at: nil, animated: false, scrollPosition: .none)
} else {
let cell = tableView.cellForRow(at: indexPath)
cell?.accessoryType = .checkmark
delegate?.shareFolderPickerDidSelect(container)
}
2019-09-12 19:33:05 +02:00
}
}