mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-06-15 07:04:26 +10:00
c229b0369e
- Updated supported languages to include Hungarian, Japanese, and Korean. - Added new on-device message translation feature with detailed usage instructions. - Introduced emoji reactions in chat with user interface and functionality details. - Implemented linkification for automatic detection of URLs and meshcore URIs in messages. - Added GPX export functionality for contacts with GPS coordinates. - Enabled pinch-to-zoom for chat text scaling. - Documented background service for Android to maintain BLE connection in the background. - Revised BLE protocol documentation to reflect changes in connection state machine and command codes. - Updated channels documentation to clarify message display and interaction options. - Enhanced chat and messaging documentation with new translation button and message metadata. - Clarified contact actions in contacts documentation. - Adjusted map and location documentation for improved node name visibility and filter options. - Revised navigation documentation to streamline disconnection process. - Improved notification documentation to specify batch notification behavior. - Updated repeater management documentation to reflect new features and settings. - Enhanced scanner and connection documentation for device filtering and connection timeout. - Expanded settings documentation to include new translation options. - Removed jni plugin references from generated plugin files for Linux and Windows.
73 lines
3.2 KiB
Markdown
73 lines
3.2 KiB
Markdown
# Navigation
|
|
|
|
## App Flow
|
|
|
|
The app follows this general flow:
|
|
|
|
```
|
|
Launch → Scanner Screen → [Connect via BLE/USB/TCP] → Contacts Screen
|
|
```
|
|
|
|
After connecting, the three main screens (Contacts, Channels, Map) are accessible via a persistent bottom navigation bar called the **QuickSwitchBar**.
|
|
|
|
## Quick Switch Bar
|
|
|
|
The QuickSwitchBar is a Material 3 `NavigationBar` with a frosted-glass visual treatment (blur backdrop, transparent theme, rounded corners). It appears at the bottom of all three main screens.
|
|
|
|
| Index | Icon | Label | Screen |
|
|
|---|---|---|---|
|
|
| 0 | People | Contacts | ContactsScreen |
|
|
| 1 | Tag | Channels | ChannelsScreen |
|
|
| 2 | Map | Map | MapScreen |
|
|
|
|
Tapping a tab replaces the current screen with a subtle fade + slight horizontal nudge transition (220ms forward, 200ms reverse). The back button is suppressed on all three main screens — navigation between them is flat, not stacked. All icons use outline variants (`people_outline`, `tag`, `map_outlined`) following Material 3 conventions.
|
|
|
|
## Disconnection
|
|
|
|
- The disconnect button (available in the Settings screen and other main screens) shows a confirmation dialog before disconnecting
|
|
- If the device disconnects unexpectedly, the app automatically navigates back to the Scanner screen (fires after the current frame completes via a post-frame callback)
|
|
- This auto-navigation behavior (`DisconnectNavigationMixin`) is shared across all main screens
|
|
|
|
## Theme and Locale
|
|
|
|
- **Theme mode** is user-configurable in App Settings (System / Light / Dark) — not locked to system
|
|
- **Language** can be overridden to one of 18 supported languages, or follow the system locale
|
|
- On web, if a non-Chromium browser is detected, the app shows a `ChromeRequiredScreen` instead of the Scanner (Web Bluetooth requires Chromium)
|
|
|
|
## Full Navigation Graph
|
|
|
|
```
|
|
ScannerScreen (root, always on stack)
|
|
├─ [BLE connect] → push → ContactsScreen
|
|
├─ [TCP FAB] → push → TcpScreen
|
|
│ └─ [TCP connected] → pushReplacement → ContactsScreen
|
|
└─ [USB FAB] → push → UsbScreen
|
|
└─ [USB connected] → pushReplacement → ContactsScreen
|
|
|
|
ContactsScreen (selected=0)
|
|
├─ [quick-switch 1] → pushReplacement → ChannelsScreen
|
|
├─ [quick-switch 2] → pushReplacement → MapScreen
|
|
├─ [tap contact] → push → ChatScreen
|
|
├─ [overflow > Settings] → push → SettingsScreen
|
|
└─ [overflow > Discovered] → push → DiscoveryScreen
|
|
|
|
ChannelsScreen (selected=1)
|
|
├─ [quick-switch 0] → pushReplacement → ContactsScreen
|
|
├─ [quick-switch 2] → pushReplacement → MapScreen
|
|
├─ [tap channel] → push → ChannelChatScreen
|
|
└─ [overflow > Settings] → push → SettingsScreen
|
|
|
|
MapScreen (selected=2)
|
|
├─ [quick-switch 0] → pushReplacement → ContactsScreen
|
|
├─ [quick-switch 1] → pushReplacement → ChannelsScreen
|
|
├─ [radar button] → push → PathTraceMapScreen
|
|
├─ [terrain button] → push → LineOfSightMapScreen
|
|
└─ [long-press] → share marker / set location
|
|
|
|
Settings (push from any main screen)
|
|
└─ [App Settings] → push → AppSettingsScreen
|
|
└─ [Offline Map Cache] → push → MapCacheScreen
|
|
```
|
|
|
|
Any disconnection from any screen triggers `popUntil(route.isFirst)`, returning to the Scanner.
|