mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 01:08:50 -06:00
Refactoring
This commit is contained in:
@@ -22,8 +22,9 @@ package org.isoron.uhabits.core.models;
|
||||
import android.support.annotation.*;
|
||||
|
||||
import org.apache.commons.lang3.builder.*;
|
||||
import org.isoron.uhabits.core.utils.*;
|
||||
|
||||
import static org.isoron.uhabits.core.utils.StringUtils.defaultToStringStyle;
|
||||
import static org.isoron.uhabits.core.utils.StringUtils.*;
|
||||
|
||||
public final class Reminder
|
||||
{
|
||||
@@ -56,6 +57,11 @@ public final class Reminder
|
||||
return minute;
|
||||
}
|
||||
|
||||
public long getTimeInMillis()
|
||||
{
|
||||
return DateUtils.getUpcomingTimeInMillis(hour, minute);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o)
|
||||
{
|
||||
@@ -66,29 +72,29 @@ public final class Reminder
|
||||
Reminder reminder = (Reminder) o;
|
||||
|
||||
return new EqualsBuilder()
|
||||
.append(hour, reminder.hour)
|
||||
.append(minute, reminder.minute)
|
||||
.append(days, reminder.days)
|
||||
.isEquals();
|
||||
.append(hour, reminder.hour)
|
||||
.append(minute, reminder.minute)
|
||||
.append(days, reminder.days)
|
||||
.isEquals();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return new HashCodeBuilder(17, 37)
|
||||
.append(hour)
|
||||
.append(minute)
|
||||
.append(days)
|
||||
.toHashCode();
|
||||
.append(hour)
|
||||
.append(minute)
|
||||
.append(days)
|
||||
.toHashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return new ToStringBuilder(this, defaultToStringStyle())
|
||||
.append("hour", hour)
|
||||
.append("minute", minute)
|
||||
.append("days", days)
|
||||
.toString();
|
||||
.append("hour", hour)
|
||||
.append("minute", minute)
|
||||
.append("days", days)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,9 +24,6 @@ import android.support.annotation.*;
|
||||
import org.isoron.uhabits.core.*;
|
||||
import org.isoron.uhabits.core.commands.*;
|
||||
import org.isoron.uhabits.core.models.*;
|
||||
import org.isoron.uhabits.core.utils.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import javax.inject.*;
|
||||
|
||||
@@ -60,14 +57,17 @@ public class ReminderScheduler implements CommandRunner.Listener
|
||||
scheduleAll();
|
||||
}
|
||||
|
||||
public void schedule(@NonNull Habit habit, @Nullable Long reminderTime)
|
||||
public void schedule(@NonNull Habit habit)
|
||||
{
|
||||
Long reminderTime = habit.getReminder().getTimeInMillis();
|
||||
scheduleAtTime(habit, reminderTime);
|
||||
}
|
||||
|
||||
public void scheduleAtTime(@NonNull Habit habit, @NonNull Long reminderTime)
|
||||
{
|
||||
if (!habit.hasReminder()) return;
|
||||
if (habit.isArchived()) return;
|
||||
Reminder reminder = habit.getReminder();
|
||||
if (reminderTime == null) reminderTime = getReminderTime(reminder);
|
||||
long timestamp = getStartOfDay(removeTimezone(reminderTime));
|
||||
|
||||
sys.scheduleShowReminder(reminderTime, habit, timestamp);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public class ReminderScheduler implements CommandRunner.Listener
|
||||
HabitList reminderHabits =
|
||||
habitList.getFiltered(HabitMatcher.WITH_ALARM);
|
||||
for (Habit habit : reminderHabits)
|
||||
schedule(habit, null);
|
||||
schedule(habit);
|
||||
}
|
||||
|
||||
public void startListening()
|
||||
@@ -89,19 +89,11 @@ public class ReminderScheduler implements CommandRunner.Listener
|
||||
commandRunner.removeListener(this);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private Long getReminderTime(@NonNull Reminder reminder)
|
||||
public void scheduleMinutesFromNow(Habit habit, long minutes)
|
||||
{
|
||||
Calendar calendar = DateUtils.getStartOfTodayCalendar();
|
||||
calendar.set(Calendar.HOUR_OF_DAY, reminder.getHour());
|
||||
calendar.set(Calendar.MINUTE, reminder.getMinute());
|
||||
calendar.set(Calendar.SECOND, 0);
|
||||
Long time = calendar.getTimeInMillis();
|
||||
|
||||
if (DateUtils.getLocalTime() > time)
|
||||
time += DateUtils.DAY_LENGTH;
|
||||
|
||||
return applyTimezone(time);
|
||||
long now = applyTimezone(getLocalTime());
|
||||
long reminderTime = now + minutes * 60 * 1000;
|
||||
scheduleAtTime(habit, reminderTime);
|
||||
}
|
||||
|
||||
public interface SystemScheduler
|
||||
|
||||
@@ -240,6 +240,20 @@ public abstract class DateUtils
|
||||
}
|
||||
}
|
||||
|
||||
public static long getUpcomingTimeInMillis(int hour, int minute)
|
||||
{
|
||||
Calendar calendar = DateUtils.getStartOfTodayCalendar();
|
||||
calendar.set(Calendar.HOUR_OF_DAY, hour);
|
||||
calendar.set(Calendar.MINUTE, minute);
|
||||
calendar.set(Calendar.SECOND, 0);
|
||||
Long time = calendar.getTimeInMillis();
|
||||
|
||||
if (DateUtils.getLocalTime() > time)
|
||||
time += DateUtils.DAY_LENGTH;
|
||||
|
||||
return applyTimezone(time);
|
||||
}
|
||||
|
||||
public enum TruncateField
|
||||
{
|
||||
MONTH, WEEK_NUMBER, YEAR, QUARTER
|
||||
|
||||
Reference in New Issue
Block a user