Skip to content

Commit

Permalink
fixed keyboard nav for controls
Browse files Browse the repository at this point in the history
  • Loading branch information
twocanoes committed Aug 26, 2023
1 parent 4ac36cb commit c5c0cad
Show file tree
Hide file tree
Showing 12 changed files with 354 additions and 265 deletions.
1 change: 1 addition & 0 deletions DefaultsOverride.swift
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ public class DefaultsOverride: UserDefaults {
if let defaultName = cachedPrefs[defaultName] as? Bool {
return defaultName
}
TCSLogWithMark()

return UserDefaults.standard.bool(forKey: defaultName)
}
Expand Down
44 changes: 37 additions & 7 deletions NomadLogin/UI/SignInWindowController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,17 @@ class SignInWindowController: NSWindowController, DSQueryable {
let sysInfo = SystemInfoHelper().info()
var sysInfoIndex = 0
var originalPass: String?
var delegate: XCredsMechanismProtocol?
var internalDelegate:XCredsMechanismProtocol?
var delegate:XCredsMechanismProtocol? {
set {
TCSLogWithMark()
internalDelegate=newValue
controlsViewController?.delegate = newValue
}
get {
return internalDelegate
}
}

@objc var visible = true

Expand All @@ -43,6 +53,8 @@ class SignInWindowController: NSWindowController, DSQueryable {
@IBOutlet weak var signIn: NSButton!
@IBOutlet weak var imageView: NSImageView!
@IBOutlet weak var loginStack: NSStackView!
var controlsViewController: ControlsViewController?

// @IBOutlet weak var passwordChangeStack: NSStackView!
// @IBOutlet weak var passwordChangeButton: NSButton!
// @IBOutlet weak var oldPassword: NSSecureTextField!
Expand Down Expand Up @@ -83,10 +95,30 @@ class SignInWindowController: NSWindowController, DSQueryable {

override func awakeFromNib() {
TCSLogWithMark()

if setupDone == false {
prepareAccountStrings()
setupDone=true

let allBundles = Bundle.allBundles
for currentBundle in allBundles {
TCSLogWithMark(currentBundle.bundlePath)
if currentBundle.bundlePath.contains("XCreds") {

controlsViewController = ControlsViewController.init(nibName: NSNib.Name("ControlsViewController"), bundle: currentBundle)
if let controlsViewController = controlsViewController {
self.window?.contentView?.addSubview(controlsViewController.view)
let rect = NSMakeRect(0, 0, controlsViewController.view.frame.size.width,120)

controlsViewController.view.frame=rect
controlsViewController.delegate=self.delegate
}
else {
TCSLogWithMark("controlsViewController nil")
}

}
}

TCSLogWithMark("Configure login window")
loginAppearance()
Expand Down Expand Up @@ -355,12 +387,10 @@ class SignInWindowController: NSWindowController, DSQueryable {
// loginWindowTextWindow.orderFrontRegardless()
// loginWindowTextWindow.canBecomeVisibleWithoutLogin = true
TCSLogWithMark()
// if let loginwindowText = UserDefaults(suiteName: "com.apple.loginwindow")?.string(forKey: "LoginwindowText"){
// os_log("LoginwindowText defined: %{public}@", log: uiLog, type: .debug, loginwindowText)
// loginWindowTextField.stringValue = loginwindowText
// } else{
// os_log("No LoginwindowText defined", log: uiLog, type: .debug)
// }
let rect = NSMakeRect(0, 0, self.window?.contentView?.frame.size.width ?? 100,120)

controlsViewController?.view.frame=rect

}

fileprivate func showResetUI() {
Expand Down
10 changes: 5 additions & 5 deletions XCreds/LoginWebViewController.xib
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Sign In" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" titleVisibility="hidden" id="KxT-zM-Vnn" customClass="LoginWindow" customModule="XCredsLoginPlugin">
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="453" y="250" width="628" height="613"/>
<rect key="contentRect" x="453" y="250" width="1002" height="883"/>
<rect key="screenRect" x="0.0" y="0.0" width="1496" height="933"/>
<view key="contentView" wantsLayer="YES" id="2LH-tE-efn">
<rect key="frame" x="0.0" y="0.0" width="628" height="613"/>
<rect key="frame" x="0.0" y="0.0" width="1002" height="883"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="LND-Te-8nB">
<rect key="frame" x="0.0" y="0.0" width="628" height="613"/>
<rect key="frame" x="0.0" y="0.0" width="1002" height="883"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="TLB-Dt-CAz"/>
</imageView>
<wkWebView wantsLayer="YES" fixedFrame="YES" allowsLinkPreview="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IVa-Nc-Vs1">
<rect key="frame" x="0.0" y="0.0" width="628" height="613"/>
<rect key="frame" x="187" y="210" width="628" height="613"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<wkWebViewConfiguration key="configuration" allowsAirPlayForMediaPlayback="NO" suppressesIncrementalRendering="YES">
<audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
Expand All @@ -50,7 +50,7 @@
<connections>
<outlet property="delegate" destination="-2" id="WYj-G7-iZU"/>
</connections>
<point key="canvasLocation" x="250" y="297.5"/>
<point key="canvasLocation" x="63" y="432.5"/>
</window>
</objects>
</document>
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,30 @@

import Cocoa

class LoginWindowControlsWindowController: NSWindowController {
class ControlsViewController: NSViewController {
var delegate: XCredsMechanismProtocol?

@IBOutlet weak var macLoginWindowGribColumn: NSGridColumn?
@IBOutlet weak var wifiGridColumn: NSGridColumn?
@IBOutlet weak var toolsView: NSView?

let uiLog = "uiLog"
@IBOutlet weak var versionTextField: NSTextField?
var loadPageURL:URL?
var resolutionObserver:Any?
// var resolutionObserver:Any?
var wifiWindowController:WifiWindowController?
@IBOutlet weak var trialVersionStatusTextField: NSTextField!
var refreshTimer:Timer?
var commandKeyDown = false
func dismiss() {
if let resolutionObserver = resolutionObserver {
NotificationCenter.default.removeObserver(resolutionObserver)
}
self.window?.close()
}
// func dismiss() {
//// if let resolutionObserver = resolutionObserver {
//// NotificationCenter.default.removeObserver(resolutionObserver)
//// }
//// self.window?.close()
// }
// @objc override var windowNibName: NSNib.Name {
// return NSNib.Name("ControlsViewController")
// }
func commandKey(evt: NSEvent) -> NSEvent{
TCSLogWithMark(evt.debugDescription)

Expand All @@ -43,8 +48,9 @@ class LoginWindowControlsWindowController: NSWindowController {
return evt
}

override func windowDidLoad() {
super.windowDidLoad()

override func awakeFromNib() {
super.awakeFromNib()
let licenseState = LicenseChecker().currentLicenseState()
NSEvent.addLocalMonitorForEvents(matching: .flagsChanged, handler: commandKey(evt:))

Expand All @@ -61,7 +67,7 @@ class LoginWindowControlsWindowController: NSWindowController {

case .trial(let daysRemaining):
TCSLogWithMark("Trial")
self.trialVersionStatusTextField?.isHidden = false
self.trialVersionStatusTextField?.isHidden = true
if daysRemaining==1 {
self.trialVersionStatusTextField.stringValue = "XCreds Trial. One day remaining on trial."

Expand All @@ -83,6 +89,7 @@ class LoginWindowControlsWindowController: NSWindowController {
self.trialVersionStatusTextField.stringValue = "Invalid License. Please visit twocanoes.com for more information."

}
TCSLogWithMark()
setupLoginWindowControlsAppearance()
let allBundles = Bundle.allBundles
versionTextField?.stringValue = ""
Expand All @@ -100,12 +107,12 @@ class LoginWindowControlsWindowController: NSWindowController {
}
}

resolutionObserver = NotificationCenter.default.addObserver(forName:NSApplication.didChangeScreenParametersNotification, object: nil, queue: nil) { notification in
TCSLogWithMark("Resolution changed. Resetting size")
self.setupLoginWindowControlsAppearance()


}
// resolutionObserver = NotificationCenter.default.addObserver(forName:NSApplication.didChangeScreenParametersNotification, object: nil, queue: nil) { notification in
// TCSLogWithMark("Resolution changed. Resetting size")
// self.setupLoginWindowControlsAppearance()
//
//
// }

let refreshTimerSecs = DefaultsOverride.standardOverride.integer(forKey: PrefKeys.autoRefreshLoginTimer.rawValue)

Expand All @@ -119,29 +126,43 @@ class LoginWindowControlsWindowController: NSWindowController {
}
}
fileprivate func setupLoginWindowControlsAppearance() {
TCSLogWithMark()
DispatchQueue.main.async {
self.view.wantsLayer=true
self.view.layer?.backgroundColor = CGColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 0.4)


TCSLogWithMark()

self.wifiGridColumn?.isHidden = !DefaultsOverride.standardOverride.bool(forKey: PrefKeys.shouldShowConfigureWifiButton.rawValue)
TCSLogWithMark()

self.macLoginWindowGribColumn?.isHidden = !DefaultsOverride.standardOverride.bool(forKey: PrefKeys.shouldShowMacLoginButton .rawValue)
self.macLoginWindowGribColumn?.isHidden = !DefaultsOverride.standardOverride.bool(forKey: PrefKeys.shouldShowMacLoginButton.rawValue)
TCSLogWithMark()

self.versionTextField?.isHidden = !DefaultsOverride.standardOverride.bool(forKey: PrefKeys.shouldShowVersionInfo.rawValue)

TCSLogWithMark()

self.window?.level = .normal+1
// self.window?.level = .normal+1
TCSLogWithMark("ordering controls front")
self.window?.orderFrontRegardless()
// self.window?.orderFrontRegardless()

// self.window?.titlebarAppearsTransparent = true
// self.window?.isMovable = false
// self.window?.canBecomeVisibleWithoutLogin = true
TCSLogWithMark()
//
// let screenRect = NSScreen.screens[0].frame
// let windowRec = NSMakeRect(0, 0, screenRect.width,109)
// self.frame=windowRec

self.window?.titlebarAppearsTransparent = true
self.window?.isMovable = false
self.window?.canBecomeVisibleWithoutLogin = true

let screenRect = NSScreen.screens[0].frame
let windowRec = NSMakeRect(0, 0, screenRect.width,self.window?.frame.size.height ?? 109)
// TCSLogWithMark("screens: \(NSScreen.screens) height is \(windowRec), secreenredc is \(screenRect)")
TCSLogWithMark()

self.window?.setFrame(windowRec, display: true, animate: false)
self.window?.viewsNeedDisplay=true
// self.window?.setFrame(windowRec, display: true, animate: false)
// self.window?.viewsNeedDisplay=true
// TCSLogWithMark("height is \(String(describing: self.window?.frame))")
}

Expand All @@ -161,19 +182,19 @@ class LoginWindowControlsWindowController: NSWindowController {
// let colorValue=0.9
// let alpha=0.95
// window.backgroundColor=NSColor(deviceRed: colorValue, green: colorValue, blue: colorValue, alpha: alpha)
if let level = self.window?.level {
if let level = self.view.window?.level {
window.level = level+1
}

TCSLogWithMark("wifiWindowController ordering controls front")
window.orderFrontRegardless()
TCSLogWithMark()
window.titlebarAppearsTransparent = true
// window.titlebarAppearsTransparent = true
window.isMovable = true
window.canBecomeVisibleWithoutLogin = true
window.makeKeyAndOrderFront(self)

window.titlebarAppearsTransparent = true
// window.titlebarAppearsTransparent = true


let screenRect = NSScreen.screens[0].frame
Expand Down

0 comments on commit c5c0cad

Please sign in to comment.