pull/32/head
gedoor 6 years ago
parent e35797030f
commit ed505d9eda
  1. 4
      app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt
  2. 56
      app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt
  3. 7
      app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt
  4. 51
      app/src/main/res/menu/source_edit.xml

@ -2,6 +2,8 @@ package io.legado.app.data.dao
import androidx.paging.DataSource
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import io.legado.app.data.entities.BookSource
@ -14,4 +16,6 @@ interface BookSourceDao {
@Query("select * from book_sources where origin = :key")
fun findByKey(key:String): BookSource?
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(bookSource: BookSource): Long
}

@ -1,13 +1,19 @@
package io.legado.app.ui.sourceedit
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import androidx.lifecycle.Observer
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.data.entities.BookSource
import io.legado.app.utils.getViewModel
import kotlinx.android.synthetic.main.activity_source_edit.*
import kotlinx.coroutines.*
import org.jetbrains.anko.UI
import org.jetbrains.anko.toast
class SourceEditActivity : BaseActivity<SourceEditViewModel>() {
override val viewModel: SourceEditViewModel
@ -16,7 +22,7 @@ class SourceEditActivity : BaseActivity<SourceEditViewModel>() {
get() = R.layout.activity_source_edit
private val adapter = SourceEditAdapter()
private val sourceEditEntities:ArrayList<SourceEditEntity> = ArrayList()
private val sourceEditEntities: ArrayList<SourceEditEntity> = ArrayList()
override fun onViewModelCreated(viewModel: SourceEditViewModel, savedInstanceState: Bundle?) {
initRecyclerView()
@ -35,6 +41,28 @@ class SourceEditActivity : BaseActivity<SourceEditViewModel>() {
}
}
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.source_edit, menu)
return super.onCompatCreateOptionsMenu(menu)
}
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.action_save -> {
val bookSource = getSource()
if (bookSource == null) {
toast("书源名称和URL不能为空")
} else {
GlobalScope.launch {
App.db.bookSourceDao().insert(bookSource)
GlobalScope.launch(Dispatchers.Main) { finish() }
}
}
}
}
return super.onCompatOptionsItemSelected(item)
}
private fun initRecyclerView() {
recycler_view.layoutManager = LinearLayoutManager(this)
recycler_view.adapter = adapter
@ -49,5 +77,29 @@ class SourceEditActivity : BaseActivity<SourceEditViewModel>() {
adapter.notifyDataSetChanged()
}
class SourceEditEntity(var key: String, var value:String?, var hint:Int)
private fun getSource(): BookSource? {
val bookSource = BookSource()
for (entity in adapter.sourceEditEntities) {
when (entity.key) {
"origin" -> {
if (entity.value == null) {
return null
} else {
bookSource.origin = entity.value!!
}
}
"name" -> {
if (entity.value == null) {
return null
} else {
bookSource.name = entity.value!!
}
}
"group" -> bookSource.group = entity.value
}
}
return bookSource
}
class SourceEditEntity(var key: String, var value: String?, var hint: Int)
}

@ -6,13 +6,18 @@ import androidx.lifecycle.MutableLiveData
import io.legado.app.App
import io.legado.app.data.dao.BookSourceDao
import io.legado.app.data.entities.BookSource
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
class SourceEditViewModel(application: Application) : AndroidViewModel(application) {
val sourceLiveData:MutableLiveData<BookSource> = MutableLiveData()
fun setBookSource(key: String) {
sourceLiveData.value = App.db.bookSourceDao().findByKey(key)
GlobalScope.launch {
val source = App.db.bookSourceDao().findByKey(key)
sourceLiveData.postValue(source)
}
}

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_save"
android:icon="@drawable/ic_save"
android:title="@string/action_save"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_login"
android:title="@string/login"
app:showAsAction="never" />
<item
android:id="@+id/action_copy_source"
android:title="@string/copy_source"
app:showAsAction="never" />
<item
android:id="@+id/action_paste_source"
android:title="@string/paste_source"
app:showAsAction="never" />
<item
android:id="@+id/action_qr_code_camera"
android:title="@string/import_by_qr_code"
app:showAsAction="never" />
<item
android:id="@+id/action_share_it"
android:title="@string/qr_share"
app:showAsAction="never" />
<item
android:id="@+id/action_share_wifi"
android:title="@string/wifi_share"
app:showAsAction="never" />
<item
android:id="@+id/action_debug_source"
android:title="@string/debug_source"
app:showAsAction="never" />
<item
android:id="@+id/action_rule_summary"
android:title="@string/rule_summary"
app:showAsAction="never" />
</menu>
Loading…
Cancel
Save