refactor: move getIcon away from FileTools

fix: use IconResolver in GenericItem
This commit is contained in:
2026-09-15 14:07:35 +02:00
parent f58cfdfabf
commit 004e9579c8
3 changed files with 26 additions and 21 deletions
@@ -5,13 +5,11 @@ import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import eu.konggdev.strikemaps.R;
import eu.konggdev.strikemaps.app.ComponentHolderActivity;
import eu.konggdev.strikemaps.util.file.FileTools;
import eu.konggdev.strikemaps.map.style.document.StyleDocument;
import eu.konggdev.strikemaps.ui.UIComponent;
import eu.konggdev.strikemaps.util.icon.IconResolver;
public class GenericItem implements UIItem {
public String name;
@@ -63,14 +61,14 @@ public class GenericItem implements UIItem {
public GenericItem(StyleDocument style, Runnable onClick, AppCompatActivity activity) {
if (style == null) return;
this.name = style.name;
this.image = style.icon != null ? FileTools.getIcon(style.icon, activity) : null;
this.image = style.icon != null ? IconResolver.getIcon(style.icon, activity) : null;
this.onClick = onClick;
}
public GenericItem(StyleDocument style, Runnable onClick, Runnable onLongClick, AppCompatActivity activity) {
if (style == null) return;
this.name = style.name;
this.image = style.icon != null ? FileTools.getIcon(style.icon, activity) : null;
this.image = style.icon != null ? IconResolver.getIcon(style.icon, activity) : null;
this.onClick = onClick;
this.onLongClick = onLongClick;
}
@@ -7,26 +7,11 @@ import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import android.util.Log;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import androidx.appcompat.app.AppCompatActivity;
//FIXME: Ugly
public final class FileTools {
private static final String TAG = "FileUtils";
public static Bitmap getIcon(String iconLocator, AppCompatActivity activity) {
switch (iconLocator.split("//")[0]) {
//TODO: https
case "assets:":
return BitmapFactory.decodeStream(FileTools.openAssetStream("bundled/icon/" + iconLocator.split("//")[1], activity));
default:
Log.e(TAG, "Unimplemented icon locator space: " + iconLocator);
return null;
}
}
private static final String TAG = "FileTools";
public static String loadStringFromAssetFile(String filePath, AppCompatActivity activity) {
try (InputStream is = activity.getAssets().open(filePath)) {
@@ -0,0 +1,22 @@
package eu.konggdev.strikemaps.util.icon;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import eu.konggdev.strikemaps.util.file.FileTools;
public final class IconResolver {
private static final String TAG = "IconResolver";
public static Bitmap getIcon(String iconLocator, AppCompatActivity activity) {
switch (iconLocator.split("//")[0]) {
//TODO: https
case "assets:":
return BitmapFactory.decodeStream(FileTools.openAssetStream("bundled/icon/" + iconLocator.split("//")[1], activity));
default:
Log.e(TAG, "Unimplemented icon locator space: " + iconLocator);
return null;
}
}
}