From 0c500464263896245581e75403ef9e02ae935859 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sun, 5 Feb 2023 13:32:34 +0800 Subject: [PATCH] PrefUI // Warn when unchecking the fart suppressor. --- .../UIModules/PrefUI/VwrPrefPaneGeneral.swift | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Source/Modules/UIModules/PrefUI/VwrPrefPaneGeneral.swift b/Source/Modules/UIModules/PrefUI/VwrPrefPaneGeneral.swift index 7e874386..9df95b01 100644 --- a/Source/Modules/UIModules/PrefUI/VwrPrefPaneGeneral.swift +++ b/Source/Modules/UIModules/PrefUI/VwrPrefPaneGeneral.swift @@ -171,6 +171,35 @@ struct VwrPrefPaneGeneral: View { Toggle( LocalizedStringKey("Stop farting (when typed phonetic combination is invalid, etc.)"), isOn: $selEnableFartSuppressor.onChange { + let content = String( + format: NSLocalizedString( + "You are about to uncheck this fart suppressor. You are responsible for all consequences lead by letting people nearby hear the fart sound come from your computer. We strongly advise against unchecking this in any public circumstance that prohibits NSFW netas.", + comment: "" + )) + let alert = NSAlert(error: NSLocalizedString("Warning", comment: "")) + alert.informativeText = content + alert.addButton(withTitle: NSLocalizedString("Uncheck", comment: "")) + if #available(macOS 11, *) { + alert.buttons.forEach { button in + button.hasDestructiveAction = true + } + } + alert.addButton(withTitle: NSLocalizedString("Leave it checked", comment: "")) + if let window = CtlPrefUI.shared.controller.window, !selEnableFartSuppressor { + PrefMgr.shared.shouldNotFartInLieuOfBeep = true + alert.beginSheetModal(for: window) { result in + switch result { + case .alertFirstButtonReturn: + PrefMgr.shared.shouldNotFartInLieuOfBeep = false + case .alertSecondButtonReturn: + PrefMgr.shared.shouldNotFartInLieuOfBeep = true + default: break + } + selEnableFartSuppressor = PrefMgr.shared.shouldNotFartInLieuOfBeep + IMEApp.buzz() + } + return + } PrefMgr.shared.shouldNotFartInLieuOfBeep = selEnableFartSuppressor IMEApp.buzz() }