Skip to content

Commit 9c48704

Browse files
author
Alan Westbrook
committed
Icons for dark mode
* image literals really were not working for a nested array in a dict, oh well... * Add new spaceship icons for retina that support light and dark modes! * UTF8Ellipsis chars * Some pref window stuff that's really not working out at the moment ...
1 parent 020435e commit 9c48704

31 files changed

+348
-62
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"filename" : "active.png",
6+
"scale" : "1x"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"filename" : "[email protected]",
11+
"scale" : "2x"
12+
}
13+
],
14+
"info" : {
15+
"version" : 1,
16+
"author" : "xcode"
17+
}
18+
}
337 Bytes
Loading
697 Bytes
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"filename" : "logged-in-dark.png",
6+
"scale" : "1x"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"filename" : "[email protected]",
11+
"scale" : "2x"
12+
}
13+
],
14+
"info" : {
15+
"version" : 1,
16+
"author" : "xcode"
17+
}
18+
}
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"filename" : "logged-in.png",
6+
"scale" : "1x"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"filename" : "[email protected]",
11+
"scale" : "2x"
12+
}
13+
],
14+
"info" : {
15+
"version" : 1,
16+
"author" : "xcode"
17+
}
18+
}
333 Bytes
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"filename" : "message-dark.png",
6+
"scale" : "1x"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"filename" : "[email protected]",
11+
"scale" : "2x"
12+
}
13+
],
14+
"info" : {
15+
"version" : 1,
16+
"author" : "xcode"
17+
}
18+
}
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"filename" : "message.png",
6+
"scale" : "1x"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"filename" : "[email protected]",
11+
"scale" : "2x"
12+
}
13+
],
14+
"info" : {
15+
"version" : 1,
16+
"author" : "xcode"
17+
}
18+
}
393 Bytes
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"filename" : "mod-dark.png",
6+
"scale" : "1x"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"filename" : "[email protected]",
11+
"scale" : "2x"
12+
}
13+
],
14+
"info" : {
15+
"version" : 1,
16+
"author" : "xcode"
17+
}
18+
}
353 Bytes
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"filename" : "mod.png",
6+
"scale" : "1x"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"filename" : "[email protected]",
11+
"scale" : "2x"
12+
}
13+
],
14+
"info" : {
15+
"version" : 1,
16+
"author" : "xcode"
17+
}
18+
}

Diff for: Orangered-Swift/Assets.xcassets/mod.imageset/mod.png

347 Bytes
Loading
668 Bytes
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"filename" : "not-connected-dark.png",
6+
"scale" : "1x"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"filename" : "[email protected]",
11+
"scale" : "2x"
12+
}
13+
],
14+
"info" : {
15+
"version" : 1,
16+
"author" : "xcode"
17+
}
18+
}
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"filename" : "not-connected.png",
6+
"scale" : "1x"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"filename" : "[email protected]",
11+
"scale" : "2x"
12+
}
13+
],
14+
"info" : {
15+
"version" : 1,
16+
"author" : "xcode"
17+
}
18+
}
Loading
Loading

Diff for: Orangered-Swift/LoginViewController.swift

