Cleanup: aggregated stats filter uses ViewBinding.

This commit is contained in:
Dennis Guse
2023-10-12 22:01:28 +02:00
parent bcb18ca46b
commit 5ba55324fa
@@ -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();