add some methods to TodoItemUtil
This commit is contained in:
parent
0d89a13845
commit
de651568e3
|
@ -10,6 +10,8 @@ import java.util.*;
|
||||||
*/
|
*/
|
||||||
public class TodoItem {
|
public class TodoItem {
|
||||||
|
|
||||||
|
// region type constants
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Value of a type of TodoItem indicating the "others" type.
|
* Value of a type of TodoItem indicating the "others" type.
|
||||||
*/
|
*/
|
||||||
|
@ -45,18 +47,30 @@ public class TodoItem {
|
||||||
* Value of a type of TodoItem indicating the "interview" type.
|
* Value of a type of TodoItem indicating the "interview" type.
|
||||||
*/
|
*/
|
||||||
public static final int INTERVIEW = 7;
|
public static final int INTERVIEW = 7;
|
||||||
/**
|
|
||||||
* Value of a name of possible string-type property index.
|
private static String[] TYPE_NAME = {
|
||||||
*/
|
"unknown",
|
||||||
public static final String REPEAT_WEEKS = "repeatWeeks";
|
"others",
|
||||||
/**
|
"conference",
|
||||||
* Value of a name of possible string-type property index.
|
"date",
|
||||||
* The corresponding value is formatted in "id1;id2;id3;...".
|
"trip",
|
||||||
*/
|
"anniversary",
|
||||||
public static final String CHILDREN_IDS = "children_ids";
|
"course",
|
||||||
|
"interview"
|
||||||
|
};
|
||||||
|
|
||||||
|
public static String typeName(int type) {
|
||||||
|
if (1 <= type && type < TYPE_NAME.length) {
|
||||||
|
return TYPE_NAME[type];
|
||||||
|
} else {
|
||||||
|
return TYPE_NAME[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// endregion type constants
|
||||||
|
|
||||||
|
|
||||||
|
// region general string properties
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Value of a name of possible string-type property index.
|
* Value of a name of possible string-type property index.
|
||||||
|
@ -82,44 +96,47 @@ public class TodoItem {
|
||||||
* Value of a name of possible string-type property index.
|
* Value of a name of possible string-type property index.
|
||||||
*/
|
*/
|
||||||
public static final String IMPORTANCE = "importance";
|
public static final String IMPORTANCE = "importance";
|
||||||
/**
|
|
||||||
* Value of a name of possible string-type property index.
|
|
||||||
* The corresponding value is formatted in "area", "dialog" or "none".
|
|
||||||
*/
|
|
||||||
public static final String ALARM_METHOD = "alarm_method";
|
|
||||||
/**
|
|
||||||
* Value of a name of possible string-type property index.
|
|
||||||
* The corresponding value is formatted in "yyyy-mm-dd/hh:mm".
|
|
||||||
*/
|
|
||||||
public static final String ALARM_START = "alarm_start";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Value of a name of possible string-type property index.
|
* Value of a name of possible string-type property index.
|
||||||
*/
|
*/
|
||||||
public static final String PARENT_ID = "parent_id";
|
public static final String PARENT_ID = "parent_id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Value of a name of possible string-type property index.
|
||||||
|
* The corresponding value is formatted in "id1;id2;id3;...".
|
||||||
|
*/
|
||||||
|
public static final String CHILDREN_IDS = "children_ids";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Value of a name of possible string-type property index.
|
||||||
|
*/
|
||||||
|
public static final String REPEAT_WEEKS = "repeatWeeks";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Value of a name of possible string-type property index.
|
* Value of a name of possible string-type property index.
|
||||||
*/
|
*/
|
||||||
public static final String FINISH = "finish";
|
public static final String FINISH = "finish";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Value of a name of possible string-type property index.
|
* Value of a name of possible string-type property index.
|
||||||
* The corresponding value is formatted in "y;m;d;h;m".
|
* The corresponding value is formatted in "y;m;d;h;m".
|
||||||
*/
|
*/
|
||||||
public static final String ALARM_INTERVAL = "alarm_interval";
|
public static final String ALARM_INTERVAL = "alarm_interval";
|
||||||
private static String[] TYPE_NAME = {
|
|
||||||
"unknown",
|
|
||||||
"others",
|
|
||||||
"conference",
|
|
||||||
"date",
|
|
||||||
"trip",
|
|
||||||
"anniversary",
|
|
||||||
"course",
|
|
||||||
"interview"
|
|
||||||
};
|
|
||||||
private ArrayList<String> mPersonnel = new ArrayList<>();
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Value of a name of possible string-type property index.
|
||||||
|
* The corresponding value is formatted in "area", "dialog" or "none".
|
||||||
|
*/
|
||||||
|
public static final String ALARM_METHOD = "alarm_method";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Value of a name of possible string-type property index.
|
||||||
|
* The corresponding value is formatted in "yyyy-mm-dd/hh:mm".
|
||||||
|
*/
|
||||||
|
public static final String ALARM_START = "alarm_start";
|
||||||
|
|
||||||
|
// endregion general string properties
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -131,10 +148,16 @@ public class TodoItem {
|
||||||
private Calendar mEnd;
|
private Calendar mEnd;
|
||||||
|
|
||||||
private int mType;
|
private int mType;
|
||||||
|
|
||||||
|
private ArrayList<String> mPersonnel = new ArrayList<>();
|
||||||
|
|
||||||
private List<String> mUnmodifiablePersonnel = Collections.unmodifiableList(mPersonnel);
|
private List<String> mUnmodifiablePersonnel = Collections.unmodifiableList(mPersonnel);
|
||||||
|
|
||||||
private HashMap<String, String> mStringProperties = new HashMap<>();
|
private HashMap<String, String> mStringProperties = new HashMap<>();
|
||||||
|
|
||||||
private Map<String, String> mUnmodifiableStringProperties = Collections.unmodifiableMap(mStringProperties);
|
private Map<String, String> mUnmodifiableStringProperties = Collections.unmodifiableMap(mStringProperties);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a {@code TodoItem} based on given arguments.
|
* Constructs a {@code TodoItem} based on given arguments.
|
||||||
*
|
*
|
||||||
|
@ -186,14 +209,6 @@ public class TodoItem {
|
||||||
this(id, begin, end, type, null, null);
|
this(id, begin, end, type, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String typeName(int type) {
|
|
||||||
if (1 <= type && type < TYPE_NAME.length) {
|
|
||||||
return TYPE_NAME[type];
|
|
||||||
} else {
|
|
||||||
return TYPE_NAME[0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the id of the TodoItem.
|
* Returns the id of the TodoItem.
|
||||||
|
|
|
@ -28,7 +28,6 @@ public class TodoItemFactory {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public TodoItemFactory beginTime(@NotNull Calendar begin) {
|
public TodoItemFactory beginTime(@NotNull Calendar begin) {
|
||||||
mBgn = CalendarUtil.roundToMinute(begin);
|
mBgn = CalendarUtil.roundToMinute(begin);
|
||||||
return this;
|
return this;
|
||||||
|
@ -66,7 +65,6 @@ public class TodoItemFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public TodoItemFactory stringProperties(String index, String value) {
|
public TodoItemFactory stringProperties(String index, String value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
mStringProperties.put(index, value);
|
mStringProperties.put(index, value);
|
||||||
|
@ -82,9 +80,6 @@ public class TodoItemFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public TodoItemFactory copy(@NotNull TodoItem item) {
|
public TodoItemFactory copy(@NotNull TodoItem item) {
|
||||||
this.beginTime(item.getBgn()).
|
this.beginTime(item.getBgn()).
|
||||||
endTime(item.getEnd()).
|
endTime(item.getEnd()).
|
||||||
|
@ -116,5 +111,4 @@ public class TodoItemFactory {
|
||||||
return buildId(manager.getNextId());
|
return buildId(manager.getNextId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,13 +9,17 @@ public class TodoItemManager {
|
||||||
|
|
||||||
private static TodoItemManager ourInstance;
|
private static TodoItemManager ourInstance;
|
||||||
|
|
||||||
private TodoItemManager() {
|
public static TodoItemManager getInstance() {
|
||||||
//empty
|
if (ourInstance == null) {
|
||||||
|
ourInstance = new TodoItemManager();
|
||||||
|
}
|
||||||
|
return ourInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private TodoItemManager() {
|
||||||
|
//empty
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,13 +37,6 @@ public class TodoItemManager {
|
||||||
|
|
||||||
private HashMap<Long, TodoItem> mIdCache = new HashMap<>();
|
private HashMap<Long, TodoItem> mIdCache = new HashMap<>();
|
||||||
|
|
||||||
public static TodoItemManager getInstance() {
|
|
||||||
if (ourInstance == null) {
|
|
||||||
ourInstance = new TodoItemManager();
|
|
||||||
}
|
|
||||||
return ourInstance;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public long getNextId() {
|
public long getNextId() {
|
||||||
while (mIdCache.containsKey(mIdCount)) {
|
while (mIdCache.containsKey(mIdCount)) {
|
||||||
|
@ -124,8 +121,6 @@ public class TodoItemManager {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String jsonizeTodoItems() {
|
String jsonizeTodoItems() {
|
||||||
return TodoItemsStorage.toJson(mUnmodifiableItems);
|
return TodoItemsStorage.toJson(mUnmodifiableItems);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ public class TodoItemUtil {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<GenericPair<Calendar, Calendar>> calculateRepeatArray(@NotNull TodoItem item) {
|
private static List<GenericPair<Calendar, Calendar>> calculateRepeatArray(@NotNull TodoItem item) {
|
||||||
ArrayList<GenericPair<Calendar, Calendar>> result = new ArrayList<>();
|
ArrayList<GenericPair<Calendar, Calendar>> result = new ArrayList<>();
|
||||||
String repeatWeeks = item.getStringProperty(REPEAT_WEEKS);
|
String repeatWeeks = item.getStringProperty(REPEAT_WEEKS);
|
||||||
|
|
||||||
|
@ -50,6 +50,8 @@ public class TodoItemUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// region intersected part
|
||||||
|
|
||||||
private static boolean isIntersected(
|
private static boolean isIntersected(
|
||||||
@NotNull Calendar c1, @NotNull Calendar c2,
|
@NotNull Calendar c1, @NotNull Calendar c2,
|
||||||
@NotNull Calendar p1, @NotNull Calendar p2) {
|
@NotNull Calendar p1, @NotNull Calendar p2) {
|
||||||
|
@ -140,7 +142,10 @@ public class TodoItemUtil {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// endregion intersected part
|
||||||
|
|
||||||
|
|
||||||
|
// region isIn part
|
||||||
private static boolean isIn(
|
private static boolean isIn(
|
||||||
@NotNull Calendar out1, @NotNull Calendar out2,
|
@NotNull Calendar out1, @NotNull Calendar out2,
|
||||||
@NotNull Calendar in1, @NotNull Calendar in2) {
|
@NotNull Calendar in1, @NotNull Calendar in2) {
|
||||||
|
@ -227,6 +232,10 @@ public class TodoItemUtil {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// endregion isIn part
|
||||||
|
|
||||||
|
|
||||||
|
// region conflict check part
|
||||||
|
|
||||||
public static boolean isIntersectedConflict(@NotNull TodoItem i1, @NotNull TodoItem i2) {
|
public static boolean isIntersectedConflict(@NotNull TodoItem i1, @NotNull TodoItem i2) {
|
||||||
int t1 = i1.getType();
|
int t1 = i1.getType();
|
||||||
|
@ -246,12 +255,20 @@ public class TodoItemUtil {
|
||||||
&& isIn(parent, child);
|
&& isIn(parent, child);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// endregion conflict check part
|
||||||
|
|
||||||
|
|
||||||
|
// region REPEAT_WEEKS part
|
||||||
|
|
||||||
public static int getRepeatWeeks(@NotNull TodoItem item) {
|
public static int getRepeatWeeks(@NotNull TodoItem item) {
|
||||||
String repeat = item.getStringProperty(REPEAT_WEEKS);
|
String repeat = item.getStringProperty(REPEAT_WEEKS);
|
||||||
return repeat == null ? 1 : Integer.parseInt(repeat);
|
return repeat == null ? 1 : Integer.parseInt(repeat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// endregion REPEAT_WEEKS part
|
||||||
|
|
||||||
|
|
||||||
|
// region parent & children part
|
||||||
|
|
||||||
public static long getParentId(@NotNull TodoItem item) {
|
public static long getParentId(@NotNull TodoItem item) {
|
||||||
String id = item.getStringProperty(PARENT_ID);
|
String id = item.getStringProperty(PARENT_ID);
|
||||||
|
@ -331,6 +348,10 @@ public class TodoItemUtil {
|
||||||
return new TodoItem[]{newP, newC};
|
return new TodoItem[]{newP, newC};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// endregion parent & children part
|
||||||
|
|
||||||
|
|
||||||
|
// region finish part
|
||||||
|
|
||||||
public static boolean isFinished(@NotNull TodoItem item) {
|
public static boolean isFinished(@NotNull TodoItem item) {
|
||||||
if (item.getStringProperty(FINISH) != null) {
|
if (item.getStringProperty(FINISH) != null) {
|
||||||
|
@ -364,6 +385,10 @@ public class TodoItemUtil {
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// endregion finish part
|
||||||
|
|
||||||
|
|
||||||
|
// region alarm part
|
||||||
|
|
||||||
public static boolean isValidAlarmIntString(@NotNull String interval) {
|
public static boolean isValidAlarmIntString(@NotNull String interval) {
|
||||||
String[] strSlices = interval.split("[;,]");
|
String[] strSlices = interval.split("[;,]");
|
||||||
|
@ -401,6 +426,27 @@ public class TodoItemUtil {
|
||||||
return newTime;
|
return newTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Calendar getAlarmStartCalendar(@NotNull TodoItem item) {
|
||||||
|
String alarmStart = item.getStringProperty(ALARM_START);
|
||||||
|
if (alarmStart != null && CalendarUtil.isValidCalendarString(alarmStart)) {
|
||||||
|
return CalendarUtil.constructCalendar(alarmStart);
|
||||||
|
} else {
|
||||||
|
return item.getBgn();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isNeedAlarm(@NotNull TodoItem item) {
|
||||||
|
String alarmMethod = item.getStringProperty(ALARM_METHOD);
|
||||||
|
if (alarmMethod == null || alarmMethod.equals("none")) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
Calendar start = getAlarmStartCalendar(item);
|
||||||
|
return !start.after(item.getBgn());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// endregion alarm part
|
||||||
|
|
||||||
|
|
||||||
public static boolean isBeforeStart(@NotNull TodoItem item) {
|
public static boolean isBeforeStart(@NotNull TodoItem item) {
|
||||||
Calendar now = Calendar.getInstance();
|
Calendar now = Calendar.getInstance();
|
||||||
|
|
|
@ -12,62 +12,28 @@ public class CalendarUnit {
|
||||||
public static final int HOLIDAY_FLAG = 1 << 2;
|
public static final int HOLIDAY_FLAG = 1 << 2;
|
||||||
|
|
||||||
public static final int WORKDAY_FLAG = 1 << 3;
|
public static final int WORKDAY_FLAG = 1 << 3;
|
||||||
private final String mFestival;
|
|
||||||
|
|
||||||
private int mFlags;
|
private int mFlags;
|
||||||
|
|
||||||
|
private final String mFestival;
|
||||||
|
|
||||||
|
|
||||||
private CalendarUnit(int flags, String festival) {
|
private CalendarUnit(int flags, String festival) {
|
||||||
mFlags = flags;
|
mFlags = flags;
|
||||||
mFestival = festival;
|
mFestival = festival;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CalendarUnit constructUnit(int flags, String festival) {
|
|
||||||
return new CalendarUnit(flags, festival);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CalendarUnit constructUnit(
|
|
||||||
boolean todayFlag,
|
|
||||||
boolean haveTodoFlag,
|
|
||||||
boolean holidayFlag,
|
|
||||||
boolean workdayFlag,
|
|
||||||
String festival) {
|
|
||||||
|
|
||||||
int flags = 0;
|
|
||||||
if (todayFlag) {
|
|
||||||
flags |= TODAY_FLAG;
|
|
||||||
}
|
|
||||||
if (haveTodoFlag) {
|
|
||||||
flags |= HAVE_TODO_FLAG;
|
|
||||||
}
|
|
||||||
if (holidayFlag) {
|
|
||||||
flags |= HOLIDAY_FLAG;
|
|
||||||
}
|
|
||||||
if (workdayFlag) {
|
|
||||||
flags |= WORKDAY_FLAG;
|
|
||||||
}
|
|
||||||
return constructUnit(flags, festival);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CalendarUnit constructUnitWithoutFestival(int flags) {
|
|
||||||
return constructUnit(flags, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CalendarUnit constructUnitWithoutFestival(
|
|
||||||
boolean todayFlag,
|
|
||||||
boolean haveTodoFlag,
|
|
||||||
boolean holidayFlag,
|
|
||||||
boolean workdayFlag) {
|
|
||||||
return constructUnit(todayFlag, haveTodoFlag, holidayFlag, workdayFlag, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getFlags() {
|
public int getFlags() {
|
||||||
return mFlags;
|
return mFlags;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSetFlag(int mask) {
|
public boolean isSetFlag(int flag) {
|
||||||
return (mFlags & mask) != 0;
|
return (mFlags & flag) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean isFestival() {
|
public boolean isFestival() {
|
||||||
return mFestival != null;
|
return mFestival != null;
|
||||||
}
|
}
|
||||||
|
@ -76,4 +42,10 @@ public class CalendarUnit {
|
||||||
return mFestival;
|
return mFestival;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static CalendarUnit constructUnit(int flags, String festival) {
|
||||||
|
return new CalendarUnit(flags, festival);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,93 +7,87 @@ import org.cutem.cutecalendar.model.TodoItemUtil;
|
||||||
import org.cutem.cutecalendar.util.CalendarUtil;
|
import org.cutem.cutecalendar.util.CalendarUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author hlq07
|
* @author hlq07
|
||||||
*/
|
*/
|
||||||
public abstract class Presenter {
|
public abstract class Presenter {
|
||||||
|
|
||||||
private static final Object LOCK = new Object();
|
private static final Object LOCK = new Object();
|
||||||
|
|
||||||
private final TodoItemManager manager = TodoItemManager.getInstance();
|
private final TodoItemManager manager = TodoItemManager.getInstance();
|
||||||
|
|
||||||
private final HolidayManager holidayManager = HolidayManager.getInstance();
|
private final HolidayManager holidayManager = HolidayManager.getInstance();
|
||||||
|
|
||||||
protected abstract Calendar getCalendarShowingDate();
|
private HashMap<TodoItem, Calendar> mAlarmSet = new HashMap<>();
|
||||||
|
|
||||||
protected abstract void showTodoItemDetail(TodoItem item);
|
|
||||||
|
protected void initialize() {
|
||||||
|
manager.load();
|
||||||
|
// todo
|
||||||
|
paintCalendar(Calendar.getInstance());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// region detail part
|
||||||
|
|
||||||
|
protected void showTodoItemDetail(@NotNull TodoItem item) {
|
||||||
|
throw new UnsupportedOperationException("not supported");
|
||||||
|
}
|
||||||
|
|
||||||
protected void showTimelessItemDetail(@NotNull String title) {
|
protected void showTimelessItemDetail(@NotNull String title) {
|
||||||
// empty: need to override
|
|
||||||
throw new UnsupportedOperationException("not supported");
|
throw new UnsupportedOperationException("not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void showNewTodoItemStage();
|
// endregion detail part
|
||||||
|
|
||||||
|
|
||||||
|
// region list part
|
||||||
|
|
||||||
|
protected void listTodoItems(@NotNull Collection<TodoItem> items) {
|
||||||
|
throw new UnsupportedOperationException("not supported");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final void listTodoItemDuring(@NotNull Calendar from, @NotNull Calendar to) {
|
||||||
|
listTodoItems(manager.queryTodoItemsDuring(from, to));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void listTimelessItems(@NotNull Collection<String> items) {
|
||||||
|
throw new UnsupportedOperationException("not supported");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void listAlarmTodoItems(@NotNull Collection<TodoItem> items) {
|
||||||
|
throw new UnsupportedOperationException("not supported");
|
||||||
|
}
|
||||||
|
|
||||||
|
// endregion list part
|
||||||
|
|
||||||
|
|
||||||
|
// region new todoItem part
|
||||||
|
|
||||||
|
protected void showNewTodoItemStage() {
|
||||||
|
throw new UnsupportedOperationException("not supported");
|
||||||
|
}
|
||||||
|
|
||||||
protected void showNewChildTodoItemStage(@NotNull TodoItem parent) {
|
protected void showNewChildTodoItemStage(@NotNull TodoItem parent) {
|
||||||
// empty: need to override
|
|
||||||
throw new UnsupportedOperationException("not supported");
|
throw new UnsupportedOperationException("not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void save() {
|
// endregion new todoItem part
|
||||||
Thread thread = new Thread(() -> {
|
|
||||||
synchronized (LOCK) {
|
|
||||||
manager.save();
|
// region calendar part
|
||||||
}
|
|
||||||
});
|
protected Calendar getCalendarShowingDate() {
|
||||||
thread.setDaemon(true);
|
throw new UnsupportedOperationException("not supported");
|
||||||
thread.start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final void addTodoItem(@NotNull TodoItem item) {
|
protected void paintCalendar(@NotNull Calendar date, @NotNull List<CalendarUnit> days) {
|
||||||
manager.add(item);
|
throw new UnsupportedOperationException("not supported");
|
||||||
repaint();
|
|
||||||
save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final void removeTodoItem(@NotNull TodoItem item) {
|
protected final void paintCalendar(@NotNull Calendar date) {
|
||||||
manager.remove(item);
|
|
||||||
repaint();
|
|
||||||
save();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected final void addTimelessItem(@NotNull String title) {
|
|
||||||
manager.addTimelessItem(title);
|
|
||||||
repaint();
|
|
||||||
save();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected final void removeTimelessItem(@NotNull String title) {
|
|
||||||
manager.removeTimelessItem(title);
|
|
||||||
repaint();
|
|
||||||
save();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected final void finishTimelessItem(@NotNull String title) {
|
|
||||||
manager.removeTimelessItem(title);
|
|
||||||
TodoItem item = TodoItemUtil.finishTimelessItem(title);
|
|
||||||
manager.add(item);
|
|
||||||
repaint();
|
|
||||||
save();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected final void finishTodoItem(@NotNull TodoItem item) {
|
|
||||||
item = TodoItemUtil.finishSingleTodoItem(item);
|
|
||||||
manager.add(item);
|
|
||||||
// no need to repaint
|
|
||||||
save();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void repaint() {
|
|
||||||
paintCalendar(getCalendarShowingDate());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract void paintCalendar(@NotNull Calendar date, @NotNull List<CalendarUnit> days);
|
|
||||||
|
|
||||||
public final void paintCalendar(@NotNull Calendar date) {
|
|
||||||
Calendar c1 = CalendarUtil.getMonthBegin(date);
|
Calendar c1 = CalendarUtil.getMonthBegin(date);
|
||||||
Calendar c2 = CalendarUtil.getMonthEnd(date);
|
Calendar c2 = CalendarUtil.getMonthEnd(date);
|
||||||
Calendar today = Calendar.getInstance();
|
Calendar today = Calendar.getInstance();
|
||||||
|
@ -117,28 +111,76 @@ public abstract class Presenter {
|
||||||
|
|
||||||
CalendarUnit unit = CalendarUnit.constructUnit(flags, festivalName);
|
CalendarUnit unit = CalendarUnit.constructUnit(flags, festivalName);
|
||||||
days.add(unit);
|
days.add(unit);
|
||||||
|
|
||||||
c1.add(Calendar.DAY_OF_MONTH, 1);
|
c1.add(Calendar.DAY_OF_MONTH, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
paintCalendar(date, days);
|
paintCalendar(date, days);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void listTodoItems(List<TodoItem> items);
|
protected void repaint() {
|
||||||
|
paintCalendar(getCalendarShowingDate());
|
||||||
protected final void listTodoItemDuring(Calendar from, Calendar to) {
|
|
||||||
listTodoItems(manager.queryTodoItemsDuring(from, to));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void listTimelessItems(@NotNull Collection<String> items) {
|
// endregion calendar part
|
||||||
// empty: need to override
|
|
||||||
throw new UnsupportedOperationException("not supported");
|
|
||||||
|
protected void refresh() {
|
||||||
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void listAlarmTodoItems(@NotNull Collection<TodoItem> items) {
|
|
||||||
// empty: need to override
|
protected void save() {
|
||||||
throw new UnsupportedOperationException("not supported");
|
Thread thread = new Thread(() -> {
|
||||||
|
synchronized (LOCK) {
|
||||||
|
manager.save();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
thread.setDaemon(true);
|
||||||
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected final void addTodoItem(@NotNull TodoItem item) {
|
||||||
|
manager.add(item);
|
||||||
|
refresh();
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final void removeTodoItem(@NotNull TodoItem item) {
|
||||||
|
manager.remove(item);
|
||||||
|
refresh();
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final void finishTodoItem(@NotNull TodoItem item) {
|
||||||
|
item = TodoItemUtil.finishSingleTodoItem(item);
|
||||||
|
manager.add(item);
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected final void addTimelessItem(@NotNull String title) {
|
||||||
|
manager.addTimelessItem(title);
|
||||||
|
refresh();
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final void removeTimelessItem(@NotNull String title) {
|
||||||
|
manager.removeTimelessItem(title);
|
||||||
|
refresh();
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected final void finishTimelessItem(@NotNull String title) {
|
||||||
|
manager.removeTimelessItem(title);
|
||||||
|
TodoItem item = TodoItemUtil.finishTimelessItem(title);
|
||||||
|
manager.add(item);
|
||||||
|
refresh();
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected abstract void showAlert(int type, String text);
|
protected abstract void showAlert(int type, String text);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue