Skip to content

Commit 9912e72

Browse files
committed
add hint to view selected records on records filter
1 parent c5ca76d commit 9912e72

File tree

7 files changed

+65
-18
lines changed

7 files changed

+65
-18
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24">
6+
<path
7+
android:fillColor="#FF000000"
8+
android:pathData="M12,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z"/>
9+
</vector>

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,14 +220,16 @@ class RecordsFilterViewDataInteractor @Inject constructor(
220220
.sortedByDescending { (timeStarted, _) -> timeStarted }
221221
.let(dateDividerViewDataMapper::addDateViewData)
222222
.ifEmpty { listOf(recordViewDataMapper.mapToEmpty()) }
223+
val filterSelected = count != 0 || finalFilters.isNotEmpty()
223224

224225
return@withContext RecordsFilterSelectedRecordsViewData(
225226
isLoading = false,
226227
selectedRecordsCount = mapper.mapRecordsCount(
227228
extra = extra,
228229
count = count,
229-
filter = finalFilters,
230+
filterSelected = filterSelected
230231
),
232+
showListButtonIsVisible = filterSelected,
231233
recordsViewData = viewData,
232234
)
233235
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,9 @@ class RecordsFilterViewDataMapper @Inject constructor(
3939
fun mapRecordsCount(
4040
extra: RecordsFilterParams,
4141
count: Int,
42-
filter: List<RecordsFilter>,
42+
filterSelected: Boolean
4343
): String {
44-
if (count == 0 && filter.isEmpty()) {
45-
return extra.title
46-
}
44+
if (!filterSelected) return extra.title
4745

4846
val selected = resourceRepo.getString(R.string.something_selected)
4947
val recordsString: String = resourceRepo.getQuantityString(

features/feature_records_filter/src/main/java/com/example/util/simpletimetracker/feature_records_filter/model/RecordsFilterSelectedRecordsViewData.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ import com.example.util.simpletimetracker.feature_base_adapter.loader.LoaderView
66
data class RecordsFilterSelectedRecordsViewData(
77
val isLoading: Boolean,
88
val selectedRecordsCount: String,
9+
val showListButtonIsVisible: Boolean,
910
val recordsViewData: List<ViewHolderType>,
1011
) {
1112

1213
companion object {
1314
val Loading = RecordsFilterSelectedRecordsViewData(
1415
isLoading = true,
1516
selectedRecordsCount = "",
17+
showListButtonIsVisible = false,
1618
recordsViewData = listOf(LoaderViewData()),
1719
)
1820
}

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

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import com.example.util.simpletimetracker.feature_base_adapter.dayOfWeek.createD
3737
import com.example.util.simpletimetracker.feature_records_filter.adapter.createRecordsFilterRangeAdapterDelegate
3838
import com.example.util.simpletimetracker.feature_records_filter.model.RecordsFilterSelectedRecordsViewData
3939
import com.example.util.simpletimetracker.feature_records_filter.viewModel.RecordsFilterViewModel
40+
import com.example.util.simpletimetracker.feature_views.extension.setOnClick
4041
import com.example.util.simpletimetracker.navigation.params.screen.RecordsFilterParams
4142
import com.google.android.flexbox.FlexDirection
4243
import com.google.android.flexbox.FlexWrap
@@ -135,16 +136,18 @@ class RecordsFilterFragment :
135136
}
136137
}
137138

139+
override fun initUx() = with(binding) {
140+
ivRecordsFilterShowList.setOnClick(viewModel::onShowRecordsListClick)
141+
}
142+
138143
override fun initViewModel(): Unit = with(viewModel) {
139-
with(binding) {
140-
init(params)
141-
filtersViewData.observe(filtersAdapter::replace)
142-
filterSelectionContent.observe(filterSelectionAdapter::replace)
143-
recordsViewData.observe(::setSelectedRecords)
144-
filterSelectionVisibility.observe(::setFilterSelectionVisibility)
145-
keyboardVisibility.observe(::showKeyboard)
146-
changedFilters.observe { listener?.onFilterChanged(it) }
147-
}
144+
init(params)
145+
filtersViewData.observe(filtersAdapter::replace)
146+
filterSelectionContent.observe(filterSelectionAdapter::replace)
147+
recordsViewData.observe(::setSelectedRecords)
148+
filterSelectionVisibility.observe(::setFilterSelectionVisibility)
149+
keyboardVisibility.observe(::showKeyboard)
150+
changedFilters.observe { listener?.onFilterChanged(it) }
148151
}
149152

150153
override fun onDismiss(dialog: DialogInterface) {
@@ -171,6 +174,7 @@ class RecordsFilterFragment :
171174
loaderRecordsFilter.isVisible = viewData.isLoading
172175
tvRecordsFilterTitle.isInvisible = viewData.isLoading
173176
tvRecordsFilterTitle.text = viewData.selectedRecordsCount
177+
ivRecordsFilterShowList.isVisible = !viewData.isLoading && viewData.showListButtonIsVisible
174178
recordsAdapter.replaceAsNew(viewData.recordsViewData)
175179
}
176180

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,12 @@ class RecordsFilterViewModel @Inject constructor(
303303
updateRecords()
304304
}
305305

306+
fun onShowRecordsListClick() {
307+
filterSelectionState = RecordsFilterSelectionState.Hidden
308+
updateFilters()
309+
updateFilterSelectionVisibility()
310+
}
311+
306312
private suspend fun handleTypeClick(id: Long) {
307313
val currentIds = filters.getTypeIds().toMutableList()
308314
val currentIdsFromCategories = filters.getTypeIdsFromCategories(

features/feature_records_filter/src/main/res/layout/records_filter_fragment.xml

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,43 @@
99

1010
<androidx.appcompat.widget.AppCompatTextView
1111
android:id="@+id/tvRecordsFilterTitle"
12-
android:layout_width="match_parent"
12+
android:layout_width="wrap_content"
1313
android:layout_height="wrap_content"
14-
android:layout_marginHorizontal="12dp"
14+
android:layout_marginHorizontal="28dp"
1515
android:layout_marginTop="12dp"
1616
android:gravity="center"
17-
android:paddingHorizontal="16dp"
17+
android:paddingHorizontal="8dp"
1818
android:textColor="?appTextPrimaryColor"
1919
android:textSize="22sp"
2020
android:textStyle="bold"
21+
app:layout_constrainedWidth="true"
22+
app:layout_constraintEnd_toEndOf="parent"
23+
app:layout_constraintStart_toStartOf="parent"
2124
app:layout_constraintTop_toTopOf="parent"
22-
tools:text="@string/chart_filter_hint" />
25+
tools:text="Filter" />
26+
27+
<androidx.cardview.widget.CardView
28+
android:id="@+id/ivRecordsFilterShowList"
29+
style="@style/SettingsCard"
30+
android:layout_width="wrap_content"
31+
android:layout_height="wrap_content"
32+
android:foreground="?selectableItemBackground"
33+
android:visibility="gone"
34+
app:cardBackgroundColor="?appButtonOnCardBackgroundColor"
35+
app:cardUseCompatPadding="false"
36+
app:layout_constraintBottom_toBottomOf="@id/tvRecordsFilterTitle"
37+
app:layout_constraintStart_toEndOf="@id/tvRecordsFilterTitle"
38+
app:layout_constraintTop_toTopOf="@id/tvRecordsFilterTitle"
39+
tools:visibility="visible">
40+
41+
<androidx.appcompat.widget.AppCompatImageView
42+
android:layout_width="24dp"
43+
android:layout_height="24dp"
44+
android:padding="4dp"
45+
android:tint="?appTextHintColor"
46+
app:srcCompat="@drawable/show" />
47+
48+
</androidx.cardview.widget.CardView>
2349

2450
<ProgressBar
2551
android:id="@+id/loaderRecordsFilter"

0 commit comments

Comments
 (0)