From 32c909adb84a731e34850b81c0bed8ea0b8fc601 Mon Sep 17 00:00:00 2001 From: zlj <390057892@qq.com> Date: Fri, 8 Nov 2019 10:08:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E4=B9=A6=E7=AD=BE=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=9C=AC=E5=9C=B0=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/litepal.xml | 2 +- .../novel/read/activity/NovelReadActivity.kt | 70 +++------- .../com/novel/read/adapter/MarkAdapter.java | 15 ++- .../novel/read/model/db/BookSignTable.java | 17 --- .../com/novel/read/model/db/BookSignTable.kt | 15 +++ .../model/db/dbManage/BookRepository.java | 123 +++++++----------- .../novel/read/service/DownloadService.java | 4 +- app/src/main/res/values-night/strings.xml | 11 +- .../main/res/values-zh-rTW-night/strings.xml | 11 +- app/src/main/res/values-zh-rTW/strings.xml | 11 +- app/src/main/res/values/strings.xml | 11 +- 11 files changed, 118 insertions(+), 172 deletions(-) delete mode 100644 app/src/main/java/com/novel/read/model/db/BookSignTable.java create mode 100644 app/src/main/java/com/novel/read/model/db/BookSignTable.kt diff --git a/app/src/main/assets/litepal.xml b/app/src/main/assets/litepal.xml index 91882d1..30320e0 100644 --- a/app/src/main/assets/litepal.xml +++ b/app/src/main/assets/litepal.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/java/com/novel/read/activity/NovelReadActivity.kt b/app/src/main/java/com/novel/read/activity/NovelReadActivity.kt index 01024fa..42040ee 100644 --- a/app/src/main/java/com/novel/read/activity/NovelReadActivity.kt +++ b/app/src/main/java/com/novel/read/activity/NovelReadActivity.kt @@ -28,13 +28,16 @@ import com.novel.read.adapter.MarkAdapter import com.novel.read.base.NovelBaseActivity import com.novel.read.constants.Constant import com.novel.read.constants.Constant.ResultCode.Companion.RESULT_IS_COLLECTED -import com.novel.read.event.* +import com.novel.read.event.BookArticleEvent +import com.novel.read.event.ErrorChapterEvent +import com.novel.read.event.FinishChapterEvent +import com.novel.read.event.RxBus import com.novel.read.http.AccountManager import com.novel.read.model.db.BookChapterBean +import com.novel.read.model.db.BookSignTable import com.novel.read.model.db.CollBookBean import com.novel.read.model.db.DownloadTaskBean import com.novel.read.model.db.dbManage.BookRepository -import com.novel.read.model.protocol.MarkResp import com.novel.read.service.DownloadMessage import com.novel.read.service.DownloadService import com.novel.read.utlis.BrightnessUtils @@ -53,6 +56,9 @@ import kotlinx.android.synthetic.main.layout_light.* import kotlinx.android.synthetic.main.layout_read_mark.* import java.util.* +/** + * 阅读页📕 + */ class NovelReadActivity : NovelBaseActivity(), DownloadService.OnDownloadListener { private var mCategoryAdapter: CategoryAdapter? = null @@ -60,7 +66,7 @@ class NovelReadActivity : NovelBaseActivity(), DownloadService.OnDownloadListene private var mCurrentChapter: TxtChapter? = null //当前章节 private var currentChapter = 0 private var mMarkAdapter: MarkAdapter? = null - private val mMarks = ArrayList() + private val mMarks = ArrayList() private lateinit var mPageLoader: PageLoader private var mTopInAnim: Animation? = null private var mTopOutAnim: Animation? = null @@ -298,8 +304,13 @@ class NovelReadActivity : NovelBaseActivity(), DownloadService.OnDownloadListene tvAddMark.setOnClickListener { if (mCurrentChapter != null) { mMarkAdapter!!.edit = false - AccountManager.getInstance() + if (BookRepository.getInstance().getSignById(mCurrentChapter!!.chapterId)) { + ToastUtils.showNormalToast(this, getString(R.string.sign_exist)) + return@setOnClickListener + } + BookRepository.getInstance() .addSign(mBookId, mCurrentChapter!!.chapterId, mCurrentChapter!!.title) + updateMark() } } @@ -307,7 +318,8 @@ class NovelReadActivity : NovelBaseActivity(), DownloadService.OnDownloadListene if (mMarkAdapter!!.edit) { val sign = mMarkAdapter!!.selectList if (sign != "") { - AccountManager.getInstance().deleteSign(sign) + BookRepository.getInstance().deleteSign(sign) + updateMark() } mMarkAdapter!!.edit = false } else { @@ -478,9 +490,8 @@ class NovelReadActivity : NovelBaseActivity(), DownloadService.OnDownloadListene @Subscribe fun getBookArticle(event: BookArticleEvent) { - Log.e(TAG, "getBookArticle: ") if (event.isFail) { - + //获取章节失败处理 } else { val chapterBeans = event.result!!.chapterBean mPageLoader.collBook.bookChapters = chapterBeans @@ -511,38 +522,9 @@ class NovelReadActivity : NovelBaseActivity(), DownloadService.OnDownloadListene } private fun updateMark() { - AccountManager.getInstance().getSignList(mBookId) - } - - @Subscribe - fun addSign(event: AddBookSignEvent) { - if (event.isFail) { - ToastUtils.showNormalToast(this, "添加书签失败,请检查网络设置") - } else { - ToastUtils.showNormalToast(this, "添加书签成功") - updateMark() - } - } - - @Subscribe - fun deleteSigin(event: DeleteBookSignEvent) { - if (event.isFail) { - ToastUtils.showNormalToast(this, event.er!!.msg) - } else { - ToastUtils.showNormalToast(this, event.result!!.msg) - updateMark() - } - } - - @Subscribe - fun getSignList(event: GetBookSignEvent) { - if (event.isFail) { - ToastUtils.showNormalToast(this, "获取书签失败,请检查网络设置") - } else { - mMarks.clear() - mMarks.addAll(event.result!!.sign) - mMarkAdapter!!.notifyDataSetChanged() - } + mMarks.clear() + mMarks.addAll(BookRepository.getInstance().getSign(mBookId)) + mMarkAdapter!!.notifyDataSetChanged() } override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { @@ -597,7 +579,6 @@ class NovelReadActivity : NovelBaseActivity(), DownloadService.OnDownloadListene val result = Intent() result.putExtra(RESULT_IS_COLLECTED, isCollected) setResult(Activity.RESULT_OK, result) - // 退出 super.onBackPressed() } @@ -632,12 +613,6 @@ class NovelReadActivity : NovelBaseActivity(), DownloadService.OnDownloadListene } override fun onDownloadChange(pos: Int, status: Int, msg: String) { - // DownloadTaskBean bean = mDownloadAdapter.getItem(pos); - // bean.setStatus(status); - // if (DownloadTaskBean.STATUS_LOADING == status){ - // bean.setCurrentChapter(Integer.valueOf(msg)); - // } - // mDownloadAdapter.notifyItemChanged(pos); Log.e(TAG, "onDownloadChange: $pos $status $msg") if (msg == getString(R.string.download_success) || msg == getString(R.string.download_error)) { @@ -662,9 +637,6 @@ class NovelReadActivity : NovelBaseActivity(), DownloadService.OnDownloadListene override fun onDownloadResponse(pos: Int, status: Int) { - // DownloadTaskBean bean = mDownloadAdapter.getItem(pos); - // bean.setStatus(status); - // mDownloadAdapter.notifyItemChanged(pos); Log.e(TAG, "onDownloadResponse: $pos $status") } diff --git a/app/src/main/java/com/novel/read/adapter/MarkAdapter.java b/app/src/main/java/com/novel/read/adapter/MarkAdapter.java index 9e66402..fceb590 100644 --- a/app/src/main/java/com/novel/read/adapter/MarkAdapter.java +++ b/app/src/main/java/com/novel/read/adapter/MarkAdapter.java @@ -12,6 +12,7 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.novel.read.R; +import com.novel.read.model.db.BookSignTable; import com.novel.read.model.protocol.MarkResp; import java.util.List; @@ -19,10 +20,10 @@ import java.util.List; public class MarkAdapter extends RecyclerView.Adapter{ private Context mContext; - private List mList; + private List mList; private boolean edit; - public MarkAdapter(List mList) { + public MarkAdapter(List mList) { this.mList = mList; } @@ -52,7 +53,7 @@ public class MarkAdapter extends RecyclerView.Adapter{ ((ViewHolder) viewHolder).mCheck.setVisibility(View.GONE); } ((ViewHolder) viewHolder).mTvMark.setText(mList.get(i).getContent()); - ((ViewHolder) viewHolder).mCheck.setChecked(mList.get(i).isEdit()); + ((ViewHolder) viewHolder).mCheck.setChecked(mList.get(i).getEdit()); } } @@ -84,11 +85,11 @@ public class MarkAdapter extends RecyclerView.Adapter{ public String getSelectList() { StringBuilder signs = new StringBuilder(); for (int i = 0; i < mList.size(); i++) { - if (mList.get(i).isEdit()) { - if (signs.equals("")){ - signs.append(mList.get(i).getId()); + if (mList.get(i).getEdit()) { + if (signs.toString().equals("")){ + signs.append(mList.get(i).getArticleId()); }else { - signs.append(",").append(mList.get(i).getId()); + signs.append(",").append(mList.get(i).getArticleId()); } } } diff --git a/app/src/main/java/com/novel/read/model/db/BookSignTable.java b/app/src/main/java/com/novel/read/model/db/BookSignTable.java deleted file mode 100644 index 418016c..0000000 --- a/app/src/main/java/com/novel/read/model/db/BookSignTable.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.novel.read.model.db; - -import org.litepal.crud.LitePalSupport; - -import java.io.Serializable; - -/** - * create by zlj on 2019/11/6 - * describe: 书签数据库 - */ -public class BookSignTable extends LitePalSupport implements Serializable { - - private String bookId; - private String content; - private long saveTime; - -} diff --git a/app/src/main/java/com/novel/read/model/db/BookSignTable.kt b/app/src/main/java/com/novel/read/model/db/BookSignTable.kt new file mode 100644 index 0000000..530cf2a --- /dev/null +++ b/app/src/main/java/com/novel/read/model/db/BookSignTable.kt @@ -0,0 +1,15 @@ +package com.novel.read.model.db + +import org.litepal.crud.LitePalSupport + +import java.io.Serializable + +/** + * create by zlj on 2019/11/6 + * describe: 书签数据库 + */ +class BookSignTable(val bookId: String, val articleId: String, val content: String) : + LitePalSupport(), Serializable { + val saveTime: Long = System.currentTimeMillis() + var edit: Boolean = false +} diff --git a/app/src/main/java/com/novel/read/model/db/dbManage/BookRepository.java b/app/src/main/java/com/novel/read/model/db/dbManage/BookRepository.java index 3095563..3eed0be 100644 --- a/app/src/main/java/com/novel/read/model/db/dbManage/BookRepository.java +++ b/app/src/main/java/com/novel/read/model/db/dbManage/BookRepository.java @@ -6,6 +6,7 @@ import android.util.Log; import com.novel.read.constants.Constant; import com.novel.read.model.db.BookChapterBean; import com.novel.read.model.db.BookRecordBean; +import com.novel.read.model.db.BookSignTable; import com.novel.read.model.db.ChapterInfoBean; import com.novel.read.model.db.CollBookBean; import com.novel.read.model.db.DownloadTaskBean; @@ -35,7 +36,7 @@ import io.reactivex.SingleOnSubscribe; /** * Created by newbiechen on 17-5-8. - * 存储关于书籍内容的信息(CollBook(收藏书籍),BookChapter(书籍列表),ChapterInfo(书籍章节),BookRecord(记录)) + * 存储关于书籍内容的信息(CollBook(收藏书籍),BookChapter(书籍列表),ChapterInfo(书籍章节),BookRecord(记录),BookSignTable书签) */ public class BookRepository { @@ -59,15 +60,6 @@ public class BookRepository { //存储已收藏书籍 public void saveCollBookWithAsync(CollBookBean bean) { -// bean.saveAsync().listen(new SaveCallback() { -// @Override -// public void onFinish(boolean success) { -// System.out.println(success); -// } -// }); -// LitePal.saveAll(bean.getBookChapters()); -// bean.saveOrUpdate("bookId=?", bean.getId()); -// bean.saveOrUpdateAsync("bookId=?", bean.getId()); bean.saveOrUpdate("bookId=?", bean.getId()); for (int i = 0; i < bean.getBookChapters().size(); i++) { bean.getBookChapters().get(i).setCollBookBean(bean); @@ -78,7 +70,6 @@ public class BookRepository { Log.e(TAG, "saveCollBookWithAsync: " + success); } }); -// LitePal.saveAll(bean.getBookChapters()); } /** @@ -105,32 +96,20 @@ public class BookRepository { } public void saveCollBook(CollBookBean bean) { -// mCollBookDao.insertOrReplace(bean); ContentValues values = new ContentValues(); values.put("isUpdate", bean.isUpdate()); values.put("lastRead", bean.getLastRead()); values.put("lastChapter", bean.getLastChapter()); LitePal.updateAll(CollBookBean.class, values, "bookId=?", bean.getId()); -// bean.setBookChapters(new ArrayList<>()); -// bean.saveOrUpdate("bookId=?", bean.getId()); -// for (int i = 0; i < bean.getBookChapters().size(); i++) { -// bean.getBookChapters().get(i).setCollBookBean(bean); -// } -// LitePal.saveAllAsync(bean.getBookChapters()).listen(new SaveCallback() { -// @Override -// public void onFinish(boolean success) { -// Log.e(TAG, "saveCollBookWithAsync: " + success); -// } -// }); } public void saveCollBooks(List beans) { - for (int i = 0; i beans, CollBookBean collBookBean) { - -// //先删除旧的章节,再异步储存新的章节 -// LitePal.deleteAll(BookChapterBean.class, "bookId=?", collBookBean.getId()); collBookBean.saveOrUpdate("bookId=?", collBookBean.getId()); - for (int i = 0; i getCollBooks() { -// return mCollBookDao -// .queryBuilder() -// .orderDesc(CollBookBeanDao.Properties.LastRead) -// .list(); List collBookBeans; if (SpUtil.getBooleanValue(Constant.BookSort, false)) { //默认根据阅读时间排序 collBookBeans = LitePal.order("updated desc").find(CollBookBean.class); @@ -223,17 +182,6 @@ public class BookRepository { //获取书籍列表 public List getBookChaptersInRx(String bookId) { -// return Single.create(new SingleOnSubscribe>() { -// @Override -// public void subscribe(SingleEmitter> e) throws Exception { -// List beans = mSession -// .getBookChapterBeanDao() -// .queryBuilder() -// .where(BookChapterBeanDao.Properties.BookId.eq(bookId)) -// .list(); -// e.onSuccess(beans); -// } -// }); List bookBeans = LitePal.where("bookId=?", bookId).find(CollBookBean.class, true); if (bookBeans != null && bookBeans.size() > 0) { return bookBeans.get(0).getBookChapters(); @@ -244,10 +192,6 @@ public class BookRepository { //获取阅读记录 public BookRecordBean getBookRecord(String bookId) { -// return mSession.getBookRecordBeanDao() -// .queryBuilder() -// .where(BookRecordBeanDao.Properties.BookId.eq(bookId)) -// .unique(); List beans = LitePal.where("bookId=?", bookId).find(BookRecordBean.class); if (beans != null && beans.size() > 0) { return beans.get(0); @@ -344,28 +288,55 @@ public class BookRepository { public void saveDownloadTask(DownloadTaskBean bean) { - bean.saveOrUpdate("bookId=?",bean.getBookId()); + bean.saveOrUpdate("bookId=?", bean.getBookId()); CollBookBean collBookBean = bean.getCollBookBean(); - for (int i = 0; i getSign(String bookId) { + return LitePal.where("bookId=?", bookId).find(BookSignTable.class); + } + + /** + * 添加书签 + * + * @param bookId bookId + * @param articleId articleId + * @param content content + */ + public void addSign(String bookId, String articleId, String content) { + BookSignTable bookSignTable = new BookSignTable(bookId, articleId, content); + bookSignTable.saveOrUpdate(); + } -// //先删除旧的章节,再异步储存新的章节 -// LitePal.deleteAll(BookChapterBean.class, "taskName=?",bean.getTaskName()); -// -// LitePal.saveAllAsync(bean.getBookChapters()).listen(new SaveCallback() { -// @Override -// public void onFinish(boolean success) { -// if (success) { -// bean.setBookChapters(bean.getBookChapters()); -// bean.saveOrUpdate("taskName=?",bean.getTaskName()); -// } -// Log.d(TAG, "saveBookChaptersWithAsync: " + "进行存储" + success); -// } -// }); + /** + * 删除书签 + * + * @param articleId articleId + */ + public void deleteSign(String articleId) { + LitePal.deleteAll(BookSignTable.class, "articleId=?", articleId); + } + + /** + * 根据id查询书签是否存在 + * + * @param articleId + */ + public boolean getSignById(String articleId) { + List mList = LitePal.where("articleId=?", articleId).find(BookSignTable.class); + return mList.size() > 0; } } diff --git a/app/src/main/java/com/novel/read/service/DownloadService.java b/app/src/main/java/com/novel/read/service/DownloadService.java index 7998b5d..2bfe186 100644 --- a/app/src/main/java/com/novel/read/service/DownloadService.java +++ b/app/src/main/java/com/novel/read/service/DownloadService.java @@ -166,7 +166,7 @@ public class DownloadService extends BaseService { //删除掉已经完成的章节 List remainChapterBeans = newTask.getBookChapterList().subList(downloadTask.getLastChapter(), newTask.getLastChapter()); String taskName = newTask.getTaskName() - + getString(R.string.nb_download_chapter_scope, + + getString(R.string.download_chapter_scope, downloadTask.getLastChapter(), newTask.getLastChapter()); //重置任务 newTask.setBookChapters(remainChapterBeans); @@ -187,7 +187,7 @@ public class DownloadService extends BaseService { //重置名字 if (!isExist) { String taskName = newTask.getTaskName() - + getString(R.string.nb_download_chapter_scope, + + getString(R.string.download_chapter_scope, 1, newTask.getLastChapter()); newTask.setTaskName(taskName); postMessage(getString(R.string.cache_success)); diff --git a/app/src/main/res/values-night/strings.xml b/app/src/main/res/values-night/strings.xml index 1d2e150..d84730c 100644 --- a/app/src/main/res/values-night/strings.xml +++ b/app/src/main/res/values-night/strings.xml @@ -92,6 +92,7 @@ 删除 新增书签 清除 + 当前章节书签已存在 喜欢本书就加入书架吧 请先添加书籍 @@ -150,9 +151,9 @@ - 成功添加到下载列表 - 该任务已存在 - 已缓存全部章节 - %1$d/%2$d - (%1$d-%2$d章) + 成功添加到下载列表 + 该任务已存在 + 已缓存全部章节 + %1$d/%2$d + (%1$d-%2$d章) diff --git a/app/src/main/res/values-zh-rTW-night/strings.xml b/app/src/main/res/values-zh-rTW-night/strings.xml index 74f1d7c..97475ce 100644 --- a/app/src/main/res/values-zh-rTW-night/strings.xml +++ b/app/src/main/res/values-zh-rTW-night/strings.xml @@ -89,6 +89,7 @@ 删除 新增書籤 清除 + 当前章节书签已存在 喜歡本書就加入書架吧 請先添加書籍 @@ -147,10 +148,10 @@ - 成功添加到下載列表 - 該任務已存在 - 以緩存全部章節 - %1$d/%2$d - (%1$d-%2$d章) + 成功添加到下載列表 + 該任務已存在 + 以緩存全部章節 + %1$d/%2$d + (%1$d-%2$d章) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 28eadd3..2fd06ac 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -89,6 +89,7 @@ 删除 新增書籤 清除 + 当前章节书签已存在 喜歡本書就加入書架吧 請先添加書籍 @@ -149,10 +150,10 @@ - 成功添加到下載列表 - 該任務已存在 - 以緩存全部章節 - %1$d/%2$d - (%1$d-%2$d章) + 成功添加到下載列表 + 該任務已存在 + 以緩存全部章節 + %1$d/%2$d + (%1$d-%2$d章) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b57df03..b1ddeb5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -92,6 +92,7 @@ 删除 新增书签 清除 + 当前章节书签已存在 喜欢本书就加入书架吧 请先添加书籍 @@ -152,9 +153,9 @@ - 成功添加到下载列表 - 该任务已存在 - 已缓存全部章节 - %1$d/%2$d - (%1$d-%2$d章) + 成功添加到下载列表 + 该任务已存在 + 已缓存全部章节 + %1$d/%2$d + (%1$d-%2$d章)