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

View File

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

View File

@@ -98,3 +98,24 @@ extension String {
return (r, g, b, a) 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 customWidget
case customMoodTint case customMoodTint
case customMoodTintUpdateNumber case customMoodTintUpdateNumber
case textColor
case contentViewCurrentSelectedHeaderViewBackDays case contentViewCurrentSelectedHeaderViewBackDays
case contentViewHeaderTag case contentViewHeaderTag

View File

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

View File

@@ -10,6 +10,7 @@ import SwiftUI
struct CreateWidgetView: View { struct CreateWidgetView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system @AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@Environment(\.dismiss) var dismiss @Environment(\.dismiss) var dismiss
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black
@StateObject private var customWidget: CustomWidgetModel @StateObject private var customWidget: CustomWidgetModel
@@ -115,7 +116,7 @@ struct CreateWidgetView: View {
}) })
} }
} }
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
} }
Spacer() Spacer()
VStack(alignment: .center) { VStack(alignment: .center) {
@@ -128,7 +129,7 @@ struct CreateWidgetView: View {
}) })
} }
} }
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
} }
Spacer() Spacer()
VStack(alignment: .center) { VStack(alignment: .center) {
@@ -141,7 +142,7 @@ struct CreateWidgetView: View {
}) })
} }
} }
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
} }
Spacer() 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.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() @StateObject private var customMoodTint = UserDefaultsStore.getCustomMoodTint()
class StupidAssCustomWidgetObservableObject: ObservableObject { class StupidAssCustomWidgetObservableObject: ObservableObject {
@@ -43,8 +47,14 @@ struct CustomizeView: View {
createCustomWidget createCustomWidget
changeIcon changeIcon
themePicker themePicker
Divider()
sampleEntryView
pickMoodImagePack pickMoodImagePack
pickMoodTintPack Group {
pickMoodTintPack
pickTextColor
}
Divider()
pickPeronsalityPack pickPeronsalityPack
} }
} }
@@ -316,6 +326,48 @@ struct CustomizeView: View {
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight]) .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() { private func saveCustomMoodTint() {
UserDefaultsStore.saveCustomMoodTint(customTint: customMoodTint) UserDefaultsStore.saveCustomMoodTint(customTint: customMoodTint)
moodTint = .Custom moodTint = .Custom
@@ -330,7 +382,7 @@ struct CustomizeView: View {
VStack(spacing: 10) { VStack(spacing: 10) {
Text(String(aPack.title())) Text(String(aPack.title()))
.font(.body) .font(.body)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
Text(aPack.randomPushNotificationStrings().title) Text(aPack.randomPushNotificationStrings().title)
.font(.body) .font(.body)
@@ -364,3 +416,14 @@ struct CustomizeView: View {
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight]) .cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
} }
} }
struct CustomizeView_Previews: PreviewProvider {
static var previews: some View {
Group {
CustomizeView()
CustomizeView()
.preferredColorScheme(.dark)
}
}
}

View File

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

View File

