can have / save multiple custom widgets

This commit is contained in:
Trey t
2022-02-22 22:59:08 -06:00
parent 769c6335d9
commit 520119de85
6 changed files with 278 additions and 66 deletions

View File

@@ -13,7 +13,12 @@ struct CustomizeView: View {
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.personalityPack.rawValue, store: GroupUserDefaults.groupDefaults) private var personalityPack: PersonalityPack = .Default
@State private var showCreateCustomWidget = false
class StupidAssCustomWidgetObservableObject: ObservableObject {
@Published var fuckingWrapped: CustomWidgetModel? = nil
@Published var showFuckingSheet = false
}
@StateObject private var selectedWidget = StupidAssCustomWidgetObservableObject()
let iconSets: [(String,String)] = [
("PurpleFeelsAppIcon", "PurpleAppIcon"),
@@ -38,8 +43,10 @@ struct CustomizeView: View {
}
}
.padding()
.sheet(isPresented: $showCreateCustomWidget) {
CreateWidgetView()
.sheet(isPresented: $selectedWidget.showFuckingSheet) {
if let fuckingWrapped = selectedWidget.fuckingWrapped {
CreateWidgetView(customWidget: fuckingWrapped)
}
}
.background(
theme.currentTheme.bg
@@ -52,8 +59,10 @@ struct CustomizeView: View {
theme.currentTheme.secondaryBGColor
VStack {
Text(String(localized: "settings_view_change_icon"))
.font(.body)
.foregroundColor(theme.currentTheme.labelColor)
HStack {
Button(action: {
UIApplication.shared.setAlternateIconName(nil)
}, label: {
@@ -62,8 +71,7 @@ struct CustomizeView: View {
.frame(width: 50, height:50)
.cornerRadius(10)
})
.padding()
ForEach(iconSets, id: \.self.0){ iconSet in
Button(action: {
UIApplication.shared.setAlternateIconName(iconSet.1) { (error) in
@@ -75,11 +83,10 @@ struct CustomizeView: View {
.frame(width: 50, height:50)
.cornerRadius(10)
})
.padding()
}
}
.padding()
}
.padding()
}
.fixedSize(horizontal: false, vertical: true)
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
@@ -90,6 +97,9 @@ struct CustomizeView: View {
theme.currentTheme.secondaryBGColor
VStack {
Text(String(localized: "settings_background_title"))
.font(.body)
.foregroundColor(theme.currentTheme.labelColor)
HStack {
Spacer()
ForEach(Theme.allCases, id:\.rawValue) { aTheme in
@@ -119,12 +129,30 @@ struct CustomizeView: View {
private var createCustomWidget: some View {
ZStack {
theme.currentTheme.secondaryBGColor
Button(action: {
showCreateCustomWidget = true
}, label: {
VStack {
Text("Create Custom Widget")
})
.padding()
.font(.body)
.foregroundColor(theme.currentTheme.labelColor)
.onTapGesture {
selectedWidget.fuckingWrapped = CustomWidgetModel.randomWidget
selectedWidget.showFuckingSheet = true
}
.padding()
ScrollView(.horizontal) {
HStack {
ForEach(UserDefaultsStore.getCustomWidgets(), id: \.uuid) { widget in
CustomWidgetView(customWidgetModel: widget)
.frame(width: 50, height: 50)
.cornerRadius(10)
.onTapGesture {
selectedWidget.fuckingWrapped = widget.copy() as? CustomWidgetModel
selectedWidget.showFuckingSheet = true
}
}
}
.padding()
}
}
}
.fixedSize(horizontal: false, vertical: true)
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
@@ -201,8 +229,7 @@ struct CustomizeView: View {
ForEach(PersonalityPack.allCases, id: \.self) { aPack in
VStack(spacing: 10) {
Text(String(aPack.title()))
.font(.title)
.fontWeight(.bold)
.font(.body)
.foregroundColor(theme.currentTheme.labelColor)