From: masensio Date: Fri, 20 Feb 2015 09:51:18 +0000 (+0100) Subject: Changes from comments, FileUploader and FileDownloader implement OnAccountsUpdateListener X-Git-Tag: oc-android-1.7.1_signed^2~40^2~4 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/e3a61d283fdd1a89cac30faacbba1863dd2907a7?ds=sidebyside Changes from comments, FileUploader and FileDownloader implement OnAccountsUpdateListener --- diff --git a/src/com/owncloud/android/files/services/FileDownloader.java b/src/com/owncloud/android/files/services/FileDownloader.java index 64eea6be..c76ab79d 100644 --- a/src/com/owncloud/android/files/services/FileDownloader.java +++ b/src/com/owncloud/android/files/services/FileDownloader.java @@ -25,7 +25,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Vector; -import java.util.concurrent.ConcurrentMap; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -51,7 +50,9 @@ import com.owncloud.android.ui.preview.PreviewImageFragment; import com.owncloud.android.utils.ErrorMessageAdapter; import android.accounts.Account; +import android.accounts.AccountManager; import android.accounts.AccountsException; +import android.accounts.OnAccountsUpdateListener; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; @@ -66,7 +67,8 @@ import android.os.Process; import android.support.v4.app.NotificationCompat; import android.util.Pair; -public class FileDownloader extends Service implements OnDatatransferProgressListener { +public class FileDownloader extends Service + implements OnDatatransferProgressListener, OnAccountsUpdateListener { public static final String EXTRA_ACCOUNT = "ACCOUNT"; public static final String EXTRA_FILE = "FILE"; @@ -118,6 +120,10 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis mServiceLooper = thread.getLooper(); mServiceHandler = new ServiceHandler(mServiceLooper, this); mBinder = new FileDownloaderBinder(); + + // add AccountsUpdatedListener + AccountManager am = AccountManager.get(getApplicationContext()); + am.addOnAccountsUpdatedListener(this, null, false); } @@ -132,6 +138,11 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis mServiceLooper.quit(); mServiceLooper = null; mNotificationManager = null; + + // remove AccountsUpdatedListener + AccountManager am = AccountManager.get(getApplicationContext()); + am.removeOnAccountsUpdatedListener(this); + super.onDestroy(); } @@ -224,6 +235,16 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis return false; // not accepting rebinding (default behaviour) } + @Override + public void onAccountsUpdated(Account[] accounts) { + //review the current download and cancel it if its account doesn't exist + if (mCurrentDownload != null && + !AccountUtils.exists(mCurrentDownload.getAccount(), getApplicationContext())) { + mCurrentDownload.cancel(); + } + // The rest of downloads are cancelled when they try to start + } + /** * Binder to let client components to perform operations on the queue of downloads. @@ -667,7 +688,7 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis /** * Remove downloads of an account * - * @param account + * @param account Downloads account to remove */ private void cancelDownloadsForAccount(Account account) { // Cancel pending downloads diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index d6ade1ab..8a04be3b 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -31,6 +31,7 @@ import java.util.concurrent.ConcurrentMap; import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AccountsException; +import android.accounts.OnAccountsUpdateListener; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; @@ -56,7 +57,6 @@ import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.accounts.AccountUtils.Constants; import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; -import com.owncloud.android.lib.common.operations.OperationCancelledException; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; @@ -77,8 +77,8 @@ import com.owncloud.android.utils.ErrorMessageAdapter; import com.owncloud.android.utils.UriUtils; - -public class FileUploader extends Service implements OnDatatransferProgressListener { +public class FileUploader extends Service + implements OnDatatransferProgressListener, OnAccountsUpdateListener { private static final String UPLOAD_FINISH_MESSAGE = "UPLOAD_FINISH"; public static final String EXTRA_UPLOAD_RESULT = "RESULT"; @@ -169,6 +169,10 @@ public class FileUploader extends Service implements OnDatatransferProgressListe mServiceLooper = thread.getLooper(); mServiceHandler = new ServiceHandler(mServiceLooper, this); mBinder = new FileUploaderBinder(); + + // add AccountsUpdatedListener + AccountManager am = AccountManager.get(getApplicationContext()); + am.addOnAccountsUpdatedListener(this, null, false); } /** @@ -182,6 +186,11 @@ public class FileUploader extends Service implements OnDatatransferProgressListe mServiceLooper.quit(); mServiceLooper = null; mNotificationManager = null; + + // remove AccountsUpdatedListener + AccountManager am = AccountManager.get(getApplicationContext()); + am.removeOnAccountsUpdatedListener(this); + super.onDestroy(); } @@ -345,6 +354,16 @@ public class FileUploader extends Service implements OnDatatransferProgressListe return false; // not accepting rebinding (default behaviour) } + @Override + public void onAccountsUpdated(Account[] accounts) { + // Review current upload, and cancel it if its account doen't exist + if (mCurrentUpload != null && + !AccountUtils.exists(mCurrentUpload.getAccount(), getApplicationContext())) { + mCurrentUpload.cancel(); + } + // The rest of uploads are cancelled when they try to start + } + /** * Binder to let client components to perform operations on the queue of * uploads. diff --git a/src/com/owncloud/android/files/services/IndexedForest.java b/src/com/owncloud/android/files/services/IndexedForest.java index 1343a8c1..c40cece3 100644 --- a/src/com/owncloud/android/files/services/IndexedForest.java +++ b/src/com/owncloud/android/files/services/IndexedForest.java @@ -22,10 +22,8 @@ import android.util.Pair; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.utils.Log_OC; -import com.owncloud.android.operations.UploadFileOperation; import java.io.File; -import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.Set; @@ -238,6 +236,4 @@ public class IndexedForest { return account.name + remotePath; } - - } diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index 54efc6f1..97c5606e 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -23,7 +23,6 @@ import android.accounts.AccountManager; import android.accounts.AccountManagerCallback; import android.accounts.AccountManagerFuture; import android.accounts.AuthenticatorException; -import android.accounts.OnAccountsUpdateListener; import android.accounts.OperationCanceledException; import android.content.ComponentName; import android.content.Context; @@ -57,7 +56,6 @@ import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.operations.UnshareLinkOperation; - import com.owncloud.android.services.OperationsService; import com.owncloud.android.services.OperationsService.OperationsServiceBinder; import com.owncloud.android.ui.dialog.LoadingDialog; @@ -70,7 +68,7 @@ import com.owncloud.android.utils.ErrorMessageAdapter; * @author David A. Velasco */ public class FileActivity extends SherlockFragmentActivity - implements OnRemoteOperationListener, ComponentsGetter, OnAccountsUpdateListener { + implements OnRemoteOperationListener, ComponentsGetter { public static final String EXTRA_FILE = "com.owncloud.android.ui.activity.FILE"; public static final String EXTRA_ACCOUNT = "com.owncloud.android.ui.activity.ACCOUNT"; @@ -160,10 +158,6 @@ public class FileActivity extends SherlockFragmentActivity bindService(new Intent(this, FileUploader.class), mUploadServiceConnection, Context.BIND_AUTO_CREATE); } - // add AccountsUpdatedListener - AccountManager am = AccountManager.get(getApplicationContext()); - am.addOnAccountsUpdatedListener(this, null, false); - } @@ -227,10 +221,6 @@ public class FileActivity extends SherlockFragmentActivity mUploadServiceConnection = null; } - // remove AccountsUpdatedListener - AccountManager am = AccountManager.get(getApplicationContext()); - am.removeOnAccountsUpdatedListener(this); - super.onDestroy(); } @@ -297,7 +287,6 @@ public class FileActivity extends SherlockFragmentActivity this, new AccountCreationCallback(), null); - am.addOnAccountsUpdatedListener(this, null, true); } @@ -366,19 +355,6 @@ public class FileActivity extends SherlockFragmentActivity return null; } - @Override - public void onAccountsUpdated(Account[] accounts) { - // detect a change in the list of accounts - Log_OC.d(TAG, "onAccountsUpdated"); - if (mDownloaderBinder != null) { - mDownloaderBinder.checkAccountOfCurrentDownload(); - } - if (mUploaderBinder != null) { - mUploaderBinder.checkAccountOfCurrentUpload(); - } - } - - /** * Helper class handling a callback from the {@link AccountManager} after the creation of * a new ownCloud {@link Account} finished, successfully or not.