diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 09491e2..14c79cf 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -179,6 +179,10 @@
android:name=".activity.user.InputEmailActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="true" />
+
{
public static final String TAG = PointListFragment.class.getName();
- private PointRecordAdapter adapter;
+ private final static String KEY_TYPE = "___KEY___";
+
+ // private PointRecordAdapter adapter;
+ private PointListAdapter adapter;
@NonNull
private final ImportPointsUtil importPointsUtil;
- public PointListFragment() {
- importPointsUtil = new ImportPointsUtil(this);
+ /**
+ * 去未知点列表
+ *
+ * @param projectId
+ * @param context
+ */
+ public static void go2UnknownPointList(String projectId, String projectType, Context context) {
+ Bundle bundle = new Bundle();
+ bundle.putString(KEY_TYPE, PointRecord.TYPE_UNKNOWN_POINT);
+ bundle.putString(BundleConstants.KEY_PROJECT_ID, projectId);
+ bundle.putString(BundleConstants.KEY_PROJECT_TYPE, projectType);
+ FragmentContainerActivity.start(context, TAG, R.string.project_unknown_points, bundle);
}
- @Override
- protected void refreshRecyclerView(RecyclerView recyclerView) {
- if (getArguments() == null) {
- return;
- }
- String pointType = getArguments().getString(KEY_TYPE, PointRecord.TYPE_GLOBAL_POINT);
- String projectId = getArguments().getString(BundleConstants.KEY_PROJECT_ID);
- SurveyorDatabaseFactory
- .instance
- .getPointDataSource()
- .getLiveDataListByProject(projectId, pointType)
- .observe(getViewLifecycleOwner(), pointRecords -> updateData(pointRecords, recyclerView));
+ /**
+ * 去已知点列表
+ *
+ * @param projectId
+ * @param context
+ */
+ public static void go2KnownPointList(String projectId, String projectType, Context context) {
+ Bundle bundle = new Bundle();
+ bundle.putString(KEY_TYPE, PointRecord.TYPE_KNOWN_POINT);
+ bundle.putString(BundleConstants.KEY_PROJECT_ID, projectId);
+ bundle.putString(BundleConstants.KEY_PROJECT_TYPE, projectType);
+ FragmentContainerActivity.start(context, TAG, R.string.project_known_points, bundle);
}
- private void updateData(List pointRecords, RecyclerView recyclerView) {
+ /**
+ * 去全局控制点
+ *
+ * @param context
+ */
+ public static void go2GlobalPointList(Context context) {
+ Bundle bundle = new Bundle();
+ bundle.putString(KEY_TYPE, PointRecord.TYPE_GLOBAL_POINT);
+ bundle.putString(BundleConstants.KEY_PROJECT_ID, PointRecord.GLOBAL_CONTROL_POINT_PROJECT_ID);
+ FragmentContainerActivity.start(context, TAG, R.string.global_control_point, bundle);
+ }
+
+ public static PointListFragment newInstance(Bundle bundle) {
+ PointListFragment fragment = new PointListFragment();
+ fragment.setArguments(bundle);
+ return fragment;
+ }
+
+ public PointListFragment() {
+ importPointsUtil = new ImportPointsUtil(this);
+ }
+
+ /**
+ * 更新点列表
+ *
+ * @param pointRecords
+ */
+ private void updateData(List pointRecords) {
//排序
Collections.sort(pointRecords, (o1, o2) -> {
if (o1.getCreateDate().before(o2.getCreateDate())) {
@@ -65,15 +120,8 @@ public class PointListFragment extends AbstractRecyclerViewFragment {
}
return 0;
});
- if (adapter == null) {
- if (getActivity() == null) {
- return;
- }
- adapter = new PointRecordAdapter(pointRecords, getActivity());
- recyclerView.setAdapter(adapter);
- } else {
- adapter.updateData(pointRecords);
- }
+
+ adapter.refreshData(pointRecords);
}
@Override
@@ -85,90 +133,147 @@ public class PointListFragment extends AbstractRecyclerViewFragment {
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
- if (getArguments() != null) {
- String projectId = getArguments().getString(BundleConstants.KEY_PROJECT_ID);
- String pointType = getArguments().getString(KEY_TYPE, PointRecord.TYPE_GLOBAL_POINT);
- if (id == R.id.menu_item_import) {
- //导入
- importPointsUtil.showImportDialog(projectId, pointType);
- } else if (id == R.id.menu_item_clear) {
- //清空
- TipsFragment.cancelAbleTips(getChildFragmentManager(),
- getViewLifecycleOwner(),
- getContext(),
- getClearPointHint(pointType),
- 4,
- () -> clearPoints(projectId, pointType));
- } else if (R.id.menu_item_add == id) {
- //新建点
- PointFragment.start(getChildFragmentManager(),
- projectId,
- pointType);
- }
+ if (getArguments() == null) {
+ return super.onOptionsItemSelected(item);
+ }
+ String pointType = getPonitType();
+ String projectId = getProjectId();
+ if (id == R.id.menu_item_import) {
+ //导入点
+ importPoints(pointType, projectId);
+ } else if (id == R.id.menu_item_clear) {
+ //清空点
+ clearPoints(pointType, projectId);
}
return super.onOptionsItemSelected(item);
}
- private String getClearPointHint(String pointType) {
- //getString(R.string.tips_ready_2_clear_all_known_point),
- String s = "";
- if (PointRecord.TYPE_KNOWN_POINT.equals(pointType)) {
- s = Tools.getString(R.string.clear_point_list_hint, Tools.getString(R.string.control_point));
- } else if (PointRecord.TYPE_UNKNOWN_POINT.equals(pointType)) {
- s = Tools.getString(R.string.clear_point_list_hint, Tools.getString(R.string.unknown_point));
- } else if (PointRecord.TYPE_GLOBAL_POINT.equals(pointType)) {
- s = Tools.getString(R.string.clear_point_list_hint, Tools.getString(R.string.global_control_point));
- }
- return s;
+ private String getPonitType() {
+ return requireArguments().getString(KEY_TYPE, PointRecord.TYPE_GLOBAL_POINT);
}
- private void clearPoints(String projectId, String pointType) {
- ThreadPoolUtil.execute(() -> PointUtil.clearPointRecord(projectId, pointType));
+ private String getProjectId() {
+ return requireArguments().getString(BundleConstants.KEY_PROJECT_ID);
}
- private final static String KEY_TYPE = "___KEY___";
+ private String getProjectType() {
+ return requireArguments().getString(BundleConstants.KEY_PROJECT_TYPE);
+ }
/**
- * 去未知点列表
- *
- * @param projectId
- * @param context
+ * 创建点
*/
- public static void go2UnknownPointList(String projectId, Context context) {
- Bundle bundle = new Bundle();
- bundle.putString(KEY_TYPE, PointRecord.TYPE_UNKNOWN_POINT);
- bundle.putString(BundleConstants.KEY_PROJECT_ID, projectId);
- FragmentContainerActivity.start(context, TAG, R.string.project_unknown_points, bundle);
+ private void createPoints(String pointType, String projectId, String projectType) {
+ goCreateEditPointActvity(projectId, projectType, pointType, null);
+ }
+
+ private void goCreateEditPointActvity(String projectId, String projectType, String pointType, PointRecord bean) {
+ CreateEditPointActvity.launch(requireContext(), projectId, projectType,
+ pointType, bean);
}
/**
- * 去已知点列表
- *
- * @param projectId
- * @param context
+ * 清空点
*/
- public static void go2KnownPointList(String projectId, Context context) {
- Bundle bundle = new Bundle();
- bundle.putString(KEY_TYPE, PointRecord.TYPE_KNOWN_POINT);
- bundle.putString(BundleConstants.KEY_PROJECT_ID, projectId);
- FragmentContainerActivity.start(context, TAG, R.string.project_known_points, bundle);
+ private void clearPoints(String pointType, String projectId) {
+ DialogUtil.showConfirmCountDownDialog(getChildFragmentManager(), getViewLifecycleOwner(),
+ getString(R.string.tips_ready_2_clear_all_known_point),
+ Tools.getString(R.string.confirm), () -> SurveyorDatabaseFactory
+ .instance
+ .getPointDataSource()
+ .clearByProjectId(projectId, pointType));
}
/**
- * 去全局控制点
- *
- * @param context
+ * 导入点
*/
- public static void go2GlobalPointList(Context context) {
- Bundle bundle = new Bundle();
- bundle.putString(KEY_TYPE, PointRecord.TYPE_GLOBAL_POINT);
- bundle.putString(BundleConstants.KEY_PROJECT_ID, PointRecord.GLOBAL_CONTROL_POINT_PROJECT_ID);
- FragmentContainerActivity.start(context, TAG, R.string.global_control_point, bundle);
+ private void importPoints(String pointType, String projectId) {
+ importPointsUtil.showImportDialog(projectId, pointType);
}
- public static PointListFragment newInstance(Bundle bundle) {
- PointListFragment fragment = new PointListFragment();
- fragment.setArguments(bundle);
- return fragment;
+ @Override
+ protected NewFragmentPointListBinding getViewBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {
+ return NewFragmentPointListBinding.inflate(inflater, container, false);
+ }
+
+ @Override
+ protected void initView() {
+ setHasOptionsMenu(true);
+ initAapter();
+ initListener();
+ }
+
+ private void initListener() {
+ mBinding.tvNewPoint.setOnClickListener((v) -> {
+ //新建点
+ if (getArguments() == null) {
+ return;
+ }
+ createPoints(getPonitType(), getProjectId(), getProjectType());
+ });
+ }
+
+ private void initAapter() {
+ mBinding.ilSwipeList.swipeRecyclerView.addItemDecoration(new DefaultItemDecoration(Tools.getColor(R.color.transparent), 1, 1));
+ mBinding.ilSwipeList.swipeRecyclerView.setSwipeMenuCreator(new SwipeMenuEditDelete(requireContext()));
+ mBinding.ilSwipeList.swipeRecyclerView.setOnItemMenuClickListener((menuBridge, adapterPosition) -> {
+ menuBridge.closeMenu();
+ dealMenuClick(menuBridge.getPosition(), adapter.getBean(adapterPosition));
+ });
+ adapter = new PointListAdapter(requireContext());
+ adapter.setProjectType(getProjectType());
+ mBinding.ilSwipeList.swipeRecyclerView.setAdapter(adapter);
+ }
+
+ /**
+ * @param menuPostion 编辑或删除的position
+ * @param bean 数据模型
+ */
+ private void dealMenuClick(int menuPostion, PointRecord bean) {
+ if (SwipeMenuEditDelete.isEditMenu(menuPostion)) {
+ startEdit(bean);
+ } else if (SwipeMenuEditDelete.isDeleteMenu(menuPostion)) {
+ startDelete(bean);
+ }
+ }
+
+ private void startDelete(PointRecord bean) {
+ SurveyorDatabaseFactory
+ .instance
+ .getPointDataSource()
+ .delete(bean);
+ }
+
+ private void startEdit(PointRecord bean) {
+ goCreateEditPointActvity(getProjectId(), getProjectType(), getPonitType(), bean);
+ }
+
+
+ @Override
+ protected void initData() {
+ if (getArguments() == null) {
+ return;
+ }
+ String pointType = getArguments().getString(KEY_TYPE, PointRecord.TYPE_GLOBAL_POINT);
+ String projectId = getArguments().getString(BundleConstants.KEY_PROJECT_ID);
+
+ String projectType = getProjectType();
+ ThreadPoolUtil.execute(() -> {
+ //是否是平面坐标
+ boolean isPlatCoordinate = true;
+ if (ProjectType.isHeightTraverse(projectType)) {
+ isPlatCoordinate = false;
+ }
+ adapter.setIsPlatCoordinate(isPlatCoordinate);
+ getData(projectId, pointType);
+ });
+ }
+
+ private void getData(String projectId, String pointType) {
+ ThreadPoolUtil.executeInMain(() -> SurveyorDatabaseFactory
+ .instance
+ .getPointDataSource()
+ .getLiveDataListByProject(projectId, pointType)
+ .observe(getViewLifecycleOwner(), this::updateData));
}
}
diff --git a/app/src/main/java/com/bingce/controlnetwork/fragment/projectdetail/ProjectDetailFragment.kt b/app/src/main/java/com/bingce/controlnetwork/fragment/projectdetail/ProjectDetailFragment.kt
index f06cc88..622aeea 100644
--- a/app/src/main/java/com/bingce/controlnetwork/fragment/projectdetail/ProjectDetailFragment.kt
+++ b/app/src/main/java/com/bingce/controlnetwork/fragment/projectdetail/ProjectDetailFragment.kt
@@ -127,6 +127,7 @@ abstract class ProjectDetailFragment : BaseFragment() {
mBinding.unknownPointList.setOnClickListener { view ->
PointListFragment.go2UnknownPointList(
projectId,
+ projectType,
context
)
}
@@ -136,6 +137,7 @@ abstract class ProjectDetailFragment : BaseFragment() {
mBinding.knownPointList.setOnClickListener { view ->
PointListFragment.go2KnownPointList(
projectId,
+ projectType,
context
)
}
diff --git a/app/src/main/java/com/bingce/controlnetwork/func/level/fragment/ProjectDetailLevelFragment.java b/app/src/main/java/com/bingce/controlnetwork/func/level/fragment/ProjectDetailLevelFragment.java
index 58c5eeb..2bf7064 100644
--- a/app/src/main/java/com/bingce/controlnetwork/func/level/fragment/ProjectDetailLevelFragment.java
+++ b/app/src/main/java/com/bingce/controlnetwork/func/level/fragment/ProjectDetailLevelFragment.java
@@ -97,13 +97,13 @@ public class ProjectDetailLevelFragment extends BaseFragment {
private void initUnKnownPoint(View unknown) {
ViewUtil.setOnClick(unknown,
- v -> PointListFragment.go2UnknownPointList(projectId, getContext()));
+ v -> PointListFragment.go2UnknownPointList(projectId, projectType, getContext()));
}
private void initKnownPoint(View known) {
ViewUtil.setOnClick(
known,
- v -> PointListFragment.go2KnownPointList(projectId, getContext()));
+ v -> PointListFragment.go2KnownPointList(projectId, projectType, getContext()));
}
@Override
diff --git a/app/src/main/java/com/bingce/controlnetwork/newui/adapter/PointListAdapter.java b/app/src/main/java/com/bingce/controlnetwork/newui/adapter/PointListAdapter.java
new file mode 100644
index 0000000..43f738f
--- /dev/null
+++ b/app/src/main/java/com/bingce/controlnetwork/newui/adapter/PointListAdapter.java
@@ -0,0 +1,61 @@
+package com.bingce.controlnetwork.newui.adapter;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+
+import com.bingce.controlapphelper.datasource.database.ProjectTypeValue;
+import com.bingce.controlapphelper.datasource.database.point.PointRecord;
+import com.bingce.controlnetwork.databinding.NewItemPointListBinding;
+import com.bingce.controlnetwork.newui.viewholder.PointListViewHolder;
+
+
+public class PointListAdapter extends BaseAdapterNew {
+
+ private boolean isPlatCoordinate;
+ private String projectType;
+
+ public PointListAdapter(Context context) {
+ super(context);
+ }
+
+ @NonNull
+ @Override
+ public PointListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ return new PointListViewHolder(NewItemPointListBinding.inflate(getInflater(), parent, false));
+ }
+
+ @Override
+ protected void onBindViewHolderDo(PointListViewHolder holder, int position) {
+ PointRecord pointRecordTj = mDataList.get(position);
+ //num就是name 因为从天津拷贝过来的
+ holder.mBinding.tvPointNum.setText(pointRecordTj.getName());
+// holder.mBinding.tvPointName.setText("");
+
+ if (ProjectTypeValue.LEVEL.equals(projectType)) {
+ holder.mBinding.tvX.setVisibility(View.GONE);
+ holder.mBinding.tvY.setVisibility(View.GONE);
+ holder.mBinding.tvZ.setText("高程:" + pointRecordTj.getZ());
+ } else {
+ if (isPlatCoordinate) {
+ holder.mBinding.tvX.setText("X:" + pointRecordTj.getX());
+ holder.mBinding.tvY.setText("Y:" + pointRecordTj.getY());
+ holder.mBinding.tvZ.setText("Z:" + pointRecordTj.getZ());
+ } else {
+ holder.mBinding.tvX.setText("经度:" + pointRecordTj.getLongitude());
+ holder.mBinding.tvY.setText("纬度:" + pointRecordTj.getLatitude());
+ holder.mBinding.tvZ.setText("高程:" + pointRecordTj.getZ());
+ }
+ }
+ }
+
+ public void setIsPlatCoordinate(boolean isPlatCoordinate) {
+ this.isPlatCoordinate = isPlatCoordinate;
+ }
+
+ public void setProjectType(String projectType) {
+ this.projectType = projectType;
+ }
+}
diff --git a/app/src/main/java/com/bingce/controlnetwork/newui/createeditpoint/CreateEditPointActvity.kt b/app/src/main/java/com/bingce/controlnetwork/newui/createeditpoint/CreateEditPointActvity.kt
new file mode 100644
index 0000000..5f35373
--- /dev/null
+++ b/app/src/main/java/com/bingce/controlnetwork/newui/createeditpoint/CreateEditPointActvity.kt
@@ -0,0 +1,365 @@
+package com.bingce.controlnetwork.newui.createeditpoint
+
+import android.content.Context
+import android.content.Intent
+import android.text.TextUtils
+import android.view.View
+import androidx.annotation.StringRes
+import androidx.annotation.WorkerThread
+import androidx.lifecycle.lifecycleScope
+import blankj.utilcode.util.ToastUtils
+import com.bingce.controlapphelper.datasource.database.ProjectTypeValue
+import com.bingce.controlapphelper.datasource.database.SurveyorDatabaseFactory
+import com.bingce.controlapphelper.datasource.database.point.PointRecord
+import com.bingce.controlapphelper.model.BundleConstants
+import com.bingce.controlnetwork.R
+import com.bingce.controlnetwork.databinding.ActivityNewUiCreateEditPointBinding
+import com.bingce.controlnetwork.fragment.TipsFragment
+import com.bingce.controlnetwork.newui.base.BaseBindingActivity
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+
+/**
+ * 新建或编辑点
+ */
+class CreateEditPointActvity : BaseBindingActivity() {
+
+ private var editPoint: PointRecord? = null
+
+ private var isKnown = false
+
+ companion object {
+ const val KEY_POINT_TYPE = "KEY_POINT_TYPE"
+ const val KEY_EDIT_POINT = "KEY_EDIT_POINT"
+
+ @JvmStatic
+ fun launch(
+ context: Context,
+ projectId: String,
+ projectType: String,
+ pointType: String,
+ eidtPoint: PointRecord? = null
+ ) {
+ context.startActivity(Intent(context, CreateEditPointActvity::class.java).apply {
+ putExtra(BundleConstants.KEY_PROJECT_ID, projectId)
+ putExtra(BundleConstants.KEY_PROJECT_TYPE, projectType)
+ putExtra(KEY_POINT_TYPE, pointType)
+ putExtra(KEY_EDIT_POINT, eidtPoint)
+ })
+ }
+ }
+
+ override fun getBinding(): ActivityNewUiCreateEditPointBinding {
+ return ActivityNewUiCreateEditPointBinding.inflate(layoutInflater)
+ }
+
+ override fun initView() {
+ mBinding.ilPointNum.tvTitle.setText(R.string.point_name)
+ mBinding.ilPointNum.editText.setHint(R.string.please_enter_roll_call_optional)
+
+ setBaseUi()
+ initListener()
+ }
+
+ private fun initIntentData() {
+ val pointType = getPointType()
+ isKnown =
+ PointRecord.TYPE_KNOWN_POINT == pointType || PointRecord.TYPE_GLOBAL_POINT == pointType
+ editPoint = getEditPoint()
+ }
+
+ private fun initListener() {
+ mBinding.tvSaveContinue.setOnClickListener {
+ startSaveContinue()
+ }
+ mBinding.tvSaveQuit.setOnClickListener {
+ startSaveQuite()
+ }
+ }
+
+ private fun startSaveQuite() {
+ checkSave {
+ if (editPoint == null) {
+ saveRecordForCreate {
+ finish()
+ }
+ } else {
+ saveRecordForEdit(editPoint!!) {
+ finish()
+ }
+ }
+ }
+ }
+
+ private fun startSaveContinue() {
+ checkSave {
+ saveRecordForCreate()
+ clearContent()
+ val nextPointNum = getNextPointNum()
+ mBinding.ilPointNum.editText.setText(nextPointNum)
+ }
+ }
+
+ private fun checkSave(success: () -> Unit) {
+ val pointNum = getPointNumber()
+ if (TextUtils.isEmpty(pointNum)) {
+ ToastUtils.showShort(R.string.please_enter_point_number)
+ return
+ }
+
+ if (isKnown) {
+ if (mBinding.ilPointX.root.visibility == View.VISIBLE) {
+ val x = getX()
+ if (TextUtils.isEmpty(x)) {
+ val hint = R.string.please_input_x
+// val hint =
+// if (isPlatCood) R.string.please_input_x else R.string.please_input_longitude
+ ToastUtils.showShort(hint)
+ return
+ }
+ }
+ if (mBinding.ilPointY.root.visibility == View.VISIBLE) {
+ val y = getY()
+ if (TextUtils.isEmpty(y)) {
+ val hint = R.string.please_input_y
+// val hint =
+// if (isPlatCood) R.string.please_input_y else R.string.please_input_latitude
+ ToastUtils.showShort(hint)
+ return
+ }
+ }
+ val z = getZ()
+ if (TextUtils.isEmpty(z)) {
+ val hint=R.string.please_enter_elevation
+// val hint = if (isLevelProject()) {
+// R.string.please_enter_elevation
+// } else {
+// if (isPlatCood) R.string.please_input_z else R.string.please_enter_elevation
+// }
+ ToastUtils.showShort(hint)
+ return
+ }
+ }
+
+ if (isNewCreatePoint()) {
+ checkSameNamePoint(pointNum) {
+ success()
+ }
+ return
+ }
+ success()
+ }
+
+ private fun checkSameNamePoint(pointNum: String, success: () -> Unit) {
+ lifecycleScope.launch {
+ val pointRecord = withContext(Dispatchers.IO) {
+ val pointDataSource = SurveyorDatabaseFactory.instance.getPointDataSource()
+ pointDataSource.findByNameSync(pointNum, getProjectId())
+ }
+
+ if (pointRecord != null) {
+ //点名重复,提示
+ TipsFragment.tipsOnly(
+ supportFragmentManager,
+ this@CreateEditPointActvity,
+ this@CreateEditPointActvity,
+ "同一项目下点号不能重复,请修改后重试操作。"
+ )
+ return@launch
+ }
+ success()
+ }
+ }
+
+ /**
+ * 设置平面还是大地坐标
+ */
+ private fun setBaseUi() {
+ if (!isNewCreatePoint()) {
+ mBinding.tvSaveContinue.visibility = View.GONE
+ }
+
+ if (isLevelProject()) {
+ mBinding.ilPointX.root.visibility = View.GONE
+ mBinding.ilPointY.root.visibility = View.GONE
+
+ setBaseTitleHint(
+ R.string.x_coord,
+ R.string.y_coord,
+ R.string.elevation,
+ R.string.please_input_x,
+ R.string.please_input_y,
+ R.string.please_enter_elevation
+ )
+ } else {
+ setBaseTitleHint(
+ R.string.x_coord, R.string.y_coord, R.string.z_coord,
+ R.string.please_input_x, R.string.please_input_y, R.string.please_input_z
+ )
+// setBaseTitleHint(
+// R.string.longitude,
+// R.string.latitude,
+// R.string.elevation,
+// R.string.please_input_longitude,
+// R.string.please_input_latitude,
+// R.string.please_enter_elevation
+// )
+ }
+
+ setEditData()
+ }
+
+ private fun setBaseTitleHint(
+ @StringRes xCoord: Int, yCoord: Int, zCoord: Int,
+ pleaseInputX: Int, pleaseInputY: Int, @StringRes pleaseInputZ: Int
+ ) {
+ mBinding.ilPointX.tvTitle.setText(xCoord)
+ mBinding.ilPointY.tvTitle.setText(yCoord)
+ mBinding.ilPointZ.tvTitle.setText(zCoord)
+ mBinding.ilPointX.editText.setHint(pleaseInputX)
+ mBinding.ilPointY.editText.setHint(pleaseInputY)
+ mBinding.ilPointZ.editText.setHint(pleaseInputZ)
+ }
+
+ private fun setEditData() {
+ editPoint?.let {
+ mBinding.ilPointNum.editText.setText(it.getName())
+
+ setCoordData(it.getX(), it.getY(), it.getZ())
+// setCoordData(it.getLongitude(), it.getLatitude(), it.getZ())
+ }
+ }
+
+ private fun setCoordData(x: Double, y: Double, z: Double) {
+ mBinding.ilPointX.editText.setText(x.toString())
+ mBinding.ilPointY.editText.setText(y.toString())
+ mBinding.ilPointZ.editText.setText(z.toString())
+ }
+
+ override fun initData() {
+
+
+ }
+
+ override fun initToolBar() {
+ initIntentData()
+ val title = if (editPoint == null) R.string.new_point else R.string.edit_point
+ setToolbarTitle(title)
+ super.initToolBar()
+ }
+
+ private fun getProjectId() = intent.getStringExtra(BundleConstants.KEY_PROJECT_ID)!!
+ private fun getProjectType() = intent.getStringExtra(BundleConstants.KEY_PROJECT_TYPE)!!
+
+ private fun getPointType() = intent.getStringExtra(KEY_POINT_TYPE)!!
+
+ private fun getEditPoint() =
+ intent.getParcelableExtra(KEY_EDIT_POINT)
+
+ private fun isNewCreatePoint() = editPoint == null
+
+ private fun getPointNumber() = mBinding.ilPointNum.editText.text.toString().trim()
+ private fun getX() = mBinding.ilPointX.editText.text.toString().trim()
+ private fun getY() = mBinding.ilPointY.editText.text.toString().trim()
+ private fun getZ() = mBinding.ilPointZ.editText.text.toString().trim()
+
+ private fun getXDouble(): Double {
+ return xToDouble(getX())
+ }
+
+ private fun getYDouble(): Double {
+ return xToDouble(getY())
+ }
+
+ private fun getZDouble(): Double {
+ return xToDouble(getZ())
+ }
+
+ private fun xToDouble(value: String): Double {
+ return if (TextUtils.isEmpty(value)) {
+ 0.0
+ } else {
+ value.toDouble()
+ }
+ }
+
+ private fun clearContent() {
+ mBinding.ilPointX.editText.setText("")
+ mBinding.ilPointY.editText.setText("")
+ mBinding.ilPointZ.editText.setText("")
+ mBinding.ilPointX.editText.requestFocus()
+ }
+
+ private fun getNextPointNum(): String {
+ val pointNumber = getPointNumber()
+ val index = getIndexForTianjin(pointNumber)
+ val word = getWordForTianjin(pointNumber)
+ return "${word}${index + 1}"
+ }
+
+ private fun getIndexForTianjin(pointName: String): Int {
+ val pre = "\\D*"
+ val data = pointName.replace(pre.toRegex(), "")
+ return try {
+ data.toInt()
+ } catch (e: NumberFormatException) {
+ 0
+ }
+ }
+
+ private fun getWordForTianjin(pointName: String): String {
+ val pre = "\\d*"
+ return pointName.replace(pre.toRegex(), "")
+ }
+
+ private fun saveRecordForEdit(pointRecord: PointRecord, success: () -> Unit) {
+ lifecycleScope.launch(Dispatchers.IO) {
+ pointRecord.setX(getXDouble())
+ pointRecord.setY(getYDouble())
+ pointRecord.setZ(getZDouble())
+ pointRecord.setName(getPointNumber())
+ pointRecord.setCode("")
+ pointRecord.setRemarks("")
+ SurveyorDatabaseFactory.instance
+ .getPointDataSource()
+ .saveSync(pointRecord)
+ success()
+ }
+ }
+
+ private fun saveRecordForCreate(success: (() -> Unit)? = null) {
+ lifecycleScope.launch(Dispatchers.IO) {
+ val pointRecord = createPointRecord(
+ getProjectId(), getPointType(), getPointNumber(), "",
+ getXDouble(), getYDouble(), getZDouble(), "", -1,
+ )
+ SurveyorDatabaseFactory.instance
+ .getPointDataSource()
+ .save(pointRecord)
+ success?.invoke()
+ }
+ }
+
+ @WorkerThread
+ private fun createPointRecord(
+ projectId: String,
+ pointType: String,
+ name: String,
+ code: String,
+ x: Double,
+ y: Double,
+ z: Double,
+ remarks: String,
+ orderIndex: Int,
+ ): PointRecord {
+ return PointRecord.point(
+ projectId, pointType, name, code,
+ x, y, z, remarks,
+ orderIndex.toLong()
+ )
+ }
+
+ private fun isLevelProject() = ProjectTypeValue.LEVEL == getProjectType()
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/bingce/controlnetwork/newui/viewholder/PointListViewHolder.java b/app/src/main/java/com/bingce/controlnetwork/newui/viewholder/PointListViewHolder.java
new file mode 100644
index 0000000..9e44d5e
--- /dev/null
+++ b/app/src/main/java/com/bingce/controlnetwork/newui/viewholder/PointListViewHolder.java
@@ -0,0 +1,15 @@
+package com.bingce.controlnetwork.newui.viewholder;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.bingce.controlnetwork.databinding.NewItemPointListBinding;
+
+
+public class PointListViewHolder extends RecyclerView.ViewHolder {
+ public final NewItemPointListBinding mBinding;
+
+ public PointListViewHolder(NewItemPointListBinding binding) {
+ super(binding.getRoot());
+ mBinding = binding;
+ }
+}
diff --git a/app/src/main/res/layout/activity_new_ui_create_edit_point.xml b/app/src/main/res/layout/activity_new_ui_create_edit_point.xml
new file mode 100644
index 0000000..b6b0171
--- /dev/null
+++ b/app/src/main/res/layout/activity_new_ui_create_edit_point.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/new_fragment_point_list.xml b/app/src/main/res/layout/new_fragment_point_list.xml
new file mode 100644
index 0000000..b44cead
--- /dev/null
+++ b/app/src/main/res/layout/new_fragment_point_list.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/new_item_point_list.xml b/app/src/main/res/layout/new_item_point_list.xml
new file mode 100644
index 0000000..77d279c
--- /dev/null
+++ b/app/src/main/res/layout/new_item_point_list.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/new_item_slide_edit_delete_hint.xml b/app/src/main/res/layout/new_item_slide_edit_delete_hint.xml
new file mode 100644
index 0000000..49719ed
--- /dev/null
+++ b/app/src/main/res/layout/new_item_slide_edit_delete_hint.xml
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 7b274bc..58dce6d 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -8,8 +8,8 @@
请输入加常数
请输入乘常数
请输入仪器高
- 注:列表左滑删除
新建i角检测
请选择
-
+ 注:列表左滑编辑、删除
+ 注:列表左滑删除
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fa37a23..0de26df 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -8,8 +8,8 @@
Please enter the addition constant
Please enter the multiplication constant
Please enter the instrument height
- Note: Swipe left on the list to delete it
NEW I CORNER DETECTION
Please choose
-
+ Note: Swipe left on the list to delete it
+ Note: Swipe left on the list to delete it
\ No newline at end of file
diff --git a/control_common b/control_common
index 697c229..6d4b6fb 160000
--- a/control_common
+++ b/control_common
@@ -1 +1 @@
-Subproject commit 697c229579216c89f87450553f99e87f4813c60f
+Subproject commit 6d4b6fbdb26fe2e4218f2e17e36bc903f07c78cf