diff --git a/app/proguard.pro b/app/proguard.pro index e0cdf6c7f..68c3a8c2e 100644 --- a/app/proguard.pro +++ b/app/proguard.pro @@ -2,7 +2,6 @@ -keep class org.tasks.** { *; } --keep class com.rey.material.widget.Slider -dontwarn com.rey.material.** # remove logging statements diff --git a/app/src/main/java/org/tasks/dialogs/GeofenceDialog.java b/app/src/main/java/org/tasks/dialogs/GeofenceDialog.java index e87b708cc..0ef6e781c 100644 --- a/app/src/main/java/org/tasks/dialogs/GeofenceDialog.java +++ b/app/src/main/java/org/tasks/dialogs/GeofenceDialog.java @@ -1,7 +1,6 @@ package org.tasks.dialogs; import static android.app.Activity.RESULT_OK; -import static org.tasks.dialogs.SeekBarDialog.newSeekBarDialog; import android.app.Dialog; import android.content.Context; @@ -12,12 +11,11 @@ import android.os.Parcelable; import android.view.LayoutInflater; import android.view.View; import android.widget.Switch; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import butterknife.BindView; import butterknife.ButterKnife; -import butterknife.OnClick; +import com.google.android.material.slider.Slider; import javax.inject.Inject; import org.tasks.R; import org.tasks.data.Geofence; @@ -33,9 +31,8 @@ public class GeofenceDialog extends InjectingDialogFragment { public static final String EXTRA_GEOFENCE = "extra_geofence"; private static final String EXTRA_ORIGINAL = "extra_original"; - - private static final String FRAG_TAG_SEEKBAR = "frag_tag_seekbar"; - private static final int REQUEST_RADIUS = 10101; + private static final int MIN_RADIUS = 75; + private static final int MAX_RADIUS = 1000; @Inject DialogBuilder dialogBuilder; @Inject @ForActivity Context context; @@ -49,8 +46,8 @@ public class GeofenceDialog extends InjectingDialogFragment { @BindView(R.id.location_departure) Switch departureView; - @BindView(R.id.location_radius_value) - TextView radiusValue; + @BindView(R.id.slider) + Slider slider; public static GeofenceDialog newGeofenceDialog(Location location) { GeofenceDialog dialog = new GeofenceDialog(); @@ -75,7 +72,13 @@ public class GeofenceDialog extends InjectingDialogFragment { boolean hasLocationPermission = permissionChecker.canAccessLocation(); arrivalView.setChecked(hasLocationPermission && geofence.isArrival()); departureView.setChecked(hasLocationPermission && geofence.isDeparture()); - updateRadius(geofence.getRadius()); + slider.setLabelFormatter( + value -> getString(R.string.location_radius_meters, locale.formatNumber(value))); + slider.setValueTo(MAX_RADIUS); + slider.setValueFrom(MIN_RADIUS); + slider.setStepSize(25); + slider.setHaloRadius(0); + slider.setValue(geofence.getRadius()); return dialogBuilder .newDialog(original.getDisplayName()) .setView(view) @@ -94,7 +97,7 @@ public class GeofenceDialog extends InjectingDialogFragment { Geofence geofence = new Geofence(); geofence.setArrival(arrivalView.isChecked()); geofence.setDeparture(departureView.isChecked()); - geofence.setRadius((int) radiusValue.getTag()); + geofence.setRadius((int) slider.getValue()); return geofence; } @@ -121,29 +124,6 @@ public class GeofenceDialog extends InjectingDialogFragment { } } - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == REQUEST_RADIUS) { - if (resultCode == RESULT_OK) { - updateRadius(data.getIntExtra(SeekBarDialog.EXTRA_VALUE, 250)); - } - } else { - super.onActivityResult(requestCode, resultCode, data); - } - } - - @OnClick(R.id.location_radius) - void selectRadius() { - newSeekBarDialog( - R.layout.dialog_radius_seekbar, 75, 1000, toGeofence().getRadius(), this, REQUEST_RADIUS) - .show(getFragmentManager(), FRAG_TAG_SEEKBAR); - } - - private void updateRadius(int radius) { - radiusValue.setText(getString(R.string.location_radius_meters, locale.formatNumber(radius))); - radiusValue.setTag(radius); - } - @Override protected void inject(DialogFragmentComponent component) { component.inject(this); diff --git a/app/src/main/java/org/tasks/dialogs/SeekBarDialog.java b/app/src/main/java/org/tasks/dialogs/SeekBarDialog.java deleted file mode 100644 index 4182c55b6..000000000 --- a/app/src/main/java/org/tasks/dialogs/SeekBarDialog.java +++ /dev/null @@ -1,105 +0,0 @@ -package org.tasks.dialogs; - -import android.app.Activity; -import android.app.Dialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; -import butterknife.BindView; -import butterknife.ButterKnife; -import com.rey.material.widget.Slider; -import javax.inject.Inject; -import org.tasks.R; -import org.tasks.injection.DialogFragmentComponent; -import org.tasks.injection.InjectingDialogFragment; -import org.tasks.locale.Locale; -import org.tasks.themes.Theme; - -public class SeekBarDialog extends InjectingDialogFragment { - - static final String EXTRA_VALUE = "extra_value"; - private static final String EXTRA_LAYOUT = "extra_layout"; - private static final String EXTRA_MIN = "extra_min"; - private static final String EXTRA_MAX = "extra_max"; - - @BindView(R.id.slider) - Slider slider; - - @BindView(R.id.min) - TextView min; - - @BindView(R.id.max) - TextView max; - - @Inject DialogBuilder dialogBuilder; - @Inject Theme theme; - @Inject Locale locale; - - static SeekBarDialog newSeekBarDialog(int layout, int min, int max, int initial, Fragment target, int requestCode) { - Bundle args = new Bundle(); - args.putInt(EXTRA_LAYOUT, layout); - args.putInt(EXTRA_MIN, min); - args.putInt(EXTRA_MAX, max); - args.putInt(EXTRA_VALUE, initial); - SeekBarDialog dialog = new SeekBarDialog(); - dialog.setArguments(args); - dialog.setTargetFragment(target, requestCode); - return dialog; - } - - @NonNull - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - Bundle arguments = getArguments(); - int initial = - savedInstanceState == null - ? arguments.getInt(EXTRA_VALUE) - : savedInstanceState.getInt(EXTRA_VALUE); - int layout = arguments.getInt(EXTRA_LAYOUT); - - LayoutInflater layoutInflater = theme.getLayoutInflater(getActivity()); - View view = layoutInflater.inflate(layout, null); - ButterKnife.bind(this, view); - - slider.setValueDescriptionProvider(value -> locale.formatNumber(value)); - slider.setValueRange(arguments.getInt(EXTRA_MIN), arguments.getInt(EXTRA_MAX), false); - slider.setValue(initial, true); - min.setText(locale.formatNumber(slider.getMinValue())); - max.setText(locale.formatNumber(slider.getMaxValue())); - return dialogBuilder - .newDialog() - .setView(view) - .setOnCancelListener(this::sendResult) - .setPositiveButton(android.R.string.ok, this::sendResult) - .setNegativeButton(android.R.string.cancel, null) - .show(); - } - - @Override - public void onCancel(DialogInterface dialog) { - sendResult(dialog); - } - - private void sendResult(DialogInterface d, int... i) { - Intent data = new Intent(); - data.putExtra(EXTRA_VALUE, slider.getValue()); - getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, data); - } - - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - - outState.putInt(EXTRA_VALUE, slider.getValue()); - } - - @Override - protected void inject(DialogFragmentComponent component) { - component.inject(this); - } -} diff --git a/app/src/main/java/org/tasks/injection/DialogFragmentComponent.java b/app/src/main/java/org/tasks/injection/DialogFragmentComponent.java index 7d1feddea..a02aaab36 100644 --- a/app/src/main/java/org/tasks/injection/DialogFragmentComponent.java +++ b/app/src/main/java/org/tasks/injection/DialogFragmentComponent.java @@ -12,7 +12,6 @@ import org.tasks.dialogs.GeofenceDialog; import org.tasks.dialogs.IconPickerDialog; import org.tasks.dialogs.ImportTasksDialog; import org.tasks.dialogs.RecordAudioDialog; -import org.tasks.dialogs.SeekBarDialog; import org.tasks.dialogs.SortDialog; import org.tasks.dialogs.ThemePickerDialog; import org.tasks.locale.LocalePickerDialog; @@ -44,8 +43,6 @@ public interface DialogFragmentComponent { void inject(GeofenceDialog geofenceDialog); - void inject(SeekBarDialog seekBarDialog); - void inject(IconPickerDialog iconPickerDialog); void inject(ExportTasksDialog exportTasksDialog); diff --git a/app/src/main/res/layout/dialog_radius_seekbar.xml b/app/src/main/res/layout/dialog_radius_seekbar.xml deleted file mode 100644 index 87c3acf15..000000000 --- a/app/src/main/res/layout/dialog_radius_seekbar.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/layout/location_details.xml b/app/src/main/res/layout/location_details.xml index 78b071fbe..20375da09 100644 --- a/app/src/main/res/layout/location_details.xml +++ b/app/src/main/res/layout/location_details.xml @@ -1,20 +1,19 @@ + android:layout_height="wrap_content" + xmlns:app="http://schemas.android.com/apk/res-auto"> @@ -22,40 +21,28 @@ android:id="@+id/location_departure" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeightSmall" - android:paddingStart="@dimen/keyline_second" - android:paddingEnd="@dimen/keyline_first" android:gravity="center_vertical" android:text="@string/location_remind_departure" android:textAppearance="?attr/textAppearanceListItemSmall"/> - - - - + \ No newline at end of file