Browse Source

feat: 🌓 : project 可更新

master
niushuai233 1 year ago
parent
commit
860881486d
  1. 4
      app/src/main/java/cc/niushuai/dididone/biz/BizGlobal.java
  2. 6
      app/src/main/java/cc/niushuai/dididone/biz/dao/ProjectDao.java
  3. 3
      app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java
  4. 52
      app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java
  5. 52
      app/src/main/java/cc/niushuai/dididone/ui/setting/project/ProjectFragment.java

4
app/src/main/java/cc/niushuai/dididone/biz/BizGlobal.java

@ -38,6 +38,8 @@ import kotlin.jvm.functions.Function1;
* 业务全局对象 * 业务全局对象
*/ */
public class BizGlobal { public class BizGlobal {
public static final String REQUEST_CODE = "REQUEST_CODE";
public static final String PROJECT_ID = "projectId";
public static final String PROJECT_NAME = "projectName"; public static final String PROJECT_NAME = "projectName";
public static final String PROJECT_ICON = "projectIcon"; public static final String PROJECT_ICON = "projectIcon";
public static final String PROJECT_ICON_COLOR = "projectIconColor"; public static final String PROJECT_ICON_COLOR = "projectIconColor";
@ -46,6 +48,8 @@ public class BizGlobal {
public static final String EMPTY_PROJECT_TIPS = "先去添加打卡项吧~"; public static final String EMPTY_PROJECT_TIPS = "先去添加打卡项吧~";
public static final String EMPTY_PROJECT_TIPS_ICON = "cmd_alert_decagram_outline"; public static final String EMPTY_PROJECT_TIPS_ICON = "cmd_alert_decagram_outline";
public static final int REQUEST_CODE_GENERAL = 1; public static final int REQUEST_CODE_GENERAL = 1;
public static final int REQUEST_CODE_PROJECT_NEW = 10011;
public static final int REQUEST_CODE_PROJECT_UPDATE = 10012;
public static final Integer REQUEST_CODE_BACKUP = 10005; public static final Integer REQUEST_CODE_BACKUP = 10005;
public static final Integer REQUEST_CODE_RESTORE = 10006; public static final Integer REQUEST_CODE_RESTORE = 10006;
private static final String URI_SCHEMA_FILE = "file"; private static final String URI_SCHEMA_FILE = "file";

6
app/src/main/java/cc/niushuai/dididone/biz/dao/ProjectDao.java

@ -4,6 +4,7 @@ import androidx.room.Dao;
import androidx.room.Delete; import androidx.room.Delete;
import androidx.room.Insert; import androidx.room.Insert;
import androidx.room.Query; import androidx.room.Query;
import androidx.room.Update;
import java.util.List; import java.util.List;
@ -37,4 +38,9 @@ public interface ProjectDao {
@Query("delete from t_project where id = :id") @Query("delete from t_project where id = :id")
void physicsDeleteById(Long id); void physicsDeleteById(Long id);
@Query("update t_project set name = :name, icon = :icon, icon_color = :color where id = :id")
void update(Long id, String name, String icon, Integer color);
@Update
int update(Project project);
} }

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

@ -59,4 +59,7 @@ public interface RecordDao {
@Query("update t_record set deleted = 1 where project_id = :projectId") @Query("update t_record set deleted = 1 where project_id = :projectId")
void deleteByProjectId(Long projectId); void deleteByProjectId(Long projectId);
@Query("update t_record set name = :name where project_id = :projectId")
int updateName(String name, Long projectId);
} }

52
app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java

@ -1,5 +1,6 @@
package cc.niushuai.dididone.ui.setting.project; package cc.niushuai.dididone.ui.setting.project;
import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
@ -7,9 +8,6 @@ import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
@ -18,7 +16,6 @@ import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.mikepenz.community_material_typeface_library.CommunityMaterial;
import com.mikepenz.iconics.IconicsDrawable; import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.ionicons_typeface_library.Ionicons; import com.mikepenz.ionicons_typeface_library.Ionicons;
import com.skydoves.colorpickerview.ColorEnvelope; import com.skydoves.colorpickerview.ColorEnvelope;
@ -27,14 +24,9 @@ import com.skydoves.colorpickerview.ColorPickerView;
import com.skydoves.colorpickerview.listeners.ColorEnvelopeListener; import com.skydoves.colorpickerview.listeners.ColorEnvelopeListener;
import com.skydoves.colorpickerview.listeners.ColorListener; import com.skydoves.colorpickerview.listeners.ColorListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Set;
import java.util.function.Predicate;
import cc.niushuai.dididone.R; import cc.niushuai.dididone.R;
import cc.niushuai.dididone.biz.BizGlobal; import cc.niushuai.dididone.biz.BizGlobal;
import cc.niushuai.dididone.biz.entity.SavedIcon; import cc.niushuai.dididone.biz.vo.ProjectIcon;
import cc.niushuai.dididone.databinding.ActivityNewProjectBinding; import cc.niushuai.dididone.databinding.ActivityNewProjectBinding;
import cc.niushuai.dididone.ui.base.BaseActivity; import cc.niushuai.dididone.ui.base.BaseActivity;
import cc.niushuai.dididone.ui.setting.icon.recycle.IconRecycleAdapter; import cc.niushuai.dididone.ui.setting.icon.recycle.IconRecycleAdapter;
@ -49,6 +41,9 @@ public class NewProjectActivity extends BaseActivity {
private int selectedColor = Color.RED; private int selectedColor = Color.RED;
private String selectedIcon = Ionicons.Icon.ion_ios_heart.name(); private String selectedIcon = Ionicons.Icon.ion_ios_heart.name();
private Long projectId;
private Integer requestCode;
/** /**
* icon 展示 recycleViewAdapter * icon 展示 recycleViewAdapter
*/ */
@ -63,11 +58,37 @@ public class NewProjectActivity extends BaseActivity {
setContentView(binding.getRoot()); setContentView(binding.getRoot());
} }
@Override @Override
protected void init() { protected void init() {
// 是否需要restore数据
boolean update = restore();
// 设置标题 // 设置标题
setTitle("添加新打卡项"); setTitle(update ? "更新打卡项" : "添加打卡项");
}
private boolean restore() {
Bundle extras = getIntent().getExtras();
requestCode = extras.getInt(BizGlobal.REQUEST_CODE);
long id = extras.getLong(BizGlobal.PROJECT_ID);
String name = extras.getString(BizGlobal.PROJECT_NAME);
String icon = extras.getString(BizGlobal.PROJECT_ICON);
int iconColor = extras.getInt(BizGlobal.PROJECT_ICON_COLOR);
// 重新赋值
projectId = id;
selectedIcon = icon;
selectedColor = iconColor;
// 修改text内容
binding.npProjectNameTxt.setText(name);
changeIcon(icon, iconColor);
return BizGlobal.REQUEST_CODE_PROJECT_NEW == requestCode ? false : true;
} }
private void initIconDialogView(View iconDialogView) { private void initIconDialogView(View iconDialogView) {
@ -162,13 +183,20 @@ public class NewProjectActivity extends BaseActivity {
Toasts.shortShow(this, "{}未填", getResources().getString(R.string.np_project_name)); Toasts.shortShow(this, "{}未填", getResources().getString(R.string.np_project_name));
return; return;
} }
// id
if (null != projectId) {
data.putExtra(BizGlobal.PROJECT_ID, projectId);
}
// 名称
data.putExtra(BizGlobal.PROJECT_NAME, projectName); data.putExtra(BizGlobal.PROJECT_NAME, projectName);
// 图标 // 图标
data.putExtra(BizGlobal.PROJECT_ICON, selectedIcon); data.putExtra(BizGlobal.PROJECT_ICON, selectedIcon);
// 颜色 // 颜色
data.putExtra(BizGlobal.PROJECT_ICON_COLOR, selectedColor); data.putExtra(BizGlobal.PROJECT_ICON_COLOR, selectedColor);
// requestCode
data.putExtra(BizGlobal.REQUEST_CODE, requestCode);
// 放置结果数据 // 放置结果数据
setResult(BizGlobal.REQUEST_CODE_GENERAL, data); setResult(Activity.RESULT_OK, data);
finish(); finish();
}); });
} }

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