+17-15
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,20 @@ import Cocoa
1111
typealias LoginAction = (name:String, password:String) -> Void
1212
class LoginViewController: NSViewController {
1313

14-
let nameLabel = NSTextField()
15-
let passwordLabel = NSTextField()
16-
let nameField = NSTextField()
17-
let passwordField = NSSecureTextField()
18-
let loginButton = NSButton()
19-
let loginAction:LoginAction
14+
private let nameLabel = NSTextField()
15+
private let passwordLabel = NSTextField()
16+
private let nameField = NSTextField()
17+
private let passwordField = NSSecureTextField()
18+
private let loginButton = NSButton()
19+
private let loginAction:LoginAction
2020

2121
init(loginAction action: LoginAction) {
2222
loginAction = action
2323

2424
// Effit, I want to override init (unfailable override), but I am required to call a failable initializer?
2525
super.init(nibName: nil, bundle: nil)!
2626

27-
title = "Orangered! Login"
27+
title = NSLocalizedString("Orangered! Login", comment: "The login window title")
2828
}
2929

3030
required init?(coder: NSCoder) {
@@ -38,7 +38,9 @@ class LoginViewController: NSViewController {
3838

3939
override func loadView() {
4040
// Don't call into super, as we don't want it to try to load from a nib
41-
view = NSView()
41+
let vev = NSVisualEffectView()
42+
view = vev
43+
4244
view.translatesAutoresizingMaskIntoConstraints = false
4345
}
4446

@@ -76,23 +78,23 @@ class LoginViewController: NSViewController {
7678

7779
NSLayoutConstraint.activate([
7880
fieldGuide.topAnchor.constraint(equalTo: nameLabel.topAnchor),
79-
fieldGuide.leftAnchor.constraint(equalTo: nameLabel.leftAnchor),
80-
fieldGuide.rightAnchor.constraint(equalTo: nameField.rightAnchor),
81+
fieldGuide.leadingAnchor.constraint(equalTo: nameLabel.leadingAnchor),
82+
fieldGuide.trailingAnchor.constraint(equalTo: nameField.trailingAnchor),
8183
fieldGuide.centerXAnchor.constraint(equalTo: view.centerXAnchor),
8284
fieldGuide.bottomAnchor.constraint(equalTo: passwordLabel.bottomAnchor),
8385

84-
nameLabel.rightAnchor.constraint(equalTo: nameField.leftAnchor, constant: -space / 2),
86+
nameLabel.trailingAnchor.constraint(equalTo: nameField.leadingAnchor, constant: -space / 2),
8587
nameField.firstBaselineAnchor.constraint(equalTo: nameLabel.firstBaselineAnchor),
8688
nameField.widthAnchor.constraint(equalToConstant: fieldWidth),
8789

8890
passwordLabel.topAnchor.constraint(equalTo: nameLabel.bottomAnchor, constant: space / 2),
89-
passwordLabel.rightAnchor.constraint(equalTo: nameLabel.rightAnchor),
91+
passwordLabel.trailingAnchor.constraint(equalTo: nameLabel.trailingAnchor),
9092
passwordField.firstBaselineAnchor.constraint(equalTo: passwordLabel.firstBaselineAnchor),
91-
passwordField.leftAnchor.constraint(equalTo: nameField.leftAnchor),
92-
passwordField.rightAnchor.constraint(equalTo: nameField.rightAnchor),
93+
passwordField.leadingAnchor.constraint(equalTo: nameField.leadingAnchor),
94+
passwordField.trailingAnchor.constraint(equalTo: nameField.trailingAnchor),
9395

9496
loginButton.topAnchor.constraint(equalTo: fieldGuide.bottomAnchor, constant: space),
95-
loginButton.rightAnchor.constraint(equalTo: fieldGuide.rightAnchor),
97+
loginButton.trailingAnchor.constraint(equalTo: fieldGuide.trailingAnchor),
9698

9799
view.topAnchor.constraint(equalTo: nameLabel.topAnchor, constant: -space),
98100
view.bottomAnchor.constraint(equalTo: loginButton.bottomAnchor, constant: space),

Diff for: Orangered-Swift/PrefViewController.swift

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
//
2+
// PrefViewController.swift
3+
// Orangered
4+
//
5+
// Created by Alan Westbrook on 6/17/16.
6+
// Copyright © 2016 Rockwood Software. All rights reserved.
7+
//
8+
9+
import Cocoa
10+
import ServiceManagement
11+
12+
class PrefViewController: NSViewController {
13+
14+
let startAtLogin = NSButton(cbWithTitle: "Start at Login", target: nil, action: #selector(salClicked))
15+
16+
override func viewDidLoad() {
17+
super.viewDidLoad()
18+
19+
setup()
20+
}
21+
22+
override func loadView() {
23+
// Don't call into super, as we don't want it to try to load from a nib
24+
view = NSView()
25+
view.translatesAutoresizingMaskIntoConstraints = false
26+
27+
}
28+
29+
private func setup() {
30+
startAtLogin.target = self
31+
startAtLogin.translatesAutoresizingMaskIntoConstraints = false
32+
33+
title = "Orangered! Preferences"
34+
35+
view.addSubview(startAtLogin)
36+
37+
NSLayoutConstraint.activate([
38+
startAtLogin.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 10),
39+
startAtLogin.topAnchor.constraint(equalTo: view.topAnchor, constant: 10),
40+
view.bottomAnchor.constraint(equalTo: startAtLogin.bottomAnchor, constant: 10),
41+
view.widthAnchor.constraint(equalTo: startAtLogin.widthAnchor, constant: 20)
42+
])
43+
}
44+
45+
@objc private func salClicked() {
46+
print(SMLoginItemSetEnabled("com.rockwood.Orangered", true))
47+
}
48+
}
49+
50+
extension NSButton {
51+
convenience init(cbWithTitle title: String, target: NSObject?, action: Selector) {
52+
if #available(OSX 10.12, *) {
53+
self.init(checkboxWithTitle: title, target: target, action: action)
54+
} else {
55+
self.init()
56+
self.setButtonType(.switchButton)
57+
self.title = title
58+
self.target = target
59+
self.action = action
60+
}
61+
62+
}
63+
}

0 commit comments

Comments
 (0)