Start work
This commit is contained in:
parent
e96c395247
commit
88e8d606b4
|
@ -0,0 +1,77 @@
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
### Swift ###
|
||||||
|
# Xcode
|
||||||
|
#
|
||||||
|
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
|
||||||
|
|
||||||
|
## Build generated
|
||||||
|
build/
|
||||||
|
DerivedData/
|
||||||
|
|
||||||
|
## Various settings
|
||||||
|
*.pbxuser
|
||||||
|
!default.pbxuser
|
||||||
|
*.mode1v3
|
||||||
|
!default.mode1v3
|
||||||
|
*.mode2v3
|
||||||
|
!default.mode2v3
|
||||||
|
*.perspectivev3
|
||||||
|
!default.perspectivev3
|
||||||
|
xcuserdata/
|
||||||
|
|
||||||
|
## Other
|
||||||
|
*.moved-aside
|
||||||
|
*.xccheckout
|
||||||
|
*.xcscmblueprint
|
||||||
|
|
||||||
|
## Obj-C/Swift specific
|
||||||
|
*.hmap
|
||||||
|
*.ipa
|
||||||
|
*.dSYM.zip
|
||||||
|
*.dSYM
|
||||||
|
|
||||||
|
## Playgrounds
|
||||||
|
timeline.xctimeline
|
||||||
|
playground.xcworkspace
|
||||||
|
|
||||||
|
# Swift Package Manager
|
||||||
|
#
|
||||||
|
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
|
||||||
|
# Packages/
|
||||||
|
# Package.pins
|
||||||
|
.build/
|
||||||
|
|
||||||
|
# CocoaPods - Refactored to standalone file
|
||||||
|
|
||||||
|
# Carthage - Refactored to standalone file
|
||||||
|
|
||||||
|
# fastlane
|
||||||
|
#
|
||||||
|
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
||||||
|
# screenshots whenever they are needed.
|
||||||
|
# For more information about the recommended setup visit:
|
||||||
|
# https://docs.fastlane.tools/best-practices/source-control/#source-control
|
||||||
|
|
||||||
|
fastlane/report.xml
|
||||||
|
fastlane/Preview.html
|
||||||
|
fastlane/screenshots
|
||||||
|
fastlane/test_output
|
||||||
|
|
||||||
|
### Xcode ###
|
||||||
|
# Xcode
|
||||||
|
#
|
||||||
|
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
|
||||||
|
|
||||||
|
## Build generated
|
||||||
|
|
||||||
|
## Various settings
|
||||||
|
|
||||||
|
## Other
|
||||||
|
|
||||||
|
### Xcode Patch ###
|
||||||
|
*.xcodeproj/*
|
||||||
|
!*.xcodeproj/project.pbxproj
|
||||||
|
!*.xcodeproj/xcshareddata/
|
||||||
|
!*.xcworkspace/contents.xcworkspacedata
|
||||||
|
/*.gcno
|
|
@ -8,19 +8,31 @@
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
D6B35B3922DA1B3C00F262A2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6B35B3822DA1B3C00F262A2 /* AppDelegate.swift */; };
|
D6B35B3922DA1B3C00F262A2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6B35B3822DA1B3C00F262A2 /* AppDelegate.swift */; };
|
||||||
D6B35B3B22DA1B3C00F262A2 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6B35B3A22DA1B3C00F262A2 /* ViewController.swift */; };
|
|
||||||
D6B35B3D22DA1B3C00F262A2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D6B35B3C22DA1B3C00F262A2 /* Assets.xcassets */; };
|
D6B35B3D22DA1B3C00F262A2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D6B35B3C22DA1B3C00F262A2 /* Assets.xcassets */; };
|
||||||
D6B35B4022DA1B3C00F262A2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D6B35B3E22DA1B3C00F262A2 /* Main.storyboard */; };
|
D6B35B4022DA1B3C00F262A2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D6B35B3E22DA1B3C00F262A2 /* Main.storyboard */; };
|
||||||
|
D6B35B4C22DA466600F262A2 /* TouchBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6B35B4B22DA466600F262A2 /* TouchBarController.swift */; };
|
||||||
|
D6B35B4E22DA479E00F262A2 /* TouchBarItemIdentifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6B35B4D22DA479E00F262A2 /* TouchBarItemIdentifiers.swift */; };
|
||||||
|
D6B35B5122DA4A2A00F262A2 /* DFRFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6B35B5022DA4A2A00F262A2 /* DFRFoundation.framework */; };
|
||||||
|
D6B35B5522DA64AD00F262A2 /* RootTouchBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6B35B5422DA64AD00F262A2 /* RootTouchBarController.swift */; };
|
||||||
|
D6B35B5A22DA66A400F262A2 /* TouchBarWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6B35B5922DA66A400F262A2 /* TouchBarWidget.swift */; };
|
||||||
|
D6B35B5E22DA687E00F262A2 /* NowPlayingWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6B35B5D22DA687E00F262A2 /* NowPlayingWidget.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
D6B35B3522DA1B3C00F262A2 /* Underbar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Underbar.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
D6B35B3522DA1B3C00F262A2 /* Underbar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Underbar.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
D6B35B3822DA1B3C00F262A2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
D6B35B3822DA1B3C00F262A2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
D6B35B3A22DA1B3C00F262A2 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
|
||||||
D6B35B3C22DA1B3C00F262A2 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
D6B35B3C22DA1B3C00F262A2 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
D6B35B3F22DA1B3C00F262A2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
D6B35B3F22DA1B3C00F262A2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||||
D6B35B4122DA1B3C00F262A2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
D6B35B4122DA1B3C00F262A2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
D6B35B4222DA1B3C00F262A2 /* Underbar.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Underbar.entitlements; sourceTree = "<group>"; };
|
D6B35B4222DA1B3C00F262A2 /* Underbar.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Underbar.entitlements; sourceTree = "<group>"; };
|
||||||
|
D6B35B4822DA1B8D00F262A2 /* NSTouchBar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSTouchBar.h; sourceTree = "<group>"; };
|
||||||
|
D6B35B4A22DA1C8400F262A2 /* Underbar-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Underbar-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
|
D6B35B4B22DA466600F262A2 /* TouchBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TouchBarController.swift; sourceTree = "<group>"; };
|
||||||
|
D6B35B4D22DA479E00F262A2 /* TouchBarItemIdentifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TouchBarItemIdentifiers.swift; sourceTree = "<group>"; };
|
||||||
|
D6B35B5022DA4A2A00F262A2 /* DFRFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DFRFoundation.framework; path = ../../../../System/Library/PrivateFrameworks/DFRFoundation.framework; sourceTree = "<group>"; };
|
||||||
|
D6B35B5422DA64AD00F262A2 /* RootTouchBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootTouchBarController.swift; sourceTree = "<group>"; };
|
||||||
|
D6B35B5922DA66A400F262A2 /* TouchBarWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TouchBarWidget.swift; sourceTree = "<group>"; };
|
||||||
|
D6B35B5D22DA687E00F262A2 /* NowPlayingWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NowPlayingWidget.swift; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
@ -28,6 +40,7 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
D6B35B5122DA4A2A00F262A2 /* DFRFoundation.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -39,6 +52,7 @@
|
||||||
children = (
|
children = (
|
||||||
D6B35B3722DA1B3C00F262A2 /* Underbar */,
|
D6B35B3722DA1B3C00F262A2 /* Underbar */,
|
||||||
D6B35B3622DA1B3C00F262A2 /* Products */,
|
D6B35B3622DA1B3C00F262A2 /* Products */,
|
||||||
|
D6B35B4F22DA4A2A00F262A2 /* Frameworks */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
@ -54,15 +68,45 @@
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
D6B35B3822DA1B3C00F262A2 /* AppDelegate.swift */,
|
D6B35B3822DA1B3C00F262A2 /* AppDelegate.swift */,
|
||||||
D6B35B3A22DA1B3C00F262A2 /* ViewController.swift */,
|
D6B35B4D22DA479E00F262A2 /* TouchBarItemIdentifiers.swift */,
|
||||||
|
D6B35B5722DA669000F262A2 /* Controllers */,
|
||||||
|
D6B35B5822DA669400F262A2 /* Widgets */,
|
||||||
D6B35B3C22DA1B3C00F262A2 /* Assets.xcassets */,
|
D6B35B3C22DA1B3C00F262A2 /* Assets.xcassets */,
|
||||||
D6B35B3E22DA1B3C00F262A2 /* Main.storyboard */,
|
D6B35B3E22DA1B3C00F262A2 /* Main.storyboard */,
|
||||||
D6B35B4122DA1B3C00F262A2 /* Info.plist */,
|
D6B35B4122DA1B3C00F262A2 /* Info.plist */,
|
||||||
D6B35B4222DA1B3C00F262A2 /* Underbar.entitlements */,
|
D6B35B4222DA1B3C00F262A2 /* Underbar.entitlements */,
|
||||||
|
D6B35B4822DA1B8D00F262A2 /* NSTouchBar.h */,
|
||||||
|
D6B35B4A22DA1C8400F262A2 /* Underbar-Bridging-Header.h */,
|
||||||
);
|
);
|
||||||
path = Underbar;
|
path = Underbar;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
D6B35B4F22DA4A2A00F262A2 /* Frameworks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
D6B35B5022DA4A2A00F262A2 /* DFRFoundation.framework */,
|
||||||
|
);
|
||||||
|
name = Frameworks;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
D6B35B5722DA669000F262A2 /* Controllers */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
D6B35B4B22DA466600F262A2 /* TouchBarController.swift */,
|
||||||
|
D6B35B5422DA64AD00F262A2 /* RootTouchBarController.swift */,
|
||||||
|
);
|
||||||
|
path = Controllers;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
D6B35B5822DA669400F262A2 /* Widgets */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
D6B35B5922DA66A400F262A2 /* TouchBarWidget.swift */,
|
||||||
|
D6B35B5D22DA687E00F262A2 /* NowPlayingWidget.swift */,
|
||||||
|
);
|
||||||
|
path = Widgets;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
|
@ -133,8 +177,12 @@
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
D6B35B3B22DA1B3C00F262A2 /* ViewController.swift in Sources */,
|
D6B35B5A22DA66A400F262A2 /* TouchBarWidget.swift in Sources */,
|
||||||
|
D6B35B4E22DA479E00F262A2 /* TouchBarItemIdentifiers.swift in Sources */,
|
||||||
|
D6B35B4C22DA466600F262A2 /* TouchBarController.swift in Sources */,
|
||||||
|
D6B35B5E22DA687E00F262A2 /* NowPlayingWidget.swift in Sources */,
|
||||||
D6B35B3922DA1B3C00F262A2 /* AppDelegate.swift in Sources */,
|
D6B35B3922DA1B3C00F262A2 /* AppDelegate.swift in Sources */,
|
||||||
|
D6B35B5522DA64AD00F262A2 /* RootTouchBarController.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -279,9 +327,15 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.Underbar;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.Underbar;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
SYSTEM_FRAMEWORK_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
|
||||||
|
);
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
|
@ -299,9 +353,15 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.Underbar;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.Underbar;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
SYSTEM_FRAMEWORK_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
|
||||||
|
);
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,16 +11,29 @@ import Cocoa
|
||||||
@NSApplicationMain
|
@NSApplicationMain
|
||||||
class AppDelegate: NSObject, NSApplicationDelegate {
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
|
|
||||||
|
let statusBarItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.squareLength)
|
||||||
|
|
||||||
|
let rootController = RootTouchBarController()
|
||||||
|
|
||||||
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
||||||
// Insert code here to initialize your application
|
|
||||||
|
statusBarItem.button!.image = NSImage(named: "underbar")!
|
||||||
|
|
||||||
|
let menu = NSMenu(title: "Underbar")
|
||||||
|
menu.addItem(NSMenuItem(title: "Quit Underbar", action: #selector(NSApp.terminate(_:)), keyEquivalent: "q"))
|
||||||
|
statusBarItem.menu = menu
|
||||||
|
|
||||||
|
NSTouchBar.presentSystemModalTouchBar(rootController.touchBar, placement: 1, systemTrayItemIdentifier: .underbar)
|
||||||
|
rootController.isVisible = true
|
||||||
|
DFRSystemModalShowsCloseBoxWhenFrontMost(false)
|
||||||
|
|
||||||
|
let systemItem = NSButtonTouchBarItem(identifier: .underbar, image: NSImage(named: "underbar")!, target: rootController, action: #selector(TouchBarController.toggle))
|
||||||
|
NSTouchBarItem.addSystemTrayItem(systemItem)
|
||||||
|
DFRElementSetControlStripPresenceForIdentifier(.underbar, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func applicationWillTerminate(_ aNotification: Notification) {
|
func applicationWillTerminate(_ aNotification: Notification) {
|
||||||
// Insert code here to tear down your application
|
// Insert code here to tear down your application
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "underbar.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
},
|
||||||
|
"properties" : {
|
||||||
|
"template-rendering-intent" : "template"
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 596 B |
|
@ -1,7 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="11134" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="14835.7" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14835.7"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
<!--Application-->
|
<!--Application-->
|
||||||
|
@ -673,37 +674,16 @@
|
||||||
<outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
|
<outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
|
||||||
</connections>
|
</connections>
|
||||||
</application>
|
</application>
|
||||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModuleProvider="target"/>
|
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Underbar" customModuleProvider="target"/>
|
||||||
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
||||||
<customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
<customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="75" y="0.0"/>
|
<point key="canvasLocation" x="75" y="0.0"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Window Controller-->
|
|
||||||
<scene sceneID="R2V-B0-nI4">
|
|
||||||
<objects>
|
|
||||||
<windowController id="B8D-0N-5wS" sceneMemberID="viewController">
|
|
||||||
<window key="window" title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="IQv-IB-iLA">
|
|
||||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
|
||||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
|
||||||
<rect key="contentRect" x="196" y="240" width="480" height="270"/>
|
|
||||||
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
|
|
||||||
<connections>
|
|
||||||
<outlet property="delegate" destination="B8D-0N-5wS" id="98r-iN-zZc"/>
|
|
||||||
</connections>
|
|
||||||
</window>
|
|
||||||
<connections>
|
|
||||||
<segue destination="XfG-lQ-9wD" kind="relationship" relationship="window.shadowedContentViewController" id="cq2-FE-JQM"/>
|
|
||||||
</connections>
|
|
||||||
</windowController>
|
|
||||||
<customObject id="Oky-zY-oP4" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
<point key="canvasLocation" x="75" y="250"/>
|
|
||||||
</scene>
|
|
||||||
<!--View Controller-->
|
<!--View Controller-->
|
||||||
<scene sceneID="hIz-AP-VOD">
|
<scene sceneID="hIz-AP-VOD">
|
||||||
<objects>
|
<objects>
|
||||||
<viewController id="XfG-lQ-9wD" customClass="ViewController" customModuleProvider="target" sceneMemberID="viewController">
|
<viewController id="XfG-lQ-9wD" sceneMemberID="viewController">
|
||||||
<view key="view" id="m2S-Jp-Qdl">
|
<view key="view" id="m2S-Jp-Qdl">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
|
<rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
//
|
||||||
|
// RootTouchBarController.swift
|
||||||
|
// Underbar
|
||||||
|
//
|
||||||
|
// Created by Shadowfacts on 7/13/19.
|
||||||
|
// Copyright © 2019 Shadowfacts. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Cocoa
|
||||||
|
|
||||||
|
class RootTouchBarController: TouchBarController {
|
||||||
|
|
||||||
|
let nowPlaying = NowPlayingWidget()
|
||||||
|
|
||||||
|
override init() {
|
||||||
|
super.init()
|
||||||
|
|
||||||
|
widgets = [
|
||||||
|
nowPlaying
|
||||||
|
]
|
||||||
|
|
||||||
|
touchBar.defaultItemIdentifiers = [
|
||||||
|
.closeUnderbar,
|
||||||
|
.flexibleSpace,
|
||||||
|
.nowPlaying,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
override func touchBar(_ touchBar: NSTouchBar, makeItemForIdentifier identifier: NSTouchBarItem.Identifier) -> NSTouchBarItem? {
|
||||||
|
switch identifier {
|
||||||
|
case .closeUnderbar:
|
||||||
|
return createCloseItem()
|
||||||
|
case .nowPlaying:
|
||||||
|
return nowPlaying.item
|
||||||
|
default:
|
||||||
|
return super.touchBar(touchBar, makeItemForIdentifier: identifier)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func createCloseItem() -> NSTouchBarItem {
|
||||||
|
let item = NSCustomTouchBarItem(identifier: .closeUnderbar)
|
||||||
|
let button = NSButton(image: NSImage(named: "underbar")!, target: self, action: #selector(toggle))
|
||||||
|
button.widthAnchor.constraint(equalToConstant: 40).isActive = true
|
||||||
|
item.view = button
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
//
|
||||||
|
// TouchBarController.swift
|
||||||
|
// Underbar
|
||||||
|
//
|
||||||
|
// Created by Shadowfacts on 7/13/19.
|
||||||
|
// Copyright © 2019 Shadowfacts. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Cocoa
|
||||||
|
|
||||||
|
class TouchBarController: NSObject, NSTouchBarDelegate {
|
||||||
|
let touchBar = NSTouchBar()
|
||||||
|
|
||||||
|
var widgets: [TouchBarWidget] = []
|
||||||
|
|
||||||
|
var isVisible = false
|
||||||
|
|
||||||
|
override init() {
|
||||||
|
super.init()
|
||||||
|
|
||||||
|
touchBar.delegate = self
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func toggle() {
|
||||||
|
if isVisible {
|
||||||
|
minimize()
|
||||||
|
} else {
|
||||||
|
present()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func present() {
|
||||||
|
NSTouchBar.presentSystemModalTouchBar(touchBar, placement: 1, systemTrayItemIdentifier: .underbar)
|
||||||
|
isVisible = true
|
||||||
|
DFRElementSetControlStripPresenceForIdentifier(.underbar, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
func minimize() {
|
||||||
|
NSTouchBar.minimizeSystemModalTouchBar(touchBar)
|
||||||
|
isVisible = false
|
||||||
|
DFRElementSetControlStripPresenceForIdentifier(.underbar, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
func touchBar(_ touchBar: NSTouchBar, makeItemForIdentifier identifier: NSTouchBarItem.Identifier) -> NSTouchBarItem? {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -2,6 +2,8 @@
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>LSUIElement</key>
|
||||||
|
<true/>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
//
|
||||||
|
// NSTouchbar.h
|
||||||
|
// Underbar
|
||||||
|
//
|
||||||
|
// Created by Shadowfacts on 7/13/19.
|
||||||
|
// Copyright © 2019 Shadowfacts. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <AppKit/AppKit.h>
|
||||||
|
|
||||||
|
extern void DFRElementSetControlStripPresenceForIdentifier(_Nonnull NSTouchBarItemIdentifier, BOOL);
|
||||||
|
extern void DFRSystemModalShowsCloseBoxWhenFrontMost(BOOL);
|
||||||
|
|
||||||
|
@interface NSTouchBarItem ()
|
||||||
|
|
||||||
|
+ (void)addSystemTrayItem:(nonnull NSTouchBarItem *)item;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface NSTouchBar ()
|
||||||
|
|
||||||
|
+ (void)presentSystemModalTouchBar:(nonnull NSTouchBar *)touchBar placement:(long long)placement systemTrayItemIdentifier:(nonnull NSTouchBarItemIdentifier)identifier NS_AVAILABLE_MAC(10.14);
|
||||||
|
+ (void)minimizeSystemModalTouchBar:(nonnull NSTouchBar *)touchBar NS_AVAILABLE_MAC(10.14);
|
||||||
|
|
||||||
|
@end
|
|
@ -0,0 +1,17 @@
|
||||||
|
//
|
||||||
|
// TouchBarItemIdentifiers.swift
|
||||||
|
// Underbar
|
||||||
|
//
|
||||||
|
// Created by Shadowfacts on 7/13/19.
|
||||||
|
// Copyright © 2019 Shadowfacts. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Cocoa
|
||||||
|
|
||||||
|
extension NSTouchBarItem.Identifier {
|
||||||
|
static let underbar = NSTouchBarItem.Identifier("underbar")
|
||||||
|
|
||||||
|
static let closeUnderbar = NSTouchBarItem.Identifier("underbar_close")
|
||||||
|
|
||||||
|
static let nowPlaying = NSTouchBarItem.Identifier("underbar_now_playing")
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
//
|
||||||
|
// Underbar-Bridging-Header.h
|
||||||
|
// Underbar
|
||||||
|
//
|
||||||
|
// Created by Shadowfacts on 7/13/19.
|
||||||
|
// Copyright © 2019 Shadowfacts. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "NSTouchBar.h"
|
|
@ -1,27 +0,0 @@
|
||||||
//
|
|
||||||
// ViewController.swift
|
|
||||||
// Underbar
|
|
||||||
//
|
|
||||||
// Created by Shadowfacts on 7/13/19.
|
|
||||||
// Copyright © 2019 Shadowfacts. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Cocoa
|
|
||||||
|
|
||||||
class ViewController: NSViewController {
|
|
||||||
|
|
||||||
override func viewDidLoad() {
|
|
||||||
super.viewDidLoad()
|
|
||||||
|
|
||||||
// Do any additional setup after loading the view.
|
|
||||||
}
|
|
||||||
|
|
||||||
override var representedObject: Any? {
|
|
||||||
didSet {
|
|
||||||
// Update the view, if already loaded.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
//
|
||||||
|
// NowPlayingWidget.swift
|
||||||
|
// Underbar
|
||||||
|
//
|
||||||
|
// Created by Shadowfacts on 7/13/19.
|
||||||
|
// Copyright © 2019 Shadowfacts. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Cocoa
|
||||||
|
|
||||||
|
class NowPlayingWidget: TouchBarWidget {
|
||||||
|
|
||||||
|
override init() {
|
||||||
|
super.init()
|
||||||
|
item = NSButtonTouchBarItem(identifier: .nowPlaying, title: "Test", target: nil, action: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
//
|
||||||
|
// TouchBarWidget.swift
|
||||||
|
// Underbar
|
||||||
|
//
|
||||||
|
// Created by Shadowfacts on 7/13/19.
|
||||||
|
// Copyright © 2019 Shadowfacts. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Cocoa
|
||||||
|
|
||||||
|
class TouchBarWidget: NSObject {
|
||||||
|
|
||||||
|
var item: NSTouchBarItem!
|
||||||
|
|
||||||
|
override init() {
|
||||||
|
super.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
convenience init(item: NSTouchBarItem) {
|
||||||
|
self.init()
|
||||||
|
self.item = item
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue