package com.fsck.k9.notification; import com.fsck.k9.Account; class NotificationIds { private static final int OFFSET_SEND_FAILED_NOTIFICATION = 0; private static final int OFFSET_CERTIFICATE_ERROR_INCOMING = 1; private static final int OFFSET_CERTIFICATE_ERROR_OUTGOING = 2; private static final int OFFSET_AUTHENTICATION_ERROR_INCOMING = 3; private static final int OFFSET_AUTHENTICATION_ERROR_OUTGOING = 4; private static final int OFFSET_FETCHING_MAIL = 5; private static final int OFFSET_NEW_MAIL_SUMMARY = 6; private static final int OFFSET_NEW_MAIL_STACKED = 7; private static final int NUMBER_OF_DEVICE_NOTIFICATIONS = 7; private static final int NUMBER_OF_STACKED_NOTIFICATIONS = NotificationData.MAX_NUMBER_OF_STACKED_NOTIFICATIONS; private static final int NUMBER_OF_NOTIFICATIONS_PER_ACCOUNT = NUMBER_OF_DEVICE_NOTIFICATIONS + NUMBER_OF_STACKED_NOTIFICATIONS; public static int getNewMailSummaryNotificationId(Account account) { return getBaseNotificationId(account) + OFFSET_NEW_MAIL_SUMMARY; } public static int getNewMailStackedNotificationId(Account account, int index) { if (index < 0 || index >= NUMBER_OF_STACKED_NOTIFICATIONS) { throw new IndexOutOfBoundsException("Invalid value: " + index); } return getBaseNotificationId(account) + OFFSET_NEW_MAIL_STACKED + index; } public static int getFetchingMailNotificationId(Account account) { return getBaseNotificationId(account) + OFFSET_FETCHING_MAIL; } public static int getSendFailedNotificationId(Account account) { return getBaseNotificationId(account) + OFFSET_SEND_FAILED_NOTIFICATION; } public static int getCertificateErrorNotificationId(Account account, boolean incoming) { int offset = incoming ? OFFSET_CERTIFICATE_ERROR_INCOMING : OFFSET_CERTIFICATE_ERROR_OUTGOING; return getBaseNotificationId(account) + offset; } public static int getAuthenticationErrorNotificationId(Account account, boolean incoming) { int offset = incoming ? OFFSET_AUTHENTICATION_ERROR_INCOMING : OFFSET_AUTHENTICATION_ERROR_OUTGOING; return getBaseNotificationId(account) + offset; } private static int getBaseNotificationId(Account account) { return account.getAccountNumber() * NUMBER_OF_NOTIFICATIONS_PER_ACCOUNT; } }