Эх сурвалжийг харах

chore: deleting app from customise apps fragment, done!

beautusg 7 жил өмнө
parent
commit
3883c3d07e

BIN
app/release/app.aab


+ 6 - 2
app/src/main/java/com/sduduzog/slimlauncher/adapters/CustomAppsAdapter.kt

@@ -11,10 +11,10 @@ import androidx.recyclerview.widget.ItemTouchHelper
 import androidx.recyclerview.widget.RecyclerView
 import com.sduduzog.slimlauncher.R
 import com.sduduzog.slimlauncher.data.HomeApp
-import com.sduduzog.slimlauncher.utils.OnAppsUpdatedListener
+import com.sduduzog.slimlauncher.utils.OnShitDoneToAppsListener
 import com.sduduzog.slimlauncher.utils.OnItemActionListener
 
-class CustomAppsAdapter(private val listener: OnAppsUpdatedListener) : RecyclerView.Adapter<CustomAppsAdapter.ViewHolder>(), OnItemActionListener {
+class CustomAppsAdapter(private val listener: OnShitDoneToAppsListener) : RecyclerView.Adapter<CustomAppsAdapter.ViewHolder>(), OnItemActionListener {
 
     private var apps: MutableList<HomeApp> = mutableListOf()
     private lateinit var touchHelper: ItemTouchHelper
@@ -36,6 +36,9 @@ class CustomAppsAdapter(private val listener: OnAppsUpdatedListener) : RecyclerV
             }
             false
         }
+        holder.menuIcon.setOnClickListener {
+            listener.onAppMenuClicked(it, item)
+        }
     }
 
     fun setItems(apps: List<HomeApp>) {
@@ -81,6 +84,7 @@ class CustomAppsAdapter(private val listener: OnAppsUpdatedListener) : RecyclerV
     inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
         val dragHandle: ImageView = itemView.findViewById(R.id.ca_list_item_drag_handle)
         val appName: TextView = itemView.findViewById(R.id.ca_list_item_app_name)
+        val menuIcon: ImageView = itemView.findViewById(R.id.ca_list_item_more_icon)
 
         override fun toString(): String {
             return super.toString() + " '${appName.text}'"

+ 1 - 1
app/src/main/java/com/sduduzog/slimlauncher/data/AppDao.kt

@@ -32,6 +32,6 @@ interface AppDao {
     fun clearHomeApps()
 
     @Delete
-    fun deleteHomeApp(app: HomeApp)
+    fun remove(vararg app: HomeApp)
 
 }

+ 11 - 0
app/src/main/java/com/sduduzog/slimlauncher/data/AppRepository.kt

@@ -21,6 +21,9 @@ class AppRepository(application: Application) {
         UpdateAppAsyncTask(appDao).execute(*list)
     }
 
+    fun remove(app: HomeApp){
+        RemoveAppAsyncTask(appDao).execute(app)
+    }
 
     private class AddAppAsyncTask(private val mAsyncTaskDao: AppDao) : AsyncTask<HomeApp, Void, Void>() {
 
@@ -37,4 +40,12 @@ class AppRepository(application: Application) {
             return null
         }
     }
+
+     private class RemoveAppAsyncTask(private val mAsyncTaskDao: AppDao) : AsyncTask<HomeApp, Void, Void>() {
+
+        override fun doInBackground(vararg params: HomeApp): Void? {
+            mAsyncTaskDao.remove(*params)
+            return null
+        }
+    }
 }

+ 1 - 1
app/src/main/java/com/sduduzog/slimlauncher/data/DataRepository.kt

@@ -77,7 +77,7 @@ class DataRepository(application: Application) {
     private class DeleteHomeAppAsyncTask internal constructor(private val mAsyncTaskDao: AppDao) : AsyncTask<HomeApp, Void, Void>() {
 
         override fun doInBackground(vararg params: HomeApp): Void? {
-            mAsyncTaskDao.deleteHomeApp(params[0])
+            mAsyncTaskDao.remove(params[0])
             return null
         }
     }

+ 4 - 1
app/src/main/java/com/sduduzog/slimlauncher/data/MainViewModel.kt

@@ -26,7 +26,10 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
     }
 
     fun update(vararg args: HomeApp){
-
         _appRepository.update(*args)
     }
+
+    fun remove(app: HomeApp){
+        _appRepository.remove(app)
+    }
 }

