//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();
// }
//}