Merge remote-tracking branch 'origin/master' into desirepath

# Conflicts:
#	app/src/main/res/values/strings.xml
pull/30/head
Invinciblelee 6 years ago
commit 2734464f5b
  1. 1
      app/.gitignore
  2. 5
      app/src/main/java/io/legado/app/data/AppDatabase.kt
  3. 48
      app/src/main/java/io/legado/app/data/entities/Book.kt
  4. 23
      app/src/main/java/io/legado/app/data/entities/Chapter.kt
  5. 23
      app/src/main/java/io/legado/app/data/entities/ReplaceRule.kt
  6. 5
      app/src/main/java/io/legado/app/data/entities/Rule.kt
  7. 2
      app/src/main/java/io/legado/app/data/entities/Source.kt
  8. 3
      app/src/main/java/io/legado/app/ui/main/MainActivity.kt
  9. 5
      app/src/main/java/io/legado/app/ui/main/MainModel.kt
  10. 9
      app/src/main/java/io/legado/app/ui/main/MainViewModel.kt

1
app/.gitignore vendored

@ -1 +1,2 @@
/build
/schemas

@ -8,9 +8,12 @@ import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase
import io.legado.app.data.dao.BookDao
import io.legado.app.data.entities.Book
import io.legado.app.data.entities.Chapter
import io.legado.app.data.entities.ReplaceRule
import javax.xml.transform.Source
@Database(entities = [Book::class], version = 1, exportSchema = true)
@Database(entities = [Book::class, Chapter::class, ReplaceRule::class, Source::class], version = 1, exportSchema = true)
// @TypeConverters(Converters::class)
abstract class AppDatabase : RoomDatabase() {

@ -1,33 +1,37 @@
package io.legado.app.data.entities
import android.annotation.SuppressLint
import android.os.Parcelable
import androidx.room.*
import kotlinx.android.parcel.Parcelize
@Parcelize
@Entity(tableName = "books",
indices = [(Index(value = ["url"]))])
@Entity(tableName = "books", indices = [(Index(value = ["descUrl"]))])
data class Book(@PrimaryKey
var url: String = "",
var name: String = "",
var tag: String = "",
var author: String? = null,
var coverUrl: String? = null,
var customCoverUrl: String? = null,
var introduction: String? = null,
var charset: String? = null,
var type: Int = 0, // 0: text, 1: audio
var group: Int = 0, // fenqu
var latestChapterName: String? = null,
var lastUpdateTime: Long? = null,
var latestChapterTime: Long? = null,
var durChapterIndex: Int = 0,
var durChapterPage: Int = 0,
var totalChapterNum: Int = 0,
var hasNewChapter: Boolean = false,
var allowUpdate: Boolean = true
) : Parcelable {
var descUrl: String = "", // 详情页Url(本地书源存储完整文件路径)
var sourceId: Int = -1, // 书源规则id(默认-1,表示本地书籍)
var name: String = "", // 书籍名称(允许用户修改,适用于本地书籍)
var author: String? = null, // 作者名称(允许用户修改,适用于本地书籍)
var tag: String? = null, // 分类信息(允许用户修改,适用于本地书籍)
var coverUrl: String? = null, // 封面Url
var customCoverUrl: String? = null, // 自定义封面Url
var description: String? = null, // 简介内容
var charset: String? = null, // 自定义字符集名称(仅适用于本地书籍)
var type: Int = 0, // 0: 文本读物, 1: 有声读物
var group: Int = 0, // 自定义分组索引号
var tocUrl: String = "", // 目录页Url (toc=table of Contents)
var latestChapterName: String? = null, // 最新章节
var lastCheckTime: Long? = null, // 最近一次更新书籍信息的时间
var latestChapterTime: Long? = null, // 最近一次发现新章节的时间
var lastUpdateChapters: Int = 0, // 最近一次发现新章节的数量
var durChapterName: String = "", // 当前阅读的章节名称
var durChapterIndex: Int = 0, // 当前阅读的章节分页索引
var durChapterPage: Int = 0, // 当前阅读的章节总分页数
var durChapterTime: Long = 0, // 最后一次阅读书籍的时间(打开正文的时间)
var totalChapterNum: Int = 0, // 书籍目录总数
var hasNewChapter: Boolean = false, // 是否在最后一次更新书籍信息时找到新章节
var allowUpdate: Boolean = true, // 是否允许阅读自动管理更新书籍信息
var variable: String? = null // 自定义书籍变量信息(用于书源规则检索书籍信息)
) : Parcelable {
fun getUnreadChapterNum() = Math.max(totalChapterNum - durChapterIndex - 1, 0)

@ -0,0 +1,23 @@
package io.legado.app.data.entities
import android.os.Parcelable
import androidx.room.Entity
import androidx.room.Index
import androidx.room.PrimaryKey
import kotlinx.android.parcel.Parcelize
@Parcelize
@Entity(tableName = "chapters",
indices = [(Index(value = ["url"]))])
data class Chapter(@PrimaryKey
var url: String = "",
var name: String = "",
var bookUrl: String = "",
var index: Int = 0,
var resourceUrl: String? = null,
var tag: String? = null,
var start: Long? = null,
var end: Long? = null
) : Parcelable

@ -0,0 +1,23 @@
package io.legado.app.data.entities
import android.os.Parcelable
import androidx.room.Entity
import androidx.room.Index
import androidx.room.PrimaryKey
import kotlinx.android.parcel.Parcelize
@Parcelize
@Entity(tableName = "replace_rules",
indices = [(Index(value = ["id"]))])
data class ReplaceRule(@PrimaryKey
val id: Int = 0,
val summary: String? = null,
val pattern: String? = null,
val replacement: String? = null,
val scope: String? = null,
val isEnabled: Boolean? = null,
val isRegex: Boolean? = null,
val order: Int = 0
) : Parcelable

@ -0,0 +1,5 @@
package io.legado.app.data.entities
class Rule {
}

@ -0,0 +1,2 @@
package io.legado.app.data.entities

@ -7,6 +7,7 @@ import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout
import androidx.lifecycle.ViewModelProviders
import com.google.android.material.navigation.NavigationView
import io.legado.app.R
import io.legado.app.utils.longSnackbar
@ -19,7 +20,6 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
fab.setOnClickListener { it.longSnackbar(R.string.app_name) }
@ -33,6 +33,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
toggle.syncState()
nav_view.setNavigationItemSelectedListener(this)
val mainViewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
}
override fun onBackPressed() {

@ -0,0 +1,5 @@
package io.legado.app.ui.main
class MainModel {
}

@ -0,0 +1,9 @@
package io.legado.app.ui.main
import android.app.Application
import androidx.lifecycle.AndroidViewModel
class MainViewModel(application: Application) : AndroidViewModel(application) {
}
Loading…
Cancel
Save