Browse Source

improved search/filter performance

It applied every time you typed before lmao

Signed-off-by: swurl <swurl@swurl.xyz>
pull/125/head
swurl 10 months ago
committed by AlekPop
parent
commit
c4a1d97c85
  1. 20
      src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/LobbyBrowser.kt
  2. 95
      src/android/app/src/main/res/layout/dialog_lobby_browser.xml
  3. 2
      src/android/app/src/main/res/values/strings.xml

20
src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/LobbyBrowser.kt

@ -12,6 +12,9 @@ import android.os.Looper
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.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import androidx.core.content.getSystemService
import androidx.core.widget.doOnTextChanged import androidx.core.widget.doOnTextChanged
import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
@ -82,9 +85,24 @@ class LobbyBrowser(context: Context) : BottomSheetDialog(context) {
} else { } else {
binding.clearButton.visibility = View.INVISIBLE binding.clearButton.visibility = View.INVISIBLE
} }
adapter.filterAndSearch()
} }
binding.searchText.setOnEditorActionListener { v, action, _ ->
if (action == EditorInfo.IME_ACTION_DONE) {
v.clearFocus()
val imm = context.getSystemService<InputMethodManager>()
imm?.hideSoftInputFromWindow(v.windowToken, 0)
adapter.filterAndSearch()
true
} else {
false
}
}
binding.btnSubmit.setOnClickListener { adapter.filterAndSearch() }
binding.clearButton.setOnClickListener { binding.clearButton.setOnClickListener {
binding.searchText.setText("") binding.searchText.setText("")
adapter.updateRooms(NetPlayManager.getPublicRooms()) adapter.updateRooms(NetPlayManager.getPublicRooms())

95
src/android/app/src/main/res/layout/dialog_lobby_browser.xml

@ -62,54 +62,71 @@
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
<com.google.android.material.card.MaterialCardView
android:id="@+id/search_background"
style="?attr/materialCardViewFilledStyle"
<LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="12dp"
app:cardCornerRadius="24dp">
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/search_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
<com.google.android.material.card.MaterialCardView
android:id="@+id/search_background"
style="?attr/materialCardViewFilledStyle"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginEnd="48dp"
android:orientation="horizontal">
android:layout_marginTop="12dp"
app:cardCornerRadius="24dp">
<LinearLayout
android:id="@+id/search_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="16dp"
android:layout_marginEnd="48dp"
android:orientation="horizontal">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical"
android:layout_marginEnd="16dp"
android:src="@drawable/ic_search"
app:tint="?attr/colorOnSurfaceVariant" />
<EditText
android:id="@+id/search_text"
android:layout_width="180dp"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:hint="@string/multiplayer_search_public_lobbies"
android:imeOptions="flagNoFullscreen"
android:inputType="text"
android:maxLines="1" />
</LinearLayout>
<ImageView <ImageView
android:id="@+id/clear_button"
android:layout_width="24dp" android:layout_width="24dp"
android:layout_height="24dp" android:layout_height="24dp"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:src="@drawable/ic_search"
app:tint="?attr/colorOnSurfaceVariant" />
<EditText
android:id="@+id/search_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:hint="@string/multiplayer_search_public_lobbies"
android:imeOptions="flagNoFullscreen"
android:inputType="text"
android:maxLines="1" />
</LinearLayout>
android:background="?attr/selectableItemBackground"
android:src="@drawable/ic_clear"
android:visibility="invisible"
app:tint="?attr/colorOnSurfaceVariant"
tools:visibility="visible" />
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_submit"
style="@style/Widget.Material3.Button.ElevatedButton"
android:layout_width="110dp"
android:layout_height="48dp"
android:layout_marginTop="12dp"
android:text="@string/submit" />
</LinearLayout>
<ImageView
android:id="@+id/clear_button"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="16dp"
android:background="?attr/selectableItemBackground"
android:src="@drawable/ic_clear"
android:visibility="invisible"
app:tint="?attr/colorOnSurfaceVariant"
tools:visibility="visible" />
</com.google.android.material.card.MaterialCardView>
<HorizontalScrollView <HorizontalScrollView
android:id="@+id/horizontalScrollView" android:id="@+id/horizontalScrollView"

2
src/android/app/src/main/res/values/strings.xml

@ -178,7 +178,7 @@
<string name="multiplayer_hide_full_rooms">Hide Full Rooms</string> <string name="multiplayer_hide_full_rooms">Hide Full Rooms</string>
<string name="multiplayer_hide_empty_rooms">Hide Empty Rooms</string> <string name="multiplayer_hide_empty_rooms">Hide Empty Rooms</string>
<string name="multiplayer_tap_refresh_to_check_again">Tap refresh to check again</string> <string name="multiplayer_tap_refresh_to_check_again">Tap refresh to check again</string>
<string name="multiplayer_search_public_lobbies">Search Public Lobbies…</string>
<string name="multiplayer_search_public_lobbies">Search Lobbies…</string>
<string name="emulation_multiplayer">Multiplayer</string> <string name="emulation_multiplayer">Multiplayer</string>
<string name="multiplayer_game_name">Preferred Games</string> <string name="multiplayer_game_name">Preferred Games</string>
<string name="multiplayer_preferred_game_name">Preferred Game</string> <string name="multiplayer_preferred_game_name">Preferred Game</string>

Loading…
Cancel
Save