diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatBackground.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatBackground.kt index add362c..cfb7396 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatBackground.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatBackground.kt @@ -6,11 +6,13 @@ import com.remax.visualnovel.entity.model.base.BasePhoto * Created by HJW on 2025/8/18 */ data class ChatBackground( - val backgroundId: Int?, - val imgUrl: String, - var isDefault: Boolean, + var backgroundId: Int? = 0, + var imgUrl: String? = "", + var isDefault: Boolean = false, var select: Boolean = false, var isSelected: Boolean? = null, + var deletable: Boolean = false, + var isUploadLocalItem: Boolean = false ) : BasePhoto() { override fun paramId(): Long { return imgUrl.hashCode().toLong() diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatHistory.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatHistory.kt new file mode 100644 index 0000000..3329ecc --- /dev/null +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/response/ChatHistory.kt @@ -0,0 +1,13 @@ +package com.remax.visualnovel.entity.response + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class ChatHistory( + var id: Int? = 0, + var time: Long, + var describle: String +) : Parcelable { + +} \ No newline at end of file diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/ChatSettingView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/ChatSettingView.kt index 1fc2bab..68e67dd 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/ChatSettingView.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/ChatSettingView.kt @@ -9,6 +9,7 @@ import android.widget.LinearLayout import androidx.core.graphics.toColorInt import com.remax.visualnovel.R import com.remax.visualnovel.databinding.LayoutChatMenuViewBinding +import com.remax.visualnovel.entity.response.ChatBackground import com.remax.visualnovel.entity.response.ChatBubble import com.remax.visualnovel.entity.response.ChatMode import com.remax.visualnovel.entity.response.ChatSound @@ -32,6 +33,7 @@ class ChatSettingView @JvmOverloads constructor( initChatModeSelectorView() initSoundSelectorView() initBubbleSelectView() + initBackgroundSelectView() } @@ -179,5 +181,44 @@ class ChatSettingView @JvmOverloads constructor( mBinding.bubbleSelectView.setItems(items) } + fun initBackgroundSelectView() { + val items = listOf( + ChatBackground( + backgroundId = 1, + imgUrl = "https://cdhrss.chengdu.gov.cn/cdrsj/xhtml/images/2022_logo.png", + ), + ChatBackground( + backgroundId = 1, + imgUrl = "https://cdhrss.chengdu.gov.cn/cdrsj/xhtml/images/2022_logo.png", + ), + ChatBackground( + backgroundId = 1, + imgUrl = "https://cdhrss.chengdu.gov.cn/cdrsj/xhtml/images/2022_logo.png", + ), + ChatBackground( + backgroundId = 1, + imgUrl = "https://cdhrss.chengdu.gov.cn/cdrsj/xhtml/images/2022_logo.png", + ), + ChatBackground( + backgroundId = 1, + imgUrl = "https://cdhrss.chengdu.gov.cn/cdrsj/xhtml/images/2022_logo.png", + ), + ChatBackground( + backgroundId = 1, + imgUrl = "https://cdhrss.chengdu.gov.cn/cdrsj/xhtml/images/2022_logo.png", + ), + ChatBackground( + backgroundId = 1, + imgUrl = "https://cdhrss.chengdu.gov.cn/cdrsj/xhtml/images/2022_logo.png", + deletable = true + ), + ChatBackground( + isUploadLocalItem = true + ) + ) + + mBinding.backgroundSelectorView.setItems(items) + } + } diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandBackgroundSubView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandBackgroundSubView.kt new file mode 100644 index 0000000..8ecc093 --- /dev/null +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandBackgroundSubView.kt @@ -0,0 +1,72 @@ +package com.remax.visualnovel.ui.chat.ui.expandableSelector + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.drake.brv.annotaion.DividerOrientation +import com.drake.brv.utils.bindingAdapter +import com.drake.brv.utils.divider +import com.drake.brv.utils.grid +import com.drake.brv.utils.models +import com.drake.brv.utils.setup +import com.remax.visualnovel.R +import com.remax.visualnovel.databinding.LayoutItemSettingBackgroundBinding +import com.remax.visualnovel.databinding.LayoutSettingBgSubViewBinding +import com.remax.visualnovel.entity.response.ChatBackground +import com.remax.visualnovel.extension.glide.load + +class ExpandBackgroundSubView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr) { + private lateinit var items: List + private var mBinding: LayoutSettingBgSubViewBinding + + + init { + mBinding = LayoutSettingBgSubViewBinding.inflate(LayoutInflater.from(context), this, true) + with(mBinding) { + initRv(itemsRv) + } + } + + private fun initRv(itemsRv: RecyclerView) { + itemsRv.grid(3) + .divider { + setDivider(10, true) + orientation = DividerOrientation.VERTICAL + }.setup { + addType(R.layout.layout_item_setting_background) + + onClick(R.id.root) { + val chatBackground = getModel() + if (!chatBackground.select) { + itemsRv.bindingAdapter.models?.filterIsInstance()?.forEach { item -> + item.select = item == chatBackground + } + itemsRv.bindingAdapter.notifyDataSetChanged() + } + } + + onBind { + val item = getModel() + with(getBinding()) { + if (!item.imgUrl.isNullOrEmpty()) { + ivBackgroundSrc.load(item.imgUrl) + } + ivDel.visibility = if (item.deletable) VISIBLE else GONE + } + } + } + } + + fun setItems(newItems: List) { + items = newItems + mBinding.itemsRv.models = items + } + + +} \ No newline at end of file diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandBgSubView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandBgSubView.kt deleted file mode 100644 index 60cc574..0000000 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandBgSubView.kt +++ /dev/null @@ -1,42 +0,0 @@ -package com.remax.visualnovel.ui.chat.ui.expandableSelector - -import android.content.Context -import android.util.AttributeSet -import android.view.LayoutInflater -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.drake.brv.annotaion.DividerOrientation -import com.drake.brv.utils.divider -import com.drake.brv.utils.grid -import com.drake.brv.utils.setup -import com.remax.visualnovel.databinding.LayoutSettingBgSubViewBinding - -class ExpandBgSubView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0 -) : LinearLayout(context, attrs, defStyleAttr) { - - private var mBinding: LayoutSettingBgSubViewBinding - - - init { - mBinding = LayoutSettingBgSubViewBinding.inflate(LayoutInflater.from(context)) - with(mBinding) { - initRv(itemsRv) - } - } - - - private fun initRv(itemsRv: RecyclerView) { - itemsRv.grid(2) - .divider { - setDivider(16, true) - orientation = DividerOrientation.VERTICAL - }.setup { - - } - } - - -} \ No newline at end of file diff --git a/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml b/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml index 29ba542..0651d5b 100644 --- a/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml +++ b/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml @@ -253,6 +253,12 @@ android:orientation="vertical" android:layout_marginTop="10dp" > + + diff --git a/VisualNovel/app/src/main/res/layout/layout_item_setting_background.xml b/VisualNovel/app/src/main/res/layout/layout_item_setting_background.xml new file mode 100644 index 0000000..d841bcb --- /dev/null +++ b/VisualNovel/app/src/main/res/layout/layout_item_setting_background.xml @@ -0,0 +1,45 @@ + + + + + + + + + + \ No newline at end of file diff --git a/VisualNovel/app/src/main/res/layout/layout_item_setting_bg.xml b/VisualNovel/app/src/main/res/layout/layout_item_setting_bg.xml index cfdf1f7..4539dda 100644 --- a/VisualNovel/app/src/main/res/layout/layout_item_setting_bg.xml +++ b/VisualNovel/app/src/main/res/layout/layout_item_setting_bg.xml @@ -4,13 +4,14 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/group" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingBottom="16dp"> + android:layout_height="wrap_content" > - - - - - - \ No newline at end of file diff --git a/VisualNovel/app/src/main/res/layout/layout_item_setting_bubble.xml b/VisualNovel/app/src/main/res/layout/layout_item_setting_bubble.xml index d29620d..73f8433 100644 --- a/VisualNovel/app/src/main/res/layout/layout_item_setting_bubble.xml +++ b/VisualNovel/app/src/main/res/layout/layout_item_setting_bubble.xml @@ -4,8 +4,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/group" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingBottom="16dp"> + android:layout_height="wrap_content" > - \ No newline at end of file diff --git a/VisualNovel/app/src/main/res/mipmap-xxhdpi/img.png b/VisualNovel/app/src/main/res/mipmap-xxhdpi/img.png new file mode 100644 index 0000000..d501a79 Binary files /dev/null and b/VisualNovel/app/src/main/res/mipmap-xxhdpi/img.png differ diff --git a/VisualNovel/app/src/main/res/mipmap-xxhdpi/img_1.png b/VisualNovel/app/src/main/res/mipmap-xxhdpi/img_1.png new file mode 100644 index 0000000..d501a79 Binary files /dev/null and b/VisualNovel/app/src/main/res/mipmap-xxhdpi/img_1.png differ