feat: group PID picker by category, consolidate selected PIDs - #209
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.