diff --git a/app/src/main/java/com/trianguloy/urlchecker/modules/list/UriPartsModule.java b/app/src/main/java/com/trianguloy/urlchecker/modules/list/UriPartsModule.java index f580f9b..35a0f1c 100644 --- a/app/src/main/java/com/trianguloy/urlchecker/modules/list/UriPartsModule.java +++ b/app/src/main/java/com/trianguloy/urlchecker/modules/list/UriPartsModule.java @@ -17,6 +17,7 @@ import com.trianguloy.urlchecker.modules.DescriptionConfig; import com.trianguloy.urlchecker.url.UrlData; import com.trianguloy.urlchecker.utilities.AndroidUtils; import com.trianguloy.urlchecker.utilities.Inflater; +import com.trianguloy.urlchecker.utilities.JavaUtils; import java.util.ArrayList; import java.util.Collections; @@ -52,6 +53,7 @@ public class UriPartsModule extends AModuleData { class UriPartsDialog extends AModuleDialog { private LinearLayout box; + private final List expandedGroups = new ArrayList<>(); public UriPartsDialog(MainDialog dialog) { super(dialog); @@ -77,7 +79,7 @@ class UriPartsDialog extends AModuleDialog { // domain elements if (uri.getAuthority() != null || uri.getScheme() != null) { - var domain = addGroup("Domain", null); + var domain = addGroup("Domain", -1, null); addPart("scheme", uri.getScheme(), domain, null); addPart("user info", uri.getUserInfo(), domain, null); addPart("host", uri.getHost(), domain, null); @@ -87,7 +89,7 @@ class UriPartsDialog extends AModuleDialog { // paths var pathSegments = uri.getPathSegments(); if (pathSegments.size() > 0) { - var paths = addGroup("Paths (" + pathSegments.size() + ")", uri.buildUpon().path(null)); + var paths = addGroup("Paths", pathSegments.size(), uri.buildUpon().path(null)); for (var i = 0; i < pathSegments.size(); i++) { var pathSegment = pathSegments.get(i); @@ -103,7 +105,7 @@ class UriPartsDialog extends AModuleDialog { // queries var queryParts = getQueryParts(uri); if (queryParts.size() > 0) { - var queries = addGroup("Queries (" + queryParts.size() + ")", uri.buildUpon().query(null)); + var queries = addGroup("Queries", queryParts.size(), uri.buildUpon().query(null)); for (var queryPart : queryParts) { var builder = uri.buildUpon(); builder.query(null); @@ -118,7 +120,7 @@ class UriPartsDialog extends AModuleDialog { // fragment if (uri.getFragment() != null) { - var fragment = addGroup("Fragment", uri.buildUpon().fragment(null)); + var fragment = addGroup("Fragment", -1, uri.buildUpon().fragment(null)); addPart("#", uri.getFragment(), fragment, null); } @@ -126,14 +128,14 @@ class UriPartsDialog extends AModuleDialog { } /** - * Adds a collapsible group, removes it + * Adds a collapsible group */ - private LinearLayout addGroup(String name, Uri.Builder onDelete) { + private LinearLayout addGroup(String name, int size, Uri.Builder onDelete) { var title = Inflater.inflate(R.layout.uri_part, box); title.findViewById(R.id.key).setVisibility(View.GONE); var name_view = title.findViewById(R.id.value); - name_view.setText(name); + name_view.setText(name + (size <= -1 ? "" : " (" + size + ")")); AndroidUtils.setAsClickable(name_view); var delete_view = title.