mirror of
https://github.com/He4eT/yamf_launcher.git
synced 2026-05-04 17:37:25 +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.widget.EditText
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.SearchView
|
||||
import android.widget.TextView
|
||||
import eu.ottop.yamlauncher.databinding.ActivityAppMenuBinding
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
|
|
@ -31,7 +30,7 @@ class AppActionMenu {
|
|||
textView: TextView,
|
||||
editLayout: LinearLayout,
|
||||
actionMenu: View,
|
||||
searchView: SearchView,
|
||||
searchView: EditText,
|
||||
appInfo: ApplicationInfo,
|
||||
userHandle: UserHandle,
|
||||
workProfile: Int,
|
||||
|
|
|
|||
|
|
@ -5,15 +5,15 @@ import android.content.pm.LauncherActivityInfo
|
|||
import android.content.pm.LauncherApps
|
||||
import android.os.Bundle
|
||||
import android.os.UserHandle
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.ViewTreeObserver
|
||||
import android.widget.EditText
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.SearchView
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
|
|
@ -32,7 +32,7 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener,
|
|||
|
||||
private lateinit var binding: ActivityAppMenuBinding
|
||||
private lateinit var recyclerView: RecyclerView
|
||||
private lateinit var searchView: SearchView
|
||||
private lateinit var searchView: EditText
|
||||
private lateinit var adapter: AppMenuAdapter
|
||||
private lateinit var shownApps: List<Pair<LauncherActivityInfo, Pair<UserHandle, Int>>>
|
||||
private lateinit var job: Job
|
||||
|
|
@ -52,6 +52,12 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener,
|
|||
shownApps = getInstalledApps()
|
||||
adapter = AppMenuAdapter(shownApps, this, this)
|
||||
recyclerView.adapter = adapter
|
||||
|
||||
binding.root.addOnLayoutChangeListener { _, _, top, _, bottom, _, oldTop, _, oldBottom ->
|
||||
if (bottom - top > oldBottom - oldTop) {
|
||||
searchView.clearFocus()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onItemClick(appInfo: LauncherActivityInfo, userHandle: UserHandle) {
|
||||
|
|
@ -73,6 +79,24 @@ class AppMenuActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener,
|
|||
editView: LinearLayout
|
||||
) {
|
||||
// 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
|
||||
actionMenuLayout.visibility = View.VISIBLE
|
||||
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>>> {
|
||||
val allApps = mutableListOf<Pair<LauncherActivityInfo, Pair<UserHandle, Int>>>()
|
||||
val launcherApps = getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
|
|
|
|||
|
|
@ -21,21 +21,23 @@
|
|||
|
||||
</androidx.recyclerview.widget.RecyclerView>
|
||||
|
||||
<SearchView
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/searchView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginHorizontal="5dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginHorizontal="40dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:layout_weight="0.1"
|
||||
android:background="@android:color/transparent"
|
||||
android:iconifiedByDefault="false"
|
||||
android:padding="0dp"
|
||||
android:queryBackground="@null"
|
||||
android:queryHint="Search..."
|
||||
android:theme="@style/AppSearchView" />
|
||||
android:cursorVisible="true"
|
||||
android:drawableLeft="@android:drawable/ic_menu_search"
|
||||
android:drawablePadding="8dp"
|
||||
android:editTextColor="#f3f3f3"
|
||||
android:hint="Search..."
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
|
||||
android:textSize="25sp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
|||
|
|
@ -20,14 +20,17 @@
|
|||
android:layout_weight="1"
|
||||
android:textAlignment="center"
|
||||
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:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.1"
|
||||
android:onClick="openAppMenuActivity"
|
||||
android:text="Button" />
|
||||
android:text="Button"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,8 @@
|
|||
android:paddingBottom="10dp"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:textSize="28sp" />
|
||||
android:textSize="28sp"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
android:id="@+id/button2"
|
||||
|
|
@ -44,7 +45,8 @@
|
|||
android:insetTop="0dp"
|
||||
android:insetBottom="0dp"
|
||||
android:text="Reset"
|
||||
android:textColor="#F3F3F3" />
|
||||
android:textColor="#F3F3F3"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
|
|
@ -57,6 +59,7 @@
|
|||
android:paddingTop="20dp"
|
||||
android:paddingRight="40dp"
|
||||
android:paddingBottom="20dp"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault"
|
||||
android:textColor="#F3F3F3"
|
||||
android:textSize="28sp"
|
||||
android:visibility="visible" />
|
||||
|
|
@ -78,7 +81,8 @@
|
|||
android:text="Info"
|
||||
android:textAlignment="center"
|
||||
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
|
||||
android:id="@+id/uninstall"
|
||||
|
|
@ -90,7 +94,8 @@
|
|||
android:text="Uninstall"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#F3F3F3FF"
|
||||
app:drawableTopCompat="@android:drawable/ic_menu_delete" />
|
||||
app:drawableTopCompat="@android:drawable/ic_menu_delete"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rename"
|
||||
|
|
@ -102,7 +107,8 @@
|
|||
android:text="Rename"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#F3F3F3FF"
|
||||
app:drawableTopCompat="@android:drawable/ic_menu_edit" />
|
||||
app:drawableTopCompat="@android:drawable/ic_menu_edit"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hide"
|
||||
|
|
@ -114,7 +120,8 @@
|
|||
android:text="Hide"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#F3F3F3FF"
|
||||
app:drawableTopCompat="@android:drawable/ic_menu_view" />
|
||||
app:drawableTopCompat="@android:drawable/ic_menu_view"
|
||||
android:textAppearance="@android:style/TextAppearance.DeviceDefault" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/close"
|
||||
|
|
@ -126,7 +133,8 @@
|
|||
android:text="Close"
|
||||
android:textAlignment="center"
|
||||
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>
|
||||
|
||||
|
|
|
|||
|
|
@ -7,4 +7,5 @@
|
|||
<item name="android:windowShowWallpaper">true</item>
|
||||
<!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
|
@ -14,5 +14,10 @@
|
|||
<item name="android:cursorVisible">true</item>
|
||||
</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" />
|
||||
</resources>
|
||||
Loading…
Add table
Add a link
Reference in a new issue