Skip to content

Commit

Permalink
add hint to view selected records on records filter
Browse files Browse the repository at this point in the history
  • Loading branch information
Razeeman committed Aug 10, 2024
1 parent c5ca76d commit 9912e72
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 18 deletions.
9 changes: 9 additions & 0 deletions core/src/main/res/drawable/show.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
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"/>
</vector>
Original file line number Diff line number Diff line change
Expand Up @@ -220,14 +220,16 @@ class RecordsFilterViewDataInteractor @Inject constructor(
.sortedByDescending { (timeStarted, _) -> timeStarted }
.let(dateDividerViewDataMapper::addDateViewData)
.ifEmpty { listOf(recordViewDataMapper.mapToEmpty()) }
val filterSelected = count != 0 || finalFilters.isNotEmpty()

return@withContext RecordsFilterSelectedRecordsViewData(
isLoading = false,
selectedRecordsCount = mapper.mapRecordsCount(
extra = extra,
count = count,
filter = finalFilters,
filterSelected = filterSelected
),
showListButtonIsVisible = filterSelected,
recordsViewData = viewData,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,9 @@ class RecordsFilterViewDataMapper @Inject constructor(
fun mapRecordsCount(
extra: RecordsFilterParams,
count: Int,
filter: List<RecordsFilter>,
filterSelected: Boolean
): String {
if (count == 0 && filter.isEmpty()) {
return extra.title
}
if (!filterSelected) return extra.title

val selected = resourceRepo.getString(R.string.something_selected)
val recordsString: String = resourceRepo.getQuantityString(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ import com.example.util.simpletimetracker.feature_base_adapter.loader.LoaderView
data class RecordsFilterSelectedRecordsViewData(
val isLoading: Boolean,
val selectedRecordsCount: String,
val showListButtonIsVisible: Boolean,
val recordsViewData: List<ViewHolderType>,
) {

companion object {
val Loading = RecordsFilterSelectedRecordsViewData(
isLoading = true,
selectedRecordsCount = "",
showListButtonIsVisible = false,
recordsViewData = listOf(LoaderViewData()),
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import com.example.util.simpletimetracker.feature_base_adapter.dayOfWeek.createD
import com.example.util.simpletimetracker.feature_records_filter.adapter.createRecordsFilterRangeAdapterDelegate
import com.example.util.simpletimetracker.feature_records_filter.model.RecordsFilterSelectedRecordsViewData
import com.example.util.simpletimetracker.feature_records_filter.viewModel.RecordsFilterViewModel
import com.example.util.simpletimetracker.feature_views.extension.setOnClick
import com.example.util.simpletimetracker.navigation.params.screen.RecordsFilterParams
import com.google.android.flexbox.FlexDirection
import com.google.android.flexbox.FlexWrap
Expand Down Expand Up @@ -135,16 +136,18 @@ class RecordsFilterFragment :
}
}

override fun initUx() = with(binding) {
ivRecordsFilterShowList.setOnClick(viewModel::onShowRecordsListClick)
}

override fun initViewModel(): Unit = with(viewModel) {
with(binding) {
init(params)
filtersViewData.observe(filtersAdapter::replace)
filterSelectionContent.observe(filterSelectionAdapter::replace)
recordsViewData.observe(::setSelectedRecords)
filterSelectionVisibility.observe(::setFilterSelectionVisibility)
keyboardVisibility.observe(::showKeyboard)
changedFilters.observe { listener?.onFilterChanged(it) }
}
init(params)
filtersViewData.observe(filtersAdapter::replace)
filterSelectionContent.observe(filterSelectionAdapter::replace)
recordsViewData.observe(::setSelectedRecords)
filterSelectionVisibility.observe(::setFilterSelectionVisibility)
keyboardVisibility.observe(::showKeyboard)
changedFilters.observe { listener?.onFilterChanged(it) }
}

override fun onDismiss(dialog: DialogInterface) {
Expand All @@ -171,6 +174,7 @@ class RecordsFilterFragment :
loaderRecordsFilter.isVisible = viewData.isLoading
tvRecordsFilterTitle.isInvisible = viewData.isLoading
tvRecordsFilterTitle.text = viewData.selectedRecordsCount
ivRecordsFilterShowList.isVisible = !viewData.isLoading && viewData.showListButtonIsVisible
recordsAdapter.replaceAsNew(viewData.recordsViewData)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,12 @@ class RecordsFilterViewModel @Inject constructor(
updateRecords()
}

fun onShowRecordsListClick() {
filterSelectionState = RecordsFilterSelectionState.Hidden
updateFilters()
updateFilterSelectionVisibility()
}

private suspend fun handleTypeClick(id: Long) {
val currentIds = filters.getTypeIds().toMutableList()
val currentIdsFromCategories = filters.getTypeIdsFromCategories(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,43 @@

<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvRecordsFilterTitle"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:layout_marginHorizontal="28dp"
android:layout_marginTop="12dp"
android:gravity="center"
android:paddingHorizontal="16dp"
android:paddingHorizontal="8dp"
android:textColor="?appTextPrimaryColor"
android:textSize="22sp"
android:textStyle="bold"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/chart_filter_hint" />
tools:text="Filter" />

<androidx.cardview.widget.CardView
android:id="@+id/ivRecordsFilterShowList"
style="@style/SettingsCard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="?selectableItemBackground"
android:visibility="gone"
app:cardBackgroundColor="?appButtonOnCardBackgroundColor"
app:cardUseCompatPadding="false"
app:layout_constraintBottom_toBottomOf="@id/tvRecordsFilterTitle"
app:layout_constraintStart_toEndOf="@id/tvRecordsFilterTitle"
app:layout_constraintTop_toTopOf="@id/tvRecordsFilterTitle"
tools:visibility="visible">

<androidx.appcompat.widget.AppCompatImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:padding="4dp"
android:tint="?appTextHintColor"
app:srcCompat="@drawable/show" />

</androidx.cardview.widget.CardView>

<ProgressBar
android:id="@+id/loaderRecordsFilter"
Expand Down

0 comments on commit 9912e72

Please sign in to comment.