I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit 36a5790b authored by meeh's avatar meeh
Browse files

Mac OS X Launcher: Misc minor updates to Preferences

parent b946bb06
No related branches found
No related tags found
No related merge requests found
......@@ -19,7 +19,7 @@
BF1D6D9921BB7DC10014EB07 /* FirefoxManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1D6D9821BB7DC10014EB07 /* FirefoxManager.swift */; };
BF1D6D9B21BB86520014EB07 /* ConsoleWebView.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BF1D6D9A21BB86520014EB07 /* ConsoleWebView.storyboard */; };
BF1D6D9D21BB87000014EB07 /* EmbeddedConsoleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1D6D9C21BB87000014EB07 /* EmbeddedConsoleView.swift */; };
BF1D6D9F21BBA1460014EB07 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF1D6D9E21BBA1460014EB07 /* WebKit.framework */; };
BF1D6D9F21BBA1460014EB07 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF1D6D9E21BBA1460014EB07 /* WebKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
BF1D6DA321BBB8120014EB07 /* AdvancedTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1D6DA221BBB8120014EB07 /* AdvancedTableView.swift */; };
BF1D6DA521BBB84E0014EB07 /* PreferencesViewController+TableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1D6DA421BBB84E0014EB07 /* PreferencesViewController+TableView.swift */; };
BF1EFA3A215140E60014EB07 /* SBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = BF1EFA39215140E60014EB07 /* SBridge.mm */; };
......
......@@ -27,20 +27,14 @@ class PreferenceRow {
class Preferences : NSObject {
private var prefObject: Dictionary<String,Any> = Dictionary<String,Any>()
private var prefDict = Dictionary<String,PreferenceRow>()
private var prefDefaultDict: Dictionary<String,Any>?
private var prefDefaultDict: Dictionary<String,Any> = Dictionary<String,Any>()
// This makes an read-only property computed from another property
// It's usage is mainly in UI Table view, so we want the prefDict size
var count: Int {
get {
return prefDict.count
}
}
var count: Int = 0
// Interface with a string setting in background
var showAsIconMode: PreferencesViewController.ShowAsMode {
get {
var mode = self.prefObject["I2Pref_showAsIconMode"]
var mode = self["I2Pref_showAsIconMode"]
if (mode == nil) {
mode = "bothIcon"
}
......@@ -66,8 +60,8 @@ class Preferences : NSObject {
case .dockIcon:
newMode = "dockIcon"
}
self.prefObject["I2Pref_showAsIconMode"] = newMode
UserDefaults.standard.setPersistentDomain(self.prefObject, forName: APPDOMAIN)
self["I2Pref_showAsIconMode"] = newMode
self.syncPref()
}
}
......@@ -78,21 +72,25 @@ class Preferences : NSObject {
}
set(newValue) {
prefObject[prefName] = newValue
prefDict[prefName] = PreferenceRow(prefName, newValue)
UserDefaults.standard.setPersistentDomain(self.prefObject, forName: APPDOMAIN)
prefDict[prefName] = PreferenceRow(prefName, newValue, prefDefaultDict[prefName])
self.syncPref()
}
}
func syncPref() {
UserDefaults.standard.setPersistentDomain(self.prefObject, forName: APPDOMAIN)
UserDefaults.standard.synchronize()
}
// Lookup by index
subscript(index:Int) -> PreferenceRow? {
get {
return prefDict[Array(prefDict.keys)[index]]
}
set(newValue) {
let pKey = Array(prefDict.keys)[index]
let pKey = Array(prefDefaultDict.keys)[index]
prefDict[pKey] = newValue!
prefObject[pKey] = newValue!.asRawValue()
UserDefaults.standard.setPersistentDomain(self.prefObject, forName: APPDOMAIN)
}
}
......@@ -123,10 +121,19 @@ class Preferences : NSObject {
defaults["I2Pref_featureToggleExperimental"] = false
preferences.prefDefaultDict = defaults
if (preferences.prefDict.isEmpty) {
/*if (preferences.prefDict.isEmpty) {
print("Stored new user defaults")
preferences.addDictToPrefTable(defaults)
}*/
for name in Array(preferences.prefDefaultDict.keys) {
let potentialValue = UserDefaults.standard.object(forKey: name)
//preferences.prefDict[name] = PreferenceRow(name, potentialValue, preferences.prefDefaultDict[name])
preferences[name] = potentialValue
}
preferences.count = preferences.prefDict.keys.count
UserDefaults.standard.register(defaults: defaults)
UserDefaults.standard.setPersistentDomain(preferences.prefObject, forName: APPDOMAIN)
UserDefaults.standard.synchronize()
print("User Preferences loaded - Got \(preferences.count) items.")
......@@ -142,7 +149,7 @@ class Preferences : NSObject {
for (pKey, pVal) in dict {
if (pKey.starts(with: "I2P")) {
print("Preference -> \(pKey)")
prefDict[pKey] = PreferenceRow(pKey, pVal, self.prefDefaultDict![pKey])
self[pKey] = pVal
} else {
print("Skipping preference -> \(pKey)")
}
......@@ -153,10 +160,17 @@ class Preferences : NSObject {
private override init() {
super.init()
self.prefObject = UserDefaults.standard.persistentDomain(forName: APPDOMAIN) ?? Dictionary<String,Any>()
let fromDisk = UserDefaults.standard.persistentDomain(forName: APPDOMAIN) ?? Dictionary<String,Any>()
for (pKey, pVal) in fromDisk {
if (pKey.starts(with: "I2P")) {
print("Preference -> \(pKey)")
self[pKey] = pVal
} else {
print("Skipping preference -> \(pKey)")
}
}
print("Preferences size from disk is: \(prefObject.count).")
self.addDictToPrefTable(self.prefObject)
UserDefaults.standard.setPersistentDomain(self.prefObject, forName: APPDOMAIN)
self.syncPref()
}
// TODO: Make menubar icon optional
......@@ -171,7 +185,7 @@ class Preferences : NSObject {
}
func redrawPrefTableItems() {
self.addDictToPrefTable(self.prefObject, true)
self.addDictToPrefTable(self.prefObject, false)
}
......@@ -179,104 +193,104 @@ class Preferences : NSObject {
var startRouterOnLauncherStart: Bool {
get {
let dfl = self.prefDefaultDict?["I2Pref_startRouterAtStartup"] as! Bool
return (self.prefObject["I2Pref_startRouterAtStartup"] as? Bool ?? dfl)
let dfl = self.prefDefaultDict["I2Pref_startRouterAtStartup"] as! Bool
return (self["I2Pref_startRouterAtStartup"] as? Bool ?? dfl)
}
set(newValue) {
self.prefObject["I2Pref_startRouterAtStartup"] = newValue
UserDefaults.standard.synchronize()
self["I2Pref_startRouterAtStartup"] = newValue
self.syncPref()
}
}
var stopRouterOnLauncherShutdown: Bool {
get {
let dfl = self.prefDefaultDict?["I2Pref_stopRouterAtShutdown"] as! Bool
return (self.prefObject["I2Pref_stopRouterAtShutdown"] as? Bool ?? dfl)
let dfl = self.prefDefaultDict["I2Pref_stopRouterAtShutdown"] as! Bool
return (self["I2Pref_stopRouterAtShutdown"] as? Bool ?? dfl)
}
set(newValue) {
self.prefObject["I2Pref_stopRouterAtShutdown"] = newValue
UserDefaults.standard.synchronize()
self["I2Pref_stopRouterAtShutdown"] = newValue
self.syncPref()
}
}
var allowAdvancedPreferenceEdit: Bool {
get {
let dfl = self.prefDefaultDict?["I2Pref_allowAdvancedPreferences"] as! Bool
return (self.prefObject["I2Pref_allowAdvancedPreferences"] as? Bool ?? dfl)
let dfl = self.prefDefaultDict["I2Pref_allowAdvancedPreferences"] as! Bool
return (self["I2Pref_allowAdvancedPreferences"] as? Bool ?? dfl)
}
set(newValue) {
self.prefObject["I2Pref_allowAdvancedPreferences"] = newValue
UserDefaults.standard.synchronize()
self["I2Pref_allowAdvancedPreferences"] = newValue
self.syncPref()
}
}
var alsoStartFirefoxOnLaunch: Bool {
get {
let dfl = self.prefDefaultDict?["I2Pref_alsoStartFirefoxOnLaunch"] as! Bool
return (self.prefObject["I2Pref_alsoStartFirefoxOnLaunch"] as? Bool ?? dfl)
let dfl = self.prefDefaultDict["I2Pref_alsoStartFirefoxOnLaunch"] as! Bool
return (self["I2Pref_alsoStartFirefoxOnLaunch"] as? Bool ?? dfl)
}
set(newValue) {
self.prefObject["I2Pref_alsoStartFirefoxOnLaunch"] = newValue
UserDefaults.standard.synchronize()
self["I2Pref_alsoStartFirefoxOnLaunch"] = newValue
self.syncPref()
}
}
var featureToggleExperimental: Bool {
get {
let dfl = self.prefDefaultDict?["I2Pref_featureToggleExperimental"] as! Bool
return (self.prefObject["I2Pref_featureToggleExperimental"] as? Bool ?? dfl)
let dfl = self.prefDefaultDict["I2Pref_featureToggleExperimental"] as! Bool
return (self["I2Pref_featureToggleExperimental"] as? Bool ?? dfl)
}
set(newValue) {
self.prefObject["I2Pref_featureToggleExperimental"] = newValue
UserDefaults.standard.synchronize()
self["I2Pref_featureToggleExperimental"] = newValue
self.syncPref()
}
}
var i2pBaseDirectory: String {
get {
let dfl = self.prefDefaultDict?["I2Pref_i2pBaseDirectory"] as! String
return (self.prefObject["I2Pref_i2pBaseDirectory"] as? String ?? dfl)
let dfl = self.prefDefaultDict["I2Pref_i2pBaseDirectory"] as! String
return (self["I2Pref_i2pBaseDirectory"] as? String ?? dfl)
}
set(newValue) {
// TODO: Check if string is a valid directory path, and that it exists.
self.prefObject["I2Pref_i2pBaseDirectory"] = newValue
UserDefaults.standard.synchronize()
self["I2Pref_i2pBaseDirectory"] = newValue
self.syncPref()
}
}
var i2pLogDirectory: String {
get {
let dfl = self.prefDefaultDict?["I2Pref_i2pLogDirectory"] as! String
return (self.prefObject["I2Pref_i2pLogDirectory"] as? String ?? dfl)
let dfl = self.prefDefaultDict["I2Pref_i2pLogDirectory"] as! String
return (self["I2Pref_i2pLogDirectory"] as? String ?? dfl)
}
set(newValue) {
// TODO: Check if string is a valid java command path, check if it executes with -version.
self.prefObject["I2Pref_i2pLogDirectory"] = newValue
UserDefaults.standard.synchronize()
self["I2Pref_i2pLogDirectory"] = newValue
self.syncPref()
}
}
var javaCommandPath: String {
get {
let dfl = self.prefDefaultDict?["I2Pref_javaCommandPath"] as! String
return (self.prefObject["I2Pref_javaCommandPath"] as? String ?? dfl)
let dfl = self.prefDefaultDict["I2Pref_javaCommandPath"] as! String
return (self["I2Pref_javaCommandPath"] as? String ?? dfl)
}
set(newValue) {
// TODO: Check if string is a valid java command path, check if it executes with -version.
self.prefObject["I2Pref_javaCommandPath"] = newValue
UserDefaults.standard.synchronize()
self["I2Pref_javaCommandPath"] = newValue
self.syncPref()
}
}
var javaCommandOptions: String {
get {
let dfl = self.prefDefaultDict?["I2Pref_javaCommandOptions"] as! String
return (self.prefObject["I2Pref_javaCommandOptions"] as? String ?? dfl)
let dfl = self.prefDefaultDict["I2Pref_javaCommandOptions"] as! String
return (self["I2Pref_javaCommandOptions"] as? String ?? dfl)
}
set(newValue) {
// TODO: Check if string is a valid set of java options
self.prefObject["I2Pref_javaCommandOptions"] = newValue
UserDefaults.standard.synchronize()
self["I2Pref_javaCommandOptions"] = newValue
self.syncPref()
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment