Added an optional web search button

This commit is contained in:
ottoptj 2024-11-20 02:48:21 +02:00
commit 5c21bdcf26
10 changed files with 103 additions and 9 deletions

View file

@ -2,6 +2,7 @@ package eu.ottop.yamlauncher
import android.Manifest
import android.annotation.SuppressLint
import android.app.SearchManager
import android.content.ActivityNotFoundException
import android.content.ContentResolver
import android.content.Context
@ -95,6 +96,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
private lateinit var appRecycler: RecyclerView
private lateinit var contactRecycler: RecyclerView
private lateinit var searchSwitcher: ImageView
private lateinit var internetSearch: ImageView
private lateinit var searchView: TextInputEditText
private var appAdapter: AppMenuAdapter? = null
private var contactAdapter: ContactsAdapter? = null
@ -191,6 +193,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
menuView = binding.menuView
searchSwitcher = binding.searchSwitcher
internetSearch = binding.internetSearch
preferences = PreferenceManager.getDefaultSharedPreferences(this)
}
@ -272,6 +275,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
appAdapter?.shortcutTextView = textView
contactAdapter?.shortcutIndex = index
contactAdapter?.shortcutTextView = textView
internetSearch.visibility = View.GONE
toAppMenu()
return true
@ -319,6 +323,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
private fun toAppMenu() {
uiUtils.setContactsVisibility(searchSwitcher, binding.searchLayout, binding.searchReplacement)
try {
// The menu opens from the top
appRecycler.scrollToPosition(0)
@ -520,6 +525,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
appAdapter?.shortcutTextView = null
contactAdapter?.shortcutTextView = null
menuTitle.visibility = View.GONE
uiUtils.setWebSearchVisibility(internetSearch)
toAppMenu()
}
@ -537,6 +543,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
uiUtils.setMenuItemColors(searchView)
uiUtils.setMenuItemColors(menuTitle, "A9")
uiUtils.setImageColor(searchSwitcher)
uiUtils.setImageColor(internetSearch)
}
"textFont" -> {
@ -561,6 +568,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
"searchEnabled" -> {
uiUtils.setSearchVisibility(searchView, binding.searchLayout, binding.searchReplacement)
uiUtils.setWebSearchVisibility(internetSearch)
}
"contactsEnabled" -> {
@ -571,6 +579,10 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
}
}
"webSearchEnabled" -> {
uiUtils.setWebSearchVisibility(internetSearch)
}
"clockAlignment" -> {
uiUtils.setClockAlignment(clock, dateText)
}
@ -790,8 +802,24 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
if (sharedPreferenceManager.areContactsEnabled()) {
setupContactRecycler()
}
setupInternetSearch()
}
}
private fun setupInternetSearch() {
uiUtils.setImageColor(internetSearch)
internetSearch.setOnClickListener {
val intent = Intent(Intent.ACTION_WEB_SEARCH).apply {
putExtra(SearchManager.QUERY, searchView.text.toString())
}
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
} else {
Toast.makeText(this@MainActivity, "No browser app found.", Toast.LENGTH_SHORT).show()
}
}
}
private suspend fun setupAppRecycler(newApps: MutableList<Triple<LauncherActivityInfo, UserHandle, Int>>) {

View file

@ -11,10 +11,15 @@ import eu.ottop.yamlauncher.utils.PermissionUtils
class AppMenuSettingsFragment : PreferenceFragmentCompat(), TitleProvider {
private val permissionUtils = PermissionUtils()
private var contactPref: SwitchPreference? = null
private var webSearchPref: SwitchPreference? = null
private var autoLaunchPref: SwitchPreference? = null
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.app_menu_preferences, rootKey)
contactPref = findPreference("contactsEnabled")
webSearchPref = findPreference("webSearchEnabled")
autoLaunchPref = findPreference("autoLaunch")
contactPref?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
if (newValue as Boolean && !permissionUtils.hasPermission(requireContext(), Manifest.permission.READ_CONTACTS)) {
@ -24,6 +29,19 @@ class AppMenuSettingsFragment : PreferenceFragmentCompat(), TitleProvider {
return@OnPreferenceChangeListener true
}
}
if (webSearchPref != null && autoLaunchPref != null) {
webSearchPref?.isEnabled = (autoLaunchPref?.isChecked == false)
autoLaunchPref?.isEnabled = (webSearchPref?.isChecked == false)
webSearchPref?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
autoLaunchPref?.isEnabled = !(newValue as Boolean)
return@OnPreferenceChangeListener true
}
autoLaunchPref?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
webSearchPref?.isEnabled = !(newValue as Boolean)
return@OnPreferenceChangeListener true
}
}
}
override fun getTitle(): String {

View file

@ -240,6 +240,10 @@ class SharedPreferenceManager (private val context: Context) {
editor.apply()
}
fun isWebSearchEnabled(): Boolean {
return preferences.getBoolean("webSearchEnabled", false) && isSearchEnabled()
}
// Hidden Apps
fun setAppHidden(packageName: String, profile: Int, hidden: Boolean) {
val editor = preferences.edit()

View file

@ -95,6 +95,8 @@ class UIUtils(private val context: Context) {
view.compoundDrawables[0]?.mutate()?.colorFilter = BlendModeColorFilter(color, BlendMode.SRC_ATOP)
view.compoundDrawables[0]?.alpha = "A9".toInt(16)
view.compoundDrawables[2]?.mutate()?.colorFilter = BlendModeColorFilter(color, BlendMode.SRC_ATOP)
view.compoundDrawables[2]?.alpha = "A9".toInt(16)
}
fun setTextFont(view: View) {
@ -196,6 +198,14 @@ class UIUtils(private val context: Context) {
}
}
fun setWebSearchVisibility(webSearchButton: View) {
if (sharedPreferenceManager.isWebSearchEnabled()) {
webSearchButton.visibility = View.VISIBLE
} else {
webSearchButton.visibility = View.GONE
}
}
private fun setSearchLayoutVisibility(searchLayout: View, replacementView: View) {
if (!sharedPreferenceManager.isSearchEnabled() && !sharedPreferenceManager.areContactsEnabled()) {
searchLayout.visibility = View.GONE

View file

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp">
<path
android:fillColor="@android:color/white"
android:pathData="M19.3,16.9c0.4,-0.7 0.7,-1.5 0.7,-2.4c0,-2.5 -2,-4.5 -4.5,-4.5S11,12 11,14.5s2,4.5 4.5,4.5c0.9,0 1.7,-0.3 2.4,-0.7l3.2,3.2l1.4,-1.4L19.3,16.9zM15.5,17c-1.4,0 -2.5,-1.1 -2.5,-2.5s1.1,-2.5 2.5,-2.5s2.5,1.1 2.5,2.5S16.9,17 15.5,17zM12,20v2C6.48,22 2,17.52 2,12C2,6.48 6.48,2 12,2c4.84,0 8.87,3.44 9.8,8h-2.07c-0.64,-2.46 -2.4,-4.47 -4.73,-5.41V5c0,1.1 -0.9,2 -2,2h-2v2c0,0.55 -0.45,1 -1,1H8v2h2v3H9l-4.79,-4.79C4.08,10.79 4,11.38 4,12C4,16.41 7.59,20 12,20z"/>
</vector>

View file

@ -25,13 +25,13 @@
android:id="@+id/menuTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:clickable="false"
android:gravity="start"
android:paddingLeft="40dp"
android:paddingTop="20dp"
android:paddingRight="40dp"
android:paddingBottom="20dp"
android:background="@android:color/transparent"
android:clickable="false"
android:gravity="start"
android:singleLine="true"
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
android:textColor="#C1F3F3F3"
@ -99,12 +99,27 @@
android:textColorHighlight="#5F33B5E5"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/searchSwitcher"
app:layout_constraintEnd_toStartOf="@+id/internetSearch"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:layout_conversion_absoluteHeight="0dp"
tools:layout_conversion_absoluteWidth="0dp" />
<ImageView
android:id="@+id/internetSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:contentDescription="@string/switch_to_contacts"
android:padding="6dp"
android:scaleType="fitCenter"
app:layout_constraintBottom_toBottomOf="@+id/searchView"
app:layout_constraintEnd_toStartOf="@+id/searchSwitcher"
app:layout_constraintTop_toTopOf="@+id/searchView"
app:srcCompat="@drawable/travel_explore_24"
tools:layout_conversion_absoluteHeight="0dp"
tools:layout_conversion_absoluteWidth="0dp" />
<ImageView
android:id="@+id/searchSwitcher"
android:layout_width="wrap_content"
@ -113,10 +128,8 @@
android:contentDescription="@string/switch_to_contacts"
android:padding="6dp"
android:scaleType="fitCenter"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/searchView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/searchView"
app:layout_constraintTop_toTopOf="@+id/searchView"
app:srcCompat="@drawable/apps_24px"
tools:layout_conversion_absoluteHeight="0dp"

View file

@ -122,6 +122,7 @@
<string name="app_spacing">Abstand zwischen Apps</string>
<string name="contacts_menu">Kontaktmenü</string>
<string name="permission_denied">Berechtigung verweigert</string>
<string name="internet_search">Web Search Button</string>
<string name="search_text">Suche</string>
<string name="enable_search">Suche aktivieren</string>

View file

@ -99,9 +99,9 @@
<string name="number_of_shortcuts">Pikakuvakkeiden Määrä</string>
<string name="horizontal_alignment">Pikakuvakkeiden Vaakasijainti</string>
<string name="vertical_alignment">Pikakuvakkeiden Pystysijainti</string>
<string name="shortcut_size">Pikakuvakkeiden koko</string>
<string name="shortcut_spacing">Pikakuvakkeiden väli</string>
<string name="lock_shortcuts">Lock Shortcuts</string>
<string name="shortcut_size">Pikakuvakkeiden Koko</string>
<string name="shortcut_spacing">Pikakuvakkeiden Väli</string>
<string name="lock_shortcuts">Lukitse Pikakuvakkeet</string>
<string name="gestures">Eleet</string>
<string name="swipe_left">Vasen Pyyhkäisy</string>
@ -120,6 +120,7 @@
<string name="app_spacing">Sovelluksien Väli</string>
<string name="contacts_menu">Yhteystiedot</string>
<string name="permission_denied">Tarvittavat Luvat Kielletty</string>
<string name="internet_search">Verkkohaku Nappi</string>
<string name="search_text">Hakupalkki</string>
<string name="enable_search">Näytä Hakupalkki</string>

View file

@ -122,6 +122,7 @@
<string name="app_spacing">App Spacing</string>
<string name="contacts_menu">Contacts Menu</string>
<string name="permission_denied">Permission Denied</string>
<string name="internet_search">Web Search Button</string>
<string name="search_text">Search</string>
<string name="enable_search">Enable Search</string>

View file

@ -38,6 +38,13 @@
android:defaultValue="false"
android:title="@string/contacts_menu"
app:key="contactsEnabled" />
<SwitchPreference
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:defaultValue="false"
android:title="@string/internet_search"
app:dependency="searchEnabled"
app:key="webSearchEnabled" />
</PreferenceCategory>
<PreferenceCategory