summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorPaul Gardiner <paul@glidos.net>2012-04-24 17:07:27 +0100
committerRobin Watts <robin.watts@artifex.com>2012-04-24 17:41:33 +0100
commitaf5a6088a3c3e4d61f84d2c93a8968c04069864d (patch)
tree4a87274f8ebf811983ff6e9aeb14c95cdf53278d /android
parent0925d57d1cff3db9a93e737ac68c940b464d360c (diff)
downloadmupdf-af5a6088a3c3e4d61f84d2c93a8968c04069864d.tar.xz
Maintain search results across a device rotation
Thanks to Robin for the nice idea of storing the text with the search so that we can test whether it matches the edit contents
Diffstat (limited to 'android')
-rw-r--r--android/src/com/artifex/mupdf/MuPDFActivity.java37
1 files changed, 24 insertions, 13 deletions
diff --git a/android/src/com/artifex/mupdf/MuPDFActivity.java b/android/src/com/artifex/mupdf/MuPDFActivity.java
index 61ac7cdf..da3c024e 100644
--- a/android/src/com/artifex/mupdf/MuPDFActivity.java
+++ b/android/src/com/artifex/mupdf/MuPDFActivity.java
@@ -32,13 +32,24 @@ import android.widget.TextView;
import android.widget.ViewSwitcher;
class SearchTaskResult {
+ public final String txt;
public final int pageNumber;
public final RectF searchBoxes[];
+ static private SearchTaskResult singleton;
- SearchTaskResult(int _pageNumber, RectF _searchBoxes[]) {
+ SearchTaskResult(String _txt, int _pageNumber, RectF _searchBoxes[]) {
+ txt = _txt;
pageNumber = _pageNumber;
searchBoxes = _searchBoxes;
}
+
+ static public SearchTaskResult get() {
+ return singleton;
+ }
+
+ static public void set(SearchTaskResult r) {
+ singleton = r;
+ }
}
class ProgressDialogX extends ProgressDialog {
@@ -83,7 +94,7 @@ public class MuPDFActivity extends Activity
private ImageButton mSearchFwd;
private EditText mSearchText;
private AsyncTask<Integer,Integer,SearchTaskResult> mSearchTask;
- private SearchTaskResult mSearchTaskResult;
+ //private SearchTaskResult mSearchTaskResult;
private AlertDialog.Builder mAlertBuilder;
private LinkState mLinkState = LinkState.DEFAULT;
private final Handler mHandler = new Handler();
@@ -248,8 +259,8 @@ public class MuPDFActivity extends Activity
}
protected void onChildSetup(int i, View v) {
- if (mSearchTaskResult != null && mSearchTaskResult.pageNumber == i)
- ((PageView)v).setSearchBoxes(mSearchTaskResult.searchBoxes);
+ if (SearchTaskResult.get() != null && SearchTaskResult.get().pageNumber == i)
+ ((PageView)v).setSearchBoxes(SearchTaskResult.get().searchBoxes);
else
((PageView)v).setSearchBoxes(null);
@@ -262,8 +273,8 @@ public class MuPDFActivity extends Activity
mPageNumberView.setText(String.format("%d/%d", i+1, core.countPages()));
mPageSlider.setMax(core.countPages()-1);
mPageSlider.setProgress(i);
- if (mSearchTaskResult != null && mSearchTaskResult.pageNumber != i) {
- mSearchTaskResult = null;
+ if (SearchTaskResult.get() != null && SearchTaskResult.get().pageNumber != i) {
+ SearchTaskResult.set(null);
mDocView.resetupChildren();
}
}
@@ -329,8 +340,8 @@ public class MuPDFActivity extends Activity
mSearchFwd.setEnabled(haveText);
// Remove any previous search results
- if (mSearchTaskResult != null) {
- mSearchTaskResult = null;
+ if (SearchTaskResult.get() != null && !mSearchText.getText().toString().equals(SearchTaskResult.get().txt)) {
+ SearchTaskResult.set(null);
mDocView.resetupChildren();
}
}
@@ -572,7 +583,7 @@ public class MuPDFActivity extends Activity
mTopBarIsSearch = false;
hideKeyboard();
mTopBarSwitcher.showPrevious();
- mSearchTaskResult = null;
+ SearchTaskResult.set(null);
// Make the ReaderView act on the change to mSearchTaskResult
// via overridden onChildSetup method.
mDocView.resetupChildren();
@@ -641,17 +652,17 @@ public class MuPDFActivity extends Activity
@Override
protected SearchTaskResult doInBackground(Integer... params) {
int index;
- if (mSearchTaskResult == null)
+ if (SearchTaskResult.get() == null)
index = mDocView.getDisplayedViewIndex();
else
- index = mSearchTaskResult.pageNumber + params[0].intValue();
+ index = SearchTaskResult.get().pageNumber + params[0].intValue();
while (0 <= index && index < core.countPages() && !isCancelled()) {
publishProgress(index);
RectF searchHits[] = core.searchPage(index, mSearchText.getText().toString());
if (searchHits != null && searchHits.length > 0)
- return new SearchTaskResult(index, searchHits);
+ return new SearchTaskResult(mSearchText.getText().toString(), index, searchHits);
index += params[0].intValue();
}
@@ -664,7 +675,7 @@ public class MuPDFActivity extends Activity
if (result != null) {
// Ask the ReaderView to move to the resulting page
mDocView.setDisplayedViewIndex(result.pageNumber);
- mSearchTaskResult = result;
+ SearchTaskResult.set(result);
// Make the ReaderView act on the change to mSearchTaskResult
// via overridden onChildSetup method.
mDocView.resetupChildren();