Skip to content

feat: group PID picker by category, consolidate selected PIDs - #209

Merged
tzebrowski merged 10 commits into
masterfrom
feat/pid-category-grouping
Aug 15, 2026
Merged

feat: group PID picker by category, consolidate selected PIDs#209
tzebrowski merged 10 commits into
masterfrom
feat/pid-category-grouping

Conversation

@tzebrowski

Copy link
Copy Markdown
Owner

Ports the same keyword-based signal grouping used in the web log viewer's sidebar to the Android PID picker. Unchecked PIDs are grouped under category headers (Basics, Ignition, Fuel/AFR, Boost, etc.) with a tri-state checkbox to select a whole category at once; all checked PIDs are collected under a single "Selected" header at the top so they read as one group while keeping their custom drag order. Category headers also got a bigger font and PID cards a tighter layout.

tzebrowski and others added 10 commits August 15, 2026 08:12
Ports the same keyword-based signal grouping used in the web log
viewer's sidebar to the Android PID picker. Unchecked PIDs are grouped
under category headers (Basics, Ignition, Fuel/AFR, Boost, etc.) with
a tri-state checkbox to select a whole category at once; all checked
PIDs are collected under a single "Selected" header at the top so they
read as one group while keeping their custom drag order. Category
headers also got a bigger font and PID cards a tighter layout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a small floating index along the left edge of the PID picker
that lists every group currently in the list (Selected + each visible
category as a 3-letter marker, e.g. BST for Boost). Tapping a marker
scrolls the list straight to that group's header, so picking a signal
out of a long PID catalog no longer requires manually scrolling to
find it. Rebuilt whenever the visible group set changes (search, etc)
and hidden entirely when there's nothing to jump between.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The index bar was drawn as a floating overlay on top of the
RecyclerView, covering the checkboxes/text of whatever PID cards sat
underneath it. It now pushes the list to the right instead (dynamic
start margin, applied only while the bar has something to show), so
it sits in its own space rather than on top of the list content.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The horizontal 3-letter abbreviations were too short vertically to
tap reliably in a narrow column. Markers are now square 40dp boxes
with the label rotated -90 degrees to read vertically, giving each
one a comfortable touch target instead of a thin single-line row.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Stop reserving layout space for the index bar -- the list now keeps
its full width matching the search bar above it instead of being
squeezed to make room. The bar goes back to floating over the list,
but thin (18dp) and fully transparent so it sits in the sliver of
card surface before the checkbox rather than visibly overlapping
content. Vertical text is now built via a FrameLayout wrapping a
rotated TextView with swapped pre-rotation dimensions, centered so
the rotated glyphs stay aligned inside their own marker.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Being a transparent floating overlay still meant its text bled onto
the card surface underneath, since the only truly free space (the
card's own ~8dp margin) is narrower than a legible vertical marker.
The toolbar (search bar), list, and button row now all get pushed
right by the same amount while the index bar is showing, giving it
its own dedicated column instead of drawing over content -- the three
stay aligned with each other either way (only the RecyclerView needed
an 8dp-smaller reserve, since its PID cards already carry their own
built-in margin that the toolbar/button cards don't).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Give the dialog panel a solid background instead of the dialog
window's default transparent one -- with nothing opaque behind the
gaps around/between cards, the Settings screen underneath was
bleeding through, and the bigger bold category headers added this
session made that collide badly with background text (e.g. a ghost
letter overlapping a card title). Also gives each category header row
its own opaque backdrop directly, belt-and-suspenders.

Also stop computing the RecyclerView's alignment to the toolbar/button
cards from theoretical dp math -- this dialog's window is
wrap-content-sized around its widest child, which doesn't leave the
plain end-margin gap dp arithmetic assumes, so the PID cards (which
carry their own 8dp margin, unlike the toolbar/button cards which get
theirs directly from the layout) kept landing a few dp short of the
toolbar's actual edges. Now reads the toolbar's real rendered position
after layout and derives the RecyclerView's margins from that.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The one-shot post-layout callback for aligning the RecyclerView to
the toolbar's edges was racing against the several layout passes this
dialog goes through as content loads asynchronously, and could settle
on a stale (pre-margin-change) position -- observed as the list
falling back to its unreserved margin despite the toolbar correctly
reserving space for the index bar. Replaced with a persistent
OnGlobalLayoutListener that re-syncs on every layout pass and
self-corrects regardless of ordering.

Also fixes index marker text being unreadable (white-on-white) in
light theme, now using the theme-aware dialog_text_primary color
instead of hardcoded white -- only worked before by coincidence since
every dialog we'd tested happened to be dark-themed.

Verified on-device (both light and dark themed profiles): opaque
background with no bleed-through, list/toolbar/button row pixel-
aligned, index bar readable and non-overlapping in both themes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Per explicit request: back to a transparent dialog window. This
brings back the Settings-screen-bleed-through behind gaps/header
rows, traded off intentionally in favor of not having a solid dark
panel behind the list.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@tzebrowski
tzebrowski merged commit a5db7bc into master Aug 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant