Update existing bar button items using the new convenience methods
This commit is contained in:
parent
23b961560c
commit
f7f9d1ef82
@ -196,10 +196,7 @@ public class SearchResultsBar: UIView {
|
||||
showMoreRecentButton.imageInsets = UIEdgeInsets(top: 2, left: leftInteriorChevronMargin, bottom: 2, right: leftExteriorChevronMargin)
|
||||
showMoreRecentButton.tintColor = Theme.accentBlueColor
|
||||
|
||||
let spacer1 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
||||
let spacer2 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
||||
|
||||
toolbar.items = [showLessRecentButton, showMoreRecentButton, spacer1, labelItem, spacer2]
|
||||
toolbar.items = [showLessRecentButton, showMoreRecentButton, .flexibleSpace(), labelItem, .flexibleSpace()]
|
||||
|
||||
self.autoresizingMask = .flexibleHeight
|
||||
self.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
@ -144,19 +144,11 @@ class UsernameLinkQRCodeColorPickerViewController: OWSTableViewController2 {
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel"
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .cancelButton(dismissingFrom: self)
|
||||
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "done"
|
||||
)
|
||||
navigationItem.rightBarButtonItem = .doneButton { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
|
||||
navigationItem.title = OWSLocalizedString(
|
||||
"USERNAME_LINK_QR_CODE_COLOR_PICKER_VIEW_TITLE_COLOR",
|
||||
@ -212,12 +204,6 @@ class UsernameLinkQRCodeColorPickerViewController: OWSTableViewController2 {
|
||||
|
||||
// MARK: - Events
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
if startingColor != currentColor {
|
||||
colorPickerDelegate?.didFinalizeSelectedColor(color: currentColor)
|
||||
|
||||
@ -92,12 +92,7 @@ class UsernameLinkQRCodeContentController: OWSViewController, OWSNavigationChild
|
||||
addChild(presentQRCodeViewController)
|
||||
addChild(scanQRCodeViewController)
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "done"
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .doneButton(dismissingFrom: self)
|
||||
|
||||
contentSegmentedControl.selectedSegmentIndex = 0
|
||||
navigationItem.titleView = contentSegmentedControl
|
||||
@ -130,9 +125,4 @@ class UsernameLinkQRCodeContentController: OWSViewController, OWSNavigationChild
|
||||
setActive(viewController: scanQRCodeViewController)
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,16 +12,7 @@ class UsernameLinkScanQRCodeSheet: UsernameLinkScanQRCodeViewController {
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
self.title = CommonStrings.scanQRCodeTitle
|
||||
navigationItem.leftBarButtonItem = .init(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone)
|
||||
)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
dismiss(animated: true)
|
||||
navigationItem.leftBarButtonItem = .doneButton(dismissingFrom: self)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -196,12 +196,9 @@ class UsernameSelectionViewController: OWSViewController, OWSNavigationChildCont
|
||||
// MARK: Views
|
||||
|
||||
/// Navbar button for finishing this view.
|
||||
private lazy var doneBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "done_button"
|
||||
)
|
||||
private lazy var doneBarButtonItem: UIBarButtonItem = .doneButton { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
|
||||
private lazy var wrapperScrollView = UIScrollView()
|
||||
|
||||
@ -300,11 +297,9 @@ class UsernameSelectionViewController: OWSViewController, OWSNavigationChildCont
|
||||
comment: "The title for the username selection view."
|
||||
)
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel_button"
|
||||
navigationItem.leftBarButtonItem = .cancelButton(
|
||||
dismissingFrom: self,
|
||||
hasUnsavedChanges: { [weak self] in self?.hasUnsavedEdits }
|
||||
)
|
||||
|
||||
navigationItem.rightBarButtonItem = doneBarButtonItem
|
||||
@ -606,24 +601,9 @@ private extension UsernameSelectionViewController {
|
||||
// MARK: - Nav bar events
|
||||
|
||||
private extension UsernameSelectionViewController {
|
||||
/// Called when the user cancels editing. Dismisses the view, discarding
|
||||
/// unsaved changes.
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
guard hasUnsavedEdits else {
|
||||
dismiss(animated: true)
|
||||
return
|
||||
}
|
||||
|
||||
OWSActionSheets.showPendingChangesActionSheet(discardAction: { [weak self] in
|
||||
guard let self else { return }
|
||||
self.dismiss(animated: true)
|
||||
})
|
||||
}
|
||||
|
||||
/// Called when the user taps "Done". Attempts to finalize the new chosen
|
||||
/// username.
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ class DeleteAccountConfirmationViewController: OWSTableViewController2 {
|
||||
|
||||
super.viewDidLoad()
|
||||
|
||||
navigationItem.leftBarButtonItem = .init(barButtonSystemItem: .cancel, target: self, action: #selector(didTapCancel))
|
||||
navigationItem.leftBarButtonItem = .cancelButton(dismissingFrom: self)
|
||||
navigationItem.rightBarButtonItem = .init(title: CommonStrings.deleteButton, style: .done, target: self, action: #selector(didTapDelete))
|
||||
navigationItem.rightBarButtonItem?.setTitleTextAttributes([.foregroundColor: UIColor.ows_accentRed], for: .normal)
|
||||
|
||||
@ -361,11 +361,6 @@ class DeleteAccountConfirmationViewController: OWSTableViewController2 {
|
||||
|
||||
return possibleNumbers.contains(localNumber)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
extension DeleteAccountConfirmationViewController: CountryCodeViewControllerDelegate {
|
||||
|
||||
@ -23,7 +23,7 @@ class AppSettingsViewController: OWSTableViewController2 {
|
||||
}
|
||||
|
||||
title = OWSLocalizedString("SETTINGS_NAV_BAR_TITLE", comment: "Title for settings activity")
|
||||
navigationItem.leftBarButtonItem = .init(barButtonSystemItem: .done, target: self, action: #selector(didTapDone))
|
||||
navigationItem.leftBarButtonItem = .doneButton(dismissingFrom: self)
|
||||
|
||||
defaultSeparatorInsetLeading = Self.cellHInnerMargin + 24 + OWSTableItem.iconSpacing
|
||||
|
||||
@ -63,11 +63,6 @@ class AppSettingsViewController: OWSTableViewController2 {
|
||||
)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func localProfileDidChange() {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
@ -58,11 +58,7 @@ private class AppIconLearnMoreTableViewController: OWSTableViewController2 {
|
||||
super.viewDidLoad()
|
||||
updateTableContents()
|
||||
|
||||
navigationItem.leftBarButtonItem = .init(
|
||||
barButtonSystemItem: .done,
|
||||
target: self, action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "AppIconLearnMoreTableViewController.done"
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .doneButton(dismissingFrom: self)
|
||||
}
|
||||
|
||||
override func themeDidChange() {
|
||||
@ -129,11 +125,6 @@ private class AppIconLearnMoreTableViewController: OWSTableViewController2 {
|
||||
imageView.autoPinEdgesToSuperviewEdges(with: insets)
|
||||
return cell
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - AppIconSettingsTableViewControllerDelegate
|
||||
|
||||
@ -148,16 +148,15 @@ final class ContactSupportViewController: OWSTableViewController2 {
|
||||
}
|
||||
|
||||
func setupNavigationBar() {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel)
|
||||
)
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.didTapCancel()
|
||||
}
|
||||
navigationItem.rightBarButtonItem = .button(
|
||||
title: CommonStrings.nextButton,
|
||||
style: .done,
|
||||
target: self,
|
||||
action: #selector(didTapNext)
|
||||
action: { [weak self] in
|
||||
self?.didTapNext()
|
||||
}
|
||||
)
|
||||
navigationItem.rightBarButtonItem?.isEnabled = false
|
||||
}
|
||||
@ -231,7 +230,6 @@ final class ContactSupportViewController: OWSTableViewController2 {
|
||||
|
||||
// MARK: - Actions
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
currentEmailComposeOperation?.cancel()
|
||||
navigationController?.presentingViewController?.dismiss(animated: true, completion: nil)
|
||||
@ -239,7 +237,6 @@ final class ContactSupportViewController: OWSTableViewController2 {
|
||||
|
||||
var currentEmailComposeOperation: ComposeSupportEmailOperation?
|
||||
|
||||
@objc
|
||||
private func didTapNext() {
|
||||
var emailRequest = SupportEmailModel()
|
||||
emailRequest.userDescription = descriptionField.text
|
||||
|
||||
@ -41,7 +41,9 @@ class CurrencyPickerViewController<DataSourceType: CurrencyPickerDataSource>: OW
|
||||
title = OWSLocalizedString("CURRENCY_PICKER_VIEW_TITLE",
|
||||
comment: "Title for the 'currency picker' view in the app settings.")
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(didTapCancel))
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.dismissPicker()
|
||||
}
|
||||
|
||||
searchBar.placeholder = CommonStrings.searchBarPlaceholder
|
||||
searchBar.delegate = self
|
||||
@ -197,11 +199,6 @@ class CurrencyPickerViewController<DataSourceType: CurrencyPickerDataSource>: OW
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
dismissPicker()
|
||||
}
|
||||
|
||||
private func didSelectCurrency(_ currencyCode: String) {
|
||||
completion(currencyCode)
|
||||
dismissPicker()
|
||||
|
||||
@ -129,11 +129,7 @@ public class BadgeGiftingChooseBadgeViewController: OWSTableViewController2 {
|
||||
|
||||
let isPresentedStandalone = navigationController?.viewControllers.first == self
|
||||
if isPresentedStandalone {
|
||||
navigationItem.leftBarButtonItem = .init(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel)
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .cancelButton(dismissingFrom: self)
|
||||
}
|
||||
|
||||
loadDataIfNecessary()
|
||||
@ -147,13 +143,6 @@ public class BadgeGiftingChooseBadgeViewController: OWSTableViewController2 {
|
||||
updateBottomFooter()
|
||||
}
|
||||
|
||||
// MARK: - Events
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
// MARK: - Table contents
|
||||
|
||||
private func updateTableContents() {
|
||||
|
||||
@ -48,12 +48,9 @@ class NotificationSettingsSoundViewController: OWSTableViewController2 {
|
||||
}
|
||||
|
||||
private func updateNavigation() {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel_button"
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.didTapCancel()
|
||||
}
|
||||
|
||||
if hasUnsavedChanges {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
@ -144,7 +141,6 @@ class NotificationSettingsSoundViewController: OWSTableViewController2 {
|
||||
completion?()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
guard hasUnsavedChanges else {
|
||||
stopPlayingAndDismiss()
|
||||
|
||||
@ -55,18 +55,15 @@ class ProxySettingsViewController: OWSTableViewController2 {
|
||||
|
||||
private func updateNavigationBar() {
|
||||
if navigationController?.viewControllers.count == 1 {
|
||||
navigationItem.leftBarButtonItem = .init(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel)
|
||||
navigationItem.leftBarButtonItem = .cancelButton(
|
||||
dismissingFrom: self,
|
||||
hasUnsavedChanges: { [weak self] in self?.hasPendingChanges }
|
||||
)
|
||||
}
|
||||
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .save,
|
||||
target: self,
|
||||
action: #selector(didTapSave)
|
||||
)
|
||||
navigationItem.rightBarButtonItem = .systemItem(.save) { [weak self] in
|
||||
self?.didTapSave()
|
||||
}
|
||||
navigationItem.rightBarButtonItem?.isEnabled = hasPendingChanges
|
||||
}
|
||||
|
||||
@ -191,7 +188,6 @@ class ProxySettingsViewController: OWSTableViewController2 {
|
||||
return true
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapSave() {
|
||||
hostTextField.resignFirstResponder()
|
||||
|
||||
@ -271,17 +267,6 @@ class ProxySettingsViewController: OWSTableViewController2 {
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
if hasPendingChanges {
|
||||
OWSActionSheets.showPendingChangesActionSheet { [weak self] in
|
||||
self?.dismiss(animated: true)
|
||||
}
|
||||
} else {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
var shouldCancelNavigationBack: Bool {
|
||||
if hasPendingChanges {
|
||||
OWSActionSheets.showPendingChangesActionSheet { [weak self] in
|
||||
|
||||
@ -89,11 +89,9 @@ class BadgeConfigurationViewController: OWSTableViewController2, BadgeCollection
|
||||
|
||||
private func updateNavigation() {
|
||||
if navigationController?.viewControllers.count == 1 {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel_button")
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.didTapCancel()
|
||||
}
|
||||
}
|
||||
|
||||
if hasUnsavedChanges, showDismissalActivity {
|
||||
@ -103,18 +101,18 @@ class BadgeConfigurationViewController: OWSTableViewController2, BadgeCollection
|
||||
spinner.startAnimating()
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: spinner)
|
||||
} else if hasUnsavedChanges, !showDismissalActivity {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
navigationItem.rightBarButtonItem = .button(
|
||||
title: CommonStrings.setButton,
|
||||
style: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "set_button")
|
||||
action: { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
)
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
let requestDismissal: () -> Void = { [weak self] in
|
||||
guard let self = self else { return }
|
||||
@ -128,7 +126,6 @@ class BadgeConfigurationViewController: OWSTableViewController2, BadgeCollection
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
if displayBadgeOnProfile, let selectedPrimaryBadge = selectedPrimaryBadge {
|
||||
badgeConfigDelegate?.badgeConfiguration(self, didCompleteWithBadgeSetting: .display(featuredBadge: selectedPrimaryBadge))
|
||||
|
||||
@ -101,22 +101,17 @@ class ProfileBioViewController: OWSTableViewController2 {
|
||||
title = OWSLocalizedString("PROFILE_BIO_VIEW_TITLE", comment: "Title for the profile bio view.")
|
||||
}
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel_button"
|
||||
navigationItem.leftBarButtonItem = .cancelButton(
|
||||
dismissingFrom: self,
|
||||
hasUnsavedChanges: { [weak self] in self?.hasUnsavedChanges }
|
||||
)
|
||||
|
||||
cancelButton.isHiddenInStackView = normalizedProfileBio?.isEmpty != false && normalizedProfileBioEmoji?.isEmpty != false
|
||||
|
||||
if hasUnsavedChanges {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "done_button"
|
||||
)
|
||||
navigationItem.rightBarButtonItem = .doneButton { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
}
|
||||
@ -287,19 +282,6 @@ class ProfileBioViewController: OWSTableViewController2 {
|
||||
]
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
guard hasUnsavedChanges else {
|
||||
dismiss(animated: true)
|
||||
return
|
||||
}
|
||||
|
||||
OWSActionSheets.showPendingChangesActionSheet(discardAction: { [weak self] in
|
||||
self?.dismiss(animated: true)
|
||||
})
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
profileDelegate?.profileBioViewDidComplete(bio: normalizedProfileBio, bioEmoji: normalizedProfileBioEmoji)
|
||||
|
||||
|
||||
@ -687,19 +687,14 @@ class ProfileSettingsViewController: OWSTableViewController2 {
|
||||
private func updateNavigationItem() {
|
||||
if hasUnsavedChanges {
|
||||
// If we have a unsaved changes, right item should be a "save" button.
|
||||
let saveButton = UIBarButtonItem(
|
||||
barButtonSystemItem: .save,
|
||||
target: self,
|
||||
action: #selector(updateProfile),
|
||||
accessibilityIdentifier: "save_button"
|
||||
)
|
||||
navigationItem.rightBarButtonItem = saveButton
|
||||
navigationItem.rightBarButtonItem = .systemItem(.save) { [weak self] in
|
||||
self?.updateProfile()
|
||||
}
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
private func updateProfile() {
|
||||
|
||||
// Copy this on the main thread before the asynchronous update.
|
||||
|
||||
@ -47,15 +47,6 @@ class AvatarEditViewController: OWSTableViewController2 {
|
||||
updateFooterViewLayout(forceUpdate: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
guard model != originalModel else { return dismiss(animated: true) }
|
||||
OWSActionSheets.showPendingChangesActionSheet(discardAction: { [weak self] in
|
||||
self?.dismiss(animated: true)
|
||||
})
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
defer { dismiss(animated: true) }
|
||||
|
||||
@ -67,12 +58,19 @@ class AvatarEditViewController: OWSTableViewController2 {
|
||||
}
|
||||
|
||||
private func updateNavigation() {
|
||||
navigationItem.leftBarButtonItem = .init(barButtonSystemItem: .cancel, target: self, action: #selector(didTapCancel))
|
||||
navigationItem.leftBarButtonItem = .cancelButton(
|
||||
dismissingFrom: self,
|
||||
hasUnsavedChanges: { [weak self] in
|
||||
self?.model != self?.originalModel
|
||||
}
|
||||
)
|
||||
|
||||
if case .text(let text) = model.type, text.nilIfEmpty == nil {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
} else if model != originalModel {
|
||||
navigationItem.rightBarButtonItem = .init(barButtonSystemItem: .done, target: self, action: #selector(didTapDone))
|
||||
navigationItem.rightBarButtonItem = .doneButton { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
}
|
||||
|
||||
@ -80,15 +80,6 @@ class AvatarSettingsViewController: OWSTableViewController2 {
|
||||
updateTableContents()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
guard state.isNew else { return dismiss(animated: true) }
|
||||
OWSActionSheets.showPendingChangesActionSheet(discardAction: { [weak self] in
|
||||
self?.dismiss(animated: true)
|
||||
})
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
defer { dismiss(animated: true) }
|
||||
|
||||
@ -197,15 +188,18 @@ class AvatarSettingsViewController: OWSTableViewController2 {
|
||||
}
|
||||
|
||||
private func updateNavigation() {
|
||||
navigationItem.leftBarButtonItem = .init(barButtonSystemItem: .cancel, target: self, action: #selector(didTapCancel))
|
||||
navigationItem.leftBarButtonItem = .cancelButton(
|
||||
dismissingFrom: self,
|
||||
hasUnsavedChanges: { [weak self] in self?.state.isNew }
|
||||
)
|
||||
|
||||
if state.isNew {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
navigationItem.rightBarButtonItem = .button(
|
||||
title: CommonStrings.setButton,
|
||||
style: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "set_button"
|
||||
action: { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
)
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
|
||||
@ -423,20 +423,24 @@ extension ConversationViewController {
|
||||
extension ConversationViewController {
|
||||
|
||||
var cancelSelectionBarButtonItem: UIBarButtonItem {
|
||||
UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(didTapCancelSelection))
|
||||
.cancelButton { [weak self] in
|
||||
self?.uiMode = .normal
|
||||
}
|
||||
}
|
||||
|
||||
var deleteAllBarButtonItem: UIBarButtonItem {
|
||||
let title = OWSLocalizedString("CONVERSATION_VIEW_DELETE_ALL_MESSAGES", comment: "button text to delete all items in the current conversation")
|
||||
return UIBarButtonItem(title: title, style: .plain, target: self, action: #selector(didTapDeleteAll))
|
||||
return .button(
|
||||
title: OWSLocalizedString(
|
||||
"CONVERSATION_VIEW_DELETE_ALL_MESSAGES",
|
||||
comment: "button text to delete all items in the current conversation"
|
||||
),
|
||||
style: .plain,
|
||||
action: { [weak self] in
|
||||
self?.didTapDeleteAll()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@objc
|
||||
func didTapCancelSelection() {
|
||||
uiMode = .normal
|
||||
}
|
||||
|
||||
@objc
|
||||
func didTapDeleteAll() {
|
||||
let thread = self.thread
|
||||
let alert = ActionSheetController(title: nil, message: OWSLocalizedString("DELETE_ALL_MESSAGES_IN_CONVERSATION_ALERT_BODY", comment: "action sheet body"))
|
||||
|
||||
@ -39,7 +39,7 @@ class EmojiPickerSectionToolbar: BlurredToolbarContainer {
|
||||
toolbar.items = Array(
|
||||
buttons
|
||||
.map { [UIBarButtonItem(customView: $0)] }
|
||||
.joined(separator: [UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)])
|
||||
.joined(separator: [.flexibleSpace()])
|
||||
)
|
||||
|
||||
setSelectedSection(0)
|
||||
|
||||
@ -25,11 +25,20 @@ public class EmojiReactionPickerConfigViewController: UIViewController {
|
||||
title = OWSLocalizedString("CONFIGURE_REACTIONS", comment: "Configure reactions title text")
|
||||
view.backgroundColor = Theme.isDarkThemeEnabled ? Theme.actionSheetBackgroundColor : UIColor.color(rgbHex: 0xF0F0F0)
|
||||
|
||||
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneButtonTapped(sender:)))
|
||||
navigationItem.setRightBarButton(doneButton, animated: false)
|
||||
navigationItem.rightBarButtonItem = .doneButton { [weak self] in
|
||||
self?.doneButtonTapped()
|
||||
}
|
||||
|
||||
let resetButton = UIBarButtonItem(title: OWSLocalizedString("RESET", comment: "Configure reactions reset button text"), style: .plain, target: self, action: #selector(resetButtonTapped(sender:)))
|
||||
navigationItem.setLeftBarButton(resetButton, animated: false)
|
||||
navigationItem.leftBarButtonItem = .button(
|
||||
title: OWSLocalizedString(
|
||||
"RESET",
|
||||
comment: "Configure reactions reset button text"
|
||||
),
|
||||
style: .plain,
|
||||
action: { [weak self] in
|
||||
self?.resetButtonTapped()
|
||||
}
|
||||
)
|
||||
|
||||
// Reaction picker
|
||||
reactionPicker.delegate = self
|
||||
@ -42,8 +51,7 @@ public class EmojiReactionPickerConfigViewController: UIViewController {
|
||||
instructionLabel.autoPinEdge(.top, to: .bottom, of: reactionPicker, withOffset: 30)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func resetButtonTapped(sender: UIButton) {
|
||||
private func resetButtonTapped() {
|
||||
let emojiSet: [EmojiWithSkinTones] = ReactionManager.defaultEmojiSet.map { EmojiWithSkinTones(rawValue: $0)! }
|
||||
|
||||
for (index, emoji) in reactionPicker.currentEmojiSet().enumerated() {
|
||||
@ -53,8 +61,7 @@ public class EmojiReactionPickerConfigViewController: UIViewController {
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
private func doneButtonTapped(sender: UIButton) {
|
||||
private func doneButtonTapped() {
|
||||
let currentEmojiSet = reactionPicker.currentEmojiSet()
|
||||
SDSDatabaseStorage.shared.write { transaction in
|
||||
ReactionManager.setCustomEmojiSet(currentEmojiSet, transaction: transaction)
|
||||
|
||||
@ -42,12 +42,7 @@ class BankTransferMandateViewController: OWSTableViewController2 {
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel_button"
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .cancelButton(dismissingFrom: self)
|
||||
|
||||
updateTableContents()
|
||||
updateBottomFooter()
|
||||
@ -258,11 +253,6 @@ class BankTransferMandateViewController: OWSTableViewController2 {
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
private func loadMandate() async {
|
||||
let request = OWSRequestFactory.bankMandateRequest(bankTransferType: self.bankTransferType)
|
||||
do {
|
||||
|
||||
@ -81,11 +81,7 @@ class DonateViewController: OWSViewController, OWSNavigationChildController {
|
||||
|
||||
let isPresentedStandalone = navigationController?.viewControllers.first == self
|
||||
if isPresentedStandalone {
|
||||
navigationItem.leftBarButtonItem = .init(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel)
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .cancelButton(dismissingFrom: self)
|
||||
}
|
||||
|
||||
OWSTableViewController2.removeBackButtonText(viewController: self)
|
||||
@ -121,11 +117,6 @@ class DonateViewController: OWSViewController, OWSNavigationChildController {
|
||||
|
||||
// MARK: - Events
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didDonateModeChange() {
|
||||
let rawValue = donateModePickerView.selectedSegmentIndex
|
||||
|
||||
@ -186,9 +186,9 @@ class GifPickerViewController: OWSViewController, UISearchBarDelegate, UICollect
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didPressCancel))
|
||||
self.navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.delegate?.gifPickerDidCancel()
|
||||
}
|
||||
self.navigationItem.title = OWSLocalizedString("GIF_PICKER_VIEW_TITLE",
|
||||
comment: "Title for the 'GIF picker' dialog.")
|
||||
|
||||
@ -542,13 +542,6 @@ class GifPickerViewController: OWSViewController, UISearchBarDelegate, UICollect
|
||||
cell.isCellVisible = false
|
||||
}
|
||||
|
||||
// MARK: - Event Handlers
|
||||
|
||||
@objc
|
||||
private func didPressCancel(sender: UIButton) {
|
||||
delegate?.gifPickerDidCancel()
|
||||
}
|
||||
|
||||
// MARK: - UISearchBarDelegate
|
||||
|
||||
public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
|
||||
|
||||
@ -216,9 +216,8 @@ class CallsListViewController: OWSViewController, HomeTabViewController, CallSer
|
||||
guard let self else { return }
|
||||
// See ChatListViewController.showToolbar for why this is async
|
||||
DispatchQueue.main.async {
|
||||
let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
||||
self.multiselectToolbar?.setItems(
|
||||
[spacer, self.toolbarDeleteButton],
|
||||
[.flexibleSpace(), self.toolbarDeleteButton],
|
||||
animated: false
|
||||
)
|
||||
self.updateMultiselectToolbarButtons()
|
||||
@ -279,16 +278,11 @@ class CallsListViewController: OWSViewController, HomeTabViewController, CallSer
|
||||
// MARK: Cancel multiselect button
|
||||
|
||||
private func cancelMultiselectButton() -> UIBarButtonItem {
|
||||
let barButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(cancelMultiselect),
|
||||
accessibilityIdentifier: CommonStrings.cancelButton
|
||||
)
|
||||
return barButtonItem
|
||||
.cancelButton { [weak self] in
|
||||
self?.cancelMultiselect()
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
private func cancelMultiselect() {
|
||||
tableView.setEditing(false, animated: true)
|
||||
updateBarButtonItems()
|
||||
|
||||
@ -25,12 +25,9 @@ extension ChatListViewController {
|
||||
searchBar.delegate?.searchBarCancelButtonClicked?(searchBar)
|
||||
viewState.multiSelectState.title = title
|
||||
if chatListMode == .inbox {
|
||||
let doneButton = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(done),
|
||||
accessibilityIdentifier: CommonStrings.cancelButton
|
||||
)
|
||||
let doneButton: UIBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.done()
|
||||
}
|
||||
navigationItem.setLeftBarButton(doneButton, animated: true)
|
||||
navigationItem.setRightBarButtonItems(nil, animated: true)
|
||||
} else {
|
||||
@ -120,7 +117,6 @@ extension ChatListViewController {
|
||||
|
||||
// MARK: private helper
|
||||
|
||||
@objc
|
||||
private func done() {
|
||||
leaveMultiselectMode()
|
||||
updateBarButtonItems()
|
||||
@ -163,11 +159,10 @@ extension ChatListViewController {
|
||||
let deleteBtn = UIBarButtonItem(title: CommonStrings.deleteButton, style: .plain, target: self, action: #selector(performDelete))
|
||||
deleteBtn.isEnabled = hasSelectedEntries
|
||||
|
||||
let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
||||
var entries: [UIBarButtonItem] = []
|
||||
for button in [archiveBtn, readButton, deleteBtn] {
|
||||
if !entries.isEmpty {
|
||||
entries.append(spacer)
|
||||
entries.append(.flexibleSpace())
|
||||
}
|
||||
entries.append(button)
|
||||
}
|
||||
|
||||
@ -28,10 +28,9 @@ public class PrivateStoryAddRecipientsSettingsViewController: BaseMemberViewCont
|
||||
}
|
||||
|
||||
private func updateBarButtons() {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .save,
|
||||
target: self,
|
||||
action: #selector(updatePressed))
|
||||
navigationItem.rightBarButtonItem = .systemItem(.save) { [weak self] in
|
||||
self?.updatePressed()
|
||||
}
|
||||
navigationItem.rightBarButtonItem?.isEnabled = hasUnsavedChanges
|
||||
|
||||
title = OWSLocalizedString(
|
||||
@ -42,7 +41,6 @@ public class PrivateStoryAddRecipientsSettingsViewController: BaseMemberViewCont
|
||||
|
||||
// MARK: - Actions
|
||||
|
||||
@objc
|
||||
private func updatePressed() {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
|
||||
@ -65,17 +65,13 @@ public class PrivateStoryNameSettingsViewController: OWSTableViewController2 {
|
||||
}
|
||||
|
||||
private func updateNavigationBar() {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel)
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.didTapCancel()
|
||||
}
|
||||
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone)
|
||||
)
|
||||
navigationItem.rightBarButtonItem = .doneButton { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
navigationItem.rightBarButtonItem?.isEnabled = hasPendingChanges
|
||||
}
|
||||
|
||||
@ -103,7 +99,6 @@ public class PrivateStoryNameSettingsViewController: OWSTableViewController2 {
|
||||
|
||||
// MARK: - Actions
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
@ -116,7 +111,6 @@ public class PrivateStoryNameSettingsViewController: OWSTableViewController2 {
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
|
||||
@ -23,11 +23,9 @@ class PrivateStorySettingsViewController: OWSTableViewController2 {
|
||||
private func updateBarButtons() {
|
||||
title = thread.name
|
||||
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .edit,
|
||||
target: self,
|
||||
action: #selector(editPressed)
|
||||
)
|
||||
navigationItem.rightBarButtonItem = .systemItem(.edit) { [weak self] in
|
||||
self?.editPressed()
|
||||
}
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
@ -301,7 +299,6 @@ class PrivateStorySettingsViewController: OWSTableViewController2 {
|
||||
presentActionSheet(actionSheet)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func editPressed() {
|
||||
let vc = PrivateStoryNameSettingsViewController(thread: thread) { [weak self] in
|
||||
self?.title = self?.thread.name
|
||||
|
||||
@ -15,7 +15,7 @@ class StoryPrivacySettingsViewController: OWSTableViewController2 {
|
||||
|
||||
if navigationController?.viewControllers.count == 1 {
|
||||
title = OWSLocalizedString("STORY_PRIVACY_TITLE", comment: "Title for the story privacy settings view")
|
||||
navigationItem.leftBarButtonItem = .init(barButtonSystemItem: .done, target: self, action: #selector(didTapDone))
|
||||
navigationItem.leftBarButtonItem = .doneButton(dismissingFrom: self)
|
||||
} else {
|
||||
title = OWSLocalizedString(
|
||||
"STORY_SETTINGS_TITLE",
|
||||
@ -36,11 +36,6 @@ class StoryPrivacySettingsViewController: OWSTableViewController2 {
|
||||
updateTableContents()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func storiesEnabledStateDidChange() {
|
||||
updateTableContents()
|
||||
|
||||
@ -203,13 +203,10 @@ public class LongTextViewController: OWSViewController {
|
||||
target: self,
|
||||
action: #selector(shareButtonPressed)
|
||||
),
|
||||
UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil),
|
||||
UIBarButtonItem(
|
||||
image: Theme.iconImage(.buttonForward),
|
||||
style: .plain,
|
||||
target: self,
|
||||
action: #selector(forwardButtonPressed)
|
||||
)
|
||||
.flexibleSpace(),
|
||||
.button(icon: .buttonForward, style: .plain) { [weak self] in
|
||||
self?.forwardButtonPressed()
|
||||
},
|
||||
]
|
||||
|
||||
loadContent()
|
||||
@ -248,7 +245,6 @@ public class LongTextViewController: OWSViewController {
|
||||
AttachmentSharing.showShareUI(for: shareText, sender: sender)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func forwardButtonPressed() {
|
||||
// Only forward text.
|
||||
let selectionType: CVSelectionType = (itemViewModel.componentState.hasPrimaryAndSecondaryContentForSelection
|
||||
|
||||
@ -191,11 +191,9 @@ public class MediaGalleryAccessoriesHelper {
|
||||
return
|
||||
}
|
||||
if isInBatchSelectMode {
|
||||
viewController.navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didCancelSelect)
|
||||
)
|
||||
viewController.navigationItem.rightBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.didCancelSelect()
|
||||
}
|
||||
} else {
|
||||
viewController.navigationItem.rightBarButtonItem = nil // TODO: Search
|
||||
}
|
||||
@ -212,8 +210,7 @@ public class MediaGalleryAccessoriesHelper {
|
||||
isInBatchSelectMode = true
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didCancelSelect(_ sender: Any) {
|
||||
private func didCancelSelect() {
|
||||
endSelectMode()
|
||||
}
|
||||
|
||||
@ -431,13 +428,12 @@ public class MediaGalleryAccessoriesHelper {
|
||||
guard footerBarState != .hidden else { return }
|
||||
|
||||
let fixedSpace = { return UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) }
|
||||
let flexibleSpace = { return UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) }
|
||||
let footerBarItems: [UIBarButtonItem]? = {
|
||||
switch footerBarState {
|
||||
case .hidden:
|
||||
return nil
|
||||
case .selection:
|
||||
return [ shareButton, flexibleSpace(), selectionInfoButton, flexibleSpace(), deleteButton ]
|
||||
return [ shareButton, .flexibleSpace(), selectionInfoButton, .flexibleSpace(), deleteButton ]
|
||||
case .regular:
|
||||
let firstItem: UIBarButtonItem
|
||||
if isGridViewAllowed {
|
||||
@ -450,9 +446,9 @@ public class MediaGalleryAccessoriesHelper {
|
||||
}
|
||||
return [
|
||||
firstItem,
|
||||
flexibleSpace(),
|
||||
.flexibleSpace(),
|
||||
currentFileTypeSupportsFiltering ? filterButton : fixedSpace(),
|
||||
flexibleSpace(),
|
||||
.flexibleSpace(),
|
||||
selectButton
|
||||
]
|
||||
}
|
||||
@ -530,11 +526,12 @@ public class MediaGalleryAccessoriesHelper {
|
||||
|
||||
// MARK: - Delete
|
||||
|
||||
private lazy var deleteButton = UIBarButtonItem(
|
||||
image: Theme.iconImage(.buttonDelete),
|
||||
private lazy var deleteButton = UIBarButtonItem.button(
|
||||
icon: .buttonDelete,
|
||||
style: .plain,
|
||||
target: self,
|
||||
action: #selector(didPressDelete)
|
||||
action: { [weak self] in
|
||||
self?.didPressDelete()
|
||||
}
|
||||
)
|
||||
|
||||
private func updateDeleteButton() {
|
||||
@ -542,8 +539,7 @@ public class MediaGalleryAccessoriesHelper {
|
||||
deleteButton.isEnabled = viewController.hasSelection
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didPressDelete(_ sender: Any) {
|
||||
private func didPressDelete() {
|
||||
Logger.debug("")
|
||||
viewController?.deleteSelectedItems()
|
||||
}
|
||||
|
||||
@ -160,7 +160,7 @@ public class MessageActionsToolbar: UIToolbar {
|
||||
var actionItems = [MessageActionsToolbarButton]()
|
||||
for action in messagesActions {
|
||||
if !newItems.isEmpty {
|
||||
newItems.append(UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil))
|
||||
newItems.append(.flexibleSpace())
|
||||
}
|
||||
|
||||
let actionItem = MessageActionsToolbarButton(actionsToolbar: self, messageAction: action)
|
||||
@ -172,8 +172,8 @@ public class MessageActionsToolbar: UIToolbar {
|
||||
|
||||
// If we only have a single button, center it.
|
||||
if newItems.count == 1 {
|
||||
newItems.insert(UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil), at: 0)
|
||||
newItems.append(UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil))
|
||||
newItems.insert(.flexibleSpace(), at: 0)
|
||||
newItems.append(.flexibleSpace())
|
||||
}
|
||||
|
||||
items = newItems
|
||||
@ -199,9 +199,9 @@ public class MessageActionsToolbar: UIToolbar {
|
||||
|
||||
var newItems = [UIBarButtonItem]()
|
||||
newItems.append(deleteItem)
|
||||
newItems.append(UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil))
|
||||
newItems.append(.flexibleSpace())
|
||||
newItems.append(labelItem)
|
||||
newItems.append(UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil))
|
||||
newItems.append(.flexibleSpace())
|
||||
newItems.append(forwardItem)
|
||||
|
||||
items = newItems
|
||||
|
||||
@ -379,20 +379,17 @@ public class PinSetupViewController: OWSViewController, OWSNavigationChildContro
|
||||
moreButton.isHidden = isNavigationBarVisible || !showDisablePinButton
|
||||
|
||||
if isNavigationBarVisible, showDisablePinButton {
|
||||
self.navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
image: Theme.iconImage(.buttonMore),
|
||||
self.navigationItem.rightBarButtonItem = .button(
|
||||
icon: .buttonMore,
|
||||
style: .plain,
|
||||
target: self,
|
||||
action: #selector(didTapMoreButton(_:))
|
||||
action: { [weak self] in
|
||||
self?.didTapMoreButton()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
if showCancelButton {
|
||||
self.navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel)
|
||||
)
|
||||
self.navigationItem.leftBarButtonItem = .cancelButton(dismissingFrom: self)
|
||||
}
|
||||
|
||||
OWSTableViewController2.removeBackButtonText(viewController: self)
|
||||
@ -422,12 +419,7 @@ public class PinSetupViewController: OWSViewController, OWSNavigationChildContro
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapMoreButton(_ sender: UIButton) {
|
||||
private func didTapMoreButton() {
|
||||
let actionSheet = ActionSheetController()
|
||||
actionSheet.addAction(OWSActionSheets.cancelAction)
|
||||
|
||||
|
||||
@ -52,14 +52,10 @@ public class SendPaymentMemoViewController: OWSViewController {
|
||||
private func createContents() {
|
||||
navigationItem.title = OWSLocalizedString("PAYMENTS_NEW_PAYMENT_ADD_MEMO",
|
||||
comment: "Label for the 'add memo' ui in the 'send payment' UI.")
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancelMemo),
|
||||
accessibilityIdentifier: "memo.cancel")
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDoneMemo),
|
||||
accessibilityIdentifier: "memo.done")
|
||||
navigationItem.leftBarButtonItem = .cancelButton(poppingFrom: navigationController)
|
||||
navigationItem.rightBarButtonItem = .doneButton { [weak self] in
|
||||
self?.didTapDoneMemo()
|
||||
}
|
||||
|
||||
rootStack.axis = .vertical
|
||||
rootStack.alignment = .fill
|
||||
@ -149,12 +145,6 @@ public class SendPaymentMemoViewController: OWSViewController {
|
||||
|
||||
// MARK: - Events
|
||||
|
||||
@objc
|
||||
private func didTapCancelMemo() {
|
||||
navigationController?.popViewController(animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDoneMemo() {
|
||||
let memoMessage = memoTextField.text?.ows_stripped()
|
||||
delegate?.didChangeMemo(memoMessage: memoMessage)
|
||||
|
||||
@ -474,10 +474,7 @@ public class SendPaymentViewController: OWSViewController {
|
||||
view.backgroundColor = tableBackgroundColor
|
||||
navigationItem.title = nil
|
||||
if mode.isModalRootView {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDismiss),
|
||||
accessibilityIdentifier: "dismiss")
|
||||
navigationItem.leftBarButtonItem = .doneButton(dismissingFrom: self)
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
} else {
|
||||
navigationItem.leftBarButtonItem = nil
|
||||
@ -858,11 +855,6 @@ public class SendPaymentViewController: OWSViewController {
|
||||
|
||||
// MARK: - Events
|
||||
|
||||
@objc
|
||||
private func didTapDismiss() {
|
||||
dismiss(animated: true, completion: nil)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapAddMemo() {
|
||||
let view = SendPaymentMemoViewController(memoMessage: self.memoMessage)
|
||||
|
||||
@ -84,7 +84,10 @@ class ImagePickerGridController: UICollectionViewController, PhotoLibraryDelegat
|
||||
|
||||
navigationItem.titleView = titleView
|
||||
|
||||
let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(didPressCancel))
|
||||
let cancelButton: UIBarButtonItem = .cancelButton { [weak self] in
|
||||
guard let self else { return }
|
||||
self.delegate?.imagePickerDidCancel(self)
|
||||
}
|
||||
cancelButton.tintColor = Theme.darkThemePrimaryColor
|
||||
navigationItem.leftBarButtonItem = cancelButton
|
||||
|
||||
@ -315,11 +318,6 @@ class ImagePickerGridController: UICollectionViewController, PhotoLibraryDelegat
|
||||
|
||||
// MARK: - Actions
|
||||
|
||||
@objc
|
||||
private func didPressCancel() {
|
||||
self.delegate?.imagePickerDidCancel(self)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDoneButton() {
|
||||
delegate?.imagePickerDidComplete(self)
|
||||
|
||||
@ -29,17 +29,7 @@ class ComposeViewController: RecipientPickerContainerViewController {
|
||||
recipientPicker.view.autoPinEdge(toSuperviewEdge: .trailing)
|
||||
recipientPicker.view.autoPinEdge(toSuperviewEdge: .bottom)
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(dismissPressed))
|
||||
}
|
||||
|
||||
@objc
|
||||
private func dismissPressed() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func newGroupPressed() {
|
||||
showNewGroupUI()
|
||||
navigationItem.leftBarButtonItem = .cancelButton(dismissingFrom: self)
|
||||
}
|
||||
|
||||
/// Presents the conversation for the given address and dismisses this
|
||||
|
||||
@ -43,11 +43,9 @@ class RegistrationChangeNumberSplashViewController: OWSViewController, OWSNaviga
|
||||
}
|
||||
|
||||
private func createContents() {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didPressCancel)
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.presenter?.exitRegistration()
|
||||
}
|
||||
|
||||
let scrollView = UIScrollView()
|
||||
view.addSubview(scrollView)
|
||||
@ -143,11 +141,6 @@ class RegistrationChangeNumberSplashViewController: OWSViewController, OWSNaviga
|
||||
continueButton.autoPinEdgesToSuperviewMargins()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didPressCancel() {
|
||||
presenter?.exitRegistration()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapContinue(_ sender: UIButton) {
|
||||
presenter?.continueFromSplash()
|
||||
|
||||
@ -80,22 +80,17 @@ class RegistrationChangePhoneNumberViewController: OWSTableViewController2 {
|
||||
title = OWSLocalizedString("SETTINGS_CHANGE_PHONE_NUMBER_VIEW_TITLE",
|
||||
comment: "Title for the 'change phone number' views in settings.")
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didPressCancel)
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.presenter?.exitRegistration()
|
||||
}
|
||||
|
||||
updateTableContents()
|
||||
}
|
||||
|
||||
fileprivate func updateNavigationBar() {
|
||||
let doneItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapContinue)
|
||||
)
|
||||
navigationItem.rightBarButtonItem = doneItem
|
||||
navigationItem.rightBarButtonItem = .doneButton { [weak self] in
|
||||
self?.tryToContinue()
|
||||
}
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
@ -280,22 +275,6 @@ class RegistrationChangePhoneNumberViewController: OWSTableViewController2 {
|
||||
comment: "Error indicating that the user's old and new phone numbers are identical.")
|
||||
OWSActionSheets.showActionSheet(title: nil, message: message)
|
||||
}
|
||||
|
||||
// MARK: - Events
|
||||
|
||||
@objc
|
||||
private func didPressCancel() {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
presenter?.exitRegistration()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapContinue() {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
tryToContinue()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: -
|
||||
|
||||
@ -66,7 +66,7 @@ public class ManageStickersViewController: OWSTableViewController2 {
|
||||
|
||||
navigationItem.title = OWSLocalizedString("STICKERS_MANAGE_VIEW_TITLE", comment: "Title for the 'manage stickers' view.")
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(didPressDismiss))
|
||||
navigationItem.leftBarButtonItem = .cancelButton(dismissingFrom: self)
|
||||
}
|
||||
|
||||
override public func viewDidLoad() {
|
||||
@ -537,13 +537,6 @@ public class ManageStickersViewController: OWSTableViewController2 {
|
||||
|
||||
needsStateUpdate = true
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didPressDismiss(sender: UIButton) {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
dismiss(animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: -
|
||||
|
||||
@ -31,7 +31,9 @@ public class AddToGroupViewController: OWSTableViewController2 {
|
||||
|
||||
title = OWSLocalizedString("ADD_TO_GROUP_TITLE", comment: "Title of the 'add to group' view.")
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(didPressCloseButton))
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.didPressCloseButton()
|
||||
}
|
||||
|
||||
defaultSeparatorInsetLeading = Self.cellHInnerMargin + CGFloat(AvatarBuilder.smallAvatarSizePoints) + ContactCellView.avatarTextHSpacing
|
||||
|
||||
@ -94,8 +96,7 @@ public class AddToGroupViewController: OWSTableViewController2 {
|
||||
updateTableContents()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didPressCloseButton(sender: UIButton) {
|
||||
private func didPressCloseButton() {
|
||||
Logger.info("")
|
||||
|
||||
self.dismiss(animated: true)
|
||||
|
||||
@ -66,21 +66,19 @@ class DisappearingMessagesTimerSettingsViewController: OWSTableViewController2 {
|
||||
|
||||
private func updateNavigation() {
|
||||
if !useCustomPicker {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel_button"
|
||||
navigationItem.leftBarButtonItem = .cancelButton(
|
||||
dismissingFrom: self,
|
||||
hasUnsavedChanges: { [weak self] in self?.hasUnsavedChanges }
|
||||
)
|
||||
}
|
||||
|
||||
if hasUnsavedChanges {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
navigationItem.rightBarButtonItem = .button(
|
||||
title: CommonStrings.setButton,
|
||||
style: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "set_button"
|
||||
action: { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
)
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
@ -179,19 +177,6 @@ class DisappearingMessagesTimerSettingsViewController: OWSTableViewController2 {
|
||||
return OWSDisappearingMessagesConfiguration.presetDurationsSeconds().map { $0.uint32Value }.reversed()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
guard hasUnsavedChanges else {
|
||||
dismiss(animated: true)
|
||||
return
|
||||
}
|
||||
|
||||
OWSActionSheets.showPendingChangesActionSheet(discardAction: { [weak self] in
|
||||
self?.dismiss(animated: true)
|
||||
})
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
let configuration = self.configuration
|
||||
|
||||
|
||||
@ -119,38 +119,30 @@ class GroupDescriptionViewController: OWSTableViewController2 {
|
||||
}
|
||||
|
||||
if isEditable {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel_button"
|
||||
navigationItem.leftBarButtonItem = .cancelButton(
|
||||
dismissingFrom: self,
|
||||
hasUnsavedChanges: { [weak self] in self?.helper.hasUnsavedChanges }
|
||||
)
|
||||
} else {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "done_button"
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .doneButton { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
}
|
||||
|
||||
if helper.hasUnsavedChanges {
|
||||
owsAssertDebug(isEditable)
|
||||
if options.contains(.updateImmediately) {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
navigationItem.rightBarButtonItem = .button(
|
||||
title: CommonStrings.setButton,
|
||||
style: .done,
|
||||
target: self,
|
||||
action: #selector(didTapSet),
|
||||
accessibilityIdentifier: "set_button"
|
||||
action: { [weak self] in
|
||||
self?.didTapSet()
|
||||
}
|
||||
)
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "done_button"
|
||||
)
|
||||
navigationItem.rightBarButtonItem = .doneButton { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
@ -213,26 +205,12 @@ class GroupDescriptionViewController: OWSTableViewController2 {
|
||||
self.contents = contents
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
guard helper.hasUnsavedChanges else {
|
||||
dismiss(animated: true)
|
||||
return
|
||||
}
|
||||
|
||||
OWSActionSheets.showPendingChangesActionSheet(discardAction: { [weak self] in
|
||||
self?.dismiss(animated: true)
|
||||
})
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
helper.descriptionTextView.acceptAutocorrectSuggestion()
|
||||
descriptionDelegate?.groupDescriptionViewControllerDidComplete(groupDescription: helper.groupDescriptionCurrent)
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapSet() {
|
||||
guard isEditable, helper.hasUnsavedChanges else {
|
||||
return owsFailDebug("Unexpectedly trying to set")
|
||||
|
||||
@ -59,20 +59,15 @@ class GroupNameViewController: OWSTableViewController2 {
|
||||
comment: "Title for the group name view."
|
||||
)
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel_button"
|
||||
navigationItem.leftBarButtonItem = .cancelButton(
|
||||
dismissingFrom: self,
|
||||
hasUnsavedChanges: { [weak self] in self?.helper.hasUnsavedChanges }
|
||||
)
|
||||
|
||||
if helper.hasUnsavedChanges {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "done_button"
|
||||
)
|
||||
navigationItem.rightBarButtonItem = .doneButton { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
}
|
||||
@ -116,19 +111,6 @@ class GroupNameViewController: OWSTableViewController2 {
|
||||
self.contents = contents
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
guard helper.hasUnsavedChanges else {
|
||||
dismiss(animated: true)
|
||||
return
|
||||
}
|
||||
|
||||
OWSActionSheets.showPendingChangesActionSheet(discardAction: { [weak self] in
|
||||
self?.dismiss(animated: true)
|
||||
})
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
helper.nameTextField.acceptAutocorrectSuggestion()
|
||||
nameDelegate?.groupNameViewControllerDidComplete(groupName: helper.groupNameCurrent)
|
||||
|
||||
@ -68,20 +68,18 @@ class GroupPermissionsSettingsViewController: OWSTableViewController2 {
|
||||
}
|
||||
|
||||
private func updateNavigation() {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel_button"
|
||||
navigationItem.leftBarButtonItem = .cancelButton(
|
||||
dismissingFrom: self,
|
||||
hasUnsavedChanges: { [weak self] in self?.hasUnsavedChanges }
|
||||
)
|
||||
|
||||
if hasUnsavedChanges {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
navigationItem.rightBarButtonItem = .button(
|
||||
title: CommonStrings.setButton,
|
||||
style: .done,
|
||||
target: self,
|
||||
action: #selector(didTapSet),
|
||||
accessibilityIdentifier: "set_button"
|
||||
action: { [weak self] in
|
||||
self?.didTapSet()
|
||||
}
|
||||
)
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
@ -258,19 +256,6 @@ class GroupPermissionsSettingsViewController: OWSTableViewController2 {
|
||||
updateTableContents()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
guard hasUnsavedChanges else {
|
||||
dismiss(animated: true)
|
||||
return
|
||||
}
|
||||
|
||||
OWSActionSheets.showPendingChangesActionSheet(discardAction: { [weak self] in
|
||||
self?.dismiss(animated: true)
|
||||
})
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapSet() {
|
||||
guard groupViewHelper.canEditPermissions else {
|
||||
owsFailDebug("Missing edit permission.")
|
||||
|
||||
@ -55,10 +55,9 @@ class NameCollisionResolutionViewController: OWSTableViewController2 {
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(donePressed))
|
||||
navigationItem.leftBarButtonItem = .doneButton { [weak self] in
|
||||
self?.donePressed()
|
||||
}
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
}
|
||||
|
||||
@ -262,8 +261,7 @@ class NameCollisionResolutionViewController: OWSTableViewController2 {
|
||||
// We observe contact updates and will automatically update our model in response
|
||||
}
|
||||
|
||||
@objc
|
||||
private func donePressed(_ sender: UIBarButtonItem) {
|
||||
private func donePressed() {
|
||||
// When the user presses done, implicitly mark the remaining collisions as resolved (if the finder supports it)
|
||||
// Note: We only do this for dismissal via "Done". If the user uses interactive sheet dismissal, leave the
|
||||
// collisions as-is.
|
||||
|
||||
@ -61,11 +61,7 @@ private class AddToContactsFlowNavigationController: UINavigationController, CNC
|
||||
let contactViewController = contactsViewHelper.contactViewController(for: flow)
|
||||
// CNContactViewController doesn't provide a Cancel button unless in editing mode.
|
||||
if !flow.editImmediately {
|
||||
contactViewController.navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(cancelButtonTapped(sender:))
|
||||
)
|
||||
contactViewController.navigationItem.leftBarButtonItem = .cancelButton(dismissingFrom: self, completion: completion)
|
||||
}
|
||||
pushViewController(contactViewController, animated: false)
|
||||
case is AddToExistingContactFlow:
|
||||
@ -92,11 +88,6 @@ private class AddToContactsFlowNavigationController: UINavigationController, CNC
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
private func cancelButtonTapped(sender: Any) {
|
||||
dismiss(animated: true, completion: completion)
|
||||
}
|
||||
|
||||
// MARK: CNContactViewControllerDelegate
|
||||
|
||||
func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) {
|
||||
|
||||
@ -112,10 +112,13 @@ class CustomColorViewController: OWSTableViewController2 {
|
||||
title = OWSLocalizedString("CUSTOM_CHAT_COLOR_SETTINGS_TITLE",
|
||||
comment: "Title for the custom chat color settings view.")
|
||||
|
||||
navigationItem.rightBarButtonItem = .init(title: CommonStrings.setButton,
|
||||
style: .done,
|
||||
target: self,
|
||||
action: #selector(didTapSet))
|
||||
navigationItem.rightBarButtonItem = .button(
|
||||
title: CommonStrings.setButton,
|
||||
style: .done,
|
||||
action: { [weak self] in
|
||||
self?.didTapSet()
|
||||
}
|
||||
)
|
||||
|
||||
createSubviews()
|
||||
|
||||
@ -177,20 +180,17 @@ class CustomColorViewController: OWSTableViewController2 {
|
||||
}
|
||||
self.navigationState = navigationState
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel),
|
||||
accessibilityIdentifier: "cancel_button"
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.didTapCancel()
|
||||
}
|
||||
|
||||
if hasUnsavedChanges {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
navigationItem.rightBarButtonItem = .button(
|
||||
title: CommonStrings.setButton,
|
||||
style: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "set_button"
|
||||
action: { [weak self] in
|
||||
self?.didTapDone()
|
||||
}
|
||||
)
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = nil
|
||||
@ -471,12 +471,10 @@ class CustomColorViewController: OWSTableViewController2 {
|
||||
self.navigationController?.popViewController(animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapSet() {
|
||||
showSaveUI()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
guard hasUnsavedChanges else {
|
||||
dismissWithoutSaving()
|
||||
@ -488,7 +486,6 @@ class CustomColorViewController: OWSTableViewController2 {
|
||||
})
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
showSaveUI()
|
||||
}
|
||||
|
||||
@ -35,9 +35,9 @@ class SAEFailedViewController: UIViewController {
|
||||
override func loadView() {
|
||||
super.loadView()
|
||||
|
||||
self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(cancelPressed))
|
||||
self.navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.cancelPressed()
|
||||
}
|
||||
self.navigationItem.title = "Signal"
|
||||
|
||||
self.view.backgroundColor = Theme.launchScreenBackgroundColor
|
||||
@ -83,8 +83,7 @@ class SAEFailedViewController: UIViewController {
|
||||
|
||||
// MARK: - Event Handlers
|
||||
|
||||
@objc
|
||||
private func cancelPressed(sender: UIButton) {
|
||||
private func cancelPressed() {
|
||||
guard let delegate = delegate else {
|
||||
owsFailDebug("missing delegate")
|
||||
return
|
||||
|
||||
@ -25,11 +25,10 @@ final class SAEScreenLockViewController: ScreenLockViewController {
|
||||
super.loadView()
|
||||
view.backgroundColor = Theme.launchScreenBackgroundColor
|
||||
title = OWSLocalizedString("SHARE_EXTENSION_VIEW_TITLE", comment: "Title for the 'share extension' view.")
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .stop,
|
||||
target: self,
|
||||
action: #selector(dismissPressed)
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .systemItem(.stop) { [weak self] in
|
||||
Logger.debug("tapped dismiss share button")
|
||||
self?.cancelShareExperience()
|
||||
}
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
@ -129,12 +128,6 @@ final class SAEScreenLockViewController: ScreenLockViewController {
|
||||
private func cancelShareExperience() {
|
||||
shareViewDelegate?.shareViewWasCancelled()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func dismissPressed(_ sender: Any) {
|
||||
Logger.debug("tapped dismiss share button")
|
||||
cancelShareExperience()
|
||||
}
|
||||
}
|
||||
|
||||
extension SAEScreenLockViewController: ScreenLockViewDelegate {
|
||||
|
||||
@ -165,6 +165,44 @@ public extension UIBarButtonItem {
|
||||
// Keep a strong reference to the Handler
|
||||
self.handler = handler
|
||||
}
|
||||
|
||||
convenience init(
|
||||
title: String,
|
||||
style: UIBarButtonItem.Style,
|
||||
action: @escaping () -> Void
|
||||
) {
|
||||
let handler = Handler(actionClosure: action)
|
||||
self.init(title: title, style: style, target: handler, action: #selector(handler.action))
|
||||
self.handler = handler
|
||||
}
|
||||
|
||||
convenience init(
|
||||
image: UIImage,
|
||||
style: UIBarButtonItem.Style,
|
||||
action: @escaping () -> Void
|
||||
) {
|
||||
let handler = Handler(actionClosure: action)
|
||||
self.init(image: image, style: style, target: handler, action: #selector(handler.action))
|
||||
self.handler = handler
|
||||
}
|
||||
}
|
||||
|
||||
/// Creates a bar button with the given title that performs the action in the provided closure.
|
||||
static func button(
|
||||
title: String,
|
||||
style: UIBarButtonItem.Style,
|
||||
action: @escaping () -> Void
|
||||
) -> UIBarButtonItem {
|
||||
ClosureBarButtonItem(title: title, style: style, action: action)
|
||||
}
|
||||
|
||||
/// Creates a bar button with the given icon that performs the action in the provided closure.
|
||||
static func button(
|
||||
icon: ThemeIcon,
|
||||
style: UIBarButtonItem.Style,
|
||||
action: @escaping () -> Void
|
||||
) -> UIBarButtonItem {
|
||||
ClosureBarButtonItem(image: Theme.iconImage(icon), style: style, action: action)
|
||||
}
|
||||
|
||||
// Keep this static function public instead of exposing ClosureBarButtonItem
|
||||
@ -195,7 +233,7 @@ public extension UIBarButtonItem {
|
||||
/// - completion: The block to execute after the view controller is dismissed.
|
||||
/// - Returns: A new `UIBarButtonItem`.
|
||||
static func cancelButton(
|
||||
dismissingFrom viewController: UIViewController,
|
||||
dismissingFrom viewController: UIViewController?,
|
||||
animated: Bool = true,
|
||||
completion: (() -> Void)? = nil
|
||||
) -> UIBarButtonItem {
|
||||
@ -214,7 +252,7 @@ public extension UIBarButtonItem {
|
||||
/// - completion: The block to execute after the view controller is dismissed.
|
||||
/// - Returns: A new `UIBarButtonItem`.
|
||||
static func cancelButton(
|
||||
dismissingFrom viewController: UIViewController,
|
||||
dismissingFrom viewController: UIViewController?,
|
||||
hasUnsavedChanges: @escaping () -> Bool?,
|
||||
animated: Bool = true,
|
||||
completion: (() -> Void)? = nil
|
||||
@ -249,6 +287,27 @@ public extension UIBarButtonItem {
|
||||
Self.systemItem(.done, action: action)
|
||||
}
|
||||
|
||||
/// Creates a "Done" bar button which dismisses the view using the provided view controller.
|
||||
/// - Parameters:
|
||||
/// - viewController: The view controller to dismiss from.
|
||||
/// - animated: Whether to animate the dismiss.
|
||||
/// - completion: The block to execute after the view controller is dismissed.
|
||||
/// - Returns: A new `UIBarButtonItem`.
|
||||
static func doneButton(
|
||||
dismissingFrom viewController: UIViewController?,
|
||||
animated: Bool = true,
|
||||
completion: (() -> Void)? = nil
|
||||
) -> UIBarButtonItem {
|
||||
Self.doneButton { [weak viewController] in
|
||||
viewController?.dismiss(animated: animated, completion: completion)
|
||||
}
|
||||
}
|
||||
|
||||
/// Creates a flexible space bar item.
|
||||
static func flexibleSpace() -> UIBarButtonItem {
|
||||
UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
||||
}
|
||||
|
||||
// Feel free to add more system item functions as the need arises
|
||||
}
|
||||
|
||||
|
||||
@ -76,16 +76,7 @@ class DeleteSystemContactViewController: OWSTableViewController2 {
|
||||
// manages to get here bad things could happen.
|
||||
owsAssert(DependenciesBridge.shared.tsAccountManager.registrationStateWithMaybeSneakyTransaction.isRegisteredPrimaryDevice)
|
||||
|
||||
self.navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel)
|
||||
)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
dismiss(animated: true)
|
||||
self.navigationItem.leftBarButtonItem = .cancelButton(dismissingFrom: self)
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
|
||||
@ -77,7 +77,9 @@ public class ContactShareViewController: OWSTableViewController2 {
|
||||
override public func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(didPressCancel))
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.didPressCancel()
|
||||
}
|
||||
if let title = shareDelegate?.titleForContactShareViewController(self) {
|
||||
navigationItem.title = title
|
||||
} else {
|
||||
@ -199,7 +201,6 @@ public class ContactShareViewController: OWSTableViewController2 {
|
||||
shareDelegate.contactShareViewController(self, didApproveContactShare: filteredContactShare)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didPressCancel() {
|
||||
guard let shareDelegate else {
|
||||
owsFailDebug("missing delegate.")
|
||||
|
||||
@ -38,17 +38,15 @@ open class ContactPickerViewController: OWSViewController, OWSNavigationChildCon
|
||||
public override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(didTapCancel)
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
guard let self else { return }
|
||||
self.delegate?.contactPickerDidCancel(self)
|
||||
}
|
||||
if allowsMultipleSelection {
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(didTapDone)
|
||||
)
|
||||
navigationItem.rightBarButtonItem = .doneButton { [weak self] in
|
||||
guard let self else { return }
|
||||
self.delegate?.contactPicker(self, didSelectMultiple: self.selectedContacts)
|
||||
}
|
||||
}
|
||||
|
||||
addChild(tableViewController)
|
||||
@ -282,18 +280,6 @@ open class ContactPickerViewController: OWSViewController, OWSNavigationChildCon
|
||||
// callback when self.tableView’s size is available.)
|
||||
searchBar.layoutMargins = OWSTableViewController2.cellOuterInsets(in: view)
|
||||
}
|
||||
|
||||
// MARK: Button Actions
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
delegate?.contactPickerDidCancel(self)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
delegate?.contactPicker(self, didSelectMultiple: selectedContacts)
|
||||
}
|
||||
}
|
||||
|
||||
extension ContactPickerViewController: UISearchBarDelegate {
|
||||
|
||||
@ -203,8 +203,9 @@ open class ConversationPickerViewController: OWSTableViewController2 {
|
||||
super.viewDidLoad()
|
||||
|
||||
if pickerDelegate?.conversationPickerCanCancel(self) ?? false {
|
||||
let cancelButton = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(onTouchCancelButton))
|
||||
self.navigationItem.leftBarButtonItem = cancelButton
|
||||
self.navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.onTouchCancelButton()
|
||||
}
|
||||
}
|
||||
|
||||
ensureSearchBarVisibility()
|
||||
@ -533,7 +534,6 @@ open class ConversationPickerViewController: OWSTableViewController2 {
|
||||
|
||||
// MARK: - Button Actions
|
||||
|
||||
@objc
|
||||
private func onTouchCancelButton() {
|
||||
pickerDelegate?.conversationPickerDidCancel(self)
|
||||
}
|
||||
|
||||
@ -48,11 +48,9 @@ public class CountryCodeViewController: OWSTableViewController2 {
|
||||
|
||||
self.title = OWSLocalizedString("COUNTRYCODE_SELECT_TITLE", comment: "")
|
||||
|
||||
self.navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .stop,
|
||||
target: self,
|
||||
action: #selector(didPressCancel),
|
||||
accessibilityIdentifier: "cancel")
|
||||
self.navigationItem.leftBarButtonItem = .systemItem(.stop) { [weak self] in
|
||||
self?.dismiss(animated: true)
|
||||
}
|
||||
|
||||
createViews()
|
||||
}
|
||||
@ -90,11 +88,6 @@ public class CountryCodeViewController: OWSTableViewController2 {
|
||||
searchBar.resignFirstResponder()
|
||||
self.dismiss(animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didPressCancel() {
|
||||
self.dismiss(animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: -
|
||||
|
||||
@ -215,13 +215,12 @@ open class BaseMemberViewController: RecipientPickerContainerViewController {
|
||||
return
|
||||
}
|
||||
if navigationController.viewControllers.count == 1 {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(dismissPressed))
|
||||
navigationItem.leftBarButtonItem = .doneButton { [weak self] in
|
||||
self?.dismissPressed()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
open func dismissPressed() {
|
||||
if !self.hasUnsavedChanges {
|
||||
// If user made no changes, dismiss.
|
||||
|
||||
@ -124,17 +124,11 @@ open class OWSTableViewController: OWSViewController {
|
||||
|
||||
public func present(fromViewController viewController: UIViewController) {
|
||||
let navigationController = OWSNavigationController(rootViewController: self)
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .stop,
|
||||
target: self,
|
||||
action: #selector(donePressed(sender:)))
|
||||
navigationItem.leftBarButtonItem = .systemItem(.stop) { [weak self] in
|
||||
self?.dismiss(animated: true)
|
||||
}
|
||||
viewController.present(navigationController, animated: true)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func donePressed(sender: Any) {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
extension OWSTableViewController: UITableViewDataSource, UITableViewDelegate {
|
||||
|
||||
@ -1028,17 +1028,10 @@ extension OWSTableViewController2: UITableViewDataSource, UITableViewDelegate, O
|
||||
|
||||
public func present(fromViewController: UIViewController) {
|
||||
let navigationController = OWSNavigationController(rootViewController: self)
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done,
|
||||
target: self,
|
||||
action: #selector(donePressed))
|
||||
navigationItem.leftBarButtonItem = .doneButton(dismissingFrom: self)
|
||||
fromViewController.present(navigationController, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func donePressed() {
|
||||
self.dismiss(animated: true, completion: nil)
|
||||
}
|
||||
|
||||
// MARK: - UIScrollViewDelegate
|
||||
|
||||
public func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
|
||||
|
||||
@ -97,11 +97,7 @@ public class FingerprintViewController: OWSViewController, OWSNavigationChildCon
|
||||
super.init()
|
||||
|
||||
title = NSLocalizedString("PRIVACY_VERIFICATION_TITLE", comment: "Navbar title")
|
||||
navigationItem.leftBarButtonItem = .init(
|
||||
barButtonSystemItem: .done,
|
||||
target: self, action: #selector(didTapDone),
|
||||
accessibilityIdentifier: "FingerprintViewController.done"
|
||||
)
|
||||
navigationItem.leftBarButtonItem = .doneButton(dismissingFrom: self)
|
||||
|
||||
identityStateChangeObserver = NotificationCenter.default.addObserver(
|
||||
forName: .identityStateDidChange,
|
||||
@ -381,11 +377,6 @@ public class FingerprintViewController: OWSViewController, OWSNavigationChildCon
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
@objc
|
||||
private func didTapDone() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
private func didTapLearnMore() {
|
||||
Self.showLearnMoreUrl(from: self)
|
||||
}
|
||||
|
||||
@ -38,17 +38,10 @@ public class SpamCaptchaViewController: UIViewController, CaptchaViewDelegate {
|
||||
|
||||
isModalInPresentation = true
|
||||
navigationItem.title = OWSLocalizedString("SPAM_CAPTCHA_VIEW_CONTROLLER", comment: "Title for the captcha view controller")
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .stop,
|
||||
target: self,
|
||||
action: #selector(didTapCancel)
|
||||
)
|
||||
}
|
||||
|
||||
@objc
|
||||
private func didTapCancel() {
|
||||
completionHandler?(nil)
|
||||
completionHandler = nil
|
||||
navigationItem.leftBarButtonItem = .systemItem(.stop) { [weak self] in
|
||||
self?.completionHandler?(nil)
|
||||
self?.completionHandler = nil
|
||||
}
|
||||
}
|
||||
|
||||
public func captchaView(_: CaptchaView, didCompleteCaptchaWithToken token: String) {
|
||||
|
||||
@ -13,7 +13,7 @@ public class AllSignalConnectionsViewController: OWSTableViewController2 {
|
||||
super.viewDidLoad()
|
||||
|
||||
title = OWSLocalizedString("ALL_SIGNAL_CONNECTIONS_TITLE", comment: "Title for the view of all your signal connections")
|
||||
navigationItem.leftBarButtonItem = .init(barButtonSystemItem: .done, target: self, action: #selector(done))
|
||||
navigationItem.leftBarButtonItem = .doneButton(dismissingFrom: self)
|
||||
|
||||
defaultSeparatorInsetLeading = Self.cellHInnerMargin + CGFloat(AvatarBuilder.smallAvatarSizePoints) + ContactCellView.avatarTextHSpacing
|
||||
|
||||
@ -21,11 +21,6 @@ public class AllSignalConnectionsViewController: OWSTableViewController2 {
|
||||
updateTableContents()
|
||||
}
|
||||
|
||||
@objc
|
||||
private func done() {
|
||||
dismiss(animated: true)
|
||||
}
|
||||
|
||||
private func updateTableContents() {
|
||||
let contents = OWSTableContents()
|
||||
defer { self.contents = contents }
|
||||
|
||||
@ -28,16 +28,17 @@ public class NewPrivateStoryRecipientsViewController: BaseMemberViewController {
|
||||
}
|
||||
|
||||
private func updateBarButtons() {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(dismissPressed))
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.dismissPressed()
|
||||
}
|
||||
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
navigationItem.rightBarButtonItem = .button(
|
||||
title: CommonStrings.nextButton,
|
||||
style: .plain,
|
||||
target: self,
|
||||
action: #selector(nextPressed))
|
||||
action: { [weak self] in
|
||||
self?.nextPressed()
|
||||
}
|
||||
)
|
||||
navigationItem.rightBarButtonItem?.isEnabled = hasUnsavedChanges
|
||||
|
||||
if recipientSet.isEmpty {
|
||||
@ -56,7 +57,6 @@ public class NewPrivateStoryRecipientsViewController: BaseMemberViewController {
|
||||
|
||||
// MARK: - Actions
|
||||
|
||||
@objc
|
||||
private func nextPressed() {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
|
||||
@ -39,15 +39,13 @@ public class SelectMyStoryRecipientsViewController: BaseMemberViewController {
|
||||
}
|
||||
|
||||
private func updateBarButtons() {
|
||||
navigationItem.leftBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .cancel,
|
||||
target: self,
|
||||
action: #selector(dismissPressed))
|
||||
navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
self?.dismissPressed()
|
||||
}
|
||||
|
||||
navigationItem.rightBarButtonItem = UIBarButtonItem(
|
||||
barButtonSystemItem: .save,
|
||||
target: self,
|
||||
action: #selector(savePressed))
|
||||
navigationItem.rightBarButtonItem = .systemItem(.save) { [weak self] in
|
||||
self?.savePressed()
|
||||
}
|
||||
navigationItem.rightBarButtonItem?.isEnabled = hasUnsavedChanges
|
||||
|
||||
switch mode {
|
||||
@ -84,7 +82,6 @@ public class SelectMyStoryRecipientsViewController: BaseMemberViewController {
|
||||
|
||||
// MARK: - Actions
|
||||
|
||||
@objc
|
||||
private func savePressed() {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
|
||||
@ -86,7 +86,10 @@ public class TextApprovalViewController: OWSViewController, BodyRangesTextViewDe
|
||||
comment: "Title for the 'message approval' dialog.")
|
||||
}
|
||||
|
||||
self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancelPressed))
|
||||
self.navigationItem.leftBarButtonItem = .cancelButton { [weak self] in
|
||||
guard let self else { return }
|
||||
self.delegate?.textApprovalDidCancel(self)
|
||||
}
|
||||
|
||||
footerView.delegate = self
|
||||
|
||||
@ -165,13 +168,6 @@ public class TextApprovalViewController: OWSViewController, BodyRangesTextViewDe
|
||||
textView.textContainerInset = UIEdgeInsets(top: 10.0, left: 10.0, bottom: 10.0, right: 10.0)
|
||||
}
|
||||
|
||||
// MARK: - Event Handlers
|
||||
|
||||
@objc
|
||||
private func cancelPressed(sender: UIButton) {
|
||||
delegate?.textApprovalDidCancel(self)
|
||||
}
|
||||
|
||||
// MARK: - UITextViewDelegate
|
||||
|
||||
public func textViewDidChange(_ textView: UITextView) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user