1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-11-10 11:35:11 -05:00
k-9/src/com/fsck/k9/NotificationSetting.java
2010-11-28 20:29:14 +00:00

174 lines
3.8 KiB
Java

package com.fsck.k9;
/**
* Describes how a notification should behave.
*/
public class NotificationSetting
{
/**
* Ring notification kill switch. Allow disabling ringtones without losing
* ringtone selection.
*/
private boolean mRing;
private String mRingtoneUri;
/**
* LED kill switch.
*/
private boolean mLed;
private int mLedColor;
/**
* Vibration kill switch.
*/
private boolean mVibrate;
private int mVibratePattern;
private int mVibrateTimes;
/**
* Set the ringtone kill switch. Allow to disable ringtone without losing
* ringtone selection.
*
* @param ring
* <code>true</code> to allow ringtones, <code>false</code>
* otherwise.
*/
public synchronized void setRing(boolean ring)
{
mRing = ring;
}
/**
* @return <code>true</code> if ringtone is allowed to play,
* <code>false</code> otherwise.
*/
public synchronized boolean shouldRing()
{
return mRing;
}
public synchronized String getRingtone()
{
return mRingtoneUri;
}
public synchronized void setRingtone(String ringtoneUri)
{
mRingtoneUri = ringtoneUri;
}
public synchronized boolean isLed()
{
return mLed;
}
public synchronized void setLed(final boolean led)
{
mLed = led;
}
public synchronized int getLedColor()
{
return mLedColor;
}
public synchronized void setLedColor(int color)
{
mLedColor = color;
}
public synchronized boolean shouldVibrate()
{
return mVibrate;
}
public synchronized void setVibrate(boolean vibrate)
{
mVibrate = vibrate;
}
public synchronized int getVibratePattern()
{
return mVibratePattern;
}
public synchronized int getVibrateTimes()
{
return mVibrateTimes;
}
public synchronized void setVibratePattern(int pattern)
{
mVibratePattern = pattern;
}
public synchronized void setVibrateTimes(int times)
{
mVibrateTimes = 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(mVibratePattern, mVibrateTimes);
}
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;
}
}