From bc0ecad1ac7f8cfca9efa00e0004c3d77187f278 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Wed, 28 Aug 2024 01:44:01 +0200 Subject: [PATCH] fix #5: don't show uninstall option for system apps. The three dot menu button was removed, since the menu is already available by long clicking --- .../de/jrpie/android/launcher/Functions.kt | 2 ++ .../launcher/list/apps/AppsRecyclerAdapter.kt | 24 +++++++------------ app/src/main/res/layout/list_apps_row.xml | 14 ----------- .../metadata/android/en-US/changelogs/21.txt | 4 ++++ 4 files changed, 15 insertions(+), 29 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/21.txt diff --git a/app/src/main/java/de/jrpie/android/launcher/Functions.kt b/app/src/main/java/de/jrpie/android/launcher/Functions.kt index aa5193a..254b826 100644 --- a/app/src/main/java/de/jrpie/android/launcher/Functions.kt +++ b/app/src/main/java/de/jrpie/android/launcher/Functions.kt @@ -9,6 +9,7 @@ import android.content.Context import android.content.Intent import android.content.SharedPreferences import android.content.pm.ActivityInfo +import android.content.pm.ApplicationInfo import android.content.pm.LauncherActivityInfo import android.content.pm.LauncherApps import android.content.pm.PackageManager @@ -403,6 +404,7 @@ fun loadApps(packageManager: PackageManager, context: Context) { app.packageName = activityInfo.applicationInfo.packageName app.icon = activityInfo.getBadgedIcon(0) app.user = user.hashCode() + app.isSystemApp = activityInfo.applicationInfo.flags.and(ApplicationInfo.FLAG_SYSTEM) != 0 loadList.add(app) } } diff --git a/app/src/main/java/de/jrpie/android/launcher/list/apps/AppsRecyclerAdapter.kt b/app/src/main/java/de/jrpie/android/launcher/list/apps/AppsRecyclerAdapter.kt index 042c71c..58e3ca5 100644 --- a/app/src/main/java/de/jrpie/android/launcher/list/apps/AppsRecyclerAdapter.kt +++ b/app/src/main/java/de/jrpie/android/launcher/list/apps/AppsRecyclerAdapter.kt @@ -51,11 +51,9 @@ class AppsRecyclerAdapter(val activity: Activity, View.OnClickListener { var textView: TextView = itemView.findViewById(R.id.list_apps_row_name) var img: ImageView = itemView.findViewById(R.id.list_apps_row_icon) - var menuDots: ImageView = itemView.findViewById(R.id.list_apps_row_menu) override fun onClick(v: View) { val pos = adapterPosition - val context: Context = v.context val appPackageName = appsListDisplayed[pos].packageName.toString() val appUser = appsListDisplayed[pos].user when (intention){ @@ -93,17 +91,9 @@ class AppsRecyclerAdapter(val activity: Activity, ) // decide when to show the options popup menu about - if (isSystemApp || intention == ListActivity.ListActivityIntention.PICK) { - viewHolder.menuDots.visibility = View.INVISIBLE - } - else { - viewHolder.menuDots.visibility = View.VISIBLE - - viewHolder.menuDots.setOnClickListener{ showOptionsPopup(viewHolder, appPackageName, appUser) } - viewHolder.menuDots.setOnLongClickListener{ showOptionsPopup(viewHolder, appPackageName, appUser) } - viewHolder.textView.setOnLongClickListener{ showOptionsPopup(viewHolder, appPackageName, appUser) } - viewHolder.img.setOnLongClickListener{ showOptionsPopup(viewHolder, appPackageName, appUser) } - + if (intention == ListActivity.ListActivityIntention.VIEW) { + viewHolder.textView.setOnLongClickListener{ showOptionsPopup(viewHolder, appPackageName, appUser, isSystemApp) } + viewHolder.img.setOnLongClickListener{ showOptionsPopup(viewHolder, appPackageName, appUser, isSystemApp) } // ensure onClicks are actually caught viewHolder.textView.setOnClickListener{ viewHolder.onClick(viewHolder.textView) } viewHolder.img.setOnClickListener{ viewHolder.onClick(viewHolder.img) } @@ -111,12 +101,16 @@ class AppsRecyclerAdapter(val activity: Activity, } @Suppress("SameReturnValue") - private fun showOptionsPopup(viewHolder: ViewHolder, appPackageName: String, user: Int?): Boolean { + private fun showOptionsPopup(viewHolder: ViewHolder, appPackageName: String, user: Int?, isSystemApp: Boolean): Boolean { //create the popup menu - val popup = PopupMenu(activity, viewHolder.menuDots) + val popup = PopupMenu(activity, viewHolder.img) popup.inflate(R.menu.menu_app) + if (isSystemApp) { + popup.menu.findItem(R.id.app_menu_delete).setVisible(false) + } + popup.setOnMenuItemClickListener { when (it.itemId) { R.id.app_menu_delete -> { diff --git a/app/src/main/res/layout/list_apps_row.xml b/app/src/main/res/layout/list_apps_row.xml index ccc4895..85ce5e6 100644 --- a/app/src/main/res/layout/list_apps_row.xml +++ b/app/src/main/res/layout/list_apps_row.xml @@ -22,25 +22,11 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="60sp" - android:layout_marginLeft="60sp" - android:layout_marginEnd="5dp" - android:layout_marginRight="5dp" android:gravity="start" android:text="" android:textSize="20sp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@+id/list_apps_row_menu" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/21.txt b/fastlane/metadata/android/en-US/changelogs/21.txt new file mode 100644 index 0000000..358a727 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/21.txt @@ -0,0 +1,4 @@ +- Chinese translation (thank you, yzqzss!) +- Fixed workaround for bug when opening keyboard in full screen mode +- Removed uninstall option for system apps +- Removed three dots in app list (use long click instead)