3.1 KiB
Settings — Appearance
Controls navigation mode, nav slot assignment, theme, accent colour, and language.
Fragment — SettingsAppearanceFragment
Navigation Mode
A MaterialButtonToggleGroup with three options (SettingsAppearanceFragment.kt:65-80):
| Mode | Value | Description |
|---|---|---|
| Drawer (default) | NAV_MODE_DRAWER |
Slide-out navigation drawer |
| Bottom | NAV_MODE_BOTTOM |
Bottom bar with 3 visible slots + pinned Dashboard + More |
| Circular | NAV_MODE_CIRCULAR |
Radial wheel — see Circular Nav |
Changing mode takes effect immediately; HomeActivity recreates its navigation structure.
Navigation Slot Customisation — NavCustomization
Drag-and-reorder lists tailored per mode (NavCustomization.kt:52-93). The disabled list is dimmed to 38% opacity.
Bottom Navigation Mode
- 3 slots in the bottom bar (defaults: Accounts, Contacts, Transfer)
- Dashboard is always pinned as the leftmost tab and is not part of the 3-item pool
- All non-slot items appear in the More bottom sheet (
NavMoreSheetFragment) switchShowLabelstoggle controls whether the bottom-bar items render text labels
Circular Navigation Mode
- 4 customisable wheel slots (defaults: Transfer, Cards, Contacts, Accounts)
- Dashboard, More and the wheel-lock are always present at 6 o'clock / 8 o'clock / centre
Quick Action Slots
Two dedicated FAB-style slots on the dashboard. Defaults: Transfer + PayMV QR. Hidden when the user is in Bottom mode (the dashboard hides the FAB row when a bottom bar is present).
Persistence
Each slot is stored individually in SharedPreferences (bottom_nav_slot_{n}_key, circular_slot_{n}_key, quick_action_{n}_key).
Theme
A three-way selector applied via AppCompatDelegate.setDefaultNightMode():
| Option | Behaviour |
|---|---|
| System default | Follows the device's dark/light mode |
| Light | Forces light theme |
| Dark | Forces dark theme |
Pitch Black
switchPitchBlack (SettingsAppearanceFragment.kt:162-166) — only enabled in Dark mode. Applies ThemeOverlay_PitchBlack for OLED-friendly true-black surfaces.
Accent Colour
A toggle group (accentToggle) with four options (SettingsAppearanceFragment.kt:172-192, ThemeHelper.kt:14-17):
| Option | Seed |
|---|---|
| Blue (default) | #3F65AD |
| Red | #D32F2F |
| Green | #4CAF50 |
| Custom | User-picked hex stored in accent_custom_color |
On API 31+ the seed is fed through DynamicColors.applyToActivityIfAvailable(...).setContentBasedSource(seedBitmap) for a full content-derived palette. On older releases a static ThemeOverlay_Accent_* style is applied. Disabled when Theme = System (dynamic colours own the palette).
Language
A toggle group (languageToggle) with two options — English and Dhivehi. There is no "System default" entry. Applied via AppCompatDelegate.setApplicationLocales(); takes effect immediately.