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