Skip to content

Commit 2516a64

Browse files
committed
change records filter select all select nothing buttons
1 parent 2572400 commit 2516a64

File tree

9 files changed

+102
-76
lines changed

9 files changed

+102
-76
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.example.util.simpletimetracker.feature_base_adapter.buttonDouble
2+
3+
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
4+
import com.example.util.simpletimetracker.feature_base_adapter.buttonDouble.DoubleButtonsViewData
5+
import com.example.util.simpletimetracker.feature_base_adapter.createRecyclerBindingAdapterDelegate
6+
import com.example.util.simpletimetracker.feature_views.extension.setOnClickWith
7+
import com.example.util.simpletimetracker.feature_base_adapter.buttonDouble.DoubleButtonsViewData as ViewData
8+
import com.example.util.simpletimetracker.feature_base_adapter.databinding.ItemDoubleButtonsLayoutBinding as Binding
9+
10+
fun createDoubleButtonsAdapterDelegate(
11+
onClick: (DoubleButtonsViewData.Type) -> Unit,
12+
) = createRecyclerBindingAdapterDelegate<ViewData, Binding>(
13+
Binding::inflate,
14+
) { binding, item, _ ->
15+
16+
with(binding) {
17+
item as ViewData
18+
19+
btnDoubleButtonsFirst.text = item.first.name
20+
btnDoubleButtonsFirst.tag = item.first.type
21+
22+
btnDoubleButtonsSecond.text = item.second.name
23+
btnDoubleButtonsSecond.tag = item.second.type
24+
25+
btnDoubleButtonsFirst.setOnClickWith(item.first.type, onClick)
26+
btnDoubleButtonsSecond.setOnClickWith(item.second.type, onClick)
27+
}
28+
}
29+
30+
data class DoubleButtonsViewData(
31+
val first: Button,
32+
val second: Button,
33+
) : ViewHolderType {
34+
35+
override fun getUniqueId(): Long = first.hashCode().toLong()
36+
37+
override fun isValidType(other: ViewHolderType): Boolean =
38+
other is ViewData
39+
40+
data class Button(
41+
val type: Type,
42+
val name: String,
43+
)
44+
45+
interface Type
46+
}

features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/selectionButton/SelectionButtonAdapterDelegate.kt

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

features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/selectionButton/SelectionButtonViewData.kt

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools"
5+
android:layout_width="match_parent"
6+
android:layout_height="wrap_content">
7+
8+
<com.google.android.material.button.MaterialButton
9+
android:id="@+id/btnDoubleButtonsFirst"
10+
style="@style/AppButton"
11+
android:layout_width="0dp"
12+
android:layout_marginStart="8dp"
13+
android:layout_marginEnd="4dp"
14+
app:layout_constraintBottom_toBottomOf="parent"
15+
app:layout_constraintEnd_toStartOf="@id/btnDoubleButtonsSecond"
16+
app:layout_constraintStart_toStartOf="parent"
17+
tools:text="First Button" />
18+
19+
<com.google.android.material.button.MaterialButton
20+
android:id="@+id/btnDoubleButtonsSecond"
21+
style="@style/AppButton"
22+
android:layout_width="0dp"
23+
android:layout_marginStart="4dp"
24+
android:layout_marginEnd="8dp"
25+
app:layout_constraintBottom_toBottomOf="parent"
26+
app:layout_constraintEnd_toEndOf="parent"
27+
app:layout_constraintStart_toEndOf="@id/btnDoubleButtonsFirst"
28+
tools:text="Second Button" />
29+
30+
</androidx.constraintlayout.widget.ConstraintLayout>

