Try to reproduce 'Twitter style': notify success and then remove the notification, instead of just removing it

This commit is contained in:
masensio 2014-05-30 12:38:16 +02:00
parent c9ce39241e
commit c407a568e0
2 changed files with 43 additions and 19 deletions

View file

@ -461,8 +461,9 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis
*/
private void notifyDownloadResult(DownloadFileOperation download, RemoteOperationResult downloadResult) {
mNotificationManager.cancel(R.string.downloader_download_in_progress_ticker);
if (!downloadResult.isCancelled() && !downloadResult.isSuccess()) {
int tickerId = R.string.downloader_download_failed_ticker;
if (!downloadResult.isCancelled()) {
int tickerId = (downloadResult.isSuccess()) ? R.string.downloader_download_succeeded_ticker :
R.string.downloader_download_failed_ticker;
boolean needsToUpdateCredentials = (downloadResult.getCode() == ResultCode.UNAUTHORIZED ||
(downloadResult.isIdPRedirection()
@ -501,8 +502,20 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis
}
mNotificationBuilder.setContentText(ErrorMessageAdapter.getErrorCauseMessage(downloadResult, download, getResources()));
mNotificationManager.notify(tickerId, mNotificationBuilder.build());
// Remove success notification
if (downloadResult.isSuccess()) {
// Sleep 2 seconds, so show the notification before remove it
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
mNotificationManager.cancel(R.string.downloader_download_succeeded_ticker);
}
}, 2000);
}
}
}

View file

@ -723,16 +723,15 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
*/
private void notifyUploadResult(RemoteOperationResult uploadResult, UploadFileOperation upload) {
Log_OC.d(TAG, "NotifyUploadResult with resultCode: " + uploadResult.getCode());
if (uploadResult.isCancelled() || uploadResult.isSuccess()) {
// / cancelled operation or success -> silent removal of progress notification
mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker);
// / cancelled operation or success -> silent removal of progress notification
mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker);
// Show the result: success or fail notification
if (!uploadResult.isCancelled()) {
int tickerId = (uploadResult.isSuccess()) ? R.string.uploader_upload_succeeded_ticker :
R.string.uploader_upload_failed_ticker;
} else {
// / fail -> explicit failure notification
mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker);
NotificationCompat.Builder errorBuilder = new NotificationCompat.Builder(this);
NotificationCompat.Builder resultBuilder = new NotificationCompat.Builder(this);
String content = null;
@ -740,10 +739,10 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
boolean needsToUpdateCredentials = (uploadResult.getCode() == ResultCode.UNAUTHORIZED ||
(uploadResult.isIdPRedirection() &&
mUploadClient.getCredentials() == null));
int tickerId = (needsToUpdateCredentials) ?
R.string.uploader_upload_failed_credentials_error : R.string.uploader_upload_failed_ticker;
tickerId = (needsToUpdateCredentials) ?
R.string.uploader_upload_failed_credentials_error : tickerId;
errorBuilder
resultBuilder
.setSmallIcon(R.drawable.notification_icon)
.setTicker(getString(tickerId))
.setContentTitle(getString(tickerId))
@ -759,7 +758,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
updateAccountCredentials.addFlags(Intent.FLAG_FROM_BACKGROUND);
errorBuilder.setContentIntent(PendingIntent.getActivity(
resultBuilder.setContentIntent(PendingIntent.getActivity(
this, (int) System.currentTimeMillis(), updateAccountCredentials, PendingIntent.FLAG_ONE_SHOT
));
@ -777,7 +776,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
detailUploadIntent = new Intent(this, FailedUploadActivity.class);
detailUploadIntent.putExtra(FailedUploadActivity.MESSAGE, content);
}
errorBuilder
resultBuilder
.setContentIntent(PendingIntent.getActivity(
this, (int) System.currentTimeMillis(), detailUploadIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT
))
@ -804,8 +803,20 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
}
}
errorBuilder.setContentText(content);
mNotificationManager.notify(tickerId, errorBuilder.build());
resultBuilder.setContentText(content);
mNotificationManager.notify(tickerId, resultBuilder.build());
// Remove success notification
if (uploadResult.isSuccess()) {
// Sleep 2 seconds, so show the notification before remove it
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
mNotificationManager.cancel(R.string.uploader_upload_succeeded_ticker);
}
}, 2000);
}
}
}