10.15 Section 10: Hardware Limitations (Camera Profiles)

Favourite cameras, lenses and films

Star the bodies, lenses and films you actually own and they sit at the top of every picker.

Where to find it

Equipment Camera Body and Lens pickers; Film Stock picker (viewfinder film row or Equipment) star on each row

Summary

Every row in the camera body, lens and film stock pickers carries a star. Tap it and that entry moves into a Favourites group at the top of the list, and it stays there in every view: the full list, a brand chip, a format tab, the B&W / Color switch, or a search. A Favourites chip at the start of the brand row narrows the list to starred entries only. Bundled and custom entries can both be starred, and the stars belong to the app rather than a profile, so switching profiles keeps them.

How it works

Tap the star at the right end of any row in the camera body, lens or film stock picker. The outline fills in and the entry jumps to a Favourites group at the top of the list. Tap the filled star to take it off again. Starring never picks the row or closes the picker, so you can star your whole kit in one sitting.

Where your stars show up

Starred entries lead the list in every view: the full catalogue, a brand chip, a format tab in Equipment, the B&W / Color switch in the film picker, and search results. A starred lens that fits the body you picked keeps its highlighted card, so you can still see which of your lenses will mount. Everything you have not starred follows in the usual order, with your own custom entries ahead of the catalogue.

The Favourites chip

Once something is starred, a Favourites chip appears at the start of the brand chips. Tap it to see only your starred entries. Tap it again, or tap All, to see everything. The number on the chip counts your stars the same way the brand chips count entries: with the Equipment format tab on medium format it only counts medium format favourites, and in the film picker it follows the B&W / Color switch.

One set for the whole app

Stars belong to you, not to a profile. Switch profiles and the same bodies, lenses and films stay starred. They are saved straight away and survive closing the app or restarting the phone.

Custom entries

Your own custom bodies, lenses and film stocks can be starred like anything else. Delete a custom entry and its star goes with it. The 'No film selected' row cannot be starred.

Implementation notes (for developers)
Persistence: AppMeta.favoriteCameraIdsCsv / favoriteLensIdsCsv / favoriteFilmStockIdsCsv (Room v81, app-wide; profile create and switch copy the AppMeta row so stars survive). Ids: catalogue id or custom gear id (custom-<slug>-<millis>) for bodies and lenses, FilmStock enum name or custom stock id for film; catalogue ids never start with custom- (GearFavoritesIdTest). Stored as ids joined with commas, a percent sign or comma inside an id escaped as %25 / %2C (GearFavorites.encodeCsv / decodeCsv). GearFavoritesStore owns the three StateFlows (one ViewfinderViewModel field because of the D8 limits), seeded in hydrateAppMetaFlags; every toggle is a mutex-guarded read-modify-write of the AppMeta row, so quick taps on several stars never drop one. deleteCustomCamera, deleteCustomLens and onDeleteCustomFilmStock drop the deleted id; ids that no longer resolve are ignored, never pruned. Ordering: GearFavorites.arrange splits the current view (after search, brand chip, type pill and format scope) into starred rows, then the existing compatible / other split, each group in its original order; the starred group lists rows that fit the active body or lens first and they keep their compatible card styling. Because the catalogue lists custom entries first the result reads starred, unstarred custom, unstarred bundled. UI: GearCatalogPickerDialog takes favoriteIds / onToggleFavorite / othersHeaderRes; GearPickerItemRow ends with a 48dp FavoriteStarButton and moves its vertical padding onto the text column so rows keep their height; GearBrandChipRow puts the Favourites chip ahead of All (count over the scoped list, hidden at zero, single-select with the brand chips, the filter switches off when its count reaches zero). The film picker's rows moved to FilmPickerRows.kt so the Favourites group and the rest share them; the 'No film selected' row has no star. The onboarding wizard's camera, lens and film steps use their own rows and carry no star, since nothing can be starred before first run ends.

Search documentation