Brion VIBBER has submitted this change and it was merged.

Change subject: Do not crash when searching without network
......................................................................


Do not crash when searching without network

Also does:
- display a message that lets you retry the search
- always ensure that there's a line under the search bar

Change-Id: I4341d249ae4832e74cf74226bfbcb216b3418f6a
---
M wikipedia/res/layout/activity_main.xml
M wikipedia/res/layout/fragment_search.xml
M wikipedia/res/values/strings.xml
M wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesFragment.java
4 files changed, 64 insertions(+), 21 deletions(-)

Approvals:
  Brion VIBBER: Verified; Looks good to me, approved



diff --git a/wikipedia/res/layout/activity_main.xml 
b/wikipedia/res/layout/activity_main.xml
index 5778ec2..5bc2924 100644
--- a/wikipedia/res/layout/activity_main.xml
+++ b/wikipedia/res/layout/activity_main.xml
@@ -10,9 +10,6 @@
             android:layout_height="wrap_content"
             android:layout_width="match_parent"
             />
-    <!-- Android has no easy way to give us a light border -->
-    <View android:layout_width="match_parent" android:layout_height="1dp"
-          android:background="@color/border" />
     <android.support.v4.widget.DrawerLayout
             android:id="@+id/drawer_layout"
             android:layout_width="match_parent"
diff --git a/wikipedia/res/layout/fragment_search.xml 
b/wikipedia/res/layout/fragment_search.xml
index d7ce3b2..8d2cb17 100644
--- a/wikipedia/res/layout/fragment_search.xml
+++ b/wikipedia/res/layout/fragment_search.xml
@@ -48,10 +48,26 @@
                     />
         </FrameLayout>
     </LinearLayout>
+    <!-- Android has no easy way to give us a light border -->
+    <View android:layout_width="match_parent" android:layout_height="1dp"
+          android:background="@color/border" />
+    <Button
+            android:id="@+id/searchNetworkError"
+            android:layout_width="match_parent"
+            android:layout_height="48dp"
+            android:gravity="center"
+            android:text="@string/search_network_error"
+            style="?android:textAppearanceMedium"
+            android:visibility="gone"
+            android:background="?android:attr/selectableItemBackground"
+            />
     <ListView
             android:id="@+id/searchResultsList"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:dividerHeight="0dp"
             />
+    <!-- Android has no easy way to give us a light border -->
+    <View android:layout_width="match_parent" android:layout_height="1dp"
+          android:background="@color/border" />
 </LinearLayout>
\ No newline at end of file
diff --git a/wikipedia/res/values/strings.xml b/wikipedia/res/values/strings.xml
index 226796e..8b9209e 100644
--- a/wikipedia/res/values/strings.xml
+++ b/wikipedia/res/values/strings.xml
@@ -10,4 +10,5 @@
     <string name="history_activity_title">History</string>
     <string name="nav_item_history">History</string>
     <string name="error_network_error">Could not reach the network :(</string>
+    <string name="search_network_error">Network error. Tap to try 
again.</string>
 </resources>
\ No newline at end of file
diff --git 
a/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesFragment.java 
b/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesFragment.java
index d764d8f..7dc7765 100644
--- 
a/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesFragment.java
+++ 
b/wikipedia/src/main/java/org/wikimedia/wikipedia/SearchArticlesFragment.java
@@ -30,6 +30,7 @@
     private EditText searchTermText;
     private ListView searchResultsList;
     private ProgressBar searchProgress;
+    private View searchNetworkError;
 
     private SearchResultAdapter adapter;
 
@@ -77,6 +78,12 @@
                     }
                     
((BaseAdapter)searchResultsList.getAdapter()).notifyDataSetInvalidated();
                 }
+
+                @Override
+                public void onCatch(Throwable caught) {
+                    // Don't actually do anything.
+                    // Thumbnails are expendable
+                }
             };
             imagesTask.execute();
         }
@@ -98,6 +105,7 @@
         searchResultsList = (ListView) 
parentLayout.findViewById(R.id.searchResultsList);
         searchProgress = (ProgressBar) 
parentLayout.findViewById(R.id.searchProgress);
         searchBarIcon = (ImageView) 
parentLayout.findViewById(R.id.searchBarIcon);
+        searchNetworkError = 
parentLayout.findViewById(R.id.searchNetworkError);
 
         searchHandler = new Handler(new Handler.Callback(){
             @Override
@@ -108,9 +116,17 @@
                     @Override
                     public void onFinish(List<PageTitle> result) {
                         searchProgress.setVisibility(View.GONE);
+                        searchNetworkError.setVisibility(View.GONE);
                         displayResults(result);
                         searchResultsCache.put(searchTerm, result);
                         lastSearchedText = searchTerm;
+                    }
+
+                    @Override
+                    public void onCatch(Throwable caught) {
+                        searchProgress.setVisibility(View.GONE);
+                        searchNetworkError.setVisibility(View.VISIBLE);
+                        searchResultsList.setVisibility(View.GONE);
                     }
 
                     @Override
@@ -134,6 +150,15 @@
             }
         });
 
+        searchNetworkError.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                // Just retry!
+                startSearch(searchTermText.getText().toString());
+                searchNetworkError.setVisibility(View.GONE);
+            }
+        });
+
         searchTermText.addTextChangedListener(new TextWatcher() {
             @Override
             public void beforeTextChanged(CharSequence s, int start, int 
count, int after) {
@@ -147,24 +172,7 @@
 
             @Override
             public void afterTextChanged(final Editable s) {
-                if (Utils.compareStrings(s.toString(), lastSearchedText) && 
!isSearchActive) {
-                    return; // Nothing has changed!
-                }
-                if (s.toString().equals("")) {
-                       return; // nothing!
-                }
-
-                List<PageTitle> cacheResult = 
searchResultsCache.get(s.toString());
-                if (cacheResult != null) {
-                    displayResults(cacheResult);
-                    return;
-                }
-                searchHandler.removeMessages(MESSAGE_SEARCH);
-                Message searchMessage = Message.obtain();
-                searchMessage.what = MESSAGE_SEARCH;
-                searchMessage.obj = s.toString();
-
-                searchHandler.sendMessageDelayed(searchMessage, DELAY_MILLIS);
+                startSearch(s.toString());
             }
         });
 
@@ -185,6 +193,27 @@
         return parentLayout;
     }
 
+    private void startSearch(String term) {
+        if (Utils.compareStrings(term, lastSearchedText) && !isSearchActive) {
+            return; // Nothing has changed!
+        }
+        if (term.equals("")) {
+            return; // nothing!
+        }
+
+        List<PageTitle> cacheResult = searchResultsCache.get(term);
+        if (cacheResult != null) {
+            displayResults(cacheResult);
+            return;
+        }
+        searchHandler.removeMessages(MESSAGE_SEARCH);
+        Message searchMessage = Message.obtain();
+        searchMessage.what = MESSAGE_SEARCH;
+        searchMessage.obj = term;
+
+        searchHandler.sendMessageDelayed(searchMessage, DELAY_MILLIS);
+    }
+
     void setDrawerLayout(DrawerLayout drawerLayout) {
         this.drawerLayout = drawerLayout;
     }

-- 
To view, visit https://gerrit.wikimedia.org/r/99733
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I4341d249ae4832e74cf74226bfbcb216b3418f6a
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to