You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
4.4 KiB
140 lines
4.4 KiB
/* |
|
* Copyright 2010-2018 Eric Kok et al. |
|
* |
|
* Transdroid is free software: you can redistribute it and/or modify |
|
* it under the terms of the GNU General Public License as published by |
|
* the Free Software Foundation, either version 3 of the License, or |
|
* (at your option) any later version. |
|
* |
|
* Transdroid is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU General Public License |
|
* along with Transdroid. If not, see <http://www.gnu.org/licenses/>. |
|
*/ |
|
package org.transdroid.core.app.settings; |
|
|
|
import android.content.Context; |
|
import android.content.SharedPreferences; |
|
import android.net.Uri; |
|
import android.provider.Settings; |
|
|
|
import androidx.preference.PreferenceManager; |
|
|
|
import org.androidannotations.annotations.EBean; |
|
import org.androidannotations.annotations.EBean.Scope; |
|
import org.androidannotations.annotations.RootContext; |
|
import org.transdroid.R; |
|
|
|
/** |
|
* Allows instantiation of the settings specified in R.xml.pref_notifications. |
|
* |
|
* @author Eric Kok |
|
*/ |
|
@EBean(scope = Scope.Singleton) |
|
public class NotificationSettings { |
|
|
|
private static final long MINIMUM_BACKGROUND_INTERVAL = 900_000; // 15 minutes |
|
|
|
@RootContext |
|
protected Context context; |
|
private SharedPreferences prefs; |
|
|
|
protected NotificationSettings(Context context) { |
|
prefs = PreferenceManager.getDefaultSharedPreferences(context); |
|
} |
|
|
|
/** |
|
* Whether the background service is enabled and the user wants to receive RSS-related notifications |
|
* |
|
* @return True if the server should be checked for RSS feed updates |
|
*/ |
|
public boolean isEnabledForRss() { |
|
return prefs.getBoolean("notifications_enabledrss", true); |
|
} |
|
|
|
/** |
|
* Whether the background service is enabled and the user wants to receive torrent-related notifications |
|
* |
|
* @return True if the server should be checked for torrent status updates |
|
*/ |
|
public boolean isEnabledForTorrents() { |
|
return prefs.getBoolean("notifications_enabled", true); |
|
} |
|
|
|
private String getRawInverval() { |
|
return prefs.getString("notifications_interval", "10800"); |
|
} |
|
|
|
/** |
|
* Returns the interval between two server checks |
|
* |
|
* @return The interval, in milliseconds |
|
*/ |
|
public Long getInvervalInMilliseconds() { |
|
return Math.max(Long.parseLong(getRawInverval()) * 1000L, MINIMUM_BACKGROUND_INTERVAL); |
|
} |
|
|
|
private String getRawSound() { |
|
return prefs.getString("notifications_sound", null); |
|
} |
|
|
|
/** |
|
* Returns the sound (ring tone) to play on a new notification, or null if it should not play any |
|
* |
|
* @return Either the user-specified sound, null if the user specified 'Silent' or the system default notification sound |
|
*/ |
|
public Uri getSound() { |
|
String raw = getRawSound(); |
|
if (raw == null) |
|
return null; |
|
if (raw.equals("")) |
|
return Settings.System.DEFAULT_NOTIFICATION_URI; |
|
return Uri.parse(raw); |
|
} |
|
|
|
/** |
|
* Whether the device should vibrate on a new notification |
|
*/ |
|
public boolean shouldVibrate() { |
|
return prefs.getBoolean("notifications_vibrate", false); |
|
} |
|
|
|
/** |
|
* Returns the default vibrate pattern to use if the user enabled notification vibrations; check |
|
* {@link #shouldVibrate()}, |
|
* |
|
* @return A unique pattern for vibrations in Transdroid |
|
*/ |
|
public long[] getDefaultVibratePattern() { |
|
return new long[]{100, 100, 200, 300, 400, 700}; // Unique pattern? |
|
} |
|
|
|
private int getRawLedColour() { |
|
return prefs.getInt("notifications_ledcolour", -1); |
|
} |
|
|
|
/** |
|
* Returns the LED colour to use on a new notification |
|
* |
|
* @return The integer value of the user-specified or default colour |
|
*/ |
|
public int getDesiredLedColour() { |
|
int raw = getRawLedColour(); |
|
if (raw <= 0) |
|
return context.getResources().getColor(R.color.ledgreen); |
|
return raw; |
|
} |
|
|
|
/** |
|
* Whether the background service should report to ADW Launcher |
|
* |
|
* @return True if the user want Transdroid to report to ADW Launcher |
|
*/ |
|
public boolean shouldReportToAdwLauncher() { |
|
return prefs.getBoolean("notifications_adwnotify", false); |
|
} |
|
|
|
}
|
|
|