iosWebViewFix/flutter_inappwebview_macos/macos/Classes/InAppBrowser/InAppBrowserSettings.swift

92 lines
3.6 KiB
Swift
Executable File

//
// InAppBrowserOptions.swift
// flutter_inappwebview
//
// Created by Lorenzo on 17/09/18.
//
import Foundation
@objcMembers
public class InAppBrowserSettings: ISettings<InAppBrowserWebViewController> {
var hidden = false
var hideToolbarTop = true
var toolbarTopBackgroundColor: String?
var hideUrlBar = false
var hideProgressBar = false
var toolbarTopFixedTitle: String?
var windowType = InAppBrowserWindowType.window
var windowAlphaValue = 1.0
var _windowStyleMask: NSNumber?
var windowStyleMask: NSWindow.StyleMask? {
get {
return _windowStyleMask != nil ?
NSWindow.StyleMask.init(rawValue: _windowStyleMask!.uintValue) :
nil
}
set {
if let newValue = newValue {
_windowStyleMask = NSNumber.init(value: newValue.rawValue)
} else {
_windowStyleMask = nil
}
}
}
var _windowTitlebarSeparatorStyle: NSNumber?
@available(macOS 11.0, *)
var windowTitlebarSeparatorStyle: NSTitlebarSeparatorStyle? {
get {
return _windowTitlebarSeparatorStyle != nil ?
NSTitlebarSeparatorStyle.init(rawValue: _windowTitlebarSeparatorStyle!.intValue) :
nil
}
set {
if let newValue = newValue {
_windowTitlebarSeparatorStyle = NSNumber.init(value: newValue.rawValue)
} else {
_windowTitlebarSeparatorStyle = nil
}
}
}
var windowFrame: NSRect?
var hideDefaultMenuItems = false
override init(){
super.init()
}
override func parse(settings: [String: Any?]) -> InAppBrowserSettings {
let _ = super.parse(settings: settings)
if let windowType = settings["windowType"] as? String {
self.windowType = InAppBrowserWindowType.init(rawValue: windowType) ?? InAppBrowserWindowType.child
}
if let windowFrame = settings["windowFrame"] as? [String:Double] {
self.windowFrame = NSRect(x: windowFrame["x"]!,
y: windowFrame["y"]!,
width: windowFrame["width"]!,
height: windowFrame["height"]!)
}
return self
}
override func getRealSettings(obj: InAppBrowserWebViewController?) -> [String: Any?] {
var realOptions: [String: Any?] = toMap()
realOptions["windowType"] = windowType.rawValue
if let inAppBrowserWebViewController = obj {
realOptions["hidden"] = inAppBrowserWebViewController.isHidden
realOptions["hideUrlBar"] = inAppBrowserWebViewController.window?.searchBar?.isHidden
realOptions["hideProgressBar"] = inAppBrowserWebViewController.progressBar.isHidden
realOptions["hideToolbarTop"] = !(inAppBrowserWebViewController.window?.toolbar?.isVisible ?? true)
realOptions["toolbarTopBackgroundColor"] = inAppBrowserWebViewController.window?.backgroundColor.hexString
realOptions["windowAlphaValue"] = inAppBrowserWebViewController.window?.alphaValue
realOptions["windowStyleMask"] = inAppBrowserWebViewController.window?.styleMask.rawValue
if #available(macOS 11.0, *) {
realOptions["windowTitlebarSeparatorStyle"] = inAppBrowserWebViewController.window?.titlebarSeparatorStyle.rawValue
}
realOptions["windowFrame"] = inAppBrowserWebViewController.window?.frame.toMap()
}
return realOptions
}
}