123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- package com.epson.iprint.storage.gdrivev3;
- import com.epson.iprint.storage.Network;
- import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
- import java.lang.ref.WeakReference;
- import java.util.ArrayList;
- public class GoogleDownloadPresenter implements GoogleDownloadContract.UserActionListener, IprintGoogleSignIn.SignInListener, DriveListTask.ListTaskCompleteListener, DownloadTask.DownloadCompleteListener, PlayServiceDialogManager.SingInCancelNotifier {
- private final WeakReference<GoogleDownloadContract.View> mDownloadViewReference;
- private final DownloaderWrapper mGoogleDownloader;
- private final IprintGoogleSignIn mIprintGoogleSignIn;
- private boolean mIsDownloading = false;
- private final Network mMisc;
- private final PlayServiceDialogManager mPlayServiceDialogManager;
- private SignInState mSignInStatus;
- private boolean mStartListDone;
- private TaskState mTaskRunning;
- private enum SignInState {
- SIGN_IN,
- SIGN_OUT
- }
- private enum TaskState {
- RUNNING,
- STOP
- }
- private enum TaskType {
- FILE_LIST,
- DOWNLOAD
- }
- public GoogleDownloadPresenter(@NonNull IprintGoogleSignIn iprintGoogleSignIn, @NonNull PlayServiceDialogManager playServiceDialogManager, @NonNull DownloaderWrapper downloaderWrapper, @NonNull Network network, @NonNull GoogleDownloadContract.View view) {
- this.mIprintGoogleSignIn = iprintGoogleSignIn;
- this.mPlayServiceDialogManager = playServiceDialogManager;
- this.mGoogleDownloader = downloaderWrapper;
- this.mMisc = network;
- this.mDownloadViewReference = new WeakReference<>(view);
- this.mSignInStatus = SignInState.SIGN_OUT;
- this.mStartListDone = false;
- this.mTaskRunning = TaskState.STOP;
- }
- @Nullable
- private GoogleDownloadContract.View getDownloadView() {
- return (GoogleDownloadContract.View) this.mDownloadViewReference.get();
- }
- public void initView() {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- changeSignInStatus(downloadView, SignInState.SIGN_OUT);
- downloadView.setSignInButtonEnabled(false);
- downloadView.dismissProgress();
- }
- }
- public void activityOnResume() {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- this.mMisc.selectSimpleAp(downloadView.getActivityWrapper(), false);
- if (!this.mMisc.isOnline(downloadView.getActivityWrapper())) {
- downloadView.showOfflineErrorDialog();
- } else if (!this.mPlayServiceDialogManager.checkPlayService(downloadView.getActivityWrapper(), this) && this.mTaskRunning == TaskState.STOP) {
- downloadView.setSignInButtonEnabled(true);
- if (this.mIprintGoogleSignIn.isSignInValid(downloadView.getActivityWrapper().getActivity(), IprintGoogleSignIn.OperationType.DOWNLOAD)) {
- changeSignInStatus(downloadView, SignInState.SIGN_IN);
- if (!this.mStartListDone) {
- start1stListTask(downloadView, this.mIprintGoogleSignIn.getSignInAccount(downloadView.getActivityWrapper().getActivity()));
- return;
- }
- return;
- }
- changeSignInStatus(downloadView, SignInState.SIGN_OUT);
- }
- }
- }
- public void activityOnPause() {
- this.mPlayServiceDialogManager.onActivityPaused();
- }
- public boolean isDownloading() {
- return this.mIsDownloading;
- }
- public void playServiceInstallCancel() {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- downloadView.setSignInButtonEnabled(true);
- downloadView.showSignInFailDialog();
- }
- }
- public void signInOrDisconnectClicked() {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- downloadView.setSignInButtonEnabled(false);
- if (this.mSignInStatus == SignInState.SIGN_IN) {
- this.mIprintGoogleSignIn.disconnectAccount(downloadView.getActivityWrapper(), this);
- } else {
- this.mIprintGoogleSignIn.startSignIn(this, downloadView.getActivityWrapper(), IprintGoogleSignIn.OperationType.DOWNLOAD);
- }
- }
- }
- public void onSignInComplete(boolean z, GoogleSignInAccount googleSignInAccount) {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- downloadView.clearListItems();
- changeSignInStatus(downloadView, z ? SignInState.SIGN_IN : SignInState.SIGN_OUT);
- if (!z) {
- downloadView.setSignInButtonEnabled(true);
- downloadView.dismissProgress();
- downloadView.showSignInFailDialog();
- } else if (googleSignInAccount != null) {
- start1stListTask(downloadView, googleSignInAccount);
- } else {
- throw new IllegalStateException();
- }
- }
- }
- public void onAddScopeCompleted(boolean z) {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- onSignInComplete(z, z ? this.mIprintGoogleSignIn.getSignInAccount(downloadView.getActivityWrapper().getActivity()) : null);
- }
- }
- public void onDisconnectCompleted() {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- this.mGoogleDownloader.invalidateDownloader();
- changeSignInStatus(downloadView, SignInState.SIGN_OUT);
- downloadView.setSignInButtonEnabled(true);
- downloadView.clearListItems();
- }
- }
- private void start1stListTask(GoogleDownloadContract.View view, @Nullable GoogleSignInAccount googleSignInAccount) {
- if (googleSignInAccount != null) {
- this.mGoogleDownloader.createDownloader(view.getActivityWrapper(), googleSignInAccount);
- startListTask((OnlineFile) null);
- return;
- }
- throw new IllegalStateException();
- }
- public void startListTask(@Nullable OnlineFile onlineFile) {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- onTaskStart(downloadView, TaskType.FILE_LIST);
- this.mStartListDone = true;
- this.mGoogleDownloader.startListTask(onlineFile, this);
- }
- }
- private void changeSignInStatus(GoogleDownloadContract.View view, SignInState signInState) {
- this.mSignInStatus = signInState;
- view.changeSignInOutButton(signInState == SignInState.SIGN_IN ? 1 : 0);
- }
- public void listComplete(ArrayList<OnlineFile> arrayList) {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- onTaskEnd(downloadView);
- downloadView.listFiles(arrayList);
- }
- }
- public void itemSelected(@NonNull OnlineFile onlineFile) {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- if (!this.mGoogleDownloader.isDownloadValid()) {
- throw new IllegalStateException();
- } else if (onlineFile.isFolder()) {
- startListTask(onlineFile);
- } else {
- onTaskStart(downloadView, TaskType.DOWNLOAD);
- this.mIsDownloading = true;
- this.mGoogleDownloader.startDownload(downloadView.getActivityWrapper(), onlineFile, this);
- }
- }
- }
- public void backKeyPressed() {
- GoogleDownloadContract.View downloadView = getDownloadView();
- if (downloadView != null) {
- if (this.mSignInStatus != SignInState.SIGN_IN) {
- downloadView.finishActivity();
- } else if (!this.mGoogleDownloader.isDownloadValid()) {
- throw new IllegalStateException();
- } else if (this.mGoogleDownloader.isRootFolder()) {
- downloadView.finishActivity();
- } else {
- startListTask(new ParentFolder());
- }
- }
- }
- public void cancelDownload() {
- this.mGoogleDownloader.cancelDownload();
- }
- public void onPreviewActivityEnd() {
- this.mGoogleDownloader.onDownloadPreviewEnd();
- }
- public void onDownloadComplete(boolean z, @Nullable String str) {
- GoogleDownloadContract.View downloadView = getDownloadView();
- this.mIsDownloading = false;
- if (downloadView != null) {
- onTaskEnd(downloadView);
- if (str != null) {
- downloadView.startPreviewActivity(str);
- } else if (z) {
- downloadView.showDownloadErrorDialog();
- }
- }
- }
- private void onTaskEnd(GoogleDownloadContract.View view) {
- this.mTaskRunning = TaskState.STOP;
- view.dismissProgress();
- view.setSignInButtonEnabled(true);
- }
- private void onTaskStart(GoogleDownloadContract.View view, TaskType taskType) {
- this.mTaskRunning = TaskState.RUNNING;
- if (taskType == TaskType.DOWNLOAD) {
- view.showDownloadProgress();
- } else {
- view.showProgress();
- }
- view.setSignInButtonEnabled(false);
- }
- }
|