mirror of
https://github.com/neon443/DockPhobia.git
synced 2026-03-11 06:49:12 +00:00
114 lines
2.5 KiB
Swift
114 lines
2.5 KiB
Swift
//
|
|
// AppDelegate.swift
|
|
// DockPhobia
|
|
//
|
|
// Created by neon443 on 23/05/2025.
|
|
//
|
|
|
|
import AppKit
|
|
|
|
@main
|
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
|
|
public var statusItem: NSStatusItem!
|
|
|
|
var mouseTracker = MouseTracker()
|
|
|
|
|
|
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
|
statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
|
|
if let button = statusItem.button {
|
|
button.image = NSImage(named: "cursor.slash")
|
|
}
|
|
setupMenus()
|
|
}
|
|
|
|
func applicationWillTerminate(_ aNotification: Notification) {
|
|
// Insert code here to tear down your application
|
|
}
|
|
|
|
func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
|
|
return true
|
|
}
|
|
|
|
func setupMenus() {
|
|
let menu = NSMenu()
|
|
let start = NSMenuItem(title: describeStartButton(), action: #selector(didTapStart), keyEquivalent: "")
|
|
menu.addItem(start)
|
|
|
|
let screen = NSMenuItem(
|
|
title: "\(mouseTracker.screen.width)x\(mouseTracker.screen.height)",
|
|
action: nil,
|
|
keyEquivalent: ""
|
|
)
|
|
menu.addItem(screen)
|
|
|
|
menu.addItem(NSMenuItem.separator())
|
|
|
|
menu.addItem(
|
|
NSMenuItem(
|
|
title: "Move Dock to left",
|
|
action: #selector(moveDockObjcLeft),
|
|
keyEquivalent: ""
|
|
)
|
|
)
|
|
menu.addItem(
|
|
NSMenuItem(
|
|
title: "Move Dock to bottom",
|
|
action: #selector(moveDockObjcBottom),
|
|
keyEquivalent: ""
|
|
)
|
|
)
|
|
menu.addItem(
|
|
NSMenuItem(
|
|
title: "Move Dock to right",
|
|
action: #selector(moveDockObjcRight),
|
|
keyEquivalent: ""
|
|
)
|
|
)
|
|
|
|
menu.addItem(NSMenuItem.separator())
|
|
|
|
let quit = NSMenuItem(title: "Quit", action: #selector(quit), keyEquivalent: "q")
|
|
menu.addItem(quit)
|
|
statusItem.menu = menu
|
|
}
|
|
|
|
func changeMenuIcon(running: Bool) {
|
|
guard let button = statusItem.button else { return }
|
|
switch running {
|
|
case true:
|
|
button.image = NSImage(named: "cursor.motion")
|
|
case false:
|
|
button.image = NSImage(named: "cursor.slash")
|
|
}
|
|
}
|
|
|
|
@objc func didTapStart() {
|
|
if mouseTracker.running {
|
|
mouseTracker.stop()
|
|
changeMenuIcon(running: false)
|
|
} else {
|
|
mouseTracker.start()
|
|
changeMenuIcon(running: true)
|
|
}
|
|
setupMenus()
|
|
}
|
|
|
|
@objc func quit() {
|
|
NSApplication.shared.terminate(self)
|
|
}
|
|
|
|
@objc func moveDockObjcLeft() { mouseTracker.moveDock(.left) }
|
|
@objc func moveDockObjcRight() { mouseTracker.moveDock(.right) }
|
|
@objc func moveDockObjcBottom() { mouseTracker.moveDock(.bottom) }
|
|
|
|
func describeStartButton() -> String {
|
|
if mouseTracker.running {
|
|
return "Stop tracking"
|
|
} else {
|
|
return "Start tracking"
|
|
}
|
|
}
|
|
}
|