diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6d7a09a84..524fe903a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -257,6 +257,11 @@ android:name=".ui.login.SourceLogin" android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" /> + + + @get:Query("select sum(readTime) from readRecord") + val allTime: Long + @Query("select readTime from readRecord where bookName = :bookName") fun getReadTime(bookName: String): Long? diff --git a/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt b/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt new file mode 100644 index 000000000..6ff52d229 --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/about/ReadRecordActivity.kt @@ -0,0 +1,77 @@ +package io.legado.app.ui.about + +import android.content.Context +import android.os.Bundle +import androidx.recyclerview.widget.LinearLayoutManager +import io.legado.app.App +import io.legado.app.R +import io.legado.app.base.BaseActivity +import io.legado.app.base.adapter.ItemViewHolder +import io.legado.app.base.adapter.SimpleRecyclerAdapter +import io.legado.app.data.entities.ReadRecord +import kotlinx.android.synthetic.main.activity_read_record.* +import kotlinx.android.synthetic.main.item_read_record.* +import kotlinx.android.synthetic.main.item_read_record.view.* +import kotlinx.coroutines.Dispatchers.IO +import kotlinx.coroutines.Dispatchers.Main +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class ReadRecordActivity : BaseActivity(R.layout.activity_read_record) { + + lateinit var adapter: RecordAdapter + + override fun onActivityCreated(savedInstanceState: Bundle?) { + initView() + initData() + } + + private fun initView() { + tv_book_name.text = "总阅读时间" + recycler_view.layoutManager = LinearLayoutManager(this) + adapter = RecordAdapter(this) + recycler_view.adapter = adapter + } + + private fun initData() { + launch(IO) { + val allTime = App.db.readRecordDao().allTime + withContext(Main) { + tv_read_time.text = formatDuring(allTime) + } + val readRecords = App.db.readRecordDao().all + withContext(Main) { + adapter.setItems(readRecords) + } + } + } + + inner class RecordAdapter(context: Context) : + SimpleRecyclerAdapter(context, R.layout.item_read_record) { + + override fun convert(holder: ItemViewHolder, item: ReadRecord, payloads: MutableList) { + holder.itemView.apply { + tv_book_name.text = item.bookName + tv_read_time.text = formatDuring(item.readTime) + } + } + + override fun registerListener(holder: ItemViewHolder) { + + } + + } + + fun formatDuring(mss: Long): String { + val days = mss / (1000 * 60 * 60 * 24) + val hours = mss % (1000 * 60 * 60 * 24) / (1000 * 60 * 60) + val minutes = mss % (1000 * 60 * 60) / (1000 * 60) + val seconds = mss % (1000 * 60) / 1000 + val d = if (days > 0) "${days}天" else "" + val h = if (hours > 0) "${hours}小时" else "" + val m = if (minutes > 0) "${minutes}分钟" else "" + val s = if (seconds > 0) "${seconds}秒" else "" + return "$d$h$m$s" + } + +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt b/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt index 79758fc01..e4bc131ba 100644 --- a/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/my/MyFragment.kt @@ -18,6 +18,7 @@ import io.legado.app.lib.theme.ATH import io.legado.app.service.WebService import io.legado.app.ui.about.AboutActivity import io.legado.app.ui.about.DonateActivity +import io.legado.app.ui.about.ReadRecordActivity import io.legado.app.ui.book.source.manage.BookSourceActivity import io.legado.app.ui.config.BackupRestoreUi import io.legado.app.ui.config.ConfigActivity @@ -140,6 +141,7 @@ class MyFragment : BaseFragment(R.layout.fragment_my_config), FileChooserDialog. "theme_setting" -> context?.startActivity( Pair("configType", ConfigViewModel.TYPE_THEME_CONFIG) ) + "readRecord" -> context?.startActivity() "donate" -> context?.startActivity() "about" -> context?.startActivity() } diff --git a/app/src/main/res/drawable/ic_cfg_e_lnk.xml b/app/src/main/res/drawable/ic_cfg_e_lnk.xml deleted file mode 100644 index b94a8eb4d..000000000 --- a/app/src/main/res/drawable/ic_cfg_e_lnk.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_faq.xml b/app/src/main/res/drawable/ic_faq.xml deleted file mode 100644 index b6d620eb5..000000000 --- a/app/src/main/res/drawable/ic_faq.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_read_record.xml b/app/src/main/res/layout/activity_read_record.xml new file mode 100644 index 000000000..382d390bf --- /dev/null +++ b/app/src/main/res/layout/activity_read_record.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_read_record.xml b/app/src/main/res/layout/item_read_record.xml new file mode 100644 index 000000000..b28197be6 --- /dev/null +++ b/app/src/main/res/layout/item_read_record.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index f9d881de9..2b3b4c2ef 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -746,4 +746,6 @@ 导入订阅源 您的支持是我更新的动力 公众号[开源阅读软件] + 阅读记录 + 阅读时间记录 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 6aaf6b82f..59e5fc685 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -746,5 +746,7 @@ 导入订阅源 您的支持是我更新的动力 公众号[开源阅读软件] + 阅读记录 + 阅读时间记录 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 27aa2a8f8..3e6402a56 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -746,4 +746,6 @@ 导入订阅源 您的支持是我更新的动力 公众号[开源阅读软件] + 阅读记录 + 阅读时间记录 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2b1b21058..585b95bd0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -747,5 +747,7 @@ 导入订阅源 您的支持是我更新的动力 公众号[开源阅读软件] + 阅读记录 + 阅读时间记录 \ No newline at end of file diff --git a/app/src/main/res/xml/pref_main.xml b/app/src/main/res/xml/pref_main.xml index 1cdd5127f..6bb378f56 100644 --- a/app/src/main/res/xml/pref_main.xml +++ b/app/src/main/res/xml/pref_main.xml @@ -76,6 +76,13 @@ app:iconSpaceReserved="false" app:layout="@layout/view_preference_category"> + +