From 331fedef347fea6a0ed994b017de74b5576aea57 Mon Sep 17 00:00:00 2001 From: Qiu Yuzhou Date: Sun, 15 Sep 2019 16:24:41 +0800 Subject: [PATCH] Add a `reset` button in preferences window. --- .../Base.lproj/PreferencesWinController.xib | 251 +++++++++--------- .../PreferencesWinController.swift | 30 ++- 2 files changed, 157 insertions(+), 124 deletions(-) diff --git a/ShadowsocksX-NG/Base.lproj/PreferencesWinController.xib b/ShadowsocksX-NG/Base.lproj/PreferencesWinController.xib index a86d9f1..cbc8689 100644 --- a/ShadowsocksX-NG/Base.lproj/PreferencesWinController.xib +++ b/ShadowsocksX-NG/Base.lproj/PreferencesWinController.xib @@ -56,7 +56,7 @@ - + @@ -75,10 +75,7 @@ - - - - + @@ -88,7 +85,7 @@ - + @@ -103,28 +100,43 @@ + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -151,9 +163,6 @@ - - - @@ -204,7 +213,7 @@ - + @@ -222,9 +231,6 @@ - - - @@ -267,9 +273,6 @@ - - - @@ -293,40 +296,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -337,6 +343,9 @@ + + + @@ -368,6 +377,9 @@ + + + @@ -383,10 +395,7 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -435,10 +441,7 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -569,10 +574,10 @@ - - - - + + + + diff --git a/ShadowsocksX-NG/PreferencesWinController.swift b/ShadowsocksX-NG/PreferencesWinController.swift index 20a4287..40a1854 100644 --- a/ShadowsocksX-NG/PreferencesWinController.swift +++ b/ShadowsocksX-NG/PreferencesWinController.swift @@ -35,5 +35,33 @@ class PreferencesWinController: NSWindowController { let defaults = UserDefaults.standard defaults.removeObject(forKey: "ProxyExceptions") } - + + @IBAction func resetAllPreferences(sender: NSButton) { + let alert = NSAlert.init() + alert.alertStyle = .warning; + alert.messageText = "Are you sure reset the preferences to defaults?".localized + alert.informativeText = "All your changes of preferences will be lost.".localized + alert.addButton(withTitle: "OK") + alert.addButton(withTitle: "Cancel") + if alert.runModal() == .alertFirstButtonReturn { + self.resetUserDefaults() + } + } + + func resetUserDefaults() { + let domain = Bundle.main.bundleIdentifier! + let defaults = UserDefaults.standard + + // Don't reset server profiles, restore them later. + let profiles = defaults.array(forKey: "ServerProfiles") + let activeProfileId = defaults.string(forKey: "ActiveServerProfileId") + + defaults.removePersistentDomain(forName: domain) + defaults.synchronize() + + // Restore server profiles. + defaults.set(profiles, forKey: "ServerProfiles") + defaults.set(activeProfileId, forKey: "ActiveServerProfileId") + defaults.synchronize() + } }