From a5d621cc42c8364a2ac595ea0f910a03fb7b1bbc Mon Sep 17 00:00:00 2001
From: cpilaszewicz <cezipil@fu-berlin.de>
Date: Tue, 24 Mar 2020 16:44:30 +0100
Subject: [PATCH] Display the actual state of the badges

---
 enzevalos_iphone/BadgeCaseView.swift     |  9 +++++----
 enzevalos_iphone/BadgeProgressView.swift | 16 +++++++---------
 2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/enzevalos_iphone/BadgeCaseView.swift b/enzevalos_iphone/BadgeCaseView.swift
index 68de1152..b2627040 100644
--- a/enzevalos_iphone/BadgeCaseView.swift
+++ b/enzevalos_iphone/BadgeCaseView.swift
@@ -13,7 +13,7 @@ struct BadgeCaseView: View {
         UITableView.appearance().separatorStyle = .none
     }
     
-    let badges: [Badge] = GamificationData.sharedInstance.badges.map { Badge(type: $0.type, description: $0.displayName, imageOn: $0.onName, imageOff: $0.offName) }
+    let badges: [Badge] = GamificationData.sharedInstance.badges.map { Badge(type: $0.type, description: $0.displayName, imageOn: $0.onName, imageOff: $0.offName, isActive: $0.isAchieved()) }
     
     var body: some View {
         NavigationView {
@@ -23,7 +23,7 @@ struct BadgeCaseView: View {
                 List {
                     ForEach(badges) { badge in
                         NavigationLink(destination: BadgeProgressView(badge: badge)) {
-                            BadgeItem(badgeType: badge.type, badgeImageSrcOn: badge.imageOn, badgeImageSrcOff: badge.imageOff, badgeTitle: badge.description)
+                            BadgeItem(badgeType: badge.type, badgeImageSrcOn: badge.imageOn, badgeImageSrcOff: badge.imageOff, badgeTitle: badge.description, isActive: badge.isActive)
                         }
                     }
                 }
@@ -49,6 +49,7 @@ struct Badge: Identifiable {
     var description: String
     var imageOn: String
     var imageOff: String
+    var isActive: Bool
 }
 
 struct BadgeItem: View {
@@ -57,7 +58,7 @@ struct BadgeItem: View {
     let badgeImageSrcOn: String
     let badgeImageSrcOff: String
     let badgeTitle: String
-    @State var isActive: Bool = false
+    var isActive: Bool
     
     init(badgeType: BadgeType, badgeImageSrcOn: String, badgeImageSrcOff: String, badgeTitle: String, isActive: Bool = false) {
         
@@ -70,7 +71,7 @@ struct BadgeItem: View {
     
     var body: some View {
         HStack {
-            Image(self.isActive ? self.badgeImageSrcOn : self.badgeImageSrcOff)
+            Image(isActive ? badgeImageSrcOn : badgeImageSrcOff)
                 .resizable()
                 .scaledToFit()
                 .frame(width: 40,height: 40)
diff --git a/enzevalos_iphone/BadgeProgressView.swift b/enzevalos_iphone/BadgeProgressView.swift
index 676d915b..2593778b 100644
--- a/enzevalos_iphone/BadgeProgressView.swift
+++ b/enzevalos_iphone/BadgeProgressView.swift
@@ -17,8 +17,8 @@ struct BadgeProgressView: View {
             titleBar
             Divider()
             List {
-                ForEach(GamificationData.sharedInstance.subBadgesforBadge(badge: badge.type).map { Badge(type: $0.type, description: $0.displayName, imageOn: $0.onName, imageOff: $0.offName) }) { subBadge in
-                    Quest(isLast: false, isDone: false, description: subBadge.description, imageOn: subBadge.imageOn, imageOff: subBadge.imageOff)
+                ForEach(GamificationData.sharedInstance.subBadgesforBadge(badge: badge.type).map { Badge(type: $0.type, description: $0.displayName, imageOn: $0.onName, imageOff: $0.offName, isActive: $0.isAchieved()) }) { subBadge in
+                    Quest(isQuestCompleted: subBadge.isActive, description: subBadge.description, imageOn: subBadge.imageOn, imageOff: subBadge.imageOff)
                 }
             }
         }
@@ -41,15 +41,13 @@ struct BadgeProgressView: View {
 
 
 struct Quest: View {
-    let isLast: Bool
-    let isDone: Bool
+    let isQuestCompleted: Bool
     let description: String
     let imageOn: String
     let imageOff: String
     
-    init(isLast: Bool, isDone: Bool, description: String, imageOn: String, imageOff: String) {
-        self.isLast = isLast
-        self.isDone = isDone
+    init(isQuestCompleted: Bool, description: String, imageOn: String, imageOff: String) {
+        self.isQuestCompleted = isQuestCompleted
         self.description = description
         self.imageOn = imageOn
         self.imageOff = imageOff
@@ -57,7 +55,7 @@ struct Quest: View {
     
     var body: some View {
         HStack {
-            Image(isDone ? imageOn : imageOff)
+            Image(isQuestCompleted ? imageOn : imageOff)
                 .resizable()
                 .scaledToFit()
                 .frame(width: 40,height: 40)
@@ -69,6 +67,6 @@ struct Quest: View {
 
 struct BadgeProgressView_Previews: PreviewProvider {
     static var previews: some View {
-        BadgeProgressView(badge: Badge(type: .MailMaster, description: NSLocalizedString("Mailmaster", comment:"Mailmaster badge" ), imageOn: "verschluesseltOn", imageOff: "verschluesseltOff"))
+        BadgeProgressView(badge: Badge(type: .MailMaster, description: NSLocalizedString("Mailmaster", comment:"Mailmaster badge" ), imageOn: "verschluesseltOn", imageOff: "verschluesseltOff", isActive: true))
     }
 }
-- 
GitLab