/*
* Copyright 2011 Adi Sayoga.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.adisayoga.earthquake.wrapper;
import android.app.AlarmManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.location.Location;
import android.media.RingtoneManager;
import android.net.Uri;
import android.preference.PreferenceManager;
import com.adisayoga.earthquake.R;
import com.adisayoga.earthquake.dto.EarthquakeTheme;
import com.adisayoga.earthquake.dto.LocationType;
import com.adisayoga.earthquake.dto.Unit;
import com.adisayoga.earthquake.utils.LocationUtils;
/**
* Class setter dan getter preference.
*
* @author Adi Sayoga
*/
public class Prefs {
// Display
public static final String MIN_MAG = "min_mag";
public static final String AUTO_UPDATE = "auto_update";
public static final String INTERVAL = "interval";
public static final String MAX_AGE = "max_age";
public static final String UNIT = "unit";
public static final String THEME = "theme";
// Lokasi
public static final String LOC_DETECT = "loc_detect";
public static final String LOC_MANUAL = "loc_manual";
public static final String LOC_MANUAL_LATITUDE = "loc_manual_latitude";
public static final String LOC_MANUAL_LONGITUDE = "loc_manual_longitude";
// Notifikasi
public static final String RANGE = "range";
public static final String NOTIFY = "notify";
public static final String NOTIFY_SEND = "notify_send";
public static final String NOTIFY_MIN_MAG = "notify_min_mag";
public static final String NOTIFY_ALERT = "notify_alert";
public static final String NOTIFY_ALERT_SOUND = "notify_alert_sound";
public static final String NOTIFY_FLASH = "notify_flash";
public static final String NOTIFY_VIBRATE = "notify_vibrate";
public static final String FACEBOOK = "facebook";
public static final String FACEBOOK_SEND = "facebook_send";
public static final String FACEBOOK_MIN_MAG = "facebook_min_mag";
public static final String TWITTER = "twitter";
public static final String TWITTER_SEND = "twitter_send";
public static final String TWITTER_MIN_MAG = "twitter_min_mag";
public static final String TWITTER_TEMPLATE = "twitter_template";
public static final String TWITTER_ACCESS_TOKEN = "twitter_access_token";
public static final String TWITTER_ACCESS_TOKEN_SECRET = "twitter_access_token_secret";
public static final String SOCIAL_CONNECT = "social_connect";
public static final String CONTACT = "contact";
public static final String MAIL = "mail";
public static final String MAIL_SEND = "mail_send";
public static final String MAIL_MIN_MAG = "mail_min_mag";
public static final String MAIL_CONNECT = "mail_connect";
public static final String MAIL_LOGIN = "mail_login";
public static final String MAIL_HOST = "mail_host";
public static final String MAIL_PORT = "mail_port";
public static final String MAIL_SPORT = "mail_sport";
public static final String MAIL_USERNAME = "mail_username";
public static final String MAIL_PASS = "mail_pass";
public static final String MAIL_TEMPLATE = "mail_template";
public static final String MAIL_TEMPLATE_DETAIL = "mail_template_detail";
public static final String SMS = "sms";
public static final String SMS_SEND = "sms_send";
public static final String SMS_MIN_MAG = "sms_min_mag";
public static final String SMS_TEMPLATE = "sms_template";
public static final String SMS_TEMPLATE_DETAIL = "sms_template_detail";
// Lainnya
public static final String BOOT_START = "boot_start";
public static final String DIALOG = "dialog";
public static final String DIALOG_STARTUP = "dialog_startup";
public static final String DIALOG_INTERVAL = "dialog_interval";
public static final String LAST_UPDATE = "last_update";
public static final String ZOOM_TO_FIT = "zoom_to_fit";
// Tags
public static final String TPL_DETAILS = "{details}";
public static final String TPL_REGION = "{region}";
public static final String TPL_MAGNITUDE = "{magnitude}";
public static final String TPL_DATE = "{date}";
public static final String TPL_LOCATION = "{location}";
public static final String TPL_DEPTH = "{depth}";
public static final String TPL_DISTANCE = "{distance}";
public static final String TPL_COUNT = "{count}";
// Default value
private static final String DEF_MIN_MAG = "3";
private static final String DEF_MIN_MAG_NOTIFY_REG = "5";
private static final String DEF_MIN_MAG_NOTIFY_GLOBAL = "6";
private static final String DEF_MIN_MAG_SMS_REG = "7";
private static final String DEF_MIN_MAG_SMS_GLOBAL = "8";
private static final String DEF_MIN_MAG_FACEBOOK_REG = "6";
private static final String DEF_MIN_MAG_FACEBOOK_GLOBAL = "7";
private static final String DEF_MIN_MAG_TWITTER_REG = "6";
private static final String DEF_MIN_MAG_TWITTER_GLOBAL = "7";
private static final String DEF_MIN_MAG_MAIL_REG = "6";
private static final String DEF_MIN_MAG_MAIL_GLOBAL = "7";
private static Prefs instance = null;
private static SharedPreferences prefs;
private Prefs() {
}
public static Prefs getInstance(Context context) {
if (instance == null) {
instance = new Prefs();
Prefs.prefs = PreferenceManager.getDefaultSharedPreferences(context);
}
return instance;
}
/**
* Mendapatkan SharedPreferences
*
* @return SharedPreferences
*/
public SharedPreferences getSharedPrefs() {
return prefs;
}
/* *********************************************************************** *
* Getter/Setter
* *********************************************************************** */
/* ----------------------------------------------------------------------- *
* Display
* ----------------------------------------------------------------------- */
/**
* Mendapatkan nilai maginitudo minimal gempa bumi yang akan ditampilkan.
*
* @return Magnitodo minimal
*/
public float getMinMagnitude() {
return Float.parseFloat(prefs.getString(MIN_MAG, DEF_MIN_MAG));
}
/**
* Menyimpan nilai magnitudo minimal gempa bumi yang akan ditampilkan
* ke preference.
*
* @param value Magnitudo minimal
*/
public void setMinMagnitude(float value) {
prefs.edit().putString(MIN_MAG, Float.toString(value))
.commit();
}
/**
* Mendapatkan apakah gempa bumi dicek otomatis secara periodik atau tidak.
*
* @return True jika dicek secara periodik
*/
public boolean isAutoUpdate() {
return prefs.getBoolean(AUTO_UPDATE, false);
}
/**
* Menentukan apakah gempa bumi dicek otomatis secara periodik atau tidak.
*
* @param value True jika dicek secara periodik
*/
public void setAutoUpdate(boolean value) {
prefs.edit().putBoolean(AUTO_UPDATE, value).commit();
}
/**
* Mendapatkan seberapa sering gempa bumi baru dicek secara periodik.
*
* @return Interval dalam milisecond
*/
public long getInterval() {
String interval = prefs.getString(INTERVAL, Long.toString(
AlarmManager.INTERVAL_FIFTEEN_MINUTES));
return Long.parseLong(interval);
}
/**
* Menyimpan seberapa sering gempa bumi baru dicek secara periodik.
*
* @param value Interval dalam milisecond
*/
public void setInterval(int value) {
prefs.edit().putString(INTERVAL, Integer.toString(value)).commit();
}
/**
* Mendapatkan berapa hari data akan disimpan dalam database. Gempa bumi
* lebih lama dari ini akan dihapus.
*
* @return Hari dalam milisecond
*/
public long getMaxAge() {
// dikali 1 hari (dalam milisecond)
long age = Integer.parseInt(prefs.getString(MAX_AGE, "30"));
return age * AlarmManager.INTERVAL_DAY;
}
/**
* Menyimpan berapa hari data akan disimpan dalam database. Gempa bumi
* lebih lama dari ini akan dihapus.
*
* @param value Hari dalam milisecond
*/
public void setMaxAge(long value) {
// disimpan dalam satuan hari
prefs.edit().putString(MAX_AGE, Long.toString(value /
AlarmManager.INTERVAL_DAY)).commit();
}
/**
* Mendapatkan unit yang digunakan ketika menampilkan jarak.
*
* @return Unit dalam Metric/US
*/
public Unit getUnit() {
Unit unit = Unit.valueOf(prefs.getString(UNIT, Unit.METRIC
.toString()));
return unit;
}
/**
* Menyimpan unit yang digunakan ketika menampilkan jarak.
*
* @param value Unit dalam Metric/US
*/
public void setUnit(Unit value) {
prefs.edit().putString(UNIT, value.toString()).commit();
}
/**
* Mendapatkan tema yang digunakan pada aplikasi ini.
*
* @return Tema yang digunakan
*/
public EarthquakeTheme getTheme() {
return EarthquakeTheme.valueOf(prefs.getString(THEME,
EarthquakeTheme.LIGHT.toString()));
}
/**
* Menyimpan tema yang digunakan pada aplikasi ini.
*
* @param value Tema yang digunakan
*/
public void setTheme(EarthquakeTheme value) {
prefs.edit().putString(THEME, value.toString()).commit();
}
/* ----------------------------------------------------------------------- *
* Lokasi
* ----------------------------------------------------------------------- */
/**
* Mendapatkan apakah lokasi dapat dideteksi atau tidak.
*
* @return True jika lokasi dapat dideteksi
*/
public boolean isDetectLocation() {
return prefs.getBoolean(LOC_DETECT, true);
}
/**
* Menentukan apakah lokasi dapat dideteksi atau tidak.
*
* @param value True jika dapat dideteksi
*/
public void setDetectLocation(boolean value) {
prefs.edit().putBoolean(LOC_DETECT, value).commit();
}
/**
* Mendapatkan koordinat lokasi yang diinputkan secara manual.
*
* @return Koordinat lokasi manual
*/
public Location getManualLocation() {
Location location = new Location(LocationUtils.CONSTRUCT_PROVIDER);
location.setLatitude(getManualLatitude());
location.setLongitude(getManualLongitude());
return location;
}
/**
* Mendapatkan lokasi latitude yang diinputkan manual.
*
* @return Latitude
*/
public double getManualLatitude() {
String latitudeString = prefs.getString(LOC_MANUAL_LATITUDE, "0");
double latitude = Double.parseDouble(latitudeString);
return latitude;
}
/**
* Mendapatkan lokasi longitude yang diinputkan manual.
*
* @return Longitude
*/
public double getManualLongitude() {
String longitudeString = prefs.getString(LOC_MANUAL_LONGITUDE, "0");
double longitude = Double.parseDouble(longitudeString);
return longitude;
}
/**
* Menyimpan koordinat lokasi yang diinputkan secara manual.
*
* @param value Koordinat lokasi manual
*/
public void setManualLocation(Location value) {
Double latitude = Double.MIN_VALUE;
Double longitude = Double.MIN_VALUE;
if (value != null) {
latitude = value.getLatitude();
longitude = value.getLongitude();
}
setManualLocation(latitude, longitude);
}
/**
* Menyimpan koordinat lokasi yang diinputkan secara manual.
*
* @param latitude Latitude
* @param longitude Longitude
*/
public void setManualLocation(Double latitude, Double longitude) {
Editor editor = prefs.edit();
editor.putString(LOC_MANUAL_LATITUDE, Double.toString(latitude));
editor.putString(LOC_MANUAL_LONGITUDE, Double.toString(longitude));
editor.commit();
}
/**
* Mendapatkan alamat lokasi yang diinputkan secara manual.
*
* @return Alamat lokasi manual
*/
public String getManualLocationAddress() {
return prefs.getString(LOC_MANUAL, "");
}
/**
* Menyimpan alamat lokasi yang diinputkan secara manual.
*
* @param value Alamat lokasi manual
*/
public void setManualLocactionAddress(String value) {
prefs.edit().putString(LOC_MANUAL, value).commit();
}
/* ----------------------------------------------------------------------- *
* Notifikasi
* ----------------------------------------------------------------------- */
/**
* Mendapatkan berapa jarak gempa dapat dikategorikan sebagai wilayah regional.
*
* @return Jarak dalam meter
*/
public int getRange() {
String range = prefs.getString(RANGE, "250000");
return Integer.parseInt(range);
}
/**
* Menyimpan jarak gempa yang dikategorikan sebagai wilayah regional.
*
* @param value Jarak dalam meter
*/
public void setRange(int value) {
prefs.edit().putString(RANGE, Integer.toString(value)).commit();
}
/**
* Mendapatkan apakah akan mengirim pemberitahuan saat terjadi gempa atau tidak.
*
* @return True jika notifikasi diaktifkan
*/
public boolean isNotifySend() {
return prefs.getBoolean(NOTIFY_SEND, true);
}
/**
* Menyimpan apakah pemberitahuan dikirim saat terjadi gempa atau tidak.
*
* @param value True untuk mengaktifkan pemberitahuan, untuk tidak mengaktifkan
*/
public void setNotifySend(boolean value) {
prefs.edit().putBoolean(NOTIFY_SEND, value).commit();
}
/**
* Mendapatkan minimal magnitudo pemberitahuan saat terjadi gempa.
*
* @param locationType Tipe lokasi, REGIONAL atau GLOBAL
* @return Minimal magnitudo pemberitahuan
*/
public float getNotifyMinMagnitude(LocationType locationType) {
String defValue = (locationType == LocationType.REGIONAL)
? DEF_MIN_MAG_NOTIFY_REG : DEF_MIN_MAG_NOTIFY_GLOBAL;
String magnitude = prefs.getString(NOTIFY_MIN_MAG + "_" + locationType.value,
defValue);
return Float.parseFloat(magnitude);
}
/**
* Menyimpan minimal magnitudo pemberitahuan.
*
* @param locationType Tipe lokasi, REGIONAL atau GLOBAL
* @param value Minimal magnitudo pemberitahuan
*/
public void setNotifyMinMagnitude(LocationType locationType, float value) {
prefs.edit().putString(NOTIFY_MIN_MAG + "_" + locationType.value,
Float.toString(value)).commit();
}
/**
* Mendapatkan apakah membunyikan suara alert saat pemberithauan atau tidak.
*
* @return True jika terdapat suara, false jika tidak
*/
public boolean isNotifyAlert() {
return prefs.getBoolean(NOTIFY_ALERT, true);
}
/**
* Menyimpan apakah membunyikan suara alert saat pemberitahuan atau tidak.
*
* @param value True jika membunyikan suara, false jika tidak
*/
public void setNotifyAlert(boolean value) {
prefs.edit().putBoolean(NOTIFY_ALERT, value).commit();
}
/**
* Mendapatkan suara alert saat pemberitahuan. Suara alert harus diaktifkan
* terlebih dahulu. lihat {@link #isNotifyAlert()}
*
* @return Suara alert
*/
public Uri getNotifyAlertSound() {
String uriString = prefs.getString(NOTIFY_ALERT_SOUND, "");
if (uriString == null || uriString.length() == 0) {
if (isNotifyAlert()) {
Uri defaultUri = RingtoneManager.getDefaultUri(RingtoneManager
.TYPE_NOTIFICATION);
setNotifyAlertSound(defaultUri);
return defaultUri;
} else {
return null;
}
}
return Uri.parse(uriString);
}
/**
* Menyimpan suara alert notifikasi.
*
* @param value Uri suara alert
*/
public void setNotifyAlertSound(Uri value) {
prefs.edit().putString(NOTIFY_ALERT_SOUND, value.toString()).commit();
}
/**
* Mendapatkan apakah layar berkedip saat pemberitahuan.
*
* @return True jika berkedip, false jika tidak
*/
public boolean isNotifyFlash() {
return prefs.getBoolean(NOTIFY_FLASH, true);
}
/**
* Menentukan apakah layar berkedip saat pemberitahuan atau tidak.
*
* @param value True jika berkedip, false jika tidak
*/
public void setNotifyFlash(boolean value) {
prefs.edit().putBoolean(NOTIFY_FLASH, value).commit();
}
/**
* Mendapatkan apakah bergetar saat pemberitahuan atau tidak.
*
* @return True jika bergetar, false jika tidak
*/
public boolean isNotifyVibrate() {
return prefs.getBoolean(NOTIFY_VIBRATE, true);
}
/**
* Menentukan apakah bergetar saat pemberitahuan atau tidak.
*
* @param value True jika bergetar, false jika tidak
*/
public void setNotifyVibrate(boolean value) {
prefs.edit().putBoolean(NOTIFY_VIBRATE, value).commit();
}
/* ----------------------------------------------------------------------- *
* Facebook
* ----------------------------------------------------------------------- */
/**
* Mendapatkan apakah akan memposting ke Facebook ketika terjadi gempa atau tidak.
*
* @return True jika posting, false jika tidak
*/
public boolean isFacebookSend() {
return prefs.getBoolean(FACEBOOK_SEND, false);
}
/**
* Menentukan apakah akan memposting ke Facebook ketika terjadi gempa atau tidak.
*
* @param value True jika posting, false jika tidak
*/
public void setFacebookSend(boolean value) {
prefs.edit().putBoolean(FACEBOOK_SEND, value).commit();
}
/**
* Mendapatkan minimal magnitudo share ke Facebook jika terjadi gempa.
*
* @param locationType Tipe lokasi, REGIONAL atau GLOBAL
* @return Minimal magnitudo share
*/
public float getFacebookMinMagnitude(LocationType locationType) {
String defValue = (locationType == LocationType.REGIONAL)
? DEF_MIN_MAG_FACEBOOK_REG : DEF_MIN_MAG_FACEBOOK_GLOBAL;
String magnitude = prefs.getString(FACEBOOK_MIN_MAG + "_"
+ locationType.value, defValue);
return Float.parseFloat(magnitude);
}
/**
* Menyimpan minimal magnitudo share ke Facebook jika terjadi gempa.
*
* @param locationType Tipe lokasi, REGIONAL atau GLOBAL
* @param value Minimal magnitudo share
*/
public void setFacebookMinMagnitude(LocationType locationType, float value) {
prefs.edit().putString(FACEBOOK_MIN_MAG + "_" + locationType.value,
Float.toString(value)).commit();
}
/* ----------------------------------------------------------------------- *
* Twitter
* ----------------------------------------------------------------------- */
/**
* Mendapatkan apakah akan memposting ke Twitter ketika terjadi gempa atau tidak.
*
* @return True jika posting, false jika tidak
*/
public boolean isTwitterSend() {
return prefs.getBoolean(TWITTER_SEND, false);
}
/**
* Menentukan apakah akan memposting ke Twitter ketika terjadi gempa atau tidak.
*
* @param value True jika posting, false jika tidak
*/
public void setTwitterSend(boolean value) {
prefs.edit().putBoolean(TWITTER_SEND, value).commit();
}
/**
* Mendapatkan minimal magnitudo share ke Twitter jika terjadi gempa.
*
* @param locationType Tipe lokasi, REGIONAL atau GLOBAL
* @return Minimal magnitudo share
*/
public float getTwitterMinMagnitude(LocationType locationType) {
String defValue = (locationType == LocationType.REGIONAL)
? DEF_MIN_MAG_TWITTER_REG : DEF_MIN_MAG_TWITTER_GLOBAL;
String magnitude = prefs.getString(TWITTER_MIN_MAG + "_"
+ locationType.value, defValue);
return Float.parseFloat(magnitude);
}
/**
* Menyimpan minimal magnitudo share ke Twitter jika terjadi gempa.
*
* @param locationType Tipe lokasi, REGIONAL atau GLOBAL
* @param value Minimal magnitudo share
*/
public void setTwitterMinMagnitude(LocationType locationType, float value) {
prefs.edit().putString(TWITTER_MIN_MAG + "_" + locationType.value,
Float.toString(value)).commit();
}
/**
* Mendapatkan template Twitter untuk dikirim jika terjadi gempa, jika belum
* diatur sebelumnya akan digunakan template Twitter default.
*
* @param context Context
* @return Template Twitter
*/
public String getTwitterTemplate(Context context) {
return prefs.getString(TWITTER_TEMPLATE, context.getString(
R.string.tpl_def_twitter));
}
/**
* Menyimpan detail template Twitter untuk dikirim jika terjadi gempa.
*
* @param value Template Twitter
*/
public void setTwitterTemplate(String value) {
prefs.edit().putString(TWITTER_TEMPLATE, value).commit();
}
/**
* Mendapatkan akses token user.
*
* @return Akses token
*/
public String getTwitterAccessToken() {
return prefs.getString(TWITTER_ACCESS_TOKEN, "");
}
/**
* Menyimpan akses token user.
*
* @param token Akses token
* @param secret Akses token rahasia
*/
public void setTwitterToken(String token, String secret) {
Editor editor = prefs.edit();
editor.putString(TWITTER_ACCESS_TOKEN, token);
editor.putString(TWITTER_ACCESS_TOKEN_SECRET, secret);
editor.commit();
}
/**
* Mendapatkan akses token user.
*
* @return Array, index 0: akses token, index 1: akses token rahasia
*/
public String[] getTwitterToken() {
String token = prefs.getString(TWITTER_ACCESS_TOKEN, "");
String secret = prefs.getString(TWITTER_ACCESS_TOKEN_SECRET, "");
return new String[] { token, secret };
}
/* ----------------------------------------------------------------------- *
* Email
* ----------------------------------------------------------------------- */
/**
* Mendapatkan apakah akan mengirim email ketika terjadi gempa atau tidak.
*
* @return True jika mengirim email, false jika tidak
*/
public boolean isMailSend() {
return prefs.getBoolean(MAIL_SEND, false);
}
/**
* Menentukan apakah akan mengirim email ketika terjadi gempa atau tidak.
*
* @param value True jika mengirim email, false jika tidak
*/
public void setMailSend(boolean value) {
prefs.edit().putBoolean(MAIL_SEND, value).commit();
}
/**
* Mendapatkan minimal magnitudo mengirim email jika terjadi gempa.
*
* @param locationType Tipe lokasi, REGIONAL atau GLOBAL
* @return Minimal magnitudo mengirim email
*/
public float getMailMinMagnitude(LocationType locationType) {
String defValue = (locationType == LocationType.REGIONAL)
? DEF_MIN_MAG_MAIL_REG : DEF_MIN_MAG_MAIL_GLOBAL;
String magnitude = prefs.getString(MAIL_MIN_MAG + "_"
+ locationType.value, defValue);
return Float.parseFloat(magnitude);
}
/**
* Menyimpan minimal magnitudo mengirim email jika terjadi gempa.
*
* @param locationType Tipe lokasi, REGIONAL atau GLOBAL
* @param value Minimal magnitudo mengirim email
*/
public void setMailMinMagnitude(LocationType locationType, float value) {
prefs.edit().putString(MAIL_MIN_MAG + "_" + locationType.value,
Float.toString(value)).commit();
}
/**
* Mendapatkan SMTP server email.
*
* @return SMTP server email
*/
public String getMailHost() {
return prefs.getString(MAIL_HOST, "");
}
/**
* Menyimpan SMTP server email.
*
* @param value SMTP server
*/
public void setMailHost(String value) {
prefs.edit().putString(MAIL_HOST, value).commit();
}
/**
* Mendapatkan SMTP port email.
*
* @return SMTP port email
*/
public String getMailPort() {
return prefs.getString(MAIL_PORT, "");
}
/**
* Menyimpan SMPT port email.
*
* @param value SMTP port email
*/
public void setMailPort(String value) {
prefs.edit().putString(MAIL_PORT, value).commit();
}
/**
* Mendapatkan socket factory port email.
*
* @return Socket factory port email
*/
public String getMailSPort() {
return prefs.getString(MAIL_SPORT, "");
}
/**
* Menyimpan socket factory port email.
*
* @param value Socket factory port email
*/
public void setMailSPort(String value) {
prefs.edit().putString(MAIL_SPORT, value).commit();
}
/**
* Mendapatkan username email.
*
* @return Username email
*/
public String getMailUsername() {
return prefs.getString(MAIL_USERNAME, "");
}
/**
* Menyimpan username email.
*
* @param value Username
*/
public void setMailUsername(String value) {
prefs.edit().putString(MAIL_USERNAME, value).commit();
}
/**
* Mendapatkan password email.
*
* @return Password email
*/
public String getMailPass() {
return prefs.getString(MAIL_PASS, "");
}
/**
* Menyimpan username email.
*
* @param value Username
*/
public void setMailPass(String value) {
prefs.edit().putString(MAIL_PASS, value).commit();
}
/**
* Mendapatkan template email untuk dikirim jika terjadi gempa, jika belum
* diatur sebelumnya akan digunakan template email default.
*
* @param context Context
* @return Template email
*/
public String getMailTemplate(Context context) {
return prefs.getString(MAIL_TEMPLATE, context.getString(
R.string.tpl_def_mail));
}
/**
* Menyimpan detail template email untuk dikirim jika terjadi gempa.
*
* @param value Template email
*/
public void setMailTemplate(String value) {
prefs.edit().putString(MAIL_TEMPLATE, value).commit();
}
/**
* Mendapatkan detail template email untuk dikirim jika terjadi gempa,
* jika belum diatur sebelumnya akan digunakan template email default.
*
* @param context Context
* @return Template email
*/
public String getMailTemplateDetail(Context context) {
return prefs.getString(MAIL_TEMPLATE_DETAIL, context.getString(
R.string.tpl_def_mail_detail));
}
/**
* Menyimpan template email untuk dikirim jika terjadi gempa.
*
* @param value Template email
*/
public void setMailTemplateDetail(String value) {
prefs.edit().putString(MAIL_TEMPLATE_DETAIL, value).commit();
}
/* ----------------------------------------------------------------------- *
* SMS
* ----------------------------------------------------------------------- */
/**
* Mendapatkan apakah akan mengirim pesan SMS ketika terjadi gempa atau tidak.
*
* @return True jika mengirim SMS, false jika tidak
*/
public boolean isSmsSend() {
return prefs.getBoolean(SMS_SEND, false);
}
/**
* Menentukan apakah akan mengirim pesan SMS ketika terjadi gempa atau tidak.
*
* @param value True jika mengirim SMS, false jika tidak
*/
public void setSmsSend(boolean value) {
prefs.edit().putBoolean(SMS_SEND, value).commit();
}
/**
* Mendapatkan minimal magnitudo mengirim pesan SMS jika terjadi gempa.
*
* @param locationType Tipe lokasi, REGIONAL atau GLOBAL
* @return Minimal magnitudo mengirim SMS
*/
public float getSmsMinMagnitude(LocationType locationType) {
String defValue = (locationType == LocationType.REGIONAL)
? DEF_MIN_MAG_SMS_REG : DEF_MIN_MAG_SMS_GLOBAL;
String magnitude = prefs.getString(SMS_MIN_MAG + "_" + locationType.value,
defValue);
return Float.parseFloat(magnitude);
}
/**
* Menyimpan minimal magnitudo mengirim pesan SMS jika terjadi gempa.
*
* @param locationType Tipe lokasi, REGIONAL atau GLOBAL
* @param value Minimal magnitudo mengirim pesan
*/
public void setSmsMinMagnitude(LocationType locationType, float value) {
prefs.edit().putString(SMS_MIN_MAG + "_" + locationType.value,
Float.toString(value)).commit();
}
/**
* Mendapatkan template pesan SMS untuk dikirim jika terjadi gempa, jika belum
* diatur sebelumnya akan digunakan template sms default.
*
* @param context Context
* @return Template SMS
*/
public String getSmsTemplate(Context context) {
return prefs.getString(SMS_TEMPLATE, context.getString(
R.string.tpl_def_sms));
}
/**
* Menyimpan detail template pesan SMS untuk dikirim jika terjadi gempa.
*
* @param value Template SMS
*/
public void setSmsTemplate(String value) {
prefs.edit().putString(SMS_TEMPLATE, value).commit();
}
/**
* Mendapatkan detail template pesan SMS untuk dikirim jika terjadi gempa,
* jika belum diatur sebelumnya akan digunakan template sms default.
*
* @param context Context
* @return Template SMS
*/
public String getSmsTemplateDetail(Context context) {
return prefs.getString(SMS_TEMPLATE_DETAIL, context.getString(
R.string.tpl_def_sms_detail));
}
/**
* Menyimpan template pesan SMS untuk dikirim jika terjadi gempa.
*
* @param value Template SMS
*/
public void setSmsTemplateDetail(String value) {
prefs.edit().putString(SMS_TEMPLATE_DETAIL, value).commit();
}
/* ----------------------------------------------------------------------- *
* Others
* ----------------------------------------------------------------------- */
/**
* Mendapatkan apakah service di-start secara otomatis saat sistem boot.
*
* @return True jika service di-start saat boot
*/
public boolean isBootStart() {
return prefs.getBoolean(BOOT_START, true);
}
/**
* Menentukan apakah service di-start secara otomatis saat sistem boot.
*
* @param value True jika service di-start saat boot
*/
public void setBootStart(boolean value) {
prefs.edit().putBoolean(BOOT_START, value).commit();
}
/**
* Mendapatkan apakah dialog ditampilkan atau tidak.
*
* @param warnId ID dari dialog
* @return True jika dialog ditampilkan, false jika tidak
*/
public boolean isDialogShown(String warnId) {
return prefs.getBoolean(warnId, true);
}
/**
* Menentukan apakah dialog ditampilkan atau tidak.
*
* @param key ID dari dialog
* @param value True jika dialog ditampilkan, false jika tidak
*/
public void setDialogShown(String key, boolean value) {
prefs.edit().putBoolean(key, value).commit();
}
/**
* Mendapatkan terakhir kali data di-update. (dalam milisecond).
*
* @return Waktu terakhir di-update dalam milisecond
*/
public long getLastUpdate() {
return prefs.getLong(LAST_UPDATE, 0);
}
/**
* Menyimpan terakhir kali data di-update. (dalam milisecond).
*
* @param value Waktu terakhir kali di-update dalam milisecond
*/
public void setLastUpdate(long value) {
prefs.edit().putLong(LAST_UPDATE, value).commit();
}
/**
* Mendapatkan apakah layer pada peta digunakan atau tidak.
*
* @param key Key layer yang digunakan
* @return True jika digunakan, false jika tidak
*/
public boolean isLayerUsed(String key) {
return prefs.getBoolean(key, false);
}
/**
* Menentukan apakah layer pada peta digunakan atau tidak.
*
* @param key Key layer yang digunakan
* @param value True jika digunakan, false jika tidak
*/
public void setLayerUsed(String key, boolean value) {
prefs.edit().putBoolean(key, value).commit();
}
}