ImageFolderListFragment.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package epson.print.imgsel;
  2. import android.content.Intent;
  3. import android.graphics.Bitmap;
  4. import android.os.Bundle;
  5. import android.support.p000v4.app.ListFragment;
  6. import android.view.View;
  7. import android.widget.ListAdapter;
  8. import android.widget.ListView;
  9. import epson.print.ActivityRequestPermissions;
  10. import epson.print.R;
  11. public class ImageFolderListFragment extends ListFragment {
  12. private static final String FRAGMENT_TAG_NO_IMAGE_DIALOG = "no_image_dialog";
  13. private static final int RESULT_RUNTIMEPERMMISSION = 1;
  14. private ImageFolderAdapter mAdapter;
  15. private FolderFindTask mFolderFindTask;
  16. private boolean mIsFragmentForground;
  17. public interface FolderSelectedListener {
  18. ImageFinder getImageFinder();
  19. void onFolderSelected(ImageFolderInfo imageFolderInfo);
  20. }
  21. public void onListItemClick(ListView listView, View view, int i, long j) {
  22. if (mAdapter != null) {
  23. ((FolderSelectedListener) getActivity()).onFolderSelected(mAdapter.getFolderInfo(i));
  24. }
  25. }
  26. public void onActivityCreated(Bundle bundle) {
  27. super.onActivityCreated(bundle);
  28. mAdapter = new ImageFolderAdapter(getActivity());
  29. setListAdapter(mAdapter);
  30. }
  31. public void addItem(ImageFolderInfo imageFolderInfo, Bitmap bitmap) {
  32. ImageFolderAdapter imageFolderAdapter = mAdapter;
  33. if (imageFolderAdapter != null) {
  34. imageFolderAdapter.addItem(imageFolderInfo, bitmap);
  35. mAdapter.notifyDataSetChanged();
  36. }
  37. }
  38. public int getItemSize() {
  39. ImageFolderAdapter imageFolderAdapter = mAdapter;
  40. if (imageFolderAdapter == null) {
  41. return 0;
  42. }
  43. return imageFolderAdapter.getCount();
  44. }
  45. public void onPause() {
  46. super.onPause();
  47. mIsFragmentForground = false;
  48. FolderFindTask folderFindTask = mFolderFindTask;
  49. if (folderFindTask != null) {
  50. folderFindTask.cancel(true);
  51. mFolderFindTask = null;
  52. mAdapter.releaseResource();
  53. mAdapter.notifyDataSetChanged();
  54. }
  55. }
  56. public void onResume() {
  57. super.onResume();
  58. dismissNoImageDialog();
  59. mIsFragmentForground = true;
  60. if (ActivityRequestPermissions.isRuntimePermissionSupported()) {
  61. String[] strArr = {"android.permission.WRITE_EXTERNAL_STORAGE"};
  62. ActivityRequestPermissions.Permission permission = new ActivityRequestPermissions.Permission(strArr[0], new String[]{getString(R.string.permission_dialog_title), getString(R.string.permission_dialog_title)}, new String[]{ActivityRequestPermissions.DialogParameter.setMessage2((Fragment) this, getString(R.string.permission_dialog_message_storage)), ActivityRequestPermissions.DialogParameter.setMessage3A((Fragment) this, getString(R.string.permission_dialog_message_storage), getString(R.string.permission_function_storage))});
  63. if (!ActivityRequestPermissions.checkPermission(getActivity(), strArr)) {
  64. ActivityRequestPermissions.requestPermission((Fragment) this, permission, 1);
  65. return;
  66. }
  67. }
  68. startFolderFindTask();
  69. }
  70. public void onActivityResult(int i, int i2, Intent intent) {
  71. super.onActivityResult(i, i2, intent);
  72. if (i == 1) {
  73. switch (i2) {
  74. case 0:
  75. getActivity().onBackPressed();
  76. return;
  77. default:
  78. return;
  79. }
  80. }
  81. }
  82. private void dismissNoImageDialog() {
  83. try {
  84. LocalAlertDialogFragment localAlertDialogFragment = (LocalAlertDialogFragment) getChildFragmentManager().findFragmentByTag(FRAGMENT_TAG_NO_IMAGE_DIALOG);
  85. if (localAlertDialogFragment != null) {
  86. localAlertDialogFragment.dismiss();
  87. }
  88. } catch (ClassCastException unused) {
  89. }
  90. }
  91. public void onDestroy() {
  92. super.onDestroy();
  93. }
  94. public void onDetach() {
  95. super.onDetach();
  96. ImageFolderAdapter imageFolderAdapter = mAdapter;
  97. if (imageFolderAdapter != null) {
  98. imageFolderAdapter.releaseResource();
  99. mAdapter = null;
  100. setListAdapter((ListAdapter) null);
  101. }
  102. }
  103. private void startFolderFindTask() {
  104. FolderSelectedListener folderSelectedListener = (FolderSelectedListener) getActivity();
  105. if (folderSelectedListener != null) {
  106. FolderFindTask folderFindTask = mFolderFindTask;
  107. if (folderFindTask != null) {
  108. folderFindTask.cancel(true);
  109. mAdapter.releaseResource();
  110. mAdapter.notifyDataSetChanged();
  111. }
  112. mFolderFindTask = new FolderFindTask(this);
  113. mFolderFindTask.execute(new ImageFinder[]{folderSelectedListener.getImageFinder()});
  114. }
  115. }
  116. public void onFolderFindTaskEnd() {
  117. FragmentActivity activity = getActivity();
  118. if (activity != null && mIsFragmentForground && getItemSize() <= 0) {
  119. LocalAlertDialogFragment.newInstance(activity.getResources().getString(R.string.str_no_photo), R.string.unknow_error_title, 1).show(getChildFragmentManager(), FRAGMENT_TAG_NO_IMAGE_DIALOG);
  120. }
  121. }
  122. }