Add options to sleep timer dialog
This commit is contained in:
parent
c7d8a1bae8
commit
946d5ef50c
|
@ -31,7 +31,7 @@ import de.danoeh.antennapod.core.util.StorageUtils;
|
|||
import de.danoeh.antennapod.core.util.playback.MediaPlayerError;
|
||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
||||
import de.danoeh.antennapod.dialog.TimeDialog;
|
||||
import de.danoeh.antennapod.dialog.SleepTimerDialog;
|
||||
|
||||
/**
|
||||
* Provides general features which are both needed for playing audio and video
|
||||
|
@ -323,13 +323,10 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
break;
|
||||
case R.id.set_sleeptimer_item:
|
||||
if (controller.serviceAvailable()) {
|
||||
TimeDialog td = new TimeDialog(this,
|
||||
R.string.set_sleeptimer_label,
|
||||
R.string.set_sleeptimer_label) {
|
||||
|
||||
SleepTimerDialog td = new SleepTimerDialog(this, 0, 0) {
|
||||
@Override
|
||||
public void onTimeEntered(long millis) {
|
||||
controller.setSleepTimer(millis);
|
||||
public void onTimerSet(long millis, boolean shakeToReset, boolean vibrate) {
|
||||
controller.setSleepTimer(millis, shakeToReset, vibrate);
|
||||
}
|
||||
};
|
||||
td.show();
|
||||
|
|
|
@ -9,13 +9,19 @@ import android.util.Log;
|
|||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.*;
|
||||
import de.danoeh.antennapod.core.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public abstract class TimeDialog extends Dialog {
|
||||
import de.danoeh.antennapod.R;
|
||||
|
||||
public abstract class SleepTimerDialog extends Dialog {
|
||||
|
||||
private static final String TAG = "TimeDialog";
|
||||
|
||||
private static final int DEFAULT_SPINNER_POSITION = 1;
|
||||
|
@ -24,13 +30,14 @@ public abstract class TimeDialog extends Dialog {
|
|||
|
||||
private EditText etxtTime;
|
||||
private Spinner spTimeUnit;
|
||||
private CheckBox cbShakeToReset;
|
||||
private CheckBox cbVibrate;
|
||||
private Button butConfirm;
|
||||
private Button butCancel;
|
||||
|
||||
private TimeUnit[] units = {TimeUnit.SECONDS, TimeUnit.MINUTES,
|
||||
TimeUnit.HOURS};
|
||||
private TimeUnit[] units = { TimeUnit.SECONDS, TimeUnit.MINUTES, TimeUnit.HOURS };
|
||||
|
||||
public TimeDialog(Context context, int titleTextId, int leftButtonTextId) {
|
||||
public SleepTimerDialog(Context context, int titleTextId, int leftButtonTextId) {
|
||||
super(context);
|
||||
this.context = context;
|
||||
}
|
||||
|
@ -46,13 +53,15 @@ public abstract class TimeDialog extends Dialog {
|
|||
setContentView(R.layout.time_dialog);
|
||||
etxtTime = (EditText) findViewById(R.id.etxtTime);
|
||||
spTimeUnit = (Spinner) findViewById(R.id.spTimeUnit);
|
||||
cbShakeToReset = (CheckBox) findViewById(R.id.cbShakeToReset);
|
||||
cbVibrate = (CheckBox) findViewById(R.id.cbVibrate);
|
||||
butConfirm = (Button) findViewById(R.id.butConfirm);
|
||||
butCancel = (Button) findViewById(R.id.butCancel);
|
||||
|
||||
butConfirm.setText(R.string.set_sleeptimer_label);
|
||||
butCancel.setText(R.string.cancel_label);
|
||||
setTitle(R.string.set_sleeptimer_label);
|
||||
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(
|
||||
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(
|
||||
this.getContext(), android.R.layout.simple_spinner_item,
|
||||
spinnerContent);
|
||||
spinnerAdapter
|
||||
|
@ -72,7 +81,7 @@ public abstract class TimeDialog extends Dialog {
|
|||
public void onClick(View v) {
|
||||
try {
|
||||
long input = readTimeMillis();
|
||||
onTimeEntered(input);
|
||||
onTimerSet(input, cbShakeToReset.isChecked(), cbVibrate.isChecked());
|
||||
dismiss();
|
||||
} catch (NumberFormatException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -117,17 +126,15 @@ public abstract class TimeDialog extends Dialog {
|
|||
|
||||
private void checkInputLength(int length) {
|
||||
if (length > 0) {
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Length is larger than 0, enabling confirm button");
|
||||
Log.d(TAG, "Length is larger than 0, enabling confirm button");
|
||||
butConfirm.setEnabled(true);
|
||||
} else {
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Length is smaller than 0, disabling confirm button");
|
||||
Log.d(TAG, "Length is smaller than 0, disabling confirm button");
|
||||
butConfirm.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void onTimeEntered(long millis);
|
||||
public abstract void onTimerSet(long millis, boolean shakeToReset, boolean vibrate);
|
||||
|
||||
private long readTimeMillis() {
|
||||
TimeUnit selectedUnit = units[spTimeUnit.getSelectedItemPosition()];
|
|
@ -2,7 +2,7 @@
|
|||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical" >
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
@ -31,6 +31,39 @@
|
|||
android:layout_marginTop="8dp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/timer_about_to_expire_label"/>
|
||||
|
||||
<CheckBox android:id="@+id/cbShakeToReset"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/shake_to_reset_label"
|
||||
android:checked="true" />
|
||||
|
||||
<CheckBox android:id="@+id/cbVibrate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/timer_vibration_label"
|
||||
android:checked="true" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/footer"
|
||||
android:layout_width="fill_parent"
|
||||
|
|
|
@ -32,6 +32,39 @@
|
|||
android:layout_marginTop="8dp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/timer_about_to_expire_label"/>
|
||||
|
||||
<CheckBox android:id="@+id/cbShakeToReset"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/shake_to_reset_label"
|
||||
android:checked="true" />
|
||||
|
||||
<CheckBox android:id="@+id/cbVibrate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/timer_vibration_label"
|
||||
android:checked="true" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
style="@android:style/ButtonBar"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -385,6 +385,9 @@
|
|||
<string name="sleep_timer_label">Sleep timer</string>
|
||||
<string name="time_left_label">Time left:\u0020</string>
|
||||
<string name="time_dialog_invalid_input">Invalid input, time has to be an integer</string>
|
||||
<string name="timer_about_to_expire_label"><b>When timer is about to expire:</b></string>
|
||||
<string name="shake_to_reset_label">Shake to reset timer</string>
|
||||
<string name="timer_vibration_label">Vibrate</string>
|
||||
<string name="time_seconds">seconds</string>
|
||||
<string name="time_minutes">minutes</string>
|
||||
<string name="time_hours">hours</string>
|
||||
|
|
Loading…
Reference in New Issue