功能优化
This commit is contained in:
parent
add6f3d1e0
commit
30688c11c2
@ -91,22 +91,24 @@ public class FloatingTabDialogManager {
|
||||
@Override
|
||||
public void onComplete(Long solutionId) {
|
||||
if (solutionId != -1) {
|
||||
Toast.makeText(context, "方案 '" + solutionName + "' 保存成功!", Toast.LENGTH_SHORT).show();
|
||||
showToastOnUi(context, "方案 '" + solutionName + "' 保存成功!");
|
||||
removeFloatingTabDialog();
|
||||
} else {
|
||||
Toast.makeText(context, "保存方案失败。", Toast.LENGTH_SHORT).show();
|
||||
showToastOnUi(context, "保存方案失败。");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception e) {
|
||||
Log.e(TAG, "保存方案失败: " + e.getMessage(), e);
|
||||
Toast.makeText(context, "保存方案失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
showToastOnUi(context, "保存方案失败: " + e.getMessage());
|
||||
}
|
||||
});
|
||||
// ✅ 只在验证通过时才显示
|
||||
Toast.makeText(context, "正在保存方案...", Toast.LENGTH_SHORT).show();
|
||||
|
||||
// 这个可能也是在后台线程,保险起见也用主线程
|
||||
showToastOnUi(context, "正在保存方案...");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
closeButton.setOnClickListener(v -> removeFloatingTabDialog());
|
||||
@ -242,4 +244,11 @@ public class FloatingTabDialogManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void showToastOnUi(Context context, String msg) {
|
||||
new Handler(Looper.getMainLooper()).post(() ->
|
||||
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@ -11,6 +11,8 @@ import android.graphics.PixelFormat;
|
||||
import android.graphics.Point;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.provider.Settings;
|
||||
import android.text.InputType;
|
||||
import android.util.Log;
|
||||
@ -679,6 +681,11 @@ public class FloatingViewManager {
|
||||
PointEvent end = slideEvent.getEndPoint();
|
||||
ConnectingLineView lineView = slideEvent.getLineView();
|
||||
|
||||
if (lineView == null) {
|
||||
Log.e(TAG, "updateLinePosition: lineView is null, cannot update line");
|
||||
return;
|
||||
}
|
||||
|
||||
float startCenterX = start.getX() + (float) TOUCH_POINT_SIZE / 2;
|
||||
float startCenterY = start.getY() + (float) TOUCH_POINT_SIZE / 2;
|
||||
float endCenterX = end.getX() + (float) TOUCH_POINT_SIZE / 2;
|
||||
@ -862,79 +869,86 @@ public class FloatingViewManager {
|
||||
eventRepository.getSolutionWithEventsAndPoints(solutionId, new EventRepository.RepositoryCallback<SolutionWithEventsAndPoints>() {
|
||||
@Override
|
||||
public void onComplete(SolutionWithEventsAndPoints solutionData) {
|
||||
if (solutionData != null && solutionData.events != null) {
|
||||
removeFloatingViews();
|
||||
runtimeEvents.clear();
|
||||
eventOrderCounter = 1;
|
||||
new Handler(Looper.getMainLooper()).post(() -> {
|
||||
if (solutionData != null && solutionData.events != null) {
|
||||
removeFloatingViews();
|
||||
runtimeEvents.clear();
|
||||
eventOrderCounter = 1;
|
||||
|
||||
for (SolutionWithEventsAndPoints.EventWithPoints eventWithPoints : solutionData.events) {
|
||||
EventEntity eventEntity = eventWithPoints.eventEntity;
|
||||
EventWrapper.EventType type = EventWrapper.EventType.valueOf(eventEntity.eventType);
|
||||
for (SolutionWithEventsAndPoints.EventWithPoints eventWithPoints : solutionData.events) {
|
||||
EventEntity eventEntity = eventWithPoints.eventEntity;
|
||||
EventWrapper.EventType type = EventWrapper.EventType.valueOf(eventEntity.eventType);
|
||||
|
||||
if (type == EventWrapper.EventType.POINT) {
|
||||
TouchPoint clickPoint = eventWithPoints.clickTouchPoint;
|
||||
if (clickPoint != null) {
|
||||
PointEvent pointEvent = new PointEvent(eventEntity.orderInSolution, clickPoint.x, clickPoint.y);
|
||||
TextView pointView = createTouchPointView(String.valueOf(pointEvent.getId()));
|
||||
WindowManager.LayoutParams params = createTouchPointParams();
|
||||
params.x = pointEvent.getX();
|
||||
params.y = pointEvent.getY();
|
||||
pointView.setLayoutParams(params);
|
||||
pointEvent.setView(pointView);
|
||||
setupDraggablePoint(pointView, params, pointEvent);
|
||||
windowManager.addView(pointView, params);
|
||||
runtimeEvents.add(new EventWrapper(type, pointEvent, pointEvent.getId()));
|
||||
if (type == EventWrapper.EventType.POINT) {
|
||||
TouchPoint clickPoint = eventWithPoints.clickTouchPoint;
|
||||
if (clickPoint != null) {
|
||||
PointEvent pointEvent = new PointEvent(eventEntity.orderInSolution, clickPoint.x, clickPoint.y);
|
||||
TextView pointView = createTouchPointView(String.valueOf(pointEvent.getId()));
|
||||
WindowManager.LayoutParams params = createTouchPointParams();
|
||||
params.x = pointEvent.getX();
|
||||
params.y = pointEvent.getY();
|
||||
pointView.setLayoutParams(params);
|
||||
pointEvent.setView(pointView);
|
||||
setupDraggablePoint(pointView, params, pointEvent);
|
||||
windowManager.addView(pointView, params);
|
||||
runtimeEvents.add(new EventWrapper(type, pointEvent, pointEvent.getId()));
|
||||
}
|
||||
} else if (type == EventWrapper.EventType.SLIDE) {
|
||||
TouchPoint startPointData = eventWithPoints.slideStartTouchPoint;
|
||||
TouchPoint endPointData = eventWithPoints.slideEndTouchPoint;
|
||||
if (startPointData != null && endPointData != null) {
|
||||
PointEvent startPointEvent = new PointEvent(eventEntity.orderInSolution, startPointData.x, startPointData.y);
|
||||
PointEvent endPointEvent = new PointEvent(eventEntity.orderInSolution, endPointData.x, endPointData.y);
|
||||
|
||||
TextView startPointView = createTouchPointView(String.valueOf(startPointEvent.getId()));
|
||||
WindowManager.LayoutParams startParams = createTouchPointParams();
|
||||
startParams.x = startPointEvent.getX();
|
||||
startParams.y = startPointEvent.getY();
|
||||
startPointView.setLayoutParams(startParams);
|
||||
|
||||
TextView endPointView = createTouchPointView(String.valueOf(endPointEvent.getId()));
|
||||
WindowManager.LayoutParams endParams = createTouchPointParams();
|
||||
endParams.x = endPointEvent.getX();
|
||||
endParams.y = endPointEvent.getY();
|
||||
endPointView.setLayoutParams(endParams);
|
||||
|
||||
ConnectingLineView lineView = new ConnectingLineView(context);
|
||||
WindowManager.LayoutParams lineParams = createLineViewParams();
|
||||
|
||||
SlideEvent slideEvent = new SlideEvent(eventEntity.orderInSolution, startPointEvent, endPointEvent);
|
||||
slideEvent.setLineView(lineView);
|
||||
slideEvent.setLineParams(lineParams);
|
||||
|
||||
setupDraggableSlidePoint(startPointView, startParams, startPointEvent, slideEvent);
|
||||
setupDraggableSlidePoint(endPointView, endParams, endPointEvent, slideEvent);
|
||||
|
||||
windowManager.addView(lineView, lineParams);
|
||||
windowManager.addView(startPointView, startParams);
|
||||
windowManager.addView(endPointView, endParams);
|
||||
|
||||
updateLinePosition(slideEvent);
|
||||
runtimeEvents.add(new EventWrapper(type, slideEvent, slideEvent.getId()));
|
||||
}
|
||||
}
|
||||
} else if (type == EventWrapper.EventType.SLIDE) {
|
||||
TouchPoint startPointData = eventWithPoints.slideStartTouchPoint;
|
||||
TouchPoint endPointData = eventWithPoints.slideEndTouchPoint;
|
||||
if (startPointData != null && endPointData != null) {
|
||||
PointEvent startPointEvent = new PointEvent(eventEntity.orderInSolution, startPointData.x, startPointData.y);
|
||||
PointEvent endPointEvent = new PointEvent(eventEntity.orderInSolution, endPointData.x, endPointData.y);
|
||||
|
||||
TextView startPointView = createTouchPointView(String.valueOf(startPointEvent.getId()));
|
||||
WindowManager.LayoutParams startParams = createTouchPointParams();
|
||||
startParams.x = startPointEvent.getX();
|
||||
startParams.y = startPointEvent.getY();
|
||||
startPointView.setLayoutParams(startParams);
|
||||
|
||||
TextView endPointView = createTouchPointView(String.valueOf(endPointEvent.getId()));
|
||||
WindowManager.LayoutParams endParams = createTouchPointParams();
|
||||
endParams.x = endPointEvent.getX();
|
||||
endParams.y = endPointEvent.getY();
|
||||
endPointView.setLayoutParams(endParams);
|
||||
|
||||
ConnectingLineView lineView = new ConnectingLineView(context);
|
||||
WindowManager.LayoutParams lineParams = createLineViewParams();
|
||||
|
||||
SlideEvent slideEvent = new SlideEvent(eventEntity.orderInSolution, startPointEvent, endPointEvent);
|
||||
|
||||
setupDraggableSlidePoint(startPointView, startParams, startPointEvent, slideEvent);
|
||||
setupDraggableSlidePoint(endPointView, endParams, endPointEvent, slideEvent);
|
||||
|
||||
windowManager.addView(lineView, lineParams);
|
||||
windowManager.addView(startPointView, startParams);
|
||||
windowManager.addView(endPointView, endParams);
|
||||
|
||||
updateLinePosition(slideEvent);
|
||||
runtimeEvents.add(new EventWrapper(type, slideEvent, slideEvent.getId()));
|
||||
if (eventEntity.orderInSolution >= eventOrderCounter) {
|
||||
eventOrderCounter = eventEntity.orderInSolution + 1;
|
||||
}
|
||||
}
|
||||
if (eventEntity.orderInSolution >= eventOrderCounter) {
|
||||
eventOrderCounter = eventEntity.orderInSolution + 1;
|
||||
}
|
||||
updateServicePositions();
|
||||
Toast.makeText(context, "方案 '" + solutionData.solution.solutionName + "' 加载成功!", Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(context, "加载方案失败或方案不存在。", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
updateServicePositions();
|
||||
Toast.makeText(context, "方案 '" + solutionData.solution.solutionName + "' 加载成功!", Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(context, "加载方案失败或方案不存在。", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception e) {
|
||||
Log.e(TAG, "加载方案失败: " + e.getMessage(), e);
|
||||
Toast.makeText(context, "加载方案失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
new Handler(Looper.getMainLooper()).post(() ->
|
||||
Toast.makeText(context, "加载方案失败: " + e.getMessage(), Toast.LENGTH_SHORT).show()
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user