Skip to content

Commit

Permalink
增加开机启动,用applescript替换
Browse files Browse the repository at this point in the history
  • Loading branch information
tesths committed May 8, 2016
1 parent f939132 commit 7b00a34
Showing 1 changed file with 9 additions and 64 deletions.
73 changes: 9 additions & 64 deletions TouTiao/MainViewController.swift
Expand Up @@ -29,78 +29,23 @@ class MainViewController: NSViewController {
}
}
eventMonitor?.start()
if !applicationIsInStartUpItems() {
toggleLaunchAtStartup()
}
addToLoginItems()
}

override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.

}
func applicationIsInStartUpItems() -> Bool {
return itemReferencesInLoginItems().existingReference != nil
}

func toggleLaunchAtStartup() {
let itemReferences = itemReferencesInLoginItems()
let shouldBeToggled = (itemReferences.existingReference == nil)
let loginItemsRef = LSSharedFileListCreate(
nil,
kLSSharedFileListSessionLoginItems.takeRetainedValue(),
nil
).takeRetainedValue() as LSSharedFileListRef?

if loginItemsRef != nil {
if shouldBeToggled {
if let appUrl: CFURLRef = NSURL.fileURLWithPath(NSBundle.mainBundle().bundlePath) {
LSSharedFileListInsertItemURL(loginItemsRef, itemReferences.lastReference, nil, nil, appUrl, nil, nil)
}
} else {
if let itemRef = itemReferences.existingReference {
LSSharedFileListItemRemove(loginItemsRef,itemRef);
}
}
}
}

func itemReferencesInLoginItems() -> (existingReference: LSSharedFileListItemRef?, lastReference: LSSharedFileListItemRef?) {
let itemUrl : UnsafeMutablePointer<Unmanaged<CFURL>?> = UnsafeMutablePointer<Unmanaged<CFURL>?>.alloc(1)
if let appUrl : NSURL = NSURL.fileURLWithPath(NSBundle.mainBundle().bundlePath) {
let loginItemsRef = LSSharedFileListCreate(
nil,
kLSSharedFileListSessionLoginItems.takeRetainedValue(),
nil
).takeRetainedValue() as LSSharedFileListRef?

if loginItemsRef != nil {
let loginItems = LSSharedFileListCopySnapshot(loginItemsRef, nil).takeRetainedValue() as NSArray
if(loginItems.count > 0) {
let lastItemRef = loginItems.lastObject as! LSSharedFileListItemRef

for i in 0 ..< loginItems.count {
let currentItemRef = loginItems.objectAtIndex(i) as! LSSharedFileListItemRef

if LSSharedFileListItemResolve(currentItemRef, 0, itemUrl, nil) == noErr {
if let urlRef: NSURL = itemUrl.memory?.takeRetainedValue() {
if urlRef.isEqual(appUrl) {
return (currentItemRef, lastItemRef)
}
}
}
}
// The application was not found in the startup list
return (nil, lastItemRef)

} else {
let addatstart: LSSharedFileListItemRef = kLSSharedFileListItemBeforeFirst.takeRetainedValue()
return(nil,addatstart)
}
}
}

return (nil, nil)
func addToLoginItems() {
NSTask.launchedTaskWithLaunchPath(
"/usr/bin/osascript",
arguments: [
"-e",
"tell application \"System Events\" to make login item at end with properties {path:\"/Applications/TouTiao.app\", hidden:false, name:\"Compute for TouTiao\"}"
]
)
}

func togglePopover(sender: AnyObject?) {
Expand Down

0 comments on commit 7b00a34

Please sign in to comment.