diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/view/drawline/LineView.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/view/drawline/LineView.kt new file mode 100644 index 0000000000..8c1db07863 --- /dev/null +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/view/drawline/LineView.kt @@ -0,0 +1,69 @@ +package com.magic.mogo.och.charter.view.view.drawline + +import android.content.Context +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatImageView +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.findViewTreeViewModelStoreOwner +import com.magic.mogo.och.charter.R +import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bridge.autopilot.line.LineManager + +/** + * + */ +class LineView : AppCompatImageView, LineViewModel.ILineViewCallback { + + private val TAG = "LineView" + + constructor(context: Context) : super(context) + + constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) + + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super( + context, + attributeSet, + defStyleAttr + ) + + private fun initView() { + setImageResource(R.drawable.charter_map_line_close) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + + onClick { + if (LineManager.hasDrawnGlobalTrajectory()) { + LineManager.clearGlobalTrajectory(false) + } else { + val drawGlobalTrajectory = LineManager.drawGlobalTrajectory() + if (!drawGlobalTrajectory.first) { + ToastUtils.showLong(drawGlobalTrajectory.second) + } + } + } + + val viewModel = findViewTreeViewModelStoreOwner()?.let { + ViewModelProvider(it).get(LineViewModel::class.java) + } + viewModel?.setDistanceCallback(this) + + } + + + init { + try { + initView() + } catch (e: Exception) { + e.printStackTrace() + } + } + + override fun setImageViewResource(name: Int) { + setImageResource(name) + } + + +} \ No newline at end of file diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/view/drawline/LineViewModel.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/view/drawline/LineViewModel.kt new file mode 100644 index 0000000000..871440d694 --- /dev/null +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/view/drawline/LineViewModel.kt @@ -0,0 +1,45 @@ +package com.magic.mogo.och.charter.view.view.drawline + +import androidx.annotation.DrawableRes +import androidx.lifecycle.ViewModel +import com.magic.mogo.och.charter.R +import com.mogo.och.bridge.autopilot.line.ILineCallback +import com.mogo.och.bridge.autopilot.line.LineManager + +class LineViewModel : ViewModel(), ILineCallback { + + private val TAG = LineViewModel::class.java.simpleName + + private var viewCallback: ILineViewCallback? = null + + init { + + } + + override fun onCleared() { + super.onCleared() + LineManager.removeListener(TAG) + this.viewCallback = null + } + + fun setDistanceCallback(viewCallback: ILineViewCallback) { + LineManager.addListener(TAG,this) + this.viewCallback = viewCallback + } + + override fun clearLineSuccess() { + this.viewCallback?.setImageViewResource(R.drawable.charter_map_line_close) + } + + override fun drawLineSuccess() { + this.viewCallback?.setImageViewResource(R.drawable.charter_map_line_open) + } + + override fun drawLineFail() { + this.viewCallback?.setImageViewResource(R.drawable.charter_map_line_close) + } + + interface ILineViewCallback { + fun setImageViewResource(@DrawableRes name: Int) + } +} \ No newline at end of file diff --git a/OCH/charter/driver/src/main/res/drawable-nodpi/charter_map_line_close.png b/OCH/charter/driver/src/main/res/drawable-nodpi/charter_map_line_close.png new file mode 100644 index 0000000000..4187e3ddbd Binary files /dev/null and b/OCH/charter/driver/src/main/res/drawable-nodpi/charter_map_line_close.png differ diff --git a/OCH/charter/driver/src/main/res/drawable-nodpi/charter_map_line_open.png b/OCH/charter/driver/src/main/res/drawable-nodpi/charter_map_line_open.png new file mode 100644 index 0000000000..8bfc10bae6 Binary files /dev/null and b/OCH/charter/driver/src/main/res/drawable-nodpi/charter_map_line_open.png differ diff --git a/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml b/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml index c0e0c1341b..4b1fc9337c 100644 --- a/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml +++ b/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml @@ -197,7 +197,7 @@ android:layout_width="@dimen/dp_142" android:layout_height="@dimen/dp_142"/> -