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