From 45eb38769010ae2e9f77a2a7d0770c2f59e26f3c Mon Sep 17 00:00:00 2001 From: xhon-pelushi Date: Sat, 15 Aug 2026 11:12:48 -0400 Subject: [PATCH] Add option to make icon labels bold Adds a "Bold icon labels" switch to Settings that applies a bold typeface to app labels on the home screen and in the app drawer, independent of the existing app-wide custom font option. Fixes #101 --- .../home/activities/SettingsActivity.kt | 9 +++++++++ .../fossify/home/adapters/LaunchersAdapter.kt | 3 +++ .../fossify/home/fragments/AllAppsFragment.kt | 7 +++++++ .../kotlin/org/fossify/home/helpers/Config.kt | 4 ++++ .../org/fossify/home/helpers/Constants.kt | 1 + .../org/fossify/home/views/HomeScreenGrid.kt | 20 +++++++++++++++---- app/src/main/res/layout/activity_settings.xml | 16 +++++++++++++++ app/src/main/res/values/strings.xml | 1 + 8 files changed, 57 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/home/activities/SettingsActivity.kt b/app/src/main/kotlin/org/fossify/home/activities/SettingsActivity.kt index 78ed8dc36..197dc1dc5 100644 --- a/app/src/main/kotlin/org/fossify/home/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/org/fossify/home/activities/SettingsActivity.kt @@ -47,6 +47,7 @@ class SettingsActivity : SimpleActivity() { setupCustomizeColors() setupUseEnglish() setupDoubleTapToLock() + setupBoldIconLabels() setupCloseAppDrawerOnOtherAppOpen() setupOpenKeyboardOnAppDrawer() setupDrawerColumnCount() @@ -249,6 +250,14 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupBoldIconLabels() { + binding.settingsBoldIconLabels.isChecked = config.boldIconLabels + binding.settingsBoldIconLabelsHolder.setOnClickListener { + binding.settingsBoldIconLabels.toggle() + config.boldIconLabels = binding.settingsBoldIconLabels.isChecked + } + } + private fun setupShowHomeAppLabels() { binding.settingsShowHomeAppLabels.isChecked = config.showHomeAppLabels binding.settingsShowHomeAppLabelsHolder.setOnClickListener { diff --git a/app/src/main/kotlin/org/fossify/home/adapters/LaunchersAdapter.kt b/app/src/main/kotlin/org/fossify/home/adapters/LaunchersAdapter.kt index 83bc18d1f..de14050df 100644 --- a/app/src/main/kotlin/org/fossify/home/adapters/LaunchersAdapter.kt +++ b/app/src/main/kotlin/org/fossify/home/adapters/LaunchersAdapter.kt @@ -1,6 +1,7 @@ package org.fossify.home.adapters import android.annotation.SuppressLint +import android.graphics.Typeface import android.graphics.drawable.Drawable import android.view.LayoutInflater import android.view.MotionEvent @@ -89,6 +90,8 @@ class LaunchersAdapter( binding.launcherLabel.text = launcher.title binding.launcherLabel.setTextColor(textColor) binding.launcherLabel.beVisibleIf(activity.config.showDrawerAppLabels) + val labelStyle = if (activity.config.boldIconLabels) Typeface.BOLD else Typeface.NORMAL + binding.launcherLabel.setTypeface(binding.launcherLabel.typeface, labelStyle) binding.launcherIcon.setPadding(iconPadding, iconPadding, iconPadding, 0) if (launcher.drawable != null && binding.launcherIcon.tag == true) { diff --git a/app/src/main/kotlin/org/fossify/home/fragments/AllAppsFragment.kt b/app/src/main/kotlin/org/fossify/home/fragments/AllAppsFragment.kt index 048e51e0e..e502a0515 100644 --- a/app/src/main/kotlin/org/fossify/home/fragments/AllAppsFragment.kt +++ b/app/src/main/kotlin/org/fossify/home/fragments/AllAppsFragment.kt @@ -35,6 +35,7 @@ class AllAppsFragment( var ignoreTouches = false private var launchers = emptyList() + private var lastBoldIconLabels = false @SuppressLint("ClickableViewAccessibility") override fun setupFragment(activity: MainActivity) { @@ -48,6 +49,8 @@ class AllAppsFragment( return@setOnTouchListener false } + + lastBoldIconLabels = context.config.boldIconLabels } override fun onAttachedToWindow() { @@ -64,8 +67,12 @@ class AllAppsFragment( val layoutManager = binding.allAppsGrid.layoutManager as MyGridLayoutManager if (layoutManager.spanCount != context.config.drawerColumnCount) { onConfigurationChanged() + lastBoldIconLabels = context.config.boldIconLabels // Force redraw due to changed item size (binding.allAppsGrid.adapter as LaunchersAdapter).notifyDataSetChanged() + } else if (lastBoldIconLabels != context.config.boldIconLabels) { + lastBoldIconLabels = context.config.boldIconLabels + (binding.allAppsGrid.adapter as LaunchersAdapter).notifyDataSetChanged() } } diff --git a/app/src/main/kotlin/org/fossify/home/helpers/Config.kt b/app/src/main/kotlin/org/fossify/home/helpers/Config.kt index d63edfd3c..134bb96a4 100644 --- a/app/src/main/kotlin/org/fossify/home/helpers/Config.kt +++ b/app/src/main/kotlin/org/fossify/home/helpers/Config.kt @@ -45,4 +45,8 @@ class Config(context: Context) : BaseConfig(context) { var showHomeAppLabels: Boolean get() = prefs.getBoolean(SHOW_HOME_APP_LABELS, true) set(showHomeAppLabels) = prefs.edit().putBoolean(SHOW_HOME_APP_LABELS, showHomeAppLabels).apply() + + var boldIconLabels: Boolean + get() = prefs.getBoolean(BOLD_ICON_LABELS, false) + set(boldIconLabels) = prefs.edit().putBoolean(BOLD_ICON_LABELS, boldIconLabels).apply() } diff --git a/app/src/main/kotlin/org/fossify/home/helpers/Constants.kt b/app/src/main/kotlin/org/fossify/home/helpers/Constants.kt index 1d857caed..77f197260 100644 --- a/app/src/main/kotlin/org/fossify/home/helpers/Constants.kt +++ b/app/src/main/kotlin/org/fossify/home/helpers/Constants.kt @@ -15,6 +15,7 @@ const val CLOSE_APP_DRAWER = "close_app_drawer" const val AUTO_SHOW_KEYBOARD_IN_APP_DRAWER = "auto_show_keyboard_in_app_drawer" const val SHOW_DRAWER_APP_LABELS = "show_drawer_app_labels" const val SHOW_HOME_APP_LABELS = "show_home_app_labels" +const val BOLD_ICON_LABELS = "bold_icon_labels" // default home screen grid size const val ROW_COUNT = 6 diff --git a/app/src/main/kotlin/org/fossify/home/views/HomeScreenGrid.kt b/app/src/main/kotlin/org/fossify/home/views/HomeScreenGrid.kt index a1b942ad8..a6c31416f 100644 --- a/app/src/main/kotlin/org/fossify/home/views/HomeScreenGrid.kt +++ b/app/src/main/kotlin/org/fossify/home/views/HomeScreenGrid.kt @@ -16,6 +16,7 @@ import android.graphics.Path import android.graphics.Point import android.graphics.Rect import android.graphics.RectF +import android.graphics.Typeface import android.graphics.drawable.Drawable import android.os.Bundle import android.os.Handler @@ -148,25 +149,23 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : init { ViewCompat.setAccessibilityDelegate(this, accessibilityHelper) - val customTypeface = FontHelper.getTypeface(context) textPaint = TextPaint(Paint.ANTI_ALIAS_FLAG).apply { color = Color.WHITE textSize = context.resources.getDimension(org.fossify.commons.R.dimen.smaller_text_size) setShadowLayer(2f, 0f, 0f, Color.BLACK) - typeface = customTypeface } contrastTextPaint = TextPaint(Paint.ANTI_ALIAS_FLAG).apply { color = context.getProperTextColor() textSize = context.resources.getDimension(org.fossify.commons.R.dimen.smaller_text_size) setShadowLayer(2f, 0f, 0f, context.getProperTextColor().getContrastColor()) - typeface = customTypeface } + updateIconLabelTypeface() folderTitleTextPaint = TextPaint(Paint.ANTI_ALIAS_FLAG).apply { color = context.getProperTextColor() textSize = context.resources.getDimension(org.fossify.commons.R.dimen.medium_text_size) - typeface = customTypeface + typeface = FontHelper.getTypeface(context) } dragShadowCirclePaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { @@ -285,6 +284,19 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : 2f, 0f, 0f, context.getProperTextColor().getContrastColor() ) folderBackgroundPaint.color = context.getProperBackgroundColor() + updateIconLabelTypeface() + } + + private fun updateIconLabelTypeface() { + val baseTypeface = FontHelper.getTypeface(context) + val iconLabelTypeface = if (context.config.boldIconLabels) { + Typeface.create(baseTypeface, Typeface.BOLD) + } else { + baseTypeface + } + + textPaint.typeface = iconLabelTypeface + contrastTextPaint.typeface = iconLabelTypeface } fun removeAppIcon(item: HomeScreenGridItem) { diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 06eb10639..2afbbe955 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -148,6 +148,22 @@ + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a7d3057fb..c89ffd020 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -17,6 +17,7 @@ Home screen Widget is too big for current home screen size Double tap to lock screen + Bold icon labels To enable the double tap to lock screen feature, you need to grant admin permission. Note that the app cannot be uninstalled until this permission is removed. Deactivating admin permission will disable the double tap to lock screen feature.