From f40cee392ed4df619128a9d33a339364fee32f27 Mon Sep 17 00:00:00 2001 From: Finn M Glas Date: Sat, 30 May 2020 00:42:23 +0200 Subject: [PATCH] Create a appmenu to be opened by three dots This menu is located in the `ChooseActivity`, helps managing apps (info / delete) --- .../com/finnmglas/launcher/ChooseActivity.kt | 5 ++- .../launcher/choose/AppsRecyclerAdapter.kt | 33 +++++++++++++++---- app/src/main/res/layout/recycler_apps_row.xml | 2 +- app/src/main/res/menu/menu_app.xml | 7 ++++ app/src/main/res/values/icons.xml | 3 +- 5 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 app/src/main/res/menu/menu_app.xml diff --git a/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt b/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt index f84a2e5..3b9b2bd 100644 --- a/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt @@ -12,7 +12,6 @@ import com.finnmglas.launcher.choose.AppsRecyclerAdapter import com.finnmglas.launcher.extern.* import kotlinx.android.synthetic.main.activity_choose.* - class ChooseActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -67,6 +66,10 @@ class ChooseActivity : AppCompatActivity() { finish() } + override fun onResume() { + super.onResume() + } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == REQUEST_UNINSTALL) { diff --git a/app/src/main/java/com/finnmglas/launcher/choose/AppsRecyclerAdapter.kt b/app/src/main/java/com/finnmglas/launcher/choose/AppsRecyclerAdapter.kt index 70ce1a1..3e1e88a 100644 --- a/app/src/main/java/com/finnmglas/launcher/choose/AppsRecyclerAdapter.kt +++ b/app/src/main/java/com/finnmglas/launcher/choose/AppsRecyclerAdapter.kt @@ -3,20 +3,20 @@ package com.finnmglas.launcher.choose import android.app.Activity import android.content.Context import android.content.Intent -import android.content.pm.ApplicationInfo import android.content.pm.PackageManager import android.net.Uri import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView +import android.widget.PopupMenu import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.finnmglas.launcher.R import com.finnmglas.launcher.extern.FontAwesome import com.finnmglas.launcher.extern.REQUEST_CHOOSE_APP import com.finnmglas.launcher.extern.REQUEST_UNINSTALL - +import com.finnmglas.launcher.extern.openAppSettings class AppsRecyclerAdapter(val activity: Activity, val action: String?, val forApp: String?): RecyclerView.Adapter() { @@ -62,11 +62,30 @@ class AppsRecyclerAdapter(val activity: Activity, val action: String?, val forAp viewHolder.textView.text = appLabel viewHolder.img.setImageDrawable(appIcon) - viewHolder.delete.setOnClickListener{ - val intent = Intent(Intent.ACTION_UNINSTALL_PACKAGE) - intent.data = Uri.parse("package:$appPackageName") - intent.putExtra(Intent.EXTRA_RETURN_RESULT, true) - activity.startActivityForResult(intent, REQUEST_UNINSTALL) + viewHolder.delete.setOnClickListener{ //creating a popup menu + + val popup = PopupMenu(activity, viewHolder.delete) + popup.inflate(R.menu.menu_app) + + popup.setOnMenuItemClickListener { + when (it.itemId) { + R.id.app_menu_delete -> { // delete + val intent = Intent(Intent.ACTION_UNINSTALL_PACKAGE) + intent.data = Uri.parse("package:$appPackageName") + intent.putExtra(Intent.EXTRA_RETURN_RESULT, true) + activity.startActivityForResult(intent, REQUEST_UNINSTALL) + + true + } + R.id.app_menu_info -> { // open app settings + openAppSettings(appPackageName, activity) + true + } + else -> false + } + } + + popup.show() } viewHolder.delete.visibility = if(isSystemApp || action == "pick") View.INVISIBLE else View.VISIBLE diff --git a/app/src/main/res/layout/recycler_apps_row.xml b/app/src/main/res/layout/recycler_apps_row.xml index 8e8e667..51f50b5 100644 --- a/app/src/main/res/layout/recycler_apps_row.xml +++ b/app/src/main/res/layout/recycler_apps_row.xml @@ -36,7 +36,7 @@ android:layout_width="20sp" android:layout_height="wrap_content" android:gravity="center" - android:text="@string/fas_trash" + android:text="@string/fas_three_dots" android:textSize="20sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/menu/menu_app.xml b/app/src/main/res/menu/menu_app.xml new file mode 100644 index 0000000..eabf26f --- /dev/null +++ b/app/src/main/res/menu/menu_app.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/app/src/main/res/values/icons.xml b/app/src/main/res/values/icons.xml index 0a96570..dcc0cc7 100644 --- a/app/src/main/res/values/icons.xml +++ b/app/src/main/res/values/icons.xml @@ -11,7 +11,8 @@ - + +