1 package com.folioreader;
3 import android.os.Parcel;
4 import android.os.Parcelable;
6 import org.json.JSONObject;
9 * Created by mahavir on 4/12/16.
11 public class Config implements Parcelable {
12 public static final String INTENT_CONFIG = "config";
13 public static final String CONFIG_FONT = "font";
14 public static final String CONFIG_FONT_SIZE = "font_size";
15 public static final String CONFIG_MARGIN_SIZE = "margin_size";
16 public static final String CONFIG_INTERLINE_SIZE = "interline_size";
17 public static final String CONFIG_IS_NIGHTMODE = "is_night_mode";
18 public static final String CONFIG_THEMECOLOR = "theme_color";
19 public static final String CONFIG_ICON_COLOR = "icon_color";
20 public static final String CONFIG_TOOLBAR_COLOR = "toolbar_color";
21 public static final String CONFIG_IS_TTS = "is_tts";
22 public static final String INTENT_PORT = "port";
25 private int marginSize;
26 private int interlineSize;
27 private boolean nightMode;
28 private int themeColor;
29 private int iconColor;
30 private int toolbarColor;
31 private boolean showTts;
33 // public Config(int font, int fontSize, boolean nightMode, int themeColor, int iconColor, int toolbarColor, boolean showTts) {
35 // this.fontSize = fontSize;
36 // this.nightMode = nightMode;
37 // this.themeColor = themeColor;
38 // this.iconColor = iconColor;
39 // this.toolbarColor = toolbarColor;
40 // this.showTts = showTts;
43 private Config(ConfigBuilder configBuilder) {
44 font = configBuilder.mFont;
45 fontSize = configBuilder.mFontSize;
46 marginSize = configBuilder.mMarginSize;
47 interlineSize = configBuilder.mInterlineSize;
48 nightMode = configBuilder.mNightMode;
49 themeColor = configBuilder.mThemeColor;
50 iconColor = configBuilder.iconColor;
51 toolbarColor = configBuilder.toolbarColor;
52 showTts = configBuilder.mShowTts;
55 public Config(JSONObject jsonObject) {
56 font = jsonObject.optInt(CONFIG_FONT);
57 fontSize = jsonObject.optInt(CONFIG_FONT_SIZE);
58 marginSize = jsonObject.optInt(CONFIG_MARGIN_SIZE);
59 interlineSize = jsonObject.optInt(CONFIG_INTERLINE_SIZE);
60 nightMode = jsonObject.optBoolean(CONFIG_IS_NIGHTMODE);
61 themeColor = jsonObject.optInt(CONFIG_THEMECOLOR);
62 iconColor = jsonObject.optInt(CONFIG_ICON_COLOR);
63 toolbarColor = jsonObject.optInt(CONFIG_TOOLBAR_COLOR);
64 showTts = jsonObject.optBoolean(CONFIG_IS_TTS);
73 themeColor = R.color.app_green;
77 private Config(Parcel in) {
82 public int getFont() {
86 public void setFont(int font) {
90 public int getFontSize() {
94 public void setFontSize(int fontSize) {
95 this.fontSize = fontSize;
98 public int getMarginSize() {
102 public void setMarginSize(int marginSize) {
103 this.marginSize = marginSize;
106 public int getInterlineSize() {
107 return interlineSize;
110 public void setInterlineSize(int interlineSize) {
111 this.interlineSize = interlineSize;
114 public boolean isNightMode() {
118 public void setNightMode(boolean nightMode) {
119 this.nightMode = nightMode;
123 public int getThemeColor() {
127 public void setThemeColor(int themeColor) {
128 this.themeColor = themeColor;
131 public boolean isShowTts() {
135 public void setShowTts(boolean showTts) {
136 this.showTts = showTts;
139 public int getIconColor() {
143 public int getToolbarColor() {
149 public boolean equals(Object o) {
153 if (!(o instanceof Config)) {
157 Config config = (Config) o;
159 return font == config.font && fontSize == config.fontSize && marginSize == config.marginSize && interlineSize == config.interlineSize && nightMode == config.nightMode &&
160 toolbarColor == config.toolbarColor && iconColor == config.iconColor;
164 public int hashCode() {
166 result = 31 * result + fontSize;
167 result = 31 * result + marginSize;
168 result = 31 * result + interlineSize;
169 result = 31 * result + (nightMode ? 1 : 0);
174 public String toString() {
177 + ", fontSize=" + fontSize
178 + ", marginSize=" + marginSize
179 + ", interlineSize=" + interlineSize
180 + ", nightMode=" + nightMode
185 public int describeContents() {
190 public void writeToParcel(Parcel dest, int flags) {
192 dest.writeInt(fontSize);
193 dest.writeInt(marginSize);
194 dest.writeInt(interlineSize);
195 dest.writeInt(nightMode ? 1 : 0);
196 dest.writeInt(themeColor);
197 dest.writeInt(showTts ? 1 : 0);
198 dest.writeInt(toolbarColor);
199 dest.writeInt(iconColor);
202 private void readFromParcel(Parcel in) {
204 fontSize = in.readInt();
205 marginSize = in.readInt();
206 interlineSize = in.readInt();
207 nightMode = in.readInt() == 1;
208 themeColor = in.readInt();
209 showTts = in.readInt() == 1;
210 toolbarColor = in.readInt();
211 iconColor = in.readInt();
214 public static final Creator<Config> CREATOR = new Creator<Config>() {
216 public Config createFromParcel(Parcel in) {
217 return new Config(in);
221 public Config[] newArray(int size) {
222 return new Config[size];
226 public static class ConfigBuilder {
227 private int mFont = 3;
228 private int mFontSize = 2;
229 private int mMarginSize = 1;
230 private int mInterlineSize = 1;
231 private boolean mNightMode = false;
232 private int mThemeColor = R.color.settings_icons;
233 private boolean mShowTts = true;
234 private int iconColor = R.color.toolbar_icons;
235 private int toolbarColor = R.color.toolbar_background;
237 public ConfigBuilder font(int font) {
242 public ConfigBuilder fontSize(int fontSize) {
243 mFontSize = fontSize;
247 public ConfigBuilder marginSize(int marginSize) {
248 mMarginSize = marginSize;
252 public ConfigBuilder interlineSize(int interlineSize) {
253 mInterlineSize = interlineSize;
257 public ConfigBuilder nightmode(boolean nightMode) {
258 mNightMode = nightMode;
262 public ConfigBuilder themeColor(int themeColor) {
263 mThemeColor = themeColor;
267 public ConfigBuilder setShowTts(boolean showTts) {
273 public Config build() {
274 return new Config(this);