diff --git a/Note/ClipInboxViewController.swift b/Note/ClipInboxViewController.swift index deec5dc..03ba366 100644 --- a/Note/ClipInboxViewController.swift +++ b/Note/ClipInboxViewController.swift @@ -11,6 +11,7 @@ class ClipInboxViewController: UIViewController { private var tableView: UITableView! private var emptyLabel: UILabel! + private var archiveButton: UIButton! private var clips: [Clip] = [] override func viewDidLoad() { @@ -20,6 +21,7 @@ class ClipInboxViewController: UIViewController { view.backgroundColor = .systemGroupedBackground setupNavigationBar() + setupArchiveButton() setupTableView() setupEmptyLabel() } @@ -53,10 +55,45 @@ class ClipInboxViewController: UIViewController { tableView.topAnchor.constraint(equalTo: view.topAnchor), tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor) + tableView.bottomAnchor.constraint(equalTo: archiveButton.topAnchor, constant: -16) ]) } + private func setupArchiveButton() { + var config = UIButton.Configuration.filled() + config.title = "归档" + config.baseBackgroundColor = .systemBlue + config.baseForegroundColor = .white + config.cornerStyle = .medium + config.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16) + + archiveButton = UIButton(configuration: config) + archiveButton.translatesAutoresizingMaskIntoConstraints = false + archiveButton.addTarget(self, action: #selector(didTapArchiveButton), for: .touchUpInside) + view.addSubview(archiveButton) + + NSLayoutConstraint.activate([ + archiveButton.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 16), + archiveButton.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -16), + archiveButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -16), + archiveButton.heightAnchor.constraint(equalToConstant: 52) + ]) + } + + @objc private func didTapArchiveButton() { + guard clips.count >= 2 else { + let alert = UIAlertController(title: "提示", message: "至少需要两条文案才能归档。", preferredStyle: .alert) + alert.addAction(UIAlertAction(title: "确定", style: .default)) + present(alert, animated: true) + return + } + + let archivedText = clips.map(\.text).joined(separator: "\n\n---\n\n") + let viewController = FormatNoteViewController() + viewController.initialText = archivedText + navigationController?.pushViewController(viewController, animated: true) + } + private func setupEmptyLabel() { emptyLabel = UILabel() emptyLabel.translatesAutoresizingMaskIntoConstraints = false @@ -96,6 +133,7 @@ class ClipInboxViewController: UIViewController { let isEmpty = clips.isEmpty emptyLabel.isHidden = !isEmpty tableView.isHidden = isEmpty + archiveButton.isHidden = isEmpty } @objc private func didTapClearButton() {