StorageProcessUploadActivity.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. package com.epson.iprint.storage;
  2. import android.content.Intent;
  3. import android.os.AsyncTask;
  4. import android.os.Bundle;
  5. import android.support.p000v4.media.session.PlaybackStateCompat;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.Button;
  9. import android.widget.EditText;
  10. import android.widget.RadioGroup;
  11. import android.widget.TextView;
  12. import com.epson.iprint.storage.StorageActivity;
  13. import com.epson.iprint.storage.StorageProcessActivity;
  14. import com.epson.iprint.storage.StorageServiceClient;
  15. import com.epson.iprint.storage.gdrivev3.GoogleV3UploadClient;
  16. import com.epson.iprint.storage.gdrivev3.GoogleV3UploadSignInActivity;
  17. import epson.print.R;
  18. import epson.print.CommonDefine;
  19. import epson.print.ScanFileNumber;
  20. import epson.print.Util.EPLog;
  21. import epson.print.Util.Utils;
  22. import epson.scan.lib.libHaru;
  23. import epson.server.utils.MyUtility;
  24. import java.io.File;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. import java.util.concurrent.locks.Condition;
  28. import java.util.concurrent.locks.ReentrantLock;
  29. public class StorageProcessUploadActivity extends StorageProcessActivity {
  30. final String UPLOAD_EDITING_FILENAME = "Upload.Editing.Filename";
  31. List<String> mUploadFileLocalPathList;
  32. String mUploadFilename;
  33. private void onUpdateProcessView() {
  34. }
  35. protected void onCreate(Bundle bundle) {
  36. String string;
  37. super.onCreate(bundle);
  38. setContentView((int) R.layout.folder_content_layout_for_upload);
  39. setActionBar(getStorageClient().getStorageServiceName(this), true);
  40. final Button button = (Button) findViewById(R.id.save_button);
  41. button.setText(getString(R.string.upload_btn_label));
  42. button.setOnClickListener(new View.OnClickListener() {
  43. public void onClick(View view) {
  44. String filename = StorageProcessUploadActivity.this.getFilename();
  45. if (!StorageProcessUploadActivity.this.getStorageClient().isValidUploadName(filename)) {
  46. StorageProcessUploadActivity.this.showErrorDialog((int) R.string.str_error_Filename);
  47. } else if (StorageProcessUploadActivity.this.isConnected()) {
  48. button.setEnabled(false);
  49. UploadTask uploadTask = new UploadTask();
  50. uploadTask.localPaths = new ArrayList(StorageProcessUploadActivity.this.mUploadFileLocalPathList);
  51. uploadTask.uploadFilename = filename;
  52. uploadTask.fileType = StorageProcessUploadActivity.this.getFiletype();
  53. uploadTask.execute(new Void[0]);
  54. } else {
  55. StorageProcessUploadActivity.this.showConnectionError();
  56. }
  57. }
  58. });
  59. bindClearButton(R.id.upload_dialog_file_name, R.id.clear_name_btn, new StorageActivity.OnVisibilityListener() {
  60. public void onVisibilityChanged(int i) {
  61. StorageProcessUploadActivity.this.setEnabledSaveButton(i == 0);
  62. }
  63. });
  64. this.mUploadFilename = generateUploadFilename(0);
  65. if (!(bundle == null || (string = bundle.getString("Upload.Editing.Filename")) == null)) {
  66. this.mUploadFilename = string;
  67. }
  68. setFilename(this.mUploadFilename);
  69. this.mUploadFileLocalPathList = getIntent().getStringArrayListExtra(StorageProcessActivity.EXTRA_UPLOADFILE_LIST);
  70. if (getStorageClient() instanceof GoogleV3UploadClient) {
  71. startActivity(GoogleV3UploadSignInActivity.getPlayServiceCheckIntent(this));
  72. }
  73. }
  74. protected void onSaveInstanceState(Bundle bundle) {
  75. super.onSaveInstanceState(bundle);
  76. this.mUploadFilename = getFilename();
  77. bundle.putString("Upload.Editing.Filename", this.mUploadFilename);
  78. }
  79. protected void onRestoreInstanceState(Bundle bundle) {
  80. super.onRestoreInstanceState(bundle);
  81. this.mUploadFilename = bundle.getString("Upload.Editing.Filename");
  82. }
  83. private void onSignInStatus(StorageProcessActivity.SignInStatus signInStatus) {
  84. updateUploadSection(signInStatus);
  85. updateSaveButton(signInStatus);
  86. }
  87. class UploadTask extends AsyncTask<Void, Void, Void> {
  88. boolean canceled;
  89. StorageServiceClient.UploadFileType fileType;
  90. List<String> localPaths;
  91. /* access modifiers changed from: private */
  92. public volatile StorageServiceClient.ProcessError taskError;
  93. String uploadFilename;
  94. boolean uploaded;
  95. StorageServiceClient.Uploader uploader;
  96. UploadTask() {
  97. }
  98. protected Void doInBackground(Void... voidArr) {
  99. final ReentrantLock reentrantLock;
  100. final StorageActivity.OverlayProgress overlayProgress = new StorageActivity.OverlayProgress();
  101. overlayProgress.show(StorageProcessUploadActivity.this.getString(R.string.uploading_notification), new StorageActivity.CancelRequestCallback() {
  102. public void onCancelRequest(Intent intent) {
  103. if (UploadTask.this.uploader != null && UploadTask.this.uploader.isCancelable()) {
  104. UploadTask.this.uploader.cancel();
  105. }
  106. UploadTask.this.canceled = true;
  107. }
  108. });
  109. String str = "";
  110. if (StorageServiceClient.UploadFileType.PDF.equals(this.fileType)) {
  111. String str2 = new File(this.localPaths.get(0)).getParent() + CommonDefine.SLASH + this.uploadFilename + CommonDefine.FileType_PDF;
  112. new libHaru().createPDF((ArrayList) this.localPaths, str2);
  113. this.localPaths.clear();
  114. this.localPaths.add(str2);
  115. str = CommonDefine.FileType_PDF;
  116. } else if (StorageServiceClient.UploadFileType.JPEG.equals(this.fileType)) {
  117. str = ".jpg";
  118. }
  119. boolean z = !this.uploadFilename.equals(StorageProcessUploadActivity.this.generateUploadFilename(0));
  120. int size = this.localPaths.size();
  121. int i = 0;
  122. while (true) {
  123. if (i >= size) {
  124. break;
  125. }
  126. String str3 = this.localPaths.get(i);
  127. String str4 = this.uploadFilename + str;
  128. if (size > 1) {
  129. if (z) {
  130. str4 = String.format("%s%03d%s", new Object[]{this.uploadFilename, Integer.valueOf(i + 1), str});
  131. } else {
  132. str4 = String.format("%s%s", new Object[]{StorageProcessUploadActivity.this.generateUploadFilename(i), str});
  133. }
  134. overlayProgress.changeMessage(StorageProcessUploadActivity.this.getString(R.string.uploading_notification) + (i + 1) + CommonDefine.SLASH + size);
  135. }
  136. reentrantLock = new ReentrantLock();
  137. final Condition newCondition = reentrantLock.newCondition();
  138. try {
  139. reentrantLock.lock();
  140. this.uploaded = false;
  141. this.taskError = StorageServiceClient.ProcessError.NONE;
  142. this.uploader = StorageProcessUploadActivity.this.getStorageClient().getUploader(StorageProcessUploadActivity.this, this.fileType, str3, str4);
  143. this.uploader.start(new StorageServiceClient.UploadCompletion() {
  144. public void onUploadComplete(String str, String str2, StorageServiceClient.ProcessError processError) {
  145. try {
  146. reentrantLock.lock();
  147. StorageServiceClient.ProcessError unused = UploadTask.this.taskError = processError;
  148. UploadTask.this.uploaded = true;
  149. newCondition.signal();
  150. } catch (Exception e) {
  151. EPLog.w("Storage", "onUploadComplete() exception <" + e.toString() + ">");
  152. } catch (Throwable th) {
  153. reentrantLock.unlock();
  154. throw th;
  155. }
  156. reentrantLock.unlock();
  157. }
  158. });
  159. while (!this.uploaded) {
  160. newCondition.await();
  161. }
  162. if (!this.canceled && this.taskError == StorageServiceClient.ProcessError.NONE) {
  163. reentrantLock.unlock();
  164. i++;
  165. }
  166. } catch (Exception e) {
  167. e.printStackTrace();
  168. this.taskError = StorageServiceClient.ProcessError.ERROR;
  169. } catch (Throwable th) {
  170. reentrantLock.unlock();
  171. throw th;
  172. }
  173. }
  174. if (this.canceled) {
  175. this.taskError = StorageServiceClient.ProcessError.CANCELED;
  176. }
  177. reentrantLock.unlock();
  178. StorageProcessUploadActivity.this.runOnUiThread(new Runnable() {
  179. public void run() {
  180. if (UploadTask.this.taskError == StorageServiceClient.ProcessError.NONE) {
  181. overlayProgress.dismiss();
  182. StorageProcessUploadActivity.this.finish();
  183. return;
  184. }
  185. StorageProcessUploadActivity.this.setEnabledSaveButton(true);
  186. if (UploadTask.this.taskError == StorageServiceClient.ProcessError.ERROR) {
  187. StorageProcessUploadActivity.this.showErrorDialog((int) R.string.upload_error_mes);
  188. }
  189. overlayProgress.dismiss();
  190. }
  191. });
  192. return null;
  193. }
  194. }
  195. private void updateUploadSection(StorageProcessActivity.SignInStatus signInStatus) {
  196. ViewGroup viewGroup = (ViewGroup) findViewById(R.id.upload_file_name_file_type_section);
  197. if (signInStatus == StorageProcessActivity.SignInStatus.SIGNED_IN) {
  198. viewGroup.setVisibility(0);
  199. ((RadioGroup) findViewById(R.id.file_type_for_upload)).check(R.id.pdf_type);
  200. List<String> list = this.mUploadFileLocalPathList;
  201. if (list != null && list.size() > 0) {
  202. setFilename(this.mUploadFilename);
  203. }
  204. ((TextView) findViewById(R.id.file_size)).setText(getTotalFileSize(this.mUploadFileLocalPathList));
  205. return;
  206. }
  207. viewGroup.setVisibility(4);
  208. }
  209. private void updateSaveButton(StorageProcessActivity.SignInStatus signInStatus) {
  210. setEnabledSaveButton(signInStatus == StorageProcessActivity.SignInStatus.SIGNED_IN);
  211. }
  212. private void setEnabledSaveButton(boolean z) {
  213. Button button = (Button) findViewById(R.id.save_button);
  214. if (z) {
  215. button.setEnabled(true);
  216. } else {
  217. button.setEnabled(false);
  218. }
  219. }
  220. private String getFilename() {
  221. return ((TextView) findViewById(R.id.upload_dialog_file_name)).getText().toString();
  222. }
  223. private void setFilename(String str) {
  224. ((EditText) findViewById(R.id.upload_dialog_file_name)).setText(str);
  225. }
  226. private StorageServiceClient.UploadFileType getFiletype() {
  227. return ((RadioGroup) findViewById(R.id.file_type_for_upload)).getCheckedRadioButtonId() == R.id.pdf_type ? StorageServiceClient.UploadFileType.PDF : StorageServiceClient.UploadFileType.JPEG;
  228. }
  229. private String generateUploadFilename(int i) {
  230. int count = ScanFileNumber.getCount(this);
  231. return "EPSON" + new Utils().editNumber(count + i);
  232. }
  233. private String getTotalFileSize(List<String> list) {
  234. Long l = 0L;
  235. for (String file : list) {
  236. l = Long.valueOf(l.longValue() + new File(file).length());
  237. }
  238. double longValue = (double) (l.longValue() / PlaybackStateCompat.ACTION_PLAY_FROM_MEDIA_ID);
  239. if (longValue > 500.0d) {
  240. return MyUtility.mathRound(longValue / 1024.0d, 2) + "MB";
  241. }
  242. return MyUtility.mathRound(longValue, 2) + "KB";
  243. }
  244. }