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