import SwiftUI struct AppLockSettingsView: View { @State private var desiredPassword: String = "" @State private var confirmationPassword: String = "" @State private var activeAlert: AppLockAlert? @FocusState private var focusedField: Field? private enum Field: Hashable { case desired case confirmation } var body: some View { Form { Section(header: Text(NSLocalizedString("Пароль-приложение", comment: "Раздел формы установки пароля на приложение"))) { SecureField(NSLocalizedString("Введите пароль", comment: "Поле ввода пароля на приложение"), text: $desiredPassword) .focused($focusedField, equals: .desired) SecureField(NSLocalizedString("Повторите пароль", comment: "Поле подтверждения пароля на приложение"), text: $confirmationPassword) .focused($focusedField, equals: .confirmation) Button(NSLocalizedString("Сохранить пароль", comment: "Кнопка сохранения пароля на приложение")) { handleSaveTapped() } .disabled(desiredPassword.isEmpty || confirmationPassword.isEmpty) } Section { Text(NSLocalizedString("Настоящая защита приложения появится позже. Пока вы можете ознакомится с макетом.", comment: "Описание заглушки для пароля на приложение")) .font(.callout) .foregroundColor(.secondary) } } .navigationTitle(NSLocalizedString("Пароль на приложение", comment: "Заголовок экрана пароля на приложение")) .navigationBarTitleDisplayMode(.inline) .onAppear { DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) { focusedField = .desired } } .alert(item: $activeAlert) { alert in Alert( title: Text(alert.title), message: Text(alert.message), dismissButton: .default(Text(NSLocalizedString("OK", comment: "Общий текст кнопки OK"))) ) } } private func handleSaveTapped() { guard !desiredPassword.isEmpty, desiredPassword == confirmationPassword else { activeAlert = AppLockAlert( title: NSLocalizedString("Пароли не совпадают", comment: "Заголовок ошибки несовпадения паролей"), message: NSLocalizedString("Проверьте ввод и попробуйте снова.", comment: "Сообщение ошибки несовпадения паролей")) return } activeAlert = AppLockAlert( title: NSLocalizedString("Скоро", comment: "Заголовок заглушки"), message: NSLocalizedString("Защита приложением будет добавлена в будущих обновлениях.", comment: "Сообщение заглушки пароля на приложение") ) desiredPassword.removeAll() confirmationPassword.removeAll() } } private struct AppLockAlert: Identifiable { let id = UUID() let title: String let message: String } #if DEBUG struct AppLockSettingsView_Previews: PreviewProvider { static var previews: some View { NavigationView { AppLockSettingsView() } } } #endif