ImagePreviewActivity.java 19 KB

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