package org.softeg.slartus.forpdanotifyservice;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.RingtoneManager;
import android.net.Uri;
import android.preference.PreferenceManager;
import org.softeg.slartus.forpdaapi.ClientPreferences;
import org.softeg.slartus.forpdacommon.ExtDateFormat;
import org.softeg.slartus.forpdacommon.ExtPreferences;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/*
* Created by slartus on 05.06.13.
*/
public abstract class NotifierBase {
private Context mContext;
public NotifierBase(Context context) {
mContext = context;
}
public Context getContext() {
return mContext;
}
public abstract void readSettings(Context context, Intent intent);
public abstract void restartTask(Context context);
public abstract void cancel(Context context);
public abstract void checkUpdates();
protected String loadCookiesPath() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
return preferences.getString("CookiesPath", null);
}
private SimpleDateFormat m_DateTimeFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss", Locale.getDefault());
protected GregorianCalendar loadLastDate(String lastDateTimeKey) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
String lastDateTimeStr = preferences.getString(lastDateTimeKey, null);
// Log.d(LOG_TAG, "lastDateTimeStr=" + lastDateTimeStr);
if (lastDateTimeStr == null) return null;
Map<String, Date> additionalHeaders = new HashMap<>();
if (ExtDateFormat.tryParse(m_DateTimeFormat, lastDateTimeStr, additionalHeaders)) {
GregorianCalendar lastDateTime = new GregorianCalendar();
lastDateTime.setTime(additionalHeaders.get("date"));
// Log.d(LOG_TAG, "loadLastDate=" + additionalHeaders.get("date"));
return lastDateTime;
}
return null;
}
protected void saveLastDate(GregorianCalendar calendar, String lastDateTimeKey) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = preferences.edit();
editor.putString(lastDateTimeKey, m_DateTimeFormat.format(calendar.getTime()));
editor.apply();
}
protected static void saveTimeOut(Context context, float timeOut, String timeOutKey) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = preferences.edit();
editor.putFloat(timeOutKey, timeOut);
editor.apply();
}
protected static float loadTimeOut(Context context, String timeOutKey) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return ExtPreferences.parseFloat(preferences, timeOutKey, 5);
}
protected static Uri getSound(Context context) {
if (!ClientPreferences.Notifications.useSound(context))
return null;
if (ClientPreferences.Notifications.SilentMode.isEnabled(context)) {
Calendar nowTime = Calendar.getInstance();
Calendar startTime = ClientPreferences.Notifications.SilentMode.getStartTime(context);
Calendar endTime = ClientPreferences.Notifications.SilentMode.getEndTime(context);
if (endTime.before(startTime))
endTime.add(Calendar.DAY_OF_YEAR, 1);
if (nowTime.after(startTime) && nowTime.before(endTime))
return null;
}
Uri defaultUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if (ClientPreferences.Notifications.isDefaultSound(context))
return defaultUri;// Settings.System.DEFAULT_NOTIFICATION_URI
return ClientPreferences.Notifications.getSound(context);
}
}