Skip to content

Commit

Permalink
Refactor reminders and link to preferences
Browse files Browse the repository at this point in the history
  • Loading branch information
J-Jamet committed Jul 27, 2017
1 parent a4d05bf commit 53e3637
Show file tree
Hide file tree
Showing 23 changed files with 843 additions and 654 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@

import com.kunzisoft.remembirthday.element.Contact;
import com.kunzisoft.remembirthday.element.DateUnknownYear;
import com.kunzisoft.remembirthday.task.ActionBirthdayInDatabaseTask;
import com.kunzisoft.remembirthday.task.UpdateBirthdayToContactTask;
import com.kunzisoft.remembirthday.provider.ActionBirthdayInDatabaseTask;
import com.kunzisoft.remembirthday.provider.UpdateBirthdayToContactTask;

/**
* Abstract class to encapsulate the management of the birthday dialog.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import android.widget.Toast;

import com.kunzisoft.remembirthday.R;
import com.kunzisoft.remembirthday.task.ActionBirthdayInDatabaseTask;
import com.kunzisoft.remembirthday.provider.ActionBirthdayInDatabaseTask;

/**
* Utility class for callback management
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import com.kunzisoft.remembirthday.adapter.MenuAdapter;
import com.kunzisoft.remembirthday.adapter.ReminderNotificationsAdapter;
import com.kunzisoft.remembirthday.animation.AnimationCircle;
import com.kunzisoft.remembirthday.database.ContactBuild;
import com.kunzisoft.remembirthday.provider.ContactBuild;
import com.kunzisoft.remembirthday.element.Contact;
import com.kunzisoft.remembirthday.element.DateUnknownYear;
import com.kunzisoft.remembirthday.element.PhoneNumber;
Expand All @@ -42,9 +42,9 @@
import com.kunzisoft.remembirthday.factory.MenuContact;
import com.kunzisoft.remembirthday.factory.MenuContactCreator;
import com.kunzisoft.remembirthday.preference.PreferencesManager;
import com.kunzisoft.remembirthday.task.ActionBirthdayInDatabaseTask;
import com.kunzisoft.remembirthday.task.RemoveBirthdayFromContactTask;
import com.kunzisoft.remembirthday.database.RetrievePhoneNumberFromContactTask;
import com.kunzisoft.remembirthday.provider.ActionBirthdayInDatabaseTask;
import com.kunzisoft.remembirthday.provider.RemoveBirthdayFromContactTask;
import com.kunzisoft.remembirthday.provider.RetrievePhoneNumberFromContactTask;
import com.kunzisoft.remembirthday.utility.IntentCall;
import com.kunzisoft.remembirthday.utility.Utility;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@

import com.kunzisoft.remembirthday.R;
import com.kunzisoft.remembirthday.element.DateUnknownYear;
import com.kunzisoft.remembirthday.task.ActionBirthdayInDatabaseTask;
import com.kunzisoft.remembirthday.task.AddBirthdayToContactTask;
import com.kunzisoft.remembirthday.provider.ActionBirthdayInDatabaseTask;
import com.kunzisoft.remembirthday.provider.AddBirthdayToContactTask;

/**
* Created by joker on 19/01/17.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import com.kunzisoft.remembirthday.R;
import com.kunzisoft.remembirthday.adapter.ContactAdapter;
import com.kunzisoft.remembirthday.adapter.OnClickItemContactListener;
import com.kunzisoft.remembirthday.database.ContactBuild;
import com.kunzisoft.remembirthday.provider.ContactBuild;
import com.kunzisoft.remembirthday.element.Contact;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,19 @@ public class SettingsFragment extends ChromaPreferenceFragmentCompat implements

public static final int SETTING_RESULT_CODE = 1647;

private EditTextPreference notificationsDaysEditTextPreference;
private EditTextPreference remindersDaysEditTextPreference;

private SwitchPreferenceCompat customCalendar;
private AccountResolver accountResolver;

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences);
notificationsDaysEditTextPreference = (EditTextPreference) findPreference(getString(R.string.pref_notifications_days_key));
remindersDaysEditTextPreference = (EditTextPreference) findPreference(getString(R.string.pref_reminders_days_key));

if (!BuildConfig.FULL_VERSION) {
// Disable switch and show pro dialog if free version
SwitchPreferenceCompat preference = (SwitchPreferenceCompat) findPreference(getString(R.string.pref_notifications_service_key));
SwitchPreferenceCompat preference = (SwitchPreferenceCompat) findPreference(getString(R.string.pref_special_service_key));
preference.setDefaultValue(false);
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
Expand Down Expand Up @@ -149,25 +149,25 @@ public void onPause() {

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {
// Verify values of notifications
if (key.equals(getString(R.string.pref_notifications_days_key))) {
if (key.equals(getString(R.string.pref_reminders_days_key))) {
// Only for 99 days maximum before the event
Pattern p = Pattern.compile(PreferencesManager.PATTERN_REMINDER_PREF);
Matcher m = p.matcher(notificationsDaysEditTextPreference.getText());
Matcher m = p.matcher(remindersDaysEditTextPreference.getText());

SharedPreferences.Editor sharedPreferenceEditor = sharedPreferences.edit();
if(!m.matches()) {
// If error in value
Log.e(getClass().getSimpleName(), notificationsDaysEditTextPreference.getText()
Log.e(getClass().getSimpleName(), remindersDaysEditTextPreference.getText()
+ " not matches " + p);
Toast.makeText(getContext(), R.string.error_pref_notifications_days, Toast.LENGTH_LONG).show();
sharedPreferenceEditor.putString(
getString(R.string.pref_notifications_days_key),
getString(R.string.pref_notifications_days_default));
getString(R.string.pref_reminders_days_key),
getString(R.string.pref_reminders_days_default));
} else {
// Save value
sharedPreferenceEditor.putString(
getString(R.string.pref_notifications_days_key),
notificationsDaysEditTextPreference.getText());
getString(R.string.pref_reminders_days_key),
remindersDaysEditTextPreference.getText());
}
sharedPreferenceEditor.apply();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
package com.kunzisoft.remembirthday.element;

import android.text.format.DateUtils;

import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.Seconds;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

/**
* Created by joker on 27/07/17.
*/

