Home | History | Annotate | only in /packages/apps/Dialer/java/com/android/dialer/searchfragment
Up to higher level directory
NameDateSize
common/06-Dec-2017
cp2/06-Dec-2017
list/06-Dec-2017
nearbyplaces/06-Dec-2017
README.md06-Dec-20172.2K

README.md

      1 # Dialer Search Ui
      2 
      3 searchfragment/ contains all code relevant to loading, rendering and filtering
      4 search results in both dialpad search and regular search.
      5 
      6 ## Loading
      7 
      8 ### On Device Contacts
      9 
     10 On device contacts loading happens in SearchContactsCursorLoader. It is used in
     11 conjunction with NewSearchFragment and Loader Callbacks to return a cursor from
     12 cp2 containing all of the relevant info needed to rendering.
     13 
     14 ### Business Search
     15 
     16 // TODO(calderwoodra)
     17 
     18 ### Google Directory Search
     19 
     20 // TODO(calderwoodra)
     21 
     22 ## Rendering
     23 
     24 NewSearchFragment, SearchAdapter, SearchContactViewHolder and
     25 SearchCursorManager are used to render contact information. The fragment's
     26 recyclerview, adapter and viewholder work as expected like a normal recyclerview
     27 paradigm.
     28 
     29 The are three things to note about rendering:
     30 
     31 *   There are three data sources rendered: On device contacts, business search
     32     results and google directory results.
     33 *   SearchContactsCursorLoader returns its cursor from cp2 and we filter/wrap it
     34     with SearchContactCursor to render useful results (see below).
     35 *   SearchCursorManager is used to coalesce all three data sources to help with
     36     determining row count, row type and returning the correct data source for
     37     each position.
     38 
     39 ## Filtering
     40 
     41 On device contacts are filtered using SearchContactCursor. We wrap the cursor
     42 returned from SearchContactsCursorLoader in NewSearchFragment#onLoadFinished in
     43 order to abstract away the filtering logic from the recyclerview adapter and
     44 viewholders.
     45 
     46 SearchContactCursor applies filtering in SearchContactCursor#filter to remove
     47 duplicate phone numbers returned from cp2 and phone numbers that do not match
     48 the given search query.
     49 
     50 Filtering methods used are:
     51 
     52 *   T9/dialpad search methods
     53     *   Initial match (957 matches [W]illiam [J]ohn [S]mith)
     54     *   Number + name match (1800946 matches [1800-Win]-A-Prize)
     55 *   Numeric/dialpad search methods
     56     *   Simple number match (510333 matches [510-333]-7596)
     57     *   Country-code agnostic matching for E164 normalized numbers (9177 matches
     58         +65[9177]6930)
     59     *   Country-code agnostic matching (510333 matches 1-[510-333]-7596)
     60     *   Area-code agnostic matching (333 matches 510-[333]-7596)
     61 *   Name/keyboard search methods:
     62     *   Simple name match (564 matches [Joh]n)
     63