forked from upstream-mirrors/OpenTracks
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.Bundle;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.DatePicker;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -15,10 +13,6 @@ import androidx.appcompat.app.AlertDialog;
|
|||||||
import androidx.fragment.app.DialogFragment;
|
import androidx.fragment.app.DialogFragment;
|
||||||
import androidx.fragment.app.FragmentManager;
|
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.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneOffset;
|
import java.time.ZoneOffset;
|
||||||
@@ -27,6 +21,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
|
import de.dennisguse.opentracks.databinding.FragmentFilterDialogBinding;
|
||||||
|
import de.dennisguse.opentracks.databinding.FragmentFilterDialogItemBinding;
|
||||||
import de.dennisguse.opentracks.util.StringUtils;
|
import de.dennisguse.opentracks.util.StringUtils;
|
||||||
|
|
||||||
public class FilterDialogFragment extends DialogFragment {
|
public class FilterDialogFragment extends DialogFragment {
|
||||||
@@ -56,67 +52,57 @@ public class FilterDialogFragment extends DialogFragment {
|
|||||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||||
filterItems = getArguments().getParcelableArrayList(KEY_FILTER_ITEMS);
|
filterItems = getArguments().getParcelableArrayList(KEY_FILTER_ITEMS);
|
||||||
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
FragmentFilterDialogBinding layout = FragmentFilterDialogBinding.inflate(getActivity().getLayoutInflater());
|
||||||
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);
|
|
||||||
|
|
||||||
for (FilterItem item : filterItems) {
|
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);
|
view.filterDialogCheckButton.setText(item.value);
|
||||||
button.setText(item.value);
|
view.filterDialogCheckButton.setChecked(item.isChecked);
|
||||||
button.setChecked(item.isChecked);
|
view.filterDialogCheckButton.setTag(item.id);
|
||||||
button.setTag(item.id);
|
view.filterDialogCheckButton.setOnClickListener(v -> item.isChecked = !item.isChecked);
|
||||||
button.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();
|
LocalDateTime firstDayThisWeek = LocalDate.now().with(WeekFields.of(Locale.getDefault()).getFirstDayOfWeek()).atStartOfDay();
|
||||||
dateFrom.setText(StringUtils.formatLocalDateTime(firstDayThisWeek));
|
layout.filterDateEditTextFrom.setText(StringUtils.formatLocalDateTime(firstDayThisWeek));
|
||||||
datePickerFrom.init(firstDayThisWeek.getYear(), firstDayThisWeek.getMonthValue() - 1, firstDayThisWeek.getDayOfMonth(), (view, year, monthOfYear, dayOfMonth) -> {
|
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);
|
LocalDateTime localDateTime = LocalDateTime.of(year, monthOfYear + 1, dayOfMonth, 0, 0, 0);
|
||||||
dateFrom.setText(StringUtils.formatLocalDateTime(localDateTime));
|
layout.filterDateEditTextFrom.setText(StringUtils.formatLocalDateTime(localDateTime));
|
||||||
datePickerFrom.setVisibility(View.GONE);
|
layout.filterDatePickerFrom.setVisibility(View.GONE);
|
||||||
datePickerTo.setMinDate(localDateTime.toInstant(ZoneOffset.ofTotalSeconds(0)).toEpochMilli());
|
layout.filterDatePickerTo.setMinDate(localDateTime.toInstant(ZoneOffset.ofTotalSeconds(0)).toEpochMilli());
|
||||||
if (localDateTime.isAfter(LocalDateTime.of(datePickerTo.getYear(), datePickerTo.getMonth() + 1, datePickerTo.getDayOfMonth(), 23, 59, 59))) {
|
if (localDateTime.isAfter(LocalDateTime.of(layout.filterDatePickerTo.getYear(), layout.filterDatePickerTo.getMonth() + 1, layout.filterDatePickerTo.getDayOfMonth(), 23, 59, 59))) {
|
||||||
datePickerTo.updateDate(year, monthOfYear, dayOfMonth);
|
layout.filterDatePickerTo.updateDate(year, monthOfYear, dayOfMonth);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
LocalDateTime lastDayThisWeek = firstDayThisWeek.plusDays(6).withHour(23).withMinute(59).withSecond(59);
|
LocalDateTime lastDayThisWeek = firstDayThisWeek.plusDays(6).withHour(23).withMinute(59).withSecond(59);
|
||||||
dateTo.setText(StringUtils.formatLocalDateTime(lastDayThisWeek));
|
layout.filterDateEditTextTo.setText(StringUtils.formatLocalDateTime(lastDayThisWeek));
|
||||||
datePickerTo.init(lastDayThisWeek.getYear(), lastDayThisWeek.getMonthValue() - 1, lastDayThisWeek.getDayOfMonth(), (view, year, monthOfYear, dayOfMonth) -> {
|
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);
|
LocalDateTime localDateTime = LocalDateTime.of(year, monthOfYear + 1, dayOfMonth, 23, 59, 59);
|
||||||
dateTo.setText(StringUtils.formatLocalDateTime(localDateTime));
|
layout.filterDateEditTextTo.setText(StringUtils.formatLocalDateTime(localDateTime));
|
||||||
datePickerTo.setVisibility(View.GONE);
|
layout.filterDatePickerTo.setVisibility(View.GONE);
|
||||||
});
|
});
|
||||||
|
|
||||||
dateFrom.setOnClickListener(v -> {
|
layout.filterDateEditTextFrom.setOnClickListener(v -> {
|
||||||
datePickerFrom.setVisibility(View.VISIBLE);
|
layout.filterDatePickerFrom.setVisibility(View.VISIBLE);
|
||||||
datePickerTo.setVisibility(View.GONE);
|
layout.filterDatePickerTo.setVisibility(View.GONE);
|
||||||
});
|
});
|
||||||
|
|
||||||
dateTo.setOnClickListener(v -> {
|
layout.filterDateEditTextTo.setOnClickListener(v -> {
|
||||||
datePickerFrom.setVisibility(View.GONE);
|
layout.filterDatePickerFrom.setVisibility(View.GONE);
|
||||||
datePickerTo.setVisibility(View.VISIBLE);
|
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(
|
builder.setPositiveButton(android.R.string.ok, (dialog, which) -> filterDialogListener.onFilterDone(
|
||||||
filterItems,
|
filterItems,
|
||||||
LocalDateTime.of(datePickerFrom.getYear(), datePickerFrom.getMonth() + 1, datePickerFrom.getDayOfMonth(), 0, 0, 0),
|
LocalDateTime.of(layout.filterDatePickerFrom.getYear(), layout.filterDatePickerFrom.getMonth() + 1, layout.filterDatePickerFrom.getDayOfMonth(), 0, 0, 0),
|
||||||
LocalDateTime.of(datePickerTo.getYear(), datePickerTo.getMonth() + 1, datePickerTo.getDayOfMonth(), 23, 59, 59)
|
LocalDateTime.of(layout.filterDatePickerTo.getYear(), layout.filterDatePickerTo.getMonth() + 1, layout.filterDatePickerTo.getDayOfMonth(), 23, 59, 59)
|
||||||
));
|
));
|
||||||
|
|
||||||
builder.setNegativeButton(android.R.string.cancel, null);
|
builder.setNegativeButton(android.R.string.cancel, null);
|
||||||
|
|
||||||
return builder.create();
|
return builder.create();
|
||||||
|
|||||||
Reference in New Issue
Block a user