@ -1,5 +1,6 @@
package cc.niushuai.dididone.ui.setting.project; package cc.niushuai.dididone.ui.setting.project;
import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
@ -108,13 +109,15 @@ public class ProjectFragment extends Fragment implements InitAndSetListener {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (id == 0) { if (id == 0) {
addProjectClick(); addProjectClick(BizGlobal.REQUEST_CODE_PROJECT_NEW, null);
return; return;
} }
// 其他的被点击 // 其他的被点击
ProjectIcon item = gridViewAdapter4Project.getItem(position); ProjectIcon item = gridViewAdapter4Project.getItem(position);
Toasts.shortShow(getContext(), item.getProjectName()); // Toasts.shortShow(getContext(), item.getProjectName());
addProjectClick(BizGlobal.REQUEST_CODE_PROJECT_UPDATE, item);
} }
}); });
@ -186,18 +189,37 @@ public class ProjectFragment extends Fragment implements InitAndSetListener {
/** /**
* 添加 被点击 * 添加 被点击
*/ */
private void addProjectClick() { private void addProjectClick(int requestCode, ProjectIcon clickItem) {
// 打开添加新项页面 // 打开添加新项页面
startActivityForResult(new Intent(getContext(), NewProjectActivity.class), BizGlobal.REQUEST_CODE_GENERAL); Intent intent = new Intent(getContext(), NewProjectActivity.class);
Bundle data = new Bundle();
if (null != clickItem) {
// requestCode
intent.putExtra(BizGlobal.REQUEST_CODE, requestCode);
// id
intent.putExtra(BizGlobal.PROJECT_ID, clickItem.getId());
// 名称
intent.putExtra(BizGlobal.PROJECT_NAME, clickItem.getProjectName());
// 图标
intent.putExtra(BizGlobal.PROJECT_ICON, clickItem.getIcon());
// 颜色
intent.putExtra(BizGlobal.PROJECT_ICON_COLOR, clickItem.getColor());
}
startActivityForResult(intent, requestCode, data);
} }
@Override @Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (null == data) { if (resultCode != Activity.RESULT_OK || null == data) {
return; return;
} }
boolean update = requestCode == BizGlobal.REQUEST_CODE_PROJECT_UPDATE ? true : false;
// id
long projectId = data.getLongExtra(BizGlobal.PROJECT_ID, -1L);
XLog.d(BizGlobal.PROJECT_ID + ": {}", projectId);
// 名称 // 名称
String projectName = data.getStringExtra(BizGlobal.PROJECT_NAME); String projectName = data.getStringExtra(BizGlobal.PROJECT_NAME);
XLog.d(BizGlobal.PROJECT_NAME + ": {}", projectName); XLog.d(BizGlobal.PROJECT_NAME + ": {}", projectName);
@ -212,6 +234,24 @@ public class ProjectFragment extends Fragment implements InitAndSetListener {
project.setName(projectName); project.setName(projectName);
project.setIcon(projectIcon); project.setIcon(projectIcon);
project.setIconColor(projectIconColor); project.setIconColor(projectIconColor);
// 是否要添加id选项
if (update) {
project.setId(projectId);
}
XLog.d("update ? {}", update);
if (update) {
// 更新
int rows = DBManager.INSTANCE.projectDao().update(project);
Toasts.shortShow(getContext(), "rows = " + rows);
XLog.d("update project rows == " + rows);
if (rows == 1) {
rows = DBManager.INSTANCE.recordDao().updateName(project.getName(), project.getId());
XLog.d("update record rows == " + rows);
}
} else {
// 新增
Completable completable = DBManager.INSTANCE.projectDao().insertAll(project); Completable completable = DBManager.INSTANCE.projectDao().insertAll(project);
completable.subscribeOn(Schedulers.io()) completable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -233,6 +273,6 @@ public class ProjectFragment extends Fragment implements InitAndSetListener {
} }
}); });
}
} }
} }

Loading…
Cancel
Save