From b272034a1fdbfe32b355fc6c264a4c45df107190 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期二, 23 十二月 2025 14:55:03 +0800
Subject: [PATCH] 优化了新增地块功能

---
 src/set/Setsys.java |  102 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 92 insertions(+), 10 deletions(-)

diff --git a/src/set/Setsys.java b/src/set/Setsys.java
index c7b75d7..a9ac06d 100644
--- a/src/set/Setsys.java
+++ b/src/set/Setsys.java
@@ -4,12 +4,18 @@
 import java.util.Properties;
 
 public class Setsys {
+    public static final int DEFAULT_IDLE_TRAIL_DURATION_SECONDS = 60;
+
     private String mowerId;
     private String cuttingWidth;
     private String simCardNumber;
     private String handheldMarkerId;
     private String firmwareVersion;
     private String appVersion;
+    private int idleTrailDurationSeconds = DEFAULT_IDLE_TRAIL_DURATION_SECONDS;
+    private boolean boundaryLengthVisible = false;  // 榛樿鍏抽棴鏄剧ず杈圭晫璺濈
+    private boolean measurementModeEnabled = false;  // 榛樿鍏抽棴娴嬮噺妯″紡
+    private boolean manualBoundaryDrawingMode = false;  // 榛樿鍏抽棴鎵嬪姩缁樺埗杈圭晫妯″紡
     
     private static final String PROPERTIES_FILE = "set.properties";
 
@@ -76,6 +82,38 @@
         this.appVersion = appVersion;
     }
 
+    public int getIdleTrailDurationSeconds() {
+        return idleTrailDurationSeconds;
+    }
+
+    public void setIdleTrailDurationSeconds(int seconds) {
+        this.idleTrailDurationSeconds = sanitizeIdleTrailDuration(String.valueOf(seconds));
+    }
+    
+    public boolean isBoundaryLengthVisible() {
+        return boundaryLengthVisible;
+    }
+    
+    public void setBoundaryLengthVisible(boolean visible) {
+        this.boundaryLengthVisible = visible;
+    }
+    
+    public boolean isMeasurementModeEnabled() {
+        return measurementModeEnabled;
+    }
+    
+    public void setMeasurementModeEnabled(boolean enabled) {
+        this.measurementModeEnabled = enabled;
+    }
+    
+    public boolean isManualBoundaryDrawingMode() {
+        return manualBoundaryDrawingMode;
+    }
+    
+    public void setManualBoundaryDrawingMode(boolean enabled) {
+        this.manualBoundaryDrawingMode = enabled;
+    }
+
     /**
      * 鍒濆鍖栨柟娉� - 浠巔roperties鏂囦欢璇诲彇鏁版嵁
      * 濡傛灉灞炴�у�间负-1锛岃〃绀烘病鏈夊�硷紝璁剧疆涓簄ull
@@ -92,15 +130,18 @@
             this.handheldMarkerId = "-1".equals(props.getProperty("handheldMarkerId")) ? null : props.getProperty("handheldMarkerId");
             this.firmwareVersion = "-1".equals(props.getProperty("firmwareVersion")) ? null : props.getProperty("firmwareVersion");
             this.appVersion = "-1".equals(props.getProperty("appVersion")) ? null : props.getProperty("appVersion");
-            
-            System.out.println("鏁版嵁鍒濆鍖栧畬鎴�");
-            
-        } catch (FileNotFoundException e) {
-            System.err.println("灞炴�ф枃浠舵湭鎵惧埌: " + PROPERTIES_FILE);
+            this.idleTrailDurationSeconds = sanitizeIdleTrailDuration(props.getProperty("idleTrailDurationSeconds"));
+            String boundaryLengthVisibleStr = props.getProperty("boundaryLengthVisible");
+            this.boundaryLengthVisible = "true".equalsIgnoreCase(boundaryLengthVisibleStr);
+            String measurementModeEnabledStr = props.getProperty("measurementModeEnabled");
+            this.measurementModeEnabled = "true".equalsIgnoreCase(measurementModeEnabledStr);
+            String manualBoundaryDrawingModeStr = props.getProperty("manualBoundaryDrawingMode");
+            this.manualBoundaryDrawingMode = "true".equalsIgnoreCase(manualBoundaryDrawingModeStr);
+                        
+        } catch (FileNotFoundException e) {           
             // 鏂囦欢涓嶅瓨鍦ㄦ椂锛岃缃墍鏈夊睘鎬т负null
             setAllPropertiesToNull();
-        } catch (IOException e) {
-            System.err.println("璇诲彇灞炴�ф枃浠舵椂鍑洪敊: " + e.getMessage());
+        } catch (IOException e) {            
             setAllPropertiesToNull();
         }
     }
@@ -132,9 +173,26 @@
             case "appVersion":
                 this.appVersion = value;
                 break;
+            case "idleTrailDurationSeconds":
+                int durationSeconds = sanitizeIdleTrailDuration(value);
+                this.idleTrailDurationSeconds = durationSeconds;
+                value = String.valueOf(durationSeconds);
+                break;
+            case "boundaryLengthVisible":
+                this.boundaryLengthVisible = "true".equalsIgnoreCase(value);
+                break;
+            case "measurementModeEnabled":
+                this.measurementModeEnabled = "true".equalsIgnoreCase(value);
+                break;
+            case "manualBoundaryDrawingMode":
+                this.manualBoundaryDrawingMode = "true".equalsIgnoreCase(value);
+                break;
+            case "mapScale":
+                // mapScale涓嶉渶瑕佸湪鍐呭瓨涓瓨鍌紝鐩存帴鏇存柊鍒版枃浠�
+                break;
             default:
-                System.err.println("鏈煡鐨勫睘鎬у悕: " + propertyName);
-                return false;
+                // 瀵逛簬鍏朵粬灞炴�э紝涔熷厑璁哥洿鎺ユ洿鏂板埌鏂囦欢锛堜笉鎵撳嵃閿欒锛�
+                break;
         }
 
         // 鏇存柊properties鏂囦欢
@@ -160,7 +218,6 @@
         // 鍐欏洖鏂囦欢
         try (FileOutputStream output = new FileOutputStream(PROPERTIES_FILE)) {
             props.store(output, "Mower Configuration Properties - Updated");
-            System.out.println("灞炴�� " + propertyName + " 宸叉洿鏂颁负: " + value);
             return true;
         } catch (IOException e) {
             System.err.println("鏇存柊灞炴�ф枃浠跺け璐�: " + e.getMessage());
@@ -168,6 +225,25 @@
         }
     }
 
+    private int sanitizeIdleTrailDuration(String raw) {
+        if (raw == null) {
+            return DEFAULT_IDLE_TRAIL_DURATION_SECONDS;
+        }
+        String trimmed = raw.trim();
+        if (trimmed.isEmpty() || "-1".equals(trimmed)) {
+            return DEFAULT_IDLE_TRAIL_DURATION_SECONDS;
+        }
+        try {
+            int value = Integer.parseInt(trimmed);
+            if (value < 5 || value > 600) {
+                return DEFAULT_IDLE_TRAIL_DURATION_SECONDS;
+            }
+            return value;
+        } catch (NumberFormatException ex) {
+            return DEFAULT_IDLE_TRAIL_DURATION_SECONDS;
+        }
+    }
+
     /**
      * 璁剧疆鎵�鏈夊睘鎬т负null
      */
