InkRplnProgressFragment.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. package epson.print.inkrpln;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.net.Uri;
  5. import android.os.AsyncTask;
  6. import android.os.Bundle;
  7. import android.support.p000v4.app.FragmentManager;
  8. import java.io.IOException;
  9. import java.lang.annotation.Retention;
  10. import java.lang.annotation.RetentionPolicy;
  11. import epson.print.IprintApplication;
  12. import epson.print.R;
  13. import epson.print.ThreeButtonDialog;
  14. import epson.print.Util.EPLog;
  15. public class InkRplnProgressFragment extends Fragment {
  16. private static final String ARG_KEY_DEPENDENCY_BUILDER = "dependency_builder";
  17. private static final String DIALOG_TAG_THREE_BUTTON = "three_button_dialog";
  18. private static final String FRAGMENT_TAG = "InkDeliverySystem";
  19. private static final String KEY_FRAGMENT_STATUS = "fragment_status";
  20. public static final int STATUS_WAITE_ACTIVITY_FINISH = 1;
  21. public static final int STATUS_WAITE_DIALOG_INPUT = 3;
  22. public static final int STATUS_WAITE_DIALOG_OPEN = 2;
  23. public static final int STATUS_WAITE_THREAD_END = 0;
  24. private boolean mFragmentForeground;
  25. private int mFragmentStatus;
  26. private InkDeliverySystemTask mInkDeliverySystemTask;
  27. private InkReplenishSystem mInkReplenishSystem;
  28. @Retention(RetentionPolicy.SOURCE)
  29. private @interface FragmentStatus {
  30. }
  31. @NonNull
  32. public static InkRplnProgressFragment getInstance(@NonNull FragmentManager fragmentManager, @Nullable DependencyBuilder dependencyBuilder) {
  33. InkRplnProgressFragment inkRplnProgressFragment = (InkRplnProgressFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG);
  34. if (inkRplnProgressFragment != null) {
  35. return inkRplnProgressFragment;
  36. }
  37. InkRplnProgressFragment inkRplnProgressFragment2 = new InkRplnProgressFragment();
  38. Bundle bundle = new Bundle();
  39. bundle.putSerializable(ARG_KEY_DEPENDENCY_BUILDER, dependencyBuilder);
  40. inkRplnProgressFragment2.setArguments(bundle);
  41. fragmentManager.beginTransaction().add((Fragment) inkRplnProgressFragment2, FRAGMENT_TAG).commit();
  42. return inkRplnProgressFragment2;
  43. }
  44. private InkReplenishSystem getIPrintInkDsManager() {
  45. return mInkReplenishSystem;
  46. }
  47. private void requestToShowDialogOrFinish() {
  48. if (mInkReplenishSystem.needsDisplayInvitationDialog(IprintApplication.getInstance())) {
  49. requestToShowDialog();
  50. } else {
  51. localFinishActivity();
  52. }
  53. }
  54. private void requestToShowDialog() {
  55. FragmentActivity activity = getActivity();
  56. if (activity == null || !this.mFragmentForeground) {
  57. mFragmentStatus = 2;
  58. return;
  59. }
  60. ThreeButtonDialog threeButtonDialog = (ThreeButtonDialog) activity.getSupportFragmentManager().findFragmentByTag(DIALOG_TAG_THREE_BUTTON);
  61. if (threeButtonDialog != null) {
  62. threeButtonDialog.dismiss();
  63. }
  64. ThreeButtonDialog.newInstance(R.layout.dialog_inkrpln_invitation).show(activity.getSupportFragmentManager(), DIALOG_TAG_THREE_BUTTON);
  65. mFragmentStatus = 3;
  66. }
  67. /* access modifiers changed from: package-private */
  68. @UiThread
  69. public void launchWebBrowseAndFinishActivity() {
  70. Uri readyInkUriFromSavedData = mInkReplenishSystem.getReadyInkUriFromSavedData(IprintApplication.getInstance());
  71. if (readyInkUriFromSavedData != null) {
  72. startActivity(new Intent("android.intent.action.VIEW", readyInkUriFromSavedData));
  73. mFragmentStatus = 1;
  74. return;
  75. }
  76. localFinishActivity();
  77. }
  78. private void setInkDsServerCheckDisable(@NonNull Context context) {
  79. mInkReplenishSystem.setServerCheckDisabled(context);
  80. }
  81. public void onResume() {
  82. super.onResume();
  83. mFragmentForeground = true;
  84. switch (mFragmentStatus) {
  85. case 1:
  86. localFinishActivity();
  87. return;
  88. case 2:
  89. requestToShowDialog();
  90. return;
  91. default:
  92. return;
  93. }
  94. }
  95. public void onPause() {
  96. super.onPause();
  97. mFragmentForeground = false;
  98. }
  99. private void localFinishActivity() {
  100. mFragmentStatus = 1;
  101. FragmentActivity activity = getActivity();
  102. if (activity != null) {
  103. activity.finish();
  104. }
  105. }
  106. public void onCreate(Bundle bundle) {
  107. super.onCreate(bundle);
  108. setRetainInstance(true);
  109. DependencyBuilder dependencyBuilder = (DependencyBuilder) getArguments().getSerializable(ARG_KEY_DEPENDENCY_BUILDER);
  110. if (dependencyBuilder == null) {
  111. dependencyBuilder = new DependencyBuilder();
  112. }
  113. mInkReplenishSystem = new InkReplenishSystem(dependencyBuilder.createPrinterAdapter(), dependencyBuilder.createInkRplnRepository());
  114. mFragmentForeground = false;
  115. mFragmentStatus = getFragmentStatusFromSavedInstanceState(bundle);
  116. if (mFragmentStatus == 0) {
  117. mInkDeliverySystemTask = new InkDeliverySystemTask();
  118. mInkDeliverySystemTask.execute(new Void[0]);
  119. }
  120. }
  121. private int getFragmentStatusFromSavedInstanceState(Bundle bundle) {
  122. if (bundle == null) {
  123. return 0;
  124. }
  125. int i = bundle.getInt(KEY_FRAGMENT_STATUS, 0);
  126. switch (i) {
  127. case 0:
  128. case 1:
  129. case 2:
  130. case 3:
  131. return i;
  132. default:
  133. return 0;
  134. }
  135. }
  136. public void onSaveInstanceState(Bundle bundle) {
  137. super.onSaveInstanceState(bundle);
  138. bundle.putInt(KEY_FRAGMENT_STATUS, mFragmentStatus);
  139. }
  140. private class InkDeliverySystemTask extends AsyncTask<Void, Void, Void> {
  141. private InkDeliverySystemTask() {
  142. }
  143. protected Void doInBackground(Void... voidArr) {
  144. try {
  145. InkRplnProgressFragment.this.getIPrintInkDsManager().tryRecordPrinterInfoFromServer(IprintApplication.getInstance());
  146. return null;
  147. } catch (IOException | IllegalArgumentException e) {
  148. EPLog.e("InkDeliverySystemTask", "exception <" + e.toString() + ">");
  149. return null;
  150. }
  151. }
  152. protected void onPostExecute(Void voidR) {
  153. InkRplnProgressFragment.this.requestToShowDialogOrFinish();
  154. }
  155. }
  156. }