ImageSelectActivity.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. package epson.print.imgsel;
  2. import android.app.AlertDialog;
  3. import android.app.Dialog;
  4. import android.content.DialogInterface;
  5. import android.content.Intent;
  6. import android.os.Bundle;
  7. import android.support.p000v4.app.FragmentManager;
  8. import android.view.Menu;
  9. import android.view.MenuItem;
  10. import java.io.File;
  11. import java.util.ArrayList;
  12. import epson.common.Utils;
  13. import epson.print.ActivityIACommon;
  14. import epson.print.R;
  15. public abstract class ImageSelectActivity extends ActivityIACommon implements ImageFolderListFragment.FolderSelectedListener, ImageGridFragment.ImageGridListener, LocalAlertDialogFragment.DialogCallback {
  16. public static final int DIALOG_CODE_ERROR_FINISH = 1;
  17. public static final String PARAM_SELECTED_FILE_LIST = "selected_files";
  18. private static final String STATE_SELECT_LIST = "select_list";
  19. private static final String TAG_FRAGMENT_FOLDER_LIST = "folder_list";
  20. private static final String TAG_FRAGMENT_IMAGE_GRID = "image_grid";
  21. private ImageSelector mImageSelector;
  22. public abstract ImageFinder getImageFinder();
  23. public int getMessageType() {
  24. return 0;
  25. }
  26. protected abstract void goNext();
  27. public boolean showNfcInvalidMessageOnPagerActivity() {
  28. return false;
  29. }
  30. public abstract boolean singleImageMode();
  31. protected void onCreate(Bundle bundle) {
  32. super.onCreate(bundle);
  33. setContentView((int) R.layout.activity_image_selector);
  34. setActionBar("", true);
  35. if (bundle == null) {
  36. getSupportFragmentManager().beginTransaction().add(R.id.container, new ImageFolderListFragment(), TAG_FRAGMENT_FOLDER_LIST).commit();
  37. }
  38. mImageSelector = new ImageSelector();
  39. if (bundle != null) {
  40. ArrayList<String> stringArrayList = bundle.getStringArrayList(STATE_SELECT_LIST);
  41. if (stringArrayList != null) {
  42. mImageSelector.replaceFiles(stringArrayList);
  43. }
  44. } else {
  45. ArrayList<String> selectedListFromIntent = getSelectedListFromIntent(getIntent());
  46. if (selectedListFromIntent != null) {
  47. mImageSelector.replaceFiles(selectedListFromIntent);
  48. }
  49. }
  50. if (!Utils.isMediaMounted()) {
  51. LocalAlertDialogFragment.newInstance(getResources().getString(R.string.str_no_sdcard), 1).show(getSupportFragmentManager(), "alert_dialog");
  52. } else {
  53. AltThumbnailCache.initThumbnailCache(getApplicationContext());
  54. }
  55. }
  56. private ArrayList<String> getSelectedListFromIntent(Intent intent) {
  57. if (intent == null) {
  58. return null;
  59. }
  60. return intent.getStringArrayListExtra(PARAM_SELECTED_FILE_LIST);
  61. }
  62. public boolean onCreateOptionsMenu(Menu menu) {
  63. int selectedNumber = mImageSelector.selectedNumber();
  64. getMenuInflater().inflate(R.C2138menu.menu_image_selector, menu);
  65. MenuItem findItem = menu.findItem(R.id.action_go_preview);
  66. if (!singleImageMode()) {
  67. findItem.setEnabled(selectedNumber > 0);
  68. } else {
  69. findItem.setVisible(false);
  70. }
  71. if (selectedNumber <= 0) {
  72. ImageGridFragment gridFragment = getGridFragment();
  73. if (gridFragment == null) {
  74. setTitle(getResources().getString(R.string.FunctionName_iPrint_Photo));
  75. } else {
  76. String folderName = gridFragment.getFolderName();
  77. if (folderName != null) {
  78. setTitle(new File(folderName).getName());
  79. } else {
  80. setTitle(getResources().getString(R.string.FunctionName_iPrint_Photo));
  81. }
  82. }
  83. } else {
  84. setTitle(getResources().getString(R.string.photo_selected, new Object[]{Integer.valueOf(selectedNumber)}));
  85. }
  86. MenuItem findItem2 = menu.findItem(R.id.action_zoom);
  87. MenuItem findItem3 = menu.findItem(R.id.action_select);
  88. findItem2.setVisible(false);
  89. findItem3.setVisible(false);
  90. if (getGridFragment() != null && !singleImageMode()) {
  91. switch (getGridFragment().getPhotoSelectionMode()) {
  92. case 0:
  93. findItem2.setVisible(false);
  94. findItem3.setVisible(true);
  95. break;
  96. case 1:
  97. findItem2.setVisible(true);
  98. findItem3.setVisible(false);
  99. break;
  100. }
  101. }
  102. return true;
  103. }
  104. public boolean onOptionsItemSelected(MenuItem menuItem) {
  105. int itemId = menuItem.getItemId();
  106. ImageGridFragment gridFragment = getGridFragment();
  107. if (itemId == R.id.action_thumbnail_type_select) {
  108. showOsCacheDialog();
  109. return true;
  110. } else if (itemId == R.id.action_go_preview) {
  111. goNext();
  112. return true;
  113. } else {
  114. if (itemId == R.id.action_select) {
  115. if (gridFragment != null) {
  116. gridFragment.setPhotoSelectionMode(1);
  117. supportInvalidateOptionsMenu();
  118. return true;
  119. }
  120. } else if (itemId == R.id.action_zoom && gridFragment != null) {
  121. gridFragment.setPhotoSelectionMode(0);
  122. supportInvalidateOptionsMenu();
  123. return true;
  124. }
  125. return super.onOptionsItemSelected(menuItem);
  126. }
  127. }
  128. protected void showOsCacheDialog() {
  129. OsCacheDialog.newInstance().show(getSupportFragmentManager(), "dialog");
  130. }
  131. protected void onSaveInstanceState(Bundle bundle) {
  132. bundle.putStringArrayList(STATE_SELECT_LIST, mImageSelector.getFileArrayList());
  133. super.onSaveInstanceState(bundle);
  134. }
  135. public void onFolderSelected(ImageFolderInfo imageFolderInfo) {
  136. startImageGridFragment(imageFolderInfo.mCanonicalName);
  137. }
  138. private void startImageGridFragment(String str) {
  139. getSupportFragmentManager().beginTransaction().replace(R.id.container, ImageGridFragment.newInstance(str), TAG_FRAGMENT_IMAGE_GRID).addToBackStack(TAG_FRAGMENT_IMAGE_GRID).commit();
  140. }
  141. protected void onPause() {
  142. if (isFinishing()) {
  143. AltThumbnailCache.deleteCacheDirectory();
  144. }
  145. super.onPause();
  146. }
  147. protected void refreshSelector(ArrayList<String> arrayList) {
  148. if (arrayList != null) {
  149. mImageSelector.replaceFiles(arrayList);
  150. if (getGridFragment() != null) {
  151. getGridFragment().updateImageSelector(arrayList);
  152. }
  153. supportInvalidateOptionsMenu();
  154. }
  155. }
  156. private ImageGridFragment getGridFragment() {
  157. return (ImageGridFragment) getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT_IMAGE_GRID);
  158. }
  159. public ImageSelector getImageSelector() {
  160. return mImageSelector;
  161. }
  162. public void onDialogCallback(int i) {
  163. if (i == 1) {
  164. finish();
  165. }
  166. }
  167. public void changeThumbnailCreateMethod(boolean z) {
  168. AltThumbnailCache.setThumbnailCreateMethod(this, z);
  169. reloadFragment();
  170. }
  171. private void reloadFragment() {
  172. if (TAG_FRAGMENT_IMAGE_GRID.equals(getActiveFragmentTag())) {
  173. getSupportFragmentManager().popBackStack();
  174. }
  175. getSupportFragmentManager().beginTransaction().replace(R.id.container, new ImageFolderListFragment(), TAG_FRAGMENT_FOLDER_LIST).commit();
  176. }
  177. private String getActiveFragmentTag() {
  178. FragmentManager supportFragmentManager = getSupportFragmentManager();
  179. int backStackEntryCount = supportFragmentManager.getBackStackEntryCount();
  180. if (backStackEntryCount >= 1) {
  181. return supportFragmentManager.getBackStackEntryAt(backStackEntryCount - 1).getName();
  182. }
  183. if (supportFragmentManager.findFragmentByTag(TAG_FRAGMENT_FOLDER_LIST) != null) {
  184. return TAG_FRAGMENT_FOLDER_LIST;
  185. }
  186. return null;
  187. }
  188. public static class OsCacheDialog extends DialogFragment {
  189. private boolean mUseMediaStoreThumbnail;
  190. public static OsCacheDialog newInstance() {
  191. return new OsCacheDialog();
  192. }
  193. public Dialog onCreateDialog(Bundle bundle) {
  194. CharSequence[] charSequenceArr = {getActivity().getString(R.string.str_use_mediastorage_thumbnail)};
  195. mUseMediaStoreThumbnail = AltThumbnailCache.isUseMediaStoreThumbnail();
  196. boolean[] zArr = {this.mUseMediaStoreThumbnail};
  197. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  198. builder.setPositiveButton(R.string.f343ok, new DialogInterface.OnClickListener() {
  199. public void onClick(DialogInterface dialogInterface, int i) {
  200. onOkPressed();
  201. }
  202. }).setNegativeButton(R.string.str_cancel, new DialogInterface.OnClickListener() {
  203. public void onClick(DialogInterface dialogInterface, int i) {
  204. }
  205. }).setMultiChoiceItems(charSequenceArr, zArr, new DialogInterface.OnMultiChoiceClickListener() {
  206. public void onClick(DialogInterface dialogInterface, int i, boolean z) {
  207. if (i == 0) {
  208. boolean unused = mUseMediaStoreThumbnail = z;
  209. }
  210. }
  211. });
  212. AlertDialog create = builder.create();
  213. create.setCanceledOnTouchOutside(false);
  214. return create;
  215. }
  216. private void onOkPressed() {
  217. ImageSelectActivity imageSelectActivity = (ImageSelectActivity) getActivity();
  218. if (imageSelectActivity != null) {
  219. imageSelectActivity.changeThumbnailCreateMethod(mUseMediaStoreThumbnail);
  220. }
  221. }
  222. }
  223. }