@@ -178,6 +254,10 @@
     this.handheldMarkerId = null;
         this.firmwareVersion = null;
         this.appVersion = null;
+        this.idleTrailDurationSeconds = DEFAULT_IDLE_TRAIL_DURATION_SECONDS;
+        this.boundaryLengthVisible = false;  // 榛樿鍏抽棴
+        this.measurementModeEnabled = false;  // 榛樿鍏抽棴娴嬮噺妯″紡
+        this.manualBoundaryDrawingMode = false;  // 榛樿鍏抽棴鎵嬪姩缁樺埗杈圭晫妯″紡
     }
 
     /**
@@ -191,6 +271,7 @@
     System.out.println("handheldMarkerId: " + (handheldMarkerId != null ? handheldMarkerId : "鏈缃�"));
         System.out.println("firmwareVersion: " + (firmwareVersion != null ? firmwareVersion : "鏈缃�"));
         System.out.println("appVersion: " + (appVersion != null ? appVersion : "鏈缃�"));
+        System.out.println("idleTrailDurationSeconds: " + idleTrailDurationSeconds);
     }
 
     // 鏍规嵁set.properties涓殑閿悕鑾峰彇瀵瑰簲鐨勫�硷紝娌℃湁鎴栦负-1鏃惰繑鍥瀗ull
@@ -224,6 +305,7 @@
                 ", handheldMarkerId='" + handheldMarkerId + '\'' +
                 ", firmwareVersion='" + firmwareVersion + '\'' +
                 ", appVersion='" + appVersion + '\'' +
+                ", idleTrailDurationSeconds=" + idleTrailDurationSeconds +
                 '}';
     }
 }
\ No newline at end of file

--
Gitblit v1.10.0