96 lines
3.1 KiB
Swift
96 lines
3.1 KiB
Swift
//
|
|
// ProxyPreferencesController.swift
|
|
// ShadowsocksX-NG
|
|
//
|
|
// Created by 邱宇舟 on 16/6/29.
|
|
// Copyright © 2016年 qiuyuzhou. All rights reserved.
|
|
//
|
|
|
|
import Cocoa
|
|
|
|
class ProxyPreferencesController: NSWindowController, NSTableViewDataSource, NSTableViewDelegate {
|
|
|
|
var networkServices: NSArray!
|
|
var selectedNetworkServices: NSMutableSet!
|
|
|
|
var autoConfigureNetworkServices: Bool = true
|
|
|
|
@IBOutlet var autoConfigCheckBox: NSButton!
|
|
|
|
@IBOutlet var tableView: NSTableView!
|
|
|
|
override func windowDidLoad() {
|
|
super.windowDidLoad()
|
|
|
|
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
|
let defaults = UserDefaults.standard
|
|
self.setValue(defaults.bool(forKey: "AutoConfigureNetworkServices"), forKey: "autoConfigureNetworkServices")
|
|
|
|
if let services = defaults.array(forKey: "Proxy4NetworkServices") {
|
|
selectedNetworkServices = NSMutableSet(array: services)
|
|
} else {
|
|
selectedNetworkServices = NSMutableSet()
|
|
}
|
|
|
|
networkServices = ProxyConfTool.networkServicesList() as NSArray!
|
|
tableView.reloadData()
|
|
}
|
|
|
|
@IBAction func ok(_ sender: NSObject){
|
|
ProxyConfHelper.disableProxy()
|
|
|
|
let defaults = UserDefaults.standard
|
|
defaults.setValue(selectedNetworkServices.allObjects, forKeyPath: "Proxy4NetworkServices")
|
|
defaults.set(autoConfigureNetworkServices, forKey: "AutoConfigureNetworkServices")
|
|
|
|
defaults.synchronize()
|
|
|
|
window?.performClose(self)
|
|
|
|
NotificationCenter.default
|
|
.post(name: Notification.Name(rawValue: NOTIFY_ADV_PROXY_CONF_CHANGED), object: nil)
|
|
}
|
|
|
|
@IBAction func cancel(_ sender: NSObject){
|
|
window?.performClose(self)
|
|
}
|
|
|
|
//--------------------------------------------------
|
|
// For NSTableViewDataSource
|
|
func numberOfRows(in tableView: NSTableView) -> Int {
|
|
if networkServices != nil {
|
|
return networkServices.count
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?
|
|
, row: Int) -> Any? {
|
|
let cell = tableColumn!.dataCell as! NSButtonCell
|
|
|
|
let networkService = networkServices[row] as! [String: Any]
|
|
let key = networkService["key"] as! String
|
|
if selectedNetworkServices.contains(key) {
|
|
cell.state = 1
|
|
} else {
|
|
cell.state = 0
|
|
}
|
|
let userDefinedName = networkService["userDefinedName"] as! String
|
|
cell.title = userDefinedName
|
|
return cell
|
|
}
|
|
|
|
func tableView(_ tableView: NSTableView, setObjectValue object: Any?
|
|
, for tableColumn: NSTableColumn?, row: Int) {
|
|
let networkService = networkServices[row] as! [String: Any]
|
|
let key = networkService["key"] as! String
|
|
|
|
// NSLog("%d", object!.integerValue)
|
|
if (object! as AnyObject).intValue == 1 {
|
|
selectedNetworkServices.add(key)
|
|
} else {
|
|
selectedNetworkServices.remove(key)
|
|
}
|
|
}
|
|
}
|