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 | |
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')
8 files changed, 0 insertions, 671 deletions
diff --git a/app/src/main/java/Settings/AboutPreferenceFragment.java b/app/src/main/java/Settings/AboutPreferenceFragment.java deleted file mode 100644 index f2ba0518..00000000 --- a/app/src/main/java/Settings/AboutPreferenceFragment.java +++ /dev/null @@ -1,91 +0,0 @@ -package Settings; - - -import android.app.Activity; -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.widget.Toast; - -import androidx.preference.Preference; -import androidx.preference.PreferenceFragmentCompat; - -import ml.docilealligator.infinityforreddit.LinkResolverActivity; -import ml.docilealligator.infinityforreddit.R; -import ml.docilealligator.infinityforreddit.SharedPreferencesUtils; - -/** - * A simple {@link PreferenceFragmentCompat} subclass. - */ -public class AboutPreferenceFragment extends PreferenceFragmentCompat { - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.about_preferences, rootKey); - - Preference openSourcePreference = findPreference(SharedPreferencesUtils.OPEN_SOURCE_KEY); - Preference reviewPreference = findPreference(SharedPreferencesUtils.RATE_KEY); - Preference emailPreference = findPreference(SharedPreferencesUtils.EMAIL_KEY); - Preference redditAccountPreference = findPreference(SharedPreferencesUtils.REDDIT_ACCOUNT_KEY); - Preference subredditPreference = findPreference(SharedPreferencesUtils.SUBREDDIT_KEY); - - Activity activity = getActivity(); - - if(activity != null) { - if(openSourcePreference != null) { - openSourcePreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://github.com/Docile-Alligator/Infinity-For-Reddit")); - startActivity(intent); - return true; - }); - } - - if(reviewPreference != null) { - reviewPreference.setOnPreferenceClickListener(preference -> { - Intent playStoreIntent = new Intent(Intent.ACTION_VIEW); - playStoreIntent.setData(Uri.parse("market://details?id=ml.docilealligator.infinityforreddit")); - if(playStoreIntent.resolveActivity(activity.getPackageManager()) != null) { - activity.startActivity(playStoreIntent); - } else { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforreddit")); - startActivity(intent); - } - return true; - }); - } - - if(emailPreference != null) { - emailPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(Intent.ACTION_SENDTO); - intent.setData(Uri.parse("mailto:docilealligator.app@gmail.com")); - if(intent.resolveActivity(activity.getPackageManager()) != null) { - startActivity(intent); - } else { - Toast.makeText(activity, R.string.no_email_client, Toast.LENGTH_SHORT).show(); - } - return true; - }); - } - - if(redditAccountPreference != null) { - redditAccountPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.reddit.com/user/Hostilenemy")); - startActivity(intent); - return true; - }); - } - - if(subredditPreference != null) { - subredditPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.reddit.com/r/Infinity_For_Reddit")); - startActivity(intent); - return true; - }); - } - } - } -} diff --git a/app/src/main/java/Settings/Acknowledgement.java b/app/src/main/java/Settings/Acknowledgement.java deleted file mode 100644 index 26a5a064..00000000 --- a/app/src/main/java/Settings/Acknowledgement.java +++ /dev/null @@ -1,27 +0,0 @@ -package Settings; - -import android.net.Uri; - -class Acknowledgement { - private String name; - private String introduction; - private Uri link; - - Acknowledgement(String name, String introduction, Uri link) { - this.name = name; - this.introduction = introduction; - this.link = link; - } - - public String getName() { - return name; - } - - public String getIntroduction() { - return introduction; - } - - public Uri getLink() { - return link; - } -} diff --git a/app/src/main/java/Settings/AcknowledgementFragment.java b/app/src/main/java/Settings/AcknowledgementFragment.java deleted file mode 100644 index 7a19a0a5..00000000 --- a/app/src/main/java/Settings/AcknowledgementFragment.java +++ /dev/null @@ -1,106 +0,0 @@ -package Settings; - - -import android.app.Activity; -import android.net.Uri; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.ButterKnife; -import ml.docilealligator.infinityforreddit.R; - -/** - * A simple {@link Fragment} subclass. - */ -public class AcknowledgementFragment extends Fragment { - - - public AcknowledgementFragment() { - // Required empty public constructor - } - - @BindView(R.id.recycler_view_acknowledgement_fragment) RecyclerView recyclerView; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_acknowledgement, container, false); - ButterKnife.bind(this, rootView); - - Activity activity = getActivity(); - - ArrayList<Acknowledgement> acknowledgements = new ArrayList<>(); - acknowledgements.add(new Acknowledgement("ExoPlayer", - "An application level media player for Android", - Uri.parse("https://github.com/google/ExoPlayer"))); - acknowledgements.add(new Acknowledgement("GestureViews", - "ImageView and FrameLayout with gestures control and position animation", - Uri.parse("https://github.com/alexvasilkov/GestureViews"))); - acknowledgements.add(new Acknowledgement("Glide", - "A fast and efficient open source media management and image loading framework for Android", - Uri.parse("https://github.com/bumptech/glide"))); - acknowledgements.add(new Acknowledgement("Swipe", - "Detects swipe events on Android with listener and RxJava Observable", - Uri.parse("https://github.com/pwittchen/swipe"))); - acknowledgements.add(new Acknowledgement("RxAndroid", - "Android specific bindings for RxJava 2", - Uri.parse("https://github.com/ReactiveX/RxAndroid"))); - acknowledgements.add(new Acknowledgement("RxJava", - "Reactive extensions for the JVM", - Uri.parse("https://github.com/ReactiveX/RxJava"))); - acknowledgements.add(new Acknowledgement("Retrofit", - "Type-safe HTTP client for Android and Java by Square, Inc.", - Uri.parse("https://github.com/square/retrofit"))); - acknowledgements.add(new Acknowledgement("Dagger", - "A fast dependency injector for Java and Android.", - Uri.parse("https://github.com/google/dagger"))); - acknowledgements.add(new Acknowledgement("Butter Knife", - "Field and method binding for Android views", - Uri.parse("https://github.com/JakeWharton/butterknife"))); - acknowledgements.add(new Acknowledgement("Aspect Ratio ImageView", - "A simple imageview which scales the width or height aspect with the given ratio", - Uri.parse("https://github.com/santalu/aspect-ratio-imageview"))); - acknowledgements.add(new Acknowledgement("MaterialLoadingProgressBar", - "A styled ProgressBar", - Uri.parse("https://github.com/lsjwzh/MaterialLoadingProgressBar"))); - acknowledgements.add(new Acknowledgement("Markwon", - "A markdown library for Android", - Uri.parse("https://github.com/noties/Markwon"))); - acknowledgements.add(new Acknowledgement("android-gif-drawable", - "Views and Drawable for animated GIFs in Android.", - Uri.parse("https://github.com/koral--/android-gif-drawable"))); - acknowledgements.add(new Acknowledgement("SimpleSearchView", - "A simple SearchView for Android based on Material Design", - Uri.parse("https://github.com/Ferfalk/SimpleSearchView"))); - acknowledgements.add(new Acknowledgement("EventBus", - "A publish/subscribe event bus for Android and Java", - Uri.parse("https://github.com/greenrobot/EventBus"))); - acknowledgements.add(new Acknowledgement("Customized and Expandable TextView", - "Simple library to change the Textview as rectangle, circle and square shapes", - Uri.parse("https://github.com/Rajagopalr3/CustomizedTextView"))); - acknowledgements.add(new Acknowledgement("Rounded Bottom Sheet", - "Bottom sheet with rounded corners", - Uri.parse("https://github.com/Deishelon/RoundedBottomSheet"))); - acknowledgements.add(new Acknowledgement("Bridge", - "A library for avoiding TransactionTooLargeException during state saving and restoration", - Uri.parse("https://github.com/livefront/bridge"))); - acknowledgements.add(new Acknowledgement("Android-State", - "A utility library for Android to save objects in a Bundle without any boilerplate", - Uri.parse("https://github.com/evernote/android-state"))); - - AcknowledgementRecyclerViewAdapter adapter = new AcknowledgementRecyclerViewAdapter(activity, acknowledgements); - recyclerView.setLayoutManager(new LinearLayoutManager(activity)); - recyclerView.setAdapter(adapter); - - return rootView; - } -} diff --git a/app/src/main/java/Settings/AcknowledgementRecyclerViewAdapter.java b/app/src/main/java/Settings/AcknowledgementRecyclerViewAdapter.java deleted file mode 100644 index 81286903..00000000 --- a/app/src/main/java/Settings/AcknowledgementRecyclerViewAdapter.java +++ /dev/null @@ -1,67 +0,0 @@ -package Settings; - -import android.content.Context; -import android.content.Intent; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.ButterKnife; -import ml.docilealligator.infinityforreddit.LinkResolverActivity; -import ml.docilealligator.infinityforreddit.R; - -class AcknowledgementRecyclerViewAdapter extends RecyclerView.Adapter<AcknowledgementRecyclerViewAdapter.AcknowledgementViewHolder> { - private ArrayList<Acknowledgement> acknowledgements; - private Context context; - - AcknowledgementRecyclerViewAdapter(Context context, ArrayList<Acknowledgement> acknowledgements) { - this.context = context; - this.acknowledgements = acknowledgements; - } - - @NonNull - @Override - public AcknowledgementViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new AcknowledgementViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_acknowledgement, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull AcknowledgementViewHolder holder, int position) { - Acknowledgement acknowledgement = acknowledgements.get(holder.getAdapterPosition()); - if(acknowledgement != null) { - holder.nameTextView.setText(acknowledgement.getName()); - holder.introductionTextView.setText(acknowledgement.getIntroduction()); - holder.itemView.setOnClickListener(view -> { - if(context != null) { - Intent intent = new Intent(context, LinkResolverActivity.class); - intent.setData(acknowledgement.getLink()); - context.startActivity(intent); - } - }); - } - } - - @Override - public int getItemCount() { - return acknowledgements == null ? 0 : acknowledgements.size(); - } - - class AcknowledgementViewHolder extends RecyclerView.ViewHolder { - View itemView; - @BindView(R.id.name_text_view_item_acknowledgement) TextView nameTextView; - @BindView(R.id.introduction_text_view_item_acknowledgement) TextView introductionTextView; - - AcknowledgementViewHolder(@NonNull View itemView) { - super(itemView); - ButterKnife.bind(this, itemView); - this.itemView = itemView; - } - } -} diff --git a/app/src/main/java/Settings/CreditsPreferenceFragment.java b/app/src/main/java/Settings/CreditsPreferenceFragment.java deleted file mode 100644 index 55fb3363..00000000 --- a/app/src/main/java/Settings/CreditsPreferenceFragment.java +++ /dev/null @@ -1,100 +0,0 @@ -package Settings; - - -import android.app.Activity; -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; - -import androidx.preference.Preference; -import androidx.preference.PreferenceFragmentCompat; - -import ml.docilealligator.infinityforreddit.LinkResolverActivity; -import ml.docilealligator.infinityforreddit.R; -import ml.docilealligator.infinityforreddit.SharedPreferencesUtils; - -/** - * A simple {@link PreferenceFragmentCompat} subclass. - */ -public class CreditsPreferenceFragment extends PreferenceFragmentCompat { - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.credits_preferences, rootKey); - - Preference iconForegroundPreference = findPreference(SharedPreferencesUtils.ICON_FOREGROUND_KEY); - Preference iconBackgroundPreference = findPreference(SharedPreferencesUtils.ICON_BACKGROUND_KEY); - Preference errorImagePreference = findPreference(SharedPreferencesUtils.ERROR_IMAGE_KEY); - Preference gildedIconPreference = findPreference(SharedPreferencesUtils.GILDED_ICON_KEY); - Preference crosspostIconPreference = findPreference(SharedPreferencesUtils.CROSSPOST_ICON_KEY); - Preference thumbtackIconPreference = findPreference(SharedPreferencesUtils.THUMBTACK_ICON_KEY); - Preference materialIconsPreference = findPreference(SharedPreferencesUtils.MATERIAL_ICONS_KEY); - - Activity activity = getActivity(); - - if(activity != null) { - if(iconForegroundPreference != null) { - iconForegroundPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.freepik.com/free-photos-vectors/technology")); - startActivity(intent); - return true; - }); - } - - if(iconBackgroundPreference != null) { - iconBackgroundPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.freepik.com/free-photos-vectors/background")); - startActivity(intent); - return true; - }); - } - - if(errorImagePreference != null) { - errorImagePreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.freepik.com/free-photos-vectors/technology")); - startActivity(intent); - return true; - }); - } - - if(gildedIconPreference != null) { - gildedIconPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://br.flaticon.com/icone-gratis/medalha_1007239")); - startActivity(intent); - return true; - }); - } - - if(crosspostIconPreference != null) { - crosspostIconPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.flaticon.com/free-icon/crossed-arrows_2291")); - startActivity(intent); - return true; - }); - } - - if(thumbtackIconPreference != null) { - thumbtackIconPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://www.flaticon.com/free-icon/tack-save-button_61845#term=thumbtack&page=1&position=3")); - startActivity(intent); - return true; - }); - } - - if(materialIconsPreference != null) { - materialIconsPreference.setOnPreferenceClickListener(preference -> { - Intent intent = new Intent(activity, LinkResolverActivity.class); - intent.setData(Uri.parse("https://material.io/resources/icons/")); - startActivity(intent); - return true; - }); - } - } - } -} diff --git a/app/src/main/java/Settings/FontSizePreferenceFragment.java b/app/src/main/java/Settings/FontSizePreferenceFragment.java deleted file mode 100644 index 41000a5a..00000000 --- a/app/src/main/java/Settings/FontSizePreferenceFragment.java +++ /dev/null @@ -1,49 +0,0 @@ -package Settings; - -import android.app.Activity; -import android.os.Bundle; - -import androidx.preference.ListPreference; -import androidx.preference.PreferenceFragmentCompat; - -import org.greenrobot.eventbus.EventBus; - -import ml.docilealligator.infinityforreddit.ChangeFontSizeEvent; -import ml.docilealligator.infinityforreddit.R; -import ml.docilealligator.infinityforreddit.SharedPreferencesUtils; - -public class FontSizePreferenceFragment extends PreferenceFragmentCompat { - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.font_size_preferences, rootKey); - - Activity activity = getActivity(); - if(activity != null) { - ListPreference fontSizePreference = findPreference(SharedPreferencesUtils.FONT_SIZE_KEY); - ListPreference titleFontSizePreference = findPreference(SharedPreferencesUtils.TITLE_FONT_SIZE_KEY); - ListPreference contentFontSizePreference = findPreference(SharedPreferencesUtils.CONTENT_FONT_SIZE_KEY); - - if(fontSizePreference != null) { - fontSizePreference.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeFontSizeEvent()); - activity.recreate(); - return true; - }); - } - - if(titleFontSizePreference != null) { - titleFontSizePreference.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeFontSizeEvent()); - return true; - }); - } - - if(contentFontSizePreference != null) { - contentFontSizePreference.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeFontSizeEvent()); - return true; - }); - } - } - } -} diff --git a/app/src/main/java/Settings/MainPreferenceFragment.java b/app/src/main/java/Settings/MainPreferenceFragment.java deleted file mode 100644 index 8e3b7d99..00000000 --- a/app/src/main/java/Settings/MainPreferenceFragment.java +++ /dev/null @@ -1,113 +0,0 @@ -package Settings; - - -import android.app.Activity; -import android.content.SharedPreferences; -import android.os.Build; -import android.os.Bundle; - -import androidx.appcompat.app.AppCompatDelegate; -import androidx.preference.ListPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.SwitchPreference; - -import org.greenrobot.eventbus.EventBus; - -import javax.inject.Inject; - -import ml.docilealligator.infinityforreddit.ChangeNSFWBlurEvent; -import ml.docilealligator.infinityforreddit.ChangeNSFWEvent; -import ml.docilealligator.infinityforreddit.ChangeSpoilerBlurEvent; -import ml.docilealligator.infinityforreddit.Infinity; -import ml.docilealligator.infinityforreddit.R; -import ml.docilealligator.infinityforreddit.SharedPreferencesUtils; - -import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY; -import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM; -import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO; -import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES; - -/** - * A simple {@link PreferenceFragmentCompat} subclass. - */ -public class MainPreferenceFragment extends PreferenceFragmentCompat { - - @Inject - SharedPreferences sharedPreferences; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.main_preferences, rootKey); - - Activity activity = getActivity(); - if(activity != null) { - ((Infinity) activity.getApplication()).getAppComponent().inject(this); - - SwitchPreference nsfwSwitch = findPreference(SharedPreferencesUtils.NSFW_KEY); - SwitchPreference blurNSFWSwitch = findPreference(SharedPreferencesUtils.BLUR_NSFW_KEY); - SwitchPreference blurSpoilerSwitch = findPreference(SharedPreferencesUtils.BLUR_SPOILER_KEY); - ListPreference themePreference = findPreference(SharedPreferencesUtils.THEME_KEY); - - if(nsfwSwitch != null) { - nsfwSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeNSFWEvent((Boolean) newValue)); - if(blurNSFWSwitch != null) { - blurNSFWSwitch.setVisible((Boolean) newValue); - } - return true; - }); - } - - if(blurNSFWSwitch != null) { - boolean nsfwEnabled = sharedPreferences.getBoolean(SharedPreferencesUtils.NSFW_KEY, false); - - if(nsfwEnabled) { - blurNSFWSwitch.setVisible(true); - } else { - blurNSFWSwitch.setVisible(false); - } - - blurNSFWSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeNSFWBlurEvent((Boolean) newValue)); - return true; - }); - } - - if(blurSpoilerSwitch != null) { - blurSpoilerSwitch.setOnPreferenceChangeListener((preference, newValue) -> { - EventBus.getDefault().post(new ChangeSpoilerBlurEvent((Boolean) newValue)); - return true; - }); - } - - boolean systemDefault = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q; - - if(themePreference != null) { - if(systemDefault) { - themePreference.setEntries(R.array.settings_theme_q); - } else { - themePreference.setEntries(R.array.settings_theme); - } - - themePreference.setOnPreferenceChangeListener((preference, newValue) -> { - int option = Integer.parseInt((String) newValue); - switch (option) { - case 0: - AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO); - break; - case 1: - AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES); - break; - case 2: - if(systemDefault) { - AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM); - } else { - AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY); - } - } - return true; - }); - } - } - } -} 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; - }); - } - } - } -} |