mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-04-21 06:19:12 +00:00
Introduce optional 'name' field for iconpack icons
This introduces a new (optional) 'name' field for iconpack icons. It will be used to describe the icon in the icon selection dialog. If it is not present, the name of the icon will be derived from the filename, like before. Using this new field allows usage of more exotic characters in the icon name that are not allowed in a filename.
This commit is contained in:
parent
27e56d60b5
commit
9b3e7136bd
4 changed files with 15 additions and 13 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue