RemoteCopyGetOptionTask.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package epson.print.rpcopy.Component.ecopycomponent;
  2. import android.os.AsyncTask;
  3. import java.util.Iterator;
  4. import epson.print.rpcopy.Component.eremoteoperation.ERemoteCopy;
  5. import epson.print.rpcopy.Component.eremoteoperation.ERemoteDevice;
  6. import epson.print.rpcopy.Component.eremoteoperation.ERemoteOperation;
  7. import epson.print.rpcopy.Component.eremoteoperation.ERemotePrinter;
  8. import epson.print.rpcopy.Component.eremoteoperation.ERemoteScanner;
  9. class RemoteCopyGetOptionTask extends AsyncTask<Void, Void, Result> implements ECopyComponent.ITask {
  10. String clientID;
  11. ECopyComponent.ICopyOptionContextListener contextListener;
  12. ECopyComponent.ECopyType copyType;
  13. ERemoteCopy operation = new ERemoteCopy();
  14. ECopyComponent.ICopySystemSettings systemSettings;
  15. public void setOptionContext(ECopyOptionContext eCopyOptionContext) {
  16. }
  17. class Result {
  18. ECopyComponent.ECopyType copyType;
  19. ECopyComponent.ICopyOptionContextListener.ContextCreationError error;
  20. ECopyOptionContext optionContext;
  21. Result() {
  22. }
  23. }
  24. public RemoteCopyGetOptionTask(ECopyComponent.ECopyType eCopyType, ECopyComponent.ICopyOptionContextListener iCopyOptionContextListener) {
  25. copyType = eCopyType;
  26. contextListener = iCopyOptionContextListener;
  27. }
  28. public ECopyComponent.ICopyCancelRequest start() {
  29. super.execute(new Void[0]);
  30. return null;
  31. }
  32. public void setSystemSettings(ECopyComponent.ICopySystemSettings iCopySystemSettings) {
  33. systemSettings = iCopySystemSettings;
  34. }
  35. public void setRequestConnectionTimeout(int i) {
  36. operation.setRequestConnectionTimeout(i);
  37. }
  38. public void setClientID(String str) {
  39. clientID = str;
  40. }
  41. private Result getErrorResult(ERemoteOperation.ERemoteOperationResult eRemoteOperationResult) {
  42. Result result = new Result();
  43. if (eRemoteOperationResult.isNull(ERemoteOperation.ERemoteParam.success)) {
  44. result.error = ECopyComponent.ICopyOptionContextListener.ContextCreationError.ErrorCommunication;
  45. } else {
  46. result.error = ECopyComponent.ICopyOptionContextListener.ContextCreationError.Error;
  47. }
  48. return result;
  49. }
  50. private Result checkDeviceError() {
  51. Result result = new Result();
  52. result.copyType = copyType;
  53. ERemoteDevice eRemoteDevice = new ERemoteDevice();
  54. eRemoteDevice.setHostIP(operation.getHostIP());
  55. eRemoteDevice.setRequestConnectionTimeout(operation.getRequestConnectionTimeout());
  56. ERemoteDevice.ERemoteDeviceFunctionsResult functions = eRemoteDevice.getFunctions(new ERemoteOperation.IRemoteOperationParameter() {
  57. public String client_id() {
  58. return clientID;
  59. }
  60. });
  61. if (!functions.success()) {
  62. return getErrorResult(functions);
  63. }
  64. boolean z = false;
  65. Iterator<ERemoteOperation.ERemoteParam> it = functions.functions().iterator();
  66. while (true) {
  67. if (it.hasNext()) {
  68. if (it.next() == ERemoteOperation.ERemoteParam.repeat_copy) {
  69. z = true;
  70. break;
  71. }
  72. } else {
  73. break;
  74. }
  75. }
  76. if (!z) {
  77. result.error = ECopyComponent.ICopyOptionContextListener.ContextCreationError.ErrorNotCopySupported;
  78. return result;
  79. }
  80. ERemotePrinter eRemotePrinter = new ERemotePrinter();
  81. eRemotePrinter.setHostIP(operation.getHostIP());
  82. eRemotePrinter.setRequestConnectionTimeout(operation.getRequestConnectionTimeout());
  83. ERemotePrinter.ERemotePrinterComponentsResult components = eRemotePrinter.getComponents(new ERemoteOperation.IRemoteOperationParameter() {
  84. public String client_id() {
  85. return clientID;
  86. }
  87. });
  88. if (!components.success()) {
  89. return getErrorResult(components);
  90. }
  91. ERemoteScanner eRemoteScanner = new ERemoteScanner();
  92. eRemoteScanner.setHostIP(operation.getHostIP());
  93. eRemoteScanner.setRequestConnectionTimeout(operation.getRequestConnectionTimeout());
  94. ERemoteScanner.ERemoteScannerComponentsResult components2 = eRemoteScanner.getComponents(new ERemoteOperation.IRemoteOperationParameter() {
  95. public String client_id() {
  96. return clientID;
  97. }
  98. });
  99. if (!components2.success()) {
  100. return getErrorResult(components2);
  101. }
  102. return null;
  103. }
  104. protected Result doInBackground(Void... voidArr) {
  105. operation.setHostIP(systemSettings.getPrinterIPAddress());
  106. Result checkDeviceError = checkDeviceError();
  107. if (checkDeviceError != null) {
  108. return checkDeviceError;
  109. }
  110. Result result = new Result();
  111. result.copyType = copyType;
  112. ERemoteCopy.ERemoteCopyOptionsResult selectableOptions = operation.getSelectableOptions();
  113. if (selectableOptions.success()) {
  114. result.optionContext = new ECopyOptionContext(result.copyType);
  115. result.optionContext.setCopyOptionsResult(selectableOptions);
  116. result.optionContext.add(ECopyOptionItem.createOptionItem(ERemoteOperation.ERemoteParam.color_effects_type, selectableOptions));
  117. result.optionContext.add(ECopyOptionItem.createOptionItem(ERemoteOperation.ERemoteParam.layout, selectableOptions));
  118. result.optionContext.add(ECopyOptionItem.createOptionItem(ERemoteOperation.ERemoteParam.print_media_size, selectableOptions));
  119. result.optionContext.add(ECopyOptionItem.createOptionItem(ERemoteOperation.ERemoteParam.print_media_type, selectableOptions));
  120. result.optionContext.add(ECopyOptionItem.createOptionItem(ERemoteOperation.ERemoteParam.print_media_source, selectableOptions));
  121. result.optionContext.add(ECopyOptionItem.createOptionItem(ERemoteOperation.ERemoteParam.print_quality, selectableOptions));
  122. result.optionContext.add(ECopyOptionItem.createOptionItem(ERemoteOperation.ERemoteParam.x_remove_background, selectableOptions));
  123. result.optionContext.add(ECopyOptionItem.createOptionItem(ERemoteOperation.ERemoteParam.x_cut_line, selectableOptions));
  124. result.optionContext.add(ECopyOptionItem.createOptionItem(ERemoteOperation.ERemoteParam.x_cut_line_style, selectableOptions));
  125. result.optionContext.add(ECopyOptionItem.createOptionItem(ERemoteOperation.ERemoteParam.x_cut_line_weight, selectableOptions));
  126. result.optionContext.add(ECopyOptionItem.createLocalOptionItem(ERemoteOperation.ERemoteParam.copies, 1, 99, 1));
  127. result.optionContext.add(ECopyOptionItem.createLocalOptionItem(ERemoteOperation.ERemoteParam.x_density, -4, 4, 0));
  128. } else if (selectableOptions.isNull(ERemoteOperation.ERemoteParam.success)) {
  129. result.error = ECopyComponent.ICopyOptionContextListener.ContextCreationError.ErrorCommunication;
  130. } else {
  131. result.error = ECopyComponent.ICopyOptionContextListener.ContextCreationError.Error;
  132. }
  133. return result;
  134. }
  135. protected void onPostExecute(Result result) {
  136. contextListener.onCopyOptionContextCreated(result.copyType, result.optionContext, result.error);
  137. }
  138. }