1 /* 2 * PanmirrorUIPrefs.java 3 * 4 * Copyright (C) 2021 by RStudio, PBC 5 * 6 * Unless you have received this program directly from RStudio pursuant 7 * to the terms of a commercial license agreement with RStudio, then 8 * this program is licensed to you under the terms of version 3 of the 9 * GNU Affero General Public License. This program is distributed WITHOUT 10 * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, 11 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the 12 * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. 13 * 14 */ 15 16 17 18 package org.rstudio.studio.client.panmirror.ui; 19 20 import org.rstudio.studio.client.RStudioGinjector; 21 import org.rstudio.studio.client.workbench.prefs.model.UserPrefs; 22 import org.rstudio.studio.client.workbench.prefs.model.UserPrefsAccessor; 23 import org.rstudio.studio.client.workbench.prefs.model.UserState; 24 25 import com.google.inject.Inject; 26 import com.google.inject.Provider; 27 28 import jsinterop.annotations.JsType; 29 30 @JsType 31 public class PanmirrorUIPrefs { 32 PanmirrorUIPrefs()33 public PanmirrorUIPrefs() 34 { 35 RStudioGinjector.INSTANCE.injectMembers(this); 36 } 37 38 @Inject initialize(Provider<UserPrefs> pUIPrefs, Provider<UserState> pUserState)39 void initialize(Provider<UserPrefs> pUIPrefs, Provider<UserState> pUserState) 40 { 41 pUIPrefs_ = pUIPrefs; 42 pUserState_ = pUserState; 43 } 44 45 darkMode()46 public Boolean darkMode() 47 { 48 return pUserState_.get().theme().getGlobalValue().getIsDark(); 49 } 50 listSpacing()51 public String listSpacing() 52 { 53 return pUIPrefs_.get().visualMarkdownEditingListSpacing().getValue(); 54 } 55 equationPreview()56 public Boolean equationPreview() 57 { 58 return !pUIPrefs_.get().latexPreviewOnCursorIdle().getValue() 59 .equals(UserPrefsAccessor.LATEX_PREVIEW_ON_CURSOR_IDLE_NEVER); 60 } 61 tabKeyMoveFocus()62 public Boolean tabKeyMoveFocus() 63 { 64 return pUIPrefs_.get().tabKeyMoveFocus().getValue(); 65 } 66 zoteroUseBetterBibtex()67 public Boolean zoteroUseBetterBibtex() 68 { 69 return pUserState_.get().zoteroUseBetterBibtex().getValue(); 70 } 71 bibliographyDefaultType()72 public String bibliographyDefaultType() 73 { 74 return pUserState_.get().bibliographyDefaultType().getValue(); 75 } 76 setBibliographyDefaultType(String value)77 public void setBibliographyDefaultType(String value) 78 { 79 pUserState_.get().bibliographyDefaultType().setGlobalValue(value); 80 pUserState_.get().writeState(); 81 } 82 citationDefaultInText()83 public boolean citationDefaultInText() 84 { 85 return pUserState_.get().citationDefaultInText().getValue(); 86 } 87 setCitationDefaultInText(boolean value)88 public void setCitationDefaultInText(boolean value) 89 { 90 pUserState_.get().citationDefaultInText().setGlobalValue(value); 91 pUserState_.get().writeState(); 92 } 93 emojiSkinTone()94 public double emojiSkinTone() 95 { 96 String emojiSkinTone = pUIPrefs_.get().emojiSkintone().getValue(); 97 if (emojiSkinTone.equals(UserPrefsAccessor.EMOJI_SKINTONE_DARK)) { 98 return 0x1F3FF; 99 } else if (emojiSkinTone.equals(UserPrefsAccessor.EMOJI_SKINTONE_MEDIUM_DARK)) { 100 return 0x1F3FE; 101 } else if (emojiSkinTone.equals(UserPrefsAccessor.EMOJI_SKINTONE_MEDIUM)) { 102 return 0x1F3FD; 103 } else if (emojiSkinTone.equals(UserPrefsAccessor.EMOJI_SKINTONE_MEDIUM_LIGHT)) { 104 return 0x1F3FC; 105 } else if (emojiSkinTone.equals(UserPrefsAccessor.EMOJI_SKINTONE_LIGHT)) { 106 return 0x1F3FB; 107 } else if (emojiSkinTone.equals(UserPrefsAccessor.EMOJI_SKINTONE__DEFAULT_)) { 108 return 0; 109 } else if (emojiSkinTone.equals(UserPrefsAccessor.EMOJI_SKINTONE__NONE_)) { 110 return -1; 111 } else { 112 return -1; 113 } 114 } 115 setEmojiSkinTone(double skinTone)116 public void setEmojiSkinTone(double skinTone) 117 { 118 String skinToneStr = UserPrefsAccessor.EMOJI_SKINTONE__NONE_; 119 if (skinTone == 0x1F3FF) { 120 skinToneStr = UserPrefsAccessor.EMOJI_SKINTONE_DARK; 121 } else if (skinTone == 0x1F3FE) { 122 skinToneStr = UserPrefsAccessor.EMOJI_SKINTONE_MEDIUM_DARK; 123 } else if (skinTone == 0x1F3FD) { 124 skinToneStr = UserPrefsAccessor.EMOJI_SKINTONE_MEDIUM; 125 } else if (skinTone == 0x1F3FC) { 126 skinToneStr = UserPrefsAccessor.EMOJI_SKINTONE_MEDIUM_LIGHT; 127 } else if (skinTone == 0x1F3FB) { 128 skinToneStr = UserPrefsAccessor.EMOJI_SKINTONE_LIGHT; 129 } else if (skinTone == 0) { 130 skinToneStr = UserPrefsAccessor.EMOJI_SKINTONE__DEFAULT_; 131 } else if (skinTone == -1) { 132 skinToneStr = UserPrefsAccessor.EMOJI_SKINTONE__NONE_; 133 } 134 135 pUIPrefs_.get().emojiSkintone().setGlobalValue(skinToneStr); 136 pUIPrefs_.get().writeUserPrefs(); 137 } 138 139 140 Provider<UserPrefs> pUIPrefs_; 141 Provider<UserState> pUserState_; 142 } 143