package com.fsck.k9; /** * Describes how a notification should behave. */ public class NotificationSetting { private boolean ringEnabled; private String ringtoneUri; private boolean ledEnabled; private int ledColor; private boolean vibrateEnabled; private int vibratePattern; private int vibrateTimes; /** * Set the ringtone kill switch. Allow to disable ringtone without losing * ringtone selection. * * @param ringEnabled * <code>true</code> to allow ringtones, <code>false</code> * otherwise. */ public synchronized void setRingEnabled(boolean ringEnabled) { this.ringEnabled = ringEnabled; } /** * @return <code>true</code> if ringtone is allowed to play, * <code>false</code> otherwise. */ public synchronized boolean isRingEnabled() { return ringEnabled; } public synchronized String getRingtone() { return ringtoneUri; } public synchronized void setRingtone(String ringtoneUri) { this.ringtoneUri = ringtoneUri; } public synchronized boolean isLedEnabled() { return ledEnabled; } public synchronized void setLed(final boolean led) { ledEnabled = led; } public synchronized int getLedColor() { return ledColor; } public synchronized void setLedColor(int color) { ledColor = color; } public synchronized boolean isVibrateEnabled() { return vibrateEnabled; } public synchronized void setVibrate(boolean vibrate) { vibrateEnabled = vibrate; } public synchronized int getVibratePattern() { return vibratePattern; } public synchronized int getVibrateTimes() { return vibrateTimes; } public synchronized void setVibratePattern(int pattern) { vibratePattern = pattern; } public synchronized void setVibrateTimes(int times) { vibrateTimes = times; } /* * Fetch a vibration pattern. * * @param vibratePattern Vibration pattern index to use. * @param vibrateTimes Number of times to do the vibration pattern. * @return Pattern multiplied by the number of times requested. */ public long[] getVibration() { return getVibration(vibratePattern, vibrateTimes); } public static long[] getVibration(int pattern, int times) { // These are "off, on" patterns, specified in milliseconds long[] pattern0 = new long[] {300, 200}; // like the default pattern long[] pattern1 = new long[] {100, 200}; long[] pattern2 = new long[] {100, 500}; long[] pattern3 = new long[] {200, 200}; long[] pattern4 = new long[] {200, 500}; long[] pattern5 = new long[] {500, 500}; long[] selectedPattern = pattern0; //default pattern switch (pattern) { case 1: selectedPattern = pattern1; break; case 2: selectedPattern = pattern2; break; case 3: selectedPattern = pattern3; break; case 4: selectedPattern = pattern4; break; case 5: selectedPattern = pattern5; break; } long[] repeatedPattern = new long[selectedPattern.length * times]; for (int n = 0; n < times; n++) { System.arraycopy(selectedPattern, 0, repeatedPattern, n * selectedPattern.length, selectedPattern.length); } // Do not wait before starting the vibration pattern. repeatedPattern[0] = 0; return repeatedPattern; } }