Merge pull request #1179 from alexbakker/icon-name

Introduce optional 'name' field for iconpack icons
This commit is contained in:
Michael Schättgen 2023-09-08 00:26:15 +02:00 committed by GitHub
commit 79ade74c0c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 13 deletions

View file

@ -3,6 +3,7 @@ package com.beemdevelopment.aegis.icons;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.beemdevelopment.aegis.util.JsonUtils;
import com.google.common.base.Objects; import com.google.common.base.Objects;
import com.google.common.io.Files; import com.google.common.io.Files;
@ -120,13 +121,15 @@ public class IconPack {
public static class Icon implements Serializable { public static class Icon implements Serializable {
private final String _relFilename; private final String _relFilename;
private final String _name;
private final String _category; private final String _category;
private final List<String> _issuers; private final List<String> _issuers;
private File _file; private File _file;
protected Icon(String filename, String category, List<String> issuers) { protected Icon(String filename, String name, String category, List<String> issuers) {
_relFilename = filename; _relFilename = filename;
_name = name;
_category = category; _category = category;
_issuers = issuers; _issuers = issuers;
} }
@ -149,6 +152,9 @@ public class IconPack {
} }
public String getName() { public String getName() {
if (_name != null) {
return _name;
}
return Files.getNameWithoutExtension(new File(_relFilename).getName()); return Files.getNameWithoutExtension(new File(_relFilename).getName());
} }
@ -169,6 +175,7 @@ public class IconPack {
public static Icon fromJson(JSONObject obj) throws JSONException { public static Icon fromJson(JSONObject obj) throws JSONException {
String filename = obj.getString("filename"); String filename = obj.getString("filename");
String name = JsonUtils.optString(obj, "name");
String category = obj.isNull("category") ? null : obj.getString("category"); String category = obj.isNull("category") ? null : obj.getString("category");
JSONArray array = obj.getJSONArray("issuer"); JSONArray array = obj.getJSONArray("issuer");
@ -178,7 +185,7 @@ public class IconPack {
issuers.add(issuer); issuers.add(issuer);
} }
return new Icon(filename, category, issuers); return new Icon(filename, name, category, issuers);
} }
} }
} }

View file

@ -852,11 +852,12 @@ public class EditEntryActivity extends AegisActivity {
private final File _file; private final File _file;
protected CustomSvgIcon(File file) { protected CustomSvgIcon(File file) {
super(file.getAbsolutePath(), null, null); super(file.getAbsolutePath(), null, null, null);
_file = file; _file = file;
} }
@Nullable @Nullable
@Override
public File getFile() { public File getFile() {
return _file; return _file;
} }

View file

@ -232,16 +232,8 @@ public class IconAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
} }
public static class DummyIcon extends IconPack.Icon { public static class DummyIcon extends IconPack.Icon {
private final String _name;
protected DummyIcon(String name) { protected DummyIcon(String name) {
super(null, null, null); super(name, null, null, null);
_name = name;
}
@Override
public String getName() {
return _name;
} }
@Override @Override

View file

@ -15,11 +15,13 @@ is randomly generated once and stays the same across different versions.
"version": 1, "version": 1,
"icons": [ "icons": [
{ {
"name": "Google",
"filename": "services/Google.png", "filename": "services/Google.png",
"category": "Services", "category": "Services",
"issuer": [ "google" ] "issuer": [ "google" ]
}, },
{ {
"name": "Blizzard",
"filename": "services/Blizzard.png", "filename": "services/Blizzard.png",
"category": "Gaming", "category": "Gaming",
"issuer": [ "blizzard", "battle.net" ] "issuer": [ "blizzard", "battle.net" ]
@ -32,7 +34,7 @@ Every icon definition contains the filename of the icon file, relative to the
root of the .ZIP archive. Icon definitions also have a list of strings that the root of the .ZIP archive. Icon definitions also have a list of strings that the
Issuer field in Aegis is matched against for automatic selection of an icon for Issuer field in Aegis is matched against for automatic selection of an icon for
new entries. Matching is done in a case-insensitive manner. There's also a new entries. Matching is done in a case-insensitive manner. There's also a
category field. category field. Optionally, icons can also have a name.
The following image formats are supported, in order of preference: The following image formats are supported, in order of preference: