package com.fsck.k9.notification;
import android.app.PendingIntent;
import android.content.Context;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.BigTextStyle;
import android.support.v4.app.NotificationCompat.Builder;
import com.fsck.k9.Account;
import com.fsck.k9.K9;
import com.fsck.k9.K9.NotificationQuickDelete;
import com.fsck.k9.R;
abstract class BaseNotifications {
protected final Context context;
protected final NotificationController controller;
protected final NotificationActionCreator actionCreator;
protected BaseNotifications(NotificationController controller, NotificationActionCreator actionCreator) {
this.context = controller.getContext();
this.controller = controller;
this.actionCreator = actionCreator;
}
protected NotificationCompat.Builder createBigTextStyleNotification(Account account, NotificationHolder holder,
int notificationId) {
String accountName = controller.getAccountName(account);
NotificationContent content = holder.content;
String groupKey = NotificationGroupKeys.getGroupKey(account);
NotificationCompat.Builder builder = createAndInitializeNotificationBuilder(account)
.setTicker(content.summary)
.setGroup(groupKey)
.setContentTitle(content.sender)
.setContentText(content.subject)
.setSubText(accountName);
NotificationCompat.BigTextStyle style = createBigTextStyle(builder);
style.bigText(content.preview);
builder.setStyle(style);
PendingIntent contentIntent = actionCreator.createViewMessagePendingIntent(
content.messageReference, notificationId);
builder.setContentIntent(contentIntent);
return builder;
}
protected NotificationCompat.Builder createAndInitializeNotificationBuilder(Account account) {
return controller.createNotificationBuilder()
.setSmallIcon(getNewMailNotificationIcon())
.setColor(account.getChipColor())
.setWhen(System.currentTimeMillis())
.setAutoCancel(true)
.setCategory(NotificationCompat.CATEGORY_EMAIL);
}
protected boolean isDeleteActionEnabled() {
NotificationQuickDelete deleteOption = K9.getNotificationQuickDeleteBehaviour();
return deleteOption == NotificationQuickDelete.ALWAYS || deleteOption == NotificationQuickDelete.FOR_SINGLE_MSG;
}
protected BigTextStyle createBigTextStyle(Builder builder) {
return new BigTextStyle(builder);
}
private int getNewMailNotificationIcon() {
return R.drawable.notification_icon_new_mail;
}
}