MemcardTopSuper.java 11 KB

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