add filter days to cusomize page
This commit is contained in:
@@ -75,6 +75,10 @@
|
|||||||
1C658D7827C0744D003231EE /* PersistenceUPDATE.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C658D7627C0744D003231EE /* PersistenceUPDATE.swift */; };
|
1C658D7827C0744D003231EE /* PersistenceUPDATE.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C658D7627C0744D003231EE /* PersistenceUPDATE.swift */; };
|
||||||
1C683FCA2792281400745862 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C683FC92792281400745862 /* Stats.swift */; };
|
1C683FCA2792281400745862 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C683FC92792281400745862 /* Stats.swift */; };
|
||||||
1C683FCB2792281400745862 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C683FC92792281400745862 /* Stats.swift */; };
|
1C683FCB2792281400745862 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C683FC92792281400745862 /* Stats.swift */; };
|
||||||
|
1C718C7027F611C900A8F9FE /* DaysFilterClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C718C6F27F611C900A8F9FE /* DaysFilterClass.swift */; };
|
||||||
|
1C718C7127F611C900A8F9FE /* DaysFilterClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C718C6F27F611C900A8F9FE /* DaysFilterClass.swift */; };
|
||||||
|
1C718C7327F611E300A8F9FE /* StupidAssCustomWidgetObservableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C718C7227F611E300A8F9FE /* StupidAssCustomWidgetObservableObject.swift */; };
|
||||||
|
1C718C7427F611E300A8F9FE /* StupidAssCustomWidgetObservableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C718C7227F611E300A8F9FE /* StupidAssCustomWidgetObservableObject.swift */; };
|
||||||
1C7352B927DD02760024B5D2 /* ImagePickerGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C7352B827DD02760024B5D2 /* ImagePickerGridView.swift */; };
|
1C7352B927DD02760024B5D2 /* ImagePickerGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C7352B827DD02760024B5D2 /* ImagePickerGridView.swift */; };
|
||||||
1C744F2C278CE15600953A57 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C744F2B278CE15600953A57 /* AppDelegate.swift */; };
|
1C744F2C278CE15600953A57 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C744F2B278CE15600953A57 /* AppDelegate.swift */; };
|
||||||
1C747CC9279F06EB00762CBD /* CloudKitSyncMonitor in Frameworks */ = {isa = PBXBuildFile; productRef = 1C747CC8279F06EB00762CBD /* CloudKitSyncMonitor */; };
|
1C747CC9279F06EB00762CBD /* CloudKitSyncMonitor in Frameworks */ = {isa = PBXBuildFile; productRef = 1C747CC8279F06EB00762CBD /* CloudKitSyncMonitor */; };
|
||||||
@@ -220,6 +224,8 @@
|
|||||||
1C5F4977279C945E0092F1B4 /* UserDefaultsStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsStore.swift; sourceTree = "<group>"; };
|
1C5F4977279C945E0092F1B4 /* UserDefaultsStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsStore.swift; sourceTree = "<group>"; };
|
||||||
1C658D7627C0744D003231EE /* PersistenceUPDATE.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceUPDATE.swift; sourceTree = "<group>"; };
|
1C658D7627C0744D003231EE /* PersistenceUPDATE.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceUPDATE.swift; sourceTree = "<group>"; };
|
||||||
1C683FC92792281400745862 /* Stats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stats.swift; sourceTree = "<group>"; };
|
1C683FC92792281400745862 /* Stats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stats.swift; sourceTree = "<group>"; };
|
||||||
|
1C718C6F27F611C900A8F9FE /* DaysFilterClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DaysFilterClass.swift; sourceTree = "<group>"; };
|
||||||
|
1C718C7227F611E300A8F9FE /* StupidAssCustomWidgetObservableObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StupidAssCustomWidgetObservableObject.swift; sourceTree = "<group>"; };
|
||||||
1C7352B827DD02760024B5D2 /* ImagePickerGridView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagePickerGridView.swift; sourceTree = "<group>"; };
|
1C7352B827DD02760024B5D2 /* ImagePickerGridView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagePickerGridView.swift; sourceTree = "<group>"; };
|
||||||
1C744F2B278CE15600953A57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
1C744F2B278CE15600953A57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
1C76E86D27C882A400ADEE1F /* SharingImageModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharingImageModels.swift; sourceTree = "<group>"; };
|
1C76E86D27C882A400ADEE1F /* SharingImageModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharingImageModels.swift; sourceTree = "<group>"; };
|
||||||
@@ -601,6 +607,8 @@
|
|||||||
1C5F4977279C945E0092F1B4 /* UserDefaultsStore.swift */,
|
1C5F4977279C945E0092F1B4 /* UserDefaultsStore.swift */,
|
||||||
1C95ABC827E6F73A00509BD3 /* Shapes.swift */,
|
1C95ABC827E6F73A00509BD3 /* Shapes.swift */,
|
||||||
1C95ABCB27E6FA7200509BD3 /* DiamondView.swift */,
|
1C95ABCB27E6FA7200509BD3 /* DiamondView.swift */,
|
||||||
|
1C718C6F27F611C900A8F9FE /* DaysFilterClass.swift */,
|
||||||
|
1C718C7227F611E300A8F9FE /* StupidAssCustomWidgetObservableObject.swift */,
|
||||||
);
|
);
|
||||||
path = Models;
|
path = Models;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -824,6 +832,7 @@
|
|||||||
1C2162F227C156E6004353D1 /* CustomizeView.swift in Sources */,
|
1C2162F227C156E6004353D1 /* CustomizeView.swift in Sources */,
|
||||||
1C683FCA2792281400745862 /* Stats.swift in Sources */,
|
1C683FCA2792281400745862 /* Stats.swift in Sources */,
|
||||||
1C76E86E27C882A400ADEE1F /* SharingImageModels.swift in Sources */,
|
1C76E86E27C882A400ADEE1F /* SharingImageModels.swift in Sources */,
|
||||||
|
1C718C7327F611E300A8F9FE /* StupidAssCustomWidgetObservableObject.swift in Sources */,
|
||||||
1CAD603E27A6ECCD00C520BD /* SwitchableView.swift in Sources */,
|
1CAD603E27A6ECCD00C520BD /* SwitchableView.swift in Sources */,
|
||||||
1CD90B76278C8119001C4FEA /* LocalNotification.swift in Sources */,
|
1CD90B76278C8119001C4FEA /* LocalNotification.swift in Sources */,
|
||||||
1C358FB627B0AE15002C83A6 /* AllMoodsTotalTemplate.swift in Sources */,
|
1C358FB627B0AE15002C83A6 /* AllMoodsTotalTemplate.swift in Sources */,
|
||||||
@@ -878,6 +887,7 @@
|
|||||||
1C361F0A27C0356000E832FC /* MonthView.swift in Sources */,
|
1C361F0A27C0356000E832FC /* MonthView.swift in Sources */,
|
||||||
1C361F1427C03C8600E832FC /* OnboardingDataDataManager.swift in Sources */,
|
1C361F1427C03C8600E832FC /* OnboardingDataDataManager.swift in Sources */,
|
||||||
1C358FAD27ADD0C3002C83A6 /* Theme.swift in Sources */,
|
1C358FAD27ADD0C3002C83A6 /* Theme.swift in Sources */,
|
||||||
|
1C718C7027F611C900A8F9FE /* DaysFilterClass.swift in Sources */,
|
||||||
1C95ABCC27E6FA7200509BD3 /* DiamondView.swift in Sources */,
|
1C95ABCC27E6FA7200509BD3 /* DiamondView.swift in Sources */,
|
||||||
1C2162EB27C14EFA004353D1 /* Date+Extensions.swift in Sources */,
|
1C2162EB27C14EFA004353D1 /* Date+Extensions.swift in Sources */,
|
||||||
1C02589C27B9677A00EB91AC /* CreateWidgetView.swift in Sources */,
|
1C02589C27B9677A00EB91AC /* CreateWidgetView.swift in Sources */,
|
||||||
@@ -940,6 +950,7 @@
|
|||||||
1C04489727C2DB9B00D22444 /* BGView.swift in Sources */,
|
1C04489727C2DB9B00D22444 /* BGView.swift in Sources */,
|
||||||
1CB101C827B81CAC00D1C033 /* MoodMetrics.swift in Sources */,
|
1CB101C827B81CAC00D1C033 /* MoodMetrics.swift in Sources */,
|
||||||
1C683FCB2792281400745862 /* Stats.swift in Sources */,
|
1C683FCB2792281400745862 /* Stats.swift in Sources */,
|
||||||
|
1C718C7127F611C900A8F9FE /* DaysFilterClass.swift in Sources */,
|
||||||
1CEC967327B9CA0C00CC8688 /* CustomWidgetModel.swift in Sources */,
|
1CEC967327B9CA0C00CC8688 /* CustomWidgetModel.swift in Sources */,
|
||||||
1C10E25027A1AB220047948B /* OnboardingDay.swift in Sources */,
|
1C10E25027A1AB220047948B /* OnboardingDay.swift in Sources */,
|
||||||
1C04488827C1CD8C00D22444 /* PersonalityPackable.swift in Sources */,
|
1C04488827C1CD8C00D22444 /* PersonalityPackable.swift in Sources */,
|
||||||
@@ -956,6 +967,7 @@
|
|||||||
1C04489627C2DB0100D22444 /* Theme.swift in Sources */,
|
1C04489627C2DB0100D22444 /* Theme.swift in Sources */,
|
||||||
1C361F0F27C03C0E00E832FC /* LocalNotification.swift in Sources */,
|
1C361F0F27C03C0E00E832FC /* LocalNotification.swift in Sources */,
|
||||||
1C10E24E27A1AB110047948B /* UserDefaultsStore.swift in Sources */,
|
1C10E24E27A1AB110047948B /* UserDefaultsStore.swift in Sources */,
|
||||||
|
1C718C7427F611E300A8F9FE /* StupidAssCustomWidgetObservableObject.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|||||||
28
Shared/Models/DaysFilterClass.swift
Normal file
28
Shared/Models/DaysFilterClass.swift
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
//
|
||||||
|
// DaysFilterClass.swift
|
||||||
|
// Feels
|
||||||
|
//
|
||||||
|
// Created by Trey Tartt on 3/31/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
class DaysFilterClass: ObservableObject {
|
||||||
|
@Published public private(set) var currentFilters = [Int]()
|
||||||
|
|
||||||
|
init() {
|
||||||
|
currentFilters = UserDefaultsStore.getDaysFilter()
|
||||||
|
}
|
||||||
|
|
||||||
|
func addFilter(newFilter: Int) {
|
||||||
|
currentFilters.append(newFilter)
|
||||||
|
currentFilters = UserDefaultsStore.saveDaysFilter(days: currentFilters)
|
||||||
|
}
|
||||||
|
|
||||||
|
func removeFilter(filter: Int) {
|
||||||
|
if let index = currentFilters.firstIndex(of: filter) {
|
||||||
|
currentFilters.remove(at: index)
|
||||||
|
}
|
||||||
|
currentFilters = UserDefaultsStore.saveDaysFilter(days: currentFilters)
|
||||||
|
}
|
||||||
|
}
|
||||||
13
Shared/Models/StupidAssCustomWidgetObservableObject.swift
Normal file
13
Shared/Models/StupidAssCustomWidgetObservableObject.swift
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
//
|
||||||
|
// StupidAssCustomWidgetObservableObject.swift
|
||||||
|
// Feels
|
||||||
|
//
|
||||||
|
// Created by Trey Tartt on 3/31/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
class StupidAssCustomWidgetObservableObject: ObservableObject {
|
||||||
|
@Published var fuckingWrapped: CustomWidgetModel? = nil
|
||||||
|
@Published var showFuckingSheet = false
|
||||||
|
}
|
||||||
@@ -24,6 +24,7 @@ class UserDefaultsStore {
|
|||||||
case textColor
|
case textColor
|
||||||
case showNSFW
|
case showNSFW
|
||||||
case shape
|
case shape
|
||||||
|
case daysFilter
|
||||||
|
|
||||||
case contentViewCurrentSelectedHeaderViewBackDays
|
case contentViewCurrentSelectedHeaderViewBackDays
|
||||||
case contentViewHeaderTag
|
case contentViewHeaderTag
|
||||||
@@ -211,5 +212,19 @@ class UserDefaultsStore {
|
|||||||
fatalError("error saving")
|
fatalError("error saving")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@discardableResult
|
||||||
|
static func saveDaysFilter(days: [Int]) -> [Int] {
|
||||||
|
GroupUserDefaults.groupDefaults.set(days, forKey: UserDefaultsStore.Keys.daysFilter.rawValue)
|
||||||
|
return UserDefaultsStore.getDaysFilter()
|
||||||
|
}
|
||||||
|
|
||||||
|
static func getDaysFilter() -> [Int] {
|
||||||
|
if let data = GroupUserDefaults.groupDefaults.object(forKey: UserDefaultsStore.Keys.daysFilter.rawValue) as? [Int] {
|
||||||
|
return data
|
||||||
|
} else {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,12 +31,17 @@ struct CustomizeView: View {
|
|||||||
|
|
||||||
@State var shapeRefreshToggleThing: Bool = false
|
@State var shapeRefreshToggleThing: Bool = false
|
||||||
|
|
||||||
class StupidAssCustomWidgetObservableObject: ObservableObject {
|
|
||||||
@Published var fuckingWrapped: CustomWidgetModel? = nil
|
|
||||||
@Published var showFuckingSheet = false
|
|
||||||
}
|
|
||||||
|
|
||||||
@StateObject private var selectedWidget = StupidAssCustomWidgetObservableObject()
|
@StateObject private var selectedWidget = StupidAssCustomWidgetObservableObject()
|
||||||
|
|
||||||
|
@StateObject private var daysFilter = DaysFilterClass()
|
||||||
|
|
||||||
|
let weekdays = [("Sun", 1),
|
||||||
|
("mon", 2),
|
||||||
|
("tue", 3),
|
||||||
|
("wed", 4),
|
||||||
|
("thur", 5),
|
||||||
|
("fri", 6),
|
||||||
|
("sat", 7)]
|
||||||
|
|
||||||
let iconSets: [(String,String)] = [
|
let iconSets: [(String,String)] = [
|
||||||
("AppIconGoodImage", "AppIconGood"),
|
("AppIconGoodImage", "AppIconGood"),
|
||||||
@@ -64,6 +69,8 @@ struct CustomizeView: View {
|
|||||||
pickTextColor
|
pickTextColor
|
||||||
}
|
}
|
||||||
Divider()
|
Divider()
|
||||||
|
dayFilterView
|
||||||
|
Divider()
|
||||||
shapePicker
|
shapePicker
|
||||||
Divider()
|
Divider()
|
||||||
pickPeronsalityPack
|
pickPeronsalityPack
|
||||||
@@ -513,6 +520,31 @@ struct CustomizeView: View {
|
|||||||
.fixedSize(horizontal: false, vertical: true)
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
|
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var dayFilterView: some View {
|
||||||
|
ZStack {
|
||||||
|
theme.currentTheme.secondaryBGColor
|
||||||
|
HStack {
|
||||||
|
ForEach(weekdays.indices, id: \.self) { dayIdx in
|
||||||
|
let day = String(weekdays[dayIdx].0)
|
||||||
|
let value = weekdays[dayIdx].1
|
||||||
|
|
||||||
|
Button(day.capitalized, action: {
|
||||||
|
if daysFilter.currentFilters.contains(value) {
|
||||||
|
daysFilter.removeFilter(filter: value)
|
||||||
|
} else {
|
||||||
|
daysFilter.addFilter(newFilter: value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.frame(maxWidth: .infinity)
|
||||||
|
.foregroundColor(daysFilter.currentFilters.contains(value) ? .green : .red)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.padding()
|
||||||
|
}
|
||||||
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
|
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct CustomizeView_Previews: PreviewProvider {
|
struct CustomizeView_Previews: PreviewProvider {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import SwiftUI
|
|||||||
import CoreData
|
import CoreData
|
||||||
|
|
||||||
struct YearView: View {
|
struct YearView: View {
|
||||||
let weekdays = [("Sun", 1), ("mon", 2), ("tue", 3), ("wed", 4), ("thur", 5), ("fri", 6), ("sat", 7)]
|
|
||||||
let months = [(0, "J"), (1, "F"), (2,"M"), (3,"A"), (4,"M"), (5, "J"), (6,"J"), (7,"A"), (8,"S"), (9,"O"), (10, "N"), (11,"D")]
|
let months = [(0, "J"), (1, "F"), (2,"M"), (3,"A"), (4,"M"), (5, "J"), (6,"J"), (7,"A"), (8,"S"), (9,"O"), (10, "N"), (11,"D")]
|
||||||
|
|
||||||
@State private var toggle = true
|
@State private var toggle = true
|
||||||
|
|||||||
Reference in New Issue
Block a user