diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/adapters/StopwatchAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/clock/adapters/StopwatchAdapter.kt new file mode 100644 index 00000000..80976d13 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/clock/adapters/StopwatchAdapter.kt @@ -0,0 +1,60 @@ +package com.simplemobiletools.clock.adapters + +import android.view.Menu +import android.view.View +import android.view.ViewGroup +import com.simplemobiletools.clock.R +import com.simplemobiletools.clock.activities.SimpleActivity +import com.simplemobiletools.clock.extensions.formatStopwatchTime +import com.simplemobiletools.clock.models.Lap +import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter +import com.simplemobiletools.commons.views.MyRecyclerView +import kotlinx.android.synthetic.main.item_lap.view.* +import java.util.* + +class StopwatchAdapter(activity: SimpleActivity, var laps: ArrayList, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : + MyRecyclerViewAdapter(activity, recyclerView, null, itemClick) { + + override fun getActionMenuId() = 0 + + override fun prepareActionMode(menu: Menu) {} + + override fun prepareItemSelection(view: View) {} + + override fun markItemSelection(select: Boolean, view: View?) {} + + override fun actionItemPressed(id: Int) {} + + override fun getSelectableItemCount() = laps.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_lap, parent) + + override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) { + val lap = laps[position] + val view = holder.bindView(lap, true) { itemView, layoutPosition -> + setupView(itemView, lap) + } + bindViewHolder(holder, position, view) + } + + override fun getItemCount() = laps.size + + fun updateItems(newItems: ArrayList) { + laps = newItems + notifyDataSetChanged() + finishActMode() + } + + private fun setupView(view: View, lap: Lap) { + view.apply { + lap_order.text = lap.id.toString() + lap_order.setTextColor(textColor) + + lap_lap_time.text = lap.lapTime.formatStopwatchTime(false) + lap_lap_time.setTextColor(textColor) + + lap_total_time.text = lap.totalTime.formatStopwatchTime(false) + lap_total_time.setTextColor(textColor) + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/StopwatchFragment.kt b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/StopwatchFragment.kt index 731512d1..2b2e43ab 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/StopwatchFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/StopwatchFragment.kt @@ -10,9 +10,11 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.simplemobiletools.clock.R +import com.simplemobiletools.clock.activities.SimpleActivity +import com.simplemobiletools.clock.adapters.StopwatchAdapter import com.simplemobiletools.clock.extensions.config import com.simplemobiletools.clock.extensions.formatStopwatchTime -import com.simplemobiletools.clock.models.StopwatchTime +import com.simplemobiletools.clock.models.Lap import com.simplemobiletools.commons.extensions.* import kotlinx.android.synthetic.main.fragment_stopwatch.view.* @@ -25,9 +27,9 @@ class StopwatchFragment : Fragment() { private var totalTicks = 0 private var currentTicks = 0 // ticks that reset at pause private var lapTicks = 0 - private var currentLap = 0 + private var currentLap = 1 private var isRunning = false - private var laps = ArrayList() + private var laps = ArrayList() lateinit var view: ViewGroup @@ -46,11 +48,16 @@ class StopwatchFragment : Fragment() { } stopwatch_lap.setOnClickListener { - val lap = StopwatchTime(currentLap++, lapTicks * UPDATE_INTERVAL, totalTicks * UPDATE_INTERVAL) - laps.add(lap) + val lap = Lap(currentLap++, lapTicks * UPDATE_INTERVAL, totalTicks * UPDATE_INTERVAL) + laps.add(0, lap) lapTicks = 0 + (stopwatch_list.adapter as StopwatchAdapter).updateItems(laps) } + + val stopwatchAdapter = StopwatchAdapter(activity as SimpleActivity, ArrayList(), stopwatch_list) { } + stopwatch_list.adapter = stopwatchAdapter } + return view } @@ -113,7 +120,7 @@ class StopwatchFragment : Fragment() { isRunning = false currentTicks = 0 totalTicks = 0 - currentLap = 0 + currentLap = 1 lapTicks = 0 laps.clear() updateIcons() diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/models/Lap.kt b/app/src/main/kotlin/com/simplemobiletools/clock/models/Lap.kt new file mode 100644 index 00000000..e6a4cf53 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/clock/models/Lap.kt @@ -0,0 +1,3 @@ +package com.simplemobiletools.clock.models + +data class Lap(val id: Int, var lapTime: Long, var totalTime: Long) diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/models/StopwatchTime.kt b/app/src/main/kotlin/com/simplemobiletools/clock/models/StopwatchTime.kt deleted file mode 100644 index bb3d08b4..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/clock/models/StopwatchTime.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.simplemobiletools.clock.models - -data class StopwatchTime(val id: Int, var lapTime: Long, var totalTime: Long) diff --git a/app/src/main/res/layout/fragment_stopwatch.xml b/app/src/main/res/layout/fragment_stopwatch.xml index d5578928..72ff9122 100644 --- a/app/src/main/res/layout/fragment_stopwatch.xml +++ b/app/src/main/res/layout/fragment_stopwatch.xml @@ -21,6 +21,20 @@ app:layout_constraintTop_toTopOf="parent" tools:text="00.00"/> + + + + + + + + + + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 61aec07c..c4c273f1 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -2,6 +2,8 @@ 38dp 60dp 64dp + 40dp + 80dp 70sp 46sp