customize text color

This commit is contained in:
Trey t
2022-03-06 11:25:05 -06:00
parent 6ec0a9bb99
commit 7692f455c8
22 changed files with 225 additions and 92 deletions

View File

@@ -52,6 +52,7 @@
1C361F1727C046D800E832FC /* MonthDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C361F1627C046D800E832FC /* MonthDetailView.swift */; };
1C414BF127D3CAB300BC1720 /* OnboardingData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C5F4975279C84090092F1B4 /* OnboardingData.swift */; };
1C414BF527D3CB2200BC1720 /* OnboardingDay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CA03774279A294800D26164 /* OnboardingDay.swift */; };
1C414C0F27D51FB500BC1720 /* EntryListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C414C0E27D51FB500BC1720 /* EntryListView.swift */; };
1C4FF3BB27BEDDF000BE8F34 /* ShowBasedOnVoteLogics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C4FF3BA27BEDDF000BE8F34 /* ShowBasedOnVoteLogics.swift */; };
1C4FF3BC27BEDF6600BE8F34 /* ShowBasedOnVoteLogics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C4FF3BA27BEDDF000BE8F34 /* ShowBasedOnVoteLogics.swift */; };
1C4FF3BE27BEDF9100BE8F34 /* PersistenceHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C4FF3BD27BEDF9100BE8F34 /* PersistenceHelper.swift */; };
@@ -196,6 +197,7 @@
1C361F0B27C0356B00E832FC /* MainTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabView.swift; sourceTree = "<group>"; };
1C361F1327C03C8600E832FC /* OnboardingDataDataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingDataDataManager.swift; sourceTree = "<group>"; };
1C361F1627C046D800E832FC /* MonthDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MonthDetailView.swift; sourceTree = "<group>"; };
1C414C0E27D51FB500BC1720 /* EntryListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntryListView.swift; sourceTree = "<group>"; };
1C4FF3BA27BEDDF000BE8F34 /* ShowBasedOnVoteLogics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowBasedOnVoteLogics.swift; sourceTree = "<group>"; };
1C4FF3BD27BEDF9100BE8F34 /* PersistenceHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceHelper.swift; sourceTree = "<group>"; };
1C4FF3BF27BEE06900BE8F34 /* PersistenceGET.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceGET.swift; sourceTree = "<group>"; };
@@ -456,6 +458,7 @@
1C358FB427B0ADF3002C83A6 /* SharingTemplates */,
1CAD602B27A5C1C800C520BD /* SmallRollUpHeaderView.swift */,
1CAD603D27A6ECCD00C520BD /* SwitchableView.swift */,
1C414C0E27D51FB500BC1720 /* EntryListView.swift */,
);
path = Views;
sourceTree = "<group>";
@@ -809,6 +812,7 @@
1CD90B63278C7EBA001C4FEA /* Mood.swift in Sources */,
1C358FBE27B4D1F2002C83A6 /* CurrentStreakTemplate.swift in Sources */,
1C4FF3C727BEE09E00BE8F34 /* PersistenceADD.swift in Sources */,
1C414C0F27D51FB500BC1720 /* EntryListView.swift in Sources */,
1C4FF3BB27BEDDF000BE8F34 /* ShowBasedOnVoteLogics.swift in Sources */,
1CAD603527A5C1C800C520BD /* SettingsView.swift in Sources */,
1CD90B53278C7E7A001C4FEA /* FeelsWidget.intentdefinition in Sources */,

View File

