mirror of
https://github.com/yattee/yattee.git
synced 2024-12-22 13:33:42 +00:00
Code style change
This commit is contained in:
parent
e609e90165
commit
f828943982
47
Shared/Settings/MultiselectRow.swift
Normal file
47
Shared/Settings/MultiselectRow.swift
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct MultiselectRow: View {
|
||||||
|
let title: String
|
||||||
|
let selected: Bool
|
||||||
|
var action: (Bool) -> Void
|
||||||
|
|
||||||
|
@State private var toggleChecked = false
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
Button(action: { action(!selected) }) {
|
||||||
|
HStack {
|
||||||
|
#if os(macOS)
|
||||||
|
Toggle(isOn: $toggleChecked) {
|
||||||
|
Text(self.title)
|
||||||
|
Spacer()
|
||||||
|
}
|
||||||
|
.onAppear {
|
||||||
|
toggleChecked = selected
|
||||||
|
}
|
||||||
|
.onChange(of: toggleChecked) { new in
|
||||||
|
action(new)
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
Text(self.title)
|
||||||
|
Spacer()
|
||||||
|
if selected {
|
||||||
|
Image(systemName: "checkmark")
|
||||||
|
#if os(iOS)
|
||||||
|
.foregroundColor(.accentColor)
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
.contentShape(Rectangle())
|
||||||
|
}
|
||||||
|
#if !os(tvOS)
|
||||||
|
.buttonStyle(.plain)
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct MultiselectRow_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
MultiselectRow(title: "Title", selected: false, action: { _ in })
|
||||||
|
}
|
||||||
|
}
|
@ -42,7 +42,7 @@ struct SponsorBlockSettings: View {
|
|||||||
Section(header: SettingsHeader(text: "Categories to Skip"), footer: categoriesDetails) {
|
Section(header: SettingsHeader(text: "Categories to Skip"), footer: categoriesDetails) {
|
||||||
#if os(macOS)
|
#if os(macOS)
|
||||||
let list = ForEach(SponsorBlockAPI.categories, id: \.self) { category in
|
let list = ForEach(SponsorBlockAPI.categories, id: \.self) { category in
|
||||||
SponsorBlockCategorySelectionRow(
|
MultiselectRow(
|
||||||
title: SponsorBlockAPI.categoryDescription(category) ?? "Unknown",
|
title: SponsorBlockAPI.categoryDescription(category) ?? "Unknown",
|
||||||
selected: sponsorBlockCategories.contains(category)
|
selected: sponsorBlockCategories.contains(category)
|
||||||
) { value in
|
) { value in
|
||||||
@ -62,7 +62,7 @@ struct SponsorBlockSettings: View {
|
|||||||
Spacer()
|
Spacer()
|
||||||
#else
|
#else
|
||||||
ForEach(SponsorBlockAPI.categories, id: \.self) { category in
|
ForEach(SponsorBlockAPI.categories, id: \.self) { category in
|
||||||
SponsorBlockCategorySelectionRow(
|
MultiselectRow(
|
||||||
title: SponsorBlockAPI.categoryDescription(category) ?? "Unknown",
|
title: SponsorBlockAPI.categoryDescription(category) ?? "Unknown",
|
||||||
selected: sponsorBlockCategories.contains(category)
|
selected: sponsorBlockCategories.contains(category)
|
||||||
) { value in
|
) { value in
|
||||||
@ -99,46 +99,6 @@ struct SponsorBlockSettings: View {
|
|||||||
sponsorBlockCategories.insert(category)
|
sponsorBlockCategories.insert(category)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SponsorBlockCategorySelectionRow: View {
|
|
||||||
let title: String
|
|
||||||
let selected: Bool
|
|
||||||
var action: (Bool) -> Void
|
|
||||||
|
|
||||||
@State private var toggleChecked = false
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
Button(action: { action(!selected) }) {
|
|
||||||
HStack {
|
|
||||||
#if os(macOS)
|
|
||||||
Toggle(isOn: $toggleChecked) {
|
|
||||||
Text(self.title)
|
|
||||||
Spacer()
|
|
||||||
}
|
|
||||||
.onAppear {
|
|
||||||
toggleChecked = selected
|
|
||||||
}
|
|
||||||
.onChange(of: toggleChecked) { new in
|
|
||||||
action(new)
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
Text(self.title)
|
|
||||||
Spacer()
|
|
||||||
if selected {
|
|
||||||
Image(systemName: "checkmark")
|
|
||||||
#if os(iOS)
|
|
||||||
.foregroundColor(.accentColor)
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
.contentShape(Rectangle())
|
|
||||||
}
|
|
||||||
#if !os(tvOS)
|
|
||||||
.buttonStyle(.plain)
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SponsorBlockSettings_Previews: PreviewProvider {
|
struct SponsorBlockSettings_Previews: PreviewProvider {
|
||||||
|
@ -340,6 +340,9 @@
|
|||||||
375E45F627B1976B00BA7902 /* MPVOGLView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375E45F427B1976B00BA7902 /* MPVOGLView.swift */; };
|
375E45F627B1976B00BA7902 /* MPVOGLView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375E45F427B1976B00BA7902 /* MPVOGLView.swift */; };
|
||||||
375E45F827B1AC4700BA7902 /* PlayerControlsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375E45F727B1AC4700BA7902 /* PlayerControlsModel.swift */; };
|
375E45F827B1AC4700BA7902 /* PlayerControlsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375E45F727B1AC4700BA7902 /* PlayerControlsModel.swift */; };
|
||||||
375E45F927B1AC4700BA7902 /* PlayerControlsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375E45F727B1AC4700BA7902 /* PlayerControlsModel.swift */; };
|
375E45F927B1AC4700BA7902 /* PlayerControlsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375E45F727B1AC4700BA7902 /* PlayerControlsModel.swift */; };
|
||||||
|
375EC972289F2ABF00751258 /* MultiselectRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375EC971289F2ABF00751258 /* MultiselectRow.swift */; };
|
||||||
|
375EC973289F2ABF00751258 /* MultiselectRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375EC971289F2ABF00751258 /* MultiselectRow.swift */; };
|
||||||
|
375EC974289F2ABF00751258 /* MultiselectRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375EC971289F2ABF00751258 /* MultiselectRow.swift */; };
|
||||||
375F7410289DC35A00747050 /* PlayerBackendView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375F740F289DC35A00747050 /* PlayerBackendView.swift */; };
|
375F7410289DC35A00747050 /* PlayerBackendView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375F740F289DC35A00747050 /* PlayerBackendView.swift */; };
|
||||||
375F7411289DC35A00747050 /* PlayerBackendView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375F740F289DC35A00747050 /* PlayerBackendView.swift */; };
|
375F7411289DC35A00747050 /* PlayerBackendView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375F740F289DC35A00747050 /* PlayerBackendView.swift */; };
|
||||||
375F7412289DC35A00747050 /* PlayerBackendView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375F740F289DC35A00747050 /* PlayerBackendView.swift */; };
|
375F7412289DC35A00747050 /* PlayerBackendView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 375F740F289DC35A00747050 /* PlayerBackendView.swift */; };
|
||||||
@ -1040,6 +1043,7 @@
|
|||||||
375DFB5726F9DA010013F468 /* InstancesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstancesModel.swift; sourceTree = "<group>"; };
|
375DFB5726F9DA010013F468 /* InstancesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstancesModel.swift; sourceTree = "<group>"; };
|
||||||
375E45F427B1976B00BA7902 /* MPVOGLView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPVOGLView.swift; sourceTree = "<group>"; };
|
375E45F427B1976B00BA7902 /* MPVOGLView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPVOGLView.swift; sourceTree = "<group>"; };
|
||||||
375E45F727B1AC4700BA7902 /* PlayerControlsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerControlsModel.swift; sourceTree = "<group>"; };
|
375E45F727B1AC4700BA7902 /* PlayerControlsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerControlsModel.swift; sourceTree = "<group>"; };
|
||||||
|
375EC971289F2ABF00751258 /* MultiselectRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiselectRow.swift; sourceTree = "<group>"; };
|
||||||
375F740F289DC35A00747050 /* PlayerBackendView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerBackendView.swift; sourceTree = "<group>"; };
|
375F740F289DC35A00747050 /* PlayerBackendView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerBackendView.swift; sourceTree = "<group>"; };
|
||||||
3761ABFC26F0F8DE00AA496F /* EnvironmentValues.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnvironmentValues.swift; sourceTree = "<group>"; };
|
3761ABFC26F0F8DE00AA496F /* EnvironmentValues.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnvironmentValues.swift; sourceTree = "<group>"; };
|
||||||
3763495026DFF59D00B9A393 /* AppSidebarRecents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSidebarRecents.swift; sourceTree = "<group>"; };
|
3763495026DFF59D00B9A393 /* AppSidebarRecents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSidebarRecents.swift; sourceTree = "<group>"; };
|
||||||
@ -1687,6 +1691,7 @@
|
|||||||
374C053427242D9F009BDDBE /* SponsorBlockSettings.swift */,
|
374C053427242D9F009BDDBE /* SponsorBlockSettings.swift */,
|
||||||
376BE50627347B57009AD608 /* SettingsHeader.swift */,
|
376BE50627347B57009AD608 /* SettingsHeader.swift */,
|
||||||
37B044B626F7AB9000E1419D /* SettingsView.swift */,
|
37B044B626F7AB9000E1419D /* SettingsView.swift */,
|
||||||
|
375EC971289F2ABF00751258 /* MultiselectRow.swift */,
|
||||||
);
|
);
|
||||||
path = Settings;
|
path = Settings;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -2873,6 +2878,7 @@
|
|||||||
37030FFB27B0398000ECDDAA /* MPVClient.swift in Sources */,
|
37030FFB27B0398000ECDDAA /* MPVClient.swift in Sources */,
|
||||||
3756C2AA2861151C00E4B059 /* NetworkStateModel.swift in Sources */,
|
3756C2AA2861151C00E4B059 /* NetworkStateModel.swift in Sources */,
|
||||||
3758638A2721B0A9000CB14E /* ChannelCell.swift in Sources */,
|
3758638A2721B0A9000CB14E /* ChannelCell.swift in Sources */,
|
||||||
|
375EC972289F2ABF00751258 /* MultiselectRow.swift in Sources */,
|
||||||
37001563271B1F250049C794 /* AccountsModel.swift in Sources */,
|
37001563271B1F250049C794 /* AccountsModel.swift in Sources */,
|
||||||
3795593627B08538007FF8F4 /* StreamControl.swift in Sources */,
|
3795593627B08538007FF8F4 /* StreamControl.swift in Sources */,
|
||||||
37CC3F50270D010D00608308 /* VideoBanner.swift in Sources */,
|
37CC3F50270D010D00608308 /* VideoBanner.swift in Sources */,
|
||||||
@ -2970,6 +2976,7 @@
|
|||||||
378AE93C274EDFB2006A4EE1 /* Backport.swift in Sources */,
|
378AE93C274EDFB2006A4EE1 /* Backport.swift in Sources */,
|
||||||
37152EEB26EFEB95004FB96D /* LazyView.swift in Sources */,
|
37152EEB26EFEB95004FB96D /* LazyView.swift in Sources */,
|
||||||
37F4AD2028612DFD004D0F66 /* Buffering.swift in Sources */,
|
37F4AD2028612DFD004D0F66 /* Buffering.swift in Sources */,
|
||||||
|
375EC973289F2ABF00751258 /* MultiselectRow.swift in Sources */,
|
||||||
377FC7E2267A084A00A6BBAF /* VideoCell.swift in Sources */,
|
377FC7E2267A084A00A6BBAF /* VideoCell.swift in Sources */,
|
||||||
37CC3F51270D010D00608308 /* VideoBanner.swift in Sources */,
|
37CC3F51270D010D00608308 /* VideoBanner.swift in Sources */,
|
||||||
37F961A027BD90BB00058149 /* PlayerBackendType.swift in Sources */,
|
37F961A027BD90BB00058149 /* PlayerBackendType.swift in Sources */,
|
||||||
|
@ -3,13 +3,15 @@ import UIKit
|
|||||||
|
|
||||||
struct SafeArea {
|
struct SafeArea {
|
||||||
static var insets: UIEdgeInsets {
|
static var insets: UIEdgeInsets {
|
||||||
let keyWindow = UIApplication.shared.connectedScenes
|
let keyWindow = scene?.windows.first { $0.isKeyWindow }
|
||||||
.filter { $0.activationState == .foregroundActive }
|
|
||||||
.compactMap { $0 as? UIWindowScene }
|
|
||||||
.first?
|
|
||||||
.windows
|
|
||||||
.first { $0.isKeyWindow }
|
|
||||||
|
|
||||||
return keyWindow?.safeAreaInsets ?? .init()
|
return keyWindow?.safeAreaInsets ?? .init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static var scene: UIWindowScene? {
|
||||||
|
UIApplication.shared.connectedScenes
|
||||||
|
.filter { $0.activationState == .foregroundActive }
|
||||||
|
.compactMap { $0 as? UIWindowScene }
|
||||||
|
.first
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user