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
This commit is contained in:
Josia Pietsch 2024-08-28 01:44:01 +02:00
parent 522353a62c
commit bc0ecad1ac
Signed by: jrpie
GPG key ID: E70B571D66986A2D
4 changed files with 15 additions and 29 deletions

View file

@ -9,6 +9,7 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.content.pm.ActivityInfo import android.content.pm.ActivityInfo
import android.content.pm.ApplicationInfo
import android.content.pm.LauncherActivityInfo import android.content.pm.LauncherActivityInfo
import android.content.pm.LauncherApps import android.content.pm.LauncherApps
import android.content.pm.PackageManager import android.content.pm.PackageManager
@ -403,6 +404,7 @@ fun loadApps(packageManager: PackageManager, context: Context) {
app.packageName = activityInfo.applicationInfo.packageName app.packageName = activityInfo.applicationInfo.packageName
app.icon = activityInfo.getBadgedIcon(0) app.icon = activityInfo.getBadgedIcon(0)
app.user = user.hashCode() app.user = user.hashCode()
app.isSystemApp = activityInfo.applicationInfo.flags.and(ApplicationInfo.FLAG_SYSTEM) != 0
loadList.add(app) loadList.add(app)
} }
} }

View file

@ -51,11 +51,9 @@ class AppsRecyclerAdapter(val activity: Activity,
View.OnClickListener { View.OnClickListener {
var textView: TextView = itemView.findViewById(R.id.list_apps_row_name) var textView: TextView = itemView.findViewById(R.id.list_apps_row_name)
var img: ImageView = itemView.findViewById(R.id.list_apps_row_icon) 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) { override fun onClick(v: View) {
val pos = adapterPosition val pos = adapterPosition
val context: Context = v.context
val appPackageName = appsListDisplayed[pos].packageName.toString() val appPackageName = appsListDisplayed[pos].packageName.toString()
val appUser = appsListDisplayed[pos].user val appUser = appsListDisplayed[pos].user
when (intention){ when (intention){
@ -93,17 +91,9 @@ class AppsRecyclerAdapter(val activity: Activity,
) )
// decide when to show the options popup menu about // decide when to show the options popup menu about
if (isSystemApp || intention == ListActivity.ListActivityIntention.PICK) { if (intention == ListActivity.ListActivityIntention.VIEW) {
viewHolder.menuDots.visibility = View.INVISIBLE viewHolder.textView.setOnLongClickListener{ showOptionsPopup(viewHolder, appPackageName, appUser, isSystemApp) }
} viewHolder.img.setOnLongClickListener{ showOptionsPopup(viewHolder, appPackageName, appUser, isSystemApp) }
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) }
// ensure onClicks are actually caught // ensure onClicks are actually caught
viewHolder.textView.setOnClickListener{ viewHolder.onClick(viewHolder.textView) } viewHolder.textView.setOnClickListener{ viewHolder.onClick(viewHolder.textView) }
viewHolder.img.setOnClickListener{ viewHolder.onClick(viewHolder.img) } viewHolder.img.setOnClickListener{ viewHolder.onClick(viewHolder.img) }
@ -111,12 +101,16 @@ class AppsRecyclerAdapter(val activity: Activity,
} }
@Suppress("SameReturnValue") @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 //create the popup menu
val popup = PopupMenu(activity, viewHolder.menuDots) val popup = PopupMenu(activity, viewHolder.img)
popup.inflate(R.menu.menu_app) popup.inflate(R.menu.menu_app)
if (isSystemApp) {
popup.menu.findItem(R.id.app_menu_delete).setVisible(false)
}
popup.setOnMenuItemClickListener { popup.setOnMenuItemClickListener {
when (it.itemId) { when (it.itemId) {
R.id.app_menu_delete -> { R.id.app_menu_delete -> {

View file

@ -22,25 +22,11 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="60sp" android:layout_marginStart="60sp"
android:layout_marginLeft="60sp"
android:layout_marginEnd="5dp"
android:layout_marginRight="5dp"
android:gravity="start" android:gravity="start"
android:text="" android:text=""
android:textSize="20sp" android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/list_apps_row_menu"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/list_apps_row_menu"
android:layout_width="30sp"
android:layout_height="0dp"
android:gravity="center"
android:src="@drawable/baseline_more_horiz_24"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -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)