From eaa8310ef7425ba8182e2e6a51721e24c3bc7adf Mon Sep 17 00:00:00 2001 From: chrisdebian Date: Thu, 23 Jul 2026 19:57:31 +0100 Subject: [PATCH 1/2] feat: replace Holo ic_menu_* icons with Material vectors (#104) Phase 2 item 3 of the GUI modernisation (fr3ts0n approved on #104, 2026-07-15). Replaces all 12 remaining @android:drawable/ic_menu_* references across main.xml, obd_services.xml, chart.xml, settings.xml, obd_item.xml, and DfcItemAdapter.java's two programmatic icon swaps. Found and fixed a real bug along the way: the 4 existing custom Material icons (ic_chart, ic_speedometer, ic_headup, ic_filter) hardcoded fillColor="#A0FFFFFF" (translucent white), invisible against the app's light-theme white background. All new and existing icons now use a themeable @color/icon_tint resolving ?attr/colorControlNormal, which requires the themeable-color-state-list support added in API 23 - matching this module's minSdkVersion exactly. Verified on-device (Pixel 10) in both light and dark mode. The plugin submodule gets its own copy of the same two icons it needs, since it's built independently and can't reference the app module's drawables. Co-Authored-By: Claude Sonnet 5 --- .../ecu/gui/androbd/DfcItemAdapter.java | 4 ++-- androbd/src/main/res/color/icon_tint.xml | 4 ++++ androbd/src/main/res/drawable/ic_build.xml | 9 +++++++++ androbd/src/main/res/drawable/ic_camera.xml | 9 +++++++++ androbd/src/main/res/drawable/ic_chart.xml | 2 +- androbd/src/main/res/drawable/ic_code.xml | 9 +++++++++ androbd/src/main/res/drawable/ic_delete.xml | 9 +++++++++ androbd/src/main/res/drawable/ic_filter.xml | 2 +- androbd/src/main/res/drawable/ic_headup.xml | 2 +- androbd/src/main/res/drawable/ic_history.xml | 9 +++++++++ androbd/src/main/res/drawable/ic_info.xml | 9 +++++++++ androbd/src/main/res/drawable/ic_more.xml | 9 +++++++++ androbd/src/main/res/drawable/ic_save.xml | 9 +++++++++ androbd/src/main/res/drawable/ic_settings.xml | 9 +++++++++ androbd/src/main/res/drawable/ic_share.xml | 9 +++++++++ .../src/main/res/drawable/ic_slideshow.xml | 9 +++++++++ .../src/main/res/drawable/ic_speedometer.xml | 2 +- .../src/main/res/drawable/ic_visibility.xml | 9 +++++++++ androbd/src/main/res/layout/obd_item.xml | 2 +- androbd/src/main/res/menu/chart.xml | 4 ++-- androbd/src/main/res/menu/main.xml | 10 +++++----- androbd/src/main/res/menu/obd_services.xml | 12 +++++------ androbd/src/main/res/xml/settings.xml | 20 +++++++++---------- plugin | 2 +- 24 files changed, 143 insertions(+), 31 deletions(-) create mode 100644 androbd/src/main/res/color/icon_tint.xml create mode 100644 androbd/src/main/res/drawable/ic_build.xml create mode 100644 androbd/src/main/res/drawable/ic_camera.xml create mode 100644 androbd/src/main/res/drawable/ic_code.xml create mode 100644 androbd/src/main/res/drawable/ic_delete.xml create mode 100644 androbd/src/main/res/drawable/ic_history.xml create mode 100644 androbd/src/main/res/drawable/ic_info.xml create mode 100644 androbd/src/main/res/drawable/ic_more.xml create mode 100644 androbd/src/main/res/drawable/ic_save.xml create mode 100644 androbd/src/main/res/drawable/ic_settings.xml create mode 100644 androbd/src/main/res/drawable/ic_share.xml create mode 100644 androbd/src/main/res/drawable/ic_slideshow.xml create mode 100644 androbd/src/main/res/drawable/ic_visibility.xml diff --git a/androbd/src/main/java/com/fr3ts0n/ecu/gui/androbd/DfcItemAdapter.java b/androbd/src/main/java/com/fr3ts0n/ecu/gui/androbd/DfcItemAdapter.java index 44536217..9981c979 100644 --- a/androbd/src/main/java/com/fr3ts0n/ecu/gui/androbd/DfcItemAdapter.java +++ b/androbd/src/main/java/com/fr3ts0n/ecu/gui/androbd/DfcItemAdapter.java @@ -66,7 +66,7 @@ public class DfcItemAdapter extends ObdItemAdapter // Show icon ImageView ivIcon = v.findViewById(R.id.obd_icon); - ivIcon.setImageResource(android.R.drawable.ic_menu_myplaces); + ivIcon.setImageResource(R.drawable.ic_code); try { // Show icon based on code status (pending/permanent/normal) @@ -74,7 +74,7 @@ public class DfcItemAdapter extends ObdItemAdapter switch(svc) { case ObdProt.OBD_SVC_PENDINGCODES: - ivIcon.setImageResource(android.R.drawable.ic_menu_recent_history); + ivIcon.setImageResource(R.drawable.ic_history); break; case ObdProt.OBD_SVC_PERMACODES: diff --git a/androbd/src/main/res/color/icon_tint.xml b/androbd/src/main/res/color/icon_tint.xml new file mode 100644 index 00000000..bb9118e4 --- /dev/null +++ b/androbd/src/main/res/color/icon_tint.xml @@ -0,0 +1,4 @@ + + + + diff --git a/androbd/src/main/res/drawable/ic_build.xml b/androbd/src/main/res/drawable/ic_build.xml new file mode 100644 index 00000000..a31f4fa2 --- /dev/null +++ b/androbd/src/main/res/drawable/ic_build.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_camera.xml b/androbd/src/main/res/drawable/ic_camera.xml new file mode 100644 index 00000000..7aab8b32 --- /dev/null +++ b/androbd/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_chart.xml b/androbd/src/main/res/drawable/ic_chart.xml index da2aeb18..a95e1512 100644 --- a/androbd/src/main/res/drawable/ic_chart.xml +++ b/androbd/src/main/res/drawable/ic_chart.xml @@ -4,6 +4,6 @@ android:viewportHeight="24" android:viewportWidth="24"> \ No newline at end of file diff --git a/androbd/src/main/res/drawable/ic_code.xml b/androbd/src/main/res/drawable/ic_code.xml new file mode 100644 index 00000000..f3885fb2 --- /dev/null +++ b/androbd/src/main/res/drawable/ic_code.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_delete.xml b/androbd/src/main/res/drawable/ic_delete.xml new file mode 100644 index 00000000..8dba596e --- /dev/null +++ b/androbd/src/main/res/drawable/ic_delete.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_filter.xml b/androbd/src/main/res/drawable/ic_filter.xml index 93881a8e..39655c6a 100644 --- a/androbd/src/main/res/drawable/ic_filter.xml +++ b/androbd/src/main/res/drawable/ic_filter.xml @@ -4,6 +4,6 @@ android:viewportHeight="24" android:viewportWidth="24"> \ No newline at end of file diff --git a/androbd/src/main/res/drawable/ic_headup.xml b/androbd/src/main/res/drawable/ic_headup.xml index 7ae6742d..293a1d07 100644 --- a/androbd/src/main/res/drawable/ic_headup.xml +++ b/androbd/src/main/res/drawable/ic_headup.xml @@ -4,6 +4,6 @@ android:viewportHeight="24" android:viewportWidth="24"> \ No newline at end of file diff --git a/androbd/src/main/res/drawable/ic_history.xml b/androbd/src/main/res/drawable/ic_history.xml new file mode 100644 index 00000000..dc99b706 --- /dev/null +++ b/androbd/src/main/res/drawable/ic_history.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_info.xml b/androbd/src/main/res/drawable/ic_info.xml new file mode 100644 index 00000000..a19caa45 --- /dev/null +++ b/androbd/src/main/res/drawable/ic_info.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_more.xml b/androbd/src/main/res/drawable/ic_more.xml new file mode 100644 index 00000000..45130ed8 --- /dev/null +++ b/androbd/src/main/res/drawable/ic_more.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_save.xml b/androbd/src/main/res/drawable/ic_save.xml new file mode 100644 index 00000000..760b64fd --- /dev/null +++ b/androbd/src/main/res/drawable/ic_save.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_settings.xml b/androbd/src/main/res/drawable/ic_settings.xml new file mode 100644 index 00000000..a2b87a39 --- /dev/null +++ b/androbd/src/main/res/drawable/ic_settings.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_share.xml b/androbd/src/main/res/drawable/ic_share.xml new file mode 100644 index 00000000..d2b02a7b --- /dev/null +++ b/androbd/src/main/res/drawable/ic_share.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_slideshow.xml b/androbd/src/main/res/drawable/ic_slideshow.xml new file mode 100644 index 00000000..4461d973 --- /dev/null +++ b/androbd/src/main/res/drawable/ic_slideshow.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/drawable/ic_speedometer.xml b/androbd/src/main/res/drawable/ic_speedometer.xml index 191cd40b..205750f2 100644 --- a/androbd/src/main/res/drawable/ic_speedometer.xml +++ b/androbd/src/main/res/drawable/ic_speedometer.xml @@ -4,6 +4,6 @@ android:viewportHeight="24" android:viewportWidth="24"> \ No newline at end of file diff --git a/androbd/src/main/res/drawable/ic_visibility.xml b/androbd/src/main/res/drawable/ic_visibility.xml new file mode 100644 index 00000000..84c45774 --- /dev/null +++ b/androbd/src/main/res/drawable/ic_visibility.xml @@ -0,0 +1,9 @@ + + + diff --git a/androbd/src/main/res/layout/obd_item.xml b/androbd/src/main/res/layout/obd_item.xml index 648b86a0..886e2990 100644 --- a/androbd/src/main/res/layout/obd_item.xml +++ b/androbd/src/main/res/layout/obd_item.xml @@ -44,7 +44,7 @@ android:layout_width="24dp" android:layout_height="24dp" android:visibility="gone" - android:src="@android:drawable/ic_menu_slideshow" /> + android:src="@drawable/ic_code" /> diff --git a/androbd/src/main/res/menu/chart.xml b/androbd/src/main/res/menu/chart.xml index 34696cdc..598c9145 100644 --- a/androbd/src/main/res/menu/chart.xml +++ b/androbd/src/main/res/menu/chart.xml @@ -7,10 +7,10 @@ android:id="@+id/snapshot" android:title="@string/snapshot" android:showAsAction="ifRoom" - android:icon="@android:drawable/ic_menu_camera"/> + android:icon="@drawable/ic_camera"/> + android:icon="@drawable/ic_share"/> \ No newline at end of file diff --git a/androbd/src/main/res/menu/main.xml b/androbd/src/main/res/menu/main.xml index 099b99e9..7cc09745 100644 --- a/androbd/src/main/res/menu/main.xml +++ b/androbd/src/main/res/menu/main.xml @@ -28,7 +28,7 @@ diff --git a/androbd/src/main/res/menu/obd_services.xml b/androbd/src/main/res/menu/obd_services.xml index d722426a..8c5663b1 100644 --- a/androbd/src/main/res/menu/obd_services.xml +++ b/androbd/src/main/res/menu/obd_services.xml @@ -21,34 +21,34 @@ + android:icon="@drawable/ic_info"/> + android:icon="@drawable/ic_visibility"/> + android:icon="@drawable/ic_history"/> + android:icon="@drawable/ic_slideshow"/> + android:icon="@drawable/ic_code"/> + android:icon="@drawable/ic_delete"/> \ No newline at end of file diff --git a/androbd/src/main/res/xml/settings.xml b/androbd/src/main/res/xml/settings.xml index 79be88ce..98ae198a 100644 --- a/androbd/src/main/res/xml/settings.xml +++ b/androbd/src/main/res/xml/settings.xml @@ -1,11 +1,11 @@ @@ -94,7 +94,7 @@ @@ -216,7 +216,7 @@ @@ -258,7 +258,7 @@ @@ -327,12 +327,12 @@ @@ -341,7 +341,7 @@ android:data="@string/url_app_mainpage"/> @@ -350,7 +350,7 @@ android:data="@string/url_app_releases"/> @@ -359,7 +359,7 @@ android:data="https://github.com/anaufalm"/> Date: Thu, 23 Jul 2026 20:11:51 +0100 Subject: [PATCH 2/2] fix: bump plugin submodule to pick up colorControlNormal fix CI on PR #347 failed: the plugin module has no AppCompat/Material dependency, so its own ?attr/colorControlNormal reference couldn't resolve during verifyReleaseResources. Fixed upstream on the AndrOBD-libplugin PR (uses the platform ?android:attr/colorControlNormal instead, which needs no such dependency); this bumps the pointer to pick it up. Reproduced the exact CI failure locally with ./gradlew build and confirmed it now passes clean. Co-Authored-By: Claude Sonnet 5 --- plugin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin b/plugin index bbdd583e..594d36e5 160000 --- a/plugin +++ b/plugin @@ -1 +1 @@ -Subproject commit bbdd583e4ce8e720faa0717dcabfe72e2b4b3f07 +Subproject commit 594d36e5f04baa9d2abc5b7eba9b67eab93cd247