X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/2d6826fe8b060e2bf4573e909e917af4741c9f14..121887c8991ce7184d7bdfcd22efbbf85dafc236:/src/com/owncloud/android/files/services/FileUploader.java diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index 722b0655..d3dc8ef7 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -38,6 +38,7 @@ import com.owncloud.android.lib.resources.files.RemoteFile; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.operations.UploadFileOperation; +import com.owncloud.android.operations.common.SyncOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation; import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation; @@ -53,13 +54,12 @@ import com.owncloud.android.ui.activity.FileDisplayActivity; import com.owncloud.android.ui.activity.InstantUploadActivity; import com.owncloud.android.ui.preview.PreviewImageActivity; import com.owncloud.android.ui.preview.PreviewImageFragment; -import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.Log_OC; +import com.owncloud.android.utils.NotificationBuilderWithProgressBar; import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AccountsException; -import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; @@ -73,7 +73,6 @@ import android.os.Message; import android.os.Process; import android.support.v4.app.NotificationCompat; import android.webkit.MimeTypeMap; -import android.widget.RemoteViews; @@ -120,7 +119,6 @@ public class FileUploader extends Service implements OnDatatransferProgressListe private NotificationManager mNotificationManager; private NotificationCompat.Builder mNotificationBuilder; private int mLastPercent; - private RemoteViews mDefaultNotificationContentView; public static String getUploadFinishMessage() { @@ -256,8 +254,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe AccountManager aMgr = AccountManager.get(this); String version = aMgr.getUserData(account, Constants.KEY_OC_VERSION); - String versionString = aMgr.getUserData(account, Constants.KEY_OC_VERSION_STRING); - OwnCloudVersion ocv = new OwnCloudVersion(version, versionString); + OwnCloudVersion ocv = new OwnCloudVersion(version); boolean chunked = FileUploader.chunkedUploadIsSupported(ocv); AbstractList requestedUploads = new Vector(); @@ -553,10 +550,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe RemoteOperation operation = new ExistenceCheckRemoteOperation(pathToGrant, this, false); RemoteOperationResult result = operation.execute(mUploadClient); if (!result.isSuccess() && result.getCode() == ResultCode.FILE_NOT_FOUND && mCurrentUpload.isRemoteFolderToBeCreated()) { - operation = new CreateFolderOperation( pathToGrant, - true, - mStorageManager ); - result = operation.execute(mUploadClient); + SyncOperation syncOp = new CreateFolderOperation( pathToGrant, true); + result = syncOp.execute(mUploadClient, mStorageManager); } if (result.isSuccess()) { OCFile parentDir = mStorageManager.getFileByPath(pathToGrant); @@ -679,11 +674,11 @@ public class FileUploader extends Service implements OnDatatransferProgressListe * * @param upload Upload operation starting. */ - @SuppressWarnings("deprecation") private void notifyUploadStart(UploadFileOperation upload) { // / create status notification with a progress bar mLastPercent = 0; - mNotificationBuilder = new NotificationCompat.Builder(this); + mNotificationBuilder = + NotificationBuilderWithProgressBar.newNotificationBuilderWithProgressBar(this); mNotificationBuilder .setOngoing(true) .setSmallIcon(R.drawable.notification_icon) @@ -736,7 +731,10 @@ public class FileUploader extends Service implements OnDatatransferProgressListe } else if (uploadResult.isSuccess()) { // / success -> silent update of progress notification to success // message - mNotificationBuilder.setOngoing(false).setAutoCancel(true); + mNotificationBuilder + .setOngoing(false) + .setAutoCancel(true) + .setProgress(0, 0, false); /// includes a pending intent in the notification showing the details view of the file Intent showDetailsIntent = null; @@ -768,26 +766,31 @@ public class FileUploader extends Service implements OnDatatransferProgressListe } else { // / fail -> explicit failure notification - mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker); + mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker); + NotificationCompat.Builder errorBuilder = new NotificationCompat.Builder(this); - errorBuilder - .setSmallIcon(R.drawable.notification_icon) - .setTicker(getString(R.string.uploader_upload_failed_ticker)) - .setContentTitle(getString(R.string.uploader_upload_failed_ticker)) - .setAutoCancel(true); - String content = null; - boolean needsToUpdateCredentials = (uploadResult.getCode() == ResultCode.UNAUTHORIZED || - //(uploadResult.isTemporalRedirection() && uploadResult.isIdPRedirection() && + String content = null; + + // check credentials error + boolean needsToUpdateCredentials = (uploadResult.getCode() == ResultCode.UNAUTHORIZED || (uploadResult.isIdPRedirection() && mUploadClient.getCredentials() == null)); - //MainApp.getAuthTokenTypeSamlSessionCookie().equals(mUploadClient.getAuthTokenType()))); + int tickerId = (needsToUpdateCredentials) ? + R.string.uploader_upload_failed_credentials_error : R.string.uploader_upload_failed_ticker; + + errorBuilder + .setSmallIcon(R.drawable.notification_icon) + .setTicker(getString(tickerId)) + .setContentTitle(getString(tickerId)) + .setAutoCancel(true); + + if (needsToUpdateCredentials) { // let the user update credentials with one click Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class); updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, upload.getAccount()); - updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ENFORCED_UPDATE, true); - updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION, AuthenticatorActivity.ACTION_UPDATE_TOKEN); + updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION, AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN); updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); updateAccountCredentials.addFlags(Intent.FLAG_FROM_BACKGROUND); @@ -849,7 +852,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe } } - mNotificationManager.notify(R.string.uploader_upload_failed_ticker, errorBuilder.build()); + errorBuilder.setContentText(content); + mNotificationManager.notify(tickerId, errorBuilder.build()); } }