@@ -13,6 +13,7 @@ import SwiftUI
class AppDelegate: NSObject, UIApplicationDelegate {
private let savedOnboardingData = UserDefaultsStore.getOnboarding()
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// PersistenceController.shared.clearDB()
@@ -22,7 +23,7 @@ class AppDelegate: NSObject, UIApplicationDelegate {
UNUserNotificationCenter.current().delegate = self
let theme = UserDefaultsStore.theme()
UIPageControl.appearance().currentPageIndicatorTintColor = UIColor(theme.currentTheme.labelColor)
UIPageControl.appearance().currentPageIndicatorTintColor = UIColor(textColor)
UIPageControl.appearance().pageIndicatorTintColor = UIColor.systemGray
let appearance = UITabBarAppearance()

View File

@@ -98,3 +98,24 @@ extension String {
return (r, g, b, a)
}
}
extension Color: RawRepresentable {
// TODO: Sort out alpha
public init?(rawValue: Int) {
let red = Double((rawValue & 0xFF0000) >> 16) / 0xFF
let green = Double((rawValue & 0x00FF00) >> 8) / 0xFF
let blue = Double(rawValue & 0x0000FF) / 0xFF
self = Color(red: red, green: green, blue: blue)
}
public var rawValue: Int {
let red = Int(coreImageColor.red * 255 + 0.5)
let green = Int(coreImageColor.green * 255 + 0.5)
let blue = Int(coreImageColor.blue * 255 + 0.5)
return (red << 16) | (green << 8) | blue
}
private var coreImageColor: CIColor {
return CIColor(color: UIColor(self))
}
}

View File

@@ -21,6 +21,7 @@ class UserDefaultsStore {
case customWidget
case customMoodTint
case customMoodTintUpdateNumber
case textColor
case contentViewCurrentSelectedHeaderViewBackDays
case contentViewHeaderTag

View File

@@ -13,6 +13,7 @@ import CoreData
struct AddMoodHeaderView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
@State var onboardingData = OnboardingDataDataManager.shared.savedOnboardingData
@@ -29,7 +30,7 @@ struct AddMoodHeaderView: View {
VStack {
Text(ShowBasedOnVoteLogics.getVotingTitle(onboardingData: onboardingData))
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.padding()
HStack{
ForEach(Mood.allValues) { mood in

View File

@@ -10,7 +10,8 @@ import SwiftUI
struct CreateWidgetView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@Environment(\.dismiss) var dismiss
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
@StateObject private var customWidget: CustomWidgetModel
@State private var mouth: CustomWidgetMouthOptions = CustomWidgetMouthOptions.defaultOption
@@ -115,7 +116,7 @@ struct CreateWidgetView: View {
})
}
}
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
}
Spacer()
VStack(alignment: .center) {
@@ -128,7 +129,7 @@ struct CreateWidgetView: View {
})
}
}
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
}
Spacer()
VStack(alignment: .center) {
@@ -141,7 +142,7 @@ struct CreateWidgetView: View {
})
}
}
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
}
Spacer()
}

View File

