show a popup menu at long pressing the home screen

This commit is contained in:
tibbi
2022-08-22 23:09:42 +02:00
parent 37dedae951
commit f6f81212db
4 changed files with 49 additions and 4 deletions

View File

@ -4,13 +4,14 @@ import android.animation.ObjectAnimator
import android.content.res.Configuration
import android.graphics.Color
import android.os.Bundle
import android.view.ContextThemeWrapper
import android.view.GestureDetector
import android.view.Gravity
import android.view.MotionEvent
import android.view.animation.DecelerateInterpolator
import android.widget.PopupMenu
import androidx.core.view.GestureDetectorCompat
import com.simplemobiletools.commons.extensions.appLaunched
import com.simplemobiletools.commons.extensions.beVisible
import com.simplemobiletools.commons.extensions.realScreenSize
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.launcher.BuildConfig
import com.simplemobiletools.launcher.R
import com.simplemobiletools.launcher.fragments.AllAppsFragment
@ -105,6 +106,30 @@ class MainActivity : SimpleActivity(), FlingListener {
}
}
fun homeScreenLongPressed(x: Float, y: Float) {
main_holder.performHapticFeedback()
popup_menu_anchor.x = x
popup_menu_anchor.y = y - resources.getDimension(R.dimen.long_press_anchor_offset_y)
val contextTheme = ContextThemeWrapper(this, getPopupMenuTheme())
PopupMenu(contextTheme, popup_menu_anchor, Gravity.TOP or Gravity.END).apply {
inflate(R.menu.menu_home_screen)
setOnMenuItemClickListener { item ->
when (item.itemId) {
R.id.widgets -> {
showWidgetsFragment()
}
}
true
}
show()
}
}
private fun showWidgetsFragment() {
}
private class MyGestureListener(private val flingListener: FlingListener) : GestureDetector.SimpleOnGestureListener() {
override fun onFling(event1: MotionEvent, event2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
if (velocityY > 0) {
@ -114,6 +139,10 @@ class MainActivity : SimpleActivity(), FlingListener {
}
return true
}
override fun onLongPress(event: MotionEvent) {
(flingListener as MainActivity).homeScreenLongPressed(event.x, event.y)
}
}
override fun onFlingUp() {