Remove SeekBarDialog

pull/996/head
Alex Baker 6 years ago
parent 448578cef3
commit b8d649656a

1
app/proguard.pro vendored

@ -2,7 +2,6 @@
-keep class org.tasks.** { *; }
-keep class com.rey.material.widget.Slider
-dontwarn com.rey.material.**
# remove logging statements

@ -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);

@ -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);
}
}

@ -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);

@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.rey.material.widget.Slider xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/slider"
style="@style/Material.Widget.Slider.Discrete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/keyline_first"
android:paddingEnd="@dimen/keyline_first"
android:gravity="center"
android:minHeight="?attr/listPreferredItemHeight"
app:sl_discreteMode="true"
app:sl_stepValue="25"
app:sl_travelAnimDuration="100"/>
<TextView
android:id="@+id/min"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@id/slider"
android:paddingTop="5dp"
android:paddingStart="@dimen/keyline_first"
android:paddingEnd="@dimen/keyline_first"/>
<TextView
android:id="@+id/max"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_below="@id/slider"
android:paddingTop="5dp"
android:paddingStart="@dimen/keyline_first"
android:paddingEnd="@dimen/keyline_first"/>
</RelativeLayout>

@ -1,20 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/header_gap"
android:paddingStart="@dimen/keyline_second"
android:paddingEnd="@dimen/keyline_first"
android:orientation="vertical">
<Switch
android:id="@+id/location_arrival"
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_arrival"
android:textAppearance="?attr/textAppearanceListItemSmall"/>
@ -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"/>
<RelativeLayout
android:id="@+id/location_radius"
android:background="?attr/selectableItemBackground"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:paddingStart="@dimen/keyline_second"
android:paddingEnd="@dimen/keyline_first">
<TextView
android:id="@+id/location_radius_value"
android:layout_width="wrap_content"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:layout_alignParentEnd="true"
android:gravity="center_vertical"
android:text="250"
android:textAppearance="?attr/textAppearanceListItem"
tools:ignore="HardcodedText"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/location_radius_value"
android:ellipsize="end"
android:gravity="center_vertical"
android:text="@string/geofence_radius"
android:textAppearance="?attr/textAppearanceListItem"/>
</RelativeLayout>
<com.google.android.material.slider.Slider
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:trackColorActive="?attr/colorSecondary"
app:thumbColor="?attr/colorSecondary"
app:tickColorActive="?attr/colorOnSecondary"
app:tickColorInactive="?attr/colorSecondary"
app:tickColor="@android:color/transparent"
app:trackColorInactive="@color/text_tertiary"/>
</LinearLayout>
</ScrollView>
Loading…
Cancel
Save