public class CalendarEvent {

private Long id;
private String lookupKey;
private Date dateStart;
private Date dateStop;
private boolean allDay;
private String title;

private List<Reminder> reminders;


public CalendarEvent(Date date) {
this(date, date);
}

public CalendarEvent(Date dateStart, Date dateStop) {
this.dateStart = dateStart;
this.dateStop = dateStop;
this.reminders = new ArrayList<>();
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getLookupKey() {
return lookupKey;
}

public void setLookupKey(String lookupKey) {
this.lookupKey = lookupKey;
}

public Date getDate() {
return dateStart;
}

/**
* Get the year from date of event
* @return
*/
public int getYear() {
return new DateTime(getDate().getDate()).getYear();
}

/**
* Set the year to the date of event
*/
public void setYear(int year) {
int secondsBetweenStartAndStop = Seconds.secondsBetween(
new DateTime(dateStart),
new DateTime(dateStop))
.getSeconds();
dateStart = new DateTime(dateStart).withYear(year).toDate();
dateStop = new DateTime(dateStart).plusSeconds(secondsBetweenStartAndStop).toDate();
}

public Date getDateStart() {
return dateStart;
}

public void setDateStart(Date dateStart) {
this.dateStart = dateStart;
}

public Date getDateStop() {
return dateStop;
}

public void setDateStop(Date dateStop) {
this.dateStop = dateStop;
}

public boolean isAllDay() {
return allDay;
}

public void setAllDay(boolean allDay) {
this.allDay = allDay;

Calendar cal = Calendar.getInstance();
cal.setTime(getDate());
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
/*
* Allday events have to be set in UTC!
*
* Without UTC it results in: CalendarProvider2 W insertInTransaction: allDay is true but
* sec, min, hour were not 0.
* http://stackoverflow.com/questions/3440172/getting-exception-when
* -inserting-events-in-android-calendar
*/
cal.setTimeZone(TimeZone.getTimeZone("UTC"));

/*
* Define over entire day.
*
* Note: ALL_DAY is enough on original Android calendar, but some calendar apps (Business
* Calendar) do not display the event if time between dtstart and dtend is 0
*/
long startMilliseconds = cal.getTimeInMillis();
long endMilliseconds = startMilliseconds + DateUtils.DAY_IN_MILLIS;

dateStart = new Date(startMilliseconds);
dateStop = new Date(endMilliseconds);
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public void addReminder(Reminder reminder) {
reminders.add(reminder);
}

public List<Reminder> getReminders() {
return reminders;
}

public void deleteAllReminders() {
reminders.clear();
}

@Override
public String toString() {
return "CalendarEvent{" +
"dateStart=" + dateStart +
", dateStop=" + dateStop +
", allDay=" + allDay +
", title='" + title + '\'' +
'}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ public class DateUnknownYear implements Parcelable {
private boolean containsYear;
private Date date;

/**
* Construct date with unknown year indication, contains year by default
* @param date date to store
*/
public DateUnknownYear(Date date) {
this.containsYear = true;
setDate(date);
}

/**
* Construct date with unknown year indication
* @param date date to store
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.kunzisoft.remembirthday.element;

import org.joda.time.DateTime;
import org.joda.time.Minutes;

import java.util.Date;

Expand All @@ -12,18 +13,18 @@ public class Reminder {
public static final long ID_UNDEFINED = -1;

private long id;
protected Date anniversary;
protected Date dateEvent;
protected int hourOfDay;
protected int minuteOfHour;
protected int daysBefore;

/**
* Create default auto message
*/
public Reminder(Date anniversary, int hourOfDay, int minuteOfHour, int deltaDay) {
public Reminder(Date dateEvent, int hourOfDay, int minuteOfHour, int deltaDay) {
this.id = ID_UNDEFINED;
this.anniversary = anniversary;
this.anniversary = new DateTime(this.anniversary)
this.dateEvent = dateEvent;
this.dateEvent = new DateTime(this.dateEvent)
.withHourOfDay(0)
.withMinuteOfHour(0)
.toDate();
Expand All @@ -48,13 +49,17 @@ public void setId(long id) {
}

public Date getDate() {
return new DateTime(anniversary)
return new DateTime(dateEvent)
.withMinuteOfHour(minuteOfHour)
.withHourOfDay(hourOfDay)
.minusDays(daysBefore)
.toDate();
}

public int getMinutesBeforeEvent() {
return Minutes.minutesBetween(new DateTime(getDate()), new DateTime(dateEvent)).getMinutes();
}

public int getDeltaDay() {
return daysBefore;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ public static boolean isCustomCalendarActive(Context context) {
*/
public static int[] getDefaultDays(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String prefNotificationsDay = prefs.getString(context.getString(R.string.pref_notifications_days_key),
context.getString(R.string.pref_notifications_days_default));
String prefNotificationsDay = prefs.getString(context.getString(R.string.pref_reminders_days_key),
context.getString(R.string.pref_reminders_days_default));
Pattern p = Pattern.compile(PATTERN_REMINDER_PREF);
int[] days;
Matcher m = p.matcher(prefNotificationsDay);
Expand All @@ -79,8 +79,8 @@ public static int[] getDefaultDays(Context context) {
*/
public static int[] getDefaultTime(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String prefNotificationsTime = prefs.getString(context.getString(R.string.pref_notifications_time_key),
context.getString(R.string.pref_notifications_time_default));
String prefNotificationsTime = prefs.getString(context.getString(R.string.pref_reminders_time_key),
context.getString(R.string.pref_reminders_time_default));
int[] time = new int[2];
time[0] = TimePreference.parseHour(prefNotificationsTime);
time[1] = TimePreference.parseMinute(prefNotificationsTime);
Expand Down Expand Up @@ -111,6 +111,6 @@ public static ContactSort getDefaultContactSort(Context context) {
*/
public static boolean isDaemonsActive(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
return prefs.getBoolean(context.getString(R.string.pref_notifications_service_key), false);
return prefs.getBoolean(context.getString(R.string.pref_special_service_key), false);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.kunzisoft.remembirthday.task;
package com.kunzisoft.remembirthday.provider;

import android.app.Activity;
import android.os.AsyncTask;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.kunzisoft.remembirthday.task;
package com.kunzisoft.remembirthday.provider;

import android.app.Activity;
import android.content.ContentProviderOperation;
Expand Down
Loading

0 comments on commit 53e3637

Please sign in to comment.