From 717a6a645e3e9dfbcef7d3dd6b509be98c68ef22 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Wed, 24 Jun 2015 17:43:50 +0200 Subject: Set update interval or time of day --- .../preferences/PreferenceController.java | 86 +++++++++++++++++----- app/src/main/res/xml/preferences.xml | 9 +-- 2 files changed, 69 insertions(+), 26 deletions(-) (limited to 'app/src') diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java index 2c6afd126..3a8abcc40 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.preferences; import android.app.Activity; import android.app.AlertDialog; +import android.app.TimePickerDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -16,15 +17,16 @@ import android.preference.Preference; import android.preference.PreferenceScreen; import android.text.Editable; import android.text.TextWatcher; +import android.text.format.DateFormat; import android.util.Log; import android.widget.EditText; +import android.widget.TimePicker; import android.widget.Toast; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.BuildConfig; import de.danoeh.antennapod.R; @@ -202,14 +204,10 @@ public class PreferenceController { }); ui.findPreference(UserPreferences.PREF_UPDATE_INTERVAL) - .setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + .setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - if (newValue instanceof String) { - int hours = Integer.valueOf((String)newValue); - long millis = TimeUnit.HOURS.toMillis(hours); - UserPreferences.restartUpdateAlarm(millis, millis); - } + public boolean onPreferenceClick(Preference preference) { + showUpdateIntervalTimePreferencesDialog(); return true; } }); @@ -366,7 +364,6 @@ public class PreferenceController { return true; } }); - buildUpdateIntervalPreference(); buildSmartMarkAsPlayedPreference(); buildAutodownloadSelectedNetworsPreference(); setSelectedNetworksEnabled(UserPreferences @@ -399,11 +396,8 @@ public class PreferenceController { ui.findPreference(PreferenceController.PREF_GPODNET_HOSTNAME).setSummary(GpodnetPreferences.getHostname()); } - private void buildUpdateIntervalPreference() { + private String[] getUpdateIntervalEntries(final String[] values) { final Resources res = ui.getActivity().getResources(); - - ListPreference pref = (ListPreference) ui.findPreference(UserPreferences.PREF_UPDATE_INTERVAL); - String[] values = res.getStringArray(R.array.update_intervall_values); String[] entries = new String[values.length]; for (int x = 0; x < values.length; x++) { Integer v = Integer.parseInt(values[x]); @@ -412,19 +406,15 @@ public class PreferenceController { entries[x] = res.getString(R.string.pref_update_interval_hours_manual); break; case 1: - entries[x] = v - + " " - + res.getString(R.string.pref_update_interval_hours_singular); + entries[x] = v + " " + res.getString(R.string.pref_update_interval_hours_singular); break; default: - entries[x] = v + " " - + res.getString(R.string.pref_update_interval_hours_plural); + entries[x] = v + " " + res.getString(R.string.pref_update_interval_hours_plural); break; } } - pref.setEntries(entries); - + return entries; } private void buildSmartMarkAsPlayedPreference() { @@ -617,7 +607,63 @@ public class PreferenceController { builder.create().show(); } + private void showUpdateIntervalTimePreferencesDialog() { + final Context context = ui.getActivity(); + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(R.string.pref_autoUpdateIntervallOrTime_title); + builder.setMessage(R.string.pref_autoUpdateIntervallOrTime_message); + builder.setNegativeButton(R.string.pref_autoUpdateIntervallOrTime_Disable, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + UserPreferences.setUpdateInterval(0); + } + }); + builder.setNeutralButton(R.string.pref_autoUpdateIntervallOrTime_Interval, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(context.getString(R.string.pref_autoUpdateIntervallOrTime_Interval)); + final String[] values = context.getResources().getStringArray(R.array.update_intervall_values); + final String[] entries = getUpdateIntervalEntries(values); + builder.setSingleChoiceItems(entries, -1, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + int hours = Integer.valueOf(values[which]); + UserPreferences.setUpdateInterval(hours); + dialog.dismiss(); + } + }); + builder.setNegativeButton(context.getString(R.string.cancel_label), null); + builder.show(); + } + }); + builder.setPositiveButton(R.string.pref_autoUpdateIntervallOrTime_TimeOfDay, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + int hourOfDay = 7, minute = 0; + int[] updateTime = UserPreferences.getUpdateTimeOfDay(); + if (updateTime.length == 2) { + hourOfDay = updateTime[0]; + minute = updateTime[1]; + } + TimePickerDialog timePickerDialog = new TimePickerDialog(context, new TimePickerDialog.OnTimeSetListener() { + @Override + public void onTimeSet(TimePicker view, int hourOfDay, int minute) { + if (view.getTag() == null) { // onTimeSet() may get called twice! + view.setTag("TAGGED"); + UserPreferences.setUpdateTimeOfDay(hourOfDay, minute); + } + } + }, hourOfDay, minute, DateFormat.is24HourFormat(context)); + timePickerDialog.setTitle(context.getString(R.string.pref_autoUpdateIntervallOrTime_TimeOfDay)); + timePickerDialog.show(); + } + } + + ); + builder.show(); + } public static interface PreferenceUI { diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 564630afc..04699bac1 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -96,13 +96,10 @@ - + android:summary="@string/pref_autoUpdateIntervallOrTime_sum" + android:title="@string/pref_autoUpdateIntervallOrTime_title"/> Date: Fri, 26 Jun 2015 03:06:42 +0200 Subject: Fixed tests. --- .../androidTest/java/de/test/antennapod/ui/PreferencesTest.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'app/src') diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java index b978a119d..99954bf77 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java @@ -241,9 +241,9 @@ public class PreferencesTest extends ActivityInstrumentationTestCase2