package zenproject.meditation.android.preferences; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Color; import zenproject.meditation.android.ContextRetriever; import zenproject.meditation.android.sketch.painting.ink.BrushColor; public class BrushOptionsPreferences { private static final float DARKENING_FACTOR = 1.4f; private static final String PREF_NAME = "BrushPreferences"; private static final String PREF_BRUSH_COLOR = PREF_NAME + "Color"; private static final String PREF_BRUSH_SIZE = PREF_NAME + "Size"; private static final int DEFAULT_PERCENTAGE = 20; private static final int LEAF_COLOR = Color.rgb(59, 158, 58); private final SharedPreferences sharedPreferences; public static BrushOptionsPreferences newInstance() { return new BrushOptionsPreferences(ContextRetriever.INSTANCE.getApplicationContext().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE)); } protected BrushOptionsPreferences(SharedPreferences sharedPreferences) { this.sharedPreferences = sharedPreferences; } public void applyBrushSizePercentage(int percentage) { sharedPreferences.edit().putInt(PREF_BRUSH_SIZE, percentage).apply(); } public int getBrushSizePercentage() { return sharedPreferences.getInt(PREF_BRUSH_SIZE, DEFAULT_PERCENTAGE); } public void applyBrushColor(BrushColor color) { sharedPreferences.edit().putInt(PREF_BRUSH_COLOR, color.toAndroidColor()).apply(); } public BrushColor getBrushColor() { int defaultColor = BrushColor.DARK.toAndroidColor(); int color = sharedPreferences.getInt(PREF_BRUSH_COLOR, defaultColor); return BrushColor.from(color); } public int getBranchColor() { int color = getBrushColor().toAndroidColor(); return Color.rgb((int) (Color.red(color) / DARKENING_FACTOR), (int) (Color.green(color) / DARKENING_FACTOR), (int) (Color.blue(color) / DARKENING_FACTOR)); } public int getLeafColor() { return LEAF_COLOR; } }