pull/32/head
kunfei 5 years ago
parent 8e352f26b3
commit 1d35000725
  1. 5
      app/src/main/java/io/legado/app/ui/booksource/BookSourceActivity.kt
  2. 8
      app/src/main/java/io/legado/app/ui/booksource/BookSourceViewModel.kt
  3. 62
      app/src/main/java/io/legado/app/ui/booksource/GroupManageDialog.kt
  4. 8
      app/src/main/res/layout/item_group_manage.xml
  5. 1
      app/src/main/res/values/strings.xml

@ -81,7 +81,10 @@ class BookSourceActivity : VMBaseActivity<BookSourceViewModel>(R.layout.activity
} }
} }
} }
R.id.menu_group_manage -> GroupManageDialog().show(
supportFragmentManager,
"groupManage"
)
} }
if (item.groupId == R.id.source_group) { if (item.groupId == R.id.source_group) {
search_view.setQuery(item.title, true) search_view.setQuery(item.title, true)

@ -23,4 +23,12 @@ class BookSourceViewModel(application: Application) : BaseViewModel(application)
fun update(vararg bookSource: BookSource) { fun update(vararg bookSource: BookSource) {
execute { App.db.bookSourceDao().update(*bookSource) } execute { App.db.bookSourceDao().update(*bookSource) }
} }
fun upGroup(oldGroup: String, newGroup: String?) {
}
fun delGroup(group: String) {
}
} }

@ -1,24 +1,48 @@
package io.legado.app.ui.booksource package io.legado.app.ui.booksource
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.util.DisplayMetrics
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.EditText
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import io.legado.app.App import io.legado.app.App
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.SimpleRecyclerAdapter import io.legado.app.base.adapter.SimpleRecyclerAdapter
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.dialogs.customView
import io.legado.app.lib.dialogs.noButton
import io.legado.app.lib.dialogs.yesButton
import io.legado.app.lib.theme.ATH
import io.legado.app.utils.applyTint
import io.legado.app.utils.getViewModelOfActivity
import io.legado.app.utils.requestInputMethod
import io.legado.app.utils.splitNotBlank import io.legado.app.utils.splitNotBlank
import kotlinx.android.synthetic.main.dialog_edittext.view.*
import kotlinx.android.synthetic.main.dialog_recycler_view.* import kotlinx.android.synthetic.main.dialog_recycler_view.*
import kotlinx.android.synthetic.main.item_book_group.view.tv_group
import kotlinx.android.synthetic.main.item_group_manage.view.*
import org.jetbrains.anko.sdk27.listeners.onClick
class GroupManageDialog : DialogFragment() { class GroupManageDialog : DialogFragment() {
private val viewModel = getViewModelOfActivity(BookSourceViewModel::class.java)
private lateinit var adapter: GroupAdapter private lateinit var adapter: GroupAdapter
override fun onStart() {
super.onStart()
val dm = DisplayMetrics()
activity?.windowManager?.defaultDisplay?.getMetrics(dm)
dialog?.window?.setLayout((dm.widthPixels * 0.9).toInt(), (dm.heightPixels * 0.9).toInt())
}
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
@ -34,8 +58,11 @@ class GroupManageDialog : DialogFragment() {
private fun initData() { private fun initData() {
tool_bar.title = getString(R.string.group_manage) tool_bar.title = getString(R.string.group_manage)
adapter = GroupAdapter(requireContext()) adapter = GroupAdapter(requireContext(), this)
recycler_view.layoutManager = LinearLayoutManager(requireContext()) recycler_view.layoutManager = LinearLayoutManager(requireContext())
recycler_view.addItemDecoration(
DividerItemDecoration(requireContext(), RecyclerView.VERTICAL)
)
recycler_view.adapter = adapter recycler_view.adapter = adapter
App.db.bookSourceDao().observeGroup().observe(viewLifecycleOwner, Observer { App.db.bookSourceDao().observeGroup().observe(viewLifecycleOwner, Observer {
val groups = linkedSetOf<String>() val groups = linkedSetOf<String>()
@ -46,13 +73,38 @@ class GroupManageDialog : DialogFragment() {
}) })
} }
@SuppressLint("InflateParams")
private fun editGroup(group: String) {
alert(title = getString(R.string.group_edit)) {
var editText: EditText? = null
customView {
layoutInflater.inflate(R.layout.dialog_edittext, null).apply {
editText = edit_view.apply {
ATH.applyAccentTint(this)
hint = "分组名称"
}
}
}
yesButton {
viewModel.upGroup(group, editText?.text?.toString())
}
noButton()
class GroupAdapter(context: Context) : }.show().applyTint().requestInputMethod()
}
class GroupAdapter(context: Context, val dialog: GroupManageDialog) :
SimpleRecyclerAdapter<String>(context, R.layout.item_group_manage) { SimpleRecyclerAdapter<String>(context, R.layout.item_group_manage) {
override fun convert(holder: ItemViewHolder, item: String, payloads: MutableList<Any>) { override fun convert(holder: ItemViewHolder, item: String, payloads: MutableList<Any>) {
with(holder.itemView) {
tv_group.text = item
tv_edit.onClick { dialog.editGroup(item) }
tv_del.onClick { dialog.viewModel.delGroup(item) }
}
} }
} }
} }

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:padding="16dp" android:padding="8dp"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
android:id="@+id/group" android:id="@+id/tv_group"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" /> android:layout_weight="1" />
@ -15,6 +15,7 @@
android:id="@+id/tv_edit" android:id="@+id/tv_edit"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="8dp" android:padding="8dp"
android:text="@string/edit" /> android:text="@string/edit" />
@ -22,6 +23,7 @@
android:id="@+id/tv_del" android:id="@+id/tv_del"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="8dp" android:padding="8dp"
android:text="@string/delete" /> android:text="@string/delete" />

@ -491,5 +491,6 @@
<string name="text_color">文字颜色</string> <string name="text_color">文字颜色</string>
<string name="select_image">选择图片</string> <string name="select_image">选择图片</string>
<string name="group_manage">分组管理</string> <string name="group_manage">分组管理</string>
<string name="group_edit">编辑分组</string>
</resources> </resources>

Loading…
Cancel
Save