@@ -18,6 +18,10 @@ struct CustomizeView: View {
@AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
@State private var sampleListEntry = PersistenceController.shared.randomEntries(count: 1).first!
@StateObject private var customMoodTint = UserDefaultsStore.getCustomMoodTint()
class StupidAssCustomWidgetObservableObject: ObservableObject {
@@ -43,8 +47,14 @@ struct CustomizeView: View {
createCustomWidget
changeIcon
themePicker
Divider()
sampleEntryView
pickMoodImagePack
pickMoodTintPack
Group {
pickMoodTintPack
pickTextColor
}
Divider()
pickPeronsalityPack
}
}
@@ -316,6 +326,48 @@ struct CustomizeView: View {
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
}
private var pickTextColor: some View {
ZStack {
theme.currentTheme.secondaryBGColor
ColorPicker(String(localized: "customize_view_view_text_color"), selection: $textColor)
.padding()
.foregroundColor(textColor)
}
.fixedSize(horizontal: false, vertical: true)
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
}
private var sampleEntryView: some View {
ZStack {
theme.currentTheme.secondaryBGColor
VStack {
HStack {
Spacer()
Image(systemName: "arrow.triangle.2.circlepath.circle")
.resizable()
.frame(width: 20, height: 20, alignment: .trailing)
.foregroundColor(Color(UIColor.systemGray))
.onTapGesture {
sampleListEntry = PersistenceController.shared.randomEntries(count: 1).first!
}
}
Spacer()
}.padding()
VStack(alignment:.leading) {
Text(String(localized: "customize_view_view_example_row"))
.padding([.leading, .top])
.foregroundColor(textColor)
Divider()
EntryListView(entry: sampleListEntry)
.padding()
}
}
.fixedSize(horizontal: false, vertical: true)
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
}
private func saveCustomMoodTint() {
UserDefaultsStore.saveCustomMoodTint(customTint: customMoodTint)
moodTint = .Custom
@@ -330,7 +382,7 @@ struct CustomizeView: View {
VStack(spacing: 10) {
Text(String(aPack.title()))
.font(.body)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
Text(aPack.randomPushNotificationStrings().title)
.font(.body)
@@ -364,3 +416,14 @@ struct CustomizeView: View {
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
}
}
struct CustomizeView_Previews: PreviewProvider {
static var previews: some View {
Group {
CustomizeView()
CustomizeView()
.preferredColorScheme(.dark)
}
}
}

View File

@@ -9,7 +9,8 @@ import SwiftUI
struct EmptyHomeView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
let viewModel: HomeViewViewModel
var body: some View {
@@ -19,12 +20,12 @@ struct EmptyHomeView: View {
VStack {
Text(String(localized: "content_view_empty_title"))
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.padding()
Text(String(localized: "content_view_empty_title"))
.font(.body)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.padding()
AddMoodHeaderView(addItemHeaderClosure: { (mood, date) in
withAnimation {

View File

@@ -0,0 +1,56 @@
//
// EntryListView.swift
// Feels (iOS)
//
// Created by Trey Tartt on 3/6/22.
//
import SwiftUI
struct EntryListView: View {
@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.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
public let entry: MoodEntry
var body: some View {
HStack {
imagePack.icon(forMood: entry.mood)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 40, height: 40, alignment: .center)
.foregroundColor(moodTint.color(forMood: entry.mood))
.padding(.leading, 5)
VStack {
HStack {
Text(Random.weekdayName(fromDate:entry.forDate!))
.font(.title3)
.foregroundColor(textColor)
Text(" - ")
.padding([.leading, .trailing], -10)
.foregroundColor(textColor)
Text(Random.dayFormat(fromDate:entry.forDate!))
.font(.title3)
.foregroundColor(textColor)
Spacer()
}
.multilineTextAlignment(.leading)
Text(entry.moodValue == Mood.missing.rawValue ? String(localized: "mood_value_missing_tap_to_add") : "\(entry.moodString)")
.font(.body)
.foregroundColor(Color(UIColor.systemGray))
.frame(maxWidth: .infinity, alignment: .leading)
}
}
}
}
struct EntryListView_Previews: PreviewProvider {
static let fakeData = PersistenceController.shared.randomEntries(count: 1).first!
static var previews: some View {
EntryListView(entry: EntryListView_Previews.fakeData)
}
}

View File

@@ -22,6 +22,7 @@ struct FilterView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
@StateObject private var viewModel = FilterViewModel()
//[
@@ -55,7 +56,7 @@ struct FilterView: View {
Text(String(localized: "filter_view_total") + ": \(self.viewModel.numberOfRatings)")
.font(.title2)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
if showFilter {
filterView
@@ -82,7 +83,7 @@ struct FilterView: View {
Text(showFilter ? String(localized: "filter_view_hide_filters") : String(localized: "filter_view_show_filters"))
.frame(maxWidth: .infinity)
.frame(height: 44)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.background(theme.currentTheme.secondaryBGColor)
.cornerRadius(10)
}).frame(maxWidth: .infinity)
@@ -91,7 +92,8 @@ struct FilterView: View {
struct StatsSubView: View {
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
let data: [MoodEntry]
let mood: Mood
@@ -100,7 +102,7 @@ struct FilterView: View {
Text(String(Stats.getCountFor(moodType: mood,
inData: data)))
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
Text(mood.strValue)
.foregroundColor(moodTint.color(forMood: mood))
}
@@ -139,8 +141,8 @@ struct FilterView: View {
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 44, maxHeight: 44)
.cornerRadius(10)
.padding([.leading, .trailing])
.foregroundColor(theme.currentTheme.labelColor)
.accentColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.accentColor(textColor)
ZStack {
theme.currentTheme.secondaryBGColor
@@ -156,8 +158,8 @@ struct FilterView: View {
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 44, maxHeight: 44)
.cornerRadius(10)
.padding([.leading, .trailing])
.foregroundColor(theme.currentTheme.labelColor)
.accentColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.accentColor(textColor)
ZStack {
theme.currentTheme.secondaryBGColor
@@ -196,7 +198,7 @@ struct FilterView: View {
ForEach(months, id: \.self.0) { item in
Text(item.1)
.textCase(.uppercase)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
}
}.padding([.leading, .trailing, .top])
}
@@ -213,7 +215,7 @@ struct FilterView: View {
let yearData = self.viewModel.data[yearKey]!
Text(String(yearKey))
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
yearGridView(yearData: yearData, columns: columns)
.background(
theme.currentTheme.secondaryBGColor

View File

@@ -12,11 +12,13 @@ struct HeaderStatsView : UIViewRepresentable {
//Bar chart accepts data as array of BarChartDataEntry objects
var entries : [BarChartDataEntry]
var moodTints: [Color]
var textColor: Color
var tmpHolderToMakeViewDiffefrent: Color
init(fakeData: Bool, backDays: Int, moodTint: [Color]) {
init(fakeData: Bool, backDays: Int, moodTint: [Color], textColor: Color) {
self.moodTints = moodTint
self.textColor = textColor
guard moodTints.count == 5 else {
fatalError("mood tint count dont match")
}
@@ -105,8 +107,8 @@ struct HeaderStatsView : UIViewRepresentable {
// change bars color to green
dataSet.colors = moodTints.map({ NSUIColor( $0 ) })
dataSet.secondaryTextColor = UIColor.systemGray
dataSet.valueColors = [.white]
dataSet.secondaryTextColor = UIColor(textColor)
dataSet.valueColors = [UIColor(textColor)]
dataSet.highlightAlpha = 0.0
dataSet.roundedCornerValue = 10
@@ -128,6 +130,6 @@ struct HeaderStatsView : UIViewRepresentable {
struct HeaderStatsView_Previews: PreviewProvider {
static var previews: some View {
HeaderStatsView(fakeData: true, backDays: 30, moodTint: [Color.green, Color.blue, Color.yellow, Color.red, Color.orange]).frame(minHeight: 85, maxHeight: 90)
HeaderStatsView(fakeData: true, backDays: 30, moodTint: [Color.green, Color.blue, Color.yellow, Color.red, Color.orange], textColor: .white).frame(minHeight: 85, maxHeight: 90)
}
}

View File

@@ -23,6 +23,7 @@ struct HomeView: View {
@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.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
// store a value that gets changed when user updates custom colors to update the view since the moodTint doesn't change
@AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0
@@ -280,7 +281,7 @@ extension HomeView {
private func SectionHeaderView(month: Int, year: Int) -> some View {
Text("\(Random.monthName(fromMonthInt: month)) \(String(year))")
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .leading)
.padding()
.background(
@@ -294,7 +295,7 @@ extension HomeView {
ForEach(entries.sorted(by: {
return $0.forDate! > $1.forDate!
}), id: \.self) { entry in
entryListView(entry: entry)
EntryListView(entry: entry)
.contentShape(Rectangle())
.onTapGesture(perform: {
selectedEntry = entry
@@ -303,38 +304,6 @@ extension HomeView {
}
}
}
private func entryListView(entry: MoodEntry) -> some View {
HStack {
imagePack.icon(forMood: entry.mood)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 40, height: 40, alignment: .center)
.foregroundColor(moodTint.color(forMood: entry.mood))
.padding(.leading, 5)
VStack {
HStack {
Text(Random.weekdayName(fromDate:entry.forDate!))
.font(.title3)
.foregroundColor(theme.currentTheme.labelColor)
Text(" - ")
.padding([.leading, .trailing], -10)
.foregroundColor(theme.currentTheme.labelColor)
Text(Random.dayFormat(fromDate:entry.forDate!))
.font(.title3)
.foregroundColor(theme.currentTheme.labelColor)
Spacer()
}
.multilineTextAlignment(.leading)
Text(entry.moodValue == Mood.missing.rawValue ? String(localized: "mood_value_missing_tap_to_add") : "\(entry.moodString)")
.font(.body)
.foregroundColor(Color(UIColor.systemGray))
.frame(maxWidth: .infinity, alignment: .leading)
}
}
}
}
struct ViewOffsetKey: PreferenceKey {

View File

@@ -11,6 +11,7 @@ struct MonthDetailView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.deleteEnable.rawValue, store: GroupUserDefaults.groupDefaults) private var deleteEnabled = true
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
@State private var showingSheet = false
@State private var selectedEntry: MoodEntry?
@@ -36,7 +37,7 @@ struct MonthDetailView: View {
VStack {
Text("\(Random.monthName(fromMonthInt: monthInt)) \(String(yearInt))")
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .leading)
.padding()
.background(
@@ -112,7 +113,7 @@ struct MonthDetailView: View {
Text(entry.forDate!,
format: Date.FormatStyle().day())
.font(.title3)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
}
if entry.mood == .placeholder {

View File

@@ -13,7 +13,8 @@ struct MonthView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
// store a value that gets changed when user updates custom colors to update the view since the moodTint doesn't change
@AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0
@@ -127,7 +128,7 @@ extension MonthView {
ZStack {
Text("\(Random.monthName(fromMonthInt: month)) \(String(year))")
.font(.body)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .leading)
Text(String(customMoodTintUpdateNumber))
.hidden()

View File

@@ -20,7 +20,8 @@ struct SettingsView: View {
@AppStorage(UserDefaultsStore.Keys.useCloudKit.rawValue, store: GroupUserDefaults.groupDefaults) private var useCloudKit = false
@AppStorage(UserDefaultsStore.Keys.deleteEnable.rawValue, store: GroupUserDefaults.groupDefaults) private var deleteEnabled = true
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
var body: some View {
ScrollView {
VStack {
@@ -86,13 +87,13 @@ struct SettingsView: View {
}
}, label: {
Text(String(localized: "settings_view_special_thanks_to_title"))
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
})
.padding()
if showSpecialThanks {
Text(String(localized: "settings_view_special_thanks_to_body"))
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.padding()
}
}
@@ -108,7 +109,7 @@ struct SettingsView: View {
PersistenceController.shared.populateTestData()
}, label: {
Text("Add test data")
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
})
.padding()
}
@@ -123,7 +124,7 @@ struct SettingsView: View {
PersistenceController.shared.clearDB()
}, label: {
Text("Clear DB")
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
})
.padding()
}
@@ -141,12 +142,12 @@ struct SettingsView: View {
}
}, label: {
Text(String(localized: "settings_view_why_bg_mode_title"))
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
})
.padding()
if showWhyBGMode {
Text(String(localized: "settings_view_why_bg_mode_body"))
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.padding()
}
}
@@ -166,7 +167,7 @@ struct SettingsView: View {
showOnboarding.toggle()
}, label: {
Text(String(localized: "settings_view_show_onboarding"))
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
})
.padding()
}
@@ -180,11 +181,11 @@ struct SettingsView: View {
VStack {
Toggle(isOn: $useCloudKit, label: {
Text(String(localized: "settings_use_cloudkit_title"))
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
})
.padding()
Text(String(localized: "settings_use_cloudkit_body"))
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
}
.padding(.bottom)
}
@@ -199,7 +200,7 @@ struct SettingsView: View {
Image(systemName: syncMonitor.syncStateSummary.symbolName)
.foregroundColor(syncMonitor.syncStateSummary.symbolColor)
Text( syncMonitor.syncStateSummary.isBroken ? "cloudkit is broken" : "cloudkit is good")
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
}
.padding()
}
@@ -213,7 +214,7 @@ struct SettingsView: View {
VStack {
Toggle(String(localized: "settings_use_delete_enable"),
isOn: $deleteEnabled)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.padding()
}
}
@@ -344,7 +345,7 @@ struct SettingsView: View {
}, label: {
Text("Create random icons")
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
})
.padding()
}

View File

@@ -24,7 +24,8 @@ struct WrappedSharable: Hashable, Equatable {
struct SharingListView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
class StupidAssObservableObject: ObservableObject {
@Published var fuckingWrappedShrable: WrappedSharable? = nil
@Published var showFuckingSheet = false
@@ -111,7 +112,7 @@ struct SharingListView: View {
Spacer()
Text(item.description)
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.fontWeight(.bold)
.frame(minWidth: 0, maxWidth: .infinity)
.frame(height: 44)

View File

@@ -20,7 +20,8 @@ struct AllMoodsTotalTemplate: View, SharingTemplate {
@Environment(\.presentationMode) var presentationMode
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
@StateObject private var shareImage = StupidAssShareObservableObject()
private var entries = [MoodMetrics]()
init(isPreview: Bool, startDate: Date, endDate: Date, fakeData: Bool) {
@@ -126,7 +127,7 @@ struct AllMoodsTotalTemplate: View, SharingTemplate {
VStack {
Text(String(format: String(localized: "share_view_all_moods_total_template_title"), totalEntryCount))
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center)
.padding()

View File

@@ -23,7 +23,8 @@ struct CurrentStreakTemplate: View, SharingTemplate {
@Environment(\.presentationMode) var presentationMode
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
let columns = [
GridItem(.flexible(minimum: 5, maximum: .infinity), alignment: .center),
GridItem(.flexible(minimum: 5, maximum: .infinity), alignment: .center),
@@ -76,7 +77,7 @@ struct CurrentStreakTemplate: View, SharingTemplate {
VStack {
Text(String(format: String(localized: "share_view_current_streak_template_title")))
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center)
.padding(.top)

View File

@@ -33,7 +33,8 @@ struct LongestStreakTemplate: View, SharingTemplate {
@Environment(\.presentationMode) var presentationMode
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
let columns = [
GridItem(.flexible(minimum: 5, maximum: .infinity), alignment: .center),
GridItem(.flexible(minimum: 5, maximum: .infinity), alignment: .center),
@@ -115,7 +116,7 @@ struct LongestStreakTemplate: View, SharingTemplate {
VStack {
Text(String(format: String(localized: "share_view_longest_streak_template_title"), self.selectedMood.strValue))
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center)
.padding()
@@ -127,19 +128,19 @@ struct LongestStreakTemplate: View, SharingTemplate {
VStack {
Text(self.moodEntries.first?.forDate ?? Date(), formatter: itemFormatter)
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center)
.padding(.top, 1)
Text("-")
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center)
.padding(.top, 1)
Text(self.moodEntries.last?.forDate ?? Date(), formatter: itemFormatter)
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center)
.padding(.top, 1)
}
@@ -168,7 +169,7 @@ struct LongestStreakTemplate: View, SharingTemplate {
}, label: {
Text("Pick Mood")
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.padding()
})
.frame(maxWidth: .infinity, alignment: .center)

View File

@@ -25,7 +25,8 @@ struct MonthTotalTemplate: View, SharingTemplate {
@Environment(\.presentationMode) var presentationMode
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
private var moodMetrics = [MoodMetrics]()
private var moodEntries = [MoodEntry]()
@@ -104,7 +105,7 @@ struct MonthTotalTemplate: View, SharingTemplate {
VStack {
Text(String(format: String(localized: "share_view_month_moods_total_template_title"), Random.monthName(fromMonthInt: month), moodEntries.count))
.font(.title)
.foregroundColor(theme.currentTheme.labelColor)
.foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center)
.padding()

View File

@@ -29,7 +29,8 @@ struct SwitchableView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .white
// store a value that gets changed when user updates custom colors to update the view since the moodTint doesn't change
@AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0
@@ -52,7 +53,7 @@ struct SwitchableView: View {
moodTint.color(forMood: .average),
moodTint.color(forMood: .bad),
moodTint.color(forMood: .horrible)
])
], textColor: textColor)
.padding([.leading, .trailing], -15)
.padding([.top, .bottom], 8)
.allowsHitTesting(false)

View File

@@ -76,6 +76,8 @@
"customize_view_custom_widget_title" = "Custom Widgets";
"customize_view_background_title" = "Pick a theme";
"customize_view_view_change_icon" = "Change App Icon";
"customize_view_view_text_color" = "Text Color";
"customize_view_view_example_row" = "Example row";
"create_widget_view_left_eye" = "Left Eye";
"create_widget_view_right_eye" = "Right Eye";