diff --git a/deltachat-ios/Controller/AccountSetup/WelcomeViewController.swift b/deltachat-ios/Controller/AccountSetup/WelcomeViewController.swift index 638d3d908..44e9ae45f 100644 --- a/deltachat-ios/Controller/AccountSetup/WelcomeViewController.swift +++ b/deltachat-ios/Controller/AccountSetup/WelcomeViewController.swift @@ -22,9 +22,16 @@ class WelcomeViewController: UIViewController, ProgressAlertHandler { guard let self = self else { return } self.showAccountSetupController() } + view.onAddSecondDevice = { [weak self] in + guard let self = self else { return } + let qrReader = QrCodeReaderController(title: String.localized("multidevice_title")) + qrReader.delegate = self + self.qrCodeReader = qrReader + self.navigationController?.pushViewController(qrReader, animated: true) + } view.onScanQRCode = { [weak self] in guard let self = self else { return } - let qrReader = QrCodeReaderController() + let qrReader = QrCodeReaderController(title: String.localized("scan_invitation_code")) qrReader.delegate = self self.qrCodeReader = qrReader self.navigationController?.pushViewController(qrReader, animated: true) @@ -462,6 +469,7 @@ extension WelcomeViewController: QrCodeReaderDelegate { class WelcomeContentView: UIView { var onLogin: VoidFunction? + var onAddSecondDevice: VoidFunction? var onScanQRCode: VoidFunction? var onImportBackup: VoidFunction? @@ -499,7 +507,7 @@ class WelcomeContentView: UIView { }() private lazy var buttonStack: UIStackView = { - let stack = UIStackView(arrangedSubviews: [loginButton, qrCodeButton, importBackupButton]) + let stack = UIStackView(arrangedSubviews: [loginButton, addSecondDeviceButton, qrCodeButton, importBackupButton]) stack.axis = .vertical stack.spacing = 15 return stack @@ -520,9 +528,18 @@ class WelcomeContentView: UIView { return button }() + private lazy var addSecondDeviceButton: UIButton = { + let button = UIButton() + let title = String.localized("multidevice_title") + button.setTitleColor(UIColor.systemBlue, for: .normal) + button.setTitle(title, for: .normal) + button.addTarget(self, action: #selector(addSecondDeviceButtonPressed(_:)), for: .touchUpInside) + return button + }() + private lazy var qrCodeButton: UIButton = { let button = UIButton() - let title = String.localized("qrscan_title") + let title = String.localized("scan_invitation_code") button.setTitleColor(UIColor.systemBlue, for: .normal) button.setTitle(title, for: .normal) button.addTarget(self, action: #selector(qrCodeButtonPressed(_:)), for: .touchUpInside) @@ -622,6 +639,10 @@ class WelcomeContentView: UIView { onLogin?() } + @objc private func addSecondDeviceButtonPressed(_ sender: UIButton) { + onAddSecondDevice?() + } + @objc private func qrCodeButtonPressed(_ sender: UIButton) { onScanQRCode?() } diff --git a/deltachat-ios/Controller/QrCodeReaderController.swift b/deltachat-ios/Controller/QrCodeReaderController.swift index 0806057c9..bc5c02917 100644 --- a/deltachat-ios/Controller/QrCodeReaderController.swift +++ b/deltachat-ios/Controller/QrCodeReaderController.swift @@ -7,7 +7,8 @@ class QrCodeReaderController: UIViewController { weak var delegate: QrCodeReaderDelegate? private let captureSession = AVCaptureSession() - + + private var addHints: String? private var infoLabelBottomConstraint: NSLayoutConstraint? private var infoLabelCenterConstraint: NSLayoutConstraint? @@ -35,11 +36,20 @@ class QrCodeReaderController: UIViewController { AVMetadataObject.ObjectType.qr ] + init(title: String, addHints: String? = nil) { + super.init(nibName: nil, bundle: nil) + self.title = title + self.addHints = addHints // TODO: if set, show in overlay or so + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + // MARK: - lifecycle override func viewDidLoad() { super.viewDidLoad() self.edgesForExtendedLayout = [] - title = String.localized("qrscan_title") self.setupInfoLabel() if AVCaptureDevice.authorizationStatus(for: .video) == .authorized { self.setupQRCodeScanner() diff --git a/deltachat-ios/Controller/QrPageController.swift b/deltachat-ios/Controller/QrPageController.swift index abf130b56..b22710918 100644 --- a/deltachat-ios/Controller/QrPageController.swift +++ b/deltachat-ios/Controller/QrPageController.swift @@ -118,7 +118,7 @@ class QrPageController: UIPageViewController { // MARK: - factory private func makeQRReader() -> QrCodeReaderController { - let qrReader = QrCodeReaderController() + let qrReader = QrCodeReaderController(title: String.localized("qrscan_title")) qrReader.delegate = self return qrReader }