Skip to content

Commit

Permalink
refactored menu code
Browse files Browse the repository at this point in the history
  • Loading branch information
twocanoes committed Jan 12, 2024
1 parent 93371b9 commit a76b7f8
Show file tree
Hide file tree
Showing 18 changed files with 869 additions and 622 deletions.
2 changes: 0 additions & 2 deletions DefaultsOverride.swift
Original file line number Diff line number Diff line change
Expand Up @@ -177,14 +177,12 @@ public class DefaultsOverride: UserDefaults {
return UserDefaults.standard.double(forKey: defaultName)
}
override public func bool(forKey defaultName: String) -> Bool {
TCSLogWithMark("requested override for \(defaultName)")

if let defaultName = cachedPrefs[defaultName] as? Bool {
TCSLogWithMark("override value \(defaultName)")

return defaultName
}
TCSLogWithMark("default not overridden")

return UserDefaults.standard.bool(forKey: defaultName)
}
Expand Down
2 changes: 1 addition & 1 deletion Profile Manifest/com.twocanoes.xcreds.plist
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<key>pfm_app_url</key>
<string>https://github.com/twocanoes/xcreds</string>
<key>pfm_description</key>
<string>XCreds 4.0 (6210) OAuth Settings</string>
<string>XCreds 4.0 (6212) OAuth Settings</string>
<key>pfm_documentation_url</key>
<string>https://twocanoes.com/knowledge-base/xcreds-admin-guide/#preferences</string>
<key>pfm_domain</key>
Expand Down
2 changes: 1 addition & 1 deletion XCreds Login Overlay/Base.lproj/MainMenu.xib
Original file line number Diff line number Diff line change
Expand Up @@ -696,7 +696,7 @@
<rect key="frame" x="0.0" y="39" width="395" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MrL-Zn-3BA">
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MrL-Zn-3BA">
<rect key="frame" x="43" y="6" width="88" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="left" title="Cloud Login" drawsBackground="YES" id="UqT-fq-knF">
Expand Down
42 changes: 39 additions & 3 deletions XCreds/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,44 @@ class AppDelegate: NSObject, NSApplicationDelegate, DSQueryable {
var screenIsLocked=true
var isDisplayAsleep=true
var waitForScreenToWake=false
@IBOutlet weak var statusMenu: NSMenu!

var statusBarItem:NSStatusItem?

func updateStatusMenuIcon(showDot:Bool){


DispatchQueue.main.async {

TCSLogWithMark()
if showDot==true {
TCSLogWithMark("showing with dot")
self.statusBarItem?.button?.image=NSImage(named: "xcreds menu icon check")

}
else {
TCSLogWithMark("showing without dot")
self.statusBarItem?.button?.image=NSImage(named: "xcreds menu icon")

}
}

}
func applicationDidFinishLaunching(_ aNotification: Notification) {
self.statusBarItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
statusBarItem?.isVisible=true
statusBarItem?.menu = statusMenu
self.statusBarItem?.button?.image=NSImage(named: "xcreds menu icon")

let defaultsPath = Bundle.main.path(forResource: "defaults", ofType: "plist")

if let defaultsPath = defaultsPath {

let defaultsDict = NSDictionary(contentsOfFile: defaultsPath)
TCSLogWithMark()
DefaultsOverride.standardOverride.register(defaults: defaultsDict as! [String : Any])
}


let infoPlist = Bundle.main.infoDictionary

Expand All @@ -32,9 +69,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, DSQueryable {

NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(screenDidWake(_:)), name:NSWorkspace.screensDidWakeNotification , object: nil)

mainController = MainController.init()
mainController?.run()
sharedMainMenu.statusBarItem.menu = sharedMainMenu.mainMenu
mainController = MainController()
mainController?.setup()

}

Expand Down
71 changes: 70 additions & 1 deletion XCreds/Base.lproj/MainMenu.xib
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="XCreds" customModuleProvider="target"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="XCreds" customModuleProvider="target">
<connections>
<outlet property="statusMenu" destination="6OK-7Y-Yf9" id="ESM-bD-ycD"/>
</connections>
</customObject>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
Expand Down Expand Up @@ -676,5 +680,70 @@
</items>
<point key="canvasLocation" x="200" y="121"/>
</menu>
<menu id="6OK-7Y-Yf9">
<items>
<menuItem title="About XCreds (x.x.x)" tag="1" id="E49-8d-Cmr">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="aboutMenuItemSelected:" target="1OV-ou-Ss5" id="r1J-8r-Iax"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="Uvh-o1-mcs"/>
<menuItem title="Next Password Check: Time" tag="2" enabled="NO" id="7wW-bt-MeR">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="nextPasswordCheckTimeMenuItemSelected:" target="1OV-ou-Ss5" id="Gny-X3-1ZT"/>
</connections>
</menuItem>
<menuItem title="Credential Status: None" tag="3" enabled="NO" id="YLv-mh-piZ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="credentialStatusMenuItemSelected:" target="1OV-ou-Ss5" id="VVt-Zd-Ui7"/>
</connections>
</menuItem>
<menuItem title="Password Expires: " tag="4" enabled="NO" id="vin-yR-IbW">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="credentialStatusMenuItemSelected:" target="1OV-ou-Ss5" id="l6Y-88-b28"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="mwR-f8-XvQ"/>
<menuItem title="Sign In" tag="5" id="FH2-NT-oeX">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="signInMenuItemSelected:" target="1OV-ou-Ss5" id="Mra-OX-Nqy"/>
</connections>
</menuItem>
<menuItem title="Change Password" tag="6" id="F1e-WL-4b2">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="changePasswordMenuItemSelected:" target="1OV-ou-Ss5" id="dfP-8J-fS8"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="op6-Hq-2li"/>
<menuItem title="Quit" tag="7" id="OM5-mb-fFV">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="quitMenuItemSelected:" target="1OV-ou-Ss5" id="yL8-dQ-nRK"/>
</connections>
</menuItem>
</items>
<connections>
<outlet property="delegate" destination="1OV-ou-Ss5" id="eEG-jn-a2m"/>
</connections>
<point key="canvasLocation" x="-89" y="-133"/>
</menu>
<customObject id="1OV-ou-Ss5" customClass="StatusMenuController" customModule="XCreds" customModuleProvider="target">
<connections>
<outlet property="aboutMenuItem" destination="E49-8d-Cmr" id="Uoc-2g-XI9"/>
<outlet property="aboutMenuItemSeparator" destination="Uvh-o1-mcs" id="FhI-xC-w67"/>
<outlet property="changePasswordMenuItem" destination="F1e-WL-4b2" id="5ah-PL-qxX"/>
<outlet property="credentialStatusMenuItem" destination="YLv-mh-piZ" id="zOP-7p-XcI"/>
<outlet property="nextPasswordCheckMenuItem" destination="7wW-bt-MeR" id="mLr-Dz-KFF"/>
<outlet property="quitMenuItem" destination="OM5-mb-fFV" id="M6F-cZ-LFl"/>
<outlet property="quitMenuItemSeparator" destination="op6-Hq-2li" id="zC1-TH-cF8"/>
<outlet property="signinMenuItem" destination="FH2-NT-oeX" id="een-3k-67g"/>
</connections>
</customObject>
</objects>
</document>

0 comments on commit a76b7f8

Please sign in to comment.