mirror of
https://github.com/He4eT/yamf_launcher.git
synced 2026-05-05 01:47:24 +00:00
SearchView changed to EditView. Still needs functionality and more adjustments.
This commit is contained in:
parent
e14eb149b2
commit
8963b97149
7 changed files with 90 additions and 24 deletions
|
|
@ -14,7 +14,6 @@ import android.view.inputmethod.EditorInfo
|
||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
import android.widget.EditText
|
import android.widget.EditText
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.SearchView
|
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import eu.ottop.yamlauncher.databinding.ActivityAppMenuBinding
|
import eu.ottop.yamlauncher.databinding.ActivityAppMenuBinding
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
|
@ -31,7 +30,7 @@ class AppActionMenu {
|
||||||
textView: TextView,
|
textView: TextView,
|
||||||
editLayout: LinearLayout,
|
editLayout: LinearLayout,
|
||||||
actionMenu: View,
|
actionMenu: View,
|
||||||
searchView: SearchView,
|
searchView: EditText,
|
||||||
appInfo: ApplicationInfo,
|
appInfo: ApplicationInfo,
|
||||||
userHandle: UserHandle,
|
userHandle: UserHandle,
|
||||||
workProfile: Int,
|
workProfile: Int,
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,15 @@ import android.content.pm.LauncherActivityInfo
|
||||||
import android.content.pm.LauncherApps
|
import android.content.pm.LauncherApps
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.UserHandle
|
import android.os.UserHandle
|
||||||
|
import android.text.Editable
|
||||||
|
import android.text.TextWatcher
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.ViewTreeObserver
|
|
||||||
import android.widget.EditText
|
import android.widget.EditText
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.SearchView
|
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
|
@ -32,7 +32,7 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener,
|
||||||
|
|
||||||
private lateinit var binding: ActivityAppMenuBinding
|
private lateinit var binding: ActivityAppMenuBinding
|
||||||
private lateinit var recyclerView: RecyclerView
|
private lateinit var recyclerView: RecyclerView
|
||||||
private lateinit var searchView: SearchView
|
private lateinit var searchView: EditText
|
||||||
private lateinit var adapter: AppMenuAdapter
|
private lateinit var adapter: AppMenuAdapter
|
||||||
private lateinit var shownApps: List<Pair<LauncherActivityInfo, Pair<UserHandle, Int>>>
|
private lateinit var shownApps: List<Pair<LauncherActivityInfo, Pair<UserHandle, Int>>>
|
||||||
private lateinit var job: Job
|
private lateinit var job: Job
|
||||||
|
|
@ -52,6 +52,12 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener,
|
||||||
shownApps = getInstalledApps()
|
shownApps = getInstalledApps()
|
||||||
adapter = AppMenuAdapter(shownApps, this, this)
|
adapter = AppMenuAdapter(shownApps, this, this)
|
||||||
recyclerView.adapter = adapter
|
recyclerView.adapter = adapter
|
||||||
|
|
||||||
|
binding.root.addOnLayoutChangeListener { _, _, top, _, bottom, _, oldTop, _, oldBottom ->
|
||||||
|
if (bottom - top > oldBottom - oldTop) {
|
||||||
|
searchView.clearFocus()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onItemClick(appInfo: LauncherActivityInfo, userHandle: UserHandle) {
|
override fun onItemClick(appInfo: LauncherActivityInfo, userHandle: UserHandle) {
|
||||||
|
|
@ -73,6 +79,24 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener,
|
||||||
editView: LinearLayout
|
editView: LinearLayout
|
||||||
) {
|
) {
|
||||||
// Handle the long click action here, for example, show additional options or information about the app
|
// Handle the long click action here, for example, show additional options or information about the app
|
||||||
|
editView.findViewById<EditText>(R.id.app_name_edit).addTextChangedListener(object :
|
||||||
|
TextWatcher {
|
||||||
|
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
|
||||||
|
// This method is called before the text is changed
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
|
||||||
|
// This method is called when the text is changed
|
||||||
|
// You can perform actions here based on the text changes
|
||||||
|
// For example, check if text is inserted or removed
|
||||||
|
filterItems(editView.findViewById<EditText>(R.id.app_name_edit).text.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun afterTextChanged(s: Editable?) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
textView.visibility = View.INVISIBLE
|
textView.visibility = View.INVISIBLE
|
||||||
actionMenuLayout.visibility = View.VISIBLE
|
actionMenuLayout.visibility = View.VISIBLE
|
||||||
val mainActivity = launcherApps.getActivityList(appInfo.applicationInfo.packageName, userHandle).firstOrNull()
|
val mainActivity = launcherApps.getActivityList(appInfo.applicationInfo.packageName, userHandle).firstOrNull()
|
||||||
|
|
@ -80,6 +104,30 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun filterItems(query: String?) {
|
||||||
|
val cleanQuery = query?.replace("[^a-zA-Z0-9]".toRegex(), "")
|
||||||
|
|
||||||
|
for (i in 0 until binding.recyclerView.childCount) {
|
||||||
|
val view = binding.recyclerView.getChildAt(i)
|
||||||
|
|
||||||
|
|
||||||
|
if (view is FrameLayout) {
|
||||||
|
for (i in 0 until view.childCount) {
|
||||||
|
val text = view.getChildAt(i)
|
||||||
|
if (text is TextView) {
|
||||||
|
val itemText = text.text.toString()
|
||||||
|
val cleanItemText = itemText.replace("[^a-zA-Z0-9]".toRegex(), "")
|
||||||
|
|
||||||
|
if (cleanItemText.contains(cleanQuery ?: "", ignoreCase = true)) {
|
||||||
|
view.visibility = View.VISIBLE
|
||||||
|
} else {
|
||||||
|
view.visibility = View.GONE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
|
||||||
private fun getInstalledApps(): List<Pair<LauncherActivityInfo, Pair<UserHandle, Int>>> {
|
private fun getInstalledApps(): List<Pair<LauncherActivityInfo, Pair<UserHandle, Int>>> {
|
||||||
val allApps = mutableListOf<Pair<LauncherActivityInfo, Pair<UserHandle, Int>>>()
|
val allApps = mutableListOf<Pair<LauncherActivityInfo, Pair<UserHandle, Int>>>()
|
||||||
val launcherApps = getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
|
val launcherApps = getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||||
|
|
|
||||||
|
|
@ -21,21 +21,23 @@
|
||||||
|
|
||||||
</androidx.recyclerview.widget.RecyclerView>
|
</androidx.recyclerview.widget.RecyclerView>
|
||||||
|
|
||||||
<SearchView
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
android:id="@+id/searchView"
|
android:id="@+id/searchView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
android:layout_marginHorizontal="5dp"
|
android:layout_marginHorizontal="40dp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="20dp"
|
||||||
android:layout_marginBottom="20dp"
|
android:layout_marginBottom="40dp"
|
||||||
android:layout_weight="0.1"
|
android:layout_weight="0.1"
|
||||||
android:background="@android:color/transparent"
|
android:background="@android:color/transparent"
|
||||||
android:iconifiedByDefault="false"
|
android:cursorVisible="true"
|
||||||
android:padding="0dp"
|
android:drawableLeft="@android:drawable/ic_menu_search"
|
||||||
android:queryBackground="@null"
|
android:drawablePadding="8dp"
|
||||||
android:queryHint="Search..."
|
android:editTextColor="#f3f3f3"
|
||||||
android:theme="@style/AppSearchView" />
|
android:hint="Search..."
|
||||||
|
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
|
||||||
|
android:textSize="25sp" />
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
||||||
|
|
@ -20,14 +20,17 @@
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textColor="#F3F3F3"
|
android:textColor="#F3F3F3"
|
||||||
android:textSize="70sp" />
|
android:textSize="70sp"
|
||||||
|
android:fontFamily= "@null"
|
||||||
|
android:textAppearance= "@android:style/TextAppearance.DeviceDefault" />
|
||||||
|
|
||||||
<Button
|
<androidx.appcompat.widget.AppCompatButton
|
||||||
android:id="@+id/button"
|
android:id="@+id/button"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="0.1"
|
android:layout_weight="0.1"
|
||||||
android:onClick="openAppMenuActivity"
|
android:onClick="openAppMenuActivity"
|
||||||
android:text="Button" />
|
android:text="Button"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,8 @@
|
||||||
android:paddingBottom="10dp"
|
android:paddingBottom="10dp"
|
||||||
android:selectAllOnFocus="true"
|
android:selectAllOnFocus="true"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="28sp" />
|
android:textSize="28sp"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatButton
|
<androidx.appcompat.widget.AppCompatButton
|
||||||
android:id="@+id/button2"
|
android:id="@+id/button2"
|
||||||
|
|
@ -44,7 +45,8 @@
|
||||||
android:insetTop="0dp"
|
android:insetTop="0dp"
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
android:text="Reset"
|
android:text="Reset"
|
||||||
android:textColor="#F3F3F3" />
|
android:textColor="#F3F3F3"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.DeviceDefault"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
@ -57,6 +59,7 @@
|
||||||
android:paddingTop="20dp"
|
android:paddingTop="20dp"
|
||||||
android:paddingRight="40dp"
|
android:paddingRight="40dp"
|
||||||
android:paddingBottom="20dp"
|
android:paddingBottom="20dp"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
|
||||||
android:textColor="#F3F3F3"
|
android:textColor="#F3F3F3"
|
||||||
android:textSize="28sp"
|
android:textSize="28sp"
|
||||||
android:visibility="visible" />
|
android:visibility="visible" />
|
||||||
|
|
@ -78,7 +81,8 @@
|
||||||
android:text="Info"
|
android:text="Info"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textColor="#F3F3F3FF"
|
android:textColor="#F3F3F3FF"
|
||||||
app:drawableTopCompat="@android:drawable/ic_menu_info_details" />
|
app:drawableTopCompat="@android:drawable/ic_menu_info_details"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/uninstall"
|
android:id="@+id/uninstall"
|
||||||
|
|
@ -90,7 +94,8 @@
|
||||||
android:text="Uninstall"
|
android:text="Uninstall"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textColor="#F3F3F3FF"
|
android:textColor="#F3F3F3FF"
|
||||||
app:drawableTopCompat="@android:drawable/ic_menu_delete" />
|
app:drawableTopCompat="@android:drawable/ic_menu_delete"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/rename"
|
android:id="@+id/rename"
|
||||||
|
|
@ -102,7 +107,8 @@
|
||||||
android:text="Rename"
|
android:text="Rename"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textColor="#F3F3F3FF"
|
android:textColor="#F3F3F3FF"
|
||||||
app:drawableTopCompat="@android:drawable/ic_menu_edit" />
|
app:drawableTopCompat="@android:drawable/ic_menu_edit"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/hide"
|
android:id="@+id/hide"
|
||||||
|
|
@ -114,7 +120,8 @@
|
||||||
android:text="Hide"
|
android:text="Hide"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textColor="#F3F3F3FF"
|
android:textColor="#F3F3F3FF"
|
||||||
app:drawableTopCompat="@android:drawable/ic_menu_view" />
|
app:drawableTopCompat="@android:drawable/ic_menu_view"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/close"
|
android:id="@+id/close"
|
||||||
|
|
@ -126,7 +133,8 @@
|
||||||
android:text="Close"
|
android:text="Close"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textColor="#F3F3F3FF"
|
android:textColor="#F3F3F3FF"
|
||||||
app:drawableTopCompat="@android:drawable/ic_menu_close_clear_cancel" />
|
app:drawableTopCompat="@android:drawable/ic_menu_close_clear_cancel"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,5 @@
|
||||||
<item name="android:windowShowWallpaper">true</item>
|
<item name="android:windowShowWallpaper">true</item>
|
||||||
<!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
|
<!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -14,5 +14,10 @@
|
||||||
<item name="android:cursorVisible">true</item>
|
<item name="android:cursorVisible">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="AppTextAppearance" parent="Widget.AppCompat.SearchView">
|
||||||
|
<item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault</item>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Theme.YamLauncher" parent="Base.Theme.YamLauncher" />
|
<style name="Theme.YamLauncher" parent="Base.Theme.YamLauncher" />
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue