StorageProcessUploadActivity.java 12 KB

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