From f41b1866a6f93b8f887ada196f07b5e6697bb615 Mon Sep 17 00:00:00 2001 From: Trey t Date: Sat, 5 Mar 2022 12:10:03 -0600 Subject: [PATCH] create random icons and save to documents dir --- FeelsWidget/FeelsWidget.swift | 3 +- Shared/views/CustomIcon/IconView.swift | 33 ++++++++++------ Shared/views/CustomIcon/IconViewModel.swift | 36 ++++++++++------- Shared/views/SettingsView/SettingsView.swift | 41 +++++++++++++++++++- 4 files changed, 85 insertions(+), 28 deletions(-) diff --git a/FeelsWidget/FeelsWidget.swift b/FeelsWidget/FeelsWidget.swift index 0084fdc..507ab01 100644 --- a/FeelsWidget/FeelsWidget.swift +++ b/FeelsWidget/FeelsWidget.swift @@ -267,7 +267,8 @@ struct SmallGraphicWidgetView: View { IconView(iconViewModel: IconViewModel(backgroundImage: first.graphic, bgColor: first.color, bgOverlayColor: first.secondaryColor, - centerImage: first.graphic)) + centerImage: first.graphic, + innerColor: first.color)) } else { IconView(iconViewModel: IconViewModel.great) } diff --git a/Shared/views/CustomIcon/IconView.swift b/Shared/views/CustomIcon/IconView.swift index b0003bc..be1af86 100644 --- a/Shared/views/CustomIcon/IconView.swift +++ b/Shared/views/CustomIcon/IconView.swift @@ -50,7 +50,16 @@ struct IconView: View { Circle() .strokeBorder(iconViewModel.bgColor, lineWidth: geo.size.width * 0.045) - .background(Circle().fill(iconViewModel.bgColor)) + .background(Circle().fill(.clear)) + .frame(width: geo.size.width*facePercSize, + height: geo.size.height*facePercSize, + alignment: .center) + .alignmentGuide(.top, computeValue: { _ in + return geo.size.width/2 + }) + + Circle() + .fill(iconViewModel.innerColor) .frame(width: geo.size.width*facePercSize, height: geo.size.height*facePercSize, alignment: .center) @@ -82,17 +91,17 @@ struct IconView_Previews: PreviewProvider { IconView(iconViewModel: IconViewModel.great) .frame(width: 256, height: 256, alignment: .center) -// IconView(iconViewModel: IconViewModel.good, isPreview: true) -// .frame(width: 256, height: 256, alignment: .center) -// -// IconView(iconViewModel: IconViewModel.average, isPreview: true) -// .frame(width: 256, height: 256, alignment: .center) -// -// IconView(iconViewModel: IconViewModel.bad, isPreview: true) -// .frame(width: 256, height: 256, alignment: .center) -// -// IconView(iconViewModel: IconViewModel.horrible, isPreview: true) -// .frame(width: 256, height: 256, alignment: .center) + IconView(iconViewModel: IconViewModel.good) + .frame(width: 256, height: 256, alignment: .center) + + IconView(iconViewModel: IconViewModel.average) + .frame(width: 256, height: 256, alignment: .center) + + IconView(iconViewModel: IconViewModel.bad) + .frame(width: 256, height: 256, alignment: .center) + + IconView(iconViewModel: IconViewModel.horrible) + .frame(width: 256, height: 256, alignment: .center) // // IconView(iconViewModel: IconViewModel(backgroundImage: EmojiMoodImages.icon(forMood: .horrible), // bgColor: MoodTints.Neon.color(forMood: .horrible), diff --git a/Shared/views/CustomIcon/IconViewModel.swift b/Shared/views/CustomIcon/IconViewModel.swift index dc07bbe..2fca0ad 100644 --- a/Shared/views/CustomIcon/IconViewModel.swift +++ b/Shared/views/CustomIcon/IconViewModel.swift @@ -11,34 +11,40 @@ class IconViewModel: ObservableObject { static let numberOfBGItems = 109 static let great = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .great), - bgColor: Color(hex: "31d158"), - bgOverlayColor: Color(hex: "208939"), - centerImage: MoodImages.FontAwesome.icon(forMood: .great)) + bgColor: Color(hex: "31d158"), + bgOverlayColor: Color(hex: "208939"), + centerImage: MoodImages.FontAwesome.icon(forMood: .great), + innerColor: Color(hex: "31d158")) static let good = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .good), - bgColor: Color(hex: "ffd709"), - bgOverlayColor: Color(hex: "9d8405"), - centerImage: MoodImages.FontAwesome.icon(forMood: .good)) + bgColor: Color(hex: "ffd709"), + bgOverlayColor: Color(hex: "9d8405"), + centerImage: MoodImages.FontAwesome.icon(forMood: .good), + innerColor: Color(hex: "ffd709")) static let average = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .average), - bgColor: Color(hex: "0b84ff"), - bgOverlayColor: Color(hex: "074f9a"), - centerImage: MoodImages.FontAwesome.icon(forMood: .average)) + bgColor: Color(hex: "0b84ff"), + bgOverlayColor: Color(hex: "074f9a"), + centerImage: MoodImages.FontAwesome.icon(forMood: .average), + innerColor: Color(hex: "0b84ff")) static let bad = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .bad), bgColor: Color(hex: "ff9f0b"), bgOverlayColor: Color(hex: "a06407"), - centerImage: MoodImages.FontAwesome.icon(forMood: .bad)) + centerImage: MoodImages.FontAwesome.icon(forMood: .bad), + innerColor: Color(hex: "ff9f0b")) static let horrible = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .horrible), - bgColor: Color(hex: "fe5257"), - bgOverlayColor: Color(hex: "a92b26"), - centerImage: MoodImages.FontAwesome.icon(forMood: .horrible)) + bgColor: Color(hex: "fe5257"), + bgOverlayColor: Color(hex: "a92b26"), + centerImage: MoodImages.FontAwesome.icon(forMood: .horrible), + innerColor: Color(hex: "fe5257")) init(backgroundImage: Image, bgColor: Color, bgOverlayColor: Color, - centerImage: Image + centerImage: Image, + innerColor: Color ) { var blah = [(Image, UUID)]() @@ -50,12 +56,14 @@ class IconViewModel: ObservableObject { self.bgColor = bgColor self.bgOverlayColor = bgOverlayColor self.centerImage = centerImage + self.innerColor = innerColor } @Published var background: [(Image, UUID)] @Published var bgColor: Color @Published var bgOverlayColor: Color @Published var centerImage: Image + @Published var innerColor: Color } enum CustomIconBackGroundOptions: String, CaseIterable, Codable { diff --git a/Shared/views/SettingsView/SettingsView.swift b/Shared/views/SettingsView/SettingsView.swift index 6373bf8..6c7a26d 100644 --- a/Shared/views/SettingsView/SettingsView.swift +++ b/Shared/views/SettingsView/SettingsView.swift @@ -33,12 +33,12 @@ struct SettingsView: View { showOnboardingButton whyBackgroundMode specialThanksCell - } Group { addTestDataCell clearDB + randomIcons if useCloudKit { cloudKitStatus @@ -220,6 +220,45 @@ struct SettingsView: View { .fixedSize(horizontal: false, vertical: true) .cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight]) } + + private var randomIcons: some View { + ZStack { + theme.currentTheme.secondaryBGColor + Button(action: { + var iconViews = [UIImage]() + for _ in 0...300 { + iconViews.append( + IconView(iconViewModel: IconViewModel( + backgroundImage: MoodImages.FontAwesome.icon(forMood: .great), + bgColor: Color.random(), + bgOverlayColor: Color.random(), + centerImage: MoodImages.FontAwesome.icon(forMood: .great), + innerColor: Color.random()) + ).asImage(size: CGSize(width: 1024, height: 1024))) + } + + for (idx, image) in iconViews.enumerated() { + let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) + var path = paths[0].appendingPathComponent("icons").path + path = path.appending("\(idx).jpg") + let url = URL(fileURLWithPath: path) + do { + try image.jpegData(compressionQuality: 1.0)?.write(to: url, options: .atomic) + print(url) + } catch { + print(error.localizedDescription) + } + } + + }, label: { + Text("Create random icons") + .foregroundColor(theme.currentTheme.labelColor) + }) + .padding() + } + .fixedSize(horizontal: false, vertical: true) + .cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight]) + } } struct SettingsView_Previews: PreviewProvider {