diff --git a/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt b/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt index 0f84628..7c91398 100644 --- a/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt @@ -16,9 +16,6 @@ import kotlinx.android.synthetic.main.activity_choose.* class ChooseActivity : AppCompatActivity() { - private lateinit var viewAdapter: RecyclerView.Adapter<*> - private lateinit var viewManager: RecyclerView.LayoutManager - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -49,9 +46,8 @@ class ChooseActivity : AppCompatActivity() { val forApp = bundle.getString("forApp") // which app we choose when (action) { - "launch" -> activity_choose_heading.text = getString(R.string.choose_title_launch) + "view" -> activity_choose_heading.text = getString(R.string.choose_title_view) "pick" -> activity_choose_heading.text = getString(R.string.choose_title) - "uninstall" -> activity_choose_heading.text = getString(R.string.choose_title_remove) } // set up the list / recycler diff --git a/app/src/main/java/com/finnmglas/launcher/MainActivity.kt b/app/src/main/java/com/finnmglas/launcher/MainActivity.kt index 00bba0a..8934ccd 100644 --- a/app/src/main/java/com/finnmglas/launcher/MainActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/MainActivity.kt @@ -10,6 +10,8 @@ import android.util.DisplayMetrics import android.view.* import androidx.appcompat.app.AppCompatActivity import androidx.core.view.GestureDetectorCompat +import androidx.recyclerview.widget.RecyclerView +import com.finnmglas.launcher.choose.AppsRecyclerAdapter import com.finnmglas.launcher.extern.* import kotlinx.android.synthetic.main.activity_main.* import java.text.SimpleDateFormat @@ -17,6 +19,9 @@ import java.util.* import kotlin.concurrent.fixedRateTimer import kotlin.math.abs +// used for the apps drawer / menu (ChooseActivity) +lateinit var viewAdapter: RecyclerView.Adapter<*> +lateinit var viewManager: RecyclerView.LayoutManager class MainActivity : AppCompatActivity(), GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { @@ -76,6 +81,9 @@ class MainActivity : AppCompatActivity(), // As older APIs somehow do not recognize the xml defined onClick activity_main_settings_icon.setOnClickListener() { openSettings() } + // Load apps list first - speed up settings that way + AsyncTask.execute { viewAdapter = AppsRecyclerAdapter( this, "", "") } + // First Startup if (!sharedPref.getBoolean("startedBefore", false)){ startActivity(Intent(this, FirstStartupActivity::class.java)) diff --git a/app/src/main/java/com/finnmglas/launcher/choose/AppInfo.kt b/app/src/main/java/com/finnmglas/launcher/choose/AppInfo.kt index 801a43c..4221dad 100644 --- a/app/src/main/java/com/finnmglas/launcher/choose/AppInfo.kt +++ b/app/src/main/java/com/finnmglas/launcher/choose/AppInfo.kt @@ -6,4 +6,5 @@ class AppInfo { var label: CharSequence? = null var packageName: CharSequence? = null var icon: Drawable? = null + var isSystemApp: Boolean = false } \ No newline at end of file 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 a8b832b..0fcbb26 100644 --- a/app/src/main/java/com/finnmglas/launcher/choose/AppsRecyclerAdapter.kt +++ b/app/src/main/java/com/finnmglas/launcher/choose/AppsRecyclerAdapter.kt @@ -3,6 +3,7 @@ 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 @@ -12,7 +13,9 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.finnmglas.launcher.R -import com.finnmglas.launcher.extern.* +import com.finnmglas.launcher.extern.FontAwesome +import com.finnmglas.launcher.extern.REQUEST_CHOOSE_APP +import com.finnmglas.launcher.extern.REQUEST_UNINSTALL class AppsRecyclerAdapter(val activity: Activity, val action: String?, val forApp: String?): @@ -24,6 +27,7 @@ class AppsRecyclerAdapter(val activity: Activity, val action: String?, val forAp View.OnClickListener { var textView: TextView = itemView.findViewById(R.id.choose_row_app_name) var img: ImageView = itemView.findViewById(R.id.choose_row_app_icon) as ImageView + var delete: FontAwesome = itemView.findViewById(R.id.choose_row_app_delete) override fun onClick(v: View) { val pos = adapterPosition @@ -31,7 +35,7 @@ class AppsRecyclerAdapter(val activity: Activity, val action: String?, val forAp val appPackageName = appsList[pos].packageName.toString() when (action){ - "launch" -> { + "view" -> { val launchIntent: Intent = context.packageManager .getLaunchIntentForPackage(appPackageName)!! context.startActivity(launchIntent) @@ -43,12 +47,6 @@ class AppsRecyclerAdapter(val activity: Activity, val action: String?, val forAp activity.setResult(REQUEST_CHOOSE_APP, returnIntent) activity.finish() } - "uninstall" -> { - 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) - } } } @@ -57,12 +55,21 @@ class AppsRecyclerAdapter(val activity: Activity, val action: String?, val forAp override fun onBindViewHolder(viewHolder: ViewHolder, i: Int) { val appLabel = appsList[i].label.toString() - val appPackage = appsList[i].packageName.toString() + val appPackageName = appsList[i].packageName.toString() val appIcon = appsList[i].icon - val textView = viewHolder.textView - textView.text = appLabel - val imageView: ImageView = viewHolder.img - imageView.setImageDrawable(appIcon) + val isSystemApp = appsList[i].isSystemApp + + 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.visibility = if(isSystemApp || action == "pick") View.INVISIBLE else View.VISIBLE } override fun getItemCount(): Int { return appsList.size } diff --git a/app/src/main/java/com/finnmglas/launcher/settings/SettingsFragmentApps.kt b/app/src/main/java/com/finnmglas/launcher/settings/SettingsFragmentApps.kt index 62189ad..93d2915 100644 --- a/app/src/main/java/com/finnmglas/launcher/settings/SettingsFragmentApps.kt +++ b/app/src/main/java/com/finnmglas/launcher/settings/SettingsFragmentApps.kt @@ -42,9 +42,8 @@ class SettingsFragmentApps : Fragment() { setButtonColor(fragment_settings_apps_choose_vol_up_btn, vibrantColor) setButtonColor(fragment_settings_apps_choose_vol_down_btn, vibrantColor) - setButtonColor(fragment_settings_apps_launch_btn, vibrantColor) + setButtonColor(fragment_settings_apps_btn, vibrantColor) setButtonColor(fragment_settings_apps_install_btn, vibrantColor) - setButtonColor(fragment_settings_apps_remove_btn, vibrantColor) } // Action - selecting buttons @@ -56,9 +55,9 @@ class SettingsFragmentApps : Fragment() { fragment_settings_apps_choose_vol_down_btn.setOnClickListener{ chooseApp("volumeDownApp")} // App management buttons - fragment_settings_apps_launch_btn.setOnClickListener{ + fragment_settings_apps_btn.setOnClickListener{ val intent = Intent(this.context, ChooseActivity::class.java) - intent.putExtra("action", "launch") + intent.putExtra("action", "view") startActivity(intent) } fragment_settings_apps_install_btn.setOnClickListener{ @@ -72,11 +71,6 @@ class SettingsFragmentApps : Fragment() { .show() } } - fragment_settings_apps_remove_btn.setOnClickListener{ - val intent = Intent(this.context, ChooseActivity::class.java) - intent.putExtra("action", "uninstall") - startActivity(intent) - } super.onStart() } diff --git a/app/src/main/res/layout/fragment_settings_apps.xml b/app/src/main/res/layout/fragment_settings_apps.xml index cf0ca53..a1c3718 100644 --- a/app/src/main/res/layout/fragment_settings_apps.xml +++ b/app/src/main/res/layout/fragment_settings_apps.xml @@ -160,10 +160,10 @@