Skip to content

Commit 9366244

Browse files
committed
优化
1 parent 0044250 commit 9366244

File tree

9 files changed

+59
-80
lines changed

9 files changed

+59
-80
lines changed

app/src/main/java/io/legado/app/constant/AppConst.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,6 @@ object AppConst {
3838
SimpleDateFormat("yy-MM-dd-HH-mm-ss")
3939
}
4040

41-
const val rootGroupId = -100L
42-
const val bookGroupAllId = -1L
43-
const val bookGroupLocalId = -2L
44-
const val bookGroupAudioId = -3L
45-
const val bookGroupNetNoneId = -4L
46-
const val bookGroupLocalNoneId = -5L
47-
const val bookGroupErrorId = -11L
48-
4941
const val imagePathKey = "imagePath"
5042

5143
val menuViewNames = arrayOf(

app/src/main/java/io/legado/app/data/AppDatabase.kt

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.room.Database
77
import androidx.room.Room
88
import androidx.room.RoomDatabase
99
import androidx.sqlite.db.SupportSQLiteDatabase
10-
import io.legado.app.constant.AppConst
1110
import io.legado.app.data.dao.*
1211
import io.legado.app.data.entities.*
1312
import io.legado.app.help.DefaultData
@@ -99,43 +98,43 @@ abstract class AppDatabase : RoomDatabase() {
9998
@Language("sql")
10099
val insertBookGroupAllSql = """
101100
insert into book_groups(groupId, groupName, 'order', show)
102-
select ${AppConst.bookGroupAllId}, '全部', -10, 1
103-
where not exists (select * from book_groups where groupId = ${AppConst.bookGroupAllId})
101+
select ${BookGroup.IdAll}, '全部', -10, 1
102+
where not exists (select * from book_groups where groupId = ${BookGroup.IdAll})
104103
""".trimIndent()
105104
db.execSQL(insertBookGroupAllSql)
106105
@Language("sql")
107106
val insertBookGroupLocalSql = """
108107
insert into book_groups(groupId, groupName, 'order', enableRefresh, show)
109-
select ${AppConst.bookGroupLocalId}, '本地', -9, 0, 1
110-
where not exists (select * from book_groups where groupId = ${AppConst.bookGroupLocalId})
108+
select ${BookGroup.IdLocal}, '本地', -9, 0, 1
109+
where not exists (select * from book_groups where groupId = ${BookGroup.IdLocal})
111110
""".trimIndent()
112111
db.execSQL(insertBookGroupLocalSql)
113112
@Language("sql")
114113
val insertBookGroupMusicSql = """
115114
insert into book_groups(groupId, groupName, 'order', show)
116-
select ${AppConst.bookGroupAudioId}, '音频', -8, 1
117-
where not exists (select * from book_groups where groupId = ${AppConst.bookGroupAudioId})
115+
select ${BookGroup.IdAudio}, '音频', -8, 1
116+
where not exists (select * from book_groups where groupId = ${BookGroup.IdAudio})
118117
""".trimIndent()
119118
db.execSQL(insertBookGroupMusicSql)
120119
@Language("sql")
121120
val insertBookGroupNetNoneGroupSql = """
122121
insert into book_groups(groupId, groupName, 'order', show)
123-
select ${AppConst.bookGroupNetNoneId}, '网络未分组', -7, 1
124-
where not exists (select * from book_groups where groupId = ${AppConst.bookGroupNetNoneId})
122+
select ${BookGroup.IdNetNone}, '网络未分组', -7, 1
123+
where not exists (select * from book_groups where groupId = ${BookGroup.IdNetNone})
125124
""".trimIndent()
126125
db.execSQL(insertBookGroupNetNoneGroupSql)
127126
@Language("sql")
128127
val insertBookGroupLocalNoneGroupSql = """
129128
insert into book_groups(groupId, groupName, 'order', show)
130-
select ${AppConst.bookGroupLocalNoneId}, '本地未分组', -6, 0
131-
where not exists (select * from book_groups where groupId = ${AppConst.bookGroupLocalNoneId})
129+
select ${BookGroup.IdLocalNone}, '本地未分组', -6, 0
130+
where not exists (select * from book_groups where groupId = ${BookGroup.IdLocalNone})
132131
""".trimIndent()
133132
db.execSQL(insertBookGroupLocalNoneGroupSql)
134133
@Language("sql")
135134
val insertBookGroupErrorSql = """
136135
insert into book_groups(groupId, groupName, 'order', show)
137-
select ${AppConst.bookGroupErrorId}, '更新失败', -1, 1
138-
where not exists (select * from book_groups where groupId = ${AppConst.bookGroupErrorId})
136+
select ${BookGroup.IdError}, '更新失败', -1, 1
137+
where not exists (select * from book_groups where groupId = ${BookGroup.IdError})
139138
""".trimIndent()
140139
db.execSQL(insertBookGroupErrorSql)
141140
@Language("sql")

app/src/main/java/io/legado/app/data/dao/BookDao.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package io.legado.app.data.dao
22

33
import androidx.room.*
4-
import io.legado.app.constant.AppConst
54
import io.legado.app.constant.BookType
65
import io.legado.app.data.entities.Book
6+
import io.legado.app.data.entities.BookGroup
77
import kotlinx.coroutines.flow.Flow
88

99
@Dao
@@ -14,7 +14,7 @@ interface BookDao {
1414
select * from books where type & ${BookType.text} > 0
1515
and type & ${BookType.local} = 0
1616
and ((SELECT sum(groupId) FROM book_groups where groupId > 0) & `group`) = 0
17-
and (select show from book_groups where groupId = ${AppConst.bookGroupNetNoneId}) != 1
17+
and (select show from book_groups where groupId = ${BookGroup.IdNetNone}) != 1
1818
"""
1919
)
2020
fun flowRoot(): Flow<List<Book>>

app/src/main/java/io/legado/app/data/entities/BookGroup.kt

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ import androidx.room.ColumnInfo
66
import androidx.room.Entity
77
import androidx.room.PrimaryKey
88
import io.legado.app.R
9-
import io.legado.app.constant.AppConst
9+
import io.legado.app.data.appDb
1010
import io.legado.app.help.config.AppConfig
11+
import kotlinx.coroutines.flow.Flow
1112
import kotlinx.parcelize.Parcelize
1213

1314
@Parcelize
@@ -26,14 +27,38 @@ data class BookGroup(
2627
var bookSort: Int = -1
2728
) : Parcelable {
2829

30+
companion object {
31+
const val IdRoot = -100L
32+
const val IdAll = -1L
33+
const val IdLocal = -2L
34+
const val IdAudio = -3L
35+
const val IdNetNone = -4L
36+
const val IdLocalNone = -5L
37+
const val IdError = -11L
38+
39+
fun flowBook(groupId: Long): Flow<List<Book>> {
40+
return when (groupId) {
41+
IdRoot -> appDb.bookDao.flowRoot()
42+
IdAll -> appDb.bookDao.flowAll()
43+
IdLocal -> appDb.bookDao.flowLocal()
44+
IdAudio -> appDb.bookDao.flowAudio()
45+
IdNetNone -> appDb.bookDao.flowNetNoGroup()
46+
IdLocalNone -> appDb.bookDao.flowLocalNoGroup()
47+
IdError -> appDb.bookDao.flowUpdateError()
48+
else -> appDb.bookDao.flowByGroup(groupId)
49+
}
50+
}
51+
52+
}
53+
2954
fun getManageName(context: Context): String {
3055
return when (groupId) {
31-
AppConst.bookGroupAllId -> "$groupName(${context.getString(R.string.all)})"
32-
AppConst.bookGroupAudioId -> "$groupName(${context.getString(R.string.audio)})"
33-
AppConst.bookGroupLocalId -> "$groupName(${context.getString(R.string.local)})"
34-
AppConst.bookGroupNetNoneId -> "$groupName(${context.getString(R.string.net_no_group)})"
35-
AppConst.bookGroupLocalNoneId -> "$groupName(${context.getString(R.string.local_no_group)})"
36-
AppConst.bookGroupErrorId -> "$groupName(${context.getString(R.string.update_book_fail)})"
56+
IdAll -> "$groupName(${context.getString(R.string.all)})"
57+
IdAudio -> "$groupName(${context.getString(R.string.audio)})"
58+
IdLocal -> "$groupName(${context.getString(R.string.local)})"
59+
IdNetNone -> "$groupName(${context.getString(R.string.net_no_group)})"
60+
IdLocalNone -> "$groupName(${context.getString(R.string.local_no_group)})"
61+
IdError -> "$groupName(${context.getString(R.string.update_book_fail)})"
3762
else -> groupName
3863
}
3964
}

app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager
1111
import com.google.android.material.textfield.TextInputLayout
1212
import io.legado.app.R
1313
import io.legado.app.base.VMBaseActivity
14-
import io.legado.app.constant.AppConst
1514
import io.legado.app.constant.AppConst.charsets
1615
import io.legado.app.constant.AppLog
1716
import io.legado.app.constant.EventBus
@@ -187,14 +186,7 @@ class CacheActivity : VMBaseActivity<ActivityCacheBookBinding, CacheViewModel>()
187186
private fun initBookData() {
188187
booksFlowJob?.cancel()
189188
booksFlowJob = launch {
190-
when (groupId) {
191-
AppConst.bookGroupAllId -> appDb.bookDao.flowAll()
192-
AppConst.bookGroupLocalId -> appDb.bookDao.flowLocal()
193-
AppConst.bookGroupAudioId -> appDb.bookDao.flowAudio()
194-
AppConst.bookGroupNetNoneId -> appDb.bookDao.flowNetNoGroup()
195-
AppConst.bookGroupLocalNoneId -> appDb.bookDao.flowLocalNoGroup()
196-
else -> appDb.bookDao.flowByGroup(groupId)
197-
}.conflate().map { books ->
189+
BookGroup.flowBook(groupId).conflate().map { books ->
198190
val booksDownload = books.filter {
199191
!it.isAudio
200192
}

app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageActivity.kt

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import androidx.recyclerview.widget.ItemTouchHelper
1515
import androidx.recyclerview.widget.LinearLayoutManager
1616
import io.legado.app.R
1717
import io.legado.app.base.VMBaseActivity
18-
import io.legado.app.constant.AppConst
1918
import io.legado.app.data.appDb
2019
import io.legado.app.data.entities.Book
2120
import io.legado.app.data.entities.BookGroup
@@ -199,16 +198,7 @@ class BookshelfManageActivity :
199198
booksFlowJob?.cancel()
200199
booksFlowJob = launch {
201200
val bookSort = AppConfig.getBookSortByGroupId(viewModel.groupId)
202-
when (viewModel.groupId) {
203-
AppConst.rootGroupId -> appDb.bookDao.flowNetNoGroup()
204-
AppConst.bookGroupAllId -> appDb.bookDao.flowAll()
205-
AppConst.bookGroupLocalId -> appDb.bookDao.flowLocal()
206-
AppConst.bookGroupAudioId -> appDb.bookDao.flowAudio()
207-
AppConst.bookGroupNetNoneId -> appDb.bookDao.flowNetNoGroup()
208-
AppConst.bookGroupLocalNoneId -> appDb.bookDao.flowLocalNoGroup()
209-
AppConst.bookGroupErrorId -> appDb.bookDao.flowUpdateError()
210-
else -> appDb.bookDao.flowByGroup(viewModel.groupId)
211-
}.conflate().map { list ->
201+
BookGroup.flowBook(viewModel.groupId).conflate().map { list ->
212202
when (bookSort) {
213203
1 -> list.sortedByDescending {
214204
it.latestChapterTime

app/src/main/java/io/legado/app/ui/main/bookshelf/style1/BookshelfFragment1.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import androidx.fragment.app.FragmentManager
1111
import androidx.fragment.app.FragmentStatePagerAdapter
1212
import com.google.android.material.tabs.TabLayout
1313
import io.legado.app.R
14-
import io.legado.app.constant.AppConst
1514
import io.legado.app.constant.PreferKey
1615
import io.legado.app.data.appDb
1716
import io.legado.app.data.entities.Book
@@ -86,7 +85,7 @@ class BookshelfFragment1() : BaseBookshelfFragment(R.layout.fragment_bookshelf1)
8685
@Synchronized
8786
override fun upGroup(data: List<BookGroup>) {
8887
if (data.isEmpty()) {
89-
appDb.bookGroupDao.enableGroup(AppConst.bookGroupAllId)
88+
appDb.bookGroupDao.enableGroup(BookGroup.IdAll)
9089
} else {
9190
if (data != bookGroups) {
9291
bookGroups.clear()

app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@ import androidx.recyclerview.widget.LinearLayoutManager
1010
import androidx.recyclerview.widget.RecyclerView
1111
import io.legado.app.R
1212
import io.legado.app.base.BaseFragment
13-
import io.legado.app.constant.AppConst
1413
import io.legado.app.constant.AppLog
1514
import io.legado.app.constant.EventBus
1615
import io.legado.app.constant.PreferKey
17-
import io.legado.app.data.appDb
1816
import io.legado.app.data.entities.Book
1917
import io.legado.app.data.entities.BookGroup
2018
import io.legado.app.databinding.FragmentBooksBinding
@@ -135,16 +133,8 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
135133
private fun upRecyclerData() {
136134
booksFlowJob?.cancel()
137135
booksFlowJob = launch {
138-
when (groupId) {
139-
AppConst.bookGroupAllId -> appDb.bookDao.flowAll()
140-
AppConst.bookGroupLocalId -> appDb.bookDao.flowLocal()
141-
AppConst.bookGroupAudioId -> appDb.bookDao.flowAudio()
142-
AppConst.bookGroupNetNoneId -> appDb.bookDao.flowNetNoGroup()
143-
AppConst.bookGroupLocalNoneId -> appDb.bookDao.flowLocalNoGroup()
144-
AppConst.bookGroupErrorId -> appDb.bookDao.flowUpdateError()
145-
else -> appDb.bookDao.flowByGroup(groupId)
146-
// 书籍排序
147-
}.conflate().map { list ->
136+
BookGroup.flowBook(groupId).conflate().map { list ->
137+
//排序
148138
when (bookSort) {
149139
1 -> list.sortedByDescending { it.latestChapterTime }
150140
2 -> list.sortedWith { o1, o2 ->

app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ import androidx.recyclerview.widget.GridLayoutManager
99
import androidx.recyclerview.widget.LinearLayoutManager
1010
import androidx.recyclerview.widget.RecyclerView
1111
import io.legado.app.R
12-
import io.legado.app.constant.AppConst
1312
import io.legado.app.constant.AppLog
1413
import io.legado.app.constant.EventBus
1514
import io.legado.app.constant.PreferKey
16-
import io.legado.app.data.appDb
1715
import io.legado.app.data.entities.Book
1816
import io.legado.app.data.entities.BookGroup
1917
import io.legado.app.databinding.FragmentBookshelf2Binding
@@ -65,7 +63,7 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
6563
}
6664
private var bookGroups: List<BookGroup> = emptyList()
6765
private var booksFlowJob: Job? = null
68-
override var groupId = AppConst.rootGroupId
66+
override var groupId = BookGroup.IdRoot
6967
override var books: List<Book> = emptyList()
7068

7169
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
@@ -135,23 +133,17 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
135133
}
136134
booksFlowJob?.cancel()
137135
booksFlowJob = launch {
138-
when (groupId) {
139-
AppConst.rootGroupId -> appDb.bookDao.flowRoot()
140-
AppConst.bookGroupAllId -> appDb.bookDao.flowAll()
141-
AppConst.bookGroupLocalId -> appDb.bookDao.flowLocal()
142-
AppConst.bookGroupAudioId -> appDb.bookDao.flowAudio()
143-
AppConst.bookGroupNetNoneId -> appDb.bookDao.flowNetNoGroup()
144-
AppConst.bookGroupLocalNoneId -> appDb.bookDao.flowLocalNoGroup()
145-
AppConst.bookGroupErrorId -> appDb.bookDao.flowUpdateError()
146-
else -> appDb.bookDao.flowByGroup(groupId)
147-
}.conflate().map { list ->
136+
BookGroup.flowBook(groupId).conflate().map { list ->
137+
//排序
148138
when (AppConfig.getBookSortByGroupId(groupId)) {
149139
1 -> list.sortedByDescending {
150140
it.latestChapterTime
151141
}
142+
152143
2 -> list.sortedWith { o1, o2 ->
153144
o1.name.cnCompare(o2.name)
154145
}
146+
155147
3 -> list.sortedBy {
156148
it.order
157149
}
@@ -229,15 +221,15 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
229221
}
230222

231223
override fun getItemCount(): Int {
232-
return if (groupId == AppConst.rootGroupId) {
224+
return if (groupId == BookGroup.IdRoot) {
233225
bookGroups.size + books.size
234226
} else {
235227
books.size
236228
}
237229
}
238230

239231
override fun getItemType(position: Int): Int {
240-
if (groupId != AppConst.rootGroupId) {
232+
if (groupId != BookGroup.IdRoot) {
241233
return 0
242234
}
243235
if (position < bookGroups.size) {
@@ -247,7 +239,7 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2)
247239
}
248240

249241
override fun getItem(position: Int): Any? {
250-
if (groupId != AppConst.rootGroupId) {
242+
if (groupId != BookGroup.IdRoot) {
251243
return books.getOrNull(position)
252244
}
253245
if (position < bookGroups.size) {

0 commit comments

Comments
 (0)