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