diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt
index 50d8cc8..efc0a0e 100644
--- a/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt
@@ -177,7 +177,7 @@ class MainActivity : SimpleActivity(), FlingListener {
if (!launchers.map { it.packageName }.contains(packageName)) {
hasDeletedAnything = true
launchersDB.deleteApp(packageName)
- homeScreenGridItemsDB.deleteItem(packageName)
+ homeScreenGridItemsDB.deleteByPackageName(packageName)
}
}
@@ -235,7 +235,7 @@ class MainActivity : SimpleActivity(), FlingListener {
main_holder.performHapticFeedback()
val clickedGridItem = home_screen_grid.isClickingGridItem(getGridTouchedX(x), getGridTouchedY(y))
if (clickedGridItem != null) {
- showHomeIconMenu(x, y - resources.getDimension(R.dimen.icon_long_press_anchor_offset_y), clickedGridItem)
+ showHomeIconMenu(x, y - resources.getDimension(R.dimen.icon_long_press_anchor_offset_y), clickedGridItem, false)
return
}
@@ -251,15 +251,15 @@ class MainActivity : SimpleActivity(), FlingListener {
}
}
- private fun getGridTouchedX(x: Float) = Math.min(Math.max(x.toInt() - home_screen_grid.marginLeft, 0), home_screen_grid.width).toInt()
+ private fun getGridTouchedX(x: Float) = Math.min(Math.max(x.toInt() - home_screen_grid.marginLeft, 0), home_screen_grid.width)
- private fun getGridTouchedY(y: Float) = Math.min(Math.max(y.toInt() - home_screen_grid.marginTop, 0), home_screen_grid.height).toInt()
+ private fun getGridTouchedY(y: Float) = Math.min(Math.max(y.toInt() - home_screen_grid.marginTop, 0), home_screen_grid.height)
- fun showHomeIconMenu(x: Float, y: Float, gridItem: HomeScreenGridItem) {
+ fun showHomeIconMenu(x: Float, y: Float, gridItem: HomeScreenGridItem, isOnAllAppsFragment: Boolean) {
mLongPressedIcon = gridItem
home_screen_popup_menu_anchor.x = x
home_screen_popup_menu_anchor.y = y
- mOpenPopupMenu = handleGridItemPopupMenu(home_screen_popup_menu_anchor, gridItem.packageName)
+ mOpenPopupMenu = handleGridItemPopupMenu(home_screen_popup_menu_anchor, gridItem, isOnAllAppsFragment)
}
private fun showMainLongPressMenu(x: Float, y: Float) {
@@ -278,15 +278,17 @@ class MainActivity : SimpleActivity(), FlingListener {
}
}
- private fun handleGridItemPopupMenu(anchorView: View, appPackageName: String): PopupMenu {
+ private fun handleGridItemPopupMenu(anchorView: View, gridItem: HomeScreenGridItem, isOnAllAppsFragment: Boolean): PopupMenu {
val contextTheme = ContextThemeWrapper(this, getPopupMenuTheme())
return PopupMenu(contextTheme, anchorView, Gravity.TOP or Gravity.END).apply {
inflate(R.menu.menu_app_icon)
+ menu.findItem(R.id.remove).isVisible = !isOnAllAppsFragment
setOnMenuItemClickListener { item ->
(all_apps_fragment as AllAppsFragment).ignoreTouches = false
when (item.itemId) {
- R.id.app_info -> launchAppInfo(appPackageName)
- R.id.uninstall -> uninstallApp(appPackageName)
+ R.id.app_info -> launchAppInfo(gridItem.packageName)
+ R.id.remove -> home_screen_grid.removeAppIcon(gridItem.id!!)
+ R.id.uninstall -> uninstallApp(gridItem.packageName)
}
true
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/fragments/AllAppsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/fragments/AllAppsFragment.kt
index e0dfdf4..9f9a89c 100644
--- a/app/src/main/kotlin/com/simplemobiletools/launcher/fragments/AllAppsFragment.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/launcher/fragments/AllAppsFragment.kt
@@ -128,7 +128,7 @@ class AllAppsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
override fun onAppLauncherLongPressed(x: Float, y: Float, appLauncher: AppLauncher) {
val gridItem = HomeScreenGridItem(null, -1, -1, -1, 1, appLauncher.packageName, appLauncher.title)
- activity?.showHomeIconMenu(x, y, gridItem)
+ activity?.showHomeIconMenu(x, y, gridItem, true)
ignoreTouches = true
}
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/interfaces/HomeScreenGridItemsDao.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/interfaces/HomeScreenGridItemsDao.kt
index 51b86c7..a10911f 100644
--- a/app/src/main/kotlin/com/simplemobiletools/launcher/interfaces/HomeScreenGridItemsDao.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/launcher/interfaces/HomeScreenGridItemsDao.kt
@@ -23,6 +23,9 @@ interface HomeScreenGridItemsDao {
@Query("UPDATE home_screen_grid_items SET `left` = :left, `top` = :top, `right` = :right, `bottom` = :bottom WHERE id = :id")
fun updateAppPosition(left: Int, top: Int, right: Int, bottom: Int, id: Long)
+ @Query("DELETE FROM home_screen_grid_items WHERE id = :id")
+ fun deleteById(id: Long)
+
@Query("DELETE FROM home_screen_grid_items WHERE package_name = :packageName")
- fun deleteItem(packageName: String)
+ fun deleteByPackageName(packageName: String)
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt
index 09a2ad8..cc35c5b 100644
--- a/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt
@@ -64,6 +64,14 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Vie
}
}
+ fun removeAppIcon(iconId: Long) {
+ ensureBackgroundThread {
+ context.homeScreenGridItemsDB.deleteById(iconId)
+ gridItems.removeIf { it.id == iconId }
+ invalidate()
+ }
+ }
+
fun itemDraggingStarted(draggedGridItem: HomeScreenGridItem) {
draggedItem = draggedGridItem
invalidate()
diff --git a/app/src/main/res/menu/menu_app_icon.xml b/app/src/main/res/menu/menu_app_icon.xml
index b6822bd..732a8d7 100644
--- a/app/src/main/res/menu/menu_app_icon.xml
+++ b/app/src/main/res/menu/menu_app_icon.xml
@@ -6,6 +6,11 @@
android:icon="@drawable/ic_info_vector"
android:title="@string/app_info"
app:showAsAction="always" />
+
-
55dp
- 100dp
+ 150dp
50dp
140dp
10dp