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

@ -1,13 +1,19 @@
package io.legado.app.ui.sourceedit package io.legado.app.ui.sourceedit
import android.os.Bundle import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.legado.app.App
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.BaseActivity import io.legado.app.base.BaseActivity
import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.BookSource
import io.legado.app.utils.getViewModel import io.legado.app.utils.getViewModel
import kotlinx.android.synthetic.main.activity_source_edit.* 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>() { class SourceEditActivity : BaseActivity<SourceEditViewModel>() {
override val viewModel: SourceEditViewModel override val viewModel: SourceEditViewModel
@ -16,7 +22,7 @@ class SourceEditActivity : BaseActivity<SourceEditViewModel>() {
get() = R.layout.activity_source_edit get() = R.layout.activity_source_edit
private val adapter = SourceEditAdapter() private val adapter = SourceEditAdapter()
private val sourceEditEntities:ArrayList<SourceEditEntity> = ArrayList() private val sourceEditEntities: ArrayList<SourceEditEntity> = ArrayList()
override fun onViewModelCreated(viewModel: SourceEditViewModel, savedInstanceState: Bundle?) { override fun onViewModelCreated(viewModel: SourceEditViewModel, savedInstanceState: Bundle?) {
initRecyclerView() 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() { private fun initRecyclerView() {
recycler_view.layoutManager = LinearLayoutManager(this) recycler_view.layoutManager = LinearLayoutManager(this)
recycler_view.adapter = adapter recycler_view.adapter = adapter
@ -49,5 +77,29 @@ class SourceEditActivity : BaseActivity<SourceEditViewModel>() {
adapter.notifyDataSetChanged() 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.App
import io.legado.app.data.dao.BookSourceDao import io.legado.app.data.dao.BookSourceDao
import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.BookSource
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
class SourceEditViewModel(application: Application) : AndroidViewModel(application) { class SourceEditViewModel(application: Application) : AndroidViewModel(application) {
val sourceLiveData:MutableLiveData<BookSource> = MutableLiveData() val sourceLiveData:MutableLiveData<BookSource> = MutableLiveData()
fun setBookSource(key: String) { 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