diff --git a/app/src/main/java/com/openipc/pixelpilot/osd/OSDElement.java b/app/src/main/java/com/openipc/pixelpilot/osd/OSDElement.java
index fd73d37b..a42052b3 100644
--- a/app/src/main/java/com/openipc/pixelpilot/osd/OSDElement.java
+++ b/app/src/main/java/com/openipc/pixelpilot/osd/OSDElement.java
@@ -1,12 +1,29 @@
package com.openipc.pixelpilot.osd;
+import android.view.View;
+
public class OSDElement {
public String name;
- public MovableLayout layout;
+ public MovableLayout layout; // null for a fixed item
+ public View fixedView; // fixed item, e.g. the centre dot
+ public boolean defaultEnabled;
public OSDElement(String n, MovableLayout l) {
name = n;
layout = l;
+ fixedView = null;
+ defaultEnabled = false;
+ }
+
+ public OSDElement(String n, View fixed, boolean enabledByDefault) {
+ name = n;
+ layout = null;
+ fixedView = fixed;
+ defaultEnabled = enabledByDefault;
+ }
+
+ public View view() {
+ return layout != null ? layout : fixedView;
}
public String prefName() {
diff --git a/app/src/main/java/com/openipc/pixelpilot/osd/OSDManager.java b/app/src/main/java/com/openipc/pixelpilot/osd/OSDManager.java
index 68e9c088..2cc32051 100644
--- a/app/src/main/java/com/openipc/pixelpilot/osd/OSDManager.java
+++ b/app/src/main/java/com/openipc/pixelpilot/osd/OSDManager.java
@@ -38,7 +38,8 @@ public OSDManager(Context context, ActivityVideoBinding binding) {
public void lockOSD(Boolean isLocked) {
for (int i = 0; i < listOSDItems.size(); i++) {
- listOSDItems.get(i).layout.setMovable(!isLocked);
+ MovableLayout layout = listOSDItems.get(i).layout;
+ if (layout != null) layout.setMovable(!isLocked);
}
osdLocked = isLocked;
}
@@ -52,8 +53,12 @@ public String getTitle() {
}
public void onOSDItemCheckChanged(OSDElement element, boolean isChecked) {
- // Show or hide the ImageView corresponding to the checkbox position
- element.layout.setVisibility(isChecked ? View.VISIBLE : View.GONE);
+ // Show or hide the ImageView corresponding to the checkbox position.
+ // The centre dot stays hidden in VR mode, where there is no single video view.
+ boolean show = isChecked && (element.layout != null
+ || binding.mainVideoSurface.getVisibility() == View.VISIBLE
+ || binding.mainVideo.getVisibility() == View.VISIBLE);
+ element.view().setVisibility(show ? View.VISIBLE : View.GONE);
SharedPreferences prefs = context.getSharedPreferences("osd_config", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(element.prefName() + "_enabled", isChecked);
@@ -81,6 +86,7 @@ public void onFinish() {
listOSDItems.add(new OSDElement("Battery Air", binding.itemBat));
listOSDItems.add(new OSDElement("Battery Cell Air", binding.itemBatCell));
listOSDItems.add(new OSDElement("Battery GS", binding.itemGSBattery));
+ listOSDItems.add(new OSDElement("Center Dot", binding.imgCenterDot, true));
listOSDItems.add(new OSDElement("Current", binding.itemCurrent));
listOSDItems.add(new OSDElement("Flight Mode", binding.itemFlightMode));
listOSDItems.add(new OSDElement("Ground Speed", binding.itemGndSpeed));
@@ -106,14 +112,13 @@ public void onFinish() {
public boolean isElementEnabled(OSDElement elem) {
SharedPreferences prefs = context.getSharedPreferences("osd_config", MODE_PRIVATE);
- return prefs.getBoolean(elem.prefName() + "_enabled", false);
+ return prefs.getBoolean(elem.prefName() + "_enabled", elem.defaultEnabled);
}
public void restoreOSDConfig() {
- SharedPreferences prefs = context.getSharedPreferences("osd_config", MODE_PRIVATE);
for (OSDElement element : listOSDItems) {
- boolean enabled = prefs.getBoolean(element.prefName() + "_enabled", false);
- onOSDItemCheckChanged(element, enabled);
+ onOSDItemCheckChanged(element, isElementEnabled(element));
+ if (element.layout == null) continue; // fixed item: no saved position
element.layout.restorePosition(element.prefName());
element.layout.setMovable(!isOSDLocked());
}
diff --git a/app/src/main/res/drawable/osd_center_dot.xml b/app/src/main/res/drawable/osd_center_dot.xml
new file mode 100644
index 00000000..3bb0e336
--- /dev/null
+++ b/app/src/main/res/drawable/osd_center_dot.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_video.xml b/app/src/main/res/layout/activity_video.xml
index 8aa7e519..ccd34212 100644
--- a/app/src/main/res/layout/activity_video.xml
+++ b/app/src/main/res/layout/activity_video.xml
@@ -733,4 +733,18 @@
+
+
+