@@ -12,11 +12,13 @@ struct HeaderStatsView : UIViewRepresentable {
//Bar chart accepts data as array of BarChartDataEntry objects //Bar chart accepts data as array of BarChartDataEntry objects
var entries : [BarChartDataEntry] var entries : [BarChartDataEntry]
var moodTints: [Color] var moodTints: [Color]
var textColor: Color
var tmpHolderToMakeViewDiffefrent: Color var tmpHolderToMakeViewDiffefrent: Color
init(fakeData: Bool, backDays: Int, moodTint: [Color]) { init(fakeData: Bool, backDays: Int, moodTint: [Color], textColor: Color) {
self.moodTints = moodTint self.moodTints = moodTint
self.textColor = textColor
guard moodTints.count == 5 else { guard moodTints.count == 5 else {
fatalError("mood tint count dont match") fatalError("mood tint count dont match")
} }
@@ -105,8 +107,8 @@ struct HeaderStatsView : UIViewRepresentable {
// change bars color to green // change bars color to green
dataSet.colors = moodTints.map({ NSUIColor( $0 ) }) dataSet.colors = moodTints.map({ NSUIColor( $0 ) })
dataSet.secondaryTextColor = UIColor.systemGray dataSet.secondaryTextColor = UIColor(textColor)
dataSet.valueColors = [.white] dataSet.valueColors = [UIColor(textColor)]
dataSet.highlightAlpha = 0.0 dataSet.highlightAlpha = 0.0
dataSet.roundedCornerValue = 10 dataSet.roundedCornerValue = 10
@@ -128,6 +130,6 @@ struct HeaderStatsView : UIViewRepresentable {
struct HeaderStatsView_Previews: PreviewProvider { struct HeaderStatsView_Previews: PreviewProvider {
static var previews: some View { 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.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.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 // 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 @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 { private func SectionHeaderView(month: Int, year: Int) -> some View {
Text("\(Random.monthName(fromMonthInt: month)) \(String(year))") Text("\(Random.monthName(fromMonthInt: month)) \(String(year))")
.font(.title) .font(.title)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .leading) .frame(maxWidth: .infinity, alignment: .leading)
.padding() .padding()
.background( .background(
@@ -294,7 +295,7 @@ extension HomeView {
ForEach(entries.sorted(by: { ForEach(entries.sorted(by: {
return $0.forDate! > $1.forDate! return $0.forDate! > $1.forDate!
}), id: \.self) { entry in }), id: \.self) { entry in
entryListView(entry: entry) EntryListView(entry: entry)
.contentShape(Rectangle()) .contentShape(Rectangle())
.onTapGesture(perform: { .onTapGesture(perform: {
selectedEntry = entry 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 { 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.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.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.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 showingSheet = false
@State private var selectedEntry: MoodEntry? @State private var selectedEntry: MoodEntry?
@@ -36,7 +37,7 @@ struct MonthDetailView: View {
VStack { VStack {
Text("\(Random.monthName(fromMonthInt: monthInt)) \(String(yearInt))") Text("\(Random.monthName(fromMonthInt: monthInt)) \(String(yearInt))")
.font(.title) .font(.title)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .leading) .frame(maxWidth: .infinity, alignment: .leading)
.padding() .padding()
.background( .background(
@@ -112,7 +113,7 @@ struct MonthDetailView: View {
Text(entry.forDate!, Text(entry.forDate!,
format: Date.FormatStyle().day()) format: Date.FormatStyle().day())
.font(.title3) .font(.title3)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
} }
if entry.mood == .placeholder { if entry.mood == .placeholder {

View File

@@ -13,6 +13,7 @@ struct MonthView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system @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.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 // 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 @AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0
@@ -127,7 +128,7 @@ extension MonthView {
ZStack { ZStack {
Text("\(Random.monthName(fromMonthInt: month)) \(String(year))") Text("\(Random.monthName(fromMonthInt: month)) \(String(year))")
.font(.body) .font(.body)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .leading) .frame(maxWidth: .infinity, alignment: .leading)
Text(String(customMoodTintUpdateNumber)) Text(String(customMoodTintUpdateNumber))
.hidden() .hidden()

View File

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

View File

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

View File

@@ -20,6 +20,7 @@ struct AllMoodsTotalTemplate: View, SharingTemplate {
@Environment(\.presentationMode) var presentationMode @Environment(\.presentationMode) var presentationMode
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default @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.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() @StateObject private var shareImage = StupidAssShareObservableObject()
private var entries = [MoodMetrics]() private var entries = [MoodMetrics]()
@@ -126,7 +127,7 @@ struct AllMoodsTotalTemplate: View, SharingTemplate {
VStack { VStack {
Text(String(format: String(localized: "share_view_all_moods_total_template_title"), totalEntryCount)) Text(String(format: String(localized: "share_view_all_moods_total_template_title"), totalEntryCount))
.font(.title) .font(.title)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center) .frame(maxWidth: .infinity, alignment: .center)
.padding() .padding()

View File

@@ -23,6 +23,7 @@ struct CurrentStreakTemplate: View, SharingTemplate {
@Environment(\.presentationMode) var presentationMode @Environment(\.presentationMode) var presentationMode
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default @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.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 = [ 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 { VStack {
Text(String(format: String(localized: "share_view_current_streak_template_title"))) Text(String(format: String(localized: "share_view_current_streak_template_title")))
.font(.title) .font(.title)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center) .frame(maxWidth: .infinity, alignment: .center)
.padding(.top) .padding(.top)

View File

@@ -33,6 +33,7 @@ struct LongestStreakTemplate: View, SharingTemplate {
@Environment(\.presentationMode) var presentationMode @Environment(\.presentationMode) var presentationMode
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default @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.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 = [ 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 { VStack {
Text(String(format: String(localized: "share_view_longest_streak_template_title"), self.selectedMood.strValue)) Text(String(format: String(localized: "share_view_longest_streak_template_title"), self.selectedMood.strValue))
.font(.title) .font(.title)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center) .frame(maxWidth: .infinity, alignment: .center)
.padding() .padding()
@@ -127,19 +128,19 @@ struct LongestStreakTemplate: View, SharingTemplate {
VStack { VStack {
Text(self.moodEntries.first?.forDate ?? Date(), formatter: itemFormatter) Text(self.moodEntries.first?.forDate ?? Date(), formatter: itemFormatter)
.font(.title) .font(.title)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center) .frame(maxWidth: .infinity, alignment: .center)
.padding(.top, 1) .padding(.top, 1)
Text("-") Text("-")
.font(.title) .font(.title)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center) .frame(maxWidth: .infinity, alignment: .center)
.padding(.top, 1) .padding(.top, 1)
Text(self.moodEntries.last?.forDate ?? Date(), formatter: itemFormatter) Text(self.moodEntries.last?.forDate ?? Date(), formatter: itemFormatter)
.font(.title) .font(.title)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .center) .frame(maxWidth: .infinity, alignment: .center)
.padding(.top, 1) .padding(.top, 1)
} }
@@ -168,7 +169,7 @@ struct LongestStreakTemplate: View, SharingTemplate {
}, label: { }, label: {
Text("Pick Mood") Text("Pick Mood")
.font(.title) .font(.title)
.foregroundColor(theme.currentTheme.labelColor) .foregroundColor(textColor)
.padding() .padding()
}) })
.frame(maxWidth: .infinity, alignment: .center) .frame(maxWidth: .infinity, alignment: .center)

View File

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

View File

@@ -29,6 +29,7 @@ struct SwitchableView: View {
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system @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.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 // 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 @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: .average),
moodTint.color(forMood: .bad), moodTint.color(forMood: .bad),
moodTint.color(forMood: .horrible) moodTint.color(forMood: .horrible)
]) ], textColor: textColor)
.padding([.leading, .trailing], -15) .padding([.leading, .trailing], -15)
.padding([.top, .bottom], 8) .padding([.top, .bottom], 8)
.allowsHitTesting(false) .allowsHitTesting(false)

View File

@@ -76,6 +76,8 @@
"customize_view_custom_widget_title" = "Custom Widgets"; "customize_view_custom_widget_title" = "Custom Widgets";
"customize_view_background_title" = "Pick a theme"; "customize_view_background_title" = "Pick a theme";
"customize_view_view_change_icon" = "Change App Icon"; "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_left_eye" = "Left Eye";
"create_widget_view_right_eye" = "Right Eye"; "create_widget_view_right_eye" = "Right Eye";