diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java b/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java index 7256d95..0f6e91c 100644 --- a/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java +++ b/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java @@ -1,20 +1,15 @@ package de.jrpie.android.launcher.preferences; -import android.util.Log; - import org.json.JSONException; import org.json.JSONObject; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Set; -import java.util.stream.Collectors; import de.jrpie.android.launcher.R; import de.jrpie.android.launcher.apps.AppInfo; import de.jrpie.android.launcher.actions.lock.LockMethod; -import de.jrpie.android.launcher.preferences.theme.AppListLayout; import de.jrpie.android.launcher.preferences.theme.Background; import de.jrpie.android.launcher.preferences.theme.ColorTheme; import de.jrpie.android.launcher.preferences.theme.Font; @@ -40,8 +35,8 @@ import eu.jonahbauer.android.preference.annotations.serializer.PreferenceSeriali @Preference(name = "custom_names", type = HashMap.class, serializer = LauncherPreferences$Config.MapAppInfoStringSerializer.class), @Preference(name = "hide_bound_apps", type = boolean.class, defaultValue = "false"), }), - @PreferenceGroup(name = "list_apps", prefix = "settings_list_apps_", suffix = "_key", value = { - @Preference(name = "layout", type = AppListLayout.class, defaultValue = "TEXT") + @PreferenceGroup(name = "list", prefix = "settings_list_", suffix = "_key", value = { + @Preference(name = "layout", type = ListLayout.class, defaultValue = "DEFAULT") }), @PreferenceGroup(name = "gestures", prefix = "settings_gesture_", suffix = "_key", value = { }), diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/theme/AppListLayout.kt b/app/src/main/java/de/jrpie/android/launcher/preferences/ListLayout.kt similarity index 70% rename from app/src/main/java/de/jrpie/android/launcher/preferences/theme/AppListLayout.kt rename to app/src/main/java/de/jrpie/android/launcher/preferences/ListLayout.kt index a5d3522..e20945a 100644 --- a/app/src/main/java/de/jrpie/android/launcher/preferences/theme/AppListLayout.kt +++ b/app/src/main/java/de/jrpie/android/launcher/preferences/ListLayout.kt @@ -1,43 +1,36 @@ -package de.jrpie.android.launcher.preferences.theme +package de.jrpie.android.launcher.preferences import android.content.Context import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import de.jrpie.android.launcher.R -import de.jrpie.android.launcher.ui.list.apps.AppsRecyclerAdapter // TODO: move this to de.jrpie.android.launcher.ui.list.apps ? @Suppress("unused") -enum class AppListLayout( +enum class ListLayout( val layoutManager: (context: Context) -> RecyclerView.LayoutManager, val layoutResource: Int, - val prepareView: (viewHolder: AppsRecyclerAdapter.ViewHolder) -> Unit, - val useBadgedText: Boolean - - ) { + val useBadgedText: Boolean, +) { DEFAULT( { c -> LinearLayoutManager(c) }, R.layout.list_apps_row, - { v -> }, false ), - TEXT( { c -> LinearLayoutManager(c) }, R.layout.list_apps_row_variant_text, - { v -> }, true ), GRID( { c -> val displayMetrics = c.resources.displayMetrics val widthSp = displayMetrics.widthPixels / displayMetrics.scaledDensity - GridLayoutManager(c, (widthSp / 90).toInt()) }, - R.layout.list_apps_row_variant_grid, - { v -> + GridLayoutManager(c, (widthSp / 90).toInt()) }, + R.layout.list_apps_row_variant_grid, false ), } \ No newline at end of file diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/AppsRecyclerAdapter.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/AppsRecyclerAdapter.kt index 7a71723..555e771 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/AppsRecyclerAdapter.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/AppsRecyclerAdapter.kt @@ -5,7 +5,6 @@ import android.app.Activity import android.content.Intent import android.graphics.Rect import android.os.AsyncTask -import android.text.InputType import android.util.Log import android.view.LayoutInflater import android.view.View @@ -21,7 +20,6 @@ import com.google.android.material.snackbar.Snackbar import de.jrpie.android.launcher.R import de.jrpie.android.launcher.REQUEST_CHOOSE_APP import de.jrpie.android.launcher.actions.AppAction -import de.jrpie.android.launcher.actions.LauncherDeviceAdmin import de.jrpie.android.launcher.apps.AppFilter import de.jrpie.android.launcher.apps.AppInfo import de.jrpie.android.launcher.apps.DetailedAppInfo @@ -30,7 +28,7 @@ import de.jrpie.android.launcher.getUserFromId import de.jrpie.android.launcher.loadApps import de.jrpie.android.launcher.openAppSettings import de.jrpie.android.launcher.preferences.LauncherPreferences -import de.jrpie.android.launcher.preferences.theme.AppListLayout +import de.jrpie.android.launcher.preferences.ListLayout import de.jrpie.android.launcher.transformGrayscale import de.jrpie.android.launcher.ui.list.ListActivity import de.jrpie.android.launcher.uninstallApp @@ -50,8 +48,8 @@ class AppsRecyclerAdapter( private val intention: ListActivity.ListActivityIntention = ListActivity.ListActivityIntention.VIEW, private val forGesture: String? = "", - private var appFilter: AppFilter = AppFilter(activity, "") - private val layout: AppListLayout + private var appFilter: AppFilter = AppFilter(activity, ""), + private val layout: ListLayout ) : RecyclerView.Adapter() { @@ -225,11 +223,10 @@ class AppsRecyclerAdapter( override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val layout = LauncherPreferences.list_apps().layout() + val layout = LauncherPreferences.list().layout() val inflater = LayoutInflater.from(parent.context) val view: View = inflater.inflate(layout.layoutResource, parent, false) val viewHolder = ViewHolder(view) - layout.prepareView(viewHolder) return viewHolder } diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt index de9a279..d6443b2 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt @@ -71,15 +71,14 @@ class ListFragmentApps : Fragment(), UIObject { favoritesVisibility = favoritesVisibility, hiddenVisibility = hiddenVisibility ), - layout = LauncherPreferences.list_apps().layout() + layout = LauncherPreferences.list().layout() ) // set up the list / recycler binding.listAppsRview.apply { // improve performance (since content changes don't change the layout size) setHasFixedSize(true) - layoutManager = LauncherPreferences.list_apps().layout().layoutManager(context) - // TODO: option to change this to GridLayoutManager(context, numCols) + layoutManager = LauncherPreferences.list().layout().layoutManager(context) adapter = appsRViewAdapter } diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 60d9320..d51bd35 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -13,8 +13,21 @@ apps.hidden apps.custom_names apps.hide_bound_apps - list.apps.layout + list.layout general.select_launcher + + + + DEFAULT + TEXT + GRID + + + + @string/settings_list_layout_item_default + @string/settings_list_layout_item_text + @string/settings_list_layout_item_grid +