From 4ef3c4fb49d4dcad7010c1027fe43ddde846e481 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 13 Jun 2021 16:25:39 +0200
Subject: [PATCH] #622 - usage new icon reference for showing account icons

---
 .../java/de/deadlocker8/budgetmaster/icon/Icon.java    |  5 +++++
 src/main/resources/templates/accounts/accounts.ftl     |  2 +-
 .../resources/templates/helpers/customSelectMacros.ftl |  6 +++---
 src/main/resources/templates/helpers/header.ftl        | 10 ++++++++++
 src/main/resources/templates/helpers/imageSelect.ftl   |  1 +
 5 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/icon/Icon.java b/src/main/java/de/deadlocker8/budgetmaster/icon/Icon.java
index 30f68dbd8..588070a94 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/icon/Icon.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/icon/Icon.java
@@ -65,6 +65,11 @@ public class Icon
 		this.builtinIdentifier = builtinIdentifier;
 	}
 
+	public boolean isBuiltinIcon()
+	{
+		return image == null;
+	}
+
 	@Override
 	public boolean equals(Object o)
 	{
diff --git a/src/main/resources/templates/accounts/accounts.ftl b/src/main/resources/templates/accounts/accounts.ftl
index 51d9fa6b3..6f0cab0fb 100644
--- a/src/main/resources/templates/accounts/accounts.ftl
+++ b/src/main/resources/templates/accounts/accounts.ftl
@@ -38,7 +38,7 @@
                                             <i class="fas fa-edit"></i>
                                         </#if>
                                     </td>
-                                    <td><#if account.getIcon()??><img src="${account.getIcon().getBase64EncodedImage()}" class="account-icon"/></#if></td>
+                                    <td><@header.entityIcon entity=account classes="account-icon"/></td>
                                     <td>${account.getName()}</td>
                                     <td>
                                         <a href="<@s.url '/accounts/${account.getID()?c}/edit'/>" class="btn-flat no-padding text-default"><i class="material-icons left">edit</i></a>
diff --git a/src/main/resources/templates/helpers/customSelectMacros.ftl b/src/main/resources/templates/helpers/customSelectMacros.ftl
index a9b939c7e..df54e2e80 100644
--- a/src/main/resources/templates/helpers/customSelectMacros.ftl
+++ b/src/main/resources/templates/helpers/customSelectMacros.ftl
@@ -163,9 +163,9 @@
 </#macro>
 
 <#macro accountIcon account accountName classes="" datasetValue="">
-    <div class="category-circle ${classes} category-square <#if account.getIcon()?? == false>account-square-border</#if>" <#if datasetValue?has_content>data-value="${account.getID()}"</#if>>
-        <#if account.getIcon()??>
-            <img src="${account.getIcon().getBase64EncodedImage()}" class="account-select-icon"/>
+    <div class="category-circle ${classes} category-square <#if account.getIconReference()?? == false>account-square-border</#if>" <#if datasetValue?has_content>data-value="${account.getID()}"</#if>>
+        <#if account.getIconReference()??>
+            <@header.entityIcon entity=account classes="account-select-icon"/>
         <#else>
             <span class="text-blue">
                 ${accountName?capitalize[0]}
diff --git a/src/main/resources/templates/helpers/header.ftl b/src/main/resources/templates/helpers/header.ftl
index aff493fb5..552473091 100644
--- a/src/main/resources/templates/helpers/header.ftl
+++ b/src/main/resources/templates/helpers/header.ftl
@@ -118,4 +118,14 @@
             <#if isDataUrl>data-url="${url}"</#if>>
         <i class="material-icons left <#if !localizationKey?has_content>no-margin</#if> ${iconClasses}">${icon}</i><#if localizationKey?has_content><span>${locale.getString(localizationKey)}</span></#if>
     </a>
+</#macro>
+
+<#macro entityIcon entity classes="">
+    <#if entity.getIconReference()??>
+        <#if entity.getIconReference().isBuiltinIcon()>
+            <i class="${entity.getIconReference().getBuiltinIdentifier()} ${classes}"></i>
+        <#else>
+            <img src="${entity.getIconReference().getImage().getBase64EncodedImage()}" class="${classes}"/>
+        </#if>
+    </#if>
 </#macro>
\ No newline at end of file
diff --git a/src/main/resources/templates/helpers/imageSelect.ftl b/src/main/resources/templates/helpers/imageSelect.ftl
index 37f5d1470..8a6516926 100644
--- a/src/main/resources/templates/helpers/imageSelect.ftl
+++ b/src/main/resources/templates/helpers/imageSelect.ftl
@@ -14,6 +14,7 @@
                 </a>
                 <@header.buttonFlat url='' icon='delete' id='' localizationKey='' classes="no-padding text-default button-remove-icon-from-item" noUrl=true/>
 
+                <#-- TODO: remove first input after templates are migrated too -->
                 <input id="hidden-input-icon" type="hidden" name="icon" value="<#if item.getIcon()??>${item.getIcon().getID()?c}</#if>">
                 <input id="hidden-input-icon-image-id" type="hidden" name="iconImageID" value="<#if item.getIcon()??>${item.getIcon().getID()?c}</#if>">
             </div>
-- 
GitLab