Skip to content

Commit e2cb9e3

Browse files
committed
improve change record type shared transitions
1 parent 426a3d6 commit e2cb9e3

File tree

5 files changed

+71
-32
lines changed

5 files changed

+71
-32
lines changed

feature_change_record_type/src/main/java/com/example/util/simpletimetracker/feature_change_record_type/extra/ChangeRecordTypeExtra.kt

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

feature_change_record_type/src/main/java/com/example/util/simpletimetracker/feature_change_record_type/view/ChangeRecordTypeFragment.kt

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import com.example.util.simpletimetracker.feature_change_record_type.R
2525
import com.example.util.simpletimetracker.feature_change_record_type.adapter.ChangeRecordTypeAdapter
2626
import com.example.util.simpletimetracker.feature_change_record_type.adapter.ChangeRecordTypeCategoriesAdapter
2727
import com.example.util.simpletimetracker.feature_change_record_type.di.ChangeRecordTypeComponentProvider
28-
import com.example.util.simpletimetracker.feature_change_record_type.extra.ChangeRecordTypeExtra
2928
import com.example.util.simpletimetracker.feature_change_record_type.viewModel.ChangeRecordTypeViewModel
3029
import com.example.util.simpletimetracker.navigation.params.ChangeRecordTypeParams
3130
import com.google.android.flexbox.FlexDirection
@@ -54,7 +53,8 @@ class ChangeRecordTypeFragment : BaseFragment(R.layout.change_record_type_fragme
5453
ChangeRecordTypeCategoriesAdapter(viewModel::onCategoryClick)
5554
}
5655
private val params: ChangeRecordTypeParams by lazy {
57-
arguments?.getParcelable(ARGS_PARAMS) ?: ChangeRecordTypeParams()
56+
arguments?.getParcelable<ChangeRecordTypeParams>(ARGS_PARAMS)
57+
?: ChangeRecordTypeParams.New(ChangeRecordTypeParams.SizePreview())
5858
}
5959

