From 8311d29cedc1e11a9c43ddf465fbfac0d2502b5c Mon Sep 17 00:00:00 2001 From: HeCodes2Much Date: Thu, 30 May 2024 15:17:54 +0100 Subject: [PATCH] Feat: Display app icons in more places if enabled. also closes #46 Signed-off-by: HeCodes2Much --- .../launcher/ui/drawer/DrawViewHolder.kt | 11 +++++ .../ui/favorite/FavoriteViewHolder.kt | 12 +++++ .../launcher/ui/hidden/HiddenAdapter.kt | 11 ++++- .../launcher/ui/hidden/HiddenFragment.kt | 10 ++++- .../launcher/ui/hidden/HiddenViewHolder.kt | 16 ++++++- .../launcher/ui/home/HomeFragment.kt | 6 +-- app/src/main/res/layout/item_draw.xml | 43 ++++++++++++------ app/src/main/res/layout/item_favorite.xml | 12 ++++- app/src/main/res/layout/item_hidden.xml | 44 ++++++++++++------- 9 files changed, 126 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawViewHolder.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawViewHolder.kt index 1b0e03f..91a0927 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawViewHolder.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawViewHolder.kt @@ -60,6 +60,17 @@ class DrawViewHolder( appDrawName.setCompoundDrawables(null, null, null, null) appDrawName.compoundDrawablePadding = 0 } + + if (preferenceHelper.showAppIcon) { + val appIcon = + binding.root.context.packageManager.getApplicationIcon(appInfo.packageName) + appDrawLeftIcon.setImageDrawable(appIcon) + appDrawLeftIcon.layoutParams.width = + preferenceHelper.appTextSize.toInt() * 3 + appDrawLeftIcon.layoutParams.height = + preferenceHelper.appTextSize.toInt() * 3 + appDrawLeftIcon.visibility = View.VISIBLE + } } itemView.setOnClickListener { diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteViewHolder.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteViewHolder.kt index 079dfa2..0a27bbd 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteViewHolder.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteViewHolder.kt @@ -8,6 +8,7 @@ import android.graphics.PorterDuffColorFilter import android.os.Build import android.util.Log import android.view.MotionEvent +import android.view.View import androidx.appcompat.widget.LinearLayoutCompat import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView @@ -51,6 +52,17 @@ class FavoriteViewHolder( appFavoriteName.textSize = preferenceHelper.appTextSize Log.d("Tag", "Draw Adapter: ${appInfo.appName}") + if (preferenceHelper.showAppIcon) { + val appIcon = + binding.root.context.packageManager.getApplicationIcon(appInfo.packageName) + appFavoriteLeftIcon.setImageDrawable(appIcon) + appFavoriteLeftIcon.layoutParams.width = + preferenceHelper.appTextSize.toInt() * 3 + appFavoriteLeftIcon.layoutParams.height = + preferenceHelper.appTextSize.toInt() * 3 + appFavoriteLeftIcon.visibility = View.VISIBLE + } + // Create a BlendModeColorFilter with the specified color and blend mode val blendModeColorFilter = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenAdapter.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenAdapter.kt index 6b67c1f..2a24b18 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenAdapter.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenAdapter.kt @@ -7,11 +7,13 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import com.github.droidworksstudio.launcher.data.entities.AppInfo import com.github.droidworksstudio.launcher.databinding.ItemHiddenBinding +import com.github.droidworksstudio.launcher.helper.PreferenceHelper import com.github.droidworksstudio.launcher.listener.OnItemClickedListener class HiddenAdapter( private val onAppClickedListener: OnItemClickedListener.OnAppsClickedListener, - private val onAppLongClickedListener: OnItemClickedListener.OnAppLongClickedListener + private val onAppLongClickedListener: OnItemClickedListener.OnAppLongClickedListener, + private val preferenceHelperProvider: PreferenceHelper ) : ListAdapter(DiffCallback()) { override fun onCreateViewHolder( @@ -23,7 +25,12 @@ class HiddenAdapter( parent, false ) - return HiddenViewHolder(binding, onAppClickedListener, onAppLongClickedListener) + return HiddenViewHolder( + binding, + onAppClickedListener, + onAppLongClickedListener, + preferenceHelperProvider + ) } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt index b430896..dbb5cc2 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt @@ -20,6 +20,7 @@ import com.github.droidworksstudio.launcher.data.entities.AppInfo import com.github.droidworksstudio.launcher.databinding.FragmentHiddenBinding import com.github.droidworksstudio.launcher.helper.AppHelper import com.github.droidworksstudio.launcher.helper.FingerprintHelper +import com.github.droidworksstudio.launcher.helper.PreferenceHelper import com.github.droidworksstudio.launcher.listener.OnItemClickedListener import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener import com.github.droidworksstudio.launcher.ui.bottomsheetdialog.AppInfoBottomSheetFragment @@ -38,8 +39,6 @@ class HiddenFragment : Fragment(), private val binding get() = _binding!! - private val hiddenAdapter: HiddenAdapter by lazy { HiddenAdapter(this, this) } - private val viewModel: AppViewModel by viewModels() private lateinit var context: Context @@ -50,6 +49,11 @@ class HiddenFragment : Fragment(), @Inject lateinit var appHelper: AppHelper + @Inject + lateinit var preferenceHelper: PreferenceHelper + + private val hiddenAdapter: HiddenAdapter by lazy { HiddenAdapter(this, this, preferenceHelper) } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -81,6 +85,7 @@ class HiddenFragment : Fragment(), } + @RequiresApi(Build.VERSION_CODES.R) private fun observeHiddenApps() { viewModel.compareInstalledAppInfo() @Suppress("DEPRECATION") @@ -137,6 +142,7 @@ class HiddenFragment : Fragment(), binding.hiddenAdapter.scrollToPosition(0) } + @RequiresApi(Build.VERSION_CODES.R) @SuppressLint("NotifyDataSetChanged") override fun onResume() { super.onResume() diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenViewHolder.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenViewHolder.kt index 2c2a7ff..51edba2 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenViewHolder.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenViewHolder.kt @@ -1,21 +1,35 @@ package com.github.droidworksstudio.launcher.ui.hidden import android.util.Log +import android.view.View import androidx.recyclerview.widget.RecyclerView import com.github.droidworksstudio.launcher.data.entities.AppInfo import com.github.droidworksstudio.launcher.databinding.ItemHiddenBinding +import com.github.droidworksstudio.launcher.helper.PreferenceHelper import com.github.droidworksstudio.launcher.listener.OnItemClickedListener class HiddenViewHolder( private val binding: ItemHiddenBinding, private val onAppClickedListener: OnItemClickedListener.OnAppsClickedListener, - private val onAppLongClickedListener: OnItemClickedListener.OnAppLongClickedListener + private val onAppLongClickedListener: OnItemClickedListener.OnAppLongClickedListener, + private val preferenceHelper: PreferenceHelper, ) : RecyclerView.ViewHolder(binding.root) { fun bind(appInfo: AppInfo) { binding.apply { appHiddenName.text = appInfo.appName Log.d("Tag", "Draw Adapter: ${appInfo.appName}") + + if (preferenceHelper.showAppIcon) { + val appIcon = + binding.root.context.packageManager.getApplicationIcon(appInfo.packageName) + appHiddenLeftIcon.setImageDrawable(appIcon) + appHiddenLeftIcon.layoutParams.width = + preferenceHelper.appTextSize.toInt() * 3 + appHiddenLeftIcon.layoutParams.height = + preferenceHelper.appTextSize.toInt() * 3 + appHiddenLeftIcon.visibility = View.VISIBLE + } } itemView.setOnClickListener { diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt index a56f29b..c9b3e7b 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt @@ -130,17 +130,17 @@ class HomeFragment : Fragment(), val batteryLevel = level * 100 / scale.toFloat() val batteryDrawable = when { - batteryLevel >= 95 -> ContextCompat.getDrawable( + batteryLevel >= 76 -> ContextCompat.getDrawable( requireContext(), R.drawable.app_battery100 ) - batteryLevel >= 70 -> ContextCompat.getDrawable( + batteryLevel >= 51 -> ContextCompat.getDrawable( requireContext(), R.drawable.app_battery75 ) - batteryLevel >= 45 -> ContextCompat.getDrawable( + batteryLevel >= 26 -> ContextCompat.getDrawable( requireContext(), R.drawable.app_battery50 ) diff --git a/app/src/main/res/layout/item_draw.xml b/app/src/main/res/layout/item_draw.xml index fc55205..6bc4218 100644 --- a/app/src/main/res/layout/item_draw.xml +++ b/app/src/main/res/layout/item_draw.xml @@ -2,26 +2,41 @@ + android:layout_height="wrap_content" + xmlns:app="http://schemas.android.com/apk/res-auto"> - + + + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="vertical"> + + + + - - - \ No newline at end of file + diff --git a/app/src/main/res/layout/item_favorite.xml b/app/src/main/res/layout/item_favorite.xml index c12d661..98a9edb 100644 --- a/app/src/main/res/layout/item_favorite.xml +++ b/app/src/main/res/layout/item_favorite.xml @@ -6,12 +6,22 @@ android:layout_height="wrap_content"> + + + android:layout_height="wrap_content" + xmlns:app="http://schemas.android.com/apk/res-auto"> - + app:layout_constraintTop_toTopOf="@id/linear_layout" /> + + + + + + - - \ No newline at end of file +