Browse Source

feat: 🎉 add

master
niushuai233 1 year ago
parent
commit
8be98509f9
  1. 24
      app/schemas/cc.niushuai.dididone.biz.roomx.Database/1.json
  2. 32
      app/src/main/java/cc/niushuai/dididone/biz/entity/Project.java
  3. 25
      app/src/main/java/cc/niushuai/dididone/biz/entity/Record.java
  4. 22
      app/src/main/java/cc/niushuai/dididone/biz/vo/ProjectIcon.java
  5. 2
      app/src/main/java/cc/niushuai/dididone/ui/setting/project/GridViewAdapter4Project.java
  6. 57
      app/src/main/java/cc/niushuai/dididone/ui/setting/project/ProjectFragment.java

24
app/schemas/cc.niushuai.dididone.biz.roomx.Database/1.json

@ -2,11 +2,11 @@ @@ -2,11 +2,11 @@
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "966ac67768ec0c8feefb2e843474d8c7",
"identityHash": "3b066031a2741d47363ad506910e0a80",
"entities": [
{
"tableName": "t_record",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER, `name` TEXT, `check_date` INTEGER, `description` TEXT, `create_date` INTEGER, `deleted` INTEGER, PRIMARY KEY(`id`))",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER, `name` TEXT, `check_date` TEXT, `project_id` INTEGER, `description` TEXT, `create_date` INTEGER, `deleted` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
@ -23,6 +23,12 @@ @@ -23,6 +23,12 @@
{
"fieldPath": "checkDate",
"columnName": "check_date",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "projectId",
"columnName": "project_id",
"affinity": "INTEGER",
"notNull": false
},
@ -56,7 +62,7 @@ @@ -56,7 +62,7 @@
},
{
"tableName": "t_project",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER, `name` TEXT, `project_icon_id` INTEGER, `create_date` INTEGER, `deleted` INTEGER, PRIMARY KEY(`id`))",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER, `name` TEXT, `icon` TEXT, `icon_color` INTEGER, `create_date` INTEGER, `deleted` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
@ -71,8 +77,14 @@ @@ -71,8 +77,14 @@
"notNull": false
},
{
"fieldPath": "projectIconId",
"columnName": "project_icon_id",
"fieldPath": "icon",
"columnName": "icon",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "iconColor",
"columnName": "icon_color",
"affinity": "INTEGER",
"notNull": false
},
@ -152,7 +164,7 @@ @@ -152,7 +164,7 @@
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '966ac67768ec0c8feefb2e843474d8c7')"
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '3b066031a2741d47363ad506910e0a80')"
]
}
}

32
app/src/main/java/cc/niushuai/dididone/biz/entity/Project.java