6060
override fun initDi() {
@@ -64,7 +64,7 @@ class ChangeRecordTypeFragment : BaseFragment(R.layout.change_record_type_fragme
6464
}
6565

6666
override fun initUi() {
67-
updatePreviewSize()
67+
setPreview()
6868

6969
if (BuildVersions.isLollipopOrHigher()) {
7070
sharedElementEnterTransition = TransitionInflater.from(context)
@@ -115,7 +115,7 @@ class ChangeRecordTypeFragment : BaseFragment(R.layout.change_record_type_fragme
115115
}
116116

117117
override fun initViewModel(): Unit = with(viewModel) {
118-
extra = ChangeRecordTypeExtra(params.id, params.width, params.height, params.asRow)
118+
extra = params
119119
deleteIconVisibility.observeOnce(
120120
viewLifecycleOwner,
121121
btnChangeRecordTypeDelete::visible::set
@@ -172,14 +172,20 @@ class ChangeRecordTypeFragment : BaseFragment(R.layout.change_record_type_fragme
172172
}
173173
}
174174

175-
private fun updatePreviewSize() {
175+
private fun setPreview() {
176176
val maxWidth = resources.displayMetrics.widthPixels.pxToDp() - DELETE_BUTTON_SIZE
177177

178178
with(previewChangeRecordType) {
179-
itemIsRow = params.asRow
179+
itemIsRow = params.sizePreview.asRow
180180
layoutParams = layoutParams.also { layoutParams ->
181-
params.width?.coerceAtMost(maxWidth)?.dpToPx()?.let { layoutParams.width = it }
182-
params.height?.dpToPx()?.let { layoutParams.height = it }
181+
params.sizePreview.width?.coerceAtMost(maxWidth)?.dpToPx()?.let { layoutParams.width = it }
182+
params.sizePreview.height?.dpToPx()?.let { layoutParams.height = it }
183+
}
184+
185+
(params as? ChangeRecordTypeParams.Change)?.preview?.let {
186+
itemName = it.name
187+
itemIcon = it.iconId
188+
itemColor = it.color
183189
}
184190
}
185191
}

feature_change_record_type/src/main/java/com/example/util/simpletimetracker/feature_change_record_type/viewModel/ChangeRecordTypeViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ import com.example.util.simpletimetracker.domain.interactor.RecordTypeInteractor
2525
import com.example.util.simpletimetracker.domain.interactor.RunningRecordInteractor
2626
import com.example.util.simpletimetracker.domain.model.RecordType
2727
import com.example.util.simpletimetracker.feature_change_record_type.R
28-
import com.example.util.simpletimetracker.feature_change_record_type.extra.ChangeRecordTypeExtra
2928
import com.example.util.simpletimetracker.feature_change_record_type.interactor.ChangeRecordTypeViewDataInteractor
3029
import com.example.util.simpletimetracker.feature_change_record_type.mapper.ChangeRecordTypeMapper
3130
import com.example.util.simpletimetracker.feature_change_record_type.viewData.ChangeRecordTypeIconViewData
3231
import com.example.util.simpletimetracker.navigation.Notification
3332
import com.example.util.simpletimetracker.navigation.Router
3433
import com.example.util.simpletimetracker.navigation.Screen
34+
import com.example.util.simpletimetracker.navigation.params.ChangeRecordTypeParams
3535
import com.example.util.simpletimetracker.navigation.params.DurationDialogParams
3636
import com.example.util.simpletimetracker.navigation.params.ToastParams
3737
import kotlinx.coroutines.launch
@@ -56,7 +56,7 @@ class ChangeRecordTypeViewModel @Inject constructor(
5656
private val iconMapper: IconMapper
5757
) : ViewModel() {
5858

59-
lateinit var extra: ChangeRecordTypeExtra
59+
lateinit var extra: ChangeRecordTypeParams
6060

6161
val recordType: LiveData<RecordTypeViewData> by lazy {
6262
return@lazy MutableLiveData<RecordTypeViewData>().let { initial ->

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

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,33 @@ class RunningRecordsViewModel @Inject constructor(
5959
fun onRecordTypeLongClick(item: RecordTypeViewData, sharedElements: Map<Any, String>) {
6060
router.navigate(
6161
screen = Screen.CHANGE_RECORD_TYPE,
62-
data = ChangeRecordTypeParams(item.id, item.width, item.height, item.asRow),
62+
data = ChangeRecordTypeParams.Change(
63+
id = item.id,
64+
sizePreview = ChangeRecordTypeParams.SizePreview(
65+
width = item.width,
66+
height = item.height,
67+
asRow = item.asRow
68+
),
69+
preview = ChangeRecordTypeParams.Change.Preview(
70+
name = item.name,
71+
iconId = item.iconId,
72+
color = item.color
73+
)
74+
),
6375
sharedElements = sharedElements
6476
)
6577
}
6678

6779
fun onAddRecordTypeClick(item: RunningRecordTypeAddViewData) {
6880
router.navigate(
6981
screen = Screen.CHANGE_RECORD_TYPE,
70-
data = ChangeRecordTypeParams(0, item.width, item.height, item.asRow)
82+
data = ChangeRecordTypeParams.New(
83+
sizePreview = ChangeRecordTypeParams.SizePreview(
84+
width = item.width,
85+
height = item.height,
86+
asRow = item.asRow
87+
)
88+
)
7189
)
7290
}
7391

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,40 @@
11
package com.example.util.simpletimetracker.navigation.params
22

33
import android.os.Parcelable
4+
import androidx.annotation.ColorInt
5+
import androidx.annotation.DrawableRes
46
import kotlinx.android.parcel.Parcelize
57

6-
@Parcelize
7-
data class ChangeRecordTypeParams(
8-
// id of the RecordType to change, if no id - creating new one.
9-
val id: Long = 0,
10-
val width: Int? = null,
11-
val height: Int? = null,
12-
val asRow: Boolean = false
13-
) : Parcelable
8+
sealed class ChangeRecordTypeParams : Parcelable {
9+
abstract val id: Long
10+
abstract val sizePreview: SizePreview
11+
12+
@Parcelize
13+
data class Change(
14+
override val id: Long,
15+
override val sizePreview: SizePreview,
16+
val preview: Preview
17+
) : ChangeRecordTypeParams() {
18+
19+
@Parcelize
20+
data class Preview(
21+
val name: String,
22+
@DrawableRes val iconId: Int,
23+
@ColorInt val color: Int
24+
) : Parcelable
25+
}
26+
27+
@Parcelize
28+
data class New(
29+
override val sizePreview: SizePreview
30+
) : ChangeRecordTypeParams() {
31+
override val id: Long get() = 0
32+
}
33+
34+
@Parcelize
35+
data class SizePreview(
36+
val width: Int? = null,
37+
val height: Int? = null,
38+
val asRow: Boolean = false
39+
) : Parcelable
40+
}

0 commit comments

Comments
 (0)