diff options
| author | Agent <agent@example.com> | 2026-03-24 23:02:14 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-03-25 04:55:41 +0000 |
| commit | e5cd0ce6bf65fff1bbbb5d8e12c4076da088ebe1 (patch) | |
| tree | 9c153dc4d2ad5f784121047bf71739d2153d1cf8 /android-app/app/src/main/res | |
| parent | 31b1b3a05d2100ada78042770d62c824d47603ec (diff) | |
feat: add AnchorWatchHandler UI with Depth/Rode Out inputs and suggested radius
- Add AnchorWatchState with calculateRecommendedWatchCircleRadius, which
uses ScopeCalculator.watchCircleRadius (Pythagorean scope formula) and
falls back to rode length when geometry is invalid
- Add AnchorWatchHandler Fragment with EditText inputs for Depth (m) and
Rode Out (m); updates suggested watch circle radius live via TextWatcher
- Add fragment_anchor_watch.xml layout
- Wire AnchorWatchHandler into bottom navigation (MainActivity + menu)
- Add AnchorWatchStateTest covering valid geometry, short-rode fallback
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'android-app/app/src/main/res')
| -rw-r--r-- | android-app/app/src/main/res/layout/fragment_anchor_watch.xml | 79 | ||||
| -rwxr-xr-x | android-app/app/src/main/res/values/strings.xml | 10 |
2 files changed, 89 insertions, 0 deletions
diff --git a/android-app/app/src/main/res/layout/fragment_anchor_watch.xml b/android-app/app/src/main/res/layout/fragment_anchor_watch.xml new file mode 100644 index 0000000..96b9969 --- /dev/null +++ b/android-app/app/src/main/res/layout/fragment_anchor_watch.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8"?> +<ScrollView + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="16dp"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/anchor_watch_title" + android:textSize="20sp" + android:textStyle="bold" + android:layout_marginBottom="24dp" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/anchor_depth_label" + android:textSize="14sp" + android:layout_marginBottom="4dp" /> + + <EditText + android:id="@+id/etDepth" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/anchor_depth_hint" + android:inputType="numberDecimal" + android:importantForAutofill="no" + android:layout_marginBottom="16dp" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/anchor_rode_label" + android:textSize="14sp" + android:layout_marginBottom="4dp" /> + + <EditText + android:id="@+id/etRodeOut" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/anchor_rode_hint" + android:inputType="numberDecimal" + android:importantForAutofill="no" + android:layout_marginBottom="24dp" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/anchor_suggested_radius_label" + android:textSize="14sp" + android:layout_marginBottom="4dp" /> + + <TextView + android:id="@+id/tvSuggestedRadius" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/anchor_suggested_radius_empty" + android:textSize="18sp" + android:textStyle="bold" + android:layout_marginBottom="4dp" /> + + <TextView + android:id="@+id/tvSuggestedRadiusHint" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/anchor_suggested_radius_hint" + android:textSize="12sp" + android:alpha="0.6" /> + + </LinearLayout> + +</ScrollView> diff --git a/android-app/app/src/main/res/values/strings.xml b/android-app/app/src/main/res/values/strings.xml index 499ba8d..756f5e3 100755 --- a/android-app/app/src/main/res/values/strings.xml +++ b/android-app/app/src/main/res/values/strings.xml @@ -58,4 +58,14 @@ <string name="temp_fmt">%.0f °C</string> <string name="precip_fmt">%d%%</string> <string name="permission_rationale">Location is needed to show weather for your current position.</string> + <string name="nav_anchor_watch">Anchor</string> + <string name="anchor_watch_title">Anchor Watch</string> + <string name="anchor_depth_label">Depth (m)</string> + <string name="anchor_depth_hint">e.g. 5.0</string> + <string name="anchor_rode_label">Rode Out (m)</string> + <string name="anchor_rode_hint">e.g. 30.0</string> + <string name="anchor_suggested_radius_label">Suggested Watch Radius</string> + <string name="anchor_suggested_radius_empty">—</string> + <string name="anchor_suggested_radius_fmt">%.1f m</string> + <string name="anchor_suggested_radius_hint">Calculated from rode and depth using Pythagorean scope formula (2 m freeboard assumed)</string> </resources> |
