mirror of
https://github.com/SimpleMobileTools/Simple-App-Launcher.git
synced 2025-05-31 19:09:21 +02:00
fixing launcher deletion
This commit is contained in:
parent
f5ddb72a6f
commit
1dfd1c5673
@ -17,6 +17,7 @@ import com.simplemobiletools.applauncher.extensions.dbHelper
|
|||||||
import com.simplemobiletools.applauncher.extensions.getLauncherDrawable
|
import com.simplemobiletools.applauncher.extensions.getLauncherDrawable
|
||||||
import com.simplemobiletools.applauncher.extensions.isAPredefinedApp
|
import com.simplemobiletools.applauncher.extensions.isAPredefinedApp
|
||||||
import com.simplemobiletools.applauncher.models.AppLauncher
|
import com.simplemobiletools.applauncher.models.AppLauncher
|
||||||
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
import com.simplemobiletools.commons.extensions.applyColorFilter
|
import com.simplemobiletools.commons.extensions.applyColorFilter
|
||||||
import com.simplemobiletools.commons.extensions.beGone
|
import com.simplemobiletools.commons.extensions.beGone
|
||||||
import com.simplemobiletools.commons.extensions.beVisibleIf
|
import com.simplemobiletools.commons.extensions.beVisibleIf
|
||||||
@ -24,7 +25,7 @@ import com.simplemobiletools.commons.interfaces.MyAdapterListener
|
|||||||
import kotlinx.android.synthetic.main.app_launcher_item.view.*
|
import kotlinx.android.synthetic.main.app_launcher_item.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class RecyclerAdapter(val activity: SimpleActivity, val launchers: List<AppLauncher>, val listener: AppLaunchersListener?, val itemClick: (AppLauncher) -> Unit) :
|
class RecyclerAdapter(val activity: SimpleActivity, val launchers: MutableList<AppLauncher>, val listener: AppLaunchersListener?, val itemClick: (AppLauncher) -> Unit) :
|
||||||
RecyclerView.Adapter<RecyclerAdapter.ViewHolder>() {
|
RecyclerView.Adapter<RecyclerAdapter.ViewHolder>() {
|
||||||
|
|
||||||
private val config = activity.config
|
private val config = activity.config
|
||||||
@ -75,7 +76,7 @@ class RecyclerAdapter(val activity: SimpleActivity, val launchers: List<AppLaunc
|
|||||||
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem): Boolean {
|
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.cab_edit -> showEditDialog()
|
R.id.cab_edit -> showEditDialog()
|
||||||
R.id.cab_delete -> deleteSelectedItems()
|
R.id.cab_delete -> askConfirmDelete()
|
||||||
else -> return false
|
else -> return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
@ -121,32 +122,33 @@ class RecyclerAdapter(val activity: SimpleActivity, val launchers: List<AppLaunc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteSelectedItems() {
|
private fun askConfirmDelete() {
|
||||||
val positions = multiSelector.selectedPositions
|
ConfirmationDialog(activity) {
|
||||||
val deleteIds = ArrayList<String>(positions.size)
|
deleteItems()
|
||||||
val deletedLaunchers = ArrayList<AppLauncher>(positions.size)
|
|
||||||
for (i in positions) {
|
|
||||||
val launcher = launchers[i]
|
|
||||||
deleteIds.add(launcher.id.toString())
|
|
||||||
|
|
||||||
launcher.name = getRealAppName(launcher)
|
|
||||||
if (launcher.name.isNotEmpty()) {
|
|
||||||
deletedLaunchers.add(launcher)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
activity.dbHelper.deleteLaunchers(deleteIds)
|
|
||||||
actMode?.finish()
|
|
||||||
listener?.refreshLaunchers()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getRealAppName(launcher: AppLauncher): String {
|
private fun deleteItems() {
|
||||||
return try {
|
val deleteIds = ArrayList<String>(selectedPositions.size)
|
||||||
val applicationInfo = activity.packageManager.getApplicationInfo(launcher.packageName, 0)
|
val removeLaunchers = ArrayList<AppLauncher>(selectedPositions.size)
|
||||||
activity.packageManager.getApplicationLabel(applicationInfo).toString()
|
selectedPositions.sortedDescending().forEach {
|
||||||
} catch (e: PackageManager.NameNotFoundException) {
|
val launcher = launchers[it]
|
||||||
""
|
deleteIds.add(launcher.id.toString())
|
||||||
|
removeLaunchers.add(launcher)
|
||||||
|
notifyItemRemoved(it)
|
||||||
|
itemViews.put(it, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
launchers.removeAll(removeLaunchers)
|
||||||
|
activity.dbHelper.deleteLaunchers(deleteIds)
|
||||||
|
|
||||||
|
val newItems = SparseArray<View>()
|
||||||
|
(0 until itemViews.size())
|
||||||
|
.filter { itemViews[it] != null }
|
||||||
|
.forEachIndexed { curIndex, i -> newItems.put(curIndex, itemViews[i]) }
|
||||||
|
|
||||||
|
itemViews = newItems
|
||||||
|
actMode?.finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
class ViewHolder(view: View, val adapterListener: MyAdapterListener, val activity: SimpleActivity, val multiSelectorCallback: ModalMultiSelectorCallback,
|
class ViewHolder(view: View, val adapterListener: MyAdapterListener, val activity: SimpleActivity, val multiSelectorCallback: ModalMultiSelectorCallback,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user