mirror of
https://github.com/He4eT/yamf_launcher.git
synced 2026-05-04 17:37:25 +00:00
Made the context menu customizable
This commit is contained in:
parent
85a5717140
commit
bafd446229
12 changed files with 260 additions and 56 deletions
|
|
@ -52,4 +52,5 @@ dependencies {
|
|||
implementation("androidx.preference:preference-ktx:1.2.1")
|
||||
implementation("androidx.activity:activity-ktx:1.9.3")
|
||||
implementation("androidx.constraintlayout:constraintlayout:2.2.0")
|
||||
implementation("androidx.preference:preference:1.2.1")
|
||||
}
|
||||
|
|
@ -38,76 +38,134 @@ class AppActionMenu(private val activity: MainActivity, private val binding: Act
|
|||
userHandle: UserHandle,
|
||||
workProfile: Int
|
||||
){
|
||||
ViewCompat.addAccessibilityAction(textView, activity.getString(R.string.accessibility_info)) { _, _ ->
|
||||
val pinButton = actionMenu.findViewById<TextView>(R.id.pin)
|
||||
val infoButton = actionMenu.findViewById<TextView>(R.id.info)
|
||||
val uninstallButton = actionMenu.findViewById<TextView>(R.id.uninstall)
|
||||
val renameButton = actionMenu.findViewById<TextView>(R.id.rename)
|
||||
val hideButton = actionMenu.findViewById<TextView>(R.id.hide)
|
||||
val closeButton = actionMenu.findViewById<TextView>(R.id.close)
|
||||
|
||||
val enablePin = sharedPreferenceManager.isPinEnabled()
|
||||
val enableInfo = sharedPreferenceManager.isInfoEnabled()
|
||||
val enableUninstall = sharedPreferenceManager.isUninstallEnabled()
|
||||
val enableRename = sharedPreferenceManager.isRenameEnabled()
|
||||
val enableHide = sharedPreferenceManager.isHideEnabled()
|
||||
val enableClose = sharedPreferenceManager.isCloseEnabled()
|
||||
|
||||
if (enablePin) {
|
||||
pinButton.visibility = View.VISIBLE
|
||||
setPinState(pinButton, appActivity, workProfile)
|
||||
|
||||
ViewCompat.addAccessibilityAction(
|
||||
textView,
|
||||
activity.getString(R.string.accessibility_pin)
|
||||
) { _, _ ->
|
||||
pinApp(appActivity, workProfile)
|
||||
true
|
||||
}
|
||||
|
||||
pinButton.setOnClickListener {
|
||||
pinApp(appActivity, workProfile)
|
||||
animations.fadeViewOut(actionMenu)
|
||||
textView.visibility = View.VISIBLE
|
||||
}
|
||||
} else {pinButton.visibility = View.GONE}
|
||||
|
||||
if (enableInfo) {
|
||||
infoButton.visibility = View.VISIBLE
|
||||
|
||||
ViewCompat.addAccessibilityAction(
|
||||
textView,
|
||||
activity.getString(R.string.accessibility_info)
|
||||
) { _, _ ->
|
||||
appInfo(appActivity, userHandle)
|
||||
true
|
||||
}
|
||||
|
||||
infoButton.setOnClickListener {
|
||||
appInfo(appActivity, userHandle)
|
||||
animations.fadeViewOut(actionMenu)
|
||||
textView.visibility = View.VISIBLE
|
||||
}
|
||||
} else {infoButton.visibility = View.GONE}
|
||||
|
||||
if (enableUninstall) {
|
||||
if (appActivity.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM == 0) {
|
||||
uninstallButton.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
ViewCompat.addAccessibilityAction(
|
||||
textView,
|
||||
activity.getString(R.string.accessibility_uninstall)
|
||||
) { _, _ ->
|
||||
uninstallApp(appActivity.applicationInfo, userHandle)
|
||||
true
|
||||
}
|
||||
|
||||
uninstallButton.setOnClickListener {
|
||||
uninstallApp(appActivity.applicationInfo, userHandle)
|
||||
animations.fadeViewOut(actionMenu)
|
||||
textView.visibility = View.VISIBLE
|
||||
}
|
||||
} else {uninstallButton.visibility = View.GONE}
|
||||
|
||||
if (enableRename) {
|
||||
renameButton.visibility = View.VISIBLE
|
||||
|
||||
ViewCompat.addAccessibilityAction(
|
||||
textView,
|
||||
activity.getString(R.string.accessibility_rename)
|
||||
) { _, _ ->
|
||||
renameApp(textView, editLayout, actionMenu, appActivity, userHandle, workProfile)
|
||||
true
|
||||
}
|
||||
|
||||
renameButton.setOnClickListener {
|
||||
renameApp(textView, editLayout, actionMenu, appActivity, userHandle, workProfile)
|
||||
}
|
||||
} else {renameButton.visibility = View.GONE}
|
||||
|
||||
if (enableHide) {
|
||||
hideButton.visibility = View.VISIBLE
|
||||
|
||||
ViewCompat.addAccessibilityAction(
|
||||
textView,
|
||||
activity.getString(R.string.accessibility_hide)
|
||||
) { _, _ ->
|
||||
hideApp(editLayout, textView, actionMenu, appActivity, workProfile)
|
||||
true
|
||||
}
|
||||
|
||||
hideButton.setOnClickListener {
|
||||
hideApp(editLayout, textView, actionMenu, appActivity, workProfile)
|
||||
}
|
||||
} else {hideButton.visibility = View.GONE}
|
||||
|
||||
if (enableClose) {
|
||||
closeButton.visibility = View.VISIBLE
|
||||
|
||||
closeButton.setOnClickListener {
|
||||
animations.fadeViewOut(actionMenu)
|
||||
textView.visibility = View.VISIBLE
|
||||
}
|
||||
} else {closeButton.visibility = View.GONE}
|
||||
}
|
||||
|
||||
private fun setPinState(button: TextView, appActivity: LauncherActivityInfo, workProfile: Int) {
|
||||
val isPinned = sharedPreferenceManager.isAppPinned(appActivity.componentName.flattenToString(), workProfile)
|
||||
val topDrawable = when (isPinned) {
|
||||
true -> getDrawable(activity, R.drawable.keep_off_24px)
|
||||
false -> getDrawable(activity,R.drawable.keep_24px)
|
||||
}
|
||||
|
||||
actionMenu.findViewById<TextView>(R.id.pin).setCompoundDrawablesWithIntrinsicBounds(null, topDrawable, null, null)
|
||||
button.setCompoundDrawablesWithIntrinsicBounds(null, topDrawable, null, null)
|
||||
|
||||
val pinLabel = when (isPinned) {
|
||||
true -> "Unpin"
|
||||
false -> "Pin"
|
||||
}
|
||||
|
||||
actionMenu.findViewById<TextView>(R.id.pin).text = pinLabel
|
||||
|
||||
actionMenu.findViewById<TextView>(R.id.pin).setOnClickListener {
|
||||
pinApp(appActivity, workProfile)
|
||||
animations.fadeViewOut(actionMenu)
|
||||
textView.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
ViewCompat.addAccessibilityAction(textView, activity.getString(R.string.accessibility_info)) { _, _ ->
|
||||
appInfo(appActivity, userHandle)
|
||||
true
|
||||
}
|
||||
|
||||
actionMenu.findViewById<TextView>(R.id.info).setOnClickListener {
|
||||
appInfo(appActivity, userHandle)
|
||||
animations.fadeViewOut(actionMenu)
|
||||
textView.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
ViewCompat.addAccessibilityAction(textView, activity.getString(R.string.accessibility_uninstall)) { _, _ ->
|
||||
uninstallApp(appActivity.applicationInfo, userHandle)
|
||||
true
|
||||
}
|
||||
|
||||
actionMenu.findViewById<TextView>(R.id.uninstall).setOnClickListener {
|
||||
uninstallApp(appActivity.applicationInfo, userHandle)
|
||||
animations.fadeViewOut(actionMenu)
|
||||
textView.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
ViewCompat.addAccessibilityAction(textView, activity.getString(R.string.accessibility_rename)) { _, _ ->
|
||||
renameApp(textView, editLayout, actionMenu, appActivity, userHandle, workProfile)
|
||||
true
|
||||
}
|
||||
|
||||
actionMenu.findViewById<TextView>(R.id.rename).setOnClickListener {
|
||||
renameApp(textView, editLayout, actionMenu, appActivity, userHandle, workProfile)
|
||||
}
|
||||
|
||||
ViewCompat.addAccessibilityAction(textView, activity.getString(R.string.accessibility_hide)) { _, _ ->
|
||||
hideApp(editLayout, textView, actionMenu, appActivity, workProfile)
|
||||
true
|
||||
}
|
||||
|
||||
actionMenu.findViewById<TextView>(R.id.hide).setOnClickListener {
|
||||
hideApp(editLayout, textView, actionMenu, appActivity, workProfile)
|
||||
}
|
||||
|
||||
actionMenu.findViewById<TextView>(R.id.close).setOnClickListener {
|
||||
animations.fadeViewOut(actionMenu)
|
||||
textView.visibility = View.VISIBLE
|
||||
}
|
||||
button.text = pinLabel
|
||||
}
|
||||
|
||||
private fun pinApp(appActivity: LauncherActivityInfo, workProfile: Int) {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import androidx.preference.PreferenceFragmentCompat
|
|||
import androidx.preference.SwitchPreference
|
||||
import eu.ottop.yamlauncher.R
|
||||
import eu.ottop.yamlauncher.utils.PermissionUtils
|
||||
import eu.ottop.yamlauncher.utils.UIUtils
|
||||
|
||||
class AppMenuSettingsFragment : PreferenceFragmentCompat(), TitleProvider { private val permissionUtils = PermissionUtils()
|
||||
private var contactPref: SwitchPreference? = null
|
||||
|
|
@ -15,6 +16,10 @@ class AppMenuSettingsFragment : PreferenceFragmentCompat(), TitleProvider { priv
|
|||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.app_menu_preferences, rootKey)
|
||||
|
||||
val uiUtils = UIUtils(requireContext())
|
||||
val contextMenuSettings = findPreference<Preference>("contextMenuSettings")
|
||||
|
||||
contactPref = findPreference("contactsEnabled")
|
||||
webSearchPref = findPreference("webSearchEnabled")
|
||||
autoLaunchPref = findPreference("autoLaunch")
|
||||
|
|
@ -41,6 +46,11 @@ class AppMenuSettingsFragment : PreferenceFragmentCompat(), TitleProvider { priv
|
|||
return@OnPreferenceChangeListener true
|
||||
}
|
||||
}
|
||||
|
||||
contextMenuSettings?.onPreferenceClickListener =
|
||||
Preference.OnPreferenceClickListener {
|
||||
uiUtils.switchFragment(requireActivity(), ContextMenuSettingsFragment())
|
||||
true }
|
||||
}
|
||||
|
||||
override fun getTitle(): String {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
package eu.ottop.yamlauncher.settings
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import eu.ottop.yamlauncher.R
|
||||
|
||||
class ContextMenuSettingsFragment : PreferenceFragmentCompat(), TitleProvider {
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.context_menu_preferences, rootKey)
|
||||
}
|
||||
|
||||
override fun getTitle(): String {
|
||||
return getString(R.string.context_menu_settings_title)
|
||||
}
|
||||
}
|
||||
|
|
@ -243,6 +243,30 @@ class SharedPreferenceManager (private val context: Context) {
|
|||
return preferences.getString("appMenuSize", "medium")
|
||||
}
|
||||
|
||||
fun isPinEnabled(): Boolean {
|
||||
return preferences.getBoolean("pinEnabled", true)
|
||||
}
|
||||
|
||||
fun isInfoEnabled(): Boolean {
|
||||
return preferences.getBoolean("infoEnabled", false)
|
||||
}
|
||||
|
||||
fun isUninstallEnabled(): Boolean {
|
||||
return preferences.getBoolean("uninstallEnabled", true)
|
||||
}
|
||||
|
||||
fun isRenameEnabled(): Boolean {
|
||||
return preferences.getBoolean("renameEnabled", true)
|
||||
}
|
||||
|
||||
fun isHideEnabled(): Boolean {
|
||||
return preferences.getBoolean("hideEnabled", true)
|
||||
}
|
||||
|
||||
fun isCloseEnabled(): Boolean {
|
||||
return preferences.getBoolean("closeEnabled", true)
|
||||
}
|
||||
|
||||
fun isSearchEnabled(): Boolean {
|
||||
return preferences.getBoolean("searchEnabled", true)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
<string name="rename">Umbenennen</string>
|
||||
<string name="hide">Verstecken</string>
|
||||
<string name="close">Schließen</string>
|
||||
<string name="accessibility_pin">Pin app</string>
|
||||
<string name="accessibility_info">App-Info</string>
|
||||
<string name="accessibility_uninstall">App deinstallieren</string>
|
||||
<string name="accessibility_rename">App umbenennen</string>
|
||||
|
|
@ -125,6 +126,17 @@
|
|||
<string name="permission_denied">Berechtigung verweigert</string>
|
||||
<string name="internet_search">Web Search Button</string>
|
||||
|
||||
<string name="context_menu_settings_title">Context Menu Settings</string>
|
||||
<string name="context_menu_settings_text">Context Menu</string>
|
||||
<string name="context_menu_settings_summary">Enable/disable context menu items</string>
|
||||
|
||||
<string name="enable_pin">Pin App</string>
|
||||
<string name="enable_info">App Info</string>
|
||||
<string name="enable_uninstall">Uninstall App</string>
|
||||
<string name="enable_rename">Rename App</string>
|
||||
<string name="enable_hide">Hide App</string>
|
||||
<string name="enable_close">Close Menu</string>
|
||||
|
||||
<string name="search_text">Suche</string>
|
||||
<string name="enable_search">Suche aktivieren</string>
|
||||
<string name="search_alignment">Ausrichtung der Suche</string>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
<string name="rename">Nimeä</string>
|
||||
<string name="hide">Piilota</string>
|
||||
<string name="close">Sulje</string>
|
||||
<string name="accessibility_pin">Pin app</string>
|
||||
<string name="accessibility_info">Sovellustiedot</string>
|
||||
<string name="accessibility_uninstall">Poista sovellus</string>
|
||||
<string name="accessibility_rename">Uudelleen-nimeä sovellus</string>
|
||||
|
|
@ -123,6 +124,17 @@
|
|||
<string name="permission_denied">Tarvittavat Luvat Kielletty</string>
|
||||
<string name="internet_search">Verkkohaku Nappi</string>
|
||||
|
||||
<string name="context_menu_settings_title">Context Menu Settings</string>
|
||||
<string name="context_menu_settings_text">Context Menu</string>
|
||||
<string name="context_menu_settings_summary">Enable/disable context menu items</string>
|
||||
|
||||
<string name="enable_pin">Pin App</string>
|
||||
<string name="enable_info">App Info</string>
|
||||
<string name="enable_uninstall">Uninstall App</string>
|
||||
<string name="enable_rename">Rename App</string>
|
||||
<string name="enable_hide">Hide App</string>
|
||||
<string name="enable_close">Close Menu</string>
|
||||
|
||||
<string name="search_text">Hakupalkki</string>
|
||||
<string name="enable_search">Näytä Hakupalkki</string>
|
||||
<string name="search_alignment">Hakupalkin Sijainti</string>
|
||||
|
|
|
|||
|
|
@ -81,4 +81,14 @@
|
|||
<item>Extra Large</item>
|
||||
<item>Huge</item>
|
||||
</string-array>
|
||||
<!-- Reply Preference -->
|
||||
<string-array name="reply_entries">
|
||||
<item>Reply</item>
|
||||
<item>Reply to all</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="reply_values">
|
||||
<item>reply</item>
|
||||
<item>reply_all</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
|
|
@ -42,6 +42,7 @@
|
|||
<string name="rename">Rename</string>
|
||||
<string name="hide">Hide</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="accessibility_pin">Pin app</string>
|
||||
<string name="accessibility_info">App info</string>
|
||||
<string name="accessibility_uninstall">Uninstall app</string>
|
||||
<string name="accessibility_rename">Rename app</string>
|
||||
|
|
@ -125,6 +126,17 @@
|
|||
<string name="permission_denied">Permission Denied</string>
|
||||
<string name="internet_search">Web Search Button</string>
|
||||
|
||||
<string name="context_menu_settings_title">Context Menu Settings</string>
|
||||
<string name="context_menu_settings_text">Context Menu</string>
|
||||
<string name="context_menu_settings_summary">Enable/disable context menu items</string>
|
||||
|
||||
<string name="enable_pin">Pin App</string>
|
||||
<string name="enable_info">App Info</string>
|
||||
<string name="enable_uninstall">Uninstall App</string>
|
||||
<string name="enable_rename">Rename App</string>
|
||||
<string name="enable_hide">Hide App</string>
|
||||
<string name="enable_close">Close Menu</string>
|
||||
|
||||
<string name="search_text">Search</string>
|
||||
<string name="enable_search">Enable Search</string>
|
||||
<string name="search_alignment">Search Alignment</string>
|
||||
|
|
@ -183,5 +195,4 @@
|
|||
<!--Double tap to lock-->
|
||||
<string name="screenlock_confirmation">To lock with double tap, enable YAM Launcher in accessibility settings.</string>
|
||||
<string name="accessibility_service_description">The permission is required for double tap to work for locking the screen.\n\nIt is only needed if you want to use the double tap to lock screen feature in YAM Launcher.</string>
|
||||
|
||||
</resources>
|
||||
|
|
@ -46,6 +46,14 @@
|
|||
app:dependency="searchEnabled"
|
||||
app:key="webSearchEnabled" />
|
||||
|
||||
<Preference
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:key="contextMenuSettings"
|
||||
app:selectable="true"
|
||||
app:summary="@string/context_menu_settings_summary"
|
||||
app:title="@string/context_menu_settings_text" />
|
||||
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
app:allowDividerAbove="false"
|
||||
|
|
|
|||
42
app/src/main/res/xml/context_menu_preferences.xml
Normal file
42
app/src/main/res/xml/context_menu_preferences.xml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<SwitchPreference
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:defaultValue="true"
|
||||
android:title="@string/enable_pin"
|
||||
app:key="pinEnabled" />
|
||||
<SwitchPreference
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:defaultValue="false"
|
||||
android:title="@string/enable_info"
|
||||
app:key="infoEnabled" />
|
||||
<SwitchPreference
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:defaultValue="true"
|
||||
android:title="@string/enable_uninstall"
|
||||
app:key="uninstallEnabled" />
|
||||
<SwitchPreference
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:defaultValue="true"
|
||||
android:title="@string/enable_rename"
|
||||
app:key="renameEnabled" />
|
||||
<SwitchPreference
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:defaultValue="true"
|
||||
android:title="@string/enable_hide"
|
||||
app:key="hideEnabled" />
|
||||
<SwitchPreference
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:defaultValue="true"
|
||||
android:title="@string/enable_close"
|
||||
app:key="closeEnabled" />
|
||||
|
||||
</PreferenceScreen>
|
||||
Loading…
Add table
Add a link
Reference in a new issue