Refactor Quick Settings UI - #530
Open
Kimblebee wants to merge 95 commits into
Open
Conversation
- remove flip camera, stream config, and concurrent camera from quick settings - all quick settings menu items adopt the button row ux - WIP unique selection of settings depending on current capture mode
auxiliary function for settings subtitles
… state - Re-added the 'More Settings' button to the Quick Settings bottom sheet. - Introduced a 'showMoreSettingsButton' boolean parameter to control its visibility, defaulting to true. - Removed unused 'focusedQuickSetting' state from 'QuickSettingsUiState' and 'TrackedCaptureUiState'. - Cleaned up 'FlashModeUiStateAdapter.kt' by removing a debug 'println' and adding a 'todo(kc)' for 'visibleFlashModes'.
Remove unused drawables and their corresponding enum classes in
QuickSettingsEnums that are no longer referenced after the quick
settings refactoring.
- Decoupled dynamic range (video HDR) from image format (image HDR) settings across UI, controller, and CameraX configuration layers.
- Removed dynamic range constraints from the createImageUseCase configuration in CameraSession.kt, enabling independent Ultra HDR
image capture.
- Updated QuickSettings bottom sheet click handlers to mutate only the HDR setting relevant to the active capture mode.
- Enforced specialized Low Light Boost vs Ultra HDR conflicts in CameraXCameraSystem.kt, prioritizing Low Light Boost.
- Created HdrUiStateAdapterTest.kt covering all HDR availability states and flash conflicts.
- Refactored CameraXCameraSystemTest.kt to run parameterized HDR decoupling tests on both front and rear lenses.
…oogle/jetpack-camera-app into kim/hdr/decouple-capture-modes
temcguir
approved these changes
Jul 31, 2026
-adjust letter capitalization for quick settings title - hide settings that arent supported by the current lens
…tings/button-rows
…tings/button-rows
… state adapter tests - Refactored the Quick Settings bottom sheet UI to a flat layout, replacing nested navigation and scrollable containers with direct option rows. - Updated Instrumented tests (BackgroundDeviceTest, CaptureModeSettingsTest, ConcurrentCameraTest, NavigationTest, SwitchCameraTest) and helper functions in ComposeTestRuleExt.kt to interact with the flat layout. - Added LocalDisableAnimations composition local support in PreviewScreen.kt and QuickSettingsModalBottomSheet to disable animations for faster, more reliable testing. - Refactored FlashModeUiState.Unavailable and HdrUiState.Unavailable from classes to objects and updated tests in FlashModeUiStateAdapterTest.kt and HdrUiStateAdapterTest.kt. - Dynamically update FlipCameraButton's content description based on current lens facing.
…lBottomSheet Reverted QuickSettingsModalBottomSheet in QuickSettingsComponents.kt to directly use Material3's ModalBottomSheet, removing the custom non-gestural Box/Column layout previously used with LocalDisableAnimations. Cleaned up ComposeTestRuleExt.kt visitQuickSettings cleanup to rely on standard swipe-to-dismiss behavior and verification.
…tings/button-rows
…tings/button-rows
- Remove obsolete toast and disabled rationale strings from ui:components:capture. - Delete unused strings.xml in ui:controller:impl. - Retain ui:uistateadapter:capture as the single source of truth for toast and rationale strings.
…tings/button-rows
…tings/button-rows
…tings/button-rows
…ttingsBottomSheet
Kimblebee
force-pushed
the
kim/refactor/quickSettings/button-rows
branch
from
August 25, 2026 19:09
6eb1dbc to
d05b997
Compare
temcguir
approved these changes
Aug 25, 2026
…tings/button-rows
Kimblebee
force-pushed
the
kim/refactor/quickSettings/button-rows
branch
from
August 26, 2026 21:09
72f5480 to
5d67110
Compare
Kimblebee
force-pushed
the
kim/refactor/quickSettings/button-rows
branch
from
August 26, 2026 22:00
5d67110 to
3b7dfd5
Compare
temcguir
approved these changes
Aug 27, 2026
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.
Summary
Refactors the Quick Settings UI to a flat connected button row layout using Material 3 Expressive
ToggleButtongroups. Also hoists UI actions via a new, scalableQuickSettingsEventsealed interface, improves conflict handling between HDR and Low Light Boost / Dual Camera mode, modernizes the test suite, and cleans up unused resources.Key Changes
SettingRow/QuickSettingsListRowcomponents usingButtonGroupDefaultsconnected shapes. Removed "Flip Camera" from Quick Settings (available directly on preview).LLB_DISABLED_BY_HDR) rather than disappearing.FocusedQuickSettingenum andsetFocusedSetting()controller method.NoOpQuickSettingsControllerand unused drawables/strings.FlashModeUiState.from,HdrUiState.from) tointernal.1. Test Tags (Impacts Google3 & Test Automation)
QUICK_SETTINGS_HDR_BUTTONBTN_QUICK_SETTINGS_HDR_OPTION_ON/_OFFBTN_QUICK_SETTINGS_FOCUS_CAPTURE_MODEBTN_QUICK_SETTINGS_CAPTURE_MODE_OPTION_*QUICK_SETTINGS_FLASH_BUTTONBTN_QUICK_SETTINGS_FLASH_OPTION_*QUICK_SETTINGS_FLIP_CAMERA_BUTTONFLIP_CAMERA_BUTTON(main UI)QUICK_SETTINGS_RATIO_BUTTONQUICK_SETTINGS_RATIO_*_BUTTON/ROW_QUICK_SETTINGS_ASPECT_RATIOQUICK_SETTINGS_CLOSE_EXPANDED_BUTTON2. Public Signatures & State Models
QuickSettingsController: RemovedsetFocusedSetting(focusedQuickSetting: FocusedQuickSetting).QuickSettingsUiState.Available&TrackedCaptureUiState: RemovedfocusedQuickSettingparameter.QuickSettingsBottomSheet: Now takesonEvent: (QuickSettingsEvent) -> Unitinstead ofQuickSettingsController.CaptureModeToggleButton: Now takesonChangeCaptureModeandonToggleWhenDisabledlambdas.Testing
QuickSettingsControllerImplTestandQuickSettingsUiStateAdapterTestCaptureUiStateAdapterTest,FlashModeUiStateAdapterTest, andHdrUiStateAdapterTestComposeTestRuleExt.kt,CaptureModeSettingsTest,ConcurrentCameraTest,NavigationTest, andSwitchCameraTestto target the flat button row layout.