ImagePreviewActivity.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. package com.epson.cameracopy.ui;
  2. import android.annotation.SuppressLint;
  3. import android.app.AlertDialog;
  4. import android.app.Dialog;
  5. import android.content.DialogInterface;
  6. import android.content.Intent;
  7. import android.content.IntentFilter;
  8. import android.content.res.Resources;
  9. import android.graphics.Bitmap;
  10. import android.media.ExifInterface;
  11. import android.os.Bundle;
  12. import android.support.p000v4.app.Fragment;
  13. import android.view.LayoutInflater;
  14. import android.view.Menu;
  15. import android.view.MenuItem;
  16. import android.view.View;
  17. import android.view.ViewGroup;
  18. import android.widget.Button;
  19. import android.widget.ProgressBar;
  20. import com.epson.cameracopy.alt.UiCommon;
  21. import com.epson.cameracopy.device.CameraFile;
  22. import com.epson.cameracopy.device.CameraPreviewControl;
  23. import com.epson.mobilephone.common.wifidirect.NfcTagUtils;
  24. import epson.common.ImageUtil;
  25. import epson.common.ScalableImageView;
  26. import epson.print.ActivityIACommon;
  27. import epson.print.ActivityRequestPermissions;
  28. import epson.print.IprintApplication;
  29. import epson.print.Util.CommonMessage;
  30. import java.io.File;
  31. import java.io.IOException;
  32. import java.io.Serializable;
  33. import java.util.ArrayList;
  34. import java.util.Date;
  35. import org.opencv.videoio.Videoio;
  36. /* renamed from: com.epson.cameracopy.ui.ImagePreviewActivity */
  37. public class ImagePreviewActivity extends ActivityIACommon {
  38. public static final String PARAM_CAMERA_FILE = "camera-file";
  39. public static final String PARAM_PICTURE_FILENAME = "file_name";
  40. public static final String PARAM_SHOW_SIZE_SET_MESSAGE_ON_PRINT_PREVIEW = "pram-sizeset-message-printpreview";
  41. private static final int REQEST_CODE_IMAGE_CROP = 1;
  42. private static final int REQEST_RUNTIMEPERMMISSION = 2;
  43. private static final int REQUEST_WRITE_PERMISSION_FOR_IMAGE_FORMAT_CONVERT = 3;
  44. private PlaceholderFragment mFragment;
  45. public boolean onCreateOptionsMenu(Menu menu) {
  46. return true;
  47. }
  48. protected void onCreate(Bundle bundle) {
  49. super.onCreate(bundle);
  50. setContentView(R.layout.activity_picture_view);
  51. setActionBar(R.string.image_preview_title, true);
  52. if (bundle == null) {
  53. Intent intent = getIntent();
  54. if (intent == null) {
  55. finish();
  56. return;
  57. }
  58. String stringExtra = intent.getStringExtra(PARAM_PICTURE_FILENAME);
  59. CameraFile cameraFile = (CameraFile) intent.getSerializableExtra(PARAM_CAMERA_FILE);
  60. if (stringExtra == null && cameraFile == null) {
  61. finish();
  62. return;
  63. }
  64. Bundle extras = intent.getExtras();
  65. if (extras.containsKey(PARAM_PICTURE_FILENAME) && extras.containsKey(PARAM_CAMERA_FILE)) {
  66. finish();
  67. } else if (cameraFile == null || new File(cameraFile.getValidFileName()).exists()) {
  68. mFragment = PlaceholderFragment.getInstance(stringExtra, cameraFile);
  69. getSupportFragmentManager().beginTransaction().add(R.id.container, (Fragment) mFragment).commit();
  70. } else {
  71. finish();
  72. }
  73. }
  74. }
  75. protected void onPause() {
  76. super.onPause();
  77. NfcTagUtils.disableForegroundDispatch(this);
  78. }
  79. protected void onResume() {
  80. super.onResume();
  81. NfcTagUtils.enableForegroundDispatch(this, (IntentFilter[]) null, (String[][]) null);
  82. }
  83. protected void onNewIntent(Intent intent) {
  84. super.onNewIntent(intent);
  85. CommonMessage.showInvalidPrintMessageIfEpsonNfcPrinter(this, intent);
  86. }
  87. public boolean onOptionsItemSelected(MenuItem menuItem) {
  88. menuItem.getItemId();
  89. return super.onOptionsItemSelected(menuItem);
  90. }
  91. public void onBackPressed() {
  92. PlaceholderFragment placeholderFragment = mFragment;
  93. if (placeholderFragment == null || !placeholderFragment.checkProgress()) {
  94. backCameraPreviewActivity();
  95. }
  96. }
  97. public void backCameraPreviewActivity() {
  98. Intent intent = new Intent(this, CameraPreviewActivity.class);
  99. intent.addFlags(67108864);
  100. intent.addFlags(Videoio.CAP_INTELPERC_DEPTH_GENERATOR);
  101. startActivity(intent);
  102. }
  103. /* renamed from: com.epson.cameracopy.ui.ImagePreviewActivity$PlaceholderFragment */
  104. public static class PlaceholderFragment extends Fragment {
  105. static final /* synthetic */ boolean $assertionsDisabled = false;
  106. private static final String KEY_PREVIEW_FILE = "preview-file";
  107. private static final String PARAM_CAMERA_FILE = "camera-file";
  108. private static final String PARAM_FILE_NAME = "file_name";
  109. ImagePreviewFile mImagePreviewFile;
  110. private ScalableImageView mImageView;
  111. private ProgressBar mProgressBar;
  112. private Button mSaveButton;
  113. private boolean mShowSetDisplaySizeMessageOnPrintPreview;
  114. static {
  115. Class<ImagePreviewActivity> cls = ImagePreviewActivity.class;
  116. }
  117. public static PlaceholderFragment getInstance(String str, CameraFile cameraFile) {
  118. PlaceholderFragment placeholderFragment = new PlaceholderFragment();
  119. Bundle bundle = new Bundle();
  120. bundle.putCharSequence("file_name", str);
  121. bundle.putSerializable("camera-file", cameraFile);
  122. placeholderFragment.setArguments(bundle);
  123. return placeholderFragment;
  124. }
  125. private void setPreview(ScalableImageView scalableImageView, String str) {
  126. scalableImageView.SetImageBitmap(ImageUtil.loadBitmap(str, 1200, 1200, true, true), getResources());
  127. try {
  128. int attributeInt = new ExifInterface(str).getAttributeInt(android.support.media.ExifInterface.TAG_ORIENTATION, 1);
  129. if (attributeInt == 3) {
  130. scalableImageView.SetRotate(180.0f);
  131. } else if (attributeInt == 6) {
  132. scalableImageView.SetRotate(90.0f);
  133. } else if (attributeInt != 8) {
  134. scalableImageView.SetRotate(0.0f);
  135. } else {
  136. scalableImageView.SetRotate(270.0f);
  137. }
  138. } catch (IOException unused) {
  139. }
  140. }
  141. public void setPreview() {
  142. String printFileName = mImagePreviewFile.getPrintFileName();
  143. if (printFileName != null) {
  144. setPreview(mImageView, printFileName);
  145. }
  146. }
  147. public void restorePreview() {
  148. ScalableImageView scalableImageView = mImageView;
  149. if (scalableImageView != null && mImagePreviewFile != null && scalableImageView.getBitmap() == null) {
  150. setPreview();
  151. }
  152. }
  153. public void releasePreviewBitmap() {
  154. ScalableImageView scalableImageView = mImageView;
  155. if (scalableImageView != null) {
  156. scalableImageView.SetImageBitmap((Bitmap) null, (Resources) null);
  157. }
  158. }
  159. public void onCreate(Bundle bundle) {
  160. super.onCreate(bundle);
  161. if (bundle != null) {
  162. mImagePreviewFile = (ImagePreviewFile) bundle.getSerializable(KEY_PREVIEW_FILE);
  163. return;
  164. }
  165. Bundle arguments = getArguments();
  166. if (arguments != null) {
  167. CameraFile cameraFile = (CameraFile) arguments.getSerializable("camera-file");
  168. if (cameraFile != null) {
  169. mShowSetDisplaySizeMessageOnPrintPreview = false;
  170. mImagePreviewFile = new CameraFileAdapter(cameraFile);
  171. return;
  172. }
  173. mShowSetDisplaySizeMessageOnPrintPreview = true;
  174. }
  175. }
  176. public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
  177. View inflate = layoutInflater.inflate(R.layout.fragment_image_preview_view, viewGroup, false);
  178. mImageView = (ScalableImageView) inflate.findViewById(R.id.preview_view);
  179. mProgressBar = (ProgressBar) inflate.findViewById(R.id.progressBar);
  180. mSaveButton = (Button) inflate.findViewById(R.id.save_button);
  181. mSaveButton.setOnClickListener(new View.OnClickListener() {
  182. public void onClick(View view) {
  183. if (!PlaceholderFragment.this.checkProgress()) {
  184. if (ActivityRequestPermissions.isRuntimePermissionSupported()) {
  185. String[] strArr = {"android.permission.WRITE_EXTERNAL_STORAGE"};
  186. String[] strArr2 = {PlaceholderFragment.this.getString(R.string.permission_dialog_title), PlaceholderFragment.this.getString(R.string.permission_dialog_title)};
  187. PlaceholderFragment placeholderFragment = PlaceholderFragment.this;
  188. PlaceholderFragment placeholderFragment2 = PlaceholderFragment.this;
  189. ActivityRequestPermissions.Permission permission = new ActivityRequestPermissions.Permission(strArr[0], strArr2, new String[]{ActivityRequestPermissions.DialogParameter.setMessage2((Fragment) placeholderFragment, placeholderFragment.getString(R.string.permission_dialog_message_storage)), ActivityRequestPermissions.DialogParameter.setMessage3A((Fragment) placeholderFragment2, placeholderFragment2.getString(R.string.permission_dialog_message_storage), PlaceholderFragment.this.getString(R.string.permission_function_storage))});
  190. if (!ActivityRequestPermissions.checkPermission(PlaceholderFragment.this.getActivity(), strArr)) {
  191. ActivityRequestPermissions.requestPermission((Fragment) PlaceholderFragment.this, permission, 2);
  192. return;
  193. }
  194. }
  195. PlaceholderFragment.this.saveImage();
  196. }
  197. }
  198. });
  199. ((Button) inflate.findViewById(R.id.print_button)).setOnClickListener(new View.OnClickListener() {
  200. public void onClick(View view) {
  201. if (!PlaceholderFragment.this.checkProgress()) {
  202. PlaceholderFragment.this.startPrintPreviewActivity();
  203. }
  204. }
  205. });
  206. ((Button) inflate.findViewById(R.id.retouch_button)).setOnClickListener(new View.OnClickListener() {
  207. public void onClick(View view) {
  208. if (!PlaceholderFragment.this.checkProgress()) {
  209. PlaceholderFragment.this.startImageCollectActivity();
  210. }
  211. }
  212. });
  213. if (mImagePreviewFile != null) {
  214. mProgressBar.setVisibility(View.GONE);
  215. setPreview();
  216. UiCommon.setButtonEnabled(mSaveButton, mImagePreviewFile.needSaveButton());
  217. } else {
  218. mProgressBar.setVisibility(View.VISIBLE);
  219. observeImageConvertFromArgument();
  220. }
  221. return inflate;
  222. }
  223. private void observeImageConvertFromArgument() {
  224. String str;
  225. Bundle arguments = getArguments();
  226. if (arguments != null && (str = (String) arguments.getCharSequence("file_name")) != null) {
  227. observeImageFolderFile(str);
  228. }
  229. }
  230. private void observeImageFolderFile(@Nullable String str) {
  231. if (str != null) {
  232. ImageFolderFile imageFolderFile = new ImageFolderFile(str);
  233. if (!imageFolderFile.needsConvert(IprintApplication.getInstance()) || !requestWritePermissionIfNeeded()) {
  234. ImageFolderFileViewModel imageFolderFileViewModel = (ImageFolderFileViewModel) ViewModelProviders.m0of((Fragment) this).get(ImageFolderFileViewModel.class);
  235. imageFolderFileViewModel.setOriginalData(imageFolderFile);
  236. imageFolderFileViewModel.getData().observe(this, new Observer<ImageFolderFile>() {
  237. public void onChanged(@Nullable ImageFolderFile imageFolderFile) {
  238. PlaceholderFragment.this.localFolderFileViewModelPrepared(imageFolderFile);
  239. }
  240. });
  241. }
  242. }
  243. }
  244. private boolean requestWritePermissionIfNeeded() {
  245. if (ActivityRequestPermissions.isRuntimePermissionSupported()) {
  246. String[] strArr = {"android.permission.WRITE_EXTERNAL_STORAGE"};
  247. 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))});
  248. if (!ActivityRequestPermissions.checkPermission(getActivity(), strArr)) {
  249. ActivityRequestPermissions.requestPermission((Fragment) this, permission, 3);
  250. return true;
  251. }
  252. }
  253. return false;
  254. }
  255. private boolean checkProgress() {
  256. return mProgressBar.getVisibility() == 0;
  257. }
  258. private void localFolderFileViewModelPrepared(@Nullable ImageFolderFile imageFolderFile) {
  259. mProgressBar.setVisibility(View.GONE);
  260. mImagePreviewFile = imageFolderFile;
  261. UiCommon.setButtonEnabled(mSaveButton, mImagePreviewFile.needSaveButton());
  262. restorePreview();
  263. }
  264. public void onStart() {
  265. super.onStart();
  266. restorePreview();
  267. }
  268. public void onPause() {
  269. if (getActivity().isFinishing()) {
  270. releasePreviewBitmap();
  271. mImagePreviewFile.deleteTemporaryFile();
  272. }
  273. super.onPause();
  274. }
  275. public void onStop() {
  276. releasePreviewBitmap();
  277. super.onStop();
  278. }
  279. public void onSaveInstanceState(Bundle bundle) {
  280. super.onSaveInstanceState(bundle);
  281. bundle.putSerializable(KEY_PREVIEW_FILE, (Serializable) mImagePreviewFile);
  282. }
  283. public void saveImage() {
  284. UiCommon.setButtonEnabled(mSaveButton, false);
  285. if (!mImagePreviewFile.doSave(CameraPreviewControl.getInstance(getActivity()).getSaveDirecotry())) {
  286. UiCommon.setButtonEnabled(mSaveButton, true);
  287. SimpleMessageDialogFragment.newInstance(R.string.file_save_error_message).show(getFragmentManager(), "error-dialog");
  288. return;
  289. }
  290. File file = new File(mImagePreviewFile.getPrintFileName());
  291. ImageUtil.galleryAddPic(getActivity(), file);
  292. FileSaveDialogFragment.newInstance(1, file.getParentFile().getName()).show(getFragmentManager(), "ok-dialog");
  293. }
  294. public void startPrintPreviewActivity() {
  295. String printFileName = mImagePreviewFile.getPrintFileName();
  296. if (printFileName != null) {
  297. Intent intent = new Intent(getActivity(), PrintPreviewActivity.class);
  298. ArrayList arrayList = new ArrayList(1);
  299. arrayList.add(printFileName);
  300. intent.putExtra("imageList", arrayList);
  301. if (mShowSetDisplaySizeMessageOnPrintPreview) {
  302. intent.putExtra(PrintPreviewActivity.PARAM_DISPLAY_SIZE_SET_MESSAGE, true);
  303. }
  304. startActivity(intent);
  305. }
  306. }
  307. public void startImageCollectActivity() {
  308. String imageProcFileName = mImagePreviewFile.getImageProcFileName(getActivity());
  309. if (imageProcFileName != null) {
  310. Intent intent = new Intent(getActivity(), CropImageActivity.class);
  311. intent.putExtra(CropImageActivity.IMAGE_FILE_NAME, imageProcFileName);
  312. startActivityForResult(intent, 1);
  313. }
  314. }
  315. public void onActivityResult(int i, int i2, Intent intent) {
  316. String stringExtra;
  317. switch (i) {
  318. case 1:
  319. if (i2 == -1 && (stringExtra = intent.getStringExtra(CropImageActivity.RESULT_COLLECTED_FILE_NAME)) != null) {
  320. mImagePreviewFile.deleteTemporaryFile();
  321. mImagePreviewFile = new CameraFileAdapter(new CameraFile(new Date(), stringExtra));
  322. setPreview();
  323. UiCommon.setButtonEnabled(mSaveButton, mImagePreviewFile.needSaveButton());
  324. mShowSetDisplaySizeMessageOnPrintPreview = false;
  325. startPrintPreviewActivity();
  326. return;
  327. }
  328. return;
  329. case 2:
  330. if (i2 == -1) {
  331. saveImage();
  332. return;
  333. }
  334. return;
  335. case 3:
  336. if (i2 != -1) {
  337. FragmentActivity activity = getActivity();
  338. if (activity != null) {
  339. activity.finish();
  340. return;
  341. }
  342. return;
  343. }
  344. observeImageConvertFromArgument();
  345. return;
  346. default:
  347. return;
  348. }
  349. }
  350. }
  351. @SuppressLint({"ValidFragment"})
  352. /* renamed from: com.epson.cameracopy.ui.ImagePreviewActivity$FileSaveDialogFragment */
  353. public static class FileSaveDialogFragment extends DialogFragment {
  354. private static final String PARAM_FILENAME = "filename";
  355. private static final String PARAM_TYPE = "type";
  356. private String mFileName;
  357. static FileSaveDialogFragment newInstance(int i, String str) {
  358. FileSaveDialogFragment fileSaveDialogFragment = new FileSaveDialogFragment();
  359. Bundle bundle = new Bundle();
  360. bundle.putInt("type", i);
  361. bundle.putString(PARAM_FILENAME, str);
  362. fileSaveDialogFragment.setArguments(bundle);
  363. return fileSaveDialogFragment;
  364. }
  365. public void onCreate(Bundle bundle) {
  366. super.onCreate(bundle);
  367. Bundle arguments = getArguments();
  368. arguments.getInt("type");
  369. mFileName = arguments.getString(PARAM_FILENAME);
  370. }
  371. public Dialog onCreateDialog(Bundle bundle) {
  372. super.onCreateDialog(bundle);
  373. return new AlertDialog.Builder(getActivity()).setMessage(getResources().getString(R.string.image_save_message, new Object[]{mFileName})).setPositiveButton(R.string.ok_button, new DialogInterface.OnClickListener() {
  374. public void onClick(DialogInterface dialogInterface, int i) {
  375. }
  376. }).create();
  377. }
  378. }
  379. }