timer scheduling now working.. Fixed #4.

This commit is contained in:
Christopher Beckmann 2017-11-03 04:09:30 +01:00
commit 36fc5f3c21
4 changed files with 33 additions and 8 deletions

View file

@ -5,10 +5,10 @@ package org.secuso.privacyfriendlybreakreminder.activities;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.preference.ListPreference;
import android.preference.MultiSelectListPreference;
import android.preference.Preference;
@ -18,12 +18,13 @@ import android.view.MenuItem;
import org.secuso.privacyfriendlybreakreminder.R;
import org.secuso.privacyfriendlybreakreminder.activities.helper.AppCompatPreferenceActivity;
import org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefManager;
import org.secuso.privacyfriendlybreakreminder.receivers.TimerSchedulerReceiver;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefManager.PREF_SCHEDULE_EXERCISE_ENABLED;
/**
* @author Christopher Beckmann
@ -82,7 +83,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
@Override
protected boolean isValidFragment(String fragmentName) {
return ExercisePreferenceFragment.class.getName().equals(fragmentName)
|| TimerPreferenceFragment.class.getName().equals(fragmentName);
|| TimerSchedulePreferenceFragment.class.getName().equals(fragmentName);
}
@ -199,7 +200,16 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
}
}
public static class TimerPreferenceFragment extends PreferenceFragment {
public static class TimerSchedulePreferenceFragment extends PreferenceFragment {
private OnSharedPreferenceChangeListener listener = new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// if anything changed with this settings .. reset the alarm
TimerSchedulerReceiver.scheduleNextAlarm(getActivity().getApplicationContext());
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -207,6 +217,19 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
setHasOptionsMenu(true);
bindPreferenceSummaryToValue(findPreference("pref_schedule_exercise_days"));
PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext())
.registerOnSharedPreferenceChangeListener(listener);
}
@Override
public void onDetach() {
PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext())
.unregisterOnSharedPreferenceChangeListener(listener);
super.onDetach();
}
}
}

View file

@ -66,8 +66,10 @@ public class TimerSchedulerReceiver extends WakefulBroadcastReceiver {
public static void scheduleNextAlarm(@NonNull Context context) {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
// delete any previous set alarm
deleteScheduledAlarm(context);
if(!pref.getBoolean(PREF_SCHEDULE_EXERCISE_ENABLED, false)) {
deleteScheduledAlarm(context);
return;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 686 B

View file

@ -8,7 +8,7 @@
android:title="@string/pref_header_exercises" />
<header
android:fragment="org.secuso.privacyfriendlybreakreminder.activities.SettingsActivity$TimerPreferenceFragment"
android:fragment="org.secuso.privacyfriendlybreakreminder.activities.SettingsActivity$TimerSchedulePreferenceFragment"
android:icon="@drawable/ic_alarm_black"
android:title="@string/pref_header_schedule" />