Skip to content

Commit 28dad3b

Browse files
committed
improve change running record shared transitions
1 parent e2cb9e3 commit 28dad3b

File tree

5 files changed

+62
-20
lines changed

5 files changed

+62
-20
lines changed

feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/extra/ChangeRunningRecordExtra.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.

feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/view/ChangeRunningRecordFragment.kt

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,24 @@ import com.example.util.simpletimetracker.core.extension.setOnClick
1414
import com.example.util.simpletimetracker.core.extension.visible
1515
import com.example.util.simpletimetracker.core.utils.BuildVersions
1616
import com.example.util.simpletimetracker.core.view.TransitionNames
17-
import com.example.util.simpletimetracker.domain.extension.orZero
1817
import com.example.util.simpletimetracker.feature_change_running_record.R
1918
import com.example.util.simpletimetracker.feature_change_running_record.adapter.ChangeRunningRecordAdapter
2019
import com.example.util.simpletimetracker.feature_change_running_record.di.ChangeRunningRecordComponentProvider
21-
import com.example.util.simpletimetracker.feature_change_running_record.extra.ChangeRunningRecordExtra
2220
import com.example.util.simpletimetracker.feature_change_running_record.viewData.ChangeRunningRecordViewData
2321
import com.example.util.simpletimetracker.feature_change_running_record.viewModel.ChangeRunningRecordViewModel
2422
import com.example.util.simpletimetracker.navigation.params.ChangeRunningRecordParams
2523
import com.google.android.flexbox.FlexDirection
2624
import com.google.android.flexbox.FlexWrap
2725
import com.google.android.flexbox.FlexboxLayoutManager
2826
import com.google.android.flexbox.JustifyContent
29-
import kotlinx.android.synthetic.main.change_running_record_fragment.*
27+
import kotlinx.android.synthetic.main.change_running_record_fragment.arrowChangeRunningRecordType
28+
import kotlinx.android.synthetic.main.change_running_record_fragment.btnChangeRunningRecordDelete
29+
import kotlinx.android.synthetic.main.change_running_record_fragment.btnChangeRunningRecordSave
30+
import kotlinx.android.synthetic.main.change_running_record_fragment.fieldChangeRunningRecordTimeStarted
31+
import kotlinx.android.synthetic.main.change_running_record_fragment.fieldChangeRunningRecordType
32+
import kotlinx.android.synthetic.main.change_running_record_fragment.previewChangeRunningRecord
33+
import kotlinx.android.synthetic.main.change_running_record_fragment.rvChangeRunningRecordType
34+
import kotlinx.android.synthetic.main.change_running_record_fragment.tvChangeRunningRecordTimeStarted
3035
import javax.inject.Inject
3136

