Browse Source

feat: 📞 draw point

master
niushuai233 1 year ago
parent
commit
c807c884b1
  1. 3
      app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java
  2. 44
      app/src/main/java/cc/niushuai/dididone/ui/calendar/CalendarFragment.java

3
app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java

@ -35,4 +35,7 @@ public interface RecordDao {
@Query("select b.id, b.name, count(a.id) as count from t_record a left join t_project b on b.id = a.project_id and b.deleted = 0 where a.deleted = 0 group by b.id, b.name") @Query("select b.id, b.name, count(a.id) as count from t_record a left join t_project b on b.id = a.project_id and b.deleted = 0 where a.deleted = 0 group by b.id, b.name")
Flowable<List<ProjectCount>> groupCountProject(); Flowable<List<ProjectCount>> groupCountProject();
@Query("select check_date from t_record where deleted = 0 and create_date >= :startTime and create_date <= :endTime order by check_date asc")
Flowable<List<Record>> queryPointByDate(long startTime, long endTime);
} }

44
app/src/main/java/cc/niushuai/dididone/ui/calendar/CalendarFragment.java

@ -1,6 +1,10 @@
package cc.niushuai.dididone.ui.calendar; package cc.niushuai.dididone.ui.calendar;
import android.app.Instrumentation;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
@ -18,22 +22,23 @@ import androidx.lifecycle.ViewModelProvider;
import com.github.clans.fab.FloatingActionButton; import com.github.clans.fab.FloatingActionButton;
import com.github.clans.fab.FloatingActionMenu; import com.github.clans.fab.FloatingActionMenu;
import com.lxj.xpopup.XPopup; import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.interfaces.OnSelectListener;
import com.mikepenz.community_material_typeface_library.CommunityMaterial;
import com.mikepenz.iconics.IconicsDrawable; import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.iconics.view.IconicsImageView; import com.mikepenz.iconics.view.IconicsImageView;
import com.necer.calendar.BaseCalendar; import com.necer.calendar.BaseCalendar;
import com.necer.entity.Lunar; import com.necer.entity.Lunar;
import com.necer.enumeration.DateChangeBehavior; import com.necer.enumeration.DateChangeBehavior;
import com.necer.listener.OnCalendarChangedListener; import com.necer.listener.OnCalendarChangedListener;
import com.necer.painter.CalendarPainter;
import com.necer.painter.InnerPainter; import com.necer.painter.InnerPainter;
import com.necer.utils.CalendarUtil; import com.necer.utils.CalendarUtil;
import org.joda.time.LocalDate; import org.joda.time.LocalDate;
import org.reactivestreams.Subscription; import org.reactivestreams.Subscription;
import java.util.Collection; import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import cc.niushuai.dididone.R; import cc.niushuai.dididone.R;
import cc.niushuai.dididone.biz.BizGlobal; import cc.niushuai.dididone.biz.BizGlobal;
@ -48,7 +53,6 @@ import cc.niushuai.dididone.util.XLog;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import io.reactivex.Completable; import io.reactivex.Completable;
import io.reactivex.CompletableObserver; import io.reactivex.CompletableObserver;
@ -62,6 +66,7 @@ public class CalendarFragment extends Fragment {
private FragmentCalendarBinding binding; private FragmentCalendarBinding binding;
// 默认当天
private String lastDate; private String lastDate;
// private List<Project> floatingActionProjectList; // private List<Project> floatingActionProjectList;
@ -81,7 +86,7 @@ public class CalendarFragment extends Fragment {
} }
private void init() { private void init() {
// initPointList(); initPointList();
// 构建弹出框内容 // 构建弹出框内容
// fetchNewestActionButtonData(); // fetchNewestActionButtonData();
@ -89,9 +94,32 @@ public class CalendarFragment extends Fragment {
// check entry // check entry
} }
private void initPointList(List<String> pointList) { private void initPointList() {
InnerPainter painter = (InnerPainter) binding.miui10Calendar.getCalendarPainter();
painter.addPointList(pointList); // 获取当前月视图中存在record的日期
DateTime currMonth;
if (null == lastDate) {
currMonth = DateUtil.date();
} else {
currMonth = DateUtil.parseDate(lastDate);
}
long startTime = DateUtil.beginOfMonth(currMonth).getTime();
long endTime = DateUtil.endOfMonth(currMonth).getTime();
Flowable<List<Record>> listFlowable = DBManager.INSTANCE.recordDao().queryPointByDate(startTime, endTime);
listFlowable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(recordList -> {
List<String> checkDateList = recordList.stream()
.map(Record::getCheckDate)
.map(item -> DateUtil.date(item).toDateStr())
.collect(Collectors.toList());
InnerPainter painter = (InnerPainter) binding.miui10Calendar.getCalendarPainter();
painter.setPointList(checkDateList);
});
} }
private void setListeners() { private void setListeners() {

Loading…
Cancel
Save