mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-10-02 09:33:06 +02:00
Cleanup: aggregated stats filter uses ViewBinding.
This commit is contained in:
+31
-45
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user