3237
class ChangeRunningRecordFragment : BaseFragment(R.layout.change_running_record_fragment),
@@ -41,7 +46,9 @@ class ChangeRunningRecordFragment : BaseFragment(R.layout.change_running_record_
4146
private val typesAdapter: ChangeRunningRecordAdapter by lazy {
4247
ChangeRunningRecordAdapter(viewModel::onTypeClick)
4348
}
44-
private val recordId: Long by lazy { arguments?.getLong(ARGS_RUNNING_RECORD_ID).orZero() }
49+
private val params: ChangeRunningRecordParams by lazy {
50+
arguments?.getParcelable(ARGS_PARAMS) ?: ChangeRunningRecordParams()
51+
}
4552

4653
override fun initDi() {
4754
(activity?.application as ChangeRunningRecordComponentProvider)
@@ -50,14 +57,16 @@ class ChangeRunningRecordFragment : BaseFragment(R.layout.change_running_record_
5057
}
5158

5259
override fun initUi() {
60+
setPreview()
61+
5362
if (BuildVersions.isLollipopOrHigher()) {
5463
sharedElementEnterTransition = TransitionInflater.from(context)
5564
.inflateTransition(android.R.transition.move)
5665
}
5766

5867
ViewCompat.setTransitionName(
5968
previewChangeRunningRecord,
60-
TransitionNames.RECORD_RUNNING + recordId
69+
TransitionNames.RECORD_RUNNING + params.id
6170
)
6271

6372
rvChangeRunningRecordType.apply {
@@ -79,7 +88,7 @@ class ChangeRunningRecordFragment : BaseFragment(R.layout.change_running_record_
7988

8089
override fun initViewModel() {
8190
with(viewModel) {
82-
extra = ChangeRunningRecordExtra(id = recordId)
91+
extra = params
8392
record.observe(viewLifecycleOwner, ::updatePreview)
8493
types.observe(viewLifecycleOwner, typesAdapter::replace)
8594
deleteButtonEnabled.observe(
@@ -111,6 +120,18 @@ class ChangeRunningRecordFragment : BaseFragment(R.layout.change_running_record_
111120
viewModel.onDateTimeSet(timestamp, tag)
112121
}
113122

123+
private fun setPreview() = params.preview?.run {
124+
ChangeRunningRecordViewData(
125+
name = name,
126+
timeStarted = timeStarted,
127+
dateTimeStarted = "",
128+
duration = duration,
129+
goalTime = goalTime,
130+
iconId = iconId,
131+
color = color
132+
).let(::updatePreview)
133+
}
134+
114135
private fun updatePreview(item: ChangeRunningRecordViewData) {
115136
with(previewChangeRunningRecord) {
116137
itemName = item.name
@@ -124,13 +145,11 @@ class ChangeRunningRecordFragment : BaseFragment(R.layout.change_running_record_
124145
}
125146

126147
companion object {
127-
private const val ARGS_RUNNING_RECORD_ID = "args_running_record_id"
148+
private const val ARGS_PARAMS = "args_running_record_params"
128149

129150
fun createBundle(data: Any?): Bundle = Bundle().apply {
130151
when (data) {
131-
is ChangeRunningRecordParams -> {
132-
putLong(ARGS_RUNNING_RECORD_ID, data.id)
133-
}
152+
is ChangeRunningRecordParams -> putParcelable(ARGS_PARAMS, data)
134153
}
135154
}
136155
}

feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/viewModel/ChangeRunningRecordViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ import com.example.util.simpletimetracker.domain.interactor.RecordTypeInteractor
1818
import com.example.util.simpletimetracker.domain.interactor.RunningRecordInteractor
1919
import com.example.util.simpletimetracker.domain.model.RunningRecord
2020
import com.example.util.simpletimetracker.feature_change_running_record.R
21-
import com.example.util.simpletimetracker.feature_change_running_record.extra.ChangeRunningRecordExtra
2221
import com.example.util.simpletimetracker.feature_change_running_record.mapper.ChangeRunningRecordViewDataMapper
2322
import com.example.util.simpletimetracker.feature_change_running_record.viewData.ChangeRunningRecordViewData
2423
import com.example.util.simpletimetracker.navigation.Notification
2524
import com.example.util.simpletimetracker.navigation.Router
2625
import com.example.util.simpletimetracker.navigation.Screen
26+
import com.example.util.simpletimetracker.navigation.params.ChangeRunningRecordParams
2727
import com.example.util.simpletimetracker.navigation.params.DateTimeDialogParams
2828
import com.example.util.simpletimetracker.navigation.params.ToastParams
2929
import kotlinx.coroutines.Job
@@ -45,7 +45,7 @@ class ChangeRunningRecordViewModel @Inject constructor(
4545
private val prefsInteractor: PrefsInteractor
4646
) : ViewModel() {
4747

48-
lateinit var extra: ChangeRunningRecordExtra
48+
lateinit var extra: ChangeRunningRecordParams
4949

5050
val record: LiveData<ChangeRunningRecordViewData> by lazy {
5151
return@lazy MutableLiveData<ChangeRunningRecordViewData>().let { initial ->

feature_running_records/src/main/java/com/example/util/simpletimetracker/feature_running_records/viewModel/RunningRecordsViewModel.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,17 @@ class RunningRecordsViewModel @Inject constructor(
100100
fun onRunningRecordLongClick(item: RunningRecordViewData, sharedElements: Map<Any, String>) {
101101
router.navigate(
102102
screen = Screen.CHANGE_RECORD_RUNNING,
103-
data = ChangeRunningRecordParams(item.id),
103+
data = ChangeRunningRecordParams(
104+
id = item.id,
105+
preview = ChangeRunningRecordParams.Preview(
106+
name = item.name,
107+
timeStarted = item.timeStarted,
108+
duration = item.timer,
109+
goalTime = item.goalTime,
110+
iconId = item.iconId,
111+
color = item.color
112+
)
113+
),
104114
sharedElements = sharedElements
105115
)
106116
}
Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
package com.example.util.simpletimetracker.navigation.params
22

3+
import android.os.Parcelable
4+
import androidx.annotation.ColorInt
5+
import androidx.annotation.DrawableRes
6+
import kotlinx.android.parcel.Parcelize
7+
8+
@Parcelize
39
data class ChangeRunningRecordParams(
4-
val id: Long = 0
5-
)
10+
val id: Long = 0,
11+
val preview: Preview? = null
12+
) : Parcelable {
13+
14+
@Parcelize
15+
data class Preview(
16+
var name: String,
17+
var timeStarted: String,
18+
var duration: String,
19+
var goalTime: String,
20+
@DrawableRes val iconId: Int,
21+
@ColorInt val color: Int
22+
) : Parcelable
23+
}

0 commit comments

Comments
 (0)