From ddc27b61f0c314c867bee247820244ebc69055da Mon Sep 17 00:00:00 2001 From: Schahin Rouhanizadeh Date: Thu, 18 Aug 2022 02:16:08 +0200 Subject: [PATCH] Implemented successfully delete Measurements Resetted Pendulum Logic to 55cd99ef36e2f12c0a4c9d73bfbc95e5044e3950 --- .idea/misc.xml | 9 ++- .../acapendulum20/canvas/CanvasPendulum.kt | 64 ++++++++++--------- .../fragments/pendulum/PendulumFragment.kt | 6 +- .../fragments/update/MeasurementList.kt | 14 ++-- .../fragments/update/UpdateFragment.kt | 12 ++-- .../viewmodel/MeasurementViewmodel.kt | 2 +- 6 files changed, 60 insertions(+), 47 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index f86549b..16389f9 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -12,19 +12,18 @@ - - - + - + - + + diff --git a/app/src/main/java/com/example/acapendulum20/canvas/CanvasPendulum.kt b/app/src/main/java/com/example/acapendulum20/canvas/CanvasPendulum.kt index 709673c..aae0c75 100644 --- a/app/src/main/java/com/example/acapendulum20/canvas/CanvasPendulum.kt +++ b/app/src/main/java/com/example/acapendulum20/canvas/CanvasPendulum.kt @@ -26,6 +26,7 @@ class CanvasPendulum @JvmOverloads constructor( this.canvas = it } + //println("ONDRAW") //draw line mPendulum.startPosition.x = (width / 2).toFloat() paint.isAntiAlias = true @@ -47,7 +48,7 @@ class CanvasPendulum @JvmOverloads constructor( canvas?.drawCircle( mPendulum.stopPosition.x, mPendulum.stopPosition.y, - mPendulum.ballRadius, + mPendulum.ballr, paint ) @@ -56,7 +57,7 @@ class CanvasPendulum @JvmOverloads constructor( paint.strokeWidth = 1f paint.color = Color.RED if (mPendulum.angleVelocity > 0) { - if (mPendulum.stopPosition.x < (width / 3) - 30f && mPendulum.stopPosition.x + 30 > (width / 3) - 30f - mPendulum.ballRadius) { + if (mPendulum.stopPosition.x < (width / 3) - 30f && mPendulum.stopPosition.x + 30 > (width / 3) - 30f - mPendulum.ballr) { paint.style = Paint.Style.FILL_AND_STROKE paint.strokeWidth = 10f paint.color = Color.GREEN @@ -69,7 +70,7 @@ class CanvasPendulum @JvmOverloads constructor( paint.strokeWidth = 1f paint.color = Color.RED if (mPendulum.angleVelocity < 0) { - if (mPendulum.stopPosition.x > (width / 1.5) - 30f && mPendulum.stopPosition.x + 30 < (width / 1.5) + 30f + mPendulum.ballRadius) { + if (mPendulum.stopPosition.x > (width / 1.5) - 30f && mPendulum.stopPosition.x + 30 < (width / 1.5) + 30f + mPendulum.ballr) { paint.style = Paint.Style.FILL_AND_STROKE paint.strokeWidth = 10f paint.color = Color.GREEN @@ -85,39 +86,45 @@ class CanvasPendulum @JvmOverloads constructor( if (mPendulum.magneticField) { + var gravity = 0.981f + var damping = 0.996f + if (mPendulum.stopPosition.x > canvas.width / 4f && mPendulum.stopPosition.x <= canvas.width * 0.75f) { - mPendulum.gravity = 1.981f + gravity = 1.981f if (mPendulum.stopPosition.x > canvas.width / 3.toFloat() && mPendulum.stopPosition.x <= canvas.width / 1.5.toFloat()) { - mPendulum.gravity = 2.981f + gravity = 2.981f if (mPendulum.stopPosition.x >= canvas.width / 2.toFloat() - 3 && mPendulum.stopPosition.x <= canvas.width / 2.toFloat() + 3) { - mPendulum.damping = 0.3f + damping = 0.3f } } } - mPendulum.angleAcceleration = ((-1 * mPendulum.gravity / mPendulum.stringLength) * (mPendulum.startAngle)).toFloat() + mPendulum.angleAcceleration = + ((-1 * gravity / mPendulum.r) * (mPendulum.angle)).toFloat() mPendulum.angleVelocity += mPendulum.angleAcceleration - mPendulum.angleVelocity *= mPendulum.damping - mPendulum.startAngle += mPendulum.angleVelocity + mPendulum.angleVelocity *= damping + mPendulum.angle += mPendulum.angleVelocity //Polar to cartesian conversion - mPendulum.stopPosition.x = mPendulum.stringLength * (sin(mPendulum.startAngle)).toFloat() - mPendulum.stopPosition.y = mPendulum.stringLength * (cos(mPendulum.startAngle)).toFloat() + mPendulum.stopPosition.x = mPendulum.r * (sin(mPendulum.angle)).toFloat() + mPendulum.stopPosition.y = mPendulum.r * (cos(mPendulum.angle)).toFloat() //Origin transition mPendulum.stopPosition.x += mPendulum.startPosition.x } if (!mPendulum.magneticField) { + val gravity = 0.981f + val damping = 0.996f - - mPendulum.angleAcceleration = ((-1 * mPendulum.gravity / mPendulum.stringLength) * (mPendulum.startAngle)).toFloat() + mPendulum.angleAcceleration = + ((-1 * gravity / mPendulum.r) * (mPendulum.angle)).toFloat() mPendulum.angleVelocity += mPendulum.angleAcceleration - mPendulum.angleVelocity *= mPendulum.damping - mPendulum.startAngle += mPendulum.angleVelocity + mPendulum.angleVelocity *= damping + mPendulum.angle += mPendulum.angleVelocity //Polar to cartesian conversion - mPendulum.stopPosition.x = mPendulum.stringLength * (sin(mPendulum.startAngle)).toFloat() - mPendulum.stopPosition.y = mPendulum.stringLength * (cos(mPendulum.startAngle)).toFloat() + mPendulum.stopPosition.x = mPendulum.r * (sin(mPendulum.angle)).toFloat() + mPendulum.stopPosition.y = mPendulum.r * (cos(mPendulum.angle)).toFloat() //Origin transition mPendulum.stopPosition.x += mPendulum.startPosition.x } @@ -131,11 +138,11 @@ class CanvasPendulum @JvmOverloads constructor( mPendulum.magneticField = magnet } - fun getVelocity(): Double { - var currentVelocity = mPendulum.angleVelocity * 1000 + fun getVelocity(): Double { + var currentVelocity = mPendulum.angleVelocity * 1000 - val roundoff = (currentVelocity * 100.0).roundToInt() / 100.0 - return abs(roundoff) + val roundoff = (currentVelocity * 100.0).roundToInt() / 100.0 + return abs(roundoff) } } @@ -147,15 +154,12 @@ class Pendulum { var startPosition: Position = Position(0f, 0f) var stopPosition: Position = Position(0f, 0f) + var r = 800f - var startAngle: Double = Math.PI / 12 - var stringLength = 750f - var ballRadius: Float = 70.0f - var damping = 0.996f - - var angleVelocity: Float = 0.0f - var angleAcceleration: Float = 0.0f - - var gravity = 0.981f + //PI/6 Max ausschwingen + var angle: Double = Math.PI / 12 + var angleVelocity: Float = 0.0f // + var angleAcceleration: Float = 0.0f // + var ballr: Float = 70.0f // var magneticField: Boolean = false } \ No newline at end of file diff --git a/app/src/main/java/com/example/acapendulum20/fragments/pendulum/PendulumFragment.kt b/app/src/main/java/com/example/acapendulum20/fragments/pendulum/PendulumFragment.kt index cd16d9e..8bf0c2e 100644 --- a/app/src/main/java/com/example/acapendulum20/fragments/pendulum/PendulumFragment.kt +++ b/app/src/main/java/com/example/acapendulum20/fragments/pendulum/PendulumFragment.kt @@ -84,13 +84,15 @@ class PendulumFragment : Fragment() { magnetButton.setOnTouchListener(object : View.OnTouchListener{ override fun onTouch(v: View?, event: MotionEvent?): Boolean { if (event?.action == MotionEvent.ACTION_DOWN){ - //println("button action DOWN") + println("button action DOWN") mCanvasPendulum.startMagnet(true) + //mCanvasPendulum.magnet(true) } if (event?.action == MotionEvent.ACTION_UP){ - //println("button action UP") + println("button action UP") mCanvasPendulum.stopMagnet(false) + //mCanvasPendulum.magnet(false) } return true } diff --git a/app/src/main/java/com/example/acapendulum20/fragments/update/MeasurementList.kt b/app/src/main/java/com/example/acapendulum20/fragments/update/MeasurementList.kt index 39a5e1a..f3c36d6 100644 --- a/app/src/main/java/com/example/acapendulum20/fragments/update/MeasurementList.kt +++ b/app/src/main/java/com/example/acapendulum20/fragments/update/MeasurementList.kt @@ -16,9 +16,9 @@ import java.text.SimpleDateFormat import java.util.* import com.example.acapendulum20.viewmodel.MeasurementViewmodel -class MeasurementList: RecyclerView.Adapter() { +class MeasurementList(private var mMeasurementViewmodel: MeasurementViewmodel): RecyclerView.Adapter() { + - private lateinit var mMeasurementViewmodel: MeasurementViewmodel private var sessionList = emptyList() @@ -52,7 +52,7 @@ class MeasurementList: RecyclerView.Adapter() { holder.itemView.usedHand_txt.text = "used hand: " + currentItem.usedHand holder.itemView.deleteMeasurement_btn.setOnClickListener{ - deleteMeasurement() + deleteMeasurement(currentItem) } } @@ -62,8 +62,12 @@ class MeasurementList: RecyclerView.Adapter() { notifyDataSetChanged() } - private fun deleteMeasurement() { - mMeasurementViewmodel = ViewModelProvider(this).get(MeasurementViewmodel::class.java) + private fun deleteMeasurement(currentItem: Measurement) { + //mMeasurementViewmodel = ViewModelProvider(this).get(MeasurementViewmodel::class.java) + println(mMeasurementViewmodel) + println(currentItem) + mMeasurementViewmodel.deleteMeasurement(currentItem) + println("Hopefully deleted the Measurement") } } diff --git a/app/src/main/java/com/example/acapendulum20/fragments/update/UpdateFragment.kt b/app/src/main/java/com/example/acapendulum20/fragments/update/UpdateFragment.kt index 6d46e79..9f0a8a8 100644 --- a/app/src/main/java/com/example/acapendulum20/fragments/update/UpdateFragment.kt +++ b/app/src/main/java/com/example/acapendulum20/fragments/update/UpdateFragment.kt @@ -64,19 +64,23 @@ class UpdateFragment : Fragment() { datePickerDialog.show() } + mUserViewModel = ViewModelProvider(this).get(UserViewmodel::class.java) + mMeasurementViewmodel = ViewModelProvider(this).get(MeasurementViewmodel::class.java) + mMeasurementViewmodel.readAllDataForUserId(args.currentUser.id) + + + //Recylerview - val adapter = MeasurementList() + val adapter = MeasurementList(mMeasurementViewmodel) val recyclerView = view.SessionRecyclerview recyclerView.adapter = adapter recyclerView.layoutManager = LinearLayoutManager(requireContext()) - mUserViewModel = ViewModelProvider(this).get(UserViewmodel::class.java) - mMeasurementViewmodel = ViewModelProvider(this).get(MeasurementViewmodel::class.java) - mMeasurementViewmodel.readAllDataForUserId(args.currentUser.id) mMeasurementViewmodel.readAllData.observe(viewLifecycleOwner, Observer { measurement -> adapter.setData(measurement) }) + view.updateFirstName_et.setText(args.currentUser.firstName) view.updateLastName_et.setText(args.currentUser.lastName) view.updateBirthday_et.setText(args.currentUser.birthday) diff --git a/app/src/main/java/com/example/acapendulum20/viewmodel/MeasurementViewmodel.kt b/app/src/main/java/com/example/acapendulum20/viewmodel/MeasurementViewmodel.kt index 66d92d4..cade02b 100644 --- a/app/src/main/java/com/example/acapendulum20/viewmodel/MeasurementViewmodel.kt +++ b/app/src/main/java/com/example/acapendulum20/viewmodel/MeasurementViewmodel.kt @@ -12,7 +12,7 @@ import kotlinx.coroutines.launch class MeasurementViewmodel(application: Application): AndroidViewModel(application) { - //lateinit var readAllData: LiveData> + lateinit var readAllData: LiveData> private val repository: MeasurementRepository init{