parent
c0be0dba20
commit
bc88696004
@ -0,0 +1,98 @@ |
|||||||
|
package io.legado.app.ui.config |
||||||
|
|
||||||
|
import android.os.Bundle |
||||||
|
import android.util.DisplayMetrics |
||||||
|
import android.view.LayoutInflater |
||||||
|
import android.view.View |
||||||
|
import android.view.ViewGroup |
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager |
||||||
|
import io.legado.app.R |
||||||
|
import io.legado.app.base.BaseDialogFragment |
||||||
|
import io.legado.app.base.adapter.ItemViewHolder |
||||||
|
import io.legado.app.base.adapter.SimpleRecyclerAdapter |
||||||
|
import io.legado.app.help.ThemeConfig |
||||||
|
import io.legado.app.lib.dialogs.alert |
||||||
|
import io.legado.app.lib.dialogs.noButton |
||||||
|
import io.legado.app.lib.dialogs.okButton |
||||||
|
import io.legado.app.lib.theme.primaryColor |
||||||
|
import io.legado.app.ui.widget.recycler.VerticalDivider |
||||||
|
import io.legado.app.utils.GSON |
||||||
|
import io.legado.app.utils.applyTint |
||||||
|
import kotlinx.android.synthetic.main.dialog_recycler_view.* |
||||||
|
import kotlinx.android.synthetic.main.item_theme_config.view.* |
||||||
|
import org.jetbrains.anko.sdk27.listeners.onClick |
||||||
|
import org.jetbrains.anko.share |
||||||
|
|
||||||
|
class ThemeListDialog : BaseDialogFragment() { |
||||||
|
|
||||||
|
private lateinit var adapter: Adapter |
||||||
|
|
||||||
|
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( |
||||||
|
inflater: LayoutInflater, |
||||||
|
container: ViewGroup?, |
||||||
|
savedInstanceState: Bundle? |
||||||
|
): View? { |
||||||
|
return inflater.inflate(R.layout.dialog_recycler_view, container) |
||||||
|
} |
||||||
|
|
||||||
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { |
||||||
|
tool_bar.setBackgroundColor(primaryColor) |
||||||
|
tool_bar.setTitle(R.string.theme_list) |
||||||
|
initView() |
||||||
|
initData() |
||||||
|
} |
||||||
|
|
||||||
|
private fun initView() { |
||||||
|
adapter = Adapter() |
||||||
|
recycler_view.layoutManager = LinearLayoutManager(requireContext()) |
||||||
|
recycler_view.addItemDecoration(VerticalDivider(requireContext())) |
||||||
|
recycler_view.adapter = adapter |
||||||
|
} |
||||||
|
|
||||||
|
fun initData() { |
||||||
|
adapter.setItems(ThemeConfig.configList) |
||||||
|
} |
||||||
|
|
||||||
|
fun delete(index: Int) { |
||||||
|
alert(R.string.delete, R.string.sure_del) { |
||||||
|
okButton { |
||||||
|
ThemeConfig.configList.removeAt(index) |
||||||
|
initData() |
||||||
|
} |
||||||
|
noButton() |
||||||
|
}.show().applyTint() |
||||||
|
} |
||||||
|
|
||||||
|
fun share(index: Int) { |
||||||
|
val json = GSON.toJson(ThemeConfig.configList[index]) |
||||||
|
requireContext().share(json, "主题分享") |
||||||
|
} |
||||||
|
|
||||||
|
inner class Adapter : SimpleRecyclerAdapter<ThemeConfig.Config>(requireContext(), R.layout.item_theme_config) { |
||||||
|
|
||||||
|
override fun convert(holder: ItemViewHolder, item: ThemeConfig.Config, payloads: MutableList<Any>) { |
||||||
|
holder.itemView.apply { |
||||||
|
tv_name.text = item.themeName |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
override fun registerListener(holder: ItemViewHolder) { |
||||||
|
holder.itemView.apply { |
||||||
|
iv_share.onClick { |
||||||
|
share(holder.layoutPosition) |
||||||
|
} |
||||||
|
iv_delete.onClick { |
||||||
|
delete(holder.layoutPosition) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
xmlns:tools="http://schemas.android.com/tools" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:padding="8dp" |
||||||
|
android:gravity="center_vertical" |
||||||
|
android:orientation="horizontal"> |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:id="@+id/tv_name" |
||||||
|
android:layout_width="0dp" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:maxLines="1" /> |
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView |
||||||
|
android:id="@+id/iv_share" |
||||||
|
android:layout_width="36dp" |
||||||
|
android:layout_height="36dp" |
||||||
|
android:layout_gravity="center" |
||||||
|
android:background="?android:attr/selectableItemBackgroundBorderless" |
||||||
|
android:contentDescription="@string/edit" |
||||||
|
android:padding="6dp" |
||||||
|
android:tooltipText="@string/edit" |
||||||
|
android:src="@drawable/ic_share" |
||||||
|
android:tint="@color/primaryText" |
||||||
|
tools:ignore="UnusedAttribute" /> |
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView |
||||||
|
android:id="@+id/iv_delete" |
||||||
|
android:layout_width="36dp" |
||||||
|
android:layout_height="36dp" |
||||||
|
android:background="?attr/selectableItemBackgroundBorderless" |
||||||
|
android:contentDescription="@string/more_menu" |
||||||
|
android:tooltipText="@string/more_menu" |
||||||
|
android:padding="6dp" |
||||||
|
android:src="@drawable/ic_clear_all" |
||||||
|
android:tint="@color/primaryText" |
||||||
|
tools:ignore="UnusedAttribute" /> |
||||||
|
|
||||||
|
</LinearLayout> |
Loading…
Reference in new issue