diff --git a/app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java b/app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java index fa5fb75..7dd23c0 100644 --- a/app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java +++ b/app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java @@ -49,4 +49,7 @@ public interface RecordDao { Flowable> queryByCheckDate(long startDate, long endDate); @Query("select * from t_record where deleted = 0 and project_id = :projectId and check_date >= :startDate and check_date <= :endDate order by check_date desc") Flowable> queryByProjectAndDate(Long projectId, long startDate, long endDate); + + @Query("update t_record set deleted = 1 where project_id = :projectId") + void deleteByProjectId(Long projectId); } diff --git a/app/src/main/java/cc/niushuai/dididone/ui/calendar/CalendarFragment.java b/app/src/main/java/cc/niushuai/dididone/ui/calendar/CalendarFragment.java index 1d6158c..2e5ebce 100644 --- a/app/src/main/java/cc/niushuai/dididone/ui/calendar/CalendarFragment.java +++ b/app/src/main/java/cc/niushuai/dididone/ui/calendar/CalendarFragment.java @@ -121,6 +121,9 @@ public class CalendarFragment extends BaseFragment { .map(Record::getCheckDate) .map(item -> DateUtil.date(item).toDateStr()) .collect(Collectors.toList()); + if (binding == null) { + return; + } InnerPainter painter = (InnerPainter) binding.miui10Calendar.getCalendarPainter(); painter.setPointList(checkDateList); diff --git a/app/src/main/java/cc/niushuai/dididone/ui/setting/project/ProjectFragment.java b/app/src/main/java/cc/niushuai/dididone/ui/setting/project/ProjectFragment.java index 31c5ba1..becca67 100644 --- a/app/src/main/java/cc/niushuai/dididone/ui/setting/project/ProjectFragment.java +++ b/app/src/main/java/cc/niushuai/dididone/ui/setting/project/ProjectFragment.java @@ -135,6 +135,11 @@ public class ProjectFragment extends Fragment implements InitAndSetListener { .setTitle(StrUtil.format("确定要删除 [{}]", item.getProjectName())) .setIcon(new IconicsDrawable(getContext()).icon(Ionicons.Icon.ion_android_warning).color(Color.RED)) .setPositiveButton("确定", (dialog, which) -> { + + + // 是否级联删除打卡项 + confirmDeleteProjectRecord(item); + XLog.d("删除 {} 打卡项", item.getProjectName()); // 删除 deleteProject(item); // 更新视图 @@ -147,6 +152,21 @@ public class ProjectFragment extends Fragment implements InitAndSetListener { return true; } + + private void confirmDeleteProjectRecord( ProjectIcon item) { + // 再次弹出是否级联删除选项 + AlertDialog projectItemAlertDialog = new AlertDialog.Builder(getContext()) + .setTitle(StrUtil.format("是否要删除 [{}] 已打卡记录?", item.getProjectName())) + .setIcon(new IconicsDrawable(getContext()).icon(Ionicons.Icon.ion_android_warning).color(Color.RED)) + .setPositiveButton("确定", (dialog, which) -> { + + XLog.d("删除 {} 已打卡记录", item.getProjectName()); + DBManager.INSTANCE.recordDao().deleteByProjectId(item.getId()); + }) + .setNegativeButton("取消", ((dialog, which) -> dialog.dismiss())) + .create(); + projectItemAlertDialog.show(); + } }); }