Skip to content

Commit 490e024

Browse files
menu: gate Install action on connection state (#174)
1 parent cd38941 commit 490e024

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

sources/vphone-cli/VPhoneAppDelegate.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ class VPhoneAppDelegate: NSObject, NSApplicationDelegate {
150150
// Wire location toggle through onConnect/onDisconnect
151151
control.onConnect = { [weak mc, weak provider = locationProvider] caps in
152152
mc?.updateConnectAvailability(available: true)
153+
mc?.updateInstallAvailability(available: true)
153154
if caps.contains("location") {
154155
mc?.updateLocationCapability(available: true)
155156
// Auto-resume if user had toggle on
@@ -162,6 +163,7 @@ class VPhoneAppDelegate: NSObject, NSApplicationDelegate {
162163
}
163164
control.onDisconnect = { [weak mc, weak provider = locationProvider] in
164165
mc?.updateConnectAvailability(available: false)
166+
mc?.updateInstallAvailability(available: false)
165167
provider?.stopReplay()
166168
provider?.stopForwarding()
167169
mc?.updateLocationCapability(available: false)

sources/vphone-cli/VPhoneMenuController.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class VPhoneMenuController {
1616
var connectDevModeStatusItem: NSMenuItem?
1717
var connectPingItem: NSMenuItem?
1818
var connectGuestVersionItem: NSMenuItem?
19+
var installPackageItem: NSMenuItem?
1920
var locationProvider: VPhoneLocationProvider?
2021
var locationMenuItem: NSMenuItem?
2122
var locationPresetMenuItem: NSMenuItem?

sources/vphone-cli/VPhoneMenuInstall.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,20 @@ extension VPhoneMenuController {
77
func buildInstallMenu() -> NSMenuItem {
88
let item = NSMenuItem()
99
let menu = NSMenu(title: "Install")
10-
menu.addItem(makeItem("Install IPA/TIPA...", action: #selector(installIPAFromDisk)))
10+
menu.autoenablesItems = false
11+
12+
let install = makeItem("Install IPA/TIPA...", action: #selector(installIPAFromDisk))
13+
install.isEnabled = false
14+
installPackageItem = install
15+
menu.addItem(install)
1116
item.submenu = menu
1217
return item
1318
}
1419

20+
func updateInstallAvailability(available: Bool) {
21+
installPackageItem?.isEnabled = available
22+
}
23+
1524
@objc func installIPAFromDisk() {
1625
guard control.isConnected else {
1726
showAlert(title: "Install App Package", message: "Guest is not connected.", style: .warning)

0 commit comments

Comments
 (0)