package cl.monsoon.s1next.data.pref; import com.google.common.base.Supplier; import com.google.common.base.Suppliers; public final class GeneralPreferencesManager { private final GeneralPreferencesRepository mGeneralPreferencesProvider; private final Supplier<Float> mFontScaleSupplier = new Supplier<Float>() { @Override public Float get() { return Float.parseFloat(mGeneralPreferencesProvider.getFontSizeString()); } }; private final Supplier<Boolean> mSignatureEnabledSupplier = new Supplier<Boolean>() { @Override public Boolean get() { return mGeneralPreferencesProvider.isSignatureEnabled(); } }; private volatile Supplier<Float> mFontScaleMemorized = Suppliers.memoize(mFontScaleSupplier); private volatile Supplier<Boolean> mSignatureEnabledMemorized = Suppliers.memoize(mSignatureEnabledSupplier); public GeneralPreferencesManager(GeneralPreferencesRepository generalPreferencesProvider) { this.mGeneralPreferencesProvider = generalPreferencesProvider; } /** * Used for invalidating the font scale preference if settings change. */ public void invalidateFontScale() { mFontScaleMemorized = Suppliers.memoize(mFontScaleSupplier); } public float getFontScale() { return mFontScaleMemorized.get(); } /** * Used for invalidating the signature preference if settings change. */ public void invalidateSignatureEnabled() { mSignatureEnabledMemorized = Suppliers.memoize(mSignatureEnabledSupplier); } public boolean isSignatureEnabled() { return mSignatureEnabledMemorized.get(); } }