Skip to content

Commit

Permalink
Always refresh home screen items
Browse files Browse the repository at this point in the history
This ensures always up-to-date icons are shown. One example is icon color customization in all Fossify apps.
  • Loading branch information
naveensingh committed Oct 6, 2024
1 parent 4560f35 commit ec5c5ef
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -199,12 +199,12 @@ class MainActivity : SimpleActivity(), FlingListener {
}

ensureBackgroundThread {
if (IconCache.cachedLaunchers.isEmpty()) {
if (IconCache.launchers.isEmpty()) {
val hiddenIcons = hiddenIconsDB.getHiddenIcons().map {
it.getIconIdentifier()
}

IconCache.cachedLaunchers = launchersDB.getAppLaunchers().filter {
IconCache.launchers = launchersDB.getAppLaunchers().filter {
val showIcon = !hiddenIcons.contains(it.getLauncherIdentifier())
if (!showIcon) {
try {
Expand All @@ -216,7 +216,7 @@ class MainActivity : SimpleActivity(), FlingListener {
}.toMutableList() as ArrayList<AppLauncher>
}

binding.allAppsFragment.root.gotLaunchers(IconCache.cachedLaunchers)
binding.allAppsFragment.root.gotLaunchers(IconCache.launchers)
refreshLaunchers()
}

Expand Down Expand Up @@ -517,27 +517,23 @@ class MainActivity : SimpleActivity(), FlingListener {
binding.allAppsFragment.root.gotLaunchers(launchers)
binding.widgetsFragment.root.getAppWidgets()

var hasDeletedAnything = false
IconCache.cachedLaunchers.map { it.packageName }.forEach { packageName ->
IconCache.launchers.map { it.packageName }.forEach { packageName ->
if (!launchers.map { it.packageName }.contains(packageName)) {
hasDeletedAnything = true
launchersDB.deleteApp(packageName)
homeScreenGridItemsDB.deleteByPackageName(packageName)
}
}

if (hasDeletedAnything) {
binding.homeScreenGrid.root.fetchGridItems()
}

IconCache.cachedLaunchers = launchers
IconCache.launchers = launchers

if (!config.wasHomeScreenInit) {
ensureBackgroundThread {
getDefaultAppPackages(launchers)
config.wasHomeScreenInit = true
binding.homeScreenGrid.root.fetchGridItems()
}
} else {
binding.homeScreenGrid.root.fetchGridItems()
}
}

Expand Down Expand Up @@ -683,7 +679,8 @@ class MainActivity : SimpleActivity(), FlingListener {
binding.mainHolder.performHapticFeedback()
}

val anchorY = binding.homeScreenGrid.root.sideMargins.top + (clickedGridItem.top * binding.homeScreenGrid.root.cellHeight.toFloat())
val anchorY = binding.homeScreenGrid.root.sideMargins.top +
(clickedGridItem.top * binding.homeScreenGrid.root.cellHeight.toFloat())
showHomeIconMenu(x, anchorY, clickedGridItem, false)
}

Expand Down
17 changes: 15 additions & 2 deletions app/src/main/kotlin/org/fossify/launcher/helpers/IconCache.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,18 @@ package org.fossify.launcher.helpers
import org.fossify.launcher.models.AppLauncher

object IconCache {
var cachedLaunchers = emptyList<AppLauncher>()
}
@Volatile
private var cachedLaunchers = emptyList<AppLauncher>()

var launchers: List<AppLauncher>
get() = cachedLaunchers
set(value) {
synchronized(this) {
cachedLaunchers = value
}
}

fun clear() {
launchers = emptyList()
}
}

0 comments on commit ec5c5ef

Please sign in to comment.