+ 25 - 3
app/src/main/java/com/sduduzog/slimlauncher/ui/options/CustomiseAppsFragment.kt

@@ -3,6 +3,7 @@ package com.sduduzog.slimlauncher.ui.options
 import android.graphics.Canvas
 import android.os.Bundle
 import android.view.LayoutInflater
+import android.view.MenuItem
 import android.view.View
 import android.view.ViewGroup
 import androidx.lifecycle.Observer
@@ -10,16 +11,18 @@ import androidx.lifecycle.ViewModelProviders
 import androidx.navigation.Navigation
 import androidx.recyclerview.widget.ItemTouchHelper
 import androidx.recyclerview.widget.RecyclerView
-import com.sduduzog.slimlauncher.R
 import com.sduduzog.slimlauncher.adapters.CustomAppsAdapter
 import com.sduduzog.slimlauncher.data.HomeApp
 import com.sduduzog.slimlauncher.data.MainViewModel
 import com.sduduzog.slimlauncher.ui.BaseFragment
-import com.sduduzog.slimlauncher.utils.OnAppsUpdatedListener
+import com.sduduzog.slimlauncher.utils.OnShitDoneToAppsListener
 import com.sduduzog.slimlauncher.utils.OnItemActionListener
 import kotlinx.android.synthetic.main.customise_apps_fragment.*
+import androidx.appcompat.widget.PopupMenu
+import com.sduduzog.slimlauncher.R
+
 
-class CustomiseAppsFragment : BaseFragment(), OnAppsUpdatedListener {
+class CustomiseAppsFragment : BaseFragment(), OnShitDoneToAppsListener {
 
     override fun getFragmentView(): View = customise_apps_fragment as View
 
@@ -91,7 +94,26 @@ class CustomiseAppsFragment : BaseFragment(), OnAppsUpdatedListener {
         customise_apps_fragment_add.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_customiseAppsFragment_to_addAppFragment))
     }
 
+    private fun showPopupMenu(view: View): PopupMenu {
+        val popup = PopupMenu(context!!, view)
+        popup.menuInflater.inflate(R.menu.customise_apps_popup_menu, popup.menu)
+        popup.show()
+        return popup
+    }
+
     override fun onAppsUpdated(list: List<HomeApp>) {
         viewModel.update(*list.toTypedArray())
     }
+
+    override fun onAppMenuClicked(view: View, app: HomeApp) {
+        showPopupMenu(view).setOnMenuItemClickListener {
+            when (it.itemId){
+                R.id.ca_menu_rename -> {}
+                R.id.ca_menu_remove -> {
+                    viewModel.remove(app)
+                }
+            }
+            true
+        }
+    }
 }

+ 3 - 1
app/src/main/java/com/sduduzog/slimlauncher/utils/OnAppsUpdatedListener.kt → app/src/main/java/com/sduduzog/slimlauncher/utils/OnShitDoneToAppsListener.kt

@@ -1,7 +1,9 @@
 package com.sduduzog.slimlauncher.utils
 
+import android.view.View
 import com.sduduzog.slimlauncher.data.HomeApp
 
-interface OnAppsUpdatedListener {
+interface OnShitDoneToAppsListener {
     fun onAppsUpdated(list: List<HomeApp>)
+    fun onAppMenuClicked(view: View, app: HomeApp)
 }

+ 3 - 0
app/src/main/res/layout/customise_apps_fragment_list_item.xml

@@ -25,6 +25,9 @@
         android:layout_height="wrap_content"
         android:layout_marginStart="8dp"
         android:layout_marginLeft="8dp"
+        android:ellipsize="end"
+        android:maxLines="1"
+        android:singleLine="true"
         android:textAppearance="@style/TextAppearance.AppCompat"
         android:textSize="@dimen/_24ssp"
         app:layout_constraintBottom_toBottomOf="parent"