MemcardTopSuper.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. package com.epson.memcardacc;
  2. import android.os.AsyncTask;
  3. import android.os.Bundle;
  4. import com.epson.memcardacc.LocalAlertDialogFragment;
  5. import com.epson.memcardacc.MemcardCheckTask;
  6. import com.epson.memcardacc.PasswordDialogFragment;
  7. import com.epson.mobilephone.common.wifidirect.WiFiDirectManager;
  8. import epson.common.DialogProgress;
  9. import epson.common.DialogProgressViewModel;
  10. import epson.print.ActivityIACommon;
  11. import java.util.Deque;
  12. public abstract class MemcardTopSuper extends ActivityIACommon implements PasswordDialogFragment.Callback, LocalAlertDialogFragment.DialogCallback {
  13. protected static final int DIALOG_AUTHENTICATION = 50;
  14. protected static final int DIALOG_COMMUNICATION_ERROR = 2;
  15. protected static final int DIALOG_MEMCARD_NOT_FOUND = 1;
  16. protected static final int DIALOG_NO_DIALOG = 0;
  17. protected static final int DIALOG_PRINTER_BUSY = 3;
  18. protected static final String DIALOG_PROGRESS = "dialog_progress";
  19. protected static final String FRAGMENT_TAG_ERROR_DIALOG = "error_dialog";
  20. protected static final String FRAGMENT_TAG_PASSWORD_DIALOG = "password_dialog";
  21. protected static final String FRAGMENT_TAG_PROGRESS = "progress_dialog";
  22. protected static final int LAUNCH_TYPE_NOT_SET = 0;
  23. protected static final int LAUNCH_TYPE_READER = 2;
  24. protected static final int LAUNCH_TYPE_WRITER = 1;
  25. boolean isTryConnectSimpleAp = false;
  26. protected boolean mActivityIsFinishing = false;
  27. protected MemcardBitmapCache mBitmapCache;
  28. protected boolean mIsActivityForeground;
  29. protected int mLaunchType;
  30. protected MemcardCheckTask mMemcardCheckTask;
  31. private DialogProgressViewModel mModelDialog;
  32. private PasswordDialogFragment mPasswordDialogFragment;
  33. protected int mReservationDialog;
  34. protected abstract int getStorageSetType();
  35. public abstract void launchReaderActivity(int i);
  36. public abstract void launchWriterActivity();
  37. public void onDialogCallback(int i) {
  38. }
  39. protected void onCreate(Bundle bundle) {
  40. super.onCreate(bundle);
  41. mModelDialog = (DialogProgressViewModel) ViewModelProviders.m2of((FragmentActivity) this).get(DialogProgressViewModel.class);
  42. mModelDialog.getDialogJob().observe(this, new Observer() {
  43. public final void onChanged(Object obj) {
  44. MemcardTopSuper.lambda$onCreate$0(MemcardTopSuper.this, (Deque) obj);
  45. }
  46. });
  47. mReservationDialog = 0;
  48. }
  49. public static /* synthetic */ void lambda$onCreate$0(MemcardTopSuper memcardTopSuper, Deque deque) {
  50. String[] checkQueue = memcardTopSuper.mModelDialog.checkQueue();
  51. if (checkQueue != null) {
  52. String str = checkQueue[0];
  53. String str2 = checkQueue[1];
  54. if (str2.equals("do_show")) {
  55. memcardTopSuper.showDialog(str);
  56. }
  57. if (str2.equals("do_dismiss")) {
  58. memcardTopSuper.dismissDialog(str);
  59. }
  60. }
  61. }
  62. protected void onResume() {
  63. super.onResume();
  64. mIsActivityForeground = true;
  65. if (!showDialogOnResume() && mLaunchType != 0) {
  66. execMemcardCheck();
  67. isTryConnectSimpleAp = false;
  68. }
  69. }
  70. private boolean showDialogOnResume() {
  71. int i = mReservationDialog;
  72. mReservationDialog = 0;
  73. if (i == 0) {
  74. return false;
  75. }
  76. if (i != 50) {
  77. localShowDialog(i);
  78. return false;
  79. }
  80. showPasswordDialog(true);
  81. return true;
  82. }
  83. protected void onPause() {
  84. mIsActivityForeground = false;
  85. if (isFinishing()) {
  86. mActivityIsFinishing = true;
  87. CifsAccess.clearSmbAuthInfo();
  88. releaseResource();
  89. }
  90. super.onPause();
  91. }
  92. private void disconnectWifiDirect() {
  93. WiFiDirectManager.disconnect(this, WiFiDirectManager.DEVICE_TYPE_PRINTER, MemcardUtil.getPrinterIpAddress(this));
  94. }
  95. protected void onStart() {
  96. super.onStart();
  97. }
  98. protected void onStop() {
  99. super.onStop();
  100. }
  101. protected void startMemcardStorageCheck() {
  102. if (!chechAndConnectWiFiDirect()) {
  103. execMemcardCheck();
  104. }
  105. }
  106. protected boolean chechAndConnectWiFiDirect() {
  107. if (!WiFiDirectManager.isNeedConnect(this, WiFiDirectManager.DEVICE_TYPE_PRINTER)) {
  108. isTryConnectSimpleAp = false;
  109. } else if (!this.isTryConnectSimpleAp) {
  110. isTryConnectSimpleAp = true;
  111. if (WiFiDirectManager.reconnect(this, WiFiDirectManager.DEVICE_TYPE_PRINTER, -1)) {
  112. return true;
  113. }
  114. }
  115. return false;
  116. }
  117. protected void execMemcardCheck() {
  118. MemcardCheckTask memcardCheckTask = mMemcardCheckTask;
  119. if (memcardCheckTask == null || memcardCheckTask.getStatus() == AsyncTask.Status.FINISHED) {
  120. mMemcardCheckTask = new MemcardCheckTask(this, new MemcardCheckTask.MemcardCheckCallback() {
  121. public void onAuthInfoRequired(MemcardCheckTask memcardCheckTask, boolean z) {
  122. MemcardTopSuper.this.authInfoRequested(memcardCheckTask, z);
  123. }
  124. public void onPreExecute() {
  125. MemcardTopSuper.this.onPreMemcardChek();
  126. }
  127. public void onMemcardCheckEnd(Integer num, int i) {
  128. MemcardTopSuper.this.onMemcardCheckEnd(num, i);
  129. }
  130. }, getStorageSetType());
  131. mMemcardCheckTask.execute(new Void[0]);
  132. }
  133. }
  134. private void onPreMemcardChek() {
  135. mModelDialog.doShow(DIALOG_PROGRESS);
  136. }
  137. public void onPositiveClicked(String str, String str2) {
  138. MemcardCheckTask memcardCheckTask = mMemcardCheckTask;
  139. if (memcardCheckTask != null) {
  140. memcardCheckTask.setAuthData(str, str2);
  141. }
  142. mModelDialog.doShow(DIALOG_PROGRESS);
  143. }
  144. public void onNegativeClicked() {
  145. mLaunchType = 0;
  146. MemcardCheckTask memcardCheckTask = mMemcardCheckTask;
  147. if (memcardCheckTask != null) {
  148. memcardCheckTask.cancel(true);
  149. }
  150. mModelDialog.doShow(DIALOG_PROGRESS);
  151. }
  152. private void showPasswordDialog(boolean z) {
  153. if (!mActivityIsFinishing) {
  154. PasswordDialogFragment passwordDialogFragment = mPasswordDialogFragment;
  155. if (passwordDialogFragment != null) {
  156. passwordDialogFragment.dismissAllowingStateLoss();
  157. }
  158. mModelDialog.doDismiss(DIALOG_PROGRESS);
  159. mPasswordDialogFragment = PasswordDialogFragment.newInstance(z);
  160. mPasswordDialogFragment.show(getSupportFragmentManager(), FRAGMENT_TAG_PASSWORD_DIALOG);
  161. }
  162. }
  163. protected void authInfoRequested(final MemcardCheckTask memcardCheckTask, final boolean z) {
  164. if (!mIsActivityForeground) {
  165. mReservationDialog = 50;
  166. } else {
  167. runOnUiThread(new Runnable() {
  168. public void run() {
  169. MemcardCheckTask memcardCheckTask = memcardCheckTask;
  170. if (memcardCheckTask != null && !memcardCheckTask.isCancelled()) {
  171. MemcardTopSuper.this.showPasswordDialog(z);
  172. }
  173. }
  174. });
  175. }
  176. }
  177. private void releaseResource() {
  178. MemcardBitmapCache memcardBitmapCache = mBitmapCache;
  179. if (memcardBitmapCache != null) {
  180. memcardBitmapCache.clearCache();
  181. }
  182. }
  183. private void localShowDialog(int i) {
  184. if (!mActivityIsFinishing) {
  185. if (!mIsActivityForeground) {
  186. mReservationDialog = i;
  187. return;
  188. }
  189. LocalAlertDialogFragment localAlertDialogFragment = null;
  190. switch (i) {
  191. case 1:
  192. localAlertDialogFragment = LocalAlertDialogFragment.newInstance(R.string.memcard_media_not_found_message, R.string.memcard_media_not_found_title, 1);
  193. break;
  194. case 2:
  195. localAlertDialogFragment = LocalAlertDialogFragment.newInstance(R.string.memcard_comm_error_message, R.string.memcard_comm_error_title, 2);
  196. break;
  197. case 3:
  198. localAlertDialogFragment = LocalAlertDialogFragment.newInstance(R.string.EPS_PRNST_BUSY_MSG, R.string.EPS_PRNST_BUSY_TITLE, 2);
  199. break;
  200. }
  201. if (localAlertDialogFragment != null) {
  202. localAlertDialogFragment.show(getSupportFragmentManager(), FRAGMENT_TAG_ERROR_DIALOG);
  203. }
  204. }
  205. }
  206. private void onMemcardCheckEnd(Integer num, int i) {
  207. mMemcardCheckTask = null;
  208. mPasswordDialogFragment = null;
  209. if (num == null || num.intValue() == 0) {
  210. WiFiDirectManager.disconnect(this, WiFiDirectManager.DEVICE_TYPE_PRINTER, MemcardUtil.getPrinterIpAddress(this));
  211. mLaunchType = 0;
  212. mModelDialog.doDismiss(DIALOG_PROGRESS);
  213. if (i == 1) {
  214. localShowDialog(1);
  215. } else if (i != 3) {
  216. switch (i) {
  217. case 5:
  218. case 6:
  219. return;
  220. default:
  221. localShowDialog(2);
  222. return;
  223. }
  224. } else {
  225. localShowDialog(3);
  226. }
  227. } else {
  228. mModelDialog.doDismiss(DIALOG_PROGRESS);
  229. launchActivity(num.intValue());
  230. }
  231. }
  232. public void launchActivity(int i) {
  233. switch (mLaunchType) {
  234. case 1:
  235. launchWriterActivity();
  236. WiFiDirectManager.disconnect(this, WiFiDirectManager.DEVICE_TYPE_PRINTER, MemcardUtil.getPrinterIpAddress(this));
  237. break;
  238. case 2:
  239. launchReaderActivity(i);
  240. break;
  241. }
  242. mLaunchType = 0;
  243. }
  244. private void showDialog(String str) {
  245. DialogProgress newInstance = DialogProgress.newInstance(str, 0, getString(R.string.memcard_connecting_printer), (String) null, (String) null, (String) null, (String) null);
  246. newInstance.setCancelable(false);
  247. newInstance.show(getSupportFragmentManager(), str);
  248. }
  249. private void dismissDialog(String str) {
  250. DialogFragment dialogFragment = (DialogFragment) getSupportFragmentManager().findFragmentByTag(str);
  251. if (dialogFragment != null) {
  252. dialogFragment.dismiss();
  253. }
  254. }
  255. }