custom mood tint

This commit is contained in:
Trey t
2022-03-02 11:22:20 -06:00
parent d083c0ebdc
commit 2590a77bff
6 changed files with 209 additions and 53 deletions

View File

@@ -9,10 +9,17 @@ import SwiftUI
struct CustomizeView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.moodImages.rawValue, store: GroupUserDefaults.groupDefaults) private var imagePack: MoodImages = .FontAwesome
@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
@AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0
@StateObject private var customMoodTint = UserDefaultsStore.getCustomMoodTint()
class StupidAssCustomWidgetObservableObject: ObservableObject {
@Published var fuckingWrapped: CustomWidgetModel? = nil
@Published var showFuckingSheet = false
@@ -28,12 +35,6 @@ struct CustomizeView: View {
var body: some View {
ScrollView {
VStack {
Text(String(localized: "customize_view_title"))
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.padding([.trailing, .leading], 55)
.padding([.top], 15)
createCustomWidget
changeIcon
themePicker
@@ -58,11 +59,6 @@ struct CustomizeView: View {
ZStack {
theme.currentTheme.secondaryBGColor
VStack {
Text(String(localized: "customize_view_view_change_icon"))
.font(.body)
.foregroundColor(theme.currentTheme.labelColor)
.padding(.top)
ScrollView(.horizontal) {
HStack {
Button(action: {
@@ -102,10 +98,6 @@ struct CustomizeView: View {
ZStack {
theme.currentTheme.secondaryBGColor
VStack {
Text(String(localized: "customize_view_background_title"))
.font(.body)
.foregroundColor(theme.currentTheme.labelColor)
HStack {
Spacer()
ForEach(Theme.allCases, id:\.rawValue) { aTheme in
@@ -143,10 +135,6 @@ struct CustomizeView: View {
ZStack {
theme.currentTheme.secondaryBGColor
VStack {
Text(String(localized: "customize_view_custom_widget_title"))
.font(.body)
.foregroundColor(theme.currentTheme.labelColor)
.padding(.top)
ScrollView(.horizontal) {
HStack {
ForEach(UserDefaultsStore.getCustomWidgets(), id: \.uuid) { widget in
@@ -173,6 +161,9 @@ struct CustomizeView: View {
.background(RoundedRectangle(cornerRadius: 10).fill().foregroundColor(theme.currentTheme.bgColor))
.padding()
.cornerRadius(10)
Text("[How to add widget](https://support.apple.com/guide/iphone/add-widgets-iphb8f1bf206/ios)")
.padding(.bottom)
}
}
.fixedSize(horizontal: false, vertical: true)
@@ -227,7 +218,7 @@ struct CustomizeView: View {
ZStack {
theme.currentTheme.secondaryBGColor
VStack {
ForEach(MoodTints.allCases, id: \.rawValue) { tint in
ForEach(MoodTints.defaultOptions, id: \.rawValue) { tint in
HStack {
ForEach(Mood.allValues, id: \.self) { mood in
Circle()
@@ -250,10 +241,68 @@ struct CustomizeView: View {
impactMed.impactOccurred()
moodTint = tint
}
if tint.rawValue != (MoodTints.allCases.sorted(by: { $0.rawValue > $1.rawValue }).first?.rawValue) ?? 0 {
Divider()
}
Divider()
}
ZStack {
Color.clear
Rectangle()
.frame(height: 35)
.frame(minWidth: 0, maxWidth: .infinity)
.foregroundColor(.clear)
.contentShape(Rectangle())
.onTapGesture {
moodTint = .Custom
let impactMed = UIImpactFeedbackGenerator(style: .heavy)
impactMed.impactOccurred()
}
HStack {
ColorPicker("", selection: $customMoodTint.colorOne)
.onChange(of: customMoodTint.colorOne, perform: { _ in
saveCustomMoodTint()
})
.labelsHidden()
.frame(minWidth: 0, maxWidth: .infinity)
ColorPicker("", selection: $customMoodTint.colorTwo)
.labelsHidden()
.frame(minWidth: 0, maxWidth: .infinity)
.onChange(of: customMoodTint.colorTwo, perform: { _ in
saveCustomMoodTint()
})
ColorPicker("", selection: $customMoodTint.colorThree)
.labelsHidden()
.frame(minWidth: 0, maxWidth: .infinity)
.onChange(of: customMoodTint.colorThree, perform: { _ in
saveCustomMoodTint()
})
ColorPicker("", selection: $customMoodTint.colorFour)
.labelsHidden()
.frame(minWidth: 0, maxWidth: .infinity)
.onChange(of: customMoodTint.colorFour, perform: { _ in
saveCustomMoodTint()
})
ColorPicker("", selection: $customMoodTint.colorFive)
.labelsHidden()
.frame(minWidth: 0, maxWidth: .infinity)
.onChange(of: customMoodTint.colorFive, perform: { _ in
saveCustomMoodTint()
})
}
.background(
Color.clear
)
}
.background(
RoundedRectangle(cornerRadius: 10, style: .continuous)
.fill(moodTint == .Custom ? theme.currentTheme.bgColor : .clear)
.padding([.top, .bottom], -3)
)
}
.padding()
}
@@ -261,6 +310,12 @@ struct CustomizeView: View {
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
}
private func saveCustomMoodTint() {
UserDefaultsStore.saveCustomMoodTint(customTint: customMoodTint)
moodTint = .Custom
customMoodTintUpdateNumber += 1
}
private var pickPeronsalityPack: some View {
ZStack {
theme.currentTheme.secondaryBGColor
@@ -303,9 +358,3 @@ struct CustomizeView: View {
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
}
}
struct CustomizeView_Previews: PreviewProvider {
static var previews: some View {
CustomizeView()
}
}