diff --git a/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/recordType/RecordTypeAdapterDelegate.kt b/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/recordType/RecordTypeAdapterDelegate.kt index 309dda27..8226e638 100644 --- a/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/recordType/RecordTypeAdapterDelegate.kt +++ b/features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/recordType/RecordTypeAdapterDelegate.kt @@ -1,19 +1,25 @@ package com.example.util.simpletimetracker.feature_base_adapter.recordType +import androidx.core.view.ViewCompat import com.example.util.simpletimetracker.feature_base_adapter.createRecyclerBindingAdapterDelegate +import com.example.util.simpletimetracker.feature_views.TransitionNames import com.example.util.simpletimetracker.feature_views.extension.dpToPx import com.example.util.simpletimetracker.feature_views.extension.setOnClickWith +import com.example.util.simpletimetracker.feature_views.extension.setOnLongClick import com.example.util.simpletimetracker.feature_base_adapter.databinding.ItemRecordTypeLayoutBinding as Binding import com.example.util.simpletimetracker.feature_base_adapter.recordType.RecordTypeViewData as ViewData fun createRecordTypeAdapterDelegate( - onItemClick: ((ViewData) -> Unit)? = null + onItemClick: ((ViewData) -> Unit)? = null, + onItemLongClick: ((ViewData, Map) -> Unit)? = null, + withTransition: Boolean = false, ) = createRecyclerBindingAdapterDelegate( Binding::inflate ) { binding, item, _ -> with(binding.viewRecordTypeItem) { item as ViewData + val transitionName = TransitionNames.RECORD_TYPE + item.id layoutParams = layoutParams.also { params -> item.width?.dpToPx()?.let { params.width = it } @@ -26,6 +32,8 @@ fun createRecordTypeAdapterDelegate( itemIconColor = item.iconColor itemIconAlpha = item.iconAlpha itemName = item.name - onItemClick?.let { setOnClickWith(item, onItemClick) } + onItemClick?.let { setOnClickWith(item, it) } + onItemLongClick?.let { setOnLongClick { it(item, mapOf(this to transitionName)) } } + if (withTransition) ViewCompat.setTransitionName(this, transitionName) } } \ No newline at end of file diff --git a/features/feature_running_records/src/main/java/com/example/util/simpletimetracker/feature_running_records/adapter/RunningRecordTypeAdapterDelegate.kt b/features/feature_running_records/src/main/java/com/example/util/simpletimetracker/feature_running_records/adapter/RunningRecordTypeAdapterDelegate.kt deleted file mode 100644 index cfb3f623..00000000 --- a/features/feature_running_records/src/main/java/com/example/util/simpletimetracker/feature_running_records/adapter/RunningRecordTypeAdapterDelegate.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.example.util.simpletimetracker.feature_running_records.adapter - -import androidx.core.view.ViewCompat -import com.example.util.simpletimetracker.feature_base_adapter.createRecyclerBindingAdapterDelegate -import com.example.util.simpletimetracker.feature_views.extension.dpToPx -import com.example.util.simpletimetracker.feature_views.extension.setOnClickWith -import com.example.util.simpletimetracker.feature_views.extension.setOnLongClick -import com.example.util.simpletimetracker.feature_views.TransitionNames -import com.example.util.simpletimetracker.feature_base_adapter.recordType.RecordTypeViewData as ViewData -import com.example.util.simpletimetracker.feature_base_adapter.databinding.ItemRecordTypeLayoutBinding as Binding - -// TODO use RecordTypeAdapterDelegate from base -fun createRunningRecordTypeAdapterDelegate( - onItemClick: ((ViewData) -> Unit), - onItemLongClick: ((ViewData, Map) -> Unit) -) = createRecyclerBindingAdapterDelegate( - Binding::inflate -) { binding, item, _ -> - - with(binding.viewRecordTypeItem) { - item as ViewData - val transitionName = TransitionNames.RECORD_TYPE + item.id - - layoutParams = layoutParams.also { params -> - item.width?.dpToPx()?.let { params.width = it } - item.height?.dpToPx()?.let { params.height = it } - } - - itemIsRow = item.asRow - itemColor = item.color - itemIcon = item.iconId - itemIconColor = item.iconColor - itemIconAlpha = item.iconAlpha - itemName = item.name - setOnClickWith(item, onItemClick) - setOnLongClick { onItemLongClick(item, mapOf(this to transitionName)) } - ViewCompat.setTransitionName(this, transitionName) - } -} \ No newline at end of file diff --git a/features/feature_running_records/src/main/java/com/example/util/simpletimetracker/feature_running_records/view/RunningRecordsFragment.kt b/features/feature_running_records/src/main/java/com/example/util/simpletimetracker/feature_running_records/view/RunningRecordsFragment.kt index daf8a7d0..5cf02f84 100644 --- a/features/feature_running_records/src/main/java/com/example/util/simpletimetracker/feature_running_records/view/RunningRecordsFragment.kt +++ b/features/feature_running_records/src/main/java/com/example/util/simpletimetracker/feature_running_records/view/RunningRecordsFragment.kt @@ -1,6 +1,5 @@ package com.example.util.simpletimetracker.feature_running_records.view -import com.example.util.simpletimetracker.feature_running_records.databinding.RunningRecordsFragmentBinding as Binding import android.view.LayoutInflater import android.view.ViewGroup import androidx.fragment.app.activityViewModels @@ -17,9 +16,9 @@ import com.example.util.simpletimetracker.feature_base_adapter.empty.createEmpty import com.example.util.simpletimetracker.feature_base_adapter.hint.createHintAdapterDelegate import com.example.util.simpletimetracker.feature_base_adapter.hintBig.createHintBigAdapterDelegate import com.example.util.simpletimetracker.feature_base_adapter.loader.createLoaderAdapterDelegate -import com.example.util.simpletimetracker.feature_base_adapter.runningRecord.createRunningRecordAdapterDelegate -import com.example.util.simpletimetracker.feature_running_records.adapter.createRunningRecordTypeAdapterDelegate +import com.example.util.simpletimetracker.feature_base_adapter.recordType.createRecordTypeAdapterDelegate import com.example.util.simpletimetracker.feature_base_adapter.recordTypeSpecial.createRunningRecordTypeSpecialAdapterDelegate +import com.example.util.simpletimetracker.feature_base_adapter.runningRecord.createRunningRecordAdapterDelegate import com.example.util.simpletimetracker.feature_running_records.viewModel.RunningRecordsViewModel import com.example.util.simpletimetracker.feature_views.TransitionNames import com.google.android.flexbox.FlexDirection @@ -28,6 +27,7 @@ import com.google.android.flexbox.FlexboxLayoutManager import com.google.android.flexbox.JustifyContent import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject +import com.example.util.simpletimetracker.feature_running_records.databinding.RunningRecordsFragmentBinding as Binding @AndroidEntryPoint class RunningRecordsFragment : @@ -42,7 +42,7 @@ class RunningRecordsFragment : private val viewModel: RunningRecordsViewModel by viewModels() private val mainTabsViewModel: MainTabsViewModel by activityViewModels( - factoryProducer = { mainTabsViewModelFactory } + factoryProducer = { mainTabsViewModelFactory }, ) private val runningRecordsAdapter: BaseRecyclerAdapter by lazy { @@ -55,9 +55,13 @@ class RunningRecordsFragment : createRunningRecordAdapterDelegate( transitionNamePrefix = TransitionNames.RUNNING_RECORD_FROM_MAIN, onItemClick = viewModel::onRunningRecordClick, - onItemLongClick = viewModel::onRunningRecordLongClick + onItemLongClick = viewModel::onRunningRecordLongClick, + ), + createRecordTypeAdapterDelegate( + onItemClick = viewModel::onRecordTypeClick, + onItemLongClick = viewModel::onRecordTypeLongClick, + withTransition = true, ), - createRunningRecordTypeAdapterDelegate(viewModel::onRecordTypeClick, viewModel::onRecordTypeLongClick), createRunningRecordTypeSpecialAdapterDelegate(throttle(viewModel::onSpecialRecordTypeClick)), createActivityFilterAdapterDelegate(viewModel::onActivityFilterClick, viewModel::onActivityFilterLongClick), createActivityFilterAddAdapterDelegate(throttle(viewModel::onAddActivityFilterClick)),