Skip to content

Commit ab04d05

Browse files
committed
Allow user to switch b/w default & custom lato font
1 parent f0965a9 commit ab04d05

6 files changed

Lines changed: 54 additions & 14 deletions

File tree

app/src/main/kotlin/com/njlabs/showjava/MainApplication.kt

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,13 @@ class MainApplication : MultiDexApplication() {
7272
AppCompatDelegate.MODE_NIGHT_NO
7373
)
7474

75+
if (preferences.customFont) {
76+
initCustomFont()
77+
}
78+
7579
Ads(this).init()
7680
Fabric.with(this, Crashlytics())
7781

78-
ViewPump.init(
79-
ViewPump.builder()
80-
.addInterceptor(
81-
CalligraphyInterceptor(
82-
CalligraphyConfig.Builder()
83-
.setDefaultFontPath("fonts/lato-light.ttf")
84-
.setFontAttrId(R.attr.fontPath)
85-
.build()
86-
)
87-
)
88-
.build()
89-
)
90-
9182
if (BuildConfig.DEBUG) {
9283
Timber.plant(Timber.DebugTree())
9384
} else {
@@ -128,4 +119,21 @@ class MainApplication : MultiDexApplication() {
128119
super.onTerminate()
129120
disposables.clear()
130121
}
122+
123+
companion object {
124+
fun initCustomFont() {
125+
ViewPump.init(
126+
ViewPump.builder()
127+
.addInterceptor(
128+
CalligraphyInterceptor(
129+
CalligraphyConfig.Builder()
130+
.setDefaultFontPath("fonts/lato-light.ttf")
131+
.setFontAttrId(R.attr.fontPath)
132+
.build()
133+
)
134+
)
135+
.build()
136+
)
137+
}
138+
}
131139
}

app/src/main/kotlin/com/njlabs/showjava/activities/settings/SettingsActivity.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,12 @@ import androidx.appcompat.app.AlertDialog
2929
import androidx.appcompat.app.AppCompatDelegate
3030
import androidx.preference.Preference
3131
import androidx.preference.PreferenceFragmentCompat
32+
import com.njlabs.showjava.MainApplication
3233
import com.njlabs.showjava.R
3334
import com.njlabs.showjava.activities.BaseActivity
3435
import com.njlabs.showjava.utils.Ads
3536
import com.njlabs.showjava.utils.UserPreferences
37+
import io.github.inflationx.viewpump.ViewPump
3638
import io.reactivex.android.schedulers.AndroidSchedulers
3739
import io.reactivex.disposables.Disposable
3840
import io.reactivex.schedulers.Schedulers
@@ -99,6 +101,21 @@ class SettingsActivity : BaseActivity() {
99101
true
100102
}
101103

104+
findPreference("customFont").setOnPreferenceChangeListener { _, newValue ->
105+
if (newValue as Boolean) {
106+
MainApplication.initCustomFont()
107+
} else {
108+
ViewPump.init(ViewPump.builder().build())
109+
}
110+
Toast.makeText(context, R.string.themeChangeCloseInfo, Toast.LENGTH_SHORT).show()
111+
112+
activity.let {
113+
it.startActivity(Intent(it, SettingsActivity::class.java))
114+
it.finish()
115+
}
116+
true
117+
}
118+
102119
findPreference("darkMode").setOnPreferenceChangeListener { _, newValue ->
103120
AppCompatDelegate.setDefaultNightMode(
104121
if (newValue as Boolean)

app/src/main/kotlin/com/njlabs/showjava/utils/UserPreferences.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class UserPreferences(private val prefs: SharedPreferences) {
3232

3333
interface DEFAULTS {
3434
companion object {
35+
const val CUSTOM_FONT = true
3536
const val DARK_MODE = false
3637
const val SHOW_MEMORY_USAGE = true
3738
const val SHOW_SYSTEM_APPS = false
@@ -45,6 +46,9 @@ class UserPreferences(private val prefs: SharedPreferences) {
4546
val ignoreLibraries: Boolean
4647
get() = prefs.getBoolean("ignoreLibraries", DEFAULTS.IGNORE_LIBRARIES)
4748

49+
val customFont: Boolean
50+
get() = prefs.getBoolean("customFont", DEFAULTS.CUSTOM_FONT)
51+
4852
val darkMode: Boolean
4953
get() = prefs.getBoolean("darkMode", DEFAULTS.DARK_MODE)
5054

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,4 +161,7 @@
161161
<string name="adPreferences">Ads Preferences</string>
162162
<string name="adPreferencesSummary">Change your personalization preferences for Ads</string>
163163
<string name="initializing">Initializing</string>
164+
<string name="useCustomFont">Use custom font</string>
165+
<string name="useCustomFontSummary">Choose between lato or system default font</string>
166+
<string name="userInterface">User interface</string>
164167
</resources>

app/src/main/res/values/styles.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
2525
<item name="colorAccent">@color/colorAccent</item>
2626
<item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
27+
<item name="android:fontFamily">sans-serif-light</item>
2728
</style>
2829

2930
<style name="AppTheme.NoActionBar">

app/src/main/res/xml/preferences.xml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,14 @@
3535

3636
<PreferenceCategory
3737
app:iconSpaceReserved="false"
38-
android:title="@string/easeOfUse">
38+
android:title="@string/userInterface">
39+
40+
<SwitchPreference
41+
app:iconSpaceReserved="false"
42+
android:key="customFont"
43+
android:defaultValue="true"
44+
android:summary="@string/useCustomFontSummary"
45+
android:title="@string/useCustomFont" />
3946

4047
<SwitchPreference
4148
app:iconSpaceReserved="false"

0 commit comments

Comments
 (0)