features/feature_records_filter/src/main/java/com/example/util/simpletimetracker/feature_records_filter/interactor/RecordsFilterViewDataInteractor.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,6 @@ class RecordsFilterViewDataInteractor @Inject constructor(
347347

348348
val typesSelectionButtons = mapper.mapToSelectionButtons(
349349
type = RecordsFilterSelectionButtonType.Type.Activities,
350-
isDarkTheme = isDarkTheme,
351350
)
352351

353352
val categoriesViewData = categories
@@ -369,7 +368,6 @@ class RecordsFilterViewDataInteractor @Inject constructor(
369368

370369
val categoriesSelectionButtons = mapper.mapToSelectionButtons(
371370
type = RecordsFilterSelectionButtonType.Type.Categories,
372-
isDarkTheme = isDarkTheme,
373371
)
374372

375373
if (categoriesViewData.isNotEmpty()) {
@@ -532,7 +530,6 @@ class RecordsFilterViewDataInteractor @Inject constructor(
532530

533531
val selectionButtons = mapper.mapToSelectionButtons(
534532
type = RecordsFilterSelectionButtonType.Type.Tags,
535-
isDarkTheme = isDarkTheme,
536533
)
537534

538535
if (recordTagsViewData.isNotEmpty()) {

features/feature_records_filter/src/main/java/com/example/util/simpletimetracker/feature_records_filter/mapper/RecordsFilterViewDataMapper.kt

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@ import com.example.util.simpletimetracker.domain.record.extension.hasSameTimes
1616
import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
1717
import com.example.util.simpletimetracker.domain.record.model.RecordsFilter
1818
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
19-
import com.example.util.simpletimetracker.feature_base_adapter.emptySpace.EmptySpaceViewData
19+
import com.example.util.simpletimetracker.feature_base_adapter.buttonDouble.DoubleButtonsViewData
2020
import com.example.util.simpletimetracker.feature_base_adapter.recordFilter.FilterViewData
21-
import com.example.util.simpletimetracker.feature_base_adapter.selectionButton.SelectionButtonViewData
2221
import com.example.util.simpletimetracker.feature_records_filter.R
2322
import com.example.util.simpletimetracker.feature_records_filter.model.RecordFilterCommentType
2423
import com.example.util.simpletimetracker.feature_records_filter.model.RecordFilterDateType
@@ -292,29 +291,24 @@ class RecordsFilterViewDataMapper @Inject constructor(
292291

293292
fun mapToSelectionButtons(
294293
type: RecordsFilterSelectionButtonType.Type,
295-
isDarkTheme: Boolean,
296294
): List<ViewHolderType> {
297295
val result = mutableListOf<ViewHolderType>()
298296

299-
result += SelectionButtonViewData(
300-
type = RecordsFilterSelectionButtonType(
301-
type = type,
302-
subtype = RecordsFilterSelectionButtonType.Subtype.SelectAll,
297+
result += DoubleButtonsViewData(
298+
DoubleButtonsViewData.Button(
299+
type = RecordsFilterSelectionButtonType(
300+
type = type,
301+
subtype = RecordsFilterSelectionButtonType.Subtype.SelectAll,
302+
),
303+
name = resourceRepo.getString(R.string.select_all),
303304
),
304-
name = resourceRepo.getString(R.string.select_all),
305-
color = colorMapper.toInactiveColor(isDarkTheme),
306-
)
307-
result += SelectionButtonViewData(
308-
type = RecordsFilterSelectionButtonType(
309-
type = type,
310-
subtype = RecordsFilterSelectionButtonType.Subtype.SelectNone,
305+
DoubleButtonsViewData.Button(
306+
type = RecordsFilterSelectionButtonType(
307+
type = type,
308+
subtype = RecordsFilterSelectionButtonType.Subtype.SelectNone,
309+
),
310+
name = resourceRepo.getString(R.string.select_nothing),
311311
),
312-
name = resourceRepo.getString(R.string.select_nothing),
313-
color = colorMapper.toInactiveColor(isDarkTheme),
314-
)
315-
result += EmptySpaceViewData(
316-
id = 0,
317-
wrapBefore = true,
318312
)
319313

320314
return result

features/feature_records_filter/src/main/java/com/example/util/simpletimetracker/feature_records_filter/view/RecordsFilterFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.example.util.simpletimetracker.core.extension.setFullScreen
2020
import com.example.util.simpletimetracker.core.extension.setSkipCollapsed
2121
import com.example.util.simpletimetracker.core.utils.fragmentArgumentDelegate
2222
import com.example.util.simpletimetracker.feature_base_adapter.BaseRecyclerAdapter
23+
import com.example.util.simpletimetracker.feature_base_adapter.buttonDouble.createDoubleButtonsAdapterDelegate
2324
import com.example.util.simpletimetracker.feature_base_adapter.category.createCategoryAdapterDelegate
2425
import com.example.util.simpletimetracker.feature_base_adapter.divider.createDividerAdapterDelegate
2526
import com.example.util.simpletimetracker.feature_base_adapter.empty.createEmptyAdapterDelegate
@@ -35,7 +36,6 @@ import com.example.util.simpletimetracker.feature_records_filter.adapter.createR
3536
import com.example.util.simpletimetracker.feature_base_adapter.commentField.createCommentFieldAdapterDelegate
3637
import com.example.util.simpletimetracker.feature_base_adapter.dayOfWeek.createDayOfWeekAdapterDelegate
3738
import com.example.util.simpletimetracker.feature_base_adapter.emptySpace.createEmptySpaceAdapterDelegate
38-
import com.example.util.simpletimetracker.feature_base_adapter.selectionButton.createSelectionButtonAdapterDelegate
3939
import com.example.util.simpletimetracker.feature_records_filter.adapter.createRecordsFilterRangeAdapterDelegate
4040
import com.example.util.simpletimetracker.feature_records_filter.model.RecordsFilterSelectedRecordsViewData
4141
import com.example.util.simpletimetracker.feature_records_filter.viewModel.RecordsFilterViewModel
@@ -78,7 +78,7 @@ class RecordsFilterFragment :
7878
createRecordTypeAdapterDelegate(viewModel::onRecordTypeClick),
7979
createCategoryAdapterDelegate(viewModel::onCategoryClick),
8080
createRecordAdapterDelegate(onItemClick = viewModel::onRecordClick),
81-
createSelectionButtonAdapterDelegate(viewModel::onSelectionButtonClick),
81+
createDoubleButtonsAdapterDelegate(viewModel::onSelectionButtonClick),
8282
createCommentFieldAdapterDelegate(viewModel::onCommentChange),
8383
createRecordsFilterButtonAdapterDelegate(viewModel::onInnerFilterButtonClick),
8484
createDayOfWeekAdapterDelegate(viewModel::onDayOfWeekClick),
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
package com.example.util.simpletimetracker.feature_records_filter.viewData
22

3-
import com.example.util.simpletimetracker.feature_base_adapter.selectionButton.SelectionButtonViewData
3+
import com.example.util.simpletimetracker.feature_base_adapter.buttonDouble.DoubleButtonsViewData
44

55
data class RecordsFilterSelectionButtonType(
66
val type: Type,
77
val subtype: Subtype,
8-
) : SelectionButtonViewData.Type {
8+
) : DoubleButtonsViewData.Type {
99

1010
sealed interface Type {
11-
object Activities : Type
12-
object Categories : Type
13-
object Tags : Type
11+
data object Activities : Type
12+
data object Categories : Type
13+
data object Tags : Type
1414
}
1515

1616
sealed interface Subtype {
17-
object SelectAll : Subtype
18-
object SelectNone : Subtype
17+
data object SelectAll : Subtype
18+
data object SelectNone : Subtype
1919
}
2020
}

features/feature_records_filter/src/main/java/com/example/util/simpletimetracker/feature_records_filter/viewModel/RecordsFilterViewModel.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ import com.example.util.simpletimetracker.domain.recordType.model.RecordTypeGoal
3232
import com.example.util.simpletimetracker.domain.recordTag.model.RecordTypeToTag
3333
import com.example.util.simpletimetracker.domain.record.model.RecordsFilter
3434
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
35+
import com.example.util.simpletimetracker.feature_base_adapter.buttonDouble.DoubleButtonsViewData
3536
import com.example.util.simpletimetracker.feature_base_adapter.category.CategoryViewData
3637
import com.example.util.simpletimetracker.feature_base_adapter.dayOfWeek.DayOfWeekViewData
3738
import com.example.util.simpletimetracker.feature_base_adapter.loader.LoaderViewData
3839
import com.example.util.simpletimetracker.feature_base_adapter.record.RecordViewData
3940
import com.example.util.simpletimetracker.feature_base_adapter.recordFilter.FilterViewData
4041
import com.example.util.simpletimetracker.feature_base_adapter.recordType.RecordTypeViewData
41-
import com.example.util.simpletimetracker.feature_base_adapter.selectionButton.SelectionButtonViewData
4242
import com.example.util.simpletimetracker.feature_records_filter.adapter.RecordsFilterButtonViewData
4343
import com.example.util.simpletimetracker.feature_records_filter.adapter.RecordsFilterRangeViewData
4444
import com.example.util.simpletimetracker.feature_records_filter.interactor.RecordsFilterUpdateInteractor
@@ -189,8 +189,8 @@ class RecordsFilterViewModel @Inject constructor(
189189
updateViewDataOnFiltersChanged()
190190
}
191191

192-
fun onSelectionButtonClick(item: SelectionButtonViewData) = viewModelScope.launch {
193-
val data = item.type
192+
fun onSelectionButtonClick(item: DoubleButtonsViewData.Type) = viewModelScope.launch {
193+
val data = item
194194
as? RecordsFilterSelectionButtonType
195195
?: return@launch
196196
val subtype = data.subtype

0 commit comments

Comments
 (0)