ImageFindTask.java 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package epson.print.imgsel;
  2. import android.content.ContentResolver;
  3. import android.graphics.Bitmap;
  4. import android.os.AsyncTask;
  5. import java.lang.ref.WeakReference;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import epson.print.ImageItem;
  9. class ImageFindTask extends AsyncTask<ImageFinder, List<ImageItem>, Void> implements ImageFinder.Canceller {
  10. private static int IMAGE_QUERY_LIMIT = 32;
  11. String mFolderPath;
  12. WeakReference<ImageGridFragment> mFragmentReference;
  13. public ImageFindTask(ImageGridFragment imageGridFragment, String str) {
  14. mFragmentReference = new WeakReference<>(imageGridFragment);
  15. mFolderPath = str;
  16. }
  17. protected Void doInBackground(ImageFinder... imageFinderArr) {
  18. ImageGridFragment imageGridFragment;
  19. List<ImageFileInfo> findImageInDirectory;
  20. if (imageFinderArr == null || imageFinderArr.length <= 0) {
  21. return null;
  22. }
  23. ImageFinder imageFinder = imageFinderArr[0];
  24. if (!(isCancelled() || imageFinder == null || (imageGridFragment = (ImageGridFragment) mFragmentReference.get()) == null || imageGridFragment.getActivity() == null || isCancelled() || (findImageInDirectory = imageFinder.findImageInDirectory(mFolderPath, getResolver(), this)) == null)) {
  25. ArrayList arrayList = new ArrayList();
  26. for (ImageFileInfo next : findImageInDirectory) {
  27. if (isCancelled()) {
  28. return null;
  29. }
  30. boolean isImageSelected = isImageSelected(next.mCanonicalPath);
  31. arrayList.add(new ImageItem((Bitmap) null, isImageSelected ? 1 : 0, next.mCanonicalPath, next.mMediaInfoId));
  32. if (arrayList.size() % IMAGE_QUERY_LIMIT == 0) {
  33. publishProgress(new List[]{arrayList});
  34. arrayList = new ArrayList();
  35. }
  36. }
  37. if (arrayList.size() > 0) {
  38. publishProgress(new List[]{arrayList});
  39. }
  40. }
  41. return null;
  42. }
  43. private ContentResolver getResolver() {
  44. FragmentActivity activity;
  45. ImageGridFragment imageGridFragment = (ImageGridFragment) mFragmentReference.get();
  46. if (imageGridFragment == null || (activity = imageGridFragment.getActivity()) == null) {
  47. return null;
  48. }
  49. return activity.getContentResolver();
  50. }
  51. private boolean isImageSelected(String str) {
  52. ImageGridFragment imageGridFragment = (ImageGridFragment) mFragmentReference.get();
  53. if (imageGridFragment == null) {
  54. return false;
  55. }
  56. return imageGridFragment.isImageSelected(str);
  57. }
  58. public boolean checkCanceled() {
  59. return isCancelled();
  60. }
  61. protected void onPreExecute() {
  62. ImageGridFragment imageGridFragment = (ImageGridFragment) mFragmentReference.get();
  63. if (imageGridFragment != null) {
  64. imageGridFragment.clearItem();
  65. }
  66. }
  67. protected void onProgressUpdate(List<ImageItem>... listArr) {
  68. ImageGridFragment imageGridFragment = (ImageGridFragment) mFragmentReference.get();
  69. if (imageGridFragment != null && listArr != null && listArr.length > 0) {
  70. imageGridFragment.addItem(listArr[0]);
  71. }
  72. }
  73. protected void onPostExecute(Void voidR) {
  74. ImageGridFragment imageGridFragment = (ImageGridFragment) mFragmentReference.get();
  75. if (imageGridFragment != null) {
  76. imageGridFragment.updateData();
  77. }
  78. }
  79. }