Add Browser and Defaults.

This commit is contained in:
Brent Simmons 2017-05-26 13:22:31 -07:00
parent 85ff386f4b
commit 21801b8b6a
4 changed files with 98 additions and 1 deletions

View File

@ -8,6 +8,8 @@
/* Begin PBXBuildFile section */
842E45CE1ED8C308000A8B52 /* AppConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842E45CD1ED8C308000A8B52 /* AppConstants.swift */; };
842E45DD1ED8C54B000A8B52 /* Browser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842E45DC1ED8C54B000A8B52 /* Browser.swift */; };
842E45DF1ED8C582000A8B52 /* Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842E45DE1ED8C582000A8B52 /* Defaults.swift */; };
8471A2C41ED4CEBF008F099E /* DataModel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8471A2B71ED4CEAD008F099E /* DataModel.framework */; };
8471A2C51ED4CEBF008F099E /* DataModel.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8471A2B71ED4CEAD008F099E /* DataModel.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
8471A2F51ED4D062008F099E /* LocalAccount.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8471A2F21ED4D04D008F099E /* LocalAccount.framework */; };
@ -301,6 +303,8 @@
/* Begin PBXFileReference section */
842E45CD1ED8C308000A8B52 /* AppConstants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppConstants.swift; path = Evergreen/AppConstants.swift; sourceTree = "<group>"; };
842E45DC1ED8C54B000A8B52 /* Browser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Browser.swift; path = Evergreen/Browser.swift; sourceTree = "<group>"; };
842E45DE1ED8C582000A8B52 /* Defaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Defaults.swift; path = Evergreen/Preferences/Defaults.swift; sourceTree = "<group>"; };
8471A2B21ED4CEAD008F099E /* DataModel.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DataModel.xcodeproj; path = Frameworks/DataModel/DataModel.xcodeproj; sourceTree = "<group>"; };
8471A2EC1ED4D04D008F099E /* LocalAccount.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = LocalAccount.xcodeproj; path = Frameworks/LocalAccount/LocalAccount.xcodeproj; sourceTree = "<group>"; };
849C64601ED37A5D003D8FC0 /* Evergreen.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Evergreen.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -350,6 +354,14 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
842E45E01ED8C587000A8B52 /* Preferences */ = {
isa = PBXGroup;
children = (
842E45DE1ED8C582000A8B52 /* Defaults.swift */,
);
name = Preferences;
sourceTree = "<group>";
};
8471A2B31ED4CEAD008F099E /* Products */ = {
isa = PBXGroup;
children = (
@ -375,6 +387,8 @@
842E45CD1ED8C308000A8B52 /* AppConstants.swift */,
849C64631ED37A5D003D8FC0 /* AppDelegate.swift */,
849C64651ED37A5D003D8FC0 /* ViewController.swift */,
842E45DC1ED8C54B000A8B52 /* Browser.swift */,
842E45E01ED8C587000A8B52 /* Preferences */,
849C646C1ED37A5D003D8FC0 /* Info.plist */,
849C64741ED37A5D003D8FC0 /* EvergreenTests */,
849C64611ED37A5D003D8FC0 /* Products */,
@ -806,7 +820,9 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
842E45DD1ED8C54B000A8B52 /* Browser.swift in Sources */,
849C64661ED37A5D003D8FC0 /* ViewController.swift in Sources */,
842E45DF1ED8C582000A8B52 /* Defaults.swift in Sources */,
842E45CE1ED8C308000A8B52 /* AppConstants.swift in Sources */,
849C64641ED37A5D003D8FC0 /* AppDelegate.swift in Sources */,
);

View File

@ -1,6 +1,6 @@
//
// AppConstants.swift
// Rainier
// Evergreen
//
// Created by Brent Simmons on 8/30/15.
// Copyright © 2015 Ranchero Software, LLC. All rights reserved.

27
Evergreen/Browser.swift Normal file
View File

@ -0,0 +1,27 @@
//
// Browser.swift
// Evergren
//
// Created by Brent Simmons on 2/23/16.
// Copyright © 2016 Ranchero Software, LLC. All rights reserved.
//
import Foundation
import CoreServices
import RSWeb
func openInBrowser(_ urlString: String) {
// Opens according to prefs.
let openInBackground = UserDefaults.standard.bool(forKey: OpenInBrowserInBackgroundKey)
openInBrowser(urlString, inBackground: openInBackground)
}
func openInBrowser(_ urlString: String, inBackground: Bool) {
if let url = URL(string: urlString) {
let _ = MacWebBrowser.openURL(url, inBackground: inBackground)
}
}

View File

@ -0,0 +1,54 @@
//
// Defaults.swift
// Evergreen
//
// Created by Brent Simmons on 2/20/16.
// Copyright © 2016 Ranchero Software, LLC. All rights reserved.
//
import Foundation
let SidebarFontSizeKey = "sidebarFontSize"
let TimelineFontSizeKey = "timelineFontSize"
let ArticleFontSizeKey = "articleFontSize"
let SidebarFontSizeKVOKey = "values." + SidebarFontSizeKey
let TimelineFontSizeKVOKey = "values." + TimelineFontSizeKey
let ArticleFontSizeKVOKey = "values." + ArticleFontSizeKey
let OpenInBrowserInBackgroundKey = "openInBrowserInBackground"
enum FontSize: Int {
case small = 0
case medium = 1
case large = 2
case veryLarge = 3
}
private let smallestFontSizeRawValue = FontSize.small.rawValue
private let largestFontSizeRawValue = FontSize.veryLarge.rawValue
func registerDefaults() {
let defaults = [SidebarFontSizeKey: FontSize.medium.rawValue, TimelineFontSizeKey: FontSize.medium.rawValue, ArticleFontSizeKey: FontSize.medium.rawValue]
UserDefaults.standard.register(defaults: defaults)
}
func timelineFontSize() -> FontSize {
return fontSizeForKey(TimelineFontSizeKey)
}
private func fontSizeForKey(_ key: String) -> FontSize {
var rawFontSize = UserDefaults.standard.integer(forKey: key)
if rawFontSize < smallestFontSizeRawValue {
rawFontSize = smallestFontSizeRawValue
}
if rawFontSize > largestFontSizeRawValue {
rawFontSize = largestFontSizeRawValue
}
return FontSize(rawValue: rawFontSize)!
}