From 5ba55324fa0e7f5716713dc0cbfcdcd0e200cd2d Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Thu, 12 Oct 2023 22:01:28 +0200 Subject: [PATCH] Cleanup: aggregated stats filter uses ViewBinding. --- .../FilterDialogFragment.java | 76 ++++++++----------- 1 file changed, 31 insertions(+), 45 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/ui/aggregatedStatistics/FilterDialogFragment.java b/src/main/java/de/dennisguse/opentracks/ui/aggregatedStatistics/FilterDialogFragment.java index 0a60ec2bd..75dd378d4 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/aggregatedStatistics/FilterDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/ui/aggregatedStatistics/FilterDialogFragment.java @@ -5,9 +5,7 @@ import android.content.Context; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; -import android.view.LayoutInflater; import android.view.View; -import android.widget.DatePicker; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -15,10 +13,6 @@ import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; -import com.google.android.material.button.MaterialButton; -import com.google.android.material.button.MaterialButtonToggleGroup; -import com.google.android.material.textfield.TextInputEditText; - import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneOffset; @@ -27,6 +21,8 @@ import java.util.ArrayList; import java.util.Locale; import de.dennisguse.opentracks.R; +import de.dennisguse.opentracks.databinding.FragmentFilterDialogBinding; +import de.dennisguse.opentracks.databinding.FragmentFilterDialogItemBinding; import de.dennisguse.opentracks.util.StringUtils; public class FilterDialogFragment extends DialogFragment { @@ -56,67 +52,57 @@ public class FilterDialogFragment extends DialogFragment { public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { filterItems = getArguments().getParcelableArrayList(KEY_FILTER_ITEMS); - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setTitle(getString(R.string.generic_filter)); - - LayoutInflater inflater = LayoutInflater.from(getActivity()); - View layout = inflater.inflate(R.layout.fragment_filter_dialog, null, false); - MaterialButtonToggleGroup itemsLayout = layout.findViewById(R.id.filter_items); - builder.setView(layout); + FragmentFilterDialogBinding layout = FragmentFilterDialogBinding.inflate(getActivity().getLayoutInflater()); for (FilterItem item : filterItems) { - View view = inflater.inflate(R.layout.fragment_filter_dialog_item, null); + FragmentFilterDialogItemBinding view = FragmentFilterDialogItemBinding.inflate(getActivity().getLayoutInflater()); - MaterialButton button = view.findViewById(R.id.filter_dialog_check_button); - button.setText(item.value); - button.setChecked(item.isChecked); - button.setTag(item.id); - button.setOnClickListener(v -> item.isChecked = !item.isChecked); + view.filterDialogCheckButton.setText(item.value); + view.filterDialogCheckButton.setChecked(item.isChecked); + view.filterDialogCheckButton.setTag(item.id); + view.filterDialogCheckButton.setOnClickListener(v -> item.isChecked = !item.isChecked); - itemsLayout.addView(view); + layout.filterItems.addView(view.getRoot()); } - DatePicker datePickerFrom = layout.findViewById(R.id.filter_date_picker_from); - DatePicker datePickerTo = layout.findViewById(R.id.filter_date_picker_to); - TextInputEditText dateFrom = layout.findViewById(R.id.filter_date_edit_text_from); - TextInputEditText dateTo = layout.findViewById(R.id.filter_date_edit_text_to); - LocalDateTime firstDayThisWeek = LocalDate.now().with(WeekFields.of(Locale.getDefault()).getFirstDayOfWeek()).atStartOfDay(); - dateFrom.setText(StringUtils.formatLocalDateTime(firstDayThisWeek)); - datePickerFrom.init(firstDayThisWeek.getYear(), firstDayThisWeek.getMonthValue() - 1, firstDayThisWeek.getDayOfMonth(), (view, year, monthOfYear, dayOfMonth) -> { + layout.filterDateEditTextFrom.setText(StringUtils.formatLocalDateTime(firstDayThisWeek)); + layout.filterDatePickerFrom.init(firstDayThisWeek.getYear(), firstDayThisWeek.getMonthValue() - 1, firstDayThisWeek.getDayOfMonth(), (view, year, monthOfYear, dayOfMonth) -> { LocalDateTime localDateTime = LocalDateTime.of(year, monthOfYear + 1, dayOfMonth, 0, 0, 0); - dateFrom.setText(StringUtils.formatLocalDateTime(localDateTime)); - datePickerFrom.setVisibility(View.GONE); - datePickerTo.setMinDate(localDateTime.toInstant(ZoneOffset.ofTotalSeconds(0)).toEpochMilli()); - if (localDateTime.isAfter(LocalDateTime.of(datePickerTo.getYear(), datePickerTo.getMonth() + 1, datePickerTo.getDayOfMonth(), 23, 59, 59))) { - datePickerTo.updateDate(year, monthOfYear, dayOfMonth); + layout.filterDateEditTextFrom.setText(StringUtils.formatLocalDateTime(localDateTime)); + layout.filterDatePickerFrom.setVisibility(View.GONE); + layout.filterDatePickerTo.setMinDate(localDateTime.toInstant(ZoneOffset.ofTotalSeconds(0)).toEpochMilli()); + if (localDateTime.isAfter(LocalDateTime.of(layout.filterDatePickerTo.getYear(), layout.filterDatePickerTo.getMonth() + 1, layout.filterDatePickerTo.getDayOfMonth(), 23, 59, 59))) { + layout.filterDatePickerTo.updateDate(year, monthOfYear, dayOfMonth); } }); LocalDateTime lastDayThisWeek = firstDayThisWeek.plusDays(6).withHour(23).withMinute(59).withSecond(59); - dateTo.setText(StringUtils.formatLocalDateTime(lastDayThisWeek)); - datePickerTo.init(lastDayThisWeek.getYear(), lastDayThisWeek.getMonthValue() - 1, lastDayThisWeek.getDayOfMonth(), (view, year, monthOfYear, dayOfMonth) -> { + layout.filterDateEditTextTo.setText(StringUtils.formatLocalDateTime(lastDayThisWeek)); + layout.filterDatePickerTo.init(lastDayThisWeek.getYear(), lastDayThisWeek.getMonthValue() - 1, lastDayThisWeek.getDayOfMonth(), (view, year, monthOfYear, dayOfMonth) -> { LocalDateTime localDateTime = LocalDateTime.of(year, monthOfYear + 1, dayOfMonth, 23, 59, 59); - dateTo.setText(StringUtils.formatLocalDateTime(localDateTime)); - datePickerTo.setVisibility(View.GONE); + layout.filterDateEditTextTo.setText(StringUtils.formatLocalDateTime(localDateTime)); + layout.filterDatePickerTo.setVisibility(View.GONE); }); - dateFrom.setOnClickListener(v -> { - datePickerFrom.setVisibility(View.VISIBLE); - datePickerTo.setVisibility(View.GONE); + layout.filterDateEditTextFrom.setOnClickListener(v -> { + layout.filterDatePickerFrom.setVisibility(View.VISIBLE); + layout.filterDatePickerTo.setVisibility(View.GONE); }); - dateTo.setOnClickListener(v -> { - datePickerFrom.setVisibility(View.GONE); - datePickerTo.setVisibility(View.VISIBLE); + layout.filterDateEditTextTo.setOnClickListener(v -> { + layout.filterDatePickerFrom.setVisibility(View.GONE); + layout.filterDatePickerTo.setVisibility(View.VISIBLE); }); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle(getString(R.string.generic_filter)); + builder.setView(layout.getRoot()); builder.setPositiveButton(android.R.string.ok, (dialog, which) -> filterDialogListener.onFilterDone( filterItems, - LocalDateTime.of(datePickerFrom.getYear(), datePickerFrom.getMonth() + 1, datePickerFrom.getDayOfMonth(), 0, 0, 0), - LocalDateTime.of(datePickerTo.getYear(), datePickerTo.getMonth() + 1, datePickerTo.getDayOfMonth(), 23, 59, 59) + LocalDateTime.of(layout.filterDatePickerFrom.getYear(), layout.filterDatePickerFrom.getMonth() + 1, layout.filterDatePickerFrom.getDayOfMonth(), 0, 0, 0), + LocalDateTime.of(layout.filterDatePickerTo.getYear(), layout.filterDatePickerTo.getMonth() + 1, layout.filterDatePickerTo.getDayOfMonth(), 23, 59, 59) )); - builder.setNegativeButton(android.R.string.cancel, null); return builder.create();