ImagePreviewActivity.java 18 KB

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