FileConvertViewModel.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package com.epson.memcardacc;
  2. import android.app.Application;
  3. import android.arch.lifecycle.AndroidViewModel;
  4. import android.arch.lifecycle.LiveData;
  5. import android.arch.lifecycle.MutableLiveData;
  6. import android.os.AsyncTask;
  7. import com.epson.memcardacc.FileConvertTask;
  8. import java.util.ArrayList;
  9. public class FileConvertViewModel extends AndroidViewModel {
  10. private final FileConvertTask.ConvertEndListener mConvertEndListener = new FileConvertTask.ConvertEndListener() {
  11. public void onConvertEnd(@NonNull FileConvertTask.ErrorType errorType, @Nullable ArrayList<String> arrayList) {
  12. FileConvertViewModel.mFileConvertStatusLiveData.setValue(new FileConvertStatus(ConvertStatus.TASK_END, errorType, arrayList));
  13. }
  14. };
  15. private final MutableLiveData<FileConvertStatus> mFileConvertStatusLiveData = new MutableLiveData<>();
  16. private FileConvertTask mFileConvertTask;
  17. enum ConvertStatus {
  18. TASK_NOT_STARTED,
  19. TASK_RUNNING,
  20. TASK_END
  21. }
  22. public static class FileConvertStatus {
  23. private final ArrayList<String> mConvertFileList;
  24. private final ConvertStatus mConvertStatus;
  25. private final FileConvertTask.ErrorType mErrorType;
  26. public FileConvertStatus() {
  27. this(ConvertStatus.TASK_NOT_STARTED);
  28. }
  29. public FileConvertStatus(ConvertStatus convertStatus) {
  30. this(convertStatus, FileConvertTask.ErrorType.NO_ERROR, (ArrayList<String>) null);
  31. }
  32. public FileConvertStatus(ConvertStatus convertStatus, FileConvertTask.ErrorType errorType, ArrayList<String> arrayList) {
  33. mErrorType = errorType;
  34. mConvertStatus = convertStatus;
  35. mConvertFileList = arrayList;
  36. }
  37. @NonNull
  38. public ConvertStatus getConvertStatus() {
  39. return mConvertStatus;
  40. }
  41. @NonNull
  42. public FileConvertTask.ErrorType getErrorType() {
  43. return mErrorType;
  44. }
  45. @Nullable
  46. public ArrayList<String> getConvertFileList() {
  47. return mConvertFileList;
  48. }
  49. }
  50. public FileConvertViewModel(@NonNull Application application) {
  51. super(application);
  52. mFileConvertStatusLiveData.setValue(new FileConvertStatus());
  53. }
  54. public void startConvert(@NonNull ArrayList<String> arrayList) {
  55. mFileConvertStatusLiveData.setValue(new FileConvertStatus(ConvertStatus.TASK_RUNNING));
  56. mFileConvertTask = new FileConvertTask(arrayList, mConvertEndListener);
  57. mFileConvertTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Void[0]);
  58. }
  59. public LiveData<FileConvertStatus> getData() {
  60. return mFileConvertStatusLiveData;
  61. }
  62. }