Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 36 additions & 2 deletions BLEUnlock/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate, NSMenuItemVa
let unlockRSSIMenu = NSMenu()
let timeoutMenu = NSMenu()
let lockDelayMenu = NSMenu()
let sleepRSSIMenu = NSMenu()
var deviceDict: [UUID: NSMenuItem] = [:]
var monitorMenuItem : NSMenuItem?
let prefs = UserDefaults.standard
Expand Down Expand Up @@ -50,6 +51,14 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate, NSMenuItemVa
item.state = .off
}
}
} else if menu == sleepRSSIMenu {
for item in menu.items {
if item.tag == ble.sleepRSSI {
item.state = .on
} else {
item.state = .off
}
}
} else if menu == timeoutMenu {
for item in menu.items {
if item.tag == Int(ble.signalTimeout) {
Expand All @@ -71,9 +80,11 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate, NSMenuItemVa

func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
if menuItem.menu == lockRSSIMenu {
return menuItem.tag <= ble.unlockRSSI
return menuItem.tag < ble.unlockRSSI
} else if menuItem.menu == unlockRSSIMenu {
return menuItem.tag >= ble.lockRSSI
return menuItem.tag > ble.lockRSSI
} else if menuItem.menu == sleepRSSIMenu {
return menuItem.tag < ble.lockRSSI || menuItem.tag == ble.LOCK_DISABLED
}
return true
}
Expand Down Expand Up @@ -234,6 +245,13 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate, NSMenuItemVa
tryUnlockScreen()
}
} else {
if (!displaySleep && ble.sleepRSSI != ble.LOCK_DISABLED &&
(lastRSSI == nil || lastRSSI! <= ble.sleepRSSI)) {
print("sleep display due to RSSI threshold")
sleepDisplay()
displaySleep = true // Mark as sleeping to prevent lock
return // Skip lock logic
}
if (!isScreenLocked() && ble.lockRSSI != ble.LOCK_DISABLED) {
pauseNowPlaying()
lockOrSaveScreen()
Expand Down Expand Up @@ -501,6 +519,12 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate, NSMenuItemVa
prefs.set(value, forKey: "unlockRSSI")
ble.unlockRSSI = value
}

@objc func setSleepRSSI(_ menuItem: NSMenuItem) {
let value = menuItem.tag
prefs.set(value, forKey: "sleepRSSI")
ble.sleepRSSI = value
}

@objc func setTimeout(_ menuItem: NSMenuItem) {
let value = menuItem.tag
Expand Down Expand Up @@ -597,6 +621,12 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate, NSMenuItemVa
constructRSSIMenu(lockRSSIMenu, #selector(setLockRSSI))
item = lockRSSIMenu.addItem(withTitle: t("disabled"), action: #selector(setLockRSSI), keyEquivalent: "")
item.tag = ble.LOCK_DISABLED

let sleepRSSIItem = mainMenu.addItem(withTitle: t("sleep_rssi"), action: nil, keyEquivalent: "")
sleepRSSIItem.submenu = sleepRSSIMenu
constructRSSIMenu(sleepRSSIMenu, #selector(setSleepRSSI))
item = sleepRSSIMenu.addItem(withTitle: t("disabled"), action: #selector(setSleepRSSI), keyEquivalent: "")
item.tag = ble.LOCK_DISABLED

let lockDelayItem = mainMenu.addItem(withTitle: t("lock_delay"), action: nil, keyEquivalent: "")
lockDelayItem.submenu = lockDelayMenu
Expand Down Expand Up @@ -692,6 +722,10 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate, NSMenuItemVa
if unlockRSSI != 0 {
ble.unlockRSSI = unlockRSSI
}
let sleepRSSI = prefs.integer(forKey: "sleepRSSI")
if sleepRSSI != 0 {
ble.sleepRSSI = sleepRSSI
}
let timeout = prefs.integer(forKey: "timeout")
if timeout != 0 {
ble.signalTimeout = Double(timeout)
Expand Down
1 change: 1 addition & 0 deletions BLEUnlock/BLE.swift
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ class BLE: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
var presence = false
var lockRSSI = -80
var unlockRSSI = -60
var sleepRSSI: Int = -95
var proximityTimeout = 5.0
var signalTimeout = 60.0
var lastReadAt = 0.0
Expand Down
1 change: 1 addition & 0 deletions BLEUnlock/Base.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@
"use_screensaver_to_lock" = "Use Screensaver to Lock";
"wake_on_proximity" = "Wake on Proximity";
"wake_without_unlocking" = "Wake without Unlocking";
"sleep_rssi" = "Sleep RSSI";
1 change: 1 addition & 0 deletions BLEUnlock/da.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@
"use_screensaver_to_lock" = "Brug screensaver til at låse";
"wake_on_proximity" = "Vågn op på nærhed";
"wake_without_unlocking" = "Vågn op uden at låse op";
"sleep_rssi" = "Sleep RSSI";
1 change: 1 addition & 0 deletions BLEUnlock/de.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@
"use_screensaver_to_lock" = "Den Bildschirmschoner verwenden zum Sperren";
"wake_on_proximity" = "Aufwachen bei Annäherung";
"wake_without_unlocking" = "Aufwachen ohne Entsperren";
"sleep_rssi" = "RSSI im Ruhezustand";
1 change: 1 addition & 0 deletions BLEUnlock/ja.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@
"use_screensaver_to_lock" = "スクリーンセーバーでロック";
"wake_on_proximity" = "画面スリープから復帰";
"wake_without_unlocking" = "アンロックせずに画面復帰";
"sleep_rssi" = "スリープ信号強度";
1 change: 1 addition & 0 deletions BLEUnlock/nb.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@
"use_screensaver_to_lock" = "Bruke skjermsparer til å låse";
"wake_on_proximity" = "Vekk ved nærhet";
"wake_without_unlocking" = "Våkne uten å låse opp";
"sleep_rssi" = "Sove RSSI";
1 change: 1 addition & 0 deletions BLEUnlock/sv.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@
"use_screensaver_to_lock" = "Använd skärmsläckare för att låsa";
"wake_on_proximity" = "Väck om i närheten";
"wake_without_unlocking" = "Vakna utan att låsa upp";
"sleep_rssi" = "Sömn RSSI";
1 change: 1 addition & 0 deletions BLEUnlock/tr.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@
"use_screensaver_to_lock" = "Kilit ekranı için ekran kuruyucu kullan";
"wake_on_proximity" = "Uyandırma yakınlığı";
"wake_without_unlocking" = "Kilidi açmadan uyanın";
"sleep_rssi" = "Uyku RSSI";
1 change: 1 addition & 0 deletions BLEUnlock/zh-Hans.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@
"use_screensaver_to_lock" = "用屏保来锁定它";
"wake_on_proximity" = "靠近唤醒";
"wake_without_unlocking" = "唤醒时不需解锁";
"sleep_rssi" = "睡眠信号强度";