diff options
Diffstat (limited to 'platform/android/src/com/artifex/mupdfdemo/SearchTask.java')
-rw-r--r-- | platform/android/src/com/artifex/mupdfdemo/SearchTask.java | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/platform/android/src/com/artifex/mupdfdemo/SearchTask.java b/platform/android/src/com/artifex/mupdfdemo/SearchTask.java deleted file mode 100644 index d3969f10..00000000 --- a/platform/android/src/com/artifex/mupdfdemo/SearchTask.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.artifex.mupdfdemo; - -import android.app.AlertDialog; -import android.app.ProgressDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.graphics.RectF; -import android.os.Handler; - -class ProgressDialogX extends ProgressDialog { - public ProgressDialogX(Context context) { - super(context); - } - - private boolean mCancelled = false; - - public boolean isCancelled() { - return mCancelled; - } - - @Override - public void cancel() { - mCancelled = true; - super.cancel(); - } -} - -public abstract class SearchTask { - private static final int SEARCH_PROGRESS_DELAY = 200; - private final Context mContext; - private final MuPDFCore mCore; - private final Handler mHandler; - private final AlertDialog.Builder mAlertBuilder; - private AsyncTask<Void,Integer,SearchTaskResult> mSearchTask; - - public SearchTask(Context context, MuPDFCore core) { - mContext = context; - mCore = core; - mHandler = new Handler(); - mAlertBuilder = new AlertDialog.Builder(context); - } - - protected abstract void onTextFound(SearchTaskResult result); - - public void stop() { - if (mSearchTask != null) { - mSearchTask.cancel(true); - mSearchTask = null; - } - } - - public void go(final String text, int direction, int displayPage, int searchPage) { - if (mCore == null) - return; - stop(); - - final int increment = direction; - final int startIndex = searchPage == -1 ? displayPage : searchPage + increment; - - final ProgressDialogX progressDialog = new ProgressDialogX(mContext); - progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); - progressDialog.setTitle(mContext.getString(R.string.searching_)); - progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { - public void onCancel(DialogInterface dialog) { - stop(); - } - }); - progressDialog.setMax(mCore.countPages()); - - mSearchTask = new AsyncTask<Void,Integer,SearchTaskResult>() { - @Override - protected SearchTaskResult doInBackground(Void... params) { - int index = startIndex; - - while (0 <= index && index < mCore.countPages() && !isCancelled()) { - publishProgress(index); - RectF searchHits[] = mCore.searchPage(index, text); - - if (searchHits != null && searchHits.length > 0) - return new SearchTaskResult(text, index, searchHits); - - index += increment; - } - return null; - } - - @Override - protected void onPostExecute(SearchTaskResult result) { - progressDialog.cancel(); - if (result != null) { - onTextFound(result); - } else { - mAlertBuilder.setTitle(SearchTaskResult.get() == null ? R.string.text_not_found : R.string.no_further_occurrences_found); - AlertDialog alert = mAlertBuilder.create(); - alert.setButton(AlertDialog.BUTTON_POSITIVE, mContext.getString(R.string.dismiss), - (DialogInterface.OnClickListener)null); - alert.show(); - } - } - - @Override - protected void onCancelled() { - progressDialog.cancel(); - } - - @Override - protected void onProgressUpdate(Integer... values) { - progressDialog.setProgress(values[0].intValue()); - } - - @Override - protected void onPreExecute() { - super.onPreExecute(); - mHandler.postDelayed(new Runnable() { - public void run() { - if (!progressDialog.isCancelled()) - { - progressDialog.show(); - progressDialog.setProgress(startIndex); - } - } - }, SEARCH_PROGRESS_DELAY); - } - }; - - mSearchTask.execute(); - } -} |