melon.yin 2 жил өмнө
parent
commit
e17d16cf58

+ 2 - 5
lib/interfaces/process/workspace/application.dart

@@ -130,12 +130,9 @@ abstract class IApplication {
   /// [type] 点类型
   PointInfo createPointInfo(Offset offset, PointInfoType type);
 
-  /// 根据名称切换测量项
-  ///
-  /// [name] 测量项名称
-  void switchItemByName(String name);
-
   /// 切换测量项
+  ///
+  /// [meta] 测量项信息
   void switchItem(ItemMeta meta);
 
   /// 切换注释

+ 25 - 144
lib/process/workspace/application.dart

@@ -306,143 +306,7 @@ class Application implements IApplication {
 
   @override
   void switchItem(ItemMeta meta) {
-    switchItemByName(meta.name);
-    activeMeasureItem ??= MeasureItemFactory.createItem(meta);
-    // activeMeasureItem = MeasureItemFactory.createItem(meta);
-  }
-
-  @override
-  void switchItemByName(String name) {
-    _updateOperateType(MeasureOperateType.measure);
-    activeMeasureItem?.finishOnce();
-    // TODO: create from map
-    if (name == MeasureTerms.AntCCA_IMT) {
-      activeMeasureItem = CarotidIMT.createMeasureRect(
-          ItemMeta(
-            MeasureTerms.AntCCA_IMT,
-            description: MeasureTerms.AntCCA_IMT,
-            measureType: MeasureTerms.AntCCA_IMT,
-            outputs: [
-              ItemOutputMeta(MeasureTerms.AntCCA_IMT, "", VidUsUnit.cm),
-            ],
-          ),
-          null);
-      return;
-    }
-    if (name == MeasureTerms.PostCCA_IMT) {
-      activeMeasureItem = CarotidIMT.createMeasureRect(
-          ItemMeta(
-            MeasureTerms.PostCCA_IMT,
-            description: MeasureTerms.PostCCA_IMT,
-            measureType: MeasureTerms.PostCCA_IMT,
-            outputs: [
-              ItemOutputMeta(MeasureTerms.PostCCA_IMT, "", VidUsUnit.cm),
-            ],
-          ),
-          null);
-      return;
-    }
-    if (name == MeasureTerms.BothCCA_IMT) {
-      activeMeasureItem = CarotidIMT.createMeasureRect(
-          ItemMeta(
-            MeasureTerms.BothCCA_IMT,
-            description: MeasureTerms.BothCCA_IMT,
-            measureType: MeasureTerms.BothCCA_IMT,
-            outputs: [
-              ItemOutputMeta(MeasureTerms.BothCCA_IMT, "", VidUsUnit.cm),
-            ],
-          ),
-          null);
-      return;
-    }
-    if (name == MeasureTerms.PlaqueDetection) {
-      ///TODO: 只允许触发一次
-      activeMeasureItem = CarotidDetection.createDetectionRect(
-          ItemMeta(
-            MeasureTerms.PlaqueDetection,
-            description: MeasureTerms.PlaqueDetection,
-            measureType: MeasureTerms.PlaqueDetection,
-            outputs: [
-              ItemOutputMeta(MeasureTerms.PlaqueDetection, "", VidUsUnit.cm2),
-            ],
-          ),
-          null);
-      return;
-    }
-    if (name == MeasureTerms.IntimaDetection) {
-      ///TODO: 只允许触发一次
-      activeMeasureItem = CarotidDetection.createDetectionRect(
-          ItemMeta(
-            MeasureTerms.IntimaDetection,
-            description: MeasureTerms.IntimaDetection,
-            measureType: MeasureTerms.IntimaDetection,
-            outputs: [
-              ItemOutputMeta(MeasureTerms.IntimaDetection, "", VidUsUnit.cm2),
-            ],
-          ),
-          null);
-      return;
-    }
-
-    if (name == MeasureTypes.AreaPerimeterEllipse) {
-      activeMeasureItem = MeasureItemFactory.createItem(
-        ItemMeta(
-          MeasureTypes.AreaPerimeterEllipse,
-          measureType: MeasureTypes.AreaPerimeterEllipse,
-          description: MeasureTypes.AreaPerimeterEllipse,
-          outputs: [
-            ItemOutputMeta("Perimeter", "Perimeter", VidUsUnit.cm),
-            ItemOutputMeta("Area", "Area", VidUsUnit.cm2),
-          ],
-        ),
-      );
-      return;
-    }
-
-    if (name == MeasureTypes.AreaPerimeterPolyline) {
-      activeMeasureItem = MeasureItemFactory.createItem(
-        ItemMeta(
-          MeasureTypes.AreaPerimeterPolyline,
-          measureType: MeasureTypes.AreaPerimeterPolyline,
-          description: MeasureTypes.AreaPerimeterPolyline,
-          outputs: [
-            ItemOutputMeta("Perimeter", "Perimeter", VidUsUnit.cm),
-            ItemOutputMeta("Area", "Area", VidUsUnit.cm2),
-          ],
-        ),
-      );
-      return;
-    }
-    if (name == MeasureTypes.AreaPerimeterSpline) {
-      activeMeasureItem = MeasureItemFactory.createItem(
-        ItemMeta(
-          MeasureTypes.AreaPerimeterSpline,
-          measureType: MeasureTypes.AreaPerimeterSpline,
-          description: MeasureTypes.AreaPerimeterSpline,
-          outputs: [
-            ItemOutputMeta("Perimeter", "Perimeter", VidUsUnit.cm),
-            ItemOutputMeta("Area", "Area", VidUsUnit.cm2),
-          ],
-        ),
-      );
-      return;
-    }
-
-    if (name == MeasureTypes.VerticalDistance) {
-      activeMeasureItem = MeasureItemFactory.createItem(
-        ItemMeta(
-          MeasureTerms.VerticalDistance,
-          measureType: MeasureTypes.VerticalDistance,
-          description: MeasureTypes.VerticalDistance,
-          outputs: [
-            ItemOutputMeta(MeasureTypes.VerticalDistance,
-                MeasureTypes.VerticalDistance, VidUsUnit.cm),
-          ],
-        ),
-      );
-      return;
-    }
-    activeMeasureItem = null;
+    activeMeasureItem = MeasureItemFactory.createItem(meta);
   }
 
   @override
@@ -482,7 +346,7 @@ class Application implements IApplication {
   void switchMode(String name) {
     for (var area in currentVisual.visualAreas) {
       if (area.mode.name == name) {
-        _handleAreaSwitch(area, PointInfo(0, 0, PointInfoType.mouseDown));
+        _changeAcitveArea(area);
       }
     }
   }
@@ -578,6 +442,9 @@ class Application implements IApplication {
   }
 
   IVisualArea? _attchVisualArea(PointInfo point) {
+    if (currentVisualArea.displayRegion.containsPoint(point)) {
+      return currentVisualArea;
+    }
     for (var visual in visuals) {
       for (var area in visual.visualAreas) {
         if (area.displayRegion.containsPoint(point)) {
@@ -594,16 +461,30 @@ class Application implements IApplication {
       return false;
     }
 
-    /// 点击切换所在区域焦点
-    if (area != currentVisualArea) {
-      for (var visual in visuals) {
-        visual.setUnAcitve();
+    // 点击切换所在区域焦点
+    // 不同幅或者不同模式类型的才切换
+    bool needSwitch = false;
+    if (area.visual.visualData.indicator !=
+        currentVisual.visualData.indicator) {
+      needSwitch = true;
+    } else {
+      if (!currentVisualArea.displayRegion.containsPoint(point)) {
+        needSwitch = true;
       }
-      area.isActive = true;
-      visualAreaChanged.emit(this, area);
+    }
+    if (needSwitch) {
+      _changeAcitveArea(area);
       return true;
     }
 
     return false;
   }
+
+  void _changeAcitveArea(IVisualArea area) {
+    for (var visual in visuals) {
+      visual.setUnAcitve();
+    }
+    area.isActive = true;
+    visualAreaChanged.emit(this, area);
+  }
 }

+ 0 - 8
lib/view/measure/measure_config/measure_configuation_page.dart

@@ -111,14 +111,6 @@ class _MeasureConfigurationDialogState
     }
   }
 
-  void changeItem(String? name) {
-    activeName = name ?? '';
-    application.switchItemByName(activeName);
-    if (mounted) {
-      setState(() {});
-    }
-  }
-
   void submit() async {
     var measureModeSubmitChanged = MeasureModeSubmit(
       measureData.measureApplicationVersion,