From fd30e24022f992512e7b86cbdf3c5f6122b8aa8f Mon Sep 17 00:00:00 2001 From: kunfei Date: Fri, 17 Feb 2023 22:49:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rss/source/edit/RssSourceEditActivity.kt | 22 ++++- .../rss/source/edit/RssSourceEditAdapter.kt | 57 +++++++++--- .../legado/app/ui/widget/text/EditEntity.kt | 20 +++- .../res/layout/activity_book_source_edit.xml | 3 +- .../res/layout/activity_rss_source_edit.xml | 93 +++++++------------ app/src/main/res/layout/item_check_box.xml | 4 +- app/src/main/res/layout/item_source_edit.xml | 4 +- .../res/layout/item_source_edit_check_box.xml | 20 ++++ 8 files changed, 140 insertions(+), 83 deletions(-) create mode 100644 app/src/main/res/layout/item_source_edit_check_box.xml diff --git a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt index 4a7187d3d..0d185cb79 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt @@ -195,8 +195,6 @@ class RssSourceEditActivity : binding.cbIsEnable.isChecked = rs.enabled binding.cbSingleUrl.isChecked = rs.singleUrl binding.cbIsEnableCookie.isChecked = rs.enabledCookieJar == true - binding.cbEnableJs.isChecked = rs.enableJs - binding.cbEnableBaseUrl.isChecked = rs.loadWithBaseUrl } sourceEntities.clear() sourceEntities.apply { @@ -226,6 +224,22 @@ class RssSourceEditActivity : } webViewEntities.clear() webViewEntities.apply { + add( + EditEntity( + "enableJs", + rs?.enableJs.toString(), + R.string.enable_js, + EditEntity.ViewType.checkBox + ) + ) + add( + EditEntity( + "loadWithBaseUrl", + rs?.loadWithBaseUrl.toString(), + R.string.load_with_base_url, + EditEntity.ViewType.checkBox + ) + ) add(EditEntity("ruleContent", rs?.ruleContent, R.string.r_content)) add(EditEntity("style", rs?.style, R.string.r_style)) add(EditEntity("injectJs", rs?.injectJs, R.string.r_inject_js)) @@ -241,8 +255,6 @@ class RssSourceEditActivity : source.enabled = binding.cbIsEnable.isChecked source.singleUrl = binding.cbSingleUrl.isChecked source.enabledCookieJar = binding.cbIsEnableCookie.isChecked - source.enableJs = binding.cbEnableJs.isChecked - source.loadWithBaseUrl = binding.cbEnableBaseUrl.isChecked sourceEntities.forEach { when (it.key) { "sourceName" -> source.sourceName = it.value ?: "" @@ -279,6 +291,8 @@ class RssSourceEditActivity : } webViewEntities.forEach { when (it.key) { + "enableJs" -> source.enableJs = it.value.isTrue() + "loadWithBaseUrl" -> source.loadWithBaseUrl = it.value.isTrue() "ruleContent" -> source.ruleContent = viewModel.ruleComplete(it.value, source.ruleArticles) "style" -> source.style = it.value diff --git a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditAdapter.kt b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditAdapter.kt index bbe85687f..3192fa65e 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditAdapter.kt @@ -9,13 +9,15 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import io.legado.app.R import io.legado.app.databinding.ItemSourceEditBinding +import io.legado.app.databinding.ItemSourceEditCheckBoxBinding import io.legado.app.help.config.AppConfig import io.legado.app.ui.widget.code.addJsPattern import io.legado.app.ui.widget.code.addJsonPattern import io.legado.app.ui.widget.code.addLegadoPattern import io.legado.app.ui.widget.text.EditEntity +import io.legado.app.utils.isTrue -class RssSourceEditAdapter : RecyclerView.Adapter() { +class RssSourceEditAdapter : RecyclerView.Adapter() { val editEntityMaxLine = AppConfig.sourceEditMaxLine @@ -26,24 +28,41 @@ class RssSourceEditAdapter : RecyclerView.Adapter { + val binding = ItemSourceEditCheckBoxBinding + .inflate(LayoutInflater.from(parent.context), parent, false) + CheckBoxViewHolder(binding) + } + else -> { + val binding = ItemSourceEditBinding + .inflate(LayoutInflater.from(parent.context), parent, false) + binding.editText.addLegadoPattern() + binding.editText.addJsonPattern() + binding.editText.addJsPattern() + EditTextViewHolder(binding) + } + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + when (holder) { + is CheckBoxViewHolder -> holder.bind(editEntities[position]) + is EditTextViewHolder -> holder.bind(editEntities[position]) + } } override fun getItemCount(): Int { return editEntities.size } - inner class MyViewHolder(val binding: ItemSourceEditBinding) : + inner class EditTextViewHolder(val binding: ItemSourceEditBinding) : RecyclerView.ViewHolder(binding.root) { fun bind(editEntity: EditEntity) = binding.run { @@ -94,4 +113,20 @@ class RssSourceEditAdapter : RecyclerView.Adapter + editEntity.value = isChecked.toString() + } + } + + + } + + } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/widget/text/EditEntity.kt b/app/src/main/java/io/legado/app/ui/widget/text/EditEntity.kt index a58d66fc3..e715b69c1 100644 --- a/app/src/main/java/io/legado/app/ui/widget/text/EditEntity.kt +++ b/app/src/main/java/io/legado/app/ui/widget/text/EditEntity.kt @@ -5,13 +5,27 @@ import splitties.init.appCtx data class EditEntity( var key: String, var value: String?, - var hint: String + var hint: String, + val viewType: Int = 0 ) { constructor( key: String, value: String?, - hint: Int - ) : this(key, value, appCtx.getString(hint)) + hint: Int, + viewType: Int = 0 + ) : this( + key, + value, + appCtx.getString(hint), + viewType + ) + + @Suppress("unused") + object ViewType { + + const val checkBox = 1 + + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_book_source_edit.xml b/app/src/main/res/layout/activity_book_source_edit.xml index 008924257..a3cd596e5 100644 --- a/app/src/main/res/layout/activity_book_source_edit.xml +++ b/app/src/main/res/layout/activity_book_source_edit.xml @@ -24,7 +24,8 @@ android:layout_gravity="center_vertical" android:gravity="center_vertical" android:orientation="horizontal" - android:paddingHorizontal="8dp"> + android:paddingHorizontal="8dp" + tools:ignore="VisualLintBounds"> - + android:scrollbars="none"> - + android:layout_gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="8dp" + tools:ignore="VisualLintBounds"> - + - + - + - + - - - - - - - - - + + android:layout_height="wrap_content" + tools:ignore="TouchTargetSizeCheck" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_source_edit.xml b/app/src/main/res/layout/item_source_edit.xml index cd14a6fe4..f569b668b 100644 --- a/app/src/main/res/layout/item_source_edit.xml +++ b/app/src/main/res/layout/item_source_edit.xml @@ -1,5 +1,6 @@ + android:inputType="textMultiLine" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_source_edit_check_box.xml b/app/src/main/res/layout/item_source_edit_check_box.xml new file mode 100644 index 000000000..411d7e82d --- /dev/null +++ b/app/src/main/res/layout/item_source_edit_check_box.xml @@ -0,0 +1,20 @@ + + + + + + + + \ No newline at end of file