From f0cf8657cebda6bc7a718fb6cc6c1a5e0d0fd675 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Tue, 1 Mar 2022 16:11:06 +0530 Subject: [PATCH] Added search bar for attributes list --- .idea/misc.xml | 1 + .../main/assets/data/common/gradle-plugin.zip | Bin 37272 -> 37271 bytes .../fragments/sheets/AttributeListSheet.java | 61 +++++-- .../main/res/layout/layout_add_attr_sheet.xml | 48 +++++ app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 165 +++++++++++------- 6 files changed, 198 insertions(+), 78 deletions(-) create mode 100644 app/src/main/res/layout/layout_add_attr_sheet.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 1de88c4fa..c5ccd8d76 100755 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -45,6 +45,7 @@ + diff --git a/app/src/main/assets/data/common/gradle-plugin.zip b/app/src/main/assets/data/common/gradle-plugin.zip index 4a40be54c5adff6d4a2820df86aca3b14b557805..7da414250b96c48b038f4f2c2c790b9eeb7432fd 100644 GIT binary patch delta 2093 zcmZ8h3pA8z82;y51D?~b)5*agTDiyUwR@+6%ZK8}cE{)4z^d%IQ zrBb>Kqeyj-YNLx5n{G5)iINZ{74851L!B|_eCL_-z0Z63-v4>u%mOr{0F`k_C{HBk zlFmZ}U(s_A&X6xc*n-`FV6N6ai6`3PK^;6quSF0foP;1e5J+7aC6Lz8uCwTedZK$+ zd&|2|MvDWksJFF}V{KA=TT(9RL`HONf2@18z2Uq05Oq&(Ouf0hq zBh$-U`rjW}@NsV~Wx%A`sYosve8_w0+?-<&KcM-39=gHPG*0*Sj?xZG&v|ArqwpQHD6wLC9z3YvPqg>;nVUXYmU9H(Gqaa4_-Ad=g3N{*KZow zcHKgUL(B7uxa*GYYDkQp=DF|NLCZFtd({K`O~bt!d@dQIAqbU7Lk~M?x7B2;Cnpoe9-2ZQpLUhXaY-giG!vkYg@7x2I18wl+Y`{=o&$Y6# z)u`i;s##Qw&D~Ye&Zdt1Qr4eiBd|YQ*||-;oYax+^K5m3Vb^z;CU?WdrEdKEYR{)5 z<0{%f+v>6o(AB-y-mN25n^3XpqjnGV>eEbyGZpt$oiOv7)Hpva z_mMj-{r1-Odi2Rq;Jt48O>M)C9ThQK?-ZUh(APO8yrk1KQhL(2^rldJf0!hl3LdK; zz?CBRq9tvEig_Ir1HnHy0m7%?ObF7D%Q(onp<$>7Y<2GwN9hdMYCsBc2K=N6U}_i( z5_w^X5FUjchad>Af^N3^hDlWDmVPX!4ZI6-1B?_3kVIHQPGv;AI<%c{4Y9HT!@(Tf zh=EL@Gc-OIUe$)iJ8m0ls_=ZixO{C9uqD|H_(W-g_DHR$bsP2L!*;iJkhAORN*GL^ z;__4`uPY_BN8C^L_b#Z7GE?TGv`*{iiN`&> zvkE_Bze3S93J9XE2E|ehV@Uil)i`6#7z@Wj(Hbya>`R1JPN_tE6s=Y#)ae#)fnqfL zucaoROG0(YV`~b?;+d#Bw6K9@f)*^+IDv^i4I*w7A=o_p)2q5{@yICQA0DgKMWqCv zV8X9AL6@jwfrpo)HONcRL%Wm)MF<7>ClYCdiA*#uWHb#8d=}G*K4@Dz3G`6}*-Jr? zWh$}Rp#+(qq)qhU$IRm-R~6!AAWB*fU-Bf0i7p8n^_l=2C6nOoDhU(4_w#mcI0aml z(4nOsx9kl6!JnI~Lu4w~Y{}2VC!Iz{kR>Xa<^Z2$K2bJYCBz28?anG3iwHcR6Uc~R z5X96e(o8d)0KcMtsSt(4^UP!nrFbZgmC92d)Wunc>+rU&EBB<&< z`kB5^bT|@sS8k`LsdVC_5F-wHQ}xgj2S$xLfGyP`A`yc-TAsttK)AY?QKMvia8{~} fq@2?lsUDi6G%BJD^u~)tIf9mHe@u9K5C;4oqNol) delta 1993 zcmZ8h3pA8z82;y_ffb^6_T`L1GCAA_5U|b3jjB2!hf~WzqR! z<5oH~biHHPr(Nf;%iI7M#KoEU>1oj%% zb+u;!)+-%5lK=HOgTrPBg=&$Qt>&=AVvd(5o5N&_#asr%%Y(_c^Wvh2HdAZpg#mC= zZ?lupl}jcFU7y%^pq3UjcT?2gCY%<<+sna+f63L+pSEZM?BXh)HdC~-^Iy59v#}a@ zfJ)vdU~%nqF6j|8Jbe;Fc;$s<`tv{+V9#^r_-(yuQu^Y~+WV@8LfacJh60*`+TZy- zc+$1m@0p%9W8%kvdS75j4)nRwO+c6=lBSsIzu(egykz&7y~^*LQQtAQ)zp4V+Y)i& zY<6toJ(*}fC!{n{14N)9 zD>2Qe0}QgZL+$iOq(JyCG6TX`By@s;J?Ah`i=w0`{CPPh4T4yj3E`piAcUCM77Wz( zapMGi_#j24Wxe2Kga=?Gl0as>EsVJkzmE)k4Ly5UTrd$Sz?^#EP=X6|K2B)HReN`L zIkN@3!L68T?eLeB$mpOiks|vwU}mj!XHP%zP)ElJDlMq~Odd@%l$$r4K0*u+R9!0% zE#sW;tS{^{AMDkyOJ6y>tK|1XXKo~2aUZ2?T)*6IKJVCpn)=Ya?BY9)vCYC;t+N+b z^E?Z;GzDF3b{!^CW++;>t{>s0ex1YE`=n8&QH_Xeeb;*~aNF)Jn!iHC3O@OI z`OLT;!FvVMYrpDC7&Nyj5;#_7lMEJL;2~tPS!%w}j?EErSj5j1>OJu>%^KLs_$%ZD zgpLWKh(9Q!wN6+@Ngq;+>m4YTb7t%a87%TN?H--3J5Rfc6OWGDutB5DV{HZjVUS3T zMUvIos`7F7(5B3n_m3J<y?1MH@@YQ^CU$7>b z?`w3OOhD%AlQbTyh72MkjWWdrGUKd`v^31-T$!Osw6kP8Y87yw(dA#cPI=_?=I0%K z1NWYWn`RuXS^B8_G54FGn>S(5?u~vKAy~P@ts%vjj$B7WWxU?et(Ddmn!%4yedALkIB) z@NFiZ6Q4;#6??E8kI(<{HRf3p1>{-lmVQq5s>>;VN{D=|R?mXutc|dihgmd~C&jYe zfm1dWS|r&t^!lWQ5vvO>WaC|QVAil$JZ^c8DIH$+8RG|4mDubW5D~;#i+xEPRwxft z=HR8D$e|Gy1Ls^fP?AEypCE5mzS0WIfX}o}E3*NM^MzF?b7|;`1e^x0j`3Wa$~cdP z-kq`+*sysJbDELr<;XE_6Itg4#TD9!+%fg54Q&EmuBo;C(!2#6d gQ*oxr!P4ZLq2-f~-RY*dV{%ZI7Hrdflne>}0aV)X-2eap diff --git a/app/src/main/java/com/itsaky/androidide/fragments/sheets/AttributeListSheet.java b/app/src/main/java/com/itsaky/androidide/fragments/sheets/AttributeListSheet.java index 6802e4172..c2404f6f9 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/sheets/AttributeListSheet.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/sheets/AttributeListSheet.java @@ -18,21 +18,26 @@ package com.itsaky.androidide.fragments.sheets; import android.os.Bundle; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; +import androidx.appcompat.widget.SearchView; +import androidx.fragment.app.DialogFragment; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.itsaky.androidide.R; import com.itsaky.androidide.adapters.AttrListAdapter; +import com.itsaky.androidide.databinding.LayoutAddAttrSheetBinding; import com.itsaky.attrinfo.models.Attr; import java.util.ArrayList; import java.util.List; +import java.util.Locale; +import java.util.stream.Collectors; /** * A bottom sheet dialog for showing a simple list of @@ -43,23 +48,53 @@ import java.util.List; */ public class AttributeListSheet extends BottomSheetDialogFragment { - private RecyclerView mList; + private LayoutAddAttrSheetBinding binding; private List mItems; + @Override + public void onCreate (@Nullable Bundle savedInstanceState) { + super.onCreate (savedInstanceState); + setStyle (DialogFragment.STYLE_NORMAL, R.style.AppTheme_SheetAboveKeyboard); + } + @Nullable @Override public View onCreateView (@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - mList = new RecyclerView (inflater.getContext ()); - mList.setLayoutManager (new LinearLayoutManager (inflater.getContext ())); - mList.setLayoutParams (new ViewGroup.LayoutParams (ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - - return mList; + this.binding = LayoutAddAttrSheetBinding.inflate (inflater, container, false); + return binding.getRoot (); } @Override public void onViewCreated (@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated (view, savedInstanceState); - mList.setAdapter (new AttrListAdapter (mItems)); + binding.searchBar.setOnQueryTextListener (new SearchView.OnQueryTextListener () { + + @Override + public boolean onQueryTextSubmit (String query) { + return filterAttributes (query.trim ()); + } + + @Override + public boolean onQueryTextChange (String newText) { + return filterAttributes (newText.trim ()); + } + }); + binding.attrList.setAdapter (new AttrListAdapter (mItems)); + } + + private boolean filterAttributes (@NonNull String query) { + if (mItems == null || TextUtils.isEmpty (query)) { + update (); + return true; + } + + final var filtered = this.mItems + .stream () + .filter (attr -> attr.name.toLowerCase (Locale.ROOT).contains (query.toLowerCase (Locale.ROOT))) + .collect (Collectors.toList ()); + + update (filtered); + return true; } public void setItems (@Nullable List items) { @@ -72,8 +107,12 @@ public class AttributeListSheet extends BottomSheetDialogFragment { } public void update () { - if (mList != null) { - mList.setAdapter (new AttrListAdapter (mItems)); + update (mItems); + } + + public void update (List items) { + if (binding != null) { + binding.attrList.setAdapter (new AttrListAdapter (items)); } } } diff --git a/app/src/main/res/layout/layout_add_attr_sheet.xml b/app/src/main/res/layout/layout_add_attr_sheet.xml new file mode 100644 index 000000000..26fd6935d --- /dev/null +++ b/app/src/main/res/layout/layout_add_attr_sheet.xml @@ -0,0 +1,48 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2c170e16c..8f1e421a0 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -375,4 +375,5 @@ Make the floating text actions appear horizontally (restart required if changed). Unable to start intent for installing APK Add attribute + Search attributes... diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 11c1aee18..0081b33ba 100755 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,100 +1,120 @@ + + + - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + +