Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.45 KB | None | 0 0
  1. package com.innercirclesoftware.reddit.features.settings.preferences.user;
  2.  
  3. import android.content.SharedPreferences;
  4. import android.support.annotation.NonNull;
  5.  
  6. import com.f2prateek.rx.preferences2.RxSharedPreferences;
  7. import com.innercirclesoftware.reddit.injection.app.PerApp;
  8. import com.innercirclesoftware.reddit.shared.utils.PrefUtils;
  9.  
  10. import javax.inject.Inject;
  11.  
  12. import io.reactivex.Observable;
  13. import io.reactivex.schedulers.Schedulers;
  14.  
  15. @PerApp
  16. public class PreferenceManagerImpl implements PreferenceManager {
  17.  
  18.     @NonNull private final SharedPreferences preferences;
  19.     @NonNull private final RxSharedPreferences rxPreferences;
  20.  
  21.     //link list appearance
  22.     private static final String KEY_LINK_LIST_APPEARANCE = "KEY_LINK_LIST_APPEARANCE";
  23.     private static final int DEFAULT_VALUE_LINK_LIST_APPEARANCE = LinkAppearance.DEFAULT;
  24.  
  25.     //subreddit capitalisation
  26.     private static final String KEY_SUBREDDIT_CAPITALISATION = "KEY_SUBREDDIT_CAPITALISATION";
  27.     private static final int DEFAULT_VALUE_SUBREDDIT_CAPITALISATION = SubredditCapitalisation.DEFAULT;
  28.  
  29.     //immersive mode
  30.     private static final String KEY_IMMERSIVE_MODE_ENABLED = "KEY_IMMERSIVE_MODE_ENABLED";
  31.     private static final Boolean DEFAULT_VALUE_IMMERSIVE_MODE_ENABLED = Boolean.TRUE;
  32.  
  33.     //swap comment click actions
  34.     private static final String KEY_SWAP_COMMENT_CLICK_ACTIONS_ENABLED = "KEY_SWAP_COMMENT_CLICK_ACTIONS_ENABLED";
  35.     private static final Boolean DEFAULT_VALUE_SWAP_COMMENT_CLICK_ACTIONS_ENABLED = Boolean.FALSE;
  36.  
  37.     //show comments by default
  38.     private static final String KEY_SHOW_COMMENTS_BY_DEFAULT = "KEY_SHOW_COMMENTS_BY_DEFAULT";
  39.     private static final Boolean DEFAULT_VALUE_SHOW_COMMENTS_BY_DEFAULT = Boolean.FALSE;
  40.  
  41.     //hide root comment replies
  42.     private static final String KEY_HIDE_ROOT_COMMENT_REPLIES = "KEY_HIDE_ROOT_COMMENT_REPLIES";
  43.     private static final Boolean DEFAULT_VALUE_HIDE_ROOT_COMMENT_REPLIES = Boolean.FALSE;
  44.  
  45.     //colored comments
  46.     private static final String KEY_COLORED_COMMENTS = "KEY_COLORED_COMMENTS";
  47.     private static final Boolean DEFAULT_VALUE_COLORED_COMMENTS = Boolean.TRUE;
  48.  
  49.     //page margin
  50.     private static final String KEY_PAGE_MARGIN = "KEY_PAGE_MARGIN";
  51.     private static final int DEFAULT_PAGE_MARGIN = PageMargin.NORMAL;
  52.  
  53.     //ad block
  54.     private static final String KEY_ENABLE_AD_BLOCK = "KEY_ENABLE_AD_BLOCK";
  55.     private static final boolean DEFAULT_VALUE_ENABLE_AD_BLOCK = true;
  56.  
  57.     //open links in external browser
  58.     private static final String KEY_OPEN_LINKS_IN_EXT_BROWSER = "KEY_OPEN_LINKS_IN_EXT_BROWSER";
  59.     private static final boolean DEFAULT_VALUE_OPEN_LINKS_IN_EXT_BROWSER = false;
  60.  
  61.     //page scroll effect
  62.     private static final String KEY_PAGE_SCROLL_EFFECT = "KEY_PAGE_SCROLL_EFFECT";
  63.     @PageScrollEffect private static final int PAGE_SCROLL_EFFECT_DEFAULT_VALUE = ScrollEffect.DEFAULT;
  64.  
  65.     //web back button goes back in history
  66.     private static final String KEY_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY = "KEY_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY";
  67.     private static final Boolean DEFAULT_VALUE_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY = Boolean.FALSE;
  68.  
  69.     //web back button goes back to comments
  70.     private static final String KEY_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS = "KEY_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS";
  71.     private static final Boolean DEFAULT_VALUE_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS = Boolean.TRUE;
  72.  
  73.     //offline mode
  74.     private static final String KEY_OFFLINE_MODE_ENABLED = "KEY_OFFLINE_MODE_ENABLED";
  75.     private static final Boolean DEFAULT_VALUE_OFFLINE_MODE_ENABLED = false;
  76.  
  77.     @Inject
  78.     PreferenceManagerImpl(@NonNull SharedPreferences preferences) {
  79.         this.preferences = preferences;
  80.         this.rxPreferences = RxSharedPreferences.create(this.preferences);
  81.     }
  82.  
  83.     @Override
  84.     public void setLinkListAppearance(@LinkListAppearance int newLinkListAppearance) {
  85.         PrefUtils.setInt(preferences, KEY_LINK_LIST_APPEARANCE, newLinkListAppearance);
  86.     }
  87.  
  88.     @Override
  89.     public void setSubredditCapitalisation(@SubredditCapitalisationMethod int newSubredditCapitalisation) {
  90.         PrefUtils.setInt(preferences, KEY_SUBREDDIT_CAPITALISATION, newSubredditCapitalisation);
  91.     }
  92.  
  93.     @Override
  94.     public void setImmersiveModeEnabled(boolean checked) {
  95.         PrefUtils.setBoolean(preferences, KEY_IMMERSIVE_MODE_ENABLED, checked);
  96.     }
  97.  
  98.     @Override
  99.     public void setSwapCommentClickActionsEnabled(boolean checked) {
  100.         PrefUtils.setBoolean(preferences, KEY_SWAP_COMMENT_CLICK_ACTIONS_ENABLED, checked);
  101.     }
  102.  
  103.     @Override
  104.     public void setShowCommentsByDefault(boolean checked) {
  105.         PrefUtils.setBoolean(preferences, KEY_SHOW_COMMENTS_BY_DEFAULT, checked);
  106.     }
  107.  
  108.     @Override
  109.     public void setHideRootCommentReplies(boolean checked) {
  110.         PrefUtils.setBoolean(preferences, KEY_HIDE_ROOT_COMMENT_REPLIES, checked);
  111.     }
  112.  
  113.     @Override
  114.     public void setColoredCommentsEnabled(boolean checked) {
  115.         PrefUtils.setBoolean(preferences, KEY_COLORED_COMMENTS, checked);
  116.     }
  117.  
  118.     @Override
  119.     public void setPageMargin(@PageMarginPreference int pageMargin) {
  120.         PrefUtils.setInt(preferences, KEY_PAGE_MARGIN, pageMargin);
  121.     }
  122.  
  123.     @Override
  124.     public void enableAdBlock(boolean enable) {
  125.         PrefUtils.setBoolean(preferences, KEY_ENABLE_AD_BLOCK, enable);
  126.     }
  127.  
  128.     @Override
  129.     public void setOpenLinksInExternalBrowser(boolean openLinksInExtBrowser) {
  130.         PrefUtils.setBoolean(preferences, KEY_OPEN_LINKS_IN_EXT_BROWSER, openLinksInExtBrowser);
  131.     }
  132.  
  133.     @Override
  134.     public void setPageScrollEffect(int effect) {
  135.         PrefUtils.setInt(preferences, KEY_PAGE_SCROLL_EFFECT, effect);
  136.     }
  137.  
  138.     @Override
  139.     public void setWebBackButtonGoesBackInHistory(boolean checked) {
  140.         PrefUtils.setBoolean(preferences, KEY_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY, checked);
  141.     }
  142.  
  143.     @Override
  144.     public void setWebBackButtonGoesBackToComments(boolean checked) {
  145.         PrefUtils.setBoolean(preferences, KEY_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS, checked);
  146.     }
  147.  
  148.     @Override
  149.     public void setOfflineModeEnabled(boolean enabled) {
  150.         PrefUtils.setBoolean(preferences, KEY_OFFLINE_MODE_ENABLED, enabled);
  151.     }
  152.  
  153.     @Override
  154.     public Observable<Integer> linkListAppearance() {
  155.         return rxPreferences.getInteger(KEY_LINK_LIST_APPEARANCE, DEFAULT_VALUE_LINK_LIST_APPEARANCE).asObservable().subscribeOn(Schedulers.io());
  156.     }
  157.  
  158.     @Override
  159.     public Observable<Integer> subredditCapitalisation() {
  160.         return rxPreferences.getInteger(KEY_SUBREDDIT_CAPITALISATION, DEFAULT_VALUE_SUBREDDIT_CAPITALISATION).asObservable().subscribeOn(Schedulers.io());
  161.     }
  162.  
  163.     @Override
  164.     public Observable<Boolean> immersiveMode() {
  165.         return rxPreferences.getBoolean(KEY_IMMERSIVE_MODE_ENABLED, DEFAULT_VALUE_IMMERSIVE_MODE_ENABLED).asObservable().subscribeOn(Schedulers.io());
  166.     }
  167.  
  168.     @Override
  169.     public Observable<Boolean> swapCommentClickActions() {
  170.         return rxPreferences.getBoolean(KEY_SWAP_COMMENT_CLICK_ACTIONS_ENABLED, DEFAULT_VALUE_SWAP_COMMENT_CLICK_ACTIONS_ENABLED).asObservable().subscribeOn(Schedulers.io());
  171.     }
  172.  
  173.     @Override
  174.     public Observable<Boolean> showCommentsByDefault() {
  175.         return rxPreferences.getBoolean(KEY_SHOW_COMMENTS_BY_DEFAULT, DEFAULT_VALUE_SHOW_COMMENTS_BY_DEFAULT).asObservable().subscribeOn(Schedulers.io());
  176.     }
  177.  
  178.     @Override
  179.     public Observable<Boolean> hideRootCommentReplies() {
  180.         return rxPreferences.getBoolean(KEY_HIDE_ROOT_COMMENT_REPLIES, DEFAULT_VALUE_HIDE_ROOT_COMMENT_REPLIES).asObservable().subscribeOn(Schedulers.io());
  181.     }
  182.  
  183.     @Override
  184.     public Observable<Boolean> coloredCommentsEnabled() {
  185.         return rxPreferences.getBoolean(KEY_COLORED_COMMENTS, DEFAULT_VALUE_COLORED_COMMENTS).asObservable().subscribeOn(Schedulers.io());
  186.     }
  187.  
  188.     @Override
  189.     public Observable<Integer> pageMargin() {
  190.         return rxPreferences.getInteger(KEY_PAGE_MARGIN, DEFAULT_PAGE_MARGIN).asObservable().subscribeOn(Schedulers.io());
  191.     }
  192.  
  193.     @Override
  194.     public Observable<Boolean> enableAdBlock() {
  195.         return rxPreferences.getBoolean(KEY_ENABLE_AD_BLOCK, DEFAULT_VALUE_ENABLE_AD_BLOCK).asObservable().subscribeOn(Schedulers.io());
  196.     }
  197.  
  198.     @Override
  199.     public Observable<Boolean> openLinksInExternalBrowser() {
  200.         return rxPreferences.getBoolean(KEY_OPEN_LINKS_IN_EXT_BROWSER, DEFAULT_VALUE_OPEN_LINKS_IN_EXT_BROWSER).asObservable().subscribeOn(Schedulers.io());
  201.     }
  202.  
  203.     @Override
  204.     public Observable<Integer> pageScrollEffect() {
  205.         return rxPreferences.getInteger(KEY_PAGE_SCROLL_EFFECT, PAGE_SCROLL_EFFECT_DEFAULT_VALUE).asObservable().subscribeOn(Schedulers.io());
  206.     }
  207.  
  208.     @Override
  209.     public Observable<Boolean> webBackButtonGoesBackInHistory() {
  210.         return rxPreferences.getBoolean(KEY_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY, DEFAULT_VALUE_WEB_BACK_BUTTON_GOES_BACK_IN_HISTORY).asObservable().subscribeOn(Schedulers.io());
  211.     }
  212.  
  213.     @Override
  214.     public Observable<Boolean> webBackButtonGoesBackToComments() {
  215.         return rxPreferences.getBoolean(KEY_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS, DEFAULT_VALUE_WEB_BACK_BUTTON_GOES_BACK_TO_COMMENTS).asObservable().subscribeOn(Schedulers.io());
  216.     }
  217.  
  218.     @Override
  219.     public Observable<Boolean> offlineMode() {
  220.         return rxPreferences.getBoolean(KEY_OFFLINE_MODE_ENABLED, DEFAULT_VALUE_OFFLINE_MODE_ENABLED).asObservable().subscribeOn(Schedulers.io());
  221.     }
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement