using System.Collections.Generic; using Unity.UIWidgets.ui; namespace Unity.UIWidgets.service { public enum DeviceOrientation { potraitUp, landscapeLeft, portraitDown, landscapeRight } public class ApplicationSwitcherDescription { public ApplicationSwitcherDescription( string label = null, int? primaryColor = null ) { this.label = label; this.primaryColor = primaryColor; } public readonly string label; public readonly int? primaryColor; } public enum SystemUiOverlay { top, bottom } public enum Brightness { dark, light } public class SystemUiOverlayStyle { public SystemUiOverlayStyle( Color systemNavigationBarColor = null, Color systemNavigationBarDividerColor = null, Brightness? systemNavigationBarIconBrightness = null, Color statusBarColor = null, Brightness? statusBarBrightness = null, Brightness? statusBarIconBrightness = null ) { this.systemNavigationBarColor = systemNavigationBarColor; this.systemNavigationBarDividerColor = systemNavigationBarDividerColor; this.systemNavigationBarIconBrightness = systemNavigationBarIconBrightness; this.statusBarColor = statusBarColor; this.statusBarBrightness = statusBarBrightness; this.statusBarIconBrightness = statusBarIconBrightness; } public readonly Color systemNavigationBarColor; public readonly Color systemNavigationBarDividerColor; public readonly Brightness? systemNavigationBarIconBrightness; public readonly Color statusBarColor; public readonly Brightness? statusBarBrightness; public readonly Brightness? statusBarIconBrightness; public static readonly SystemUiOverlayStyle light = new SystemUiOverlayStyle( systemNavigationBarColor: new Color(0xFF000000), systemNavigationBarDividerColor: null, statusBarColor: null, systemNavigationBarIconBrightness: Brightness.light, statusBarIconBrightness: Brightness.light, statusBarBrightness: Brightness.dark ); public static readonly SystemUiOverlayStyle dark = new SystemUiOverlayStyle( systemNavigationBarColor: new Color(0xFF000000), systemNavigationBarDividerColor: null, statusBarColor: null, systemNavigationBarIconBrightness: Brightness.light, statusBarIconBrightness: Brightness.dark, statusBarBrightness: Brightness.light ); public Dictionary _toMap() { return new Dictionary { {"systemNavigationBarColor", systemNavigationBarColor?.value}, {"systemNavigationBarDividerColor", systemNavigationBarDividerColor?.value}, {"statusBarColor", statusBarColor?.value}, {"statusBarBrightness", statusBarBrightness?.ToString()}, {"statusBarIconBrightness", statusBarIconBrightness?.ToString()}, {"systemNavigationBarIconBrightness", systemNavigationBarIconBrightness?.ToString()} }; } public override string ToString() { return _toMap().ToString(); } public SystemUiOverlayStyle copyWith( Color systemNavigationBarColor = null, Color systemNavigationBarDividerColor = null, Color statusBarColor = null, Brightness? statusBarBrightness = null, Brightness? statusBarIconBrightness = null, Brightness? systemNavigationBarIconBrightness = null ) { return new SystemUiOverlayStyle( systemNavigationBarColor: systemNavigationBarColor ?? this.systemNavigationBarColor, systemNavigationBarDividerColor: systemNavigationBarDividerColor ?? this.systemNavigationBarDividerColor, statusBarColor: statusBarColor ?? this.statusBarColor, statusBarIconBrightness: statusBarIconBrightness ?? this.statusBarIconBrightness, statusBarBrightness: statusBarBrightness ?? this.statusBarBrightness, systemNavigationBarIconBrightness: systemNavigationBarIconBrightness ?? this.systemNavigationBarIconBrightness ); } public override int GetHashCode() { var hashCode = systemNavigationBarColor.GetHashCode(); hashCode = (hashCode * 397) ^ (systemNavigationBarDividerColor != null ? systemNavigationBarDividerColor.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (statusBarColor != null ? statusBarColor.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (statusBarBrightness != null ? statusBarBrightness.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (statusBarIconBrightness != null ? statusBarIconBrightness.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (systemNavigationBarIconBrightness != null ? systemNavigationBarIconBrightness.GetHashCode() : 0); return hashCode; } public bool Equals(SystemUiOverlayStyle other) { if (ReferenceEquals(null, other)) { return false; } if (ReferenceEquals(this, other)) { return true; } return other.systemNavigationBarColor == systemNavigationBarColor && other.systemNavigationBarDividerColor == systemNavigationBarDividerColor && other.statusBarColor == statusBarColor && other.statusBarIconBrightness == statusBarIconBrightness && other.statusBarBrightness == statusBarIconBrightness && other.systemNavigationBarIconBrightness == systemNavigationBarIconBrightness; } public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) { return false; } if (ReferenceEquals(this, obj)) { return true; } if (obj.GetType() != GetType()) { return false; } return Equals((SystemUiOverlayStyle) obj); } public static bool operator ==(SystemUiOverlayStyle left, SystemUiOverlayStyle right) { return Equals(left, right); } public static bool operator !=(SystemUiOverlayStyle left, SystemUiOverlayStyle right) { return !Equals(left, right); } } }