@ -4,17 +4,28 @@ import androidx.room.ColumnInfo; @@ -4,17 +4,28 @@ import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import cc.niushuai.dididone.util.Snowflake;
@Entity(tableName = "t_project")
public class Project {
public Project() {
this.id = Snowflake.next_id();
this.deleted = 0;
this.createDate = System.currentTimeMillis();
}
@PrimaryKey
private Long id;
@ColumnInfo(name = "name")
private String name;
@ColumnInfo(name = "project_icon_id")
private Long projectIconId;
@ColumnInfo(name = "icon")
private String icon;
@ColumnInfo(name = "icon_color")
private Integer iconColor;
@ColumnInfo(name = "create_date")
private Long createDate;
@ -22,7 +33,6 @@ public class Project { @@ -22,7 +33,6 @@ public class Project {
@ColumnInfo(name = "deleted")
private Integer deleted;
public Long getId() {
return id;
}
@ -39,12 +49,20 @@ public class Project { @@ -39,12 +49,20 @@ public class Project {
this.name = name;
}
public Long getProjectIconId() {
return projectIconId;
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public Integer getIconColor() {
return iconColor;
}
public void setProjectIconId(Long projectIconId) {
this.projectIconId = projectIconId;
public void setIconColor(Integer iconColor) {
this.iconColor = iconColor;
}
public Long getCreateDate() {

25
app/src/main/java/cc/niushuai/dididone/biz/entity/Record.java

@ -4,9 +4,17 @@ import androidx.room.ColumnInfo; @@ -4,9 +4,17 @@ import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import cc.niushuai.dididone.util.Snowflake;
@Entity(tableName = "t_record")
public class Record {
public Record() {
this.id = Snowflake.next_id();
this.deleted = 0;
this.createDate = System.currentTimeMillis();
}
@PrimaryKey
private Long id;
@ -14,7 +22,10 @@ public class Record { @@ -14,7 +22,10 @@ public class Record {
private String name;
@ColumnInfo(name = "check_date")
private Long checkDate;
private String checkDate;
@ColumnInfo(name = "project_id")
private Long projectId;
@ColumnInfo(name = "description")
private String description;
@ -41,14 +52,22 @@ public class Record { @@ -41,14 +52,22 @@ public class Record {
this.name = name;
}
public Long getCheckDate() {
public String getCheckDate() {
return checkDate;
}
public void setCheckDate(Long checkDate) {
public void setCheckDate(String checkDate) {
this.checkDate = checkDate;
}
public Long getProjectId() {
return projectId;
}
public void setProjectId(Long projectId) {
this.projectId = projectId;
}
public String getDescription() {
return description;
}

22
app/src/main/java/cc/niushuai/dididone/biz/vo/ProjectIcon.java

@ -1,5 +1,9 @@ @@ -1,5 +1,9 @@
package cc.niushuai.dididone.biz.vo;
import java.util.ArrayList;
import java.util.List;
import cc.niushuai.dididone.biz.entity.Project;
import cc.niushuai.dididone.util.Snowflake;
public class ProjectIcon {
@ -7,9 +11,9 @@ public class ProjectIcon { @@ -7,9 +11,9 @@ public class ProjectIcon {
private Long id = Snowflake.next_id();
private String projectName;
private String icon;
private String color;
private Integer color;
public ProjectIcon(Long id, String projectName, String icon, String color) {
public ProjectIcon(Long id, String projectName, String icon, Integer color) {
this.id = id;
this.projectName = projectName;
this.icon = icon;
@ -40,11 +44,21 @@ public class ProjectIcon { @@ -40,11 +44,21 @@ public class ProjectIcon {
this.icon = icon;
}
public String getColor() {
public Integer getColor() {
return color;
}
public void setColor(String color) {
public void setColor(Integer color) {
this.color = color;
}
public static List<ProjectIcon> trans(List<Project> projectList) {
ArrayList<ProjectIcon> list = new ArrayList<>(projectList.size());
for (Project project : projectList) {
list.add(new ProjectIcon(project.getId(), project.getName(), project.getIcon(), project.getIconColor()));
}
return list;
}
}

2
app/src/main/java/cc/niushuai/dididone/ui/setting/project/GridViewAdapter4Project.java

@ -48,7 +48,7 @@ public class GridViewAdapter4Project extends BaseAdapter { @@ -48,7 +48,7 @@ public class GridViewAdapter4Project extends BaseAdapter {
view = LayoutInflater.from(context).inflate(R.layout.project_grid_item, parent, false);
}
ImageView icon = view.findViewById(R.id.grid_project_item_icon);
icon.setImageDrawable(new IconicsDrawable(context).icon(iconData.getIcon()).color(Integer.parseInt(iconData.getColor())).sizeDp(50));
icon.setImageDrawable(new IconicsDrawable(context).icon(iconData.getIcon()).color(iconData.getColor()).sizeDp(50));
TextView txt = view.findViewById(R.id.grid_project_item_txt);
txt.setText(iconData.getProjectName());

57
app/src/main/java/cc/niushuai/dididone/ui/setting/project/ProjectFragment.java

@ -3,6 +3,7 @@ package cc.niushuai.dididone.ui.setting.project; @@ -3,6 +3,7 @@ package cc.niushuai.dididone.ui.setting.project;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -20,13 +21,21 @@ import java.util.ArrayList; @@ -20,13 +21,21 @@ import java.util.ArrayList;
import java.util.List;
import cc.niushuai.dididone.biz.BizGlobal;
import cc.niushuai.dididone.biz.entity.Project;
import cc.niushuai.dididone.biz.roomx.DBManager;
import cc.niushuai.dididone.biz.vo.ProjectIcon;
import cc.niushuai.dididone.databinding.FragmentProjectBinding;
import cc.niushuai.dididone.ui.base.InitAndSetListener;
import cc.niushuai.dididone.util.Snowflake;
import cc.niushuai.dididone.util.Toasts;
import cc.niushuai.dididone.util.XLog;
import cn.hutool.core.util.StrUtil;
import io.reactivex.Completable;
import io.reactivex.CompletableObserver;
import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
public class ProjectFragment extends Fragment implements InitAndSetListener {
@ -62,6 +71,16 @@ public class ProjectFragment extends Fragment implements InitAndSetListener { @@ -62,6 +71,16 @@ public class ProjectFragment extends Fragment implements InitAndSetListener {
private List<ProjectIcon> getDataList() {
ArrayList<ProjectIcon> list = new ArrayList<>();
Flowable<List<Project>> listFlowable = DBManager.INSTANCE.projectDao().listAll();
listFlowable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(projectList -> {
XLog.d("reset... project 查询到" + projectList.size());
list.clear();
list.addAll(ProjectIcon.trans(projectList));
list.add(defaultAddProject());
});
// 最后一个要添加 + 符号
list.add(defaultAddProject());
@ -69,7 +88,7 @@ public class ProjectFragment extends Fragment implements InitAndSetListener { @@ -69,7 +88,7 @@ public class ProjectFragment extends Fragment implements InitAndSetListener {
}
private ProjectIcon defaultAddProject() {
return new ProjectIcon(0L, "添加", "faw_plus", String.valueOf(Color.BLACK));
return new ProjectIcon(0L, "添加", "faw_plus", Color.BLACK);
}
/**
@ -158,10 +177,40 @@ public class ProjectFragment extends Fragment implements InitAndSetListener { @@ -158,10 +177,40 @@ public class ProjectFragment extends Fragment implements InitAndSetListener {
}
// 名称
XLog.d(BizGlobal.PROJECT_NAME + ": {}", data.getStringExtra(BizGlobal.PROJECT_NAME));
String projectName = data.getStringExtra(BizGlobal.PROJECT_NAME);
XLog.d(BizGlobal.PROJECT_NAME + ": {}", projectName);
// 图标
XLog.d(BizGlobal.PROJECT_ICON + ": {}", data.getStringExtra(BizGlobal.PROJECT_ICON));
String projectIcon = data.getStringExtra(BizGlobal.PROJECT_ICON);
XLog.d(BizGlobal.PROJECT_ICON + ": {}", projectIcon);
// 颜色
XLog.d(BizGlobal.PROJECT_ICON_COLOR + ": {}", data.getIntExtra(BizGlobal.PROJECT_ICON_COLOR, Color.RED));
int projectIconColor = data.getIntExtra(BizGlobal.PROJECT_ICON_COLOR, Color.RED);
XLog.d(BizGlobal.PROJECT_ICON_COLOR + ": {}", projectIconColor);
Project project = new Project();
project.setName(projectName);
project.setIcon(projectIcon);
project.setIconColor(projectIconColor);
Completable completable = DBManager.INSTANCE.projectDao().insertAll(project);
completable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onComplete() {
Log.i("SettingsFragment", "新增打卡项[" + project.getName() + "]成功");
Toasts.shortShow(getActivity(), "新增打卡项[{}]成功", project.getName());
}
@Override
public void onError(Throwable e) {
Log.e("SettingsFragment", "新增打卡项[" + project.getName() + "]失败", e);
Toasts.shortShow(getActivity(), "新增打卡项[{}]失败, {}", project.getName(), e.getMessage());
}
});
}
}

Loading…
Cancel
Save