diff options
author | Alex Ning <chineseperson5@gmail.com> | 2019-09-29 01:49:30 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2019-09-29 01:49:30 +0000 |
commit | 3227e43fc4bc914f8bde1d06017ae16ced3fe278 (patch) | |
tree | 4a73e51c771fee9fdb150965990d4400d493f192 /app/src/main/java/Settings/NotificationPreferenceFragment.java | |
parent | 47832e1e91db7e355b8122e1b533966c8df5ddba (diff) | |
download | infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar.gz infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar.bz2 infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar.lz infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar.xz infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar.zst infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.zip |
Change project structures.
Diffstat (limited to 'app/src/main/java/Settings/NotificationPreferenceFragment.java')
-rw-r--r-- | app/src/main/java/Settings/NotificationPreferenceFragment.java | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/app/src/main/java/Settings/NotificationPreferenceFragment.java b/app/src/main/java/Settings/NotificationPreferenceFragment.java deleted file mode 100644 index 4d9051fe..00000000 --- a/app/src/main/java/Settings/NotificationPreferenceFragment.java +++ /dev/null @@ -1,118 +0,0 @@ -package Settings; - - -import android.app.Activity; -import android.content.SharedPreferences; -import android.os.Bundle; - -import androidx.fragment.app.Fragment; -import androidx.preference.ListPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.SwitchPreference; -import androidx.work.Constraints; -import androidx.work.ExistingPeriodicWorkPolicy; -import androidx.work.NetworkType; -import androidx.work.PeriodicWorkRequest; -import androidx.work.WorkManager; - -import java.util.concurrent.TimeUnit; - -import javax.inject.Inject; - -import ml.docilealligator.infinityforreddit.Infinity; -import ml.docilealligator.infinityforreddit.PullNotificationWorker; -import ml.docilealligator.infinityforreddit.R; -import ml.docilealligator.infinityforreddit.SharedPreferencesUtils; - -/** - * A simple {@link Fragment} subclass. - */ -public class NotificationPreferenceFragment extends PreferenceFragmentCompat { - - private boolean enableNotification; - private long notificationInterval; - - private WorkManager workManager; - - @Inject - SharedPreferences sharedPreferences; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.notification_preferences, rootKey); - - Activity activity = getActivity(); - - if(activity != null) { - workManager = WorkManager.getInstance(activity); - - ((Infinity) activity.getApplication()).getAppComponent().inject(this); - - SwitchPreference enableNotificationSwitchPreference = findPreference(SharedPreferencesUtils.ENABLE_NOTIFICATION_KEY); - ListPreference notificationIntervalListPreference = findPreference(SharedPreferencesUtils.NOTIFICATION_INTERVAL_KEY); - - enableNotification = sharedPreferences.getBoolean(SharedPreferencesUtils.ENABLE_NOTIFICATION_KEY, true); - notificationInterval = Long.parseLong(sharedPreferences.getString(SharedPreferencesUtils.NOTIFICATION_INTERVAL_KEY, "1")); - - if(enableNotification) { - if (notificationIntervalListPreference != null) { - notificationIntervalListPreference.setVisible(true); - } - } - - if(enableNotificationSwitchPreference != null) { - enableNotificationSwitchPreference.setOnPreferenceChangeListener((preference, newValue) -> { - enableNotification = ((Boolean) newValue); - if(notificationIntervalListPreference != null) { - notificationIntervalListPreference.setVisible(enableNotification); - } - - if(enableNotification) { - Constraints constraints = new Constraints.Builder() - .setRequiredNetworkType(NetworkType.CONNECTED) - .build(); - - PeriodicWorkRequest pullNotificationRequest = - new PeriodicWorkRequest.Builder(PullNotificationWorker.class, - notificationInterval, TimeUnit.HOURS) - .setConstraints(constraints) - .setInitialDelay(notificationInterval, TimeUnit.HOURS) - .build(); - - workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG, - ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest); - } else { - workManager.cancelUniqueWork(PullNotificationWorker.WORKER_TAG); - } - return true; - }); - } - - if(notificationIntervalListPreference != null) { - notificationIntervalListPreference.setOnPreferenceChangeListener((preference, newValue) -> { - notificationInterval = Long.parseLong((String) newValue); - - if(enableNotification) { - Constraints constraints = new Constraints.Builder() - .setRequiredNetworkType(NetworkType.CONNECTED) - .build(); - - PeriodicWorkRequest pullNotificationRequest = - new PeriodicWorkRequest.Builder(PullNotificationWorker.class, - notificationInterval, TimeUnit.HOURS) - .setConstraints(constraints) - .setInitialDelay(notificationInterval, TimeUnit.HOURS) - .build(); - - workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG, - ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest); - } else { - workManager.cancelUniqueWork(PullNotificationWorker.WORKER_TAG); - } - - return true; - }); - } - } - } -} |