Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.innercirclesoftware.reddit.features.settings.preferences.user;
- import android.content.SharedPreferences;
- import android.support.annotation.NonNull;
- import com.f2prateek.rx.preferences2.RxSharedPreferences;
- import com.innercirclesoftware.reddit.injection.app.PerApp;
- import com.innercirclesoftware.reddit.shared.utils.PrefUtils;
- import javax.inject.Inject;
- import io.reactivex.Observable;
- import io.reactivex.schedulers.Schedulers;
- @PerApp
- public class PreferenceManagerImpl implements PreferenceManager {
- @NonNull private final SharedPreferences preferences;
- @NonNull private final RxSharedPreferences rxPreferences;
- //link list appearance
- private static final String KEY_LINK_LIST_APPEARANCE = "KEY_LINK_LIST_APPEARANCE";
- private static final int DEFAULT_VALUE_LINK_LIST_APPEARANCE = LinkAppearance.DEFAULT;
- //subreddit capitalisation
- private static final String KEY_SUBREDDIT_CAPITALISATION = "KEY_SUBREDDIT_CAPITALISATION";
- private static final int DEFAULT_VALUE_SUBREDDIT_CAPITALISATION = SubredditCapitalisation.DEFAULT;
- //immersive mode
- private static final String KEY_IMMERSIVE_MODE_ENABLED = "KEY_IMMERSIVE_MODE_ENABLED";
- private static final Boolean DEFAULT_VALUE_IMMERSIVE_MODE_ENABLED = Boolean.TRUE;
- //swap comment click actions
- private static final String KEY_SWAP_COMMENT_CLICK_ACTIONS_ENABLED = "KEY_SWAP_COMMENT_CLICK_ACTIONS_ENABLED";
- private static final Boolean DEFAULT_VALUE_SWAP_COMMENT_CLICK_ACTIONS_ENABLED = Boolean.FALSE;
- //show comments by default
- private static final String KEY_SHOW_COMMENTS_BY_DEFAULT = "KEY_SHOW_COMMENTS_BY_DEFAULT";
- private static final Boolean DEFAULT_VALUE_SHOW_COMMENTS_BY_DEFAULT = Boolean.FALSE;
- //hide root comment replies
- private static final String KEY_HIDE_ROOT_COMMENT_REPLIES = "KEY_HIDE_ROOT_COMMENT_REPLIES";
- private static final Boolean DEFAULT_VALUE_HIDE_ROOT_COMMENT_REPLIES = Boolean.FALSE;
- //colored comments
- private static final String KEY_COLORED_COMMENTS = "KEY_COLORED_COMMENTS";
- private static final Boolean DEFAULT_VALUE_COLORED_COMMENTS = Boolean.TRUE;
- //page margin
- private static final String KEY_PAGE_MARGIN = "KEY_PAGE_MARGIN";
- private static final int DEFAULT_PAGE_MARGIN = PageMargin.NORMAL;
- //ad block
- private static final String KEY_ENABLE_AD_BLOCK = "KEY_ENABLE_AD_BLOCK";
- private static final boolean DEFAULT_VALUE_ENABLE_AD_BLOCK = true;
- //open links in external browser
- private static final String KEY_OPEN_LINKS_IN_EXT_BROWSER = "KEY_OPEN_LINKS_IN_EXT_BROWSER";
- private static final boolean DEFAULT_VALUE_OPEN_LINKS_IN_EXT_BROWSER = false;
- //page scroll effect
- private static final String KEY_PAGE_SCROLL_EFFECT = "KEY_PAGE_SCROLL_EFFECT";
- @PageScrollEffect private static final int PAGE_SCROLL_EFFECT_DEFAULT_VALUE = ScrollEffect.DEFAULT;
- //web back button goes back in history
- private static final String KEY_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY = "KEY_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY";
- private static final Boolean DEFAULT_VALUE_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY = Boolean.FALSE;
- //web back button goes back to comments
- private static final String KEY_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS = "KEY_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS";
- private static final Boolean DEFAULT_VALUE_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS = Boolean.TRUE;
- //offline mode
- private static final String KEY_OFFLINE_MODE_ENABLED = "KEY_OFFLINE_MODE_ENABLED";
- private static final Boolean DEFAULT_VALUE_OFFLINE_MODE_ENABLED = false;
- @Inject
- PreferenceManagerImpl(@NonNull SharedPreferences preferences) {
- this.preferences = preferences;
- this.rxPreferences = RxSharedPreferences.create(this.preferences);
- }
- @Override
- public void setLinkListAppearance(@LinkListAppearance int newLinkListAppearance) {
- PrefUtils.setInt(preferences, KEY_LINK_LIST_APPEARANCE, newLinkListAppearance);
- }
- @Override
- public void setSubredditCapitalisation(@SubredditCapitalisationMethod int newSubredditCapitalisation) {
- PrefUtils.setInt(preferences, KEY_SUBREDDIT_CAPITALISATION, newSubredditCapitalisation);
- }
- @Override
- public void setImmersiveModeEnabled(boolean checked) {
- PrefUtils.setBoolean(preferences, KEY_IMMERSIVE_MODE_ENABLED, checked);
- }
- @Override
- public void setSwapCommentClickActionsEnabled(boolean checked) {
- PrefUtils.setBoolean(preferences, KEY_SWAP_COMMENT_CLICK_ACTIONS_ENABLED, checked);
- }
- @Override
- public void setShowCommentsByDefault(boolean checked) {
- PrefUtils.setBoolean(preferences, KEY_SHOW_COMMENTS_BY_DEFAULT, checked);
- }
- @Override
- public void setHideRootCommentReplies(boolean checked) {
- PrefUtils.setBoolean(preferences, KEY_HIDE_ROOT_COMMENT_REPLIES, checked);
- }
- @Override
- public void setColoredCommentsEnabled(boolean checked) {
- PrefUtils.setBoolean(preferences, KEY_COLORED_COMMENTS, checked);
- }
- @Override
- public void setPageMargin(@PageMarginPreference int pageMargin) {
- PrefUtils.setInt(preferences, KEY_PAGE_MARGIN, pageMargin);
- }
- @Override
- public void enableAdBlock(boolean enable) {
- PrefUtils.setBoolean(preferences, KEY_ENABLE_AD_BLOCK, enable);
- }
- @Override
- public void setOpenLinksInExternalBrowser(boolean openLinksInExtBrowser) {
- PrefUtils.setBoolean(preferences, KEY_OPEN_LINKS_IN_EXT_BROWSER, openLinksInExtBrowser);
- }
- @Override
- public void setPageScrollEffect(int effect) {
- PrefUtils.setInt(preferences, KEY_PAGE_SCROLL_EFFECT, effect);
- }
- @Override
- public void setWebBackButtonGoesBackInHistory(boolean checked) {
- PrefUtils.setBoolean(preferences, KEY_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY, checked);
- }
- @Override
- public void setWebBackButtonGoesBackToComments(boolean checked) {
- PrefUtils.setBoolean(preferences, KEY_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS, checked);
- }
- @Override
- public void setOfflineModeEnabled(boolean enabled) {
- PrefUtils.setBoolean(preferences, KEY_OFFLINE_MODE_ENABLED, enabled);
- }
- @Override
- public Observable<Integer> linkListAppearance() {
- return rxPreferences.getInteger(KEY_LINK_LIST_APPEARANCE, DEFAULT_VALUE_LINK_LIST_APPEARANCE).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Integer> subredditCapitalisation() {
- return rxPreferences.getInteger(KEY_SUBREDDIT_CAPITALISATION, DEFAULT_VALUE_SUBREDDIT_CAPITALISATION).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Boolean> immersiveMode() {
- return rxPreferences.getBoolean(KEY_IMMERSIVE_MODE_ENABLED, DEFAULT_VALUE_IMMERSIVE_MODE_ENABLED).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Boolean> swapCommentClickActions() {
- return rxPreferences.getBoolean(KEY_SWAP_COMMENT_CLICK_ACTIONS_ENABLED, DEFAULT_VALUE_SWAP_COMMENT_CLICK_ACTIONS_ENABLED).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Boolean> showCommentsByDefault() {
- return rxPreferences.getBoolean(KEY_SHOW_COMMENTS_BY_DEFAULT, DEFAULT_VALUE_SHOW_COMMENTS_BY_DEFAULT).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Boolean> hideRootCommentReplies() {
- return rxPreferences.getBoolean(KEY_HIDE_ROOT_COMMENT_REPLIES, DEFAULT_VALUE_HIDE_ROOT_COMMENT_REPLIES).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Boolean> coloredCommentsEnabled() {
- return rxPreferences.getBoolean(KEY_COLORED_COMMENTS, DEFAULT_VALUE_COLORED_COMMENTS).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Integer> pageMargin() {
- return rxPreferences.getInteger(KEY_PAGE_MARGIN, DEFAULT_PAGE_MARGIN).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Boolean> enableAdBlock() {
- return rxPreferences.getBoolean(KEY_ENABLE_AD_BLOCK, DEFAULT_VALUE_ENABLE_AD_BLOCK).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Boolean> openLinksInExternalBrowser() {
- return rxPreferences.getBoolean(KEY_OPEN_LINKS_IN_EXT_BROWSER, DEFAULT_VALUE_OPEN_LINKS_IN_EXT_BROWSER).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Integer> pageScrollEffect() {
- return rxPreferences.getInteger(KEY_PAGE_SCROLL_EFFECT, PAGE_SCROLL_EFFECT_DEFAULT_VALUE).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Boolean> webBackButtonGoesBackInHistory() {
- return rxPreferences.getBoolean(KEY_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY, DEFAULT_VALUE_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Boolean> webBackButtonGoesBackToComments() {
- return rxPreferences.getBoolean(KEY_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS, DEFAULT_VALUE_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS).asObservable().subscribeOn(Schedulers.io());
- }
- @Override
- public Observable<Boolean> offlineMode() {
- return rxPreferences.getBoolean(KEY_OFFLINE_MODE_ENABLED, DEFAULT_VALUE_OFFLINE_MODE_ENABLED).asObservable().subscribeOn(Schedulers.io());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement