add filter days to cusomize page
This commit is contained in:
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 showNSFW
|
||||
case shape
|
||||
case daysFilter
|
||||
|
||||
case contentViewCurrentSelectedHeaderViewBackDays
|
||||
case contentViewHeaderTag
|
||||
@@ -211,5 +212,19 @@ class UserDefaultsStore {
|
||||
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
|
||||
|
||||
class StupidAssCustomWidgetObservableObject: ObservableObject {
|
||||
@Published var fuckingWrapped: CustomWidgetModel? = nil
|
||||
@Published var showFuckingSheet = false
|
||||
}
|
||||
|
||||
@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)] = [
|
||||
("AppIconGoodImage", "AppIconGood"),
|
||||
@@ -64,6 +69,8 @@ struct CustomizeView: View {
|
||||
pickTextColor
|
||||
}
|
||||
Divider()
|
||||
dayFilterView
|
||||
Divider()
|
||||
shapePicker
|
||||
Divider()
|
||||
pickPeronsalityPack
|
||||
@@ -513,6 +520,31 @@ struct CustomizeView: View {
|
||||
.fixedSize(horizontal: false, vertical: true)
|
||||
.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 {
|
||||
|
||||
@@ -9,7 +9,6 @@ import SwiftUI
|
||||
import CoreData
|
||||
|
||||
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")]
|
||||
|
||||
@State private var toggle = true
|
||||
|
||||
Reference